/** Public source code for mini ajax functions snipped from http://www.bigbold.com/snippets/posts/show/2025 **/
var searchBox=null;
var fts_ajax={};
function $$$$(e){if(typeof e=="string"){e=document.getElementById(e);}return e;}
function collect(a,f){var n=[];for(var i=0;i<a.length;i++){var v=f(a[i]);if(v!==null){n.push(v);}}return n;}
fts_ajax.x=function(){try{return new ActiveXObject("Msxml2.XMLHTTP");}catch(ex1){try{return new ActiveXObject("Microsoft.XMLHTTP");}catch(ex2){return new XMLHttpRequest();}}};
fts_ajax.serialize=function(f){var g=function(n){return f.getElementsByTagName(n);};var nv=function(e){if(e.name){return encodeURIComponent(e.name)+"="+encodeURIComponent(e.value);}else{return"";}var i=collect(g("input"),function(i){if((i.type!="radio"&&i.type!="checkbox")||i.checked){return nv(i);}});var s=collect(g("select"),nv);var t=collect(g("textarea"),nv);return i.concat(s).concat(t).join("&");};};
fts_ajax.send=function(u,f,m,a){var x=fts_ajax.x();x.open(m,u,true);x.onreadystatechange=function(){if(x.readyState==4){f(x.responseText);}};if(m=="POST"){x.setRequestHeader("Content-type","application/x-www-form-urlencoded");}x.send(a);};
fts_ajax.get=function(url,func){fts_ajax.send(url,func,"GET");};
fts_ajax.gets=function(url){var x=fts_ajax.x();x.open("GET",url,false);x.send(null);return x.responseText;};
fts_ajax.post=function(url,func,args){fts_ajax.send(url,func,"POST",args);};
fts_ajax.update=function(url,elm){var e=$$$$(elm);var f=function(r){e.innerHTML=r;};
fts_ajax.get(url,f);};
fts_ajax.submit=function(url,elm,frm){var e=$$$$(elm);var f=function(r){e.innerHTML=r;};
fts_ajax.post(url,f,fts_ajax.serialize(frm));};
function getAbsPos(el,which){var iPos=0;while(el!==null){iPos+=el["offset"+which];el=el.offsetParent;}return iPos;}function getAbsX(el){return el.x?el.x:getAbsPos(el,"Left");}function getAbsY(el){return el.y?el.y:getAbsPos(el,"Top");}function addEvent(o,e,f){if(o.addEventListener){o.addEventListener(e,f,true);return true;}else if(o.attachEvent){o.attachEvent('on'+e,f);return true;}else{return false;}}
function killSearch(){$$$$("searchResultsDiv").style.display="none";}
function addResultsDiv(){var d1=document.createElement("div");d1.id="searchResultsDiv";
d1.style.display="none";
d1.style.position="absolute";
d1.style.zIndex="1000";
d1.style.top="172px";/*(getAbsY(searchBox)+2+searchBox.offsetTop+searchBox.clientHeight)+"px";*/
d1.style.left=getAbsX(searchBox)+"px";
if(dropDownAlignment=="right"){d1.style.marginLeft="-"+(dropDownWidth-searchBox.offsetWidth);}
d1.style.width=dropDownWidth+"px";
document.body.appendChild(d1);}
function setSearchValue(v){location.href=searchPath+"product.php?productid="+v;killSearch();}
function updateSearchResults(r){
  var products=r.split("\n");
  var resultCount=0;
  var o=$$$$("searchResultsDiv");
  var str="";
  var limit=(products.length>productLimit)?productLimit:products.length;
  for(var i=0;i<limit;i++){
    if(products[i]!==""){
      resultCount++;
      var tmp=products[i].split("::",3);
      str+="<div class=\"ftsSearchResult\" style=\"cursor: pointer; text-align: left; width: 100%\" onMouseDown=\"setSearchValue("+tmp[0]+");\" onMouseOver=\"this.className='ftsSearchResultSelected';\" onMouseOut=\"this.className='ftsSearchResult';\">"+tmp[1]+"</div>\n";
    }
  }
  if(products.length>productLimit){
    var formName="";
    if(document.productsearchform!==undefined){
      formName="document.productsearchform";
    }
    else if(document._search!==undefined){
      formName="document._search";
    }
    str+="<div class=\"ftsSearchResult\" style=\"text-align: left; width: 100%\" onMouseDown=\""+formName+".submit();\" style=\"cursor: pointer\" onMouseOver=\"this.className='ftsSearchResultSelected';\" onMouseOut=\"this.className='ftsSearchResult';\">More results...</div>\n";
  }
  o.innerHTML=str;
  if(resultCount>0&&!(resultCount==1&&products[0].toLowerCase()==searchBox.value.toLowerCase())){
    o.style.display="block";
  }
  else{killSearch();}
}
function getResults(v){
  fts_ajax.get(searchPath+"fts_instant_product_search.php?__p="+v,updateSearchResults);
}
function execSearch(){
  if(searchBox.value!==""){
    getResults(searchBox.value);
  }
  else{
    killSearch();
  }
}
function watchSearchBox(){
  addEvent(searchBox,"keyup",execSearch);
  addEvent(searchBox,"focus",execSearch);
  addEvent(searchBox,"blur",killSearch);
}
function pInit(){
  if(document.productsearchform!==undefined){
    searchBox=document.productsearchform.elements["posted_data[substring]"];
  }
  else if(document._search!==undefined){
    searchBox=document._search.elements.q;
  }
  addResultsDiv();
  watchSearchBox();
}
addEvent(window,"load",pInit);
