<!--
//-------------------------------------------------------------
//  @ Module: simulate select control, IE only.
//  @ Debug in: IE 6.0
//  @ Script by: blueDestiny, never-online
//  @ Updated: 2006-3-22
//  @ Version: 1.0 apha
//  @ Email: blueDestiny [at] 126.com
//  @ Website: http://www.never-online.net
//  @ Please Hold this item please.
//
//  API
//  @ class: simulateSelect()
//
//  @ object.style(ctlStyle[,selStyle][,unselStyle])
//    ctlStyle: main control combox css class name
//    selStyle: when mouseover or option focus css class name
//    unselStyle: options blur's css class name
//
//  @ object.width=(widthPX)
//    widthPX must be a digit number.
//
//  @ object.height=(heightPX)
//    heightPX must be a digit number.
//
//  @ object.getValue(ctlSelID)
//    ctlSelID is the unique select control ID
//
//  -------------- for the next Version ----------
//  @ object.readOnly = (blnReadOnly)
//    blnReadOnly must be a boolean type or a number type.
//  @ object.addEvent(w, h)
//    w: fire handler's event.
//    h: handler function.
//-------------------------------------------------------------
function $(objID)
{
	return document.getElementById(objID);
};
function Offset(e)
{
	var t = e.offsetTop;
	var l = e.offsetLeft;
	var w = e.offsetWidth;
	var h = e.offsetHeight-2;
	while(e=e.offsetParent)
	{
		t+=e.offsetTop;
		l+=e.offsetLeft;
	}
	return {
		top : t,
		left : l,
		width : w,
		height : h
	}
}
//-----------------------------------------------
function simulateSelect(handlerFunction) { with(this){
	this.IDs = [];
	this.name = this;
	this.value = null;
	this.onchangeArgs = [];
	this.onchange = handlerFunction;
	this.height = 15;
	this.width = null;
	this.number = null;
	this.ctlStyle = "CtlSelect";
	this.selStyle = "selected";
	this.unselStyle = "unselected";
	this.elementPrefix = "e__";
	this.inputPrefix = "i__";
	this.containerPrefix = "c__";
	this.buttonPrefix = "b__";
	//  property for beta Version
	//  can editable combox
	this.readonly = true;
	if( arguments.length>0 )
	for(var i=0; i<arguments.length; i++)
	onchangeArgs[i-1] = arguments[i];
	return this;
}};
simulateSelect.prototype.init = function(ctlSelIDs) { with(this)
{
	eval(name).append(ctlSelIDs);
	eval(name).simulates();
}};
simulateSelect.prototype.style = function() { with(this)
{
	ctlStyle = arguments[0];
	selStyle = arguments[1];
	unselStyle = arguments[2];
}};
//-----------------------------------------------
simulateSelect.prototype.append = function(ctlSelIDs) { with(this)
{
	if( ctlSelIDs.indexOf(",")>0 )
	{
		var arrCtlSel = ctlSelIDs.split(",");
		for(var i=0; i<arrCtlSel.length; i++)
		{
			IDs.push(arrCtlSel[i]);
		}
	}
	else
	IDs.push(ctlSelIDs);
}};
simulateSelect.prototype.checkupOnMouseDown = function(e) { with(this)
{
	// here compatible mf.
	var el = e ? e.srcElement : e.target;
	if( el.id.indexOf(elementPrefix)>-1 || 
	el.id.indexOf(inputPrefix)>-1 || 
	el.id.indexOf(containerPrefix)>-1 || 
	el.id.indexOf(buttonPrefix)>-1 )
	{
		return;
	}
	else
	{
		for(var i=0; i<eval(name).IDs.length; i++)
		if( $(containerPrefix + IDs[i]) )
		$(containerPrefix + IDs[i]).style.display = "none";
	}
}};
simulateSelect.prototype.simulates = function() { with(this)
{
	for(var i=0; i<IDs.length; i++)
	eval(name).simulate(IDs[i]);
}};
simulateSelect.prototype.simulate = function(ctlSelID) { with (this)
{
	var input;
	var button;
	var object;
	var offset;
	object = $(ctlSelID);
	offset = Offset(object);
	input = document.createElement("INPUT");
	button = document.createElement("BUTTON");
	button.setAttribute("id", buttonPrefix + ctlSelID);
	//button.value = "¨S";
	//button.value = "6";
	button.value = "";
	button.style.fontFamily = "Webdings, Marlett";
	button.style.background = "url(images/top_11.jpg)";
	button.onclick = input.onclick = function()
	{
		this.blur();
		eval(name).expand(ctlSelID, offset);
	};
	input.onselectstart = function()
	{
		eval(name).expand(ctlSelID, offset);
		event.returnValue = false; 
	};
	input.setAttribute("id", inputPrefix + ctlSelID);
	input.title = button.title = "click expand options";
	input.style.cursor = button.style.cursor = "default";
	input.className = button.className = ctlStyle;
	input.style.width = (width>0 ? width : object.offsetWidth);
	height ? input.style.height=button.style.height=height : "";
	input.value = value = object[0].text;
	if( readonly==true ) input.readOnly=true;
	// this method is only IE.
	object.insertAdjacentElement("afterEnd",button);
	object.insertAdjacentElement("afterEnd",input);
	object.style.display = 'none';
}};
simulateSelect.prototype.expand = function(ctlSelID, offset) { with(this)
{
	var div;
	var object = $(ctlSelID);
	if( !$(containerPrefix + ctlSelID) )
	{
		div = document.createElement("DIV");
		div.style.position = "absolute";
		div.style.display = "block";
		div.setAttribute("id", containerPrefix + ctlSelID);
		div.className = ctlStyle;
		div.style.left = offset.left + 3;
		div.style.top = offset.top + offset.height + 21;
		div.style.width = (width ? width : offset.width) + 19;
		div.style.border = "1px solid #B6C9DA";
		div.style.borderTop = "0";
		div.style.paddingLeft = "5px";
		if( number )
		{
			div.style.height = height * number;
			div.style.overflow = "auto";
		}
		document.body.appendChild(div);
		for(var i=0; i<object.length; i++)
		{
			div = document.createElement("DIV");
			div.setAttribute("id", div.id = elementPrefix + ctlSelID + i);
			div.style.cursor = "default";
			if( object[i].text==$(inputPrefix + ctlSelID).value )
			div.className = selStyle;
			else
			div.className = unselStyle;
			div.innerText = div.title = object[i].text;
			div.style.height = height;
			div.setAttribute("value", object[i].value);
			div.onmouseover = function()
			{
				for(var j=0; j<$(containerPrefix + ctlSelID).childNodes.length; j++)
				{
					if($(containerPrefix + ctlSelID).childNodes[j]==this)
					$(containerPrefix + ctlSelID).childNodes[j].className = selStyle;
					else
					$(containerPrefix + ctlSelID).childNodes[j].className = unselStyle;
				}						
			};
			div.onclick = function()
			{
				$(inputPrefix + ctlSelID).value = this.innerText;
				$(containerPrefix + ctlSelID).style.display = "none";
				if( onchange && value!=$(inputPrefix + ctlSelID).value )
				{
					onchange.apply(this,onchangeArgs);
					value = $(inputPrefix + ctlSelID).value;
				}
			};
			$(containerPrefix + ctlSelID).appendChild(div);
		}
		return;
	}
	if( $(containerPrefix + ctlSelID).style.display=="none" )
	{
		for(var i=0; i<object.length; i++)
		{
			if( object[i].text==$(inputPrefix + ctlSelID).value )
			$(elementPrefix + ctlSelID + i).className = selStyle;
			else
			$(elementPrefix + ctlSelID + i).className = unselStyle;
		}
		$(containerPrefix + ctlSelID).style.display="block";
		return;
	}
	if( $(containerPrefix + ctlSelID).style.display=="block" )
	{
		$(containerPrefix + ctlSelID).style.display="none";
		return;
	}
}};
simulateSelect.prototype.getValue = function(ctlSelID) { with(this)
{
	if( $(inputPrefix + ctlSelID) )
	return $(inputPrefix + ctlSelID).value.replace("&", "%26");
	else
	return null;
}};
simulateSelect.prototype.addEvent = function(w, h) { with(this)
{
}};
//-----------------------------------------------
//window.onerror = Function("return true;");
//  IE only.
var a;
document.attachEvent("onmousedown", function() {
	if($("s1")){
		a.checkupOnMouseDown(event)
	}
});
window.attachEvent("onload", function() {
	if($("s1")){
		window.a = new simulateSelect();
		a.style("CtlSelect", "selected", "unselected");
		a.width = 123;
		a.height = 16;
		a.init("s1");
	}
});
function s1onchange(para, s)
{
	alert("onchage handler fire " + para + s);
}
//-->