// JavaScript Document
function chainSelectSwitch(element) {
	var object = eval(element.getAttribute("id"));
	var active = null;
	var action = null;
	var target = null;
	for (var i = 0; i < object.field.length; i++) {
		if (object.field[i].name.toLowerCase() == element.name.toLowerCase()) {
			element = object.field[i];
			if (++i < object.field.length) {
				target = object.field[i];
				if (target.style.visibility == "hidden") {
					target.style.visibility = "visible";
				}
			}
			i = object.field.length;
		}
	}
	for (var i = 0; i < object.cswt.length; i++) {
		if (object.cswt[i]) {
			if (object.cswt[i].name == element.name) {
				var cswa = object.cswt[i].cswa;
				for (var j = 0; j < cswa.length; j++) {
					if (cswa[j].substr(cswa[j].length - 1,1) != ";") cswa[j] += ";";
					if (document.all) eval(cswa[j].replace("CMSL:this","getFormSelectElement(" + element.getAttribute("id") + ".field,'" + element.name + "')"));
					else eval(cswa[j].replace("CMSL:this",'document.getElementsByName("' + element.name + '")[0]'));
				}
				object.cswt[i] = object.cswt[i].name = null;
				k = object.cswt.length;
			}
		}
	}
	action = element.options[element.options.selectedIndex];
	for (var i = 0; i < object.menu.length; i++) {
		var current = object.menu[i];
		for (var j = 0; j < current.list.length; j++) {
			if (action.text.toLowerCase() == current.list[j].name.toLowerCase()) {
				if (action.value.toLowerCase() == current.list[j].value.toLowerCase()) {
					active = current.list[j].chain;
					j = current.list.length; i = object.menu.length;
				}
			}
		}
	}
	if (active) {
		for (var i = 0; i < object.menu.length; i++) {
			if (object.menu[i].name.toLowerCase() == active.toLowerCase()) {
				var num = target.options.length;
				for (var j = 0; j < num; j++) {
					target.options[j] = null;
				} target.options.length = 0;
				active = object.menu[i];
				for (var j = 0; j < active.list.length; j++) {
					if (active.list[j]) {
						if (active.list[j].name.toUpperCase() == "CMSL:SWITCH") {
							var cswt = null;
							for (var k = 0; k < object.cswt.length; k++) {
								if (object.cswt[k]) {
									if (object.cswt[k].name == element.name) {
										cswt = object.cswt[k];
										k = object.cswt.length;
									}
								}
							}
							if (!cswt) {
								object.cswt[object.cswt.length] = cswt = new CSWT_Object(element.name);
							}
							cswt.cswa[cswt.cswa.length] = active.list[j].value;
						} else if (active.list[j].name.toUpperCase() == "CMSL:EVENT") {
							if (active.list[j].value.toUpperCase() == "HIDE") {
								target.style.visibility = "hidden";
							}
						} else if (active.list[j].name.toUpperCase() == "CMSL:ALERT") {
							alert(active.list[j].value);
						} else if (active.list[j].name.toUpperCase() == "CMSL:JAVASCRIPT") {
							if (active.list[j].value.substr(active.list[j].value.length - 1,1) != ";") active.list[j].value += ";";
							if (document.all) eval(active.list[j].value.replace("CMSL:this","getFormSelectElement(" + element.getAttribute("id") + ".field,'" + element.name + "')"));
							else eval(active.list[j].value.replace("CMSL:this",'document.getElementsByName("' + element.name + '")[0]'));
						} else {
							target.options[target.options.length] = new Option(active.list[j].name,active.list[j].value);
						}
					}
				}
				i = object.menu.length;
			}
		}
	}
}

function chainMasterMenu(form,field) {
	this.cswt = Array();
	this.form = form;
	this.field = field;
	this.menu = Array();
	this.addMenu = chainSelect_addMenu;
	this.delMenu = chainSelect_delMenu;
	this.addMenu_Option = function(m,n,v,c) {
		for (var i = 0; i < this.menu.length; i++) {
			if (this.menu[i].name.toLowerCase() == m.toLowerCase()) {
				this.menu[i].addOption(n,v,c);
				i = this.menu.length;
			}
		}
	};
	this.build = chainSelect_build;
	this.output = function(type) {
		var html = "";
		for (var i = 0; i < this.field.length; i++) {
			html += "<select name=\"" + field[i].name + "\"></select>" + ((type == "h")?" &nbsp; ":"<br />");
		}
		return html;
	};
	this.init = function(name) {
		for (var i = 0; i < this.menu.length; i++) {
			if (this.menu[i].name.toLowerCase() == name.toLowerCase()) {
				for (var j = 0; j < this.menu[i].list.length; j++) {
					if (this.menu[i].list[j]) this.field[0].options[this.field[0].options.length] = new Option(this.menu[i].list[j].name,this.menu[i].list[j].value);
				}
			} i = this.menu.length;
		}
	};
}

function chainSelect_addMenu(name) {
	for (var i = 0; i < this.menu.length; i++) {
		if (this.menu[i].name.toLowerCase() == name.toLowerCase()) return;
	}
	this.menu[this.menu.length] = new chainSelect_menuObject(name);
}

function chainSelect_delMenu(name) {
	for (var i = 0; i < this.menu.length; i++) {
		if (this.menu[i].name.toLowerCase() == name.toLowerCase()) {
			this.menu[i] = null;
			i = this.menu.length;
		}
	}
}

function CSWT_Object(name) {
	this.name = name;
	this.cswa = Array();
}

function chainSelect_menuObject(name) {
	this.name = name;
	this.list = Array();
	this.addOption = chainSelect_addMenu_Option;
	this.delOption = chainSelect_delMenu_Option;
}

function chainSelect_addMenu_Option(name,value,chain) {
	this.list[this.list.length] = new chainSelect_menuOption(name,value,chain);
}

function chainSelect_delMenu_Option(name) {
	for (var i = 0; i < this.list.length; i++) {
		if (this.list[i].name.toLowerCase() == name.toLowerCase()) {
			this.list[i] = null;
			i = this.list.length;
		}
	}
}

function chainSelect_menuOption(name,value,chain) {
	this.name = name;
	this.value = value;
	this.chain = chain;
}

function chainSelect_build(init) {
	var object;
	var element;
	if (!document.getElementsByName(this.form).length || (document.getElementsByName(this.form)[0].tagName.toLowerCase() != "form")) {
		while (document.getElementsByName(this.form).length) {
			this.form = GenerateCode();
		}
		object = document.createElement("form");
		object.name = this.form;
	} else {
		object = document.getElementsByName(this.form)[0];
	}
	for (var i = 0; i < this.field.length; i++) {
		element = getFormSelectElement(object,this.field[i]);
		if (element != null) {
			for (var j = 0; j < element.options.length; j++) {
				element.options[j] = null;
			}
		} else {
			var code = "t" + GenerateCode(9);
			while (window.code != null) code = "t" + GenerateCode(9);
			element = document.createElement("select");
			element.name = this.field[i];
			element.setAttribute("id",code);
			eval(code + " = this;");
			if (document.all) {
				document.write("<div style=\"display: inline;\" name=\"chainSelectBuildBrokenIE\" id=\"" + code + "\" element=\"" + element.name + "\" object=\" + + \"></div>");
			} else {
				object.appendChild(element);
			}
		}
		element.onchange = function() {
			chainSelectSwitch(this);
		};
		this.field[i] = element;
	}
	if (init) this.init(init);
}

function getFormSelectElement(object,name) {
	for (var i = 0; i < object.length; i++) {
		if (object[i].name.toLowerCase() == name.toLowerCase()) {
			if (object[i].type == "select-one") return object[i];
		}
	}
	return null;
}

function GenerateCode(length) {
	var length = length | 5;
	var code = "";
	var noPunction = true;

	for (var i = 0; i < length; i++) {
    	var numI = getRandomNum();
		if (noPunction) {
			while (checkPunc(numI))
				numI = getRandomNum();
		}
		code += String.fromCharCode(numI);
    }
    return code;
}

function getRandomNum() {
    var rndNum = Math.random()
    rndNum = (parseInt(rndNum * 1000) % 94) + 33;
    return rndNum;
}

function checkPunc(num) {
    if ((num >= 33) && (num <= 47)) return true;
    if ((num >= 58) && (num <= 64)) return true;    
    if ((num >= 91) && (num <= 96)) return true;
    if ((num >= 123) && (num <= 126)) return true;
    return false;
}

function chainSelectIEFix() {
	if (document.all) {
		var divElement = document.getElementsByTagName("div");
		var writeElement = Array();
		var object;
		for (var i = 0; i < divElement.length; i++) {
			if (divElement[i].getAttribute("name") == "chainSelectBuildBrokenIE") {
				writeElement[writeElement.length] = divElement[i];
			}
		}
		for (var i = 0; i < writeElement.length; i++) {
			if (writeElement[i].getAttribute("element")) {
				object = eval(writeElement[i].getAttribute("id"));
				for (var j = 0; j < object.field.length; j++) {
					if (object.field[j].name == writeElement[i].getAttribute("element")) {
						writeElement[i].appendChild(object.field[j]);
						j = object.field.length;
					}
				}
			}
		}
	}
}

if (window.addEventListener) {
	window.addEventListener("load",chainSelectIEFix, false);
} else if (window.attachEvent) {
	window.attachEvent("onload",chainSelectIEFix);
} else {
	window.onload = function() {
		if (typeof window.onload == 'function') {
			window.onload();
		} chainSelectIEFix();
	}
}