
KDZ.Menu = function(divid) {

 this.toString  = function() { return "[object KDZ.Menu]"; };

 this.Version= "1.0";
 this.jsbin = "/js-bin/getMenu.js";
 this.items = [];
 this.style	= "list";
 this.divid	= divid;// || "menudiv";
 this.stylerules = [];
 this.div	= "";

 this.List	= [];

 this.addStyleRule	= function(sel,styles) {
		var obj = {
			sel:"#" + this.divid + " " + sel,
			styles:styles
		};
		this.stylerules.push(obj);
		return this;
 };

 this.init = function() {
/*
	this.addStyleRule("ul.horiz",["margin: 0px"]);
	this.addStyleRule("ul.horiz li",["float:left","background: url(/Icons/box.blue.gif) no-repeat 0 0.3em","list-style-type: none","list-style-position:inside","position:relative","padding-left: 15px"]);
	this.addStyleRule("ul.horiz li ul",["padding: 0px","background-color:#FFFFFF","border:3px inset black","float:none","padding:5px","position:absolute","top:1.1em"]);
	this.addStyleRule("ul.horiz li a",["display: block","position: relative","float: left"]);
	this.addStyleRule("ul.horiz li ul li",["list-style-position:outside","background:none","float:none","list-style: none","padding-left:0"]);
	this.addStyleRule("ul.horiz li ul li a",["float:none"]);
*/
	this.addStyleRule("ul.horiz",["display:block;margin:0"]);
	this.addStyleRule("ul.horiz *",["display:inline"]);
	this.addStyleRule("ul.horiz li",["background: url(/Icons/box.blue.gif) no-repeat 0 0.3em","padding-left: 15px"]);
	this.addStyleRule("ul.horiz li ul",["padding: 0px","background-color:#FFFFFF","border:3px inset black","padding:5px","position:absolute","margin-top:1.1em","margin-left:-3.3em"]);
	this.addStyleRule("ul.horiz li ul li",["display:block","background:none","padding-left:0px","text-align:left","list-style:none"]);
	/* Vertical Menu CSS */
	this.addStyleRule("ul.list li ul",["padding: 0px","background-color:#FFFFFF","border:3px inset black","padding:5px","position:absolute","margin-top:-1.1em","margin-left:3.3em"]);
	this.addStyleRule("ul.list li ul li",["display:block","background:none","padding-left:0px","text-align:left","list-style:none"]);
	this._applyStyle();
 };

 this.build	= function() {
	if (!this.div) { this.div = document.getElementById(this.divid); }
	if (!this.div) { return 0; }
	var menudiv = this.div;
	PageData.clearElements(menudiv);
	var mainlist	= document.createElement("ul");
	mainlist.className = this.style;
//	divimg.src	= "/Icons/box.blue.gif";
	menudiv.appendChild(mainlist);
	for (var mIdx = 0; mIdx < this.List.length; mIdx++) {
		var menuitem	= this.List[mIdx];
		var list = mainlist;
		if (menuitem.data.category) {
			var parentmenuitem = this.getMenuItemByName(menuitem.data.category);
			if (!parentmenuitem) {
				parentmenuitem = new KDZ.Menu.Item({"text":menuitem.data.text}); 
				this.List.push(parentmenuitem);
//				parentmenuitem.list = mainlist;
			}
			if (!parentmenuitem.sublist) {
				var newlist = document.createElement("ul");
				parentmenuitem.sublist = newlist;
				parentmenuitem.sublist.style.display = "none";
				if (parentmenuitem.listitem) {
					parentmenuitem.listitem.sublist = parentmenuitem.sublist;
					parentmenuitem.listitem.appendChild(parentmenuitem.sublist);
/*
					parentmenuitem.listitem.onclick = function() {
						var display	= this.sublist.style.display;
						this.sublist.style.display = (display == "none") ? "" : "none";
					};
*/
					parentmenuitem.listitem.onmouseover = function() {
						this.sublist.style.display =  "";
					};
					parentmenuitem.listitem.onmouseout = function() {
						this.sublist.style.display = "none";
					};
				}
			}// else { alert("sublist: " + parentmenuitem.sublist); }
			list = parentmenuitem.sublist;
		}// else { alert("parentitem already exists"); }
		var listitem = this.createListItem(menuitem);
		menuitem.listitem = listitem;
		list.appendChild(listitem);
		if (menuitem.sublist) {
			listitem.appendChild(menuitem.sublist);
/*
			menuitem.listitem.onclick = function() {
				var display	= menuitem.sublist.style.display;
				menuitem.sublist.style.display = (display == "block") ? "none" : "block";
			};
*/
			menuitem.listitem.sublist = menuitem.sublist;
			menuitem.listitem.onmouseover = function() {
				this.sublist.style.display = "";
			};
			menuitem.listitem.onmouseout = function() {
				this.sublist.style.display = "none";
			};
		}
	}
	return menudiv;
 };

 this.createListItem	= function(menuitem) {
	var link = menuitem.data.link;
	var text = menuitem.data.text;
	var desc = menuitem.data.description || "";
	var listitem	= document.createElement("li");
//	divimg.src	= "/Icons/box.blue.gif";
	var itemtext	= document.createElement("a");
	if (PageData.thisurl == link) {
		itemtext.style.color	= "black";
		itemtext.style.fontWeight	= "bold";
		itemtext.removeAttribute("href");
	} else {
		itemtext.href	= (link) ? link : "javascript:void(0)";
	}
	itemtext.title = desc;
	itemtext.appendChild(document.createTextNode(text));
	listitem.appendChild(itemtext);
	return listitem;
 };

 this.addItem	= function(args) {
	var text	= args.text;
	var link	= args.link;
	if (!this.div) { this.div = document.getElementById(this.divid); }
	if (!this.div) { return 0; }
	var menudiv = this.div;
	var divimg	= document.createElement("IMG");
	divimg.src	= "/Icons/box.blue.gif";
	var itemtext	= document.createElement("A");
	if (PageData.thisurl == link) {
		itemtext.style.color	= "black";
		itemtext.style.fontWeight	= "bold";
	} else {
		itemtext.href	= link;
	}
	itemtext.appendChild(document.createTextNode(text));
	menudiv.appendChild(itemtext);
	menudiv.appendChild(divimg);
	return itemtext;
 };

 this.load	= function() {
	var args	= [];
	if (OIDAUTH) {
		args.push("userclaim=" + escape(OIDAUTH.authdata.toJSONString()));
	}
	AJAX.getJSON2(this.jsbin,args.join("&"),this,"loaded");
//	args.push("c=KDZ.Menu.loaded");
//	AJAX.createSRCtag("https://secure.kiddropzone.com" + this.jsbin,args.join("&"));
 };

 this.loaded	= function(obj) {
	var divid = this.divid;
	this.List = [];
	this.addItems(obj);
	this.build();
	this.onloaded(obj,divid);
 };

 this.addItems = function(obj) {
	for (var mIdx = 0; mIdx < obj.length; mIdx++) {
		var m = new KDZ.Menu.Item(obj[mIdx]);
		this.List.push(m);
	}
 };

 this.getMenuItemByName = function(name) {
	for (var mIdx = 0; mIdx < this.List.length; mIdx++) {
		var menu = this.List[mIdx];
		if (menu.data.text == name) {
			return menu;
		}
	}
	return 0;
 };

 this.onloaded = function(obj,divid) {};

 this.collectCategories	= function(obj,divid) {
 };

 this._applyStyle	= function() {
	var ss	= document.createElement("style");
	ss.setAttribute("type","text/css");
	ss.id	= this.divid + "stylesheet";
	document.getElementsByTagName("head")[0].appendChild(ss);
	for (var rIdx = 0; rIdx < this.stylerules.length; rIdx++) {
		var rule	= this.stylerules[rIdx];
		if (ss.sheet) {
			var ruletxt = rule.sel + "{" + rule.styles.join(";") + ";}";
			ss.sheet.insertRule(ruletxt,rIdx);
		} else {
			ss.styleSheet.addRule(rule.sel,rule.styles.join(";"),rIdx);
		}
	}
 };

 this.init();

 return this;

};
