/* 
CSS to be customized 
ul #youtubeplaylist
class icon playlist
*/

var username;
var inlineVideo=1;
var timer;
var numbers=30;
function readGet() {
	var _GET = new Array();
	var uriStr  = window.location.href.replace(/&amp;/g, '&');
	var paraArr, paraSplit;
	if(uriStr.indexOf('?') > -1){
		var uriArr  = uriStr.split('?');
		var paraStr = uriArr[1];
	}else {
		return _GET;
	}if(paraStr.indexOf('&') > -1){
		paraArr = paraStr.split('&');}
	else{
		paraArr = new Array(paraStr);
	}
	
	for(var i = 0; i < paraArr.length; i++) {
		paraArr[i] = paraArr[i].indexOf('=') > -1 ? paraArr[i] : paraArr[i] + '=';
		paraSplit  = paraArr[i].split('=');
		var data = decodeURI(paraSplit[1].replace(/\+/g, ' '));
		var match = data.lastIndexOf('#');
		var replacement = data.substring(match+1);
		data = data.replace("#"+replacement,"");
		//alert(data)
		_GET[paraSplit[0]] = data;
	}
	return _GET;
}

function getVideoId(url) {

    var match_start = url.indexOf('=');
    var match_end = url.indexOf('&');
	var match_length = match_end - match_start;
    if (match_length) {
		id = url.substr(match_start+1, match_length-1);
      return id;
    }
return -1;
}

function mousOverImage(name,id,nr) {
	if(name)
		imname = name;
	//imname.style.borderColor = 	'orange';
	//alert(id);
	imname.src = "http://img.youtube.com/vi/"+id+"/"+nr+".jpg";
	nr++;
	if(nr > 3)
		nr = 1;
	timer =  setTimeout("mousOverImage(false,'"+id+"',"+nr+");",10000);
}


function mouseOutImage(name) {
	if(name)
		imname = name;
	if(timer)
		clearTimeout(timer)
}

function videos(maxResults,username) {
	//TODO : How about multiple video for different search / username / tag ?
	this.username = username;
	var _GET = readGet();
	if(_GET['playlist']) {//This uri is for viewing videos of a playlist
		$("<script type='text/javascript' src='http://gdata.youtube.com/feeds/playlists/"+_GET["playlist"]+"?alt=json-in-script&callback=playlistVideos'></script>");
	} else if (_GET['favorites']){
		$("<script type='text/javascript' src='http://gdata.youtube.com/feeds/users/"+username+"/favorites?alt=json-in-script&callback=favoriteVideos'></script>");
	} else {
		$("<script type='text/javascript' src='http://gdata.youtube.com/feeds/users/"+username+"/playlists?max-results="
		  +maxResults+"&alt=json-in-script&callback=playlists'></script>");
	}
}

function getFavoritesLink() {
    var ul = "<ul class='youtubefavorites'>" + "<li class='icon favorites'>" + "<a href='?favorites="+numbers+"'>Favorites</a></li></ul>";
	return ul;
}

function playlists(jsonroot) {
	//TODO : icon for playlist
	$(getFavoritesLink());
	$("<ul class='youtubeplaylist'><hr/>");
	if(jsonroot.feed.entry){
		for (var i = 0; i < jsonroot.feed.entry.length; i++) {
			var entry = jsonroot.feed.entry[i];
			title = entry.title.$t;
			for (var k = 0; k < entry.link.length; k++) {
				if (entry.link[k].rel == 'alternate') {
					url = entry.link[k].href;
					break;
				}
			}
			$("<li class='icon playlist'>");
			var match=url.lastIndexOf("p=");
			if(match != -1) {
				var playlistid = url.substring(match+2,url.length);
				$("<a href='?playlist="+playlistid+"'>"+title+"</a><br />");
			} 
			$("</li>")
		}
	} else {
		$("No Results Found");		
	}
	$("</ul>");

}

function favoriteVideos(jsonroot) {
    favVideos(jsonroot);
}

function playlistVideos(jsonroot) {
	$("<table><tbody><tr><td>");

	if(jsonroot.feed.entry){
		for (var i = 0; i < jsonroot.feed.entry.length; i++) { //for all entries
			var entry = jsonroot.feed.entry[i];
			title = entry.title.$t;
			title = title.replace(/\"/g,"");//TODO: good escaping needed
			title = title.replace(/\'/g,"");//TODO: good escaping needed

			for (var k = 0; k < entry.link.length; k++) {// for getting url of video (TODO: why to loop ?)
				if (entry.link[k].rel == 'alternate') {
					url = entry.link[k].href;
					break;
				}
			}
			var thumb = entry['media$group']['media$thumbnail'][1].url;
			var videoId = getVideoId(url);
				
			$("<div class='videoframe'>");
			var overlayLink = "javascript:popUpVideo(\'"+ videoId + "\',\'" + url + "\',\'" + title + "\');";
			var replace_url = url.replace("&", "&amp;");
			//alert(replace_url);
			var content = entry.content.$t.replace(replace_url,overlayLink);
			//alert(content);
			content  = content.replace("From:</span>\n<a href=\"http://www.youtube.com/profile?user="+this.username+"\">"+this.username+"</a>","");
			content  = content.replace("More in","");
			content  = content.replace(entry.media$group.media$category[0].label.replace("&","&amp;"), "");
			content  = content.replace("href=\""+replace_url + "\"","href=\"" + overlayLink + "\"");
			$(content);
			$("</div>");
		}
	} else {
		$('No Results Found');
	}
	$("</td></tr></tbody></table>");
}

function favVideos(jsonroot) {
	$("<table><tbody><tr><td>");

	if(jsonroot.feed.entry){
		for (var i = 0; i < jsonroot.feed.entry.length; i++) { //for all entries
			var entry = jsonroot.feed.entry[i];
			title = entry.title.$t;
			title = title.replace(/\"/g,"");//TODO: good escaping needed
			title = title.replace(/\'/g,"");//TODO: good escaping needed

			for (var k = 0; k < entry.link.length; k++) {// for getting url of video (TODO: why to loop ?)
				if (entry.link[k].rel == 'alternate') {
					url = entry.link[k].href;
					break;
				}
			}
			var thumb = entry['media$group']['media$thumbnail'][1].url;
			var videoId = getVideoId(url);

			$("<div class='videoframe'>");
			$("<div class='videothumb'>");
			$("<a href='javascript:popUpVideo(\""+ videoId + "\",\"" + url + "\",\"" + title + "\");'>"
			  +"<img src='"+ thumb +"' class='videothumb' alt='" + entry.title.$t +"'>" +"</a>");
			$("</div>");
			$("<p class='videotitle'><a href='javascript:popUpVideo(\""+ videoId + "\",\"" + url + "\",\"" + title + "\");'>"+ title +"</a></p>");			 
			$("</div>");				
		}
	} else {
		$('No Results Found');
	}
	$("</td></tr></tbody></table>");
}


function $(a) {
    document.write(a);
}
