var persisteduls=new Object()
var ddtreemenu=new Object()
var Node=new Array()
ddtreemenu.closefolder="images/folder.gif" //set image path to "closed" folder image
ddtreemenu.openfolder="images/folderopen.gif" //set image path to "open" folder image


//////////No need to edit beyond here///////////////////////////

ddtreemenu.createTree=function(treeid, enablepersist, persistdays){
	if(Request.QueryString("ItemID")=="17")
	Clearcookie();
var ultags=document.getElementById(treeid).getElementsByTagName("ul")
if (typeof persisteduls[treeid]=="undefined")
persisteduls[treeid]=(enablepersist==true && ddtreemenu.getCookie(treeid)!="")? ddtreemenu.getCookie(treeid).split(",") : ""
for (var i=0; i<ultags.length; i++)
ddtreemenu.buildSubTree(treeid, ultags[i], i)
if (enablepersist==true){ //if enable persist feature
var durationdays=(typeof persistdays=="undefined")? 1 : parseInt(persistdays)
ddtreemenu.dotask(window, function(){ddtreemenu.rememberstate(treeid, durationdays)}, "unload") //save opened UL indexes on body unload
}
}

ddtreemenu.buildSubTree=function(treeid, ulelement, index){
ulelement.parentNode.className="submenu"
if (typeof persisteduls[treeid]=="object"){ //if cookie exists (persisteduls[treeid] is an array versus "" string)
if (ddtreemenu.searcharray(persisteduls[treeid], index)){
ulelement.setAttribute("rel", "open")
ulelement.style.display="block"
ulelement.parentNode.style.backgroundImage="url("+ddtreemenu.openfolder+")"
}
else
ulelement.setAttribute("rel", "closed")
} //end cookie persist code
else if (ulelement.getAttribute("rel")==null || ulelement.getAttribute("rel")==false) //if no cookie and UL has NO rel attribute explicted added by user
ulelement.setAttribute("rel", "closed")
else if (ulelement.getAttribute("rel")=="open") //else if no cookie and this UL has an explicit rel value of "open"
ddtreemenu.expandSubTree(treeid, ulelement) //expand this UL plus all parent ULs (so the most inner UL is revealed!)
ulelement.parentNode.onclick=function(e){
var submenu=this.getElementsByTagName("ul")[0]
if (submenu.getAttribute("rel")=="closed"){
	//	submenu.parentNode.childNodes.item(0).style.background=ddtreemenu.selectcolor();
		submenu.parentNode.childNodes.item(0).style.color="#000000";
	submenu.style.display="block"
	submenu.setAttribute("rel", "open")
	ulelement.parentNode.style.backgroundImage="url("+ddtreemenu.openfolder+")"
	ddtreemenu.NodeColl(submenu);
	ddtreemenu.CloseNode();
} 
else if (submenu.getAttribute("rel")=="open"){

	submenu.parentNode.childNodes.item(0).style.color="#000000";
	submenu.style.display="none"
	submenu.setAttribute("rel", "closed")
	ulelement.parentNode.style.backgroundImage="url("+ddtreemenu.closefolder+")"
}

ddtreemenu.preventpropagate(e)
}
ulelement.parentNode.onkeyup=function(e){	
var submenu=this.getElementsByTagName("ul")[0]
if (submenu.getAttribute("rel")=="closed" && event.keyCode ==9)
{
			      var curNode=this.getElementsByTagName("ul")[0]
					var preParentNode=event.srcElement.parentNode.parentNode.parentNode.previousSibling; 
					if (preParentNode != null )
					{
					    var alltoClose=preParentNode.childNodes;
					    if(alltoClose != null)
					    {						
						  for(var i=0; i<alltoClose.length;i++)
						  {
						    if((alltoClose[i].nodeName == "UL") && (alltoClose[i].style.display =="block") )
						     {
							   alltoClose[i].style.display ="none";
							   submenu.setAttribute("rel", "close")
							    ulelement.parentNode.style.backgroundImage="url("+ddtreemenu.closefolder+")"
							
						     }
					       }
					     }
						
					}
					submenu.style.display="block"
					//ulelement.parentNode.style.backgroundImage="url("+ddtreemenu.openfolder+")"

/*submenu.style.display="block"
submenu.setAttribute("rel", "open")
ulelement.parentNode.style.backgroundImage="url("+ddtreemenu.openfolder+")"
ddtreemenu.NodeColl(submenu);
ddtreemenu.CloseNode1();*/
}
ddtreemenu.preventpropagate(e)
}
ulelement.onclick=function(e){
ddtreemenu.preventpropagate(e)
}
}

