var CS_Configs = new Object();
CS_Configs['language'] = {"arrow_width":15,"upped_Z":20,"downed_Z":10,"totalPadding":0,"holder_border_width":0,"maxLength":10,"maxHeight":200};
var CS_toToggleHolder = null;
var CS_toToggleClass = null;
var CS_holderList = new Array();
function toggleHolder() {
	for (var i=0; i<CS_holderList.length; i++) {
		CS_holderList[i].style.display = "none";
		CS_holderList[i].parentNode.style.zIndex = CS_Configs[CS_holderList[i].parentNode.origClass]["downed_Z"];
	}
	if (CS_toToggleHolder != null) {
		CS_toToggleHolder.style.display = "block";
		CS_toToggleHolder.parentNode.style.zIndex = CS_Configs[CS_toToggleClass]["upped_Z"];
		CS_Configs[CS_toToggleClass]["upped_Z"]++;
		CS_toToggleHolder = null;
	}
}

function changeSelect(obj) {
	var parent = obj.parentNode;
	var oW = obj.offsetWidth;
	if (oW==0) return false;
	obj.className += " JS_NoCustomSelect";
	obj.style.display = "none";
	parent.origClass = parent.className;
	if (parent.origClass.indexOf(" ")!=-1) {
		parent.origClass = parent.origClass.substr(0, parent.origClass.indexOf(" "));
	}
	parent.className += " customselectbox";
	
	var currentOptionObj = document.createElement('div');
	currentOptionObj.className = "current";
	currentOptionObj.style.width = (oW - CS_Configs[obj.parentNode.origClass]["arrow_width"] - CS_Configs[obj.parentNode.origClass]["totalPadding"]) + "px";
	currentOptionObj.innerHTML = obj.options[obj.selectedIndex].text;
	parent.appendChild(currentOptionObj);
	
	var arrowObj = document.createElement('div');
	arrowObj.className = "arrow";
	parent.appendChild(arrowObj);
	
	var optionHolderObj = document.createElement('div');
	optionHolderObj.className = "optionholder";
	optionHolderObj.style.display = "none";
	optionHolderObj.style.width = (oW - CS_Configs[obj.parentNode.origClass]["holder_border_width"]) + "px";
	
	optionHolderObj.linkedSelect = obj;
	optionHolderObj.linkedCurrent = currentOptionObj;
	
	var setToToggleHolder = function() {
		if (this.linkedHolder.style.display != "block") {
			CS_toToggleHolder = this.linkedHolder;
			CS_toToggleClass = this.linkedHolder.parentNode.origClass;
		}
	}
	var defaultSelectedIndex = -1;
	for (var i=0; i<obj.options.length; i++) {
		var optionObj = document.createElement('div');
		optionObj.className = "option";
		optionObj.innerHTML = obj.options[i].text;
		if (obj.options[i].defaultSelected) {
			defaultSelectedIndex = i;
		}
		optionObj.onmouseover = function() { this.className = "option option_hover"; }
		optionObj.onmouseout = function() { this.className = "option"; }
		optionObj.linkedIndex = i;
		optionObj.linkedHolder = optionHolderObj;
		optionObj.onclick = function() { 
			if (this.linkedHolder.linkedSelect.selectedIndex != this.linkedIndex) {
				this.linkedHolder.linkedSelect.selectedIndex = this.linkedIndex;
				this.linkedHolder.linkedCurrent.innerHTML = "";
				this.linkedHolder.linkedCurrent.innerHTML += this.linkedHolder.linkedSelect.options[this.linkedIndex].text;
				if (typeof this.linkedHolder.linkedSelect.onchange == "function" || typeof this.linkedHolder.linkedSelect.onchange == "object") { 
					this.linkedHolder.linkedSelect.onchange();
				}
			}
		}
		optionHolderObj.appendChild(optionObj);
	}
	
	parent.appendChild(optionHolderObj);
	if (CS_Configs[obj.parentNode.origClass]["maxHeight"] > 0) {
		if (optionHolderObj.childNodes.length > CS_Configs[obj.parentNode.origClass]["maxLength"]) optionHolderObj.style.height = CS_Configs[obj.parentNode.origClass]["maxHeight"] + "px";
	}
	currentOptionObj.linkedHolder = optionHolderObj;
	arrowObj.linkedHolder = optionHolderObj;
	
	currentOptionObj.onclick = setToToggleHolder;
	arrowObj.onclick = setToToggleHolder;
	
	CS_holderList.push(optionHolderObj);
	if (defaultSelectedIndex!=-1) {
		obj.selectedIndex = defaultSelectedIndex;
		currentOptionObj.innerHTML = obj.options[defaultSelectedIndex].text;
		if ((typeof obj.onchange == "function" || typeof obj.onchange == "object") && obj.onchange != null) {
			obj.onchange();
		}
	}
}

function autoSubmitSelect(obj) {
	obj.onchange = function() {
		obj.form.submit();
	}
}

function prepareSelects() {
	var mySelects = document.getElementsByTagName("select");
	var obj;
	for (var i=0; i<mySelects.length; i++) {
		obj = mySelects[i];
		if (obj.className.indexOf('JS_AutoSubmit_Select') != -1) autoSubmitSelect(obj);
		if (obj.className.indexOf('JS_NoCustomSelect') == -1) changeSelect(obj);
	}
}

if (window.addEventListener) {
	window.addEventListener("click",toggleHolder,false);
}
else if (window.attachEvent) {
	document.attachEvent("onclick",toggleHolder);
}
