var CS_Configs = new Object();
CS_Configs['custom-select-white'] = {"arrow_width":16,"upped_Z":20,"downed_Z":10,"totalPadding":21,"holder_border_width":1,"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 prepareSelects(hideDisabled) {
	$("select").not(".noCustomSelect").not(".customselectbox select").each(function(){
		var parent = this.parentNode;
		var oW = this.offsetWidth;
		if (oW==0) return false;
		this.className += " JS_NoCustomSelect";
		this.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[this.parentNode.origClass]["arrow_width"] - CS_Configs[this.parentNode.origClass]["totalPadding"]) + "px";
		currentOptionObj.innerHTML = this.options[this.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[this.parentNode.origClass]["holder_border_width"]) + "px";
		
		optionHolderObj.linkedSelect = this;
		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<this.options.length; i++) {
			if (this.options[i].disabled==true && hideDisabled) continue;
			var optionObj = document.createElement('div');
			optionObj.className = "option";
			optionObj.innerHTML = this.options[i].text;
			if (this.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;
					$(this.linkedHolder.linkedSelect).change();
				}
			}
			optionHolderObj.appendChild(optionObj);
		}
		
		parent.appendChild(optionHolderObj);
		if (CS_Configs[this.parentNode.origClass]["maxHeight"] > 0) {
			if (optionHolderObj.childNodes.length > CS_Configs[this.parentNode.origClass]["maxLength"]) optionHolderObj.style.height = CS_Configs[this.parentNode.origClass]["maxHeight"] + "px";
		}
		currentOptionObj.linkedHolder = optionHolderObj;
		arrowObj.linkedHolder = optionHolderObj;
		
		currentOptionObj.onclick = setToToggleHolder;
		arrowObj.onclick = setToToggleHolder;
		
		CS_holderList.push(optionHolderObj);
		if (defaultSelectedIndex!=-1) {
			this.selectedIndex = defaultSelectedIndex;
			currentOptionObj.innerHTML = this.options[defaultSelectedIndex].text;
		}
	});
}

if (window.addEventListener) {
	window.addEventListener("click",toggleHolder,false);
}
else if (window.attachEvent) {
	document.attachEvent("onclick",toggleHolder);
}
