﻿

function newDropMenu() {
	var target = this;
	this.typename = "lib.objects.lowensign.newDropMenu";

	this.navMenuVisiClass = "NavMenuVisi";
	this.navMenuHiddenClass = "NavMenuHidden";

	this.SuperNodeClosedClass = "NavTableItem";
	this.SuperNodeOpenClass = "NavTableItem_over";
	this.SuperNodeClosedLinkClass = "NavTableItemLink";

	this.FirstLevelClosedClass = "DropMenuContent";
	this.FirstLevelOpenClass = "NavTableListItemLink";
	this.FirstLevelLinkClass = "NavTableListItemLink_over";
	
	this.SecondLevelOpenClass = "DropMenuContent";
	this.SecondLevelLinkClass = "NavTableListItemLink";
	this.SecondLevelLinkOverClass = "NavTableListItemLink_over";

	this.showMenusAsOpen = false;
	this.expandLinkText = "ExpandLinkText";
	this.expandLinkIcon = "ExpandIcon";

	this.onload = function() { };	
	
	this.franchiseList = new Array();
	this.franchiseNames = new Object();

	/* in large catalogs, this takes a VERY long time to work */
	this.triggerAll = function() {
		var bOpen = (this.showMenusAsOpen == false);
		var i = 0;
		var l = this.franchiseList.length;
		var me;
		for (i; i < l; i++) {
			if (bOpen == true) {
				this.franchiseList[i].open(true);
			} else {
				this.franchiseList[i].close();
			}
		};
		this.setShowMenuAsOpen(bOpen == true);
	};

	this.setShowMenuAsOpen = function(val) {
		var text = getElem(this.expandLinkText);
		var icon = getElem(this.expandLinkIcon);
		this.showMenusAsOpen = val == true;
		setCookie("bShowMenuAsOpen", val, true);
		text.innerHTML = ((val == true) ? "Collapse All" : "Expand All");
		icon.innerHTML = ((val == true) ? "-" : "+");
	};

	this.closeSameLevel = function(obj) {
		if (obj.type == "item") { return; }
		var i = 0;
		var l = this.franchiseList.length;
		var me;
		for (i; i < l; i++) {
			me = this.franchiseList[i];
			if (!me.selected && me.opened) {
				me.close();
			};
		};
	};

	this.registerFranchiseNode = function(baseName, id) {
		if (!this.franchiseNames[baseName]) {
			var me = new menuItemObject();
			me.baseName = baseName;
			me.id = id;
			me.type = "super";
			me.index = this.franchiseList.length;
			me.parent = this;
			me.base = this;
			this.franchiseList[this.franchiseList.length] = me;
			this.franchiseNames[baseName] = me.index;
			return (me);
		} else {
			return (this.franchiseList[this.franchiseNames[baseName]]);
		};
	};

	this.registerItem = function(baseObject, baseName, type) {
		if (baseObject) {
			if (!baseObject[baseName]) {
				var me = new menuItemObject();
				me.baseName = baseName;
				me.type = type;
				me.index = baseObject.list.length;
				me.parent = baseObject;
				me.base = this;
				baseObject.list[baseObject.list.length] = me;
				baseObject[baseName] = me.index;
				return (me);
			} else {
				return (baseObject[baseName]);
			}
		} else {
			trace("holder: " + baseName + " - not found");
		};
	};

	this._onpageload = function() {
		if (this.franchiseList.length > -1) {
			var i = 0;
			var l = this.franchiseList.length;
			if (l == 1) {
				this.franchiseList[0].orphan = true;
			}
			for (i; i < l; i++) {
				this.franchiseList[i].initChildren();
			};
		};
		this.onload();
	};

	this.constructor = function() {
		this.franchiseNames.count = 0;
		AddListener(window, "load", function() {
			target._onpageload();
		});
	};
	this.constructor();
};


