﻿var Playlist = {

	container : gID("playlistContainer"),
	
	appendItem : function(programId, title, link, view, comment, type)
	{
		if(this.isInPlaylist(programId.toString())) return;
		this.appendItemInner(programId, title, link, view, comment, type);
		var listCookie = this.getPlaylist();
		listCookie.values.set(programId.toString(), escape(title) + " " + escape(link) + " " + view.toString() + " " +  comment.toString() + " " + type.toString());
		listCookie.setDomain(".inetradio.cn");
		//listCookie.setExpires(60 * 60 * 24 * 30);
		listCookie.save();
	},
	
	appendItemInner : function(programId, title, link, view, comment, type, fromCookie)
	{
		var srcIco = webUrl + ((fromCookie && this.isItemPlaying(programId.toString()))? "/images/playing.gif" : "/images/" + type + ".gif");
		var sty = (fromCookie && this.isItemPlaying(programId.toString()))? "style='height:22px;line-height:22px;vertial-align:middle'" : "style='height:22px;line-height:22px;vertical-align:middle";
		this.container.style.display = "";
		var playEntry = "<div " + sty + " articleId='" + programId + "' link='" + link +"'>" +
				"<img src='" + srcIco + "' align='absmiddle' style='float:left'>" +
				"<a href='" + link + "#PlaylistMode' style='float:left'>" + title + "</a>" + 
				
				"<a href='javascript:void(0)' onclick='javascript:Playlist.removeItem(" + programId.toString() + ", this)' style='float:right'><img src='/images/recycle.gif' align='absmiddle' border='0'/></a>" +				
			"</div>";
		this.container.innerHTML += playEntry;
	},

	removeItem : function(programId, link)
	{
		if(this.isItemPlaying(programId))
		{
			alert("It's playing.");
			return;
		}
		var item = link.parentNode; 
		var pointerId = "pointerToPlaylist_" + programId.toString() ;

		this.container.removeChild(item);
		this.container.style.display = ((this.container.childNodes.length < 1 || this.container.firstChild.nodeName == "#text")? "none" : "");

		var listCookie = this.getPlaylist();
		listCookie.values.remove(programId.toString());
		listCookie.setDomain(".inetradio.cn");
		listCookie.setExpires(60 * 60 * 24 * 30);
		listCookie.save();

		if(gID(pointerId) != null)
			gID(pointerId).className = "playlistPointer";		
	},

	getPlaylist : function()
	{
		return new HttpCookie("Playlist");
	},

	isInPlaylist : function(programId)
	{
		return this.getPlaylist().values.get(programId) != null;
	},

	getNextItemKey : function(programId)
	{
		var key = null;
		if(this.isInPlaylist(programId.toString()))
		{
			var list = this.getPlaylist();
			var keys = list.values.allKeys();

			for(var i = 0; i < keys.length; i++)
			{
				if(keys[i] == programId)
				{
					if(++i % keys.length == 0)
						key = keys[0];
					else
						key =  keys[i];
					break;
				}
			}
		}
		return key
	},

	getNext : function(programId)
	{
		var key = this.getNextItemKey(programId.toString());
		if(key != null)
		{			
			var values = this.getPlaylist().values.get(key.toString());
			location.href = unescape(values.split(" ")[1]) + "#PlaylistMode";
		}		
	},

	//whether current mode is "PlaylistMode".
	isInPlaylistMode : function()
	{
		return (location.hash == "#PlaylistMode" && this.isInPlaylist(pageArticleId.toString()));
	},

	//whether the programId of program is in the playlist and playing now.
	isItemPlaying : function(programId)
	{
		return this.isInPlaylistMode() && (programId == pageArticleId);
	},

	getPlaylistFromCookie : function()
	{
		var plistCookie = new HttpCookie("Playlist");
		if(plistCookie.isExisted())
		{
			var ids = plistCookie.values.allKeys();
			for(var i = 0; i < ids.length; i++)
			{
				var programId = ids[i];
				var values = plistCookie.values.get(ids[i]).split(" ");
				var title = unescape(values[0]);
				var link = unescape(values[1]);
				var view = values[2];
				var comment = values[3];
				var type = values[4];

				this.appendItemInner(programId, title, link, view, comment, type, true);
			}
		}
	}
}