function suckerfish(type, tag, parentId)
{
	if (window.attachEvent)
    {
    	window.attachEvent("onload", function()
        {
        	var sfEls = (parentId==null)?document.getElementsByTagName(tag):document.getElementById(parentId).getElementsByTagName(tag);
            type(sfEls);
        });
    }
}

sfFocus = function(sfEls)
{
	for (var i=0; i<sfEls.length; i++)
    {
    	sfEls[i].onfocus=function()
        {
        	this.className+=" sffocus";
            if( this.value == this.defaultValue ) { this.value = ""; }
        }
        sfEls[i].onblur=function()
        {
        	this.className=this.className.replace(new RegExp(" sffocus\\b"), "");
            if( this.value == "" ) { this.value = this.defaultValue; }
        }
    }
}

//suckerfish(sfFocus, "INPUT");
//suckerfish(sfFocus, "TEXTAREA"); 
//suckerfish(sfFocus, "Select"); 

var optionValue = null;

function setOptionValue(v)
{
	optionValue = v;
}

function optiondiv_onmousedown(objInputId, value, callback, list, index)
{
	document.getElementById(objInputId).value=value;
	window.focus();
	
	if(callback != "na") eval(callback + "(" + list + "," + JSON.stringify(optionValue[index]) + ")");
}


function smanPromptList(strList,objInputId)
{
	arrList = new Array();
	callbackFunc = arguments[2];
	if(callbackFunc == null) callbackFunc = "na";
	
	this.style = "background:#E8F7EB;border: 1px solid #CCCCCC;font-size:14px;cursor: default;"
	window.onload = function() {
		var tmpStr1 = strList.split(",");
	    for(i = 0; i < tmpStr1.length; i++) {
	    	arrList[i] = tmpStr1[i];
	    	//alert(arrList[i]);
	    }
	    
		var selectedIndex = -1;
		var intTmp; //循环用的:)
		var objouter = document.getElementById("__smanDisp") //显示的DIV对象
		var objInput = document.getElementById(objInputId); //文本框对象
		var objInput2 = document.getElementById("inputer2"); //文本框对象
		var tmpStr = objInputId.split(",");
		for(i=0;i<tmpStr.length;i++){
		    var objInput = document.getElementById(tmpStr[i]); //文本框对象
			//if (objInput==null) {alert('smanPromptList初始化失败:没有找到"'+objInputId+'"文本框');return ;}
			//文本框失去焦点
			objInput.onblur = function() {
				objouter.style.display = 'none';
			}
			window.onfocus=function() {
				objouter.style.display = 'none';
			}
			//文本框按键抬起
			objInput.onkeyup = checkKeyCode;
			//文本框得到焦点
			//objInput.onfocus = checkAndShow;
		}
	
		function checkKeyCode() {
			var ie = (document.all) ? true : false
			if (ie) {
				obj = event.srcElement;
				var keyCode = event.keyCode;
				if(keyCode == 40 || keyCode == 38) { //下上
					var isUp = false;
					if(keyCode == 40) isUp = true;
					chageSelection(isUp);
				}
				else if(keyCode==13) {//回车
					if(selectedIndex == -1) {
						checkAndShow();
					}
					else {
						outSelection(obj,selectedIndex);
						doCallback(selectedIndex);
						selectedIndex = -1;
					}
				}
				else {
					//checkAndShow();
				}
			}
			else{
				checkAndShow();
			}
			divPosition();
		}
	
	    var objList; //返回值列表，每个成员是一个结构
	    
	    function doCallback(index)
	    {
	    	if(callbackFunc != "na") {
//	    		alert(JSON.stringify(objList[index]));
    			eval(callbackFunc + "(" + document.activeElement.list + "," + JSON.stringify(objList[index]) + ")");
	    	}
	    }
	    
		function checkAndShow() {
		    var objInput = null;
		    
		    //for(i=0;i<document.all.tags('INPUT').length;i++) 
		    //{
		        if(document.activeElement.islist=="true") {
		            objInput = document.activeElement;
		            var objInputId = objInput.id;
		            var objListFunc = arrList[objInput.list];
		            var func = objListFunc+"('" + objInput.value + "')"
		            //alert(objInput.list);
		            objList = eval(func);
		            setOptionValue(objList);
		        }
		    //}
		    
			//alert(objList[0].searchText + '  ' + objList[0].displayText);
		    if(objInput!=null) {
				var strInput = objInput.value
			  	if (strInput!="") {
					divPosition();
					selectedIndex=-1;
					objouter.innerHTML ="";
					var maxNumber = 20;
					var index = 0;
					for (intTmp=0;intTmp<objList.length;intTmp++) {
						//for(i=0;i<objList[intTmp].length;i++) {
							//if (objList[intTmp].substr(i, strInput.length).toUpperCase()==strInput.toUpperCase()) {
							//	addOption(objList[intTmp], strInput);
							//}
						//}
						//if(pinEqual(objList[intTmp].searchText.toUpperCase(), strInput.toUpperCase()) && index < maxNumber) {
						if(index < maxNumber) {
							addOption(objList[intTmp].displayText, strInput, objInput.list, intTmp);
							index ++;
						}
					}
					objouter.style.display='';
				}
				else{
					objouter.style.display='none';
				}
			}
			
			function addOption(value, keyw, list, index) {
				var v=value;//.replace(keyw,"<b><font color=red>"+keyw+"</font></b>");

				objouter.innerHTML +="<div id=optiondiv_"+index+" onmouseover=\"this.className='sman_selectedStyle'\" onmouseout=\"this.className=''\" onmousedown=\"optiondiv_onmousedown('"+objInputId+"','" + value + "','" + callbackFunc + "'," + list + "," + index + ")\">" + v + "</div>";
//				document.getElementById("optiondiv_" + index).setAttribute("onmousedown", optiondiv_onmousedown);
				
//				objouter.innerHTML +="<div id=option_"+index+" onmouseover=\"this.className='sman_selectedStyle'\" onmouseout=\"this.className=''\" onmousedown=\"document.getElementById('"+objInputId+"').value='" + value + "';window.focus();\">" + v + "</div>";
//				objouter.innerHTML +="<div id='optiondiv_"+index+"' onmouseover=\"this.className='sman_selectedStyle'\" onmouseout=\"this.className=''\">" + v + "</div>";
//				document.getElementById("optiondiv_" + index).setAttribute("ononmousedown", function() {
//					//document.getElementById(objInputId).value = v;
//					//window.focus();
//					alert("A");
//				});
			}
			
			function pinEqual(pinyin1, pinyin2)
			{
				var first = true;
				for(var i = 0; i < pinyin2.length; i++) {
					var j = i; j++;
					var pinyin20 = pinyin2.substring(i, j);
					var pos = pinyin1.indexOf(pinyin20);
					if(pos < 0) return false;
					if(first && pos != 0) return false;
					first = false;
					pos++;
					pinyin1 = pinyin1.substring(pos);
				}
				
				return true;
			}
		}
		
		function chageSelection(isUp)
		{
			if (objouter.style.display=='none') {
				objouter.style.display='';
			}
			else {
				if (isUp)
					selectedIndex++
				else
					selectedIndex--
			}
			
			var maxIndex = objouter.children.length-1;
			if (selectedIndex<0){selectedIndex=0}
			if (selectedIndex>maxIndex) {selectedIndex=maxIndex}

			for (intTmp = 0; intTmp <= maxIndex; intTmp++) {
				if (intTmp == selectedIndex) {
					objouter.children[intTmp].className="sman_selectedStyle";
				}
				else {
					objouter.children[intTmp].className="";
				}
			}
		}
		
		function outSelection(obj,Index)
		{
			if(!objouter.children[Index]) return;
			obj.value = objouter.children[Index].innerText;
			objouter.style.display='none';
		}
		
		function divPosition()
		{
		    var objInput=null;
		    
		    for(i=0;i<document.all.tags('INPUT').length;i++) 
		    {
		        if(document.activeElement.islist=="true"){
		            var objInput=document.activeElement;
		        }
		    }
		    
		    if(objInput!=null) {
				objouter.style.top = getAbsoluteHeight(objInput)+getAbsoluteTop(objInput);
				objouter.style.left = getAbsoluteLeft(objInput); 
				objouter.style.width = getAbsoluteWidth(objInput)
			}
		}
	}
	
	document.write("<div id='__smanDisp' style='position:absolute;display:none;" + this.style + "' onbulr> </div>");
	document.write("<style>.sman_selectedStyle{background-Color:#102681;color:#FFFFFF}</style>");
	
	function getAbsoluteHeight(ob) {
		return ob.offsetHeight;
	}
	
	function getAbsoluteWidth(ob) {
		return ob.offsetWidth;
	}
	
	function getAbsoluteLeft(ob) {
		var s_el=0;
		var el=ob;
		while(el) {
			s_el=s_el+el.offsetLeft;
			el=el.offsetParent;
		}
		return s_el;
	}
	
	function getAbsoluteTop(ob) {
		var s_el=0;
		var el=ob;
		while(el){
			s_el=s_el+el.offsetTop;
			el=el.offsetParent;
		}
		return s_el;
	}
}


