﻿document.write("<link  href=\"" + g_static + "/images/tagEditPanel/css.css\" type=\"text/css\" rel=\"stylesheet\"/>");
var closesetTimeout = null;

Array.prototype.remove = function(index)
{	
	if (isNaN(index) || index >= this.length)
		return false;
	this.splice(index, 1);
}

Array.prototype.foreach = function(handler)
{	
	for(var i=0; i<this.length; i++)
	{
		var obj = this[i];
		if (handler){ if ( handler(obj, i, this) ) { break; } }
	}
}

Array.prototype.clear = function()
{	
	var len = this.length;
	for(var i=0; i<len; i++) { this.remove(0); }
}

String.prototype.format = function()
{
	var number;
	var template = this;
	for (var i = 0; i < arguments.length; i++) 
	{
		number = "\{(" + i + ")\}";
		var reg = new RegExp(number, "ig");
		template = template.replace(reg, arguments[i]);
	}
	return template;
}

var g_value = "";
function TagInfo(kwid, key)
{
	this.m_kwID			= kwid;
	this.m_keyword		= key;	
}

function TagCollect()
{
	this.m_array = new Array();
}

TagCollect.prototype.add = function(tag)
{
	if (tag == null) return;
	
	var vIndex = this.exist(tag.m_kwID);
	if (vIndex != -1) return;
	this.m_array.push(tag);
}

TagCollect.prototype.remove = function(kwid)
{
	var vIndex = this.exist(kwid);
	if (vIndex == -1) return;
	this.m_array.remove(vIndex);
}

TagCollect.prototype.exist = function(kwid)
{
	var vRet = -1;
	this.m_array.foreach(	function(tag, index)
							{
								if (tag.m_kwID == kwid)
								{
									vRet = index;
									return true;
								}
							});
	return vRet;
}

TagCollect.prototype.findKey = function(key)
{
	var vRet = -1;
	this.m_array.foreach(	function(tag, index)
							{
								if (tag.m_keyword == key)
								{
									vRet = index;
									return true;
								}
							});
	return vRet;
}

TagCollect.prototype.clear = function()
{
	this.m_array.clear();
}

TagCollect.prototype.foreach = function(handler)
{
	this.m_array.foreach(handler);
}

TagCollect.prototype.getCount = function()
{
	return this.m_array.length;
}


function CTag()
{
	this.m_pXOffset		= 0;
	this.m_pYOffset		= 0;
	this.m_rece			= "{0}intime/ajaxTag08.aspx".format("http://fav.9sky.com/");
	this.m_arrUserTags	= new TagCollect();
	this.m_arrHotTags	= new TagCollect();
	this.m_arrAddedTags	= new TagCollect();
	this.m_userTagCtl	= null;
	this.m_hotTagCtl	= null;
	this.m_addedTagCtl	= null;
	this.m_arrHandler	= new Array();
}
CTag.prototype.On_ShowAddedTags= null

CTag.prototype.clearData = function()
{
	this.m_arrUserTags.clear();
	this.m_arrHotTags.clear();
	this.m_arrAddedTags.clear();
}

//创建标签
CTag.prototype.newTag = function(cID, cType, utype, tagName)
{
	var vArr	= tagName.split(",");
	var vNewArr = new Array();
	var vArrFiter = new Array();
	var self	= this;
	vArr.foreach(	function(s, i)
					{
						if (s.length > 12)
						{
							vArrFiter.push(s);
						}
						else
						{
							if (self.m_arrAddedTags.findKey(s) == -1) { vNewArr.push(s); }
						}
					});
	tagName = vNewArr.join(",");
	if (vArrFiter.length > 0) { alert("过长标签: " + vArrFiter.join(",")); }
	
									
	if (vNewArr.length == 0) { alert("新增标签已经存在!"); return; }										
	
	if (e$("ctlCommentControl").style.display == "block")
	{
		var v = "";
		var ctl  = e$("ctlCommentContent");
		var v = ctl.value.trim();
		if (v != "")
		{
			setTimeout(function(){
							var img = new Image(); 
							img.src = "http://fav.9sky.com/intime/favcomments.aspx?otype={0}&objid={1}&objname={2}&content={3}&ts={4}".format(cType, cID, appTag.m_name, v, (new Date()).getTime());  
							}, 1000);
		}
	}
	
	var vUrl = this.m_rece + "?cID={0}&cType={1}&utype={2}&tagName={3}&cmd={4}&ts={5}".format(cID, cType, utype, escape(tagName), "new", (new Date()).getTime());
	this.run(vUrl);
}

//新增内容
CTag.prototype.newContent = function(cIDs, cType, tagName)
{
	var vUrl = this.m_rece + "?cIDs={0}&cType={1}&tagName={2}&cmd={3}&ts={4}".format(cIDs, cType, escape(tagName), "newContent", (new Date()).getTime());
	this.run(vUrl);
}

//移除标签
CTag.prototype.remove = function(cID, cType, utype, kwID)
{
	var vUrl = this.m_rece + "?cID={0}&cType={1}&utype={2}&kwID={3}&cmd={4}&ts={5}".format(cID, cType, utype, kwID, "remove", (new Date()).getTime());
	this.run(vUrl);
}

//显示用户标签
CTag.prototype.showUserTags = function(hFn)
{
	this.showTags(this.m_userTagCtl, this.m_arrUserTags, hFn);
}

//显示常用标签
CTag.prototype.showHotTags = function(hFn)
{
	this.showTags(this.m_hotTagCtl, this.m_arrHotTags, hFn);
}

//显示相关标签
CTag.prototype.showAddedTags = function(hFn)
{
	if (this.m_arrAddedTags.getCount() == 0) 
	{
		//e$("ctlCommentControl").style.display = "block";
		e$("ctlAddedTagsParent").style.display = "none";
		e$("ctlTitle").innerHTML = "您将收藏" + appTag.m_typeName;
	}
	else
	{
		e$("ctlAddedTagsParent").style.display = "block";
		e$("ctlTitle").innerHTML = "您已收藏过" + appTag.m_typeName;
	}
	
	this.showTags(this.m_addedTagCtl, this.m_arrAddedTags, hFn);
	if (this.On_ShowAddedTags) { this.On_ShowAddedTags(); }
}

//显示标签
CTag.prototype.showTags = function(ctl, arr, hFn)
{
	var sHTML = "";
	arr.foreach(function(obj, index) { if (hFn) { sHTML += hFn(obj, index); } } );
	if (ctl) { ctl.innerHTML = sHTML; }
}

//加载用户标签
CTag.prototype.loadUserTags = function()
{
	var d = new Date();
	var vUrl = this.m_rece + "?cmd={0}&ts={1}".format("userTag", d.getFullYear() + "-" + d.getMonth() + "-" + d.getDate());
	this.run(vUrl, 1);
}

//加载最热标签
CTag.prototype.loadHotTags = function()
{
	var d = new Date();
	var vUrl = this.m_rece + "?cmd={0}&ts={1}".format("hotTag", d.getFullYear() + "-" + d.getMonth() + "-" + d.getDate());
	this.run(vUrl, 2);
}

//相关标签
CTag.prototype.loadAddedTags = function(cID, cType)
{
	var d = new Date();
	var vUrl = this.m_rece + "?cID={0}&cType={1}&cmd={2}&ts={3}".format(cID, cType, "addedTag", d.getTime() );
	this.run(vUrl, 3);
}

//服务器提交
CTag.prototype.run = function(url, t)
{
	//url += "&ts={0}".format((new Date()).getTime());
	g_value = "";
	var objID = "JavascriptTag{0}".format(t);
	var obj	= document.getElementById(objID);
	if (obj == null)
	{
		obj = document.createElement("script");
		obj.id = objID;
		document.appendChild(obj);
	}
	obj.src = url;
}

CTag.prototype.setHandler = function(name, hFn)
{
	this.m_arrHandler[name] = hFn;
}

CTag.prototype.callBack = function(name)
{
	var vFn = this.m_arrHandler[name];
	if (vFn) { vFn(); }
}
var itag = new CTag();

//CTag//////////////////////////////////////////////////////////////////



//收藏
function fav(id, t, v)
{		
	var hasLogin = getLoginState();
	if (hasLogin) { appTag.add(id, t, v); } else { login(); }
	try
	{
		aim9(135058);
		
		ayTrace(2382);
		ayTrace(2471);
		
		ayTrace(2215);
	}catch(e){}
}



function playChoosedTrack()
{
	var trks = "";
	var arr = getCheckBoxs(1);
	for(i=0; i<arr.length; i++)
	{
		var box = arr[i];
		trks += box.value;
		if (i < arr.length -1) trks += ",";
	}
	if (trks == "") { alert("请选择歌曲!"); return; }
	

	if(trks.split(",").length > 10){
		var _from = document.createElement("INPUT");
		_from.setAttribute("type","hidden");
		_from.setAttribute("name","src");
		_from.setAttribute("value","t_"+trks);
		var obj = document.createElement("FORM");
		document.body.appendChild(obj);
		obj.appendChild(_from);
		obj.action = "http://playlist2.9sky.com/_playlist/SetCombined.aspx?userid="+getUserID()+"&act=1&index=0&return=http://play.9sky.com/";
		obj.method = "post";
		obj.target = "Player";
		obj.submit();
	}
	else {
		var url = "http://play.9sky.com/{0}_{1}/".format("t", trks);
		window.open(url, "Player");
	}
}

function choose(f)
{
	var arr = getCheckBoxs(-1);
	var v = false;
	for(i=0; i<arr.length; i++)
	{
		var box = arr[i];
		
		if (f == 1) v = true;
		if (f == 0) v = !box.checked;
		if (f == -1) v = false;
		box.checked = v;
	}
}

function getCheckBoxs(f)
{
	var arrRet = new Array();
	var arrBox = document.getElementsByTagName("INPUT");
	for(i=0; i<arrBox.length; i++)
	{
		var ctl = arrBox[i];
		if (ctl.name == "showbox")
		{
			var isPush = false;
			switch(f)
			{
				case 0:
					if (!ctl.checked) isPush = true;
					break;
					
				case 1:
					if (ctl.checked) isPush = true;
					break;
				
				case -1:
					isPush = true;
					break;
			}
			if (isPush) arrRet.push(ctl);
		}
	}
	return arrRet;
}

function showFMenu(id, v)
{
	var val = (v == 1 ? "block" : "none");
	var ctl = document.getElementById("ctlHideM" + id);
	if (ctl) { ctl.style.display = val }
}

var STATIC_SOIN = "http://static.9sky.com/s3/";

var __tag_panel_html__ = "\
     <div class=\"bgl\">\
		  <div class=\"bgl_l\">\
			   <div class=\"l_1\" id=\"ctlEditTag\">\
				   <p class=\"p1\"><span id=\"ctlTitle\">您将收藏歌曲</span>：<strong><span id=\"ctlObjectName\"></span></strong></p>\
					<p class=\"p6\" id=\"ctlAddedTagsParent\" style=\"display:none;\">标签是：<span id=\"ctlAddedTags\"></span></p>\
				   <p class=\"p2\">新建标签：<input name=\"\" type=\"text\" id=\"ctlTagName\" /><span>(多个标签名用逗号隔开)</span></p>\
				   <p class=\"p3\">我最常用的：<span id=\"ctlUserTags\"></span><br />\
									热门标签：<span id=\"ctlHotTags\"></span>\
					</p>\
					<span id=\"ctlCommentControl\" style=\"display:block;\">\
					   <p class=\"p4\">评论：<textarea name=\"commentContent\" id=\"ctlCommentContent\"></textarea></p>  \
					</span>\
					   <p class=\"p5\"><input type=\"button\" value=\"确 定\" name=\"Input\" onclick=\"appTag.save(); return false;\"/>\
					   <a href=\"#@\" onclick=\"CloseTagPanel()\">取消</a>\
					   </p>\
			   </div>\
			   \
			   <div class=\"l_2\" id=\"ctlSuccess\">\
			        <h3>收藏成功！</h3>\
			        \
					<b>\
					<div>\
					>> 已有<span id=\"ctlTagCount\">0</span>人收藏<br /></div>\
					\
					<div>\
					>> <a href=\"#@\" onclick=\"myFav()\">进入我的收藏架</a><br /> </div>\
					\
					<div>\
					<span STYLE=\"width:auto!important;float:left;\">&gt;&gt;&nbsp;</span> <span id=\"ctlCommentCount\" STYLE=\"width:auto!important;float:left;\">共有0条评论</span><a STYLE=\"float:left;\" target=\"_blank\" href=\"#@\" id=\"ctlCommentLink\"></a></div>\
					\
					</b>\
					\
					<span><input type=\"button\" value=\"关 闭\" onclick=\"CloseTagPanel()\" />(<span id=\"ctlSec\">5</span>秒后自动关闭...)</span>\
					\
			   </div>\
		  </div>\
		  <div class=\"bgl_r\"><a href=\"#@\" onclick=\"CloseTagPanel()\" title=\"关闭\"></a></div>\
	 </div>\
	 <div style=\"clear:both\"></div>\
	 <div class=\"bg_bg\"></div>";

function fav_createElement(tagName, objID, hFn){
	var obj	= document.getElementById(objID);
	if (obj == null)
	{
		obj = document.createElement(tagName);
		obj.id = objID;
	}
	if (hFn) { hFn(obj); }
	return obj;
}

fav_createElement("div", "ctlTagParent", function(ctl){
	ctl.className = "tag_bg";
	ctl.style.display = "none";
	ctl.innerHTML = __tag_panel_html__;
	document.body.appendChild(ctl);
});

function CloseTagPanel()
{
	e$("ctlTagParent").style.display = "none";
	clearTimeout(closesetTimeout);
}

function closeSuccessWindow(i)
{
	if (i == 0)
		e$("ctlTagParent").style.display = "none";
	else
	{
		i--;
		e$("ctlSec").innerHTML = i;
		closesetTimeout = setTimeout(function(){ closeSuccessWindow(i); }, 1000);
	}
}

function AppTag()
{
		this.m_cID			= 0;
		this.m_cType		= 0;
		this.m_uType		= 0;
		this.m_typeName		= "歌曲";
		this.m_name   ="";
		this.m_customUid    = 0;
        this.m_customUname  = "";	
									
}

AppTag.prototype.castName = function(name)
{
	if (name == "nonetag") { return "未分类"; } else { return name; }
}

AppTag.prototype.add = function(cID, cType, objName)
{
	e$("ctlcommentContent").value = "";
	var self  = this;
	itag.On_ShowAddedTags = function()
							{
								/*
								var ctl = e$("ctlAddedTitle");
								var ctl2 = e$("ctlFirstTitle");
								if (itag.m_arrAddedTags.getCount() == 0) 
								{ 
									ctl2.innerHTML = "你已收藏了" + self.m_typeName;
									ctl.style.display = "none";  
								}
								else 
								{ 								
									ctl2.innerHTML = "你已收藏过"+self.m_typeName;
									ctl.style.display = "block"; 
								}*/
							}
	
	itag.setHandler("addedTag", function()
								{
									itag.showAddedTags(	function(obj, index)
														{
															return "<span>{4}</span><a href=\"#@\" onclick='itag.remove({0},{1},{2},{3})'>[X]</a>".format(self.m_cID, self.m_cType, self.m_uType, obj.m_kwID, self.castName(obj.m_keyword));
														});
								});
	
	itag.setHandler("userTag", function()
								{
									itag.showUserTags(	function(obj, index)
														{
															return "<a href=\"#@\" onclick=\"javascript:appTag.choose('{0}')\">{0}</a>".format(self.castName(obj.m_keyword), obj.m_kwID);
														});
								});
								
	itag.setHandler("hotTag", function()
								{
									itag.showHotTags(	function(obj, index)
														{
															return "<a href=\"#@\" onclick=\"javascript:appTag.choose('{0}')\">{0}</a>".format(self.castName(obj.m_keyword), obj.m_kwID);
														});
								});
								
	itag.setHandler("new", function()
								{
									//self.showUI("p", "none");
									e$("ctlEditTag").style.display = "none";
									e$("ctlSuccess").style.display = "block";
									closeSuccessWindow(5);
									try
									{										
										var ctl = e$("ctlCommentLink");
										e$("ctlTagCount").innerHTML = __favCount_;
										if (__commentCount_ > 0)
										{
											e$("ctlCommentCount").innerHTML = "共有{0}条评论，".format(__commentCount_);
											ctl.style.display = "block";
										}
										else
										{
											ctl.style.display = "none";
											//e$("ctlCommentCount").innerHTML = "暂无评论，<a href=\"http://www.9sky.com/ajax/d_comment/Comment.aspx?otype=0&objid={0}\" target=\"_blank\">我来抢沙发!</a>".format(cID);
										}
									}catch(e){}
									
									itag.showAddedTags(	function(obj, index)
														{
															return "<span>{4}</span><a href=\"#@\" onclick='javascript:itag.remove({0},{1},{2},{3})'>[X]</a>".format(self.m_cID, self.m_cType, self.m_uType, obj.m_kwID, self.castName(obj.m_keyword));
														});
								});
								
	itag.setHandler("remove", function()
								{
									itag.showAddedTags(	function(obj, index)
														{
															return "<span>{4}</span><a href=\"#@\" onclick='javascript:itag.remove({0},{1},{2},{3})'>[X]</a>".format(self.m_cID, self.m_cType, self.m_uType, obj.m_kwID, self.castName(obj.m_keyword));
														});
								});
								
	itag.setHandler("newContent", function()
								{
									//alert("增加成功");
								});	
								
	this.m_cID		= cID;
	this.m_cType	= cType;
	this.m_uType	= 0;
	this.m_name     = objName;
	this.m_tagInput = e$("ctlTagName");
	
	switch(this.m_cType)
	{
		case 0:
			this.m_typeName = "歌曲";
			break;
			
		case 1:
			this.m_typeName = "MV";
			break;
			
		case 3:
			this.m_typeName = "专辑";
			break;
	
		case 4:
			this.m_typeName = "歌手";
			break;
			
		case 10:
			this.m_typeName = "翻唱";
			break;
			
	    case 27:
		    this.m_typeName = "自编专辑";
			break;
	}
	
	this.m_tagInput.value = "";
	itag.clearData();
	
	var self = this;
	setTimeout(	function() 
				{ 
					itag.m_userTagCtl	= e$("ctlUserTags");
					itag.m_hotTagCtl	= e$("ctlHotTags");
					itag.m_addedTagCtl	= e$("ctlAddedTags");
					
					e$("ctlSuccess").style.display = "none";
					//e$("ctlFavLink").href = "http://www.9sky.com/plus/UserList.aspx?ctype=" + cType + "&cId=" + cID;
	
					itag.On_ShowAddedTags();
					if (objName == null)
					{
						//e$("ctlFirstTitle").style.display = "none";
						//e$("ctlObjectName").innerHTML = "你己收藏了选中歌曲";
					}
					else
					{
						//e$("ctlFirstTitle").style.display = "block";
						e$("ctlObjectName").innerHTML = objName;
					}
					self.showUI("p", "block");
				}, 1000);
	
}

AppTag.prototype.choose = function(v)
{
	var vTagName = this.m_tagInput.value;
	if(v == "") { return; }
	
	var arrTagName = new Array();
	if (vTagName != "")	{ arrTagName = vTagName.split(",");	}
	arrTagName.push(v);
	
	this.m_tagInput.value = arrTagName.join(",");
}

AppTag.prototype.save = function()
{
	var vTagName = this.m_tagInput.value;
	itag.newTag(this.m_cID, this.m_cType, this.m_uType, vTagName)
}

AppTag.prototype.closeWindows = function()
{
	this.showUI("p", "none");
	this.showUI("c", "none");
}

AppTag.prototype.showUI = function(ui, v)
{
	var clientHeight = 0;
	if(document.documentElement && document.documentElement.clientHeight>0){
			clientHeight = document.documentElement.clientHeight;
		}else{
			clientHeight = document.body.clientHeight;
	}
		
	switch(ui)
	{
		case "p":
			
			var ctl = e$("ctlEditTag");
			ctl.style.display = "block";
			var p = e$("ctlTagParent");
			p.style.display = v;
			if (v == "block") 
			{ 
				//var drag = new Drag(p);
				//p.onmousedown = function() { drag.Start(); }	
				
				e$("ctlCommentLink").href = "http://www.9sky.com/ajax/d_comment/Comment.aspx?otype=" + this.m_cType + "&objid=" + this.m_cID;
				
				itag.loadAddedTags(this.m_cID, this.m_cType);
				itag.loadUserTags(); 
				itag.loadHotTags(); 
				var x = (document.body.offsetWidth - 200)/2;
				var y = system.getScrollTop() + (clientHeight - 290)/2;
				p.style.left = itag.m_pXOffset + x + "px";
				p.style.top = itag.m_pYOffset +  y+ "px";

			}
			break;
			
		case "c":
			var c = e$("ctlTagChild");
			c.style.display = v;
			if (v == "block") 
			{ 
				var drag = new Drag(c);
				c.onmousedown = function() { drag.Start(); }	
				var x = (document.body.offsetWidth - 200)/2;
				var y = system.getScrollTop() + (clientHeight - 290)/2;
				c.style.left = x + 150;
				c.style.top = y + 150;
				
			}
			break;
	}
}

function myFav(f)
{
	if (f == null) f = 0;
	var login = getLoginState();
	if (login)
	{
		var userID = getUserID();
		window.open("http://my.9sky.com/{0}/Favorite".format(userID), "_blank");
	}
	else
	{
		showUserLogin();
	}
}

function e$(id)
{
	return document.getElementById(id);
}

var appTag = new AppTag();