﻿function Show(id){
    document.getElementById("divTreeview_" + id).style.display="";
    if(document.getElementById("frmTreeview_" + id)!=null){
        document.getElementById("frmTreeview_" + id).style.display="";
    }
}

function Hide(id){
    document.getElementById("divTreeview_" + id).style.display="none";
    if(document.getElementById("frmTreeview_" + id)!=null){
        document.getElementById("frmTreeview_" + id).style.display="none";
    }
}

function GetTreeValue(textid,textstr,valueid,valuestr){
    document.getElementById(textid).value = textstr;
    if(valueid!=""){
        document.getElementById(valueid).value = valuestr;
    }
}

function GetSelect(id,vid,controlid){
    var getid = document.getElementById(controlid);
    var checkBoxs = getid.getElementsByTagName('input');
    var checkstr="";
    var checkvalue="";
    for(var i=0;i<checkBoxs.length;i++){
        if(checkBoxs[i].type=='checkbox' && checkBoxs[i].checked){
            checkstr = checkstr + checkBoxs[i].title + ",";
            checkvalue = checkvalue + checkBoxs[i].value + ",";
        }
    }
    document.getElementById(id).value = checkstr.substring(0,checkstr.length-1);
    if(vid!=""){
        document.getElementById(vid).value = checkvalue.substring(0,checkvalue.length-1);
    }
}


//ShowTips
document.write('<div id="pltsTipLayer" style="display: none;position: absolute; z-index:10001"></div>');

//onmouserover
function pltsshow(Msg,cidtitle,evt)
 {  
 var pltsPop=null;
 var pltsTitle="";

 	if(evt==null){
 	   evt=window.event; 
 	  }
 	 var pltsTipLayer=document.getElementById("pltsTipLayer");
 	 var o = evt.srcElement?evt.srcElement:evt.target;
 	 var getClientWidth =(document.documentElement.clientWidth == 0) ? document.body.clientWidth : document.documentElement.clientWidth;
 	   
     pltsPop=cidtitle;

      if(pltsPop!=null&&pltsPop!=""&&typeof(pltsPop)!="undefined")
     {
        pltsTipLayer.style.left=-1000+"px";
        pltsTipLayer.style.display='';
        pltsTitle = pltsPop;
        Msg=Msg.replace(/\n/g,"<br/>");
        Msg=Msg.replace(/\0x13/g,"<br/>");

        var re=/\{(.[^\{]*)\}/ig;
        if(re.test(Msg)){
          re=/\{(.[^\{]*)\}/ig;
          Msg=Msg.replace(re,"");
          //Msg=Msg.replace("<br/>","");
        }
               var content =
              '<table id="toolTipTalbe"><tr><td>' +
              '<div id="pltsPoptop" class="tipstitle">' +
              '<div id="topleft"><div style="text-align:left;">↖'+pltsTitle+'</div></div><div id="topright" style="display:none;"><div style="text-align:right;">'+pltsTitle+'↗</div></div>'+
              '</div>'+
              '<div class="tipsbody">'+Msg+'</div>'+
              '<div id="pltsPopbot" class="tipstitle" style="display:none;">'+
              '<div id="botleft"><div style="text-align:left;">↙'+pltsTitle+'</div></div><div id="botright" style="display:none;"><div style="text-align:right;">'+pltsTitle+'↘</div></div>'+
              '</div></td></tr></table>';
               document.getElementById("pltsTipLayer").innerHTML=content;
               document.getElementById("toolTipTalbe").style.width=Math.min(pltsTipLayer.clientWidth,getClientWidth/2.2)+"px";
               pltsmove(evt);
               return true;
        }
     else
     {
            pltsTipLayer.innerHTML="";
            pltsTipLayer.style.display="none";
            return true;
     }
 }

//onmousemove
function pltsmove(evt)
 {
 var pltsoffsetX = 10;
 var pltsoffsetY = 8;

 	if(evt==null){
 	   evt=window.event; 
 	  }
 	    var pltsTipLayer=document.getElementById("pltsTipLayer");
        if(pltsTipLayer.innerHTML=="")return true;
        var MouseX = evt.x ? evt.x : evt.pageX;
        var MouseY = evt.y ? evt.y : evt.pageY;

        var popHeight=pltsTipLayer.clientHeight;
        var popWidth=pltsTipLayer.clientWidth;
        var popTopAdjust=0;
        var popLeftAdjust=0;
        
        var getClientHeight=(document.documentElement.clientHeight == 0) ? document.body.clientHeight : document.documentElement.clientHeight;
        var getClientWidth=(document.documentElement.clientWidth == 0) ? document.body.clientWidth : document.documentElement.clientWidth;
        
        if(MouseY+pltsoffsetY+popHeight>getClientHeight)
        {
                 popTopAdjust=-popHeight-pltsoffsetY*1.5;
                 document.getElementById("pltsPoptop").style.display="none";
                 document.getElementById("pltsPopbot").style.display="";
        }
         else
        {
                 document.getElementById("pltsPoptop").style.display="";
                 document.getElementById("pltsPopbot").style.display="none";
        }
        if(MouseX+pltsoffsetX+popWidth>getClientWidth)
        {
               popLeftAdjust=-popWidth-pltsoffsetX*2;
               document.getElementById("topleft").style.display="none";
               document.getElementById("botleft").style.display="none";
               document.getElementById("topright").style.display="";
               document.getElementById("botright").style.display="";
        }
        else
        { 
        	   document.getElementById("topleft").style.display="";
               document.getElementById("botleft").style.display="";
               document.getElementById("topright").style.display="none";
               document.getElementById("botright").style.display="none";
        }
        var ptleft=0;
        var pttop=0;
        if(isFirefox=navigator.userAgent.indexOf("Firefox")>0){ 
          ptleft = MouseX + pltsoffsetX + popLeftAdjust;
          pttop = MouseY + pltsoffsetY + popTopAdjust; 
        } else{
          ptleft = MouseX + pltsoffsetX + document.body.scrollLeft + document.documentElement.scrollLeft + popLeftAdjust;
          pttop = MouseY + pltsoffsetY + document.body.scrollTop + document.documentElement.scrollTop + popTopAdjust;
        }
        pltsTipLayer.style.left = ptleft + "px";
        pltsTipLayer.style.top = pttop + "px";
       return true;
 }

//onmouseout
function pltsout(){
   document.getElementById("pltsTipLayer").innerHTML="";
   document.getElementById("pltsTipLayer").style.display = "none";
}







/*--------------------------------------------------|

| dTree 2.05 | www.destroydrop.com/javascript/tree/ |

|---------------------------------------------------|

| Copyright (c) 2002-2003 Geir Landr?              |

|                                                   |

| This script can be used freely as long as all     |

| copyright messages are intact.                    |

|                                                   |

| Updated: 17.04.2003                               |

|--------------------------------------------------*/


// modify by maxl
// 2008-05-23

// Node object
function Node(id, pid, name, url, value, title, descrip, target, icon, iconOpen, open, icheck) {

	this.id = id;//node id

	this.pid = pid;//node pid

	this.name = name;//node name
	
	this.url = url;//node url

	this.value = value;//node value

	this.title = title;//node title

	this.descrip = descrip;//node discription
	
	this.target = target;//node url target

	this.icon = icon;//node icon
	
	this.iconOpen = iconOpen;//node is open icon

	this._io = open || false;//is open
	
	this._ic = icheck || false;//is check when using checkbox

	this._is = false;

	this._ls = false;//is last node

	this._hc = false;//have child node

	this._ai = 0;

	this._p;//parent node

};

// Tree object
function dTree(objName,formId,topparent,tipstitle,joinimg,joinbottomimg,lineimg,minusimg,minusbottomimg,nolinesminusimg,nolinesplusimg,plusimg,plusbottomimg,emptyimg,getStyleId,baseimg,floderimg,floderopenimg,pageimg) {

	this.config = {

		target : null,

		folderLinks : true,

		useSelection : true,

		useCookies : true,

		useLines : true,

		useIcons : false,
		
		useCheckBox : true,
		
		useLayerLoad : false,

		useRelationParent : false,

		useShowTips : false,

		useStatusText : false,

		closeSameLevel : false,

		inOrder : false

	}

	this.icon = {

		root : baseimg,

		folder : floderimg,

		folderOpen : floderopenimg,

		node : pageimg,

		empty : emptyimg,

		line : lineimg,

		join : joinimg,

		joinBottom : joinbottomimg,

		plus : plusimg,

		plusBottom : plusbottomimg,

		minus : minusimg,

		minusBottom	: minusbottomimg,

		nlPlus : nolinesplusimg,

		nlMinus : nolinesminusimg
	};
	
	this.parEnum = objName;

	this.obj = objName;

	this.aNodes = [];
	
	this.topparent = topparent;

	this.aIndent = [];

	this.root = new Node(-1);

	this.selectedNode = null;

	this.selectedFound = false;

	this.completed = false;

	this.formId = formId;

	this.pltstitle = tipstitle;

	this.dtreeStyleId = getStyleId;
};



// Adds a new node to the node array
dTree.prototype.add = function(id, pid, name, url, value, title, descrip, target, icon, iconOpen, open, icheck) {

	this.aNodes[this.aNodes.length] = new Node(id, pid, name, url, value, title, descrip, target, icon, iconOpen, open, icheck);

};



// Open/close all nodes

dTree.prototype.openAll = function() {

	this.oAll(true);

};

dTree.prototype.closeAll = function() {

	this.oAll(false);

};



// Outputs the tree to the page

dTree.prototype.toString = function() {

	var str = '<div class="'+this.dtreeStyleId+'" id="'+this.formId+'">\n';

	if (document.getElementById) {

		if (this.config.useCookies) this.selectedNode = this.getSelected();

		str += this.addNode(this.root,this.parEnum);

	} else str += 'Browser not supported.';

	str += '</div>';

	if (!this.selectedFound) this.selectedNode = null;

	this.completed = true;

	return str;

};



// Creates the tree structure

dTree.prototype.addNode = function(pNode,thisparaenum) {

	var str = '';
	var n=0;
	
	if (!this.config.inOrder) n = pNode._ai;

	for (n; n<this.aNodes.length; n++) {
	
		if (this.aNodes[n].pid == pNode.id) {

			if(this.aNodes[n].pid == this.topparent){
				thisparaenum = this.parEnum;
			}
			
			var cn = this.aNodes[n];

			cn._p = pNode;

			cn._ai = n;

			this.setCS(cn);

			if (!cn.target && this.config.target) cn.target = this.config.target;

			if (cn._hc && !cn._io && this.config.useCookies) cn._io = this.isOpen(cn.id);

			if (!this.config.folderLinks && cn._hc) cn.url = null;

			if (this.config.useSelection && cn.id == this.selectedNode && !this.selectedFound) {

					cn._is = true;

					this.selectedNode = n;

					this.selectedFound = true;

			}
			
			if(pNode._ic){
			        cn._ic = true;
			}
           
			str += this.node(cn, n,thisparaenum);

			if (cn._ls) break;

		}

	}

	return str;

};



// Creates the node icon, url and text

dTree.prototype.node = function(node, nodeId,thisparaenum) {

//    if(this.config.useCheckBox && nodeId!=0){
//		
//		if(node.pid==this.topparent){
//			thisparaenum += node.id + "-";
//		}
//		else{
//			var pL = thisparaenum.indexOf(node.pid+"-");
//			
//			thisparaenum = thisparaenum.substring(0,pL+(node.pid+"-").length) + node.id + "-";		
//		}
//	}

    if(nodeId!=0){
		
		if(node.pid==this.topparent){
			thisparaenum += node.id + "-";
		}
		else{
			var pL = thisparaenum.indexOf(node.pid+"-");
			
			thisparaenum = thisparaenum.substring(0,pL+(node.pid+"-").length) + node.id + "-";		
		}
	}
	
	var str = '<div class="dTreeNode">' + this.indent(node, nodeId,thisparaenum);

	if (this.config.useIcons) {

		if (!node.icon) node.icon = (this.root.id == node.pid) ? this.icon.root : ((node._hc) ? this.icon.folder : this.icon.node);

		if (!node.iconOpen) node.iconOpen = (node._hc) ? this.icon.folderOpen : this.icon.node;

		if (this.root.id == node.pid) {

			node.icon = this.icon.root;

			node.iconOpen = this.icon.root;

		}

		str += '<img id="i' + this.obj + nodeId + '" src="' + ((node._io) ? node.iconOpen : node.icon) + '" alt="" />';

	}

	
	if(this.config.useCheckBox && nodeId!=0){

        if(node._ic){
		    str += '<input type="checkbox" checked="checked" name="id" id="c'+thisparaenum+'" title="'+node.name+'" onClick="'+this.formId.replace("tree_","")+'.caBox(\'c'+thisparaenum+'\')" value="' + node.value +'" class="cx"/>';
	    }else{
	        str += '<input type="checkbox"  name="id" id="c'+thisparaenum+'" title="'+node.name+'" onClick="'+this.formId.replace("tree_","")+'.caBox(\'c'+thisparaenum+'\')" value="' + node.value +'" class="cx"/>';
	    }
	}

	if (node.url) {

		str += '<a id="s' + this.obj + nodeId + '" class="' + ((this.config.useSelection) ? ((node._is ? 'nodeSel' : 'node')) : 'node') + '" href="' + node.url + '"';

		if (node.title) str += ' title="' + node.title + '"';

		if (node.target) str += ' target="' + node.target + '"';
        
        if(this.config.useShowTips) str += ' onmouseover="pltsshow(\'' + node.descrip + '\',\'' + this.pltstitle + '\',event);" onmousemove="pltsmove(event)" onmouseout="pltsout()" ';

		if (this.config.useSelection && ((node._hc && this.config.folderLinks) || !node._hc)) str += ' onclick="javascript: ' + this.obj + '.s(' + nodeId + ');"';

		str += '>';

	}
	else if ((!this.config.folderLinks || !node.url) && node._hc && node.pid != this.root.id) {

        if(this.config.useCheckBox && nodeId!=0){
		str += '<a href="javascript: ' + this.obj + '.o(' + nodeId + ',\'' + thisparaenum + '\');" class="node">';
		}
	}
	
    str += node.name;
    
    if (node.url || ((!this.config.folderLinks || !node.url) && node._hc)) str += '</a>';
	    
	str += '</div>';


   if(node._hc){
   
       str += '<div id="d' + this.obj + nodeId + '" class="clip" style="display:' + ((this.root.id == node.pid || node._io) ? 'block' : 'none') + ';">';
       
       if(this.config.useLayerLoad){
       
           if(node._io||this.root.id == node.pid){
              str += this.addNode(node,thisparaenum);      
           }
           
       }else{
       
           str += this.addNode(node,thisparaenum);
       }
       
       str += '</div>';
   }

	this.aIndent.pop();

	return str;

};



// Adds the empty and line icons

dTree.prototype.indent = function(node, nodeId,thisparaenum) {

	var str = '';

    if(this.config.useLayerLoad){
    
            if (node.id!=this.topparent) {
                
	            for (var n=0; n<this.aIndent.length; n++)

		            str += '<img src="' + ( (this.aIndent[n] == 1 && this.config.useLines) ? this.icon.line : this.icon.empty ) + '" alt="" />';
                
	                (node._ls) ? this.aIndent.push(0) : this.aIndent.push(1);

	            if (node._hc) {

		            str += '<a href="javascript: ' + this.obj + '.o(' + nodeId + ',\''+thisparaenum+'\');"><img id="j' + this.obj + nodeId + '" src="';

		            if (!this.config.useLines) str += (node._io) ? this.icon.nlMinus : this.icon.nlPlus;

		            else str += ( (node._io) ? ((node._ls && this.config.useLines) ? this.icon.minusBottom : this.icon.minus) : ((node._ls && this.config.useLines) ? this.icon.plusBottom : this.icon.plus ) );

		            str += '" alt="" /></a>';

	            } else str += '<img src="' + ( (this.config.useLines) ? ((node._ls) ? this.icon.joinBottom : this.icon.join ) : this.icon.empty) + '" alt="" />';

            }
	}
	else{
	        if (this.root.id != node.pid) {

		        for (var n=0; n<this.aIndent.length; n++)

			        str += '<img src="' + ( (this.aIndent[n] == 1 && this.config.useLines) ? this.icon.line : this.icon.empty ) + '" alt="" />';

		        (node._ls) ? this.aIndent.push(0) : this.aIndent.push(1);

		        if (node._hc) {

			        str += '<a href="javascript: ' + this.obj + '.o(' + nodeId + ');"><img id="j' + this.obj + nodeId + '" src="';

			        if (!this.config.useLines) str += (node._io) ? this.icon.nlMinus : this.icon.nlPlus;

			        else str += ( (node._io) ? ((node._ls && this.config.useLines) ? this.icon.minusBottom : this.icon.minus) : ((node._ls && this.config.useLines) ? this.icon.plusBottom : this.icon.plus ) );

			        str += '" alt="" /></a>';

		        } else str += '<img src="' + ( (this.config.useLines) ? ((node._ls) ? this.icon.joinBottom : this.icon.join ) : this.icon.empty) + '" alt="" />';

	        }
	}
	
	return str;

};



// Checks if a node has any children and if it is the last sibling

dTree.prototype.setCS = function(node) {

	var lastId;

	for (var n=0; n<this.aNodes.length; n++) {

		if (this.aNodes[n].pid == node.id) node._hc = true;

		if (this.aNodes[n].pid == node.pid) lastId = this.aNodes[n].id;

	}

	if (lastId==node.id) node._ls = true;

};


// Returns the selected node

dTree.prototype.getSelected = function() {

	var sn = this.getCookie('cs' + this.obj);

	return (sn) ? sn : null;

};

// Highlights the selected node

dTree.prototype.s = function(id) {

	if (!this.config.useSelection) return;

	var cn = this.aNodes[id];

	if (cn._hc && !this.config.folderLinks) return;

	if (this.selectedNode != id) {

		if (this.selectedNode || this.selectedNode==0) {

			eOld = document.getElementById("s" + this.obj + this.selectedNode);

			eOld.className = "node";
		}

		eNew = document.getElementById("s" + this.obj + id);

		eNew.className = "nodeSel";

		this.selectedNode = id;

		if (this.config.useCookies) this.setCookie('cs' + this.obj, cn.id);

	}
};



// Toggle Open or close

dTree.prototype.o = function(id,thisparaenum) {

	var cn = this.aNodes[id];
	var paraarr;
	
	if(this.config.useLayerLoad){
	
	    var oldthisparaenum=  thisparaenum;
        
        paraarr=oldthisparaenum.split("-");
        
        this.aIndent.length=0;
        
        
        for(var n=0;n<paraarr.length-1;n++){
           this.aIndent.push(1);
        }
        
	    this.nodeStatus(!cn._io, id, cn._ls, thisparaenum);
	    
        if(this.config.useCheckBox){
	      this.caBox('c'+oldthisparaenum);
	    }
	
	}else{
	    this.nodeStatus(!cn._io, id, cn._ls, thisparaenum);
	}
	
	
	cn._io = !cn._io;

	if (this.config.closeSameLevel) this.closeLevel(cn);

	if (this.config.useCookies) this.updateCookie();
	
};

// Open or close all nodes

dTree.prototype.oAll = function(status) {

	for (var n=0; n<this.aNodes.length; n++) {

		if (this.aNodes[n]._hc && this.aNodes[n].pid != this.root.id) {

			this.nodeStatus(status, n, this.aNodes[n]._ls)

			this.aNodes[n]._io = status;

		}

	}

	if (this.config.useCookies) this.updateCookie();

};



// Opens the tree to a specific node

dTree.prototype.openTo = function(nId, bSelect, bFirst) {

	if (!bFirst) {

		for (var n=0; n<this.aNodes.length; n++) {

			if (this.aNodes[n].id == nId) {

				nId=n;

				break;

			}

		}

	}

	var cn=this.aNodes[nId];

	if (cn.pid==this.root.id || !cn._p) return;

	cn._io = true;

	cn._is = bSelect;

	if (this.completed && cn._hc) this.nodeStatus(true, cn._ai, cn._ls);

	if (this.completed && bSelect) this.s(cn._ai);

	else if (bSelect) this._sn=cn._ai;

	this.openTo(cn._p._ai, false, true);

};



// Closes all nodes on the same level as certain node

dTree.prototype.closeLevel = function(node) {

	for (var n=0; n<this.aNodes.length; n++) {

		if (this.aNodes[n].pid == node.pid && this.aNodes[n].id != node.id && this.aNodes[n]._hc) {

			this.nodeStatus(false, n, this.aNodes[n]._ls);

			this.aNodes[n]._io = false;

			this.closeAllChildren(this.aNodes[n]);

		}

	}

}



// Closes all children of a node

dTree.prototype.closeAllChildren = function(node) {

	for (var n=0; n<this.aNodes.length; n++) {

		if (this.aNodes[n].pid == node.id && this.aNodes[n]._hc) {

			if (this.aNodes[n]._io) this.nodeStatus(false, n, this.aNodes[n]._ls);

			this.aNodes[n]._io = false;

			this.closeAllChildren(this.aNodes[n]);		

		}

	}

}



// Change the status of a node(open or closed)

dTree.prototype.nodeStatus = function(status, id, bottom, thisparaenum) {

	eDiv	= document.getElementById('d' + this.obj + id);

	eJoin	= document.getElementById('j' + this.obj + id);

	if (this.config.useIcons) {

		eIcon	= document.getElementById('i' + this.obj + id);

		eIcon.src = (status) ? this.aNodes[id].iconOpen : this.aNodes[id].icon;

	}

	eJoin.src = (this.config.useLines)?

	((status)?((bottom)?this.icon.minusBottom:this.icon.minus):((bottom)?this.icon.plusBottom:this.icon.plus)):

	((status)?this.icon.nlMinus:this.icon.nlPlus);

	eDiv.style.display = (status) ? 'block': 'none';
	
	if(this.config.useLayerLoad){
	
	    var cn = this.aNodes[id];
	    if(!cn._io){
	      var nstr = this.addNode(cn,thisparaenum);
	      eDiv.innerHTML = "";
          eDiv.innerHTML += nstr;
        }
    }

};





// [Cookie] Clears a cookie

dTree.prototype.clearCookie = function() {

	var now = new Date();

	var yesterday = new Date(now.getTime() - 1000 * 60 * 60 * 24);

	this.setCookie('co'+this.obj, 'cookieValue', yesterday);

	this.setCookie('cs'+this.obj, 'cookieValue', yesterday);

};



// [Cookie] Sets value in a cookie

dTree.prototype.setCookie = function(cookieName, cookieValue, expires, path, domain, secure) {

	document.cookie =

		escape(cookieName) + '=' + escape(cookieValue)

		+ (expires ? '; expires=' + expires.toGMTString() : '')

		+ (path ? '; path=' + path : '')

		+ (domain ? '; domain=' + domain : '')

		+ (secure ? '; secure' : '');

};



// [Cookie] Gets a value from a cookie

dTree.prototype.getCookie = function(cookieName) {

	var cookieValue = '';

	var posName = document.cookie.indexOf(escape(cookieName) + '=');

	if (posName != -1) {

		var posValue = posName + (escape(cookieName) + '=').length;

		var endPos = document.cookie.indexOf(';', posValue);

		if (endPos != -1) cookieValue = unescape(document.cookie.substring(posValue, endPos));

		else cookieValue = unescape(document.cookie.substring(posValue));

	}

	return (cookieValue);

};



// [Cookie] Returns ids of open nodes as a string

dTree.prototype.updateCookie = function() {

	var str = '';

	for (var n=0; n<this.aNodes.length; n++) {

		if (this.aNodes[n]._io && this.aNodes[n].pid != this.root.id) {

			if (str) str += '.';

			str += this.aNodes[n].id;

		}

	}

	this.setCookie('co' + this.obj, str);

};



// [Cookie] Checks if a node id is in a cookie
dTree.prototype.isOpen = function(id) {

	var aOpen = this.getCookie('co' + this.obj).split('.');

	for (var n=0; n<aOpen.length; n++)

		if (aOpen[n] == id) return true;

	return false;

};



// If Push and pop is not implemented by the browser
if (!Array.prototype.push) {

	Array.prototype.push = function array_push() {

		for(var i=0;i<arguments.length;i++)

			this[this.length]=arguments[i];

		return this.length;

	}

};

if (!Array.prototype.pop) {

	Array.prototype.pop = function array_pop() {

		lastElement = this[this.length-1];

		this.length = Math.max(this.length-1,0);

		return lastElement;

	}

};

/* checkbox tree */
dTree.prototype.caBox = function(regx) {
            var form = document.getElementById(this.formId);
			if(document.getElementById(regx).checked){	
				var checkBoxs = form.getElementsByTagName('input');
				var regxArray = regx.split("-");
				for (var i=0; i<checkBoxs.length; i++) {
					var element = checkBoxs[i];
					if (element.name == "id" && element.type=='checkbox'){
						// checked next node 
						if(element.id.indexOf(regx)!=-1){
							element.checked = true;
						}
						
					}
				}
				
				// checked prev node
				if(this.config.useRelationParent){
				    for(j=0;j<regxArray.length;j++){
					    var pDiv = regx.substring(0,regx.indexOf(regxArray[regxArray.length-j-1]+"-"));
					    if(form.getElementById(pDiv))
						    form.getElementById(pDiv).checked=true;
				    }
				}
			}
			else{
				// unChecked
				var checkBoxs = form.getElementsByTagName('input');
				var regxArray = regx.split("-");
				for (var i=0; i<checkBoxs.length; i++) {
					var element = checkBoxs[i];
					if (element.name == "id" && element.type=='checkbox'){
						if(element.id.indexOf(regx)!=-1){
							element.checked = false;						}
					}
				}
				
				// checked prev node
				if(this.config.useRelationParent){
				
				    for(j=0;j<regxArray.length-1;j++){
					    if( !this.isCheckedByRec(form, regx.substring(0,regx.indexOf(regxArray[regxArray.length-j-2]+"-"))) ){
						    var pDiv = regx.substring(0,regx.indexOf(regxArray[regxArray.length-j-2]+"-"));
						    if(form.getElementById(pDiv))
							    form.getElementById(pDiv).checked=false;
					    }
				    }
				    
				}
				
			}
		}

dTree.prototype.isCheckedByRec =function(form ,regx){
    var checkBoxs = form.getElementsByTagName('input');
    for (var i=0; i<checkBoxs.length; i++) {
	    var element = checkBoxs[i];
	    if (element.name == "id" && element.type=='checkbox'){
		    if(element.id.indexOf(regx)!=-1 && element.checked && element.id!=regx ){
			    return true;
		    }
	    }
    }
    return false;
}




/*
* dropList 1.0
* Copyright (c) 2008-2009 BOSSMA
* www.bossma.cn
* 2008-4-17
* Unlimited pull-down selection box.
* Support selects the item to preserve Cookies.
* This script can be used freely as long as all copyright messages are intact.
*/

//选择项
//参数依次为：显示文本、父级值、值、是否选中
function optionItem(text,parentvalue,value,selected){
  this.text=text;
  this.parentvalue=parentvalue;
  this.value=value;
  this.selected=selected;
};

//对象构造函数
//参数依次为：对象名称、父级ID、select元素、最顶级select的父值、是否使用cookie
function dropList(objName,formId,topid,topparent,iscookie){
  this.obj=objName;
  this.formid=formId;
  this.optionItems = [];
  this.selectItems = topid.split(',');
  this.topparent=topparent;
  this.usecookie = (iscookie==null)?true:iscookie;
};

//添加选择项
//参数依次为：显示文本、父级值、值、是否选中
dropList.prototype.add = function(text,parentvalue,value,selected){
  this.optionItems[this.optionItems.length] = new optionItem(text,parentvalue,value,selected);
};

//初始化
dropList.prototype.initcontrol = function(){
  
  //初始化填充select
  this.initselect("",this.topparent);
};

//设置select选项，并设置选中项，选中项Cookie优先
dropList.prototype.initselect = function(nowSelectId,parentValue){

      //如果parentid为空，则为最上级id
      if(nowSelectId==""){
        nowSelectId=this.selectItems[0];
      }
      
      //初始化select选择项
       var nowSelectItem = document.getElementById(nowSelectId);
	   nowSelectItem.length = 0;
	   nowSelectItem.options[nowSelectItem.length] = new Option(' - 请选择 - ','');
	   
	   if(nowSelectId == this.selectItems[0] || parentValue!=""){
	      for(i=0;i<this.optionItems.length; i++){
			    if (this.optionItems[i].parentvalue == parentValue){       
			       nowSelectItem.options[nowSelectItem.length] = new Option(this.optionItems[i].text, this.optionItems[i].value);
			       
			       if(this.optionItems[i].selected){
			          nowSelectItem.value = this.optionItems[i].value;
			       }
			    }
	      }
		   
		  if(this.usecookie){
              //设置当前select的选中项
	          if(this.getselect(nowSelectId)!=null&&this.getselect(nowSelectId)!=''){
			        nowSelectItem.value = this.getselect(nowSelectId);	 
	          }
	      }
	   }
	  
      //递归
	  var nextItemsIndex=this.selectItemIndex(nowSelectId) + 1;
	  
      if(nextItemsIndex<this.selectItems.length){
		   this.initselect(this.selectItems[nextItemsIndex],nowSelectItem.value);
	  }

};



//变换选择时填充
dropList.prototype.changelocation = function(parentid,childid){
  var nowParent = document.getElementById(parentid);
  var parentvalue=nowParent.options[nowParent.selectedIndex].value;
  var cookiename = this.obj + nowParent.id;
  this.setCookie(cookiename,parentvalue);
  
  if(childid!=''){
	  var nowChild = document.getElementById(childid);
	  var nowitems=0;
	  
	  for(j=0;j<this.selectItems.length;j++){
		 var tempSelect = document.getElementById(this.selectItems[j]);
		 if(tempSelect.id==nowParent.id){
			 nowitems=j;
			 break;
		 }
	  }
	  
	  nowitems = nowitems+1;
	  for(j=nowitems;j<this.selectItems.length;j++){
		  var tempSelect = document.getElementById(this.selectItems[j]);
		  tempSelect.length = 0;
		  cookiename = this.obj + tempSelect.id;
		  this.setCookie(cookiename,'');
		  tempSelect.options[0] = new Option(' - 请选择 - ','');
	  }
	  
	  nowChild.length = 0;
	  nowChild.options[nowChild.length] = new Option(' - 请选择 - ','');
	  
	  var i;
	
	  for(i=0;i<this.optionItems.length; i++){
		if (this.optionItems[i].parentvalue == parentvalue){
			nowChild.options[nowChild.length] = new Option(this.optionItems[i].text, this.optionItems[i].value);
		}
	  } 
  }	  
};

//从Cookie中获取当前select的选择项
dropList.prototype.getselect= function(nowid) {
	var sn = this.getCookie(this.obj+nowid);
	return (sn) ? sn : null;
};

//设置Cookie
dropList.prototype.setCookie = function(cookieName, cookieValue, expires, path, domain, secure) {

	document.cookie =
		escape(cookieName) + '=' + escape(cookieValue)
		+ (expires ? '; expires=' + expires.toGMTString() : '')
		+ (path ? '; path=' + path : '')
		+ (domain ? '; domain=' + domain : '')
		+ (secure ? '; secure' : '');
};

//获取Cookie
dropList.prototype.getCookie = function(cookieName) {

	var cookieValue = '';
	var posName = document.cookie.indexOf(escape(cookieName) + '=');
	if (posName != -1) {
		var posValue = posName + (escape(cookieName) + '=').length;
		var endPos = document.cookie.indexOf(';', posValue);
		if (endPos != -1) cookieValue = unescape(document.cookie.substring(posValue, endPos));
		else cookieValue = unescape(document.cookie.substring(posValue));
	}
	return (cookieValue);
};

//当前select在select数组中的位置
dropList.prototype.selectItemIndex = function(selectItemID){
    var nowitems = 0;
    for(j=0;j<this.selectItems.length;j++){
			var tempSelect = document.getElementById(this.selectItems[j]);
			if(tempSelect.id==selectItemID){
				 nowitems = j;
				 break;
			}
	}
	return nowitems;
}