ddtreemenu.expandSubTree=function(treeid, ulelement){ //expand a UL element and any of its parent ULs
var rootnode=document.getElementById(treeid)
var currentnode=ulelement
currentnode.style.display="block"
currentnode.parentNode.style.backgroundImage="url("+ddtreemenu.openfolder+")"
while (currentnode!=rootnode){
if (currentnode.tagName=="UL"){ //if parent node is a UL, expand it too
currentnode.style.display="block"
currentnode.setAttribute("rel", "open") //indicate it's open
currentnode.parentNode.style.backgroundImage="url("+ddtreemenu.openfolder+")"
}
currentnode=currentnode.parentNode
}
}

ddtreemenu.flatten=function(treeid, action){ //expand or contract all UL elements
var ultags=document.getElementById(treeid).getElementsByTagName("ul")
for (var i=0; i<ultags.length; i++){
ultags[i].style.display=(action=="expand")? "block" : "none"
var relvalue=(action=="expand")? "open" : "closed"
ultags[i].setAttribute("rel", relvalue)
ultags[i].parentNode.style.backgroundImage=(action=="expand")? "url("+ddtreemenu.openfolder+")" : "url("+ddtreemenu.closefolder+")"
}
}

ddtreemenu.rememberstate=function(treeid, durationdays){ //store index of opened ULs relative to other ULs in Tree into cookie
var ultags=document.getElementById(treeid).getElementsByTagName("ul")
var openuls=new Array()
for (var i=0; i<ultags.length; i++){
if (ultags[i].getAttribute("rel")=="open")
openuls[openuls.length]=i //save the index of the opened UL (relative to the entire list of ULs) as an array element
}
if (openuls.length==0) //if there are no opened ULs to save/persist
openuls[0]="none open" //set array value to string to simply indicate all ULs should persist with state being closed
ddtreemenu.setCookie(treeid, openuls.join(","), durationdays) //populate cookie with value treeid=1,2,3 etc (where 1,2... are the indexes of the opened ULs)
}

////A few utility functions below//////////////////////

ddtreemenu.getCookie=function(Name){ //get cookie value
var re=new RegExp(Name+"=[^;]+", "i"); //construct RE to search for target name/value pair
if (document.cookie.match(re)) //if cookie found
return document.cookie.match(re)[0].split("=")[1] //return its value
return ""
}

ddtreemenu.setCookie=function(name, value, days){ //set cookei value
var expireDate = new Date()
//set "expstring" to either future or past date, to set or delete cookie, respectively
var expstring=expireDate.setDate(expireDate.getDate()+parseInt(days))
document.cookie = name+"="+value+"; expires="+expireDate.toGMTString()+"; path=/";
}

ddtreemenu.searcharray=function(thearray, value){ //searches an array for the entered value. If found, delete value from array
var isfound=false
for (var i=0; i<thearray.length; i++){
if (thearray[i]==value){
isfound=true
thearray.shift() //delete this element from array for efficiency sake
break
}
}
return isfound
}

ddtreemenu.preventpropagate=function(e){ //prevent action from bubbling upwards
if (typeof e!="undefined")
e.stopPropagation()
else
event.cancelBubble=true
}

