// Replace Select Boxes with Faux Select

function ReplaceSelectBoxes()
{
	if (navigator.appVersion.indexOf("MSIE")==-1) return false;
	
	var option_bgcolor 			 = '#ffffff';
	var option_bgcolor_hover = '#336699';
	var ignore_replace       = 'ignore_replace';
	
	var create_div_from_option = function(option)
	{				
		var option_div = commonjs.new_element({element:'DIV',className:'faux_option',unselectable:true,option_item:true});
				if (option.value) option_div.value = option.value;
				else if (option.hasChildNodes()) option_div.value = option.firstChild.nodeValue;				
				if (option.getAttribute('selected')) option_div.selected = true;
				if (option.getAttribute('onclick'))  option_div._onclick = option.getAttribute('onclick');
				else option_div._onclick = function() { void(0); }
		option_div.onclick = function() {
				this._set_selected_option();
				this._onclick();
			}				
		if (option.hasChildNodes())	{
			for (var i=0;i<option.childNodes.length;i++) {
				option_div.appendChild(option.childNodes[i].cloneNode(true));
			}
		}
		xAddEventListener(option_div,'mouseover',option_hover,false);
		
		return option_div;
	}

	var hover_option = function(option) {
		if (!option._color) option._color = option.style.color ? option.style.color : '#000000';
		option.style.backgroundColor = option_bgcolor_hover;
		option.style.color = '#ffffff';
		for (var i=0;i<option.parentNode.childNodes.length;i++) {
			var child = option.parentNode.childNodes[i];
			if (child != option) {
				child.style.backgroundColor = option_bgcolor;
				child.style.color = child._color ? child._color : (child.style.color ? child.style.color : '#000000');
			}
		}
	}

	var option_hover = function(evt)
	{
		var e = new xEvent(evt);
		var option = e.target;
		if (!option.option_item) return false;
		hover_option(option);
	}
	
	var init = function()
	{
		var all_select_boxes = document.getElementsByTagName('SELECT');
		var select_boxes = [];
		for(var i = 0;i<all_select_boxes.length;i++)
		{
			var className = all_select_boxes[i].className;
			if (className.indexOf(ignore_replace) == -1) select_boxes.push(all_select_boxes[i]);
		}
		var select_length = select_boxes.length;
		for (var i = 0; i< select_length; i++)
		{
			create_faux_select(select_boxes[i]);			
		}
	}

	var create_faux_select = function(select_box)
	{
			var faux_select	 	  = commonjs.new_element({element:'DIV',className:'faux_select'});
					faux_select.name = select_box.name ? select_box.name : '';
			var table					  = commonjs.new_element({element:'TABLE',cellPadding:0,cellSpacing:0,className: 'faux_select_table'});
			var tbody					  = commonjs.new_element({element:'TBODY'});
			var row						  = commonjs.new_element({element:'TR'});
			var selected_cell	  = commonjs.new_element({element:'TD',className:'faux_selected'});
			var button_cell			= commonjs.new_element({element:'TD',className:'faux_button',align:'center',valign:'middle'});
			var button_text			= commonjs.new_element({element:'SPAN',unselectable:true});
			var drop_down				= commonjs.new_element({element:'DIV',className:'faux_drop_down',visible:false});
			var form_input			= commonjs.new_element({element:'INPUT',type:'hidden'});
			
			if(select_box.name) form_input.name = select_box.name;
			if(select_box.id) 	form_input.id = select_box.id;
			
			button_text.appendChild(document.createTextNode('6'));
			button_cell.appendChild(button_text);
			commonjs.append_children(row,[selected_cell,button_cell]);
			tbody.appendChild(row);
			table.appendChild(tbody);
			commonjs.append_children(faux_select,[table,drop_down]);
						
			faux_select.onclick = function() {
				if (drop_down.visible) {
					drop_down.style.visibility = 'hidden';
					drop_down.visible = false;
				}
				else {
					drop_down.style.visibility = 'visible';
					drop_down.visible = true;
				}				
			}

			var button_toggle = function(evt)
			{
				var e = new xEvent(evt);
				var type	 = e.type;
				if (type == 'mousedown') 		button_cell.className = 'faux_button_down';
				else if (type == 'mouseup') button_cell.className = 'faux_button';
			}
		
			var set_selected_option = function(option)
			{
				selected_cell.innerHTML = '';
				var display_option = option.cloneNode(true);
						display_option.option_item = false;
						display_option.style.backgroundColor = option_bgcolor;
						display_option.style.color = display_option._color ? display_option._color : (display_option.style.color ? display_option.style.color : '#000000');				
				selected_cell.appendChild(display_option);
				form_input.value = option.value;
			}

			var select_options = select_box.getElementsByTagName('OPTION');
		
			for (var j=0;j<select_options.length;j++) {
				var option = create_div_from_option(select_options[j]);
				if (j == 0 || option.selected) set_selected_option(option);
				option._set_selected_option = function() { set_selected_option(this) }
				drop_down.appendChild(option);
			}			

			select_box.parentNode.replaceChild(faux_select,select_box);
			faux_select.parentNode.appendChild(form_input);

			xAddEventListener(faux_select,'mousedown',button_toggle,false);
			xAddEventListener(faux_select,'mouseup',button_toggle,false);
	}
	

	init();
	
}