// ----
var global_docs={};
var global_cckeys = {};
var doc=null;
var ckkey=null;
function treeexpad(id){
	var _this = $("#tree-"+id);
	var p = _this.parent();
	var pr=p.parent().find(".area-body-right");
	var h = p.height();
	_this.blur();
	var w=110;
	if(_this.html()=="&lt;"){
		_this.html("&gt;");
		p.find("h3,ul,.tree_histroy").hide();
		p.height(h);
		p.animate({"margin-left":-w},100);
		pr.animate({"width":pr.width()+w},100);
	}
	else{
		_this.html("&lt;");
		p.find("h3,ul,.tree_histroy").show();
		p.animate({"margin-left":0},100);
		pr.animate({"width":pr.width()-w},100);
		
	}
}
function loadXml(xmlpath,__datacallback){
    $.get(xmlpath, function (doc) {
        __datacallback($(doc.documentElement));
    });
}

function InitBasicEvents(tc){
	//搜索关键字
	tc.find("input.area-search").focus(function(){
		if($(this).val()=="首字母/拼音"){
			$(this).val('');	
		}
	}).blur(function(){
		if($(this).val()==""){
			$(this).val('首字母/拼音');	
		}
	}).keyup(function(){
		var l = $(this).val();
		if($.trim(l)=="") return;
		var w = l.substr(0,1);
		if(/[a-zA-Z]/.test(w))
		LoadTypesData(tc.attr("id"),2,0,0,"快速查询",w.toUpperCase());
	});
	//拖动窗口
	tc.easydrag();
	tc.setHandler(tc.attr("id")+'-handler');
	var area = tc.find(".selectedarea");
	//完成事件
	tc.find(".area-body-top").find("a.btn").each(function (i) {
	    $(this).click(function () {
	        if (i == 0) {//clear select 
	            area.find("a[cid]").remove();
	        }
	        else if (i == 1)//submit changes
	        {
	            var handlerid = tc.attr("handlerid");
	            var handler = $("#" + handlerid);
	            var ids = [];
	            var txts = [];
	            area.find("a[cid]").each(function () {
	                ids.push($(this).attr("cid"));
	                txts.push($(this).text());
	            });
	            var text = txts.join(',');
	            handler.attr("defvalue", ids.join(','));
	            handler.html((text==""?"请选择":text)+"<b></b>");

	            tc.hide();
	            $(".selectorbg").hide();
	        }
	    });
	});
}
function InitTreeLetters(tc){
	var lettes =['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];
	var htms=[];
    var nolettes = "";
	$.each(lettes,function(i,n){
		if(nolettes.indexOf(n+",")!=-1)
		htms.push('<li class="none">'+n+'</li>');
		else
		htms.push('<li><a href="javascript:SearchByLetter(\''+tc.attr("id")+'\',\''+n+'\');">'+n+'</a></li>');
		
	});
	tc.find(".tree_letter").html(htms.join(''));
	
}
function SearchByLetter(tcid,w){
	LoadTypesData(tcid,2,0,0,"快速查询",w);
}
//tcid=层容器ID
function LoadTypesData(tcid,typeIndex,_pid,_autoload_pid,_caption,_key){
    var tc = $("#types-" + tcid + "-" + typeIndex);
    
	if(tc.length==0){
		tc=CreateTC(tcid,typeIndex,"");
	}
	else{
		tc.fadeOut('fast');	
	}
	//hide the last level
	var maxlevel = tc.find(".types").length;
	for(var i=typeIndex+1;i<=maxlevel;i++){
		if($("#types-"+tcid+"-"+i).length) $("#types-"+tcid+"-"+i).hide();
	}
	//---
	if(!_key){
		var expr = "c[type='"+typeIndex+"']";
		if(_pid){expr+="[pid='" + _pid + "']"}//按父类ID加载
		var childs = doc.children(expr);
		var tcmindex = parseInt($("#" + tcid).attr("minsindex"));
		
	    if (childs.length == 0) {//无下级子类
	        doSelect(tcid, _pid);
	    }
	    else if (childs.length > 0 && typeIndex == tcmindex + 1) { //第二级分类就可以开始选择（可自定义）
	        doSelect(tcid, _pid, true);
	    }
	}
	else{
		childs = doc.find("c[letter='"+_key+"'][type!='3']");
	}
	var sb = [];
	childs.each(function(i,n){
		var pid = $(this).attr("pid");
		var id = $(this).attr("id");
		var type = $(this).attr("type");
	//	var clen = $(this).attr("counts");
		sb.push("<a href=\"javascript:LoadTypesData('"+tcid+"',"+(parseInt(type)+1)+","+id+",null,'"+$(this).text()+"')\" tid='"+id+"' pid='"+pid+"' title='"+$(this).text()+"'>"+$(this).text()+"</a>");
	});
	var html=sb.join("");
	sb.push("<div class='clear20'></div>");
	
	if(html==""||childs.length==0){
		tc.fadeOut(50);	
	}
	else{
		var caption=doc.children("c[id='"+_autoload_pid+"']").text();
		tc.children(".types-data").html(sb.join(""));
		tc.fadeIn(50);	
	}
	
	if(_autoload_pid){
		LoadTypesData(tcid,2,_autoload_pid,null,caption);
	}
if (_caption) {
    var tclacy = $("#" + tcid).attr("lacy");
    if (tclacy && typeIndex == tcmindex)
        tc.find(".scap").html("<a href=\"javascript:doSelect('" + tcid + "','" + _pid + "',true)\">" + _caption + "<em>(点击选择大类)<em></a>");	
     else
		tc.find(".scap").html(_caption);	
	}
}
function CreateTC(tcid,index,caption){
	var sb = [];
	sb.push('<div class="types" id="types-'+tcid+'-'+index+'">');
    sb.push('    	<h3 class="doline2">');
    sb.push('        	<strong class="scap">'+caption+'</strong>');
    sb.push('     </h3>');
    sb.push('    <div class="types-data">');
    sb.push('    </div>');
    sb.push('</div>');
	var _tcid="#types-"+tcid+"-"+(index-1);
	if($(_tcid).length>0){
		$(_tcid).before(sb.join(''));
	}
	else{
		$("#"+tcid).find(".area-body-right").append(sb.join(''));	
	}
	return $("#types-"+tcid+"-"+index);
}
function doSelect(tcid,id,b){
	var node = doc.children("c[id='"+id+"']");
	if(node.length==0) return;
	var pid = node.attr("pid");
	var tc =$("#"+tcid);
	var type = node.attr("type");
	var area = tc.find(".selectedarea");
	//检查重复
	var cnode = area.find("a[cid='"+id+"']");
	if(cnode.length>0){
		flashnode(cnode);
		showalert(tcid,"已经选中此项目",cnode);
		return;
	}
	//移除父类
	if(pid!=id){
		removeSelect(tcid,pid);
	}
	if(b){//要求清除子类
		area.find("a[pid='"+id+"']").each(function(){
				removeSelect(tcid,$(this).attr("cid"));
		});
	}
	//add
	if(area.find("a").length>=3){
		showalert(tcid,"最多只能选择3个项目",area.find("a:last"));
		return;
	}
	area.append('<a href="javascript:removeSelect(\''+tcid+'\','+id+')" cid="'+id+'" pid="'+pid+'">'+node.text()+'<b></b></a>');
	addInHistory(id);
}
function addInHistory(id){
	if($.cookie(ckkey)){
		var c=$.cookie(ckkey);
		var cc=c.split(',');
		if(cc.length>5) cc = cc.slice(0,4);
		cc.push(id);
		$.cookie(ckkey, cc.join(','), { expires: 7}); 
	}	
	else{
		$.cookie(ckkey, id, { expires: 7}); 
	}
}
function LoadInHistory(tc,c){
	var cc=unescape(c).split(',');
	var htms=[];
	$.each(cc.reverse(), function (i, n) {
	    var node = doc.children("c[id='" + n + "']");
	    if (node.length > 0) {
	        var type = node.attr("type");
	        var id = node.attr("id");
	        var link = "LoadTypesData('" + tc.attr("id") + "'," + (parseInt(type) + 1) + "," + id + ",null,'" + node.text() + "')"
	        htms.push('<a href="javascript:' + link + '">' + node.text() + '</a>');
	    }
	});
	tc.find(".tree_histroy").html(htms.join(''));
}
function flashnode(n){
	n.fadeOut(100,function(){
		n.fadeIn(100);
	});
}
function removeSelect(tcid,id){
	var tc = $("#"+tcid);
	var area = tc.find(".selectedarea");
	closealert(tcid);
	area.find("a[cid='"+id+"']").fadeOut(50,function(){
		$(this).remove();	
	});

}
function closealert(tcid){
	var tc = $("#"+tcid);
	tc.find(".msgdiv").fadeOut();
}
function showalert(tcid,m,n){
    var tc = $("#" + tcid);
	var am = tc.find(".msgdiv");
	if(am.length==0){
		var html = ' <div class="msgdiv"><b></b><div class="msgdiv-cc"></div></div>';
		tc.find(".area-body").append(html);
		am = tc.find(".msgdiv");
	}
	am.fadeIn();
	am.children(".msgdiv-cc").html(m);
	var p = n.position();
	var l =p.left-(am.width()-n.width())/2+6;
	var t = p.top+n.height()*2+2;
	am.css({left:l,top:t});
	setTimeout(function(){closealert(tcid);},2000);
}
/*
 {id,caption}
*/
function CreateSelectorLayer(d,callback){
	if($("#"+d.id).length==0){
		var sb = [];
		sb.push("<div class=\"area-selector\" id='"+d.id+"' handlerid='"+d.handlerid+"' minsindex='"+d.minsindex+"' lacy='"+d.lacy+"'>");
		sb.push("  <div class=\"area-body\">");
		sb.push("    <h2 class=\"area-body-top\" id=\""+d.id+"-handler\"><strong class=\"l\">"+d.caption+"<\/strong><div class=\"r\"><span class=\"l\">快速搜索：<\/span><input type=\"text\"  class=\"l area-search\" value=\"首字母\/拼音\"\/>");
		sb.push("    <a class=\"l btn btn-r\">清空<\/a> ");
		sb.push("    <a class=\"l btn\">确定<\/a>");
		sb.push("    <\/div><\/h2>");
		sb.push("    <div class=\"area-body-left\">");
		sb.push("      <a class=\"treeexpand\" href=\"javascript:treeexpad('"+d.id+"')\" id=\"tree-"+d.id+"\">&lt;<\/a>");
		sb.push("      <h3>快速选择<\/h3>");
		sb.push("      <ul class=\"tree_letter\">");
		sb.push("      <\/ul>");
		sb.push("      <div class=\"clear\" style=\"height:12px;\"><\/div>");
		sb.push("      <h3>历史选择<\/h3>");
		sb.push("      <div class=\"tree_histroy\">");
		sb.push("      <\/div>");
		sb.push("    <\/div>");
		sb.push("    <div class=\"area-body-right\">");
		sb.push("    	<h3 class=\"selectedarea\">");
		sb.push("        	<span class=\"l\">当前已选：<\/span>");
		sb.push("        <\/h3>");
		sb.push("    <\/div>");
		sb.push("    <div class=\"clear\"><\/div>");
		sb.push("  <\/div>");
		sb.push("<\/div>");	
		$("BODY").append(sb.join(''));
		var tc = $("#" + d.id);
		tc.setCenter();
	    tc.css("top", 80);
		loadXml(d.xml,function(c){
			global_docs[d.id]=c;
			global_cckeys[d.id]=d.ckkey;
			
			doc = global_docs[d.id];
			ckkey = global_cckeys[d.id];
			
			InitTreeLetters(tc);
			InitBasicEvents(tc);
			
			if($.cookie(d.ckkey)){
				LoadInHistory(tc,$.cookie(d.ckkey));
			}
			
			if($(".selectorbg").length==0){
				$("BODY").append("<div class='selectorbg'></div>");
				$(".selectorbg").height($(document).height());
			}
			if(typeof(callback)=='function'){
				callback(d.id);
			}
		});	
	}
    $(".selectorbg").show();
	doc = global_docs[d.id];
	ckkey = global_cckeys[d.id];
    $("#" + d.id).show();
    $("#" + d.id).bgiframe();
	return $("#"+d.id);
}

