// Ver. 1.0 // key control must be added to next version function SRBox(parent_,options){ var me = this; if($(parent_) == null){alert("unknow element passed as parent - "+parent_); return} me.box_ = document.createElement('input'); me.div_ = document.createElement('div'); var opts = options || new Array(); me.cName = opts['class'] || 'SRBox'; me.phpPath = opts['path'] || 'e/exec_srbox.php'; me.phpOpt = opts['opt'] || 'test'; me.onEnter = opts['enter'] || function(){}; me.box_.className = me.cName; me.box_.type='text'; me.box_.value = opts['value'] || ''; me.div_.className = me.cName; $(parent_).appendChild(me.box_); $(parent_).appendChild(me.div_); __regCircRef(me.box_,'parent_'); me.box_.parent_ = me; __regCircRef(me.div_,'parent_'); me.div_.parent_ = me; __addEventHnd(me.box_,"keyup",function(){me.showResult(me.box_.value)}); __addEventHnd(me.box_,"keydown",function(e){me.keydown(e)}); __addEventHnd(me.box_,"blur",function(){ window.setTimeout(function(){ me.div_.style.border=""; me.div_.innerHTML=""; me.div_.style.background=""; }, 200); }); } SRBox.prototype.value = function(){ return this.box_.value; } SRBox.prototype.setValue = function(val){ this.box_.value = val; } SRBox.prototype.showResult = function(str){ var me = this; if (str==''){ me.div_.innerHTML=""; me.div_.style.border="0px"; me.div_.style.background=""; return; } var xmlhttp = new XMLHttpRequestObj(); if (xmlhttp==null){ alert ("Your browser does not support XML HTTP Request"); return; } var url=me.phpPath; url=url+"?q="+str; url=url+"&opt="+me.phpOpt; url=url+"&sid="+Math.random(); __regCircRef(xmlhttp,'parent_'); xmlhttp.parent_ = me; xmlhttp.sc = SRBox_stateChanged; xmlhttp.x.onreadystatechange=function(){xmlhttp.sc()}; xmlhttp.x.open("GET",url,true); xmlhttp.x.send(null); } function SRBox_stateChanged(){ var me = this.parent_; if (this.x.readyState==4){ this.x.onreadystatechange = __nofunc; if((this.x.responseText.substring(0,5)=="error")){ showSysMsg(this.x.responseText); return }; if(this.x.responseText!=''){ me.div_.style.border="1px solid #A5ACB2"; me.div_.style.background="#f0faff"; me.parse(this.x.responseText); }else{ me.div_.style.border=""; me.div_.innerHTML=""; me.div_.style.background=""; } } } SRBox.prototype.keydown = function (evt){ var me = this; var e = window.event || evt; switch(e.keyCode){ case 40: // up break; case 38: // down break; case 13: // enter me.onEnter(); break; } } function SRBox_put(el){ var me = el || this; me.parent_.box_.value = me.innerHTML; me.parent_.box_.focus(); } function SRBox_divClear(el){ var me = el || this; me.parent_.div_.innerHTML=''; me.parent_.div_.style.border=''; } function SRBox_mover(){ var el = this; if(window.event){ var el = window.event.srcElement } el.className='SRBox_hl'; el.parent_.inDiv = true; } function SRBox_mout(){ var el = this; if(window.event){ var el = window.event.srcElement } el.className=''; el.parent_.inDiv = false; } function SRBox_click(){ var el = this; if(window.event){ var el = window.event.srcElement } SRBox_put(el); SRBox_divClear(el); } SRBox.prototype.parse = function(text){ var me = this; var oo = text.split(":"); me.div_.innerHTML = ''; var ul_ = document.createElement('ul'); for(var i=0; i