String.prototype.aSub = function (srcArray, tgtArray) {
	var result = this.toString();
	for (var idx=0; idx < srcArray.length; idx++) {
		var src = new RegExp(srcArray[idx], "g");
		if (typeof tgtArray[idx] != "undefined") { var tgt = tgtArray[idx]; }
		else { var tgt = ""; }
		if (result.indexOf(srcArray[idx]) > -1) { result = result.replace(src, tgt); }
	}
	return result;
}

CHELLO = window.CHELLO || {};
CHELLO.widgets = CHELLO.widgets || {};

CHELLO.widgets.youTube = Class.create();
CHELLO.widgets.youTube.feedHandler=function(){};
CHELLO.widgets.youTube.closeHandler=function(){$A(document.getElementsByClassName("youtube_player")).each(function(player){player.style.display='none';});}

CHELLO.widgets.youTube.prototype = {
	url: "http://gdata.youtube.com/feeds/videos",
	template:new Template('<div class="youtube_block">' + 
	'	<div class="youtube_thumb">' + 
	'		<a class="youtube_link" href="##{youtube_id}">' +
	'			<img src="#{youtube_thumb_url}" alt="#{youtube_title}" />' +
	'			<img class="youtube_play_off" src="/media/pc/upclive/global/core/btn_yt_play_1.png" alt="#{youtube_title}" />' +
	'			<img class="youtube_play_on" src="/media/pc/upclive/global/core/btn_yt_play_2.png" alt="#{youtube_title}" style="display:none" />' +
	'		</a>' +
	'	</div>' +
	'	<div class="youtube_info">' +
	'		<a class="youtube_link" href="##{youtube_id}"><strong>#{youtube_title}</strong></a><br />' +
	'		#{youtube_duration}<br />' +
	'		From: <a href="#{youtube_user_url}">#{youtube_user_name}</a><br />' +
	'		Views: #{youtube_views}' +		
	'	</div>' +
	'</div>' +
	'</div>' +
	'<div class="youtube_player" id="player_movie_#{youtube_id}"><h3>#{youtube_title}</h3><object width="425" height="350"><param name="movie" value="#{youtube_url}"></param><param name="wmode" value="transparent"></param><embed src="#{youtube_url}" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object></div>'),
	url_params: { "max-results":10, "start-index":1, "alt":"json-in-script", "callback":"CHELLO.widgets.youTube.feedHandler", "vq":"" },
	videos: [],
	target: null,
	initialize: function (tag, vid_count, target) {
		this.url_params.vq = tag;
		this.vid_count=vid_count;
		if (typeof(vid_count) != "undefined" && vid_count > 0) { this.url_params["max-results"] = vid_count*2; }
		this.target = $(target);
		CHELLO.widgets.youTube.feedHandler=this.feedHandler.bind(this);
		CHELLO.widgets.youTube.feedHandler.bind(this);
		var script = document.createElement('script');
		script.setAttribute('type', 'text/javascript');
		script.setAttribute('src', this.buildUrl());
		document.getElementsByTagName('head')[0].appendChild(script);
	},
	buildUrl: function () {
		var pairs=[];
		for (var key in this.url_params) { pairs.push(key + "=" + encodeURI(decodeURI(this.url_params[key]))); }
		var queryString = "?" + pairs.join("&");
		return this.url + queryString;
	},
	feedHandler: function (data) {
		if((!data.feed.entry)||(!data.feed.entry.length)){ return(this.target.innerHTML='No YouTube videos available.'); }
		$A(data.feed.entry).each( function (video) {this.videos.push(video); }.bind(this) );
		this.display();
	},
	display: function () {
		var html = "";
		var display_count=0;
		$A(this.videos).each(
			function(video, idx){
				if(display_count>=this.vid_count){return;}
				var thumbUrl=video.media$group.media$thumbnail[0].url;
				var contentTypes=video.media$group.media$content;
				var contentUrl="";
				if(typeof(contentTypes)=='undefined'){return;}
				for (var i = 0; i<contentTypes.length; i++) {
					if (contentTypes[i].type == 'application/x-shockwave-flash') {
						var contentUrl=contentTypes[i].url;
						break;
					}
				}
				if(!contentUrl.length){return;}
				var duration = video.media$group.yt$duration.seconds;
				duration = Math.floor(duration/60) + ":" + ((remain=(duration%60))<10?"0"+remain:remain) ;
				html+=this.template.evaluate({
					"youtube_url":contentUrl + "&autoplay=1", 
					"youtube_id": idx,
					"youtube_thumb_url": thumbUrl,
					"youtube_title": video.title.$t.truncate(40),
					"youtube_duration": duration,
					"youtube_user_name": video.author[0].name.$t,
					"youtube_user_url": "http://www.youtube.com/profile?user=" + video.author[0].name.$t,
					"youtube_views": video.yt$statistics.viewCount
				});
				display_count++;
			}.bind(this)
		)
		if(!html.length){ return(this.target.innerHTML='No YouTube videos available.'); }
		this.target.innerHTML = html;
		$A(document.getElementsByClassName("youtube_link")).each(function (lnk) { Event.observe(lnk, "click", this.clickHandler.bindAsEventListener(this, lnk)); }.bind(this))
	},
	clickHandler: function (e, lnk) {
		var vidIdx = lnk.href.substring(lnk.href.indexOf("#")+1,lnk.href.length);
		var popup = new CHELLO.widgets.ModalWindow.Alert($("player_movie_" + vidIdx).innerHTML, {
			"width": 425,
			"height": 393,
			"destroyOnClose": true,
			"okButton": {
				"show": true,
				"label": '<img src="/media/pc/global/core/close_01.gif" alt="Sluiten" />'
			}
		}) 
		popup.show();
	}
}
