var CS_arrow_width = 19;
var CS_upped_Z = 20;
var CS_downed_Z = 10;
var CS_totalPadding = 8;
var CS_maxLength = 10;
var CS_maxHeight = 200;
var CS_toToggleHolder = 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_downed_Z;
	}
	if (CS_toToggleHolder != null) {
		CS_toToggleHolder.style.display = "block";
		CS_toToggleHolder.parentNode.style.zIndex = CS_upped_Z;
		CS_upped_Z++;
		CS_toToggleHolder = null;
	}
}

function changeSelect(obj) {
	var parent = obj.parentNode;
	var oW = obj.offsetWidth
	obj.style.display = "none";
	parent.className += " customselectbox";
	
	var currentOptionObj = document.createElement('div');
	currentOptionObj.className = "current";
	currentOptionObj.style.width = (oW - CS_arrow_width - CS_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 -2) + "px";
	
	optionHolderObj.linkedSelect = obj;
	optionHolderObj.linkedCurrent = currentOptionObj;
	
	var setToToggleHolder = function() {
		if (this.linkedHolder.style.display != "block") CS_toToggleHolder = this.linkedHolder;
	}
	for (var i=0; i<obj.options.length; i++) {
		var optionObj = document.createElement('div');
		optionObj.className = "option";
		optionObj.innerHTML = obj.options[i].text;
		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.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_maxHeight > 0) {
		if (optionHolderObj.childNodes.length > CS_maxLength) {
			optionHolderObj.style.height = CS_maxHeight + "px";
			optionHolderObj.style.overflow = "auto";
		}
	}
	currentOptionObj.linkedHolder = optionHolderObj;
	arrowObj.linkedHolder = optionHolderObj;
	
	currentOptionObj.onclick = setToToggleHolder;
	arrowObj.onclick = setToToggleHolder;
	
	CS_holderList.push(optionHolderObj);
}

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_NoCustomSelect') == -1) {
			changeSelect(obj);
		}
	}
}

if (window.addEventListener) {
	window.addEventListener("click",toggleHolder,false);
}
else if (window.attachEvent) {
	document.attachEvent("onclick",toggleHolder);
}