//**************************************************************//
// Version: 2.0
// Author:  JY
// Use cookie to remember the state of the menu so that this 
// menu can be used in a non-frame page.
//**************************************************************//

//var FOLDER_STYLE_MOUT
//var LEAF_STYLE_MOUT
var level = 0;

/////////////////// Menu Class //////////////////////
function Menu() {
	this.menuItems = new Array();

	this.add = mnAdd;
	this.createMenu = mnCreateMenu;
}

function mnAdd(item) {
	var length = this.menuItems.length;
	this.menuItems[length] = item;
}

function mnCreateMenu() {
	document.write("<div style='padding-left:3px;'>");
	for (var i = 0; i < this.menuItems.length; i++) {
		this.menuItems[i].createMenuItem();
	}
	document.write("</div>");
}


/////////////////// MenuItem Class ////////////////////////
function MenuItem(name, label, url, target) {
	this.name 		= name;
	this.label 		= label;
	this.url 		= url;
	this.target		= target;
	this.menuItems 	= new Array();

	this.add = miAdd;
	this.createMenuItem = miCreateMenuItem;
}

function miCreateMenuItem() {
	var isFolder = false;
	if (this.menuItems.length > 0) {
		isFolder = true;
	}

	document.write("<div>");
	if (isFolder) {
		var cookieState = getCookie(this.name);
		cookieState = (cookieState == null || cookieState == "") ? "none" : cookieState;
		var menuItemState = cookieState;
		var imageState = menuItemState == "none" ? FOLDER_IMAGE_FOLD : FOLDER_IMAGE_OPEN;
		
		document.write("<div NODE_TYPE='foldheader' style='" + FOLDER_STYLE + "' onMouseOver='handleMouseOver()' onMouseOut='handleMouseOut()' onClick='toggleMenu()'>");
		document.write("<table cellpading='0' cellspacing='0' border='0' style='" + FOLDER_STYLE + "'>");
		document.write("<tr><td width='1' valign='top'>");
		document.write("<img src='" + imageState + "' border='0'/>&nbsp;");
		document.write("</td><td valign='top'>");
		if (!isEmptyString(this.url)) {
			document.write("<a href='" + this.url + "'");
			if (!isEmptyString(this.target)) {
				document.write(" target='" + this.target + "'");
			}
			document.write(">");
			document.write(this.label);
			document.write("</a>");
		}
		else {
			document.write(this.label);
		}
		document.write("</td></tr></table>");
		document.write("</div>");

		document.write("<div name=" + this.name + " id=" + this.name + " NODE_TYPE='foldinglist' style='display:" + menuItemState + ";margin-left:10px;'>");
		for (var i = 0; i < this.menuItems.length; i++) {
			this.menuItems[i].createMenuItem();
		}
		document.write("</div>");
	}
	else {
		document.write("<div NODE_TYPE='leaf' style='" + LEAF_STYLE + "'  onMouseOver='handleMouseOver()' onMouseOut='handleMouseOut()'>");
		document.write("<table cellpading='0' cellspacing='0' border='0' style='" + LEAF_STYLE + "'>");
		document.write("<tr><td width='1' valign='top'>");
		document.write("<img src='" + LIST_IMAGE + "' border='0'/>&nbsp;");
		document.write("</td><td valign='top'>");		
		if (!isEmptyString(this.url)) {
			document.write("<a href='" + this.url + "'");
			if (!isEmptyString(this.target)) {
				document.write(" target='" + this.target + "'");
			}
			document.write(">");
			document.write(this.label);
			document.write("</a>");
		}
		else {
			document.write(this.label);
		}
		document.write("</td></tr></table>");
		document.write("</div>");
	}
	document.write("</div>");
}

function miAdd(item) {
	var length = this.menuItems.length;
	this.menuItems[length] = item;
}


////////////////////////// Util ///////////////////////////////////
function isEmptyString(s) {
	if (s == null || trim(s) == "") return true;
	return false;
}

function trim(str) {
   return str.replace(/^\s*|\s*$/g,"");
}



//////////////////////// Event handler /////////////////////////////
var ns6 = document.getElementById && ! document.all;
var ie4 = document.all && navigator.userAgent.indexOf("Opera") == -1;

function handleMouseOver() {
	var src = ns6 ? e.target : event.srcElement;
	src.style.color = "red";
	//src.style.textDecoration = "underline";
}

function handleMouseOut() {
	var src = ns6 ? e.target : event.srcElement;
	//src.style.color = "#833E41";
	src.style.color = MOUSE_OUT_COLOR;
	//src.style.textDecoration = "underline";
}

function toggleMenu(e) {
	var iscontained = 0;
	var cur = ns6 ? e.target : event.srcElement;

	if (cur.NODE_TYPE == "foldheader") {
		iscontained = 1;
	}
	else {
		while (ns6 && cur.parentNode || (ie4 && cur.parentElement)) {
			if (cur.NODE_TYPE == "foldheader" || cur.NODE_TYPE == "foldinglist") {
				iscontained = (cur.NODE_TYPE == "foldheader") ? 1 : 0;
				break;
			}
			cur = ns6 ? cur.parentNode : cur.parentElement;
		}
	}

	if (iscontained) {
		//var foldercontent = ns6 ? cur.nextSibling.nextSibling : cur.all.tags("DIV")[0];
		//var foldercontent = cur.all.tags("DIV")[0];
		var foldercontent = cur.nextSibling;
		if (foldercontent.style.display == "none") {
			foldercontent.style.display ="block";
			cur.all.tags("IMG")[0].src = FOLDER_IMAGE_OPEN;
			setCookie(foldercontent.name, "block");
			
		}
		else{
			foldercontent.style.display="none";
			cur.all.tags("IMG")[0].src = FOLDER_IMAGE_FOLD;
			setCookie(foldercontent.name, "none");
		}
	}
	
	//alert(document.cookie);
}


//////////////////////// Cookie Management /////////////////////////////
function setCookie(name, value, expires, path, domain, secure) {
    document.cookie= name + "=" + escape(value) +
        ((expires) ? "; expires=" + expires.toGMTString() : "") +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "");
}

function getCookie(name) {
    var dc = document.cookie;
    var prefix = name + "=";
    var begin = dc.indexOf("; " + prefix);
    if (begin == -1) {
        begin = dc.indexOf(prefix);
        if (begin != 0) return null;
    } else {
        begin += 2;
    }
    var end = document.cookie.indexOf(";", begin);
    if (end == -1) {
        end = dc.length;
    }
    return unescape(dc.substring(begin + prefix.length, end));
}

function deleteCookie(name, path, domain) {
    if (getCookie(name)) {
        document.cookie = name + "=" +
            ((path) ? "; path=" + path : "") +
            ((domain) ? "; domain=" + domain : "") +
            "; expires=Thu, 01-Jan-70 00:00:01 GMT";
    }
}



////////////////////////////////////////////////////////////////////////
//if (ie4||ns6) {
//	document.onclick = toggleMenu;
//}

//alert(document.cookie);