var DropdownObjectList=new Array();
function DropdownBuilder(element,id,width,half) {
	var i=DropdownObjectList.length;
	DropdownObjectList[i]=new DropdownObject(i,element,id,width,half);
	DropdownObjectList[i].id=id;
}

function DropdownObject(i,element,id,width,half) {
	var instance = this;
	this.count=i;
	this.element=element;
	this.elValue=element.value;
	this.options=element.options;
	this.selectedIndex=element.selectedIndex;
	this.id=id;
	this.width=parseFloat(element.style.width);
	if(width!=null) this.width=width;
	this.half=null;
	if(half!=null) this.half=half;
	this.outerShell=document.createElement('div');
	this.outerShell.className='SelectReplace';
	this.outerShell.style.width=this.width;
	if(this.half!=this.dropListl) this.outershell.style.width=this.width/2;
	this.outerShell.id='P'+this.id;
	this.outerShell.style.zIndex=10;
	if(document.images) { var img=new Image(); img.src='design3468/images/DropdownArrow.gif'; }
	this.innerShell=document.createElement('div');
	this.innerShell.id='C'+this.id;
	this.innerShell.className='SelectText';
	this.innerShell.style.width=this.width-2;
	if(this.half!=null) this.innerShell.style.width=(this.width/2)-2;
	this.innerShell.innerHTML="&nbsp;"+this.element.options[this.element.selectedIndex].innerHTML;
	this.innerShell.onclick=function(evt) { instance.ShowOptions(); };
	this.outerShell.appendChild(this.innerShell);
	this.element.parentNode.insertBefore(this.outerShell,this.element);
	this.dropList=document.createElement('ul');
	this.dropList.className='SelectList';
	this.dropList.style.width=this.width-2;
	if(this.half!=null) this.dropList.style.width=(this.width/2)-2;
	this.dropList.id='O'+this.id;
	var opts=this.element.options;
	this.listItems=new Array();
	this.listItemValues=new Array();
	this.listItemText=new Array();
	this.optValue=this.element.selectedIndex;
	for (i=0;i<opts.length;i++) {
		var li=document.createElement('li');
		this.listItemValues[i]=opts[i];
		li.innerHTML=opts[i].innerHTML;
		this.listItemText[i]=opts[i].innerHTML;
		li.onclick=new Function("DropdownObjectList["+this.count+"].UpdateValue("+i+");");
		this.dropList.appendChild(li);
		li.onmouseover=new Function("DropdownObjectList["+this.count+"].HighlightOption("+i+");");
		li.onmouseout=new Function("this.style.backgroundColor='transparent';this.style.color='black'");
		this.listItems[i]=li;
	}
	this.outerShell.appendChild(this.dropList);
	this.element.style.opacity=0;
	this.element.style.filter='alpha(opacity:0)';
	this.dropList.style.display='none';
	this.element.focused=false;
	this.element.onfocus=new Function("this.focused=true;DropdownObjectList["+this.count+"].ShowOptions();");
	this.element.onblur=new Function("this.focused=false;DropdownObjectList["+this.count+"].UpdateValue();");
	this.element.onkeyup=this.GetKeycode;
	this.element.onmousepress=new Function("DropdownObjectList["+this.count+"].UpdateValue();");
	this.dropList.onmouseout=new Function("DropdownObjectList["+this.count+"].optValue=DropdownObjectList["+this.count+"].element.selectedIndex;");

}
DropdownObject.prototype.GenerateList=function() {
	var instance=this;
	var opts=instance.element.options;
	instance.innerShell.innerHTML="&nbsp;"+instance.element.options[instance.element.selectedIndex].innerHTML;
	instance.listItems=new Array();
	instance.listItemValues=new Array();
	instance.listItemText=new Array();
	instance.dropList.innerHTML="";
	for (i=0;i<opts.length;i++) {
		var li=document.createElement('li');
		instance.listItemValues[i]=opts[i];
		li.innerHTML=opts[i].innerHTML;
		instance.listItemText[i]=opts[i].innerHTML;
		li.onclick=new Function("DropdownObjectList["+instance.count+"].UpdateValue("+i+");");
		instance.dropList.appendChild(li);
		li.onmouseover=new Function("DropdownObjectList["+instance.count+"].HighlightOption("+i+");");
		li.onmouseout=new Function("this.style.backgroundColor='transparent';this.style.color='black'");
		instance.listItems[i]=li;
	}
}
DropdownObject.prototype.GetKeycode=function(e) {
	var keycode;
	var instance=this;
	var evtobj=window.event? event : e //distinguish between IE's explicit event object (window.event) and Firefox's implicit.
	keycode=evtobj.charCode? evtobj.charCode : evtobj.keyCode;
	for(i=0;i<DropdownObjectList.length;i++) {
			if(DropdownObjectList[i].element==instance) break;
	}
	//if(keycode==13||keycode==9) DropdownObjectList[i].UpdateValue(instance.selectedIndex);
	DropdownObjectList[i].HighlightOption(instance.selectedIndex);
	//if(!instance.focused) instance.onkeydown="";
}

DropdownObject.prototype.ShowOptions=function() {
	var instance=this;
	instance.GenerateList();
	instance.outerShell.style.zIndex=200;
	instance.dropList.style.display="";
	instance.HighlightOption(instance.element.selectedIndex);
	instance.innerShell.style.backgroundColor="#ffc";
	instance.innerShell.onclick=new Function("DropdownObjectList["+instance.count+"].HideOptions();");
	window.setTimeout("DropdownObjectList["+instance.count+"].Hide2("+instance.count+")",100);
//	instance.element.focus();
}
DropdownObject.prototype.Hide2=function(count) {
	var instance=this;
	document.onclick=new Function("DropdownObjectList["+count+"].HideOptions();");
}
DropdownObject.prototype.HideOptions=function() {
	var instance=this;
	instance.outerShell.style.zIndex=10;
	instance.dropList.style.display = 'none';
	instance.innerShell.style.backgroundColor="white";
	instance.innerShell.onclick=function(evt) { instance.ShowOptions(); };
	document.onclick="";
	instance.element.blur();
}
DropdownObject.prototype.UpdateValue=function(value) {
	var instance=this;
	if(value==null) value=instance.optValue;
	instance.element.selectedIndex=value;
	instance.innerShell.innerHTML="&nbsp;"+instance.element.options[value].innerHTML;
	//if(typeof InstantPricingList!="undefined"&&InstantPricingList[0]&&instance.element.form.name!="changeForm"&&instance.element.form.id!="changeForm2") InstantPricingList[0].showQuote();
	//if(typeof PageFlexList!="undefined"&&PageFlexList[0]) PageFlexList[0].getPreview();
	instance.HideOptions();
	if(instance.element.fireEvent) instance.element.fireEvent('onchange');
	else if(document.createEvent) {
		var evt=document.createEvent('HTMLEvents');
		if(evt.initEvent) evt.initEvent('change', true, true);
		if(instance.element.dispatchEvent) instance.element.dispatchEvent(evt);
	}
//	for(i=0;i<DropdownObjectList.length;i++) {
//		if(i!=instance.count) DropdownObjectList[i].UpdateValue();
//	}
}
DropdownObject.prototype.HighlightOption=function(val) {
	var instance=this;
	for (i=0;i<instance.listItems.length;i++) {
		if (typeof instance.element.options[val]!="undefined"&&instance.dropList.getElementsByTagName('li')[i].innerHTML==instance.element.options[val].innerHTML) {
			instance.listItems[i].style.backgroundColor='#0071a0';
			instance.listItems[i].style.color='white';
		} else {
			instance.listItems[i].style.backgroundColor='transparent';
			instance.listItems[i].style.color='black';
		}
	}
	instance.optValue=val;
}