
var ttt;
var objOnchange;
function replaceSubObj(tagStr,subObjName,replaceText,replacetype)
{
 if (!tagStr||!subObjName) 
 {
   return tagStr;
 }
 var _tagStr=tagStr.toLowerCase();
 var startIndex=_tagStr.indexOf(" " + subObjName.toLowerCase() + "=");
 if (startIndex>0) 
 {
  var endIndex=_tagStr.indexOf(" ",startIndex+subObjName.length+2);
  if (endIndex==-1) 
  {
    endIndex=_tagStr.indexOf(">",startIndex+subObjName.length+2);
	if (endIndex==-1) 
	{
	  endIndex=_tagStr.length-1;
    }
  }//if (endInd...
  if (endIndex>startIndex)
  {
    if (replacetype&&replaceText)
    {
      _tagStr=tagStr.substring(startIndex+1,endIndex);
      _tagStr=_tagStr.replace(/javascript:/i,"");
      objOnchange =_tagStr.substring(subObjName.length+2,_tagStr.length-1);//保存原onchange
      replaceText=((_tagStr.charAt(_tagStr.length-1)=="\""||_tagStr.charAt(_tagStr.length-1)=="\'")?
 		           (_tagStr.charAt(_tagStr.length-1) + replaceText
				   + _tagStr.substring(subObjName.length+2,_tagStr.length-1)
				   + _tagStr.charAt(_tagStr.length-1))
		           :("\""+(replaceText 
				   + _tagStr.substring(subObjName.length+1,_tagStr.length)).replace(/\"/g,"\\\"")+"\"")
		          );
     replaceText= subObjName + "=" + replaceText;		          
   }
   else
   {
      replaceText=((replaceText)? (subObjName + "=\"" + replaceText + "\"") : (""));
   }

    tagStr=tagStr.substring(0,startIndex+1) 
           +replaceText
	 	   +tagStr.substr(endIndex);
  }
 }
else if (replacetype&&replaceText)
{
 endIndex=_tagStr.indexOf(">",0);
 if (endIndex==-1) 
	{
	  endIndex=_tagStr.length-1;
    }
 tagStr=tagStr.substring(0,endIndex)
       +" " + subObjName + "=\"" 
	   + replaceText.replace(/\"/g,"\\\"")
	   +"\">";
}
 return tagStr;
}
var ObjStoreStr;
function ctb(OBJ)
{
  //如果OBJ对象为空或不是要处理的SELECT对象，就退出
  if (!OBJ||OBJ.tagName.toUpperCase()!="SELECT") return true;  
  var oldName=OBJ.name;  
  var className=((OBJ.className)? "class=\"" + OBJ.className + "\"" : "");
  var objWidth=OBJ.offsetWidth;
  var objHeight=OBJ.offsetHeight;
  var tempStr1=OBJ.outerHTML;//整个下拉菜单<select>.....</select>
  ObjStoreStr=tempStr1;//保存原有<select>的内容。2002-06-25
  var endIndex=tempStr1.indexOf(">");
  if (endIndex==-1) return true;
  //取出<select ...>标签内容，并构造要替换的格式字符串
  var tempStr2
  tempStr2=tempStr1.substr(0,endIndex+1);//<select.............>到第一个<option>前
  tempStr1=tempStr1.substr(endIndex+1);//第一个<option>开始到</select>
  tempStr2=replaceSubObj(tempStr2,"onchange","try{document.all.item('"+ oldName +"_s').value=this.options[this.selectedIndex].text;document.all.item('"+ oldName +"_s').select();}catch(ex){}",1);//<select.............>到第一个<option>前
  tempStr2=replaceSubObj(tempStr2,"onmouseover","",0);//原为this.options[this.selectedIndex].text
  tempStr2=replaceSubObj(tempStr2,"onfocus","",0);
  tempStr2=replaceSubObj(tempStr2,"style","display:none;",1);//visibility:hidden
  //style.visibility ="hidden";
  tempStr1=tempStr2+tempStr1;
  if(objOnchange)
     objOnchange=objOnchange.replace(/this/g,oldName);//将原onchange中的关键字this替换成实名
  tempStr1='<span id="' + oldName + '_p"  style="POSITION: relative; WIDTH: ' + objWidth + 'px; HEIGHT:'+(objHeight-4)+'px;left:0;top:0;">'
          +'<div style="POSITION: absolute; WIDTH: ' + objWidth + 'px; Z-INDEX: 0;top:0px; CLIP: rect(0px  ' + (objWidth-2) + 'px ' + (objHeight-1) + 'px ' + (objWidth-18) + 'px);">'
          + tempStr1
          +'</div>'
          +'<input type="text" name="' + oldName + '_s" id="' + oldName + '_s" ' + className 
          +' autocomplete="off" style="POSITION: relative;top:0px; width:'
          + (objWidth-7) +'px;height:'+ (objHeight-6) 
          +'px; Z-INDEX: 2; padding-left:3px;" '
          +' onkeydown="selectitem('+oldName+');" onfocus="this.select();" onfocusout="setText('+oldName+');'+objOnchange+';" >'
	      +'</span>';
    OBJ=OBJ.parentElement;
    OBJ.innerHTML=unescape(tempStr1);
}

function selectitem(obj)
{
        var textobj=document.all.item(obj.name+'_s');
        var selectobj=document.all.item(obj.name);
        if(selectobj.length==0)
            selectobj.selectedIndex=0;
        else if(event.keyCode=="38")
        {    
            if(selectobj.selectedIndex==0)
                selectobj.selectedIndex=selectobj.length-1;
            else
                selectobj.selectedIndex--;
            textobj.value=selectobj.options[selectobj.selectedIndex].text;
        }
        else if(event.keyCode=="40")
         {
            if(selectobj.selectedIndex==selectobj.length-1)
                selectobj.selectedIndex=0;
            else
                selectobj.selectedIndex++;
           textobj.value=selectobj.options[selectobj.selectedIndex].text;
         }
         else
         {
              if (ttt)
                window.clearTimeout(ttt);
              ttt=window.setTimeout("eval(\"_selectitem('"+obj.name+"')\")",0);
          }
          return true;//916735 283
}

function _selectitem(obj)
{
    obj=document.all.item(obj);
    if (obj)
    {
        var textobj=document.all.item(obj.name+'_s');
        var selectobj=document.all.item(obj.name);
        var str=""
        if(textobj && textobj.value)
            str=textobj.value.replace(/^\s*/g,'').replace(/\s*$/g,'');
        if (str&&selectobj)
        {
           var str2;
           selectobj.selectedIndex=-1;
           for (var i=0;i<selectobj.length;i++)
            {
               str2=selectobj.options[i].text;
               if ((str2.search(new RegExp(str,"i"))==0))
               {
	             selectobj.selectedIndex=i;
	             if (str.length<str2.length)
		         {
	               textobj.value=str2;
	               selectText(str.length,textobj.value.length,textobj)
		         }
             }
	      }
       }
  }
}

function setText(obj)
{
    _setText(obj.name);
	return true;
}

function _setText(obj)
{
  obj=document.all.item(obj);
    if (obj)
    {
        var spanobj=document.all.item(obj.name+'_p');
        
        var textobj=document.all.item(obj.name+'_s');
        var str="";
        if(textobj && textobj.value)
            str=textobj.value.replace(/^\s*/g,'').replace(/\s*$/g,'');
        var selectobj=document.all.item(obj.name);
        var _check=false

        for(i=0;i<selectobj.length;i++)
        {
            if(selectobj.options[i].text==str && str!='')
            {		
                str2=selectobj.options[i].text;
                textobj.value=str2;
                _check=true;
            }
        }
        if (!_check&&str!='')
	        {
	            textobj.select();
	            textobj.focus();
	            textobj.value=selectobj.options[0].text;
	        }
    }
}

function selectText(sp,ep,obj) 
{ 
    sp = parseInt(sp) 
    ep = parseInt(ep) 

    if(isNaN(sp)||isNaN(ep)) 
    return; 

    var rng = obj.createTextRange(); 

    rng.moveEnd("character",obj.value.length*-1) 
    rng.moveStart("character",obj.value.length*-1) 

    rng.collapse(true); 

    rng.moveEnd("character",ep) 
    rng.moveStart("character",sp) 

    rng.select(); 
}
