function $(el){
	if(typeof el == 'string')
		return document.getElementById(el);
	if(typeof el == 'object')
		return el;
	return null;
}
var CookieManager = {
	getExpiresDate:function(days, hours, minutes) {
	    var ExpiresDate = new Date();
	    if (typeof days == "number" && typeof hours == "number" && 
	        typeof hours == "number") {
	        ExpiresDate.setDate(ExpiresDate.getDate() + parseInt(days));
	        ExpiresDate.setHours(ExpiresDate.getHours() + parseInt(hours));
	        ExpiresDate.setMinutes(ExpiresDate.getMinutes() + parseInt(minutes));
	        return ExpiresDate.toGMTString();
	    }
	},  
	_getValue:function(offset) {
	    var endstr = document.cookie.indexOf (";", offset);
	    if (endstr == -1) {
	        endstr = document.cookie.length;
	    }
	    return unescape(document.cookie.substring(offset, endstr));
	},
	get:function(name) {
	    var arg = name + "=";
	    var alen = arg.length;
	    var clen = document.cookie.length;
	    var i = 0;
	    while (i < clen) {
	        var j = i + alen;
	        if (document.cookie.substring(i, j) == arg) {
	            return this._getValue(j);
	        }
	        i = document.cookie.indexOf(" ", i) + 1;
	        if (i == 0) break; 
	    }
	    return "";
	},
	set:function(name, value, expires, path, domain, secure) {
	    document.cookie = name + "=" + escape (value) +
	        ((expires) ? "; expires=" + expires : "") +
	        ((path) ? "; path=" + path : "") +
	        ((domain) ? "; domain=" + domain : "") +
	        ((secure) ? "; secure" : "");
	},
	remove:function(name,path,domain) {
	    if (this.get(name)) {
	        document.cookie = name + "=" +
	            ((path) ? "; path=" + path : "") +
	            ((domain) ? "; domain=" + domain : "") +
	            "; expires=Thu, 01-Jan-70 00:00:01 GMT";
	    }
	},
	clear:function(){
		var cookies = document.cookie.split(';');
		for(var i=0; i < cookies.length; i++)
			this.remove(cookies[i].split('=')[0]);
	}
}

var Utility = {
	getElementsByClassName:function(parentElement,tagName,className){
		var elements = $(parentElement).getElementsByTagName(tagName);
		var result=[];
		for (var i=0; i < elements.length ; i++)
			if((" "+elements[i].className+" ").indexOf(" "+className+" ") != -1)
			result.push(elements[i]);
		return result;
	},
	replaceClass:function(el,oldClass,newClass){
		var classNames = $(el).className.split(" ");
		this.each(classNames,function(i,className){
			if(className == oldClass)
				classNames[i] = newClass;
		});
		$(el).className = classNames.join(" ");
	},
	each:function(obj,fn,args) {
		if (args) {
			if (obj.length == undefined)
				for (var i in obj)
					fn.apply(obj[i], args);
			else
				for (var i = 0, ol = obj.length; i < ol; i++ )
					if (fn.apply( obj[i], args ) === false ) break;
		} else {
			if (obj.length == undefined)
				for (var i in obj)
					fn.call( obj[i], i, obj[i] );
			else
				for (var i = 0, ol = obj.length, val = obj[0]; 
					i < ol && fn.call(val,i,val) !== false; val = obj[++i]){}
		}
		return obj;
	},
	bind:function(el,type,fn,range,params){
		var _params = params == null || params.constructor != Array  ? [params] : params;
		if (el.addEventListener)
			el.addEventListener(type,function(){fn.apply(range,_params)}, false);
		else
			el.attachEvent("on"+type, function(){fn.apply(range,_params)});
	}
}
var PlayList = {
	cookieName:'PlayListIds',
	ids:[],
	expires:30,
	read:function(){
		var cookieString = CookieManager.get(this.cookieName);
		return cookieString != '' ? cookieString.split('.') : [];
	},
	indexOf:function(id){
		for(var i =0 ; i < this.ids.length; i++)
			if(this.ids[i] == id.toString())
				return i;
		return -1;
	},
	//更新cookie信息
	update:function(){
		CookieManager.set(
			this.cookieName,
			this.ids.join('.'),
			CookieManager.getExpiresDate(0,0,this.expires),
			'/',
			'.panweizeng.com'
		);
	},
	add:function(id){
		if(typeof id != "number" || this.indexOf(id) != -1) return;
		this.ids.push(id.toString());
		this.update();
	},
	remove:function(id){
		var index = -1;
		if(typeof id != "number" || (index = this.indexOf(id)) == -1) return;
		this.ids.splice(index,1);
		this.update();
	},
	clear:function(){
		CookieManager.clear();
		var pItem = null,pItemSel = null;
		for(var i = 0; i < this.ids.length; i++){
			if( (pItemSel = $('playlist-item-sel-'+this.ids[i])) != null
				&& (pItem = $('playlist-item-'+this.ids[i])) != null )
			{
				pItemSel.className = "unselected";
				pItemSel.title = "添加到点播单";
				pItem.getElementsByTagName("img")[0].style.border = "5px solid white";
			}
		}
	},
	renderSelected:function(){
		var pItem = null,pItemSel = null;
		for(var i = 0; i < this.ids.length; i++){
			if( (pItemSel = $('playlist-item-sel-'+this.ids[i])) != null
				&& (pItem = $('playlist-item-'+this.ids[i])) != null )
			{
				pItemSel.className = "selected";
				pItemSel.title = "从点播单移除";
				pItem.getElementsByTagName("img")[0].style.border = "5px solid yellow";
			}
		}
	},
	toggle:function(el){
		if(el.className == 'unselected'){
			el.className = 'selected';
			el.title = "从点播单移除";
			el.parentNode.getElementsByTagName("img")[0].style.border = "5px solid yellow";
			this.add(parseInt(el.getAttribute('sid')));
		} else {
			el.className = 'unselected';
			el.title = "添加到点播单";
			el.parentNode.getElementsByTagName("img")[0].style.border = "5px solid white";
			this.remove(parseInt(el.getAttribute('sid')));
		}
	},
	attachEvent:function(){
		var _ = this;
		var els = Utility.getElementsByClassName("playlist","a","unselected");
		els = els.concat(Utility.getElementsByClassName("playlist","a","selected"));
		Utility.each(els,function(i,el){
			Utility.bind(el,'click',_.toggle,_,el)
		})
	},
	init:function(){
		this.ids = this.read();
		this.renderSelected();
		this.attachEvent();
	}
}


//PlayList.clear();
PlayList.init();
