function sack(file){this.xmlhttp=null;this.resetData=function(){this.method="POST";this.queryStringSeparator="?";this.argumentSeparator="&";this.URLString="";this.encodeURIString=true;this.execute=false;this.element=null;this.elementObj=null;this.requestFile=file;this.vars=new Object();this.responseStatus=new Array(2);};this.resetFunctions=function(){this.onLoading=function(){};this.onLoaded=function(){};this.onInteractive=function(){};this.onCompletion=function(){};this.onError=function(){};this.onFail=function(){};};this.reset=function(){this.resetFunctions();this.resetData();};this.createAJAX=function(){try{this.xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");}catch(e1){try{this.xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}catch(e2){this.xmlhttp=null;}}
if(!this.xmlhttp){if(typeof XMLHttpRequest!="undefined"){this.xmlhttp=new XMLHttpRequest();}else{this.failed=true;}}};this.setVar=function(name,value){this.vars[name]=Array(value,false);};this.encVar=function(name,value,returnvars){if(true==returnvars){return Array(encodeURIComponent(name),encodeURIComponent(value));}else{this.vars[encodeURIComponent(name)]=Array(encodeURIComponent(value),true);}}
this.processURLString=function(string,encode){encoded=encodeURIComponent(this.argumentSeparator);regexp=new RegExp(this.argumentSeparator+"|"+encoded);varArray=string.split(regexp);for(i=0;i<varArray.length;i++){urlVars=varArray[i].split("=");if(true==encode){this.encVar(urlVars[0],urlVars[1]);}else{this.setVar(urlVars[0],urlVars[1]);}}}
this.createURLString=function(urlstring){if(this.encodeURIString&&this.URLString.length){this.processURLString(this.URLString,true);}
if(urlstring){if(this.URLString.length){this.URLString+=this.argumentSeparator+urlstring;}else{this.URLString=urlstring;}}
this.setVar("rndval",new Date().getTime());urlstringtemp=new Array();for(key in this.vars){if(false==this.vars[key][1]&&true==this.encodeURIString){encoded=this.encVar(key,this.vars[key][0],true);delete this.vars[key];this.vars[encoded[0]]=Array(encoded[1],true);key=encoded[0];}
urlstringtemp[urlstringtemp.length]=key+"="+this.vars[key][0];}
if(urlstring){this.URLString+=this.argumentSeparator+urlstringtemp.join(this.argumentSeparator);}else{this.URLString+=urlstringtemp.join(this.argumentSeparator);}}
this.runResponse=function(){eval(this.response);}
this.runAJAX=function(urlstring){if(this.failed){this.onFail();}else{this.createURLString(urlstring);if(this.element){this.elementObj=document.getElementById(this.element);}
if(this.xmlhttp){var self=this;if(this.method=="GET"){totalurlstring=this.requestFile+this.queryStringSeparator+this.URLString;this.xmlhttp.open(this.method,totalurlstring,true);}else{this.xmlhttp.open(this.method,this.requestFile,true);try{this.xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded")}catch(e){}}
this.xmlhttp.onreadystatechange=function(){switch(self.xmlhttp.readyState){case 1:self.onLoading();break;case 2:self.onLoaded();break;case 3:self.onInteractive();break;case 4:self.response=self.xmlhttp.responseText;self.responseXML=self.xmlhttp.responseXML;self.responseStatus[0]=self.xmlhttp.status;self.responseStatus[1]=self.xmlhttp.statusText;if(self.execute){self.runResponse();}
if(self.elementObj){elemNodeName=self.elementObj.nodeName;elemNodeName.toLowerCase();if(elemNodeName=="input"
||elemNodeName=="select"
||elemNodeName=="option"
||elemNodeName=="textarea"){self.elementObj.value=self.response;}else{self.elementObj.innerHTML=self.response;}}
if(self.responseStatus[0]=="200"){self.onCompletion();}else{self.onError();}
self.URLString="";break;}};this.xmlhttp.send(this.URLString);}}};this.reset();this.createAJAX();}
$(document).ready(function(){$("#st_search_input").attr("autocomplete","off");});var ajaxBox_offsetX=0;var ajaxBox_offsetY=0;var ajax_list_externalFile='smart_dynamic_search.php';var minimumLettersBeforeLookup=3;var ajax_list_objects=new Array();var ajax_list_cachedLists=new Array();var ajax_list_activeInput=false;var ajax_list_activeItem;var ajax_list_optionDivFirstItem=false;var ajax_list_currentLetters=new Array();var ajax_optionDiv=false;var ajax_optionDiv_iframe=false;var ajax_list_MSIE=false;if(navigator.userAgent.indexOf('MSIE')>=0&&navigator.userAgent.indexOf('Opera')<0)ajax_list_MSIE=true;function ajax_getTopPos(inputObj)
{var returnValue=inputObj.offsetTop;while((inputObj=inputObj.offsetParent)!=null){returnValue+=inputObj.offsetTop;}
return returnValue;}
function ajax_list_cancelEvent()
{return false;}
function ajax_getLeftPos(inputObj)
{var returnValue=inputObj.offsetLeft;while((inputObj=inputObj.offsetParent)!=null)returnValue+=inputObj.offsetLeft;return returnValue;}
function ajax_option_setValue(e,inputObj)
{if(!inputObj)inputObj=this;var tmpValue=inputObj.innerHTML;if(ajax_list_MSIE)tmpValue=inputObj.innerText;else tmpValue=inputObj.textContent;if(!tmpValue)tmpValue=inputObj.innerHTML;ajax_list_activeInput.value=tmpValue;if(document.getElementById(ajax_list_activeInput.name+'_hidden'))document.getElementById(ajax_list_activeInput.name+'_hidden').value=inputObj.id;ajax_options_hide();}
function ajax_options_hide()
{ajax_optionDiv.style.display='none';if(ajax_optionDiv_iframe)ajax_optionDiv_iframe.style.display='none';}
function ajax_options_rollOverActiveItem(item,fromKeyBoard)
{if(ajax_list_activeItem)ajax_list_activeItem.className='optionDiv';item.className='optionDivSelected';ajax_list_activeItem=item;if(fromKeyBoard){if(ajax_list_activeItem.offsetTop>ajax_optionDiv.offsetHeight){ajax_optionDiv.scrollTop=ajax_list_activeItem.offsetTop-ajax_optionDiv.offsetHeight+ajax_list_activeItem.offsetHeight+2;}
if(ajax_list_activeItem.offsetTop<ajax_optionDiv.scrollTop)
{ajax_optionDiv.scrollTop=0;}}}
function ajax_option_list_buildList(letters,paramToExternalFile)
{ajax_optionDiv.innerHTML='';ajax_list_activeItem=false;if(ajax_list_cachedLists[paramToExternalFile][letters.toLowerCase()].length<=1){ajax_options_hide();return;}
ajax_list_optionDivFirstItem=false;var optionsAdded=false;for(var no=0;no<ajax_list_cachedLists[paramToExternalFile][letters.toLowerCase()].length;no++){if(ajax_list_cachedLists[paramToExternalFile][letters.toLowerCase()][no].length==0)continue;optionsAdded=true;var div=document.createElement('DIV');var items=ajax_list_cachedLists[paramToExternalFile][letters.toLowerCase()][no].split(/###/gi);if(ajax_list_cachedLists[paramToExternalFile][letters.toLowerCase()].length==1&&ajax_list_activeInput.value==items[0]){ajax_options_hide();return;}
div.innerHTML=items[items.length-1];div.id=items[0];div.className='optionDiv';div.onmouseover=function(){ajax_options_rollOverActiveItem(this,false)}
div.onclick=function(){document.location.href='product.php?productid='+this.id;};if(!ajax_list_optionDivFirstItem)ajax_list_optionDivFirstItem=div;ajax_optionDiv.appendChild(div);}
if(optionsAdded){ajax_optionDiv.style.display='block';if(ajax_optionDiv_iframe)ajax_optionDiv_iframe.style.display='';}
if(optionsAdded){ajax_optionDiv.style.display='block';if(ajax_optionDiv_iframe)ajax_optionDiv_iframe.style.display='';ajax_options_rollOverActiveItem(ajax_list_optionDivFirstItem,true);}}
function ajax_option_list_showContent(ajaxIndex,inputObj,paramToExternalFile)
{var letters=inputObj.value;var content=ajax_list_objects[ajaxIndex].response;var elements=content.split('|');ajax_list_cachedLists[paramToExternalFile][letters.toLowerCase()]=elements;ajax_option_list_buildList(letters,paramToExternalFile);}
function ajax_option_resize(inputObj)
{ajax_optionDiv.style.top=(ajax_getTopPos(inputObj)+inputObj.offsetHeight+ajaxBox_offsetY)+'px';ajax_optionDiv.style.left=(ajax_getLeftPos(inputObj)+ajaxBox_offsetX)+'px';if(ajax_optionDiv_iframe){ajax_optionDiv_iframe.style.left=ajax_optionDiv.style.left;ajax_optionDiv_iframe.style.top=ajax_optionDiv.style.top;}}
function ajax_showOptions(inputObj,paramToExternalFile,e)
{if(e.keyCode==13||e.keyCode==9)return;if(ajax_list_currentLetters[inputObj.name]==inputObj.value)return;if(!ajax_list_cachedLists[paramToExternalFile])ajax_list_cachedLists[paramToExternalFile]=new Array();ajax_list_currentLetters[inputObj.name]=inputObj.value;if(!ajax_optionDiv){ajax_optionDiv=document.createElement('DIV');ajax_optionDiv.id='ajax_listOfOptions';document.body.appendChild(ajax_optionDiv);if(ajax_list_MSIE){ajax_optionDiv_iframe=document.createElement('IFRAME');ajax_optionDiv_iframe.border='0';ajax_optionDiv_iframe.style.width=ajax_optionDiv.clientWidth+'px';ajax_optionDiv_iframe.style.height=ajax_optionDiv.clientHeight+'px';ajax_optionDiv_iframe.id='ajax_listOfOptions_iframe';document.body.appendChild(ajax_optionDiv_iframe);}
var allInputs=document.getElementsByTagName('INPUT');for(var no=0;no<allInputs.length;no++){if(!allInputs[no].onkeyup)allInputs[no].onfocus=ajax_options_hide;}
var allSelects=document.getElementsByTagName('SELECT');for(var no=0;no<allSelects.length;no++){allSelects[no].onfocus=ajax_options_hide;}
var oldonkeydown=document.body.onkeydown;if(typeof oldonkeydown!='function'){document.body.onkeydown=ajax_option_keyNavigation;}else{document.body.onkeydown=function(){oldonkeydown();ajax_option_keyNavigation();}}
var oldonresize=document.body.onresize;if(typeof oldonresize!='function'){document.body.onresize=function(){ajax_option_resize(inputObj);};}else{document.body.onresize=function(){oldonresize();ajax_option_resize(inputObj);}}}
if(inputObj.value.length<minimumLettersBeforeLookup){ajax_options_hide();return;}
ajax_optionDiv.style.top=(ajax_getTopPos(inputObj)+inputObj.offsetHeight+ajaxBox_offsetY)+'px';ajax_optionDiv.style.left=(ajax_getLeftPos(inputObj)+ajaxBox_offsetX)+'px';if(ajax_optionDiv_iframe){ajax_optionDiv_iframe.style.left=ajax_optionDiv.style.left;ajax_optionDiv_iframe.style.top=ajax_optionDiv.style.top;}
ajax_list_activeInput=inputObj;ajax_optionDiv.onselectstart=ajax_list_cancelEvent;if(ajax_list_cachedLists[paramToExternalFile][inputObj.value.toLowerCase()]){ajax_option_list_buildList(inputObj.value,paramToExternalFile);}else{ajax_optionDiv.innerHTML='';var ajaxIndex=ajax_list_objects.length;ajax_list_objects[ajaxIndex]=new sack();var url=ajax_list_externalFile+'?'+paramToExternalFile+'=1&letters='+inputObj.value.replace(" ","+");ajax_list_objects[ajaxIndex].requestFile=url;ajax_list_objects[ajaxIndex].onCompletion=function(){ajax_option_list_showContent(ajaxIndex,inputObj,paramToExternalFile);};ajax_list_objects[ajaxIndex].runAJAX();}}
function ajax_option_keyNavigation(e)
{if(document.all)e=event;if(!ajax_optionDiv)return;if(ajax_optionDiv.style.display=='none')return;if(e.keyCode==38){if(!ajax_list_activeItem)return;if(ajax_list_activeItem&&!ajax_list_activeItem.previousSibling)return;ajax_options_rollOverActiveItem(ajax_list_activeItem.previousSibling,true);}
if(e.keyCode==40){if(!ajax_list_activeItem){ajax_options_rollOverActiveItem(ajax_list_optionDivFirstItem,true);}else{if(!ajax_list_activeItem.nextSibling)return;ajax_options_rollOverActiveItem(ajax_list_activeItem.nextSibling,true);}}
if(e.keyCode==13||e.keyCode==9){if(ajax_list_activeItem&&ajax_list_activeItem.className=='optionDivSelected')ajax_option_setValue(false,ajax_list_activeItem);if(e.keyCode==13)return false;else return true;}
if(e.keyCode==27){ajax_options_hide();}}
$(document).ready(function(){$("body:not(#ajax_listOfOptions)").click(function(){$("#ajax_listOfOptions").fadeOut('fast');});});