window.menuItemObject = function() {
	var target = this;
	this.base = undefined;
	this.offSet = 0;
	this.orphan = false;
	this.typename = "lib.object.lowensign.menuItemObject";
	this.baseName = "";
	this.type = "";
	this.label = "";
	this.index = 0;
	this.list = new Array();
	this.visable = true;
	this.opened = true;
	this.parent = undefined;
	this.selected = false;

	this.hideHeader = false;

	this.initChildren = function() {
		this.wrapper = getElem(this.baseName + ".wrapper");
		this.title = getElem(this.baseName + ".title");
		this.holder = getElem(this.baseName + ".holder");
		this.link = getElem(this.baseName + ".link");


		if (this.type != "super") {
			this.offSet = 0;
		};

		/* set the menu items "appearance" */
		if ((this.type == "super" && this.orphan) || (this.type == "super" && this.hideHeader)) {
			if (this.title) {
				this.title.className = this.base.navMenuHiddenClass;
			};
		} else if ((this.type == "super" && !this.orphan) || (this.type == "cat" && this.parent.orphan)) {
			this.title.className = this.base.SuperNodeClosedClass;
			this.link.className = this.base.SuperNodeClosedLinkClass;
		} else if (this.type == "cat" && !this.parent.orphan) {
		
			if (this.parent.hideHeader) {
				this.title.className = this.base.SuperNodeClosedClass;
				this.link.className = this.base.SuperNodeClosedLinkClass;
			} else {
				this.title.className = this.base.FirstLevelClosedClass;
				this.link.className = this.base.FirstLevelLinkClass;
			}
			
		} else if (this.type == "item") {
			if (this.selected) {
				this.link.className = this.base.SecondLevelLinkOverClass;
			} else {
				this.link.className = this.base.SecondLevelLinkClass;
			};
		};

		/* close all menues that should be closed */
		if (this.type == "super" || (this.type == "cat" && this.parent.orphan)) {
			if (this.type == "super" && !this.orphan) {
				if (!this.selected) {
					if ((this.type == "super" && this.hideHeader != true) || (this.type == "cat" && this.parent.hideHeader != false)) {
						this.close();
					};
				};
			} else if (this.type == "cat" && this.parent.orphan) {
				if (!this.selected || !this.parent.selected) {
					if (this.hideHeader != true) {
						this.close();
					};
				};
			};
		} else {
			if (!this.selected || !this.parent.selected) {
				this.close();
			};
		};

		if (this.link) {
			this.link.onclick = function() {
				this.blur();
				if (target.list.length > 0) {
					if (target.opened) {
						target.close();
					} else {
						target.closeSameLevel(target);
						target.open();
					};
					return (false);
				};
			};
		};
		var i = 0;
		var l = this.list.length;

		for (i; i < l; i++) {
			this.list[i].initChildren();
		};
	};

	this.closeSameLevel = function(obj) {
		if (this != obj) {
			if (obj.type == "item") { return; }
			var i = 0;
			var l = this.list.length;
			var me;
			for (i; i < l; i++) {
				me = this.list[i];
				if (!me.selected && me.opened) {
					me.close();
				};
			};
		} else {
			this.parent.closeSameLevel(this);
		}
	};

	this.hide = function() {
		if (this.type == "item") { return; }
		if (this.wrapper) {
			this.wrapper.className = this.base.navMenuHiddenClass;
			this.visable = false;
		};
	};

	this.show = function() {
		if (this.type == "item") { return; }
		if (this.wrapper) {
			this.wrapper.className = this.base.navMenuVisiClass;
			this.visable = true;
		};
	};

	this.open = function(bOpenAll) {
		if (!this.visable) {
			this.show();
		};
		if (this.holder) {
			this.holder.className = this.base.navMenuVisiClass;
			this.opened = true;
		};

		if (bOpenAll && this.type != "item") {
			var i = 0;
			var l = this.list.length;
			var me;
			for (i; i < l; i++) {
				this.list[i].open(bOpenAll);
			};
		};
	};

	this.close = function() {
	if (this.type == "item") { return; }
		if (this.holder && !this.hideHeader) {
			this.holder.className = this.base.navMenuHiddenClass;
			this.opened = false;
		};
		var i = 0;
		var l = this.list.length;
		var me;
		for (i; i < l; i++) {
			this.list[i].close();
		};
	};
};