/* JS for blog...*/


var global_tags = [];


var TS = {};
//tags admin url.
TS.AdminUrl = "/tags/tags_admin_xml.ue";

TS_EXT = function(params){

	var	EXT = TS.EXT = params.el;
	if(!EXT){
		return;
	}
	
	EXT.Init = function(params){
		EXT.html = EXT.innerHTML;
		EXT.params = params;
		
		if(!EXT.id)
			EXT.id = 'TagsAdminBox_'+(new Date()).getTime();		
			
			
		var ins = EXT.getElementsByTagName('input');
		for(var i=0;i<ins.length;i++){
			if(String(ins[i].getAttribute('name')).indexOf('tag')>=0){
				EXT.tag_text_id = EXT.id+'_tag';
				ins[i].id = EXT.id+'_tag';
			}
			if(String(ins[i].getAttribute('name')).indexOf('add')>=0){
				EXT.add_button_id =EXT.id+'_add';
				ins[i].id = EXT.id+'_add';
			}
		}		
		var uls = EXT.getElementsByTagName('ul');
		for(var i=0;i<uls.length;i++){
			if(String(uls[i].getAttribute('name')).indexOf('tags_list')>=0){
				EXT.tags_list_id = EXT.id+'_tags_list';
				uls[i].id = EXT.id+'_tags_list';
				break;
			}
		}		
		var divs = EXT.getElementsByTagName('div');
		for(var i=0;i<divs.length;i++){
			//find the recent tags' box
			if(String(divs[i].getAttribute('name')).indexOf('recent_tags')>=0){
				EXT.recent_tags_id = EXT.id+'_recent_tags';
				divs[i].id = EXT.id+'_recent_tags';
			}
			//find the editbox
			if(String(divs[i].getAttribute('name')).indexOf('editbox')>=0){
				EXT.editbox_id = EXT.id+'_editbox';
				divs[i].id = EXT.id+'_editbox';
			}
			
		}
		if(!EXT.recent_tags_html&&EXT.recent_tags_id){
			EXT.recent_tags_html = _ge(EXT.recent_tags_id).innerHTML;
		}
		
		//attach Event
		_ge(EXT.add_button_id).onclick=function(){
			EXT.Tags_Add(params);						
			return false;
		};
		
		EXT.AttachRecentTagsEvent();
			
		EXT.inited=true;
	}
	EXT.AttachRecentTagsEvent=function(){
		_ge(EXT.recent_tags_id).onclick=function(){
				EXT.Tags_GetRecent(params);
				return;
			};
	};
	EXT.DetachRecentTagsEvent=function(){
		_ge(EXT.recent_tags_id).onclick=function(event){
				return true;
			};
	};


		
	EXT.Tags_Add=function(params){
		var tag_div = _ge(EXT.tag_text_id);
		var add_div = _ge(EXT.add_button_id);
		var tag=tag_div.value;
		if(!tag){
			alert('请输入要添加的标签名');
			return;
		}
		if(!params.relid||!params.reltype
		   ||(params.reltype!='Image'&&params.reltype!='Blog'&&params.reltype!='Place')){
			alert('参数错误,请尝试重新刷新网页！');
			return;
		}
		
		add_div.value='正在添加...';
		add_div.disabled = true;
		
		var _params = {
			action:'Add',
			name:tag,
			relid:params.relid,
			reltype:params.reltype
		};

		MyAPI.callMethod('Tags.Add',_params,EXT,params,TS.AdminUrl);
	};
	
	EXT.Tags_Add_onLoad=function(success,rsXML,rsText,params,CBParams){
		var add_div = _ge(EXT.add_button_id);
		var tag_div = _ge(EXT.tag_text_id);
		add_div.value='添加';
		add_div.disabled=false;
		tag_div.value='';
		
		if(success.code!=0){
			alert('发生错误(#'+success.code+'):'+success.desc);
			return;
		}
		//success.		
		//get new tags list.
		this.Tags_Get(CBParams);
	};
	
	EXT.Tags_AddMulti=function(e){
		params = EXT.params;
			
		var add_div = _ge(EXT.id+'_addmulti_add');
		var cancel_div = _ge(EXT.id+'_addmulti_cancel');
		if(!add_div||!cancel_div)
			return;
			
		//check clicked tags..
		if(EXT.recent_tags_id)
			var rtbox = _ge(EXT.recent_tags_id);
		if(!rtbox) return;
		var tags='';
		var ins = rtbox.getElementsByTagName('input');
		for(var i=0;i<ins.length;i++){
			if(ins[i].type=='checkbox' && ins[i].checked && String(ins[i].getAttribute('name')).indexOf('i_recent_tags')>=0){
				tags+=(tags?'&':'')+'name[]='+UrlEncode(ins[i].value);
			}
		}
		if(!tags){
			alert('请选择至少一个您要添加的标签!');
			return;
		}
		
		
		//set status
		e.value='正在添加新标签...';
		e.disabled=true;
		params.button = e;
		//
		
		var _params = {
			action:'AddMulti',
			RAW_QUERY:tags,//name[]=...&name[]=...
			relid:params.relid,
			reltype:params.reltype
		};

		MyAPI.callMethod('Tags.AddMulti',_params,EXT,params,TS.AdminUrl);
	};
	
	EXT.Tags_AddMulti_onLoad=function(success,rsXML,rsText,params,CBParams){
		//update status
		CBParams.button.disabled=false;
		CBParams.button.value='添加';
		
		///
		if(success.code!=0){
			alert('发生错误(#'+success.code+'):'+success.desc);
			return;
		}
		//success.		
		//get new tags list.
		this.Tags_Get(CBParams);
	};
	
	EXT.Tags_Get=function(params){
		var _params = {
			action:'Get',
			relid:params.relid,
			reltype:params.reltype
		};
		if(params.limit && params.limit=='Owned')
			_params.action = 'GetOwned';
			

		MyAPI.callMethod('Tags.Get',_params,EXT,params,TS.AdminUrl);
	};
	EXT.Tags_Get_onLoad=function(success,rsXML,rsText,params,CBParams){
		if(success.code!=0){
			alert('发生错误(#'+success.code+'):'+success.desc);
			return;
		}
		
		var tags=[];
		var doc = rsXML.documentElement;
		var ts = doc.getElementsByTagName('tag');
		for(var i=0;ts&&ts.length&&i<ts.length;i++){
			var t = ts[i];
			tags[i]={};
			tags[i].name=getNodeValue(t);
			tags[i].accid=t.getAttribute('accid');
		}
		
		var tl = _ge(EXT.tags_list_id);
		if(!tl)	return;
		while(tl.hasChildNodes()){
			var _e = tl.firstChild;
			tl.removeChild(_e);
		}
		
		for(var i=0;i<tags.length;i++){
			var t = tags[i];
			var li = document.createElement('li');
			li.setAttribute('style','');
			li.style.color = (t.accid==CBParams.accid?'#888888':'#99bb99');
			li.innerHTML = HtmlEscape(t.name)
						+(t.accid==CBParams.accid?'&nbsp;<a class="pale" style="font-size:11px;text-decoration:none;" href="#" onclick="javascript:_ge(\''+EXT.id+'\').Tags_Remove({action:\'Remove\',accid:'+CBParams.accid+',el:this,relid:'+CBParams.relid+',reltype:\''+CBParams.reltype+'\',name:\''+StrSafeInline(t.name)+'\'});return false;" title="删除这个标签">[X]</a>':'');
			tl.appendChild(li);
		}
		if(!tags || !tags.length){
			var li = document.createElement('li');
			li.setAttribute('style','');
			li.style.color = '#666';
			li.style.listStyle='none';
			li.innerHTML = '<em>还没有标签</em> &nbsp;';
			tl.appendChild(li);
		}
		//add edit Button
		if(CBParams.accid>0){
			var li = document.createElement('li');
			li.setAttribute('style','');
			li.style.color = '#999999';
			li.innerHTML = '[<a id="'+EXT.editbox_id+'_link" class="pale_blue" style="" href="#" >添加/编辑</a>]';
			tl.appendChild(li);
			
			li.onclick = function(){
				var eb = _ge(EXT.editbox_id);
				if(typeof eb.d == 'undefined')	eb.d=1;
				eb.style.display= eb.d?'block':'none';
				eb.d=!eb.d;
				_ge(EXT.editbox_id+'_link').innerHTML = !eb.d?'关闭':'添加/编辑';
				return false;
			};
		}
		//ok
	};
	
	EXT.Tags_Remove=function(params){
		var _params = {
			action:'Remove',
			name:params.name,
			relid:params.relid,
			reltype:params.reltype
		};

		MyAPI.callMethod('Tags.Remove',_params,EXT,params,TS.AdminUrl);
		
	};
	EXT.Tags_Remove_onLoad=function(success,rsXML,rsText,params,CBParams){
		if(success.code!=0){
			alert('发生错误(#'+success.code+'):'+success.desc);
			return;
		}
		//success.		
		//get new tags list.
		this.Tags_Get(CBParams);
	};
	
	EXT.Tags_GetRecent=function(params){
		if(EXT.recent_tags_id){
				_ge(EXT.recent_tags_id).innerHTML='<em>正在获取标签列表...</em>';
		}
		
		EXT.DetachRecentTagsEvent();
		
		var _params = {
			action:'GetRecent',
			relid:params.relid,
			reltype:params.reltype
		};

		MyAPI.callMethod('Tags.GetRecent',_params,EXT,params,TS.AdminUrl);
	};
	EXT.Tags_GetRecent_onLoad=function(success,rsXML,rsText,params,CBParams){		
		
		if(success.code!=0){
			alert('发生错误(#'+success.code+'):'+success.desc);
			if(EXT.recent_tags_id && EXT.recent_tags_html)
				_ge(EXT.recent_tags_id).innerHTML = EXT.recent_tags_html;
			return;
		}
		//success.
		var tags=[];
		var doc = rsXML.documentElement;
		var ts = doc.getElementsByTagName('tag');
		for(var i=0;ts&&ts.length&&i<ts.length;i++){
			var t = ts[i];
			tags[i]={};
			tags[i].name=getNodeValue(t);
		}
		var s='<div style="border:1px solid #cccccc;padding:3px;background-color:#eeeeee;">';
		for(var i=0;i<tags.length;i++){
			s+='<label for="'+EXT.id+'_rts_'+i+'" style="white-space:nowrap;"><input type="checkbox" name="i_recent_tags" id="'+EXT.id+'_rts_'+i+'" value="'+HtmlEscape(tags[i].name)+'" />&nbsp;'+HtmlEscape(tags[i].name)+'&nbsp;</label> ';
		}
		s+='<p style="padding:0;margin:0;margin-top:10px;"><input id="'+EXT.id+'_addmulti_add" type="button" class="_SmallButt" style="height:18px;" value="添加" onclick="javascript:_ge(\''+EXT.id+'\').Tags_AddMulti(this);" />&nbsp;&nbsp;<input id="'+EXT.id+'_addmulti_cancel" type="button" class="_DeleteButt" style="height:18px" value="取消" onclick="javascript:_ge(\''+EXT.id+'\').Tags_GetRecent_Cancel();" /></p></div>';
		if(EXT.recent_tags_id){
			_ge(EXT.recent_tags_id).innerHTML = s;
		}
		
	};
	EXT.Tags_GetRecent_Cancel=function(){
		if(EXT.recent_tags_id && EXT.recent_tags_html)
			_ge(EXT.recent_tags_id).innerHTML = EXT.recent_tags_html;
			
		EXT.AttachRecentTagsEvent();	
	};
	
	

	
	
	//init	
	if(!EXT.inited || params.action=='Init'){
			EXT.Init(params);
	}
	
	switch(params.action){
		case 'Add':EXT.Tags_Add(parmas);break;
		case 'Remove':EXT.Tags_Remove(params);break;
		case 'GetRecent':EXT.Tags_GetRecent(params);break;
		case 'Get':EXT.Tags_Get(params);break;
	}
}



//handler

function TS_Action(params){
	TS_EXT(params);
};