ddtreemenu.dotask=function(target, functionref, tasktype){ //assign a function to execute to an event handler (ie: onunload)
var tasktype=(window.addEventListener)? tasktype : "on"+tasktype
if (target.addEventListener)
target.addEventListener(tasktype, functionref, false)
else if (target.attachEvent)
target.attachEvent(tasktype, functionref)
}


ddtreemenu.CloseNode=function(){//自動關閉其它節點
	var ultags=document.getElementById("treemenu2").getElementsByTagName("ul")
	//alert(Node.length);
	for (var i=0; i<ultags.length; i++){
		for (var j=0; j<Node.length; j++){
				//alert(Node[j]);
			if(Node[j]!=ultags[i].id  )
			{
				//alert(ultags[i].id);
				ultags[i].style.display="none"
				ultags[i].setAttribute("rel", "closed")
				ultags[i].parentNode.style.backgroundImage="url("+ddtreemenu.closefolder+")"
			}
			else
			{
				ultags[i].style.display="block"
				ultags[i].setAttribute("rel", "open")
				break;
			}
		}
	}
	Node.length=0;
}
ddtreemenu.SelectNode=function( litags){//選擇被點選的節點
	try{
	
	for (var i=0; i<litags.item.length; i++){
		if(window.location==litags.item(i).childNodes.item(0).href)
			litags.item(i).childNodes.item(0).innerHTML="．"+litags.item(i).childNodes.item(0).innerHTML;
	}
	}catch(e){
			//alert(e.message);
		}

}
ddtreemenu.NodeColl=function(node){
	
	if(node.id!="treemenu2" ){
		if(node.id!=""){
		
		Node[Node.length]=node.id;
		}
		ddtreemenu.NodeColl(node.parentNode);
	
	}
}


function RObj(ea) {
	var LS	= "";
	var QS	= new Object();
	var un	= "undefined";
	var x	= null; // On platforms that understand the 'undefined' keyword replace 'null' with 'undefined' for maximum ASP-like behaviour.
	var f	= "function";
	var n	= "number";
	var r	= "string";
	var e1	= "ERROR: Index out of range in\r\nRequest.QueryString";
	var e2	= "ERROR: Wrong number of arguments or invalid property assignment\r\nRequest.QueryString";
	var e3	= "ERROR: Object doesn't support this property or method\r\nRequest.QueryString.Key";
	var dU	= window.decodeURIComponent ? 1 : 0;

	function Err(arg) {
		if (ea) {
			alert("Request Object:\r\n" + arg);
		}
	}
	function URID(t) {
		var d = "";
		if (t) {
			for (var i = 0; i < t.length; ++i) {
				var c = t.charAt(i);
				d += (c  ==  "+" ? " " : c);
			}
		}
		return (dU ? decodeURIComponent(d) : unescape(d));
	}
	function OL(o) {
		var l = 0;
		for (var i in o) {
			if (typeof o[i] != f) {
				l++;
			}
		}
		return l;
	}
	function AK(key) {
		var auk = true;
		for (var u in QS) {
			if (typeof QS[u] != f && u.toString().toLowerCase() == key.toLowerCase()) {
				auk = false;
				return u;
			}
		}
		if (auk) {
			QS[key] = new Object();
			QS[key].toString = function() {
				return TS(QS[key]);
			}
			QS[key].Count = function() {
				return OL(QS[key]);
			}
			QS[key].Count.toString = function() {
				return OL(QS[key]).toString();
			}
			QS[key].Item = function(e) {
				if (typeof e == un) {
					return QS[key];
				}
				else {
					if (typeof e == n) {
						var a = QS[key][Math.ceil(e)];
						if (typeof a == un) {
							Err(e1 + "(\"" + key + "\").Item(" + e + ")");
						}
						return a;
					}
					else {
						Err("ERROR: Expecting numeric input in\r\nRequest.QueryString(\"" + key + "\").Item(\"" + e + "\")");
					}
				}
			}
			QS[key].Item.toString = function(e) {
				if (typeof e == un) {
					return QS[key].toString();
				}
				else {
					var a = QS[key][e];
					if (typeof a == un) {
						Err(e1 + "(\"" + key + "\").Item(" + e + ")");
					}
					return a.toString();
				}
			}
			QS[key].Key = function(e) {
				var t = typeof e;
				if (t == r) {
					var a = QS[key][e];
					return (typeof a != un && a && a.toString() ? e : "");
				}
				else {
					Err(e3 + "(" + (e ? e : "") + ")");
				}
			}
			QS[key].Key.toString = function() {
				return x;
			}
		}
		return key;
	}
	function AVTK(key, val) {
		if (key != "") {
			var key = AK(key);
			var l = OL(QS[key]);
			QS[key][l + 1] = val;
		}
	}
	function TS(o) {
		var s = "";
		for (var i in o) {
			var ty = typeof o[i];
			if (ty == "object") {
				s += TS(o[i]);
			}
			else if (ty != f) {
				s += o[i] + ", ";
			}
		}
		var l = s.length;
		if (l > 1) {
			return (s.substring(0, l-2));
		}
		return (s == "" ? x : s);
	}
	function KM(k, o) {
		var k = k.toLowerCase();
		for (var u in o) {
			if (typeof o[u] != f && u.toString().toLowerCase() == k) {
				return u;
			}
		}
	}
	if (window.location && window.location.search) {
		LS = window.location.search;
		var l = LS.length;
		if (l > 0) {
			LS = LS.substring(1,l);
			var preAmpAt = 0;
			var ampAt = -1;
			var eqAt = -1;
			var k = 0;
			var skip = false;
			for (var i = 0; i < l; ++i) {
				var c = LS.charAt(i);
				if (LS.charAt(preAmpAt) == "=" || (preAmpAt == 0 && i == 0 && c == "=")) {
					skip=true;
				}
				if (c == "=" && eqAt == -1 && !skip) {
					eqAt=i;
				}
				if (c == "&" && ampAt == -1) {
					if (eqAt!=-1) {
						ampAt=i;
					}
					if (skip) {
						preAmpAt = i + 1;
					}
					skip = false;
				}
				if (ampAt>eqAt) {
					AVTK(URID(LS.substring(preAmpAt, eqAt)), URID(LS.substring(eqAt + 1, ampAt)));
					preAmpAt = ampAt + 1;
					eqAt = ampAt = -1;
					++k;
				}
			}
			if (LS.charAt(preAmpAt) != "=" && (preAmpAt != 0 || i != 0 || c != "=")) {
				if (preAmpAt != l) {
					if (eqAt != -1) {
						AVTK(URID(LS.substring(preAmpAt,eqAt)), URID(LS.substring(eqAt + 1,l)));
					}
					else if (preAmpAt != l - 1) {
						AVTK(URID(LS.substring(preAmpAt, l)), "");
					}
				}
				if (l == 1) {
					AVTK(LS.substring(0,1),"");
				}
			}
		}
	}
	var TC = OL(QS);
	if (!TC) {
		TC=0;
	}
	QS.toString = function() {
		return LS.toString();
	}
	QS.Count = function() {
		return (TC ? TC : 0);
	}
	QS.Count.toString = function() {
		return (TC ? TC.toString() : "0");
	}
	QS.Item = function(e) {
		if (typeof e == un) {
			return LS;
		}
		else {
			if (typeof e == n) {
				var e = Math.ceil(e);
				var c = 0;
				for (var i in QS) {
					if (typeof QS[i] != f && ++c == e) {
						return QS[i];
					}
				}
				Err(e1 + "().Item(" + e + ")");
			}
			else {
				return QS[KM(e, QS)];
			}
		}
		return x;
	}
	QS.Item.toString = function() {
		return LS.toString();
	}
	QS.Key = function(e) {
		var t = typeof e;
		if (t == n) {
			var e = Math.ceil(e);
			var c = 0;
			for (var i in QS) {
				if (typeof QS[i] != f && ++c == e) {
					return i;
				}
			}
		}
		else if (t == r) {
			var e = KM(e, QS);
			var a = QS[e];
			return (typeof a != un && a && a.toString() ? e : "");
		}
		else {
			Err(e2 + "().Key(" + (e ? e : "") + ")");
		}
		Err(e1 + "().Item(" + e + ")");
	}
	QS.Key.toString = function() {
		Err(e2 + "().Key");
	}
	this.QueryString = function(k) {
		if (typeof k == un) {
			return QS;
		}
		else {
			if (typeof k == n) {
				return QS.Item(k);
			}
			var k = KM(k, QS);
			if (typeof QS[k] == un) {
				t = new Object();
				t.Count = function() {
					return 0;
				}
				t.Count.toString = function() {
					return "0";
				}
				t.toString = function() {
					return x;
				}
				t.Item = function(e) {
					return x;
				}
				t.Item.toString = function() {
					return x;
				}
				t.Key = function(e) {
					Err(e3 + "(" + (e ? e : "") + ")");
				}
				t.Key.toString = function() {
					return x;
				}
				return t;
			}
			else {
				return QS[k];
			}
		}
	}
	this.QueryString.toString = function() {
		return LS.toString();
	}
	this.QueryString.Count = function() {
		return (TC ? TC : 0);
	}
	this.QueryString.Count.toString = function() {
		return (TC ? TC.toString() : "0");
	}
	this.QueryString.Item = function(e) {
		if (typeof e == un) {
			return LS.toString();
		}
		else {
			if (typeof e == n) {
				var e = Math.ceil(e);
				var c = 0;
				for (var i in QS) {
					if (typeof QS[i] != f && ++c == e) {
						return QS[i];
					}
				}
				Err(e1 + ".Item(" + e + ")");
			}
			else {
				return QS[KM(e, QS)];
			}
		}
		if (typeof e == n) {
			Err(e1 + ".Item(" + e + ")");
		}
		return x;
	}
	this.QueryString.Item.toString = function() {
		return LS.toString();
	}
	this.QueryString.Key = function(e) {
		var t = typeof e;
		if (t == n) {
			var e = Math.ceil(e);
			var c = 0;
			for (var i in QS) {
				if (typeof QS[i] == "object" && (++c == e)) {
					return i;
				}
			}
		}
		else if (t == r) {
			var e = KM(e, QS);
			var a = QS[e];
			return (typeof a != un && a && a.toString() ? e : "");
		}
		else {
			Err(e2 + ".Key(" + (e ? e : "") + ")");
		}
		Err(e1 + ".Item(" + e + ")");
	}
	this.QueryString.Key.toString = function() {
		Err(e2 + ".Key");
	}
	this.Version = 1.4;
	this.Author = "Andrew Urquhart (http://www.google.com.tw/)";
}
var Request = new RObj(false);
function dc(name) {  //f除名oname的Cookie  
    var exp = new Date();    
    exp.setTime (exp.getTime() - 1);    
    var cval = GetCookie (name);    
    document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString();  
}  
function Clearcookie()   //清除COOKIE  
    {  
    var temp=document.cookie.split(";");  
    var loop3;  
    var ts;  
    for (loop3=0;loop3<temp.length;loop3++)        {  
        ts=temp[loop3].split("=")[0];  
        dc(ts);     
        
        }   
    }  

function GetCookie(name) {  //取得名oname的cookie值  
        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 getCookieVal (j);      
                i = document.cookie.indexOf(" ", i) + 1;      
                if (i == 0) break;     
        }    
        return null;  
}

function getCookieVal (offset) {       //取得它Wooffset的cookie值  
    var endstr = document.cookie.indexOf (";", offset);    
    if (endstr == -1)  
        endstr = document.cookie.length;    
        return unescape(document.cookie.substring(offset, endstr));  
}  

