function setComboboxTrue()  { setCombobox(true); }
function setComboboxFalse() { setCombobox(false); }
// ----------------------------------------------------------------- //
// Loop through each select on the page, and check its class.  If it //
// has a class of comboBox, then attach the needed elements			 //
// ----------------------------------------------------------------- //

var nTop;
var nLeft;
var detect = navigator.userAgent.toLowerCase();

function setCombobox(bMethod) {
	combos=getElementsByClassName('select', "comboBox");
	for(i=0; i<combos.length; i++) {
		nTop = findPosY(combos[i]);
		nLeft = findPosX(combos[i]);
		if(bMethod == true) {

			inittextfield(combos[i]);
			//Use iframe hack for Internet Explorer
			if(!(detect.indexOf("opera") + 1) && (detect.indexOf("msie") + 1)) {
				initIframe(combos[i]);
			}

			textfield = document.getElementById("txt" + combos[i].name);

			if((detect.indexOf("msie") + 1)) {
				hackFrame = document.getElementById("frame" + combos[i].name);
				hackFrame.style.top = textfield.style.top; //+ "px";
				hackFrame.style.left = textfield.style.left; //+ "px";
			}			
			
		}
		else{
			textfield = document.getElementById("txt" + combos[i].name);
			textfield.style.top = nTop + "px";
			textfield.style.left = nLeft + "px";
			if((detect.indexOf("msie") + 1)) {		
				hackFrame = document.getElementById("frame" + combos[i].name);
				hackFrame.style.top = nTop + "px";
				hackFrame.style.left = nLeft + "px";
			}
		}
	}
}

// ------------------------------------------------------------------------ //
// Get all elements with matching class names								//
// Courtesy of snook - http://www.snook.ca/archives/000370.html				//
// ------------------------------------------------------------------------ //
function getElementsByClassName(node, classname)
{
    var a = [];
    var re = new RegExp('(^| )' + classname + '( |$)');
	var els = document.getElementsByTagName(node);
	for(var i=0,j=els.length; i<j; i++)
		if(re.test(els[i].className))a.push(els[i]);
	return a;
}

// ------------------------------------------------------------------ //
// Create the textfield and move it to desired position               //
// ------------------------------------------------------------------ //

function inittextfield(ctrl) {

	selectWidth = ctrl.offsetWidth;  

	//Create textfield
	textfield = document.createElement("input");
	textfield.id = "txt" + ctrl.name;
	textfield.className = "comboText";
	textfield.style.zIndex = "99999";
	
	var initextvalue = ctrl.options[ctrl.selectedIndex].value;
	if (initextvalue == "") {
		textfield.value = "Type Here";
		textfield.style.color = "#ccc";
	} else {
		textfield.value = ctrl.options[ctrl.selectedIndex].value;
	}	
	
	textfield.style.position = "absolute";
	textfield.style.top = nTop + "px";
	textfield.style.left = nLeft + "px";
	textfield.style.border = "none";
	
	//Account for Browser Interface Differences Here
	if((detect.indexOf("safari") + 1)) {
		selectButtonWidth = 18
		textfield.style.marginTop = "0px";
		textfield.style.marginLeft = "0px";
	}
	else if((detect.indexOf("opera") + 1)) {
		selectButtonWidth = 27;
		textfield.style.marginTop = "4px";
		textfield.style.marginLeft = "4px";
	}
	else {
		selectButtonWidth = 25;
		textfield.style.marginTop = "2px";
		textfield.style.marginLeft = "3px";
	}
	
	textfield.style.width = (selectWidth - selectButtonWidth) + "px";
	
	ctrl.parentNode.appendChild(textfield);	
	
	ctrl.onchange=function() {
		val = this.options[this.selectedIndex].value;	
		document.getElementById("txt" + this.name).value = val;
	}
	
	ctrl.onfocus=function() {
		document.getElementById("txt" + this.name).style.color = "#333";
	}

	textfield.onfocus=function() {
		if (this.value == "Type Here") this.value = "";
		this.style.color = "#333";
	}

	textfield.onblur=function() {
		if (this.value == "") 
		{	
			//this.value = "Type Here";
			//this.style.color = "#333";
		}
	}
	
	textfield.onchange=function() {
		ctrl.options[0].value = document.getElementById("txt" + ctrl.name).value;
	}

}

// ------------------------------------------------------------------ //
// Internet Explorer hack requires an empty iFrame.  We need to add   //
// one right underneath the div -> it will make the zindex work       //
// ------------------------------------------------------------------ //

function initIframe(ctrl) {
	textWidth = textfield.offsetWidth;
	textHeight = textfield.offsetHeight;
	hackFrame = document.createElement("iframe");
	hackFrame.setAttribute("src", "/script/JS/placeHolder.html");
	hackFrame.setAttribute("scrolling", "0");
	hackFrame.setAttribute("tabindex", "-1");
	hackFrame.id = "frame" + ctrl.name;
	hackFrame.style.position = "absolute";
	hackFrame.style.width = textWidth + "px";
	hackFrame.style.height = textHeight + "px";
	hackFrame.style.top = nTop + "px";
	hackFrame.style.left = nLeft + "px";
	hackFrame.style.marginTop = "3px";
	hackFrame.style.marginLeft = "3px";
	ctrl.parentNode.insertBefore(hackFrame, textfield);
}

// ----------------------------------------------------------------------------- //
//  Find the x and y position of the select box and return them                  //
// ----------------------------------------------------------------------------- //

function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			if (detect.indexOf("msie") +1)
			{
				var p = getStyle(obj,'position');
				if (p == 'relative') break;
			}
			
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			if (detect.indexOf("msie") +1)
			{
				var p = getStyle(obj,'position');
				if (p == 'relative') break;
			}
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

function getStyle(el,styleProp)
{
	if (el.currentStyle)
		var y = el.currentStyle[styleProp];
	else if (window.getComputedStyle)
		var y = document.defaultView.getComputedStyle(el,null).getPropertyValue(styleProp);
	return y;
}

$(document).ready(function () {
    $(window).bind("load", setComboboxTrue);
    $(window).bind("resize", setComboboxFalse);
});
