/*
  $Id: powersearch.js,v 1.2 2006/07/24

  TMEDIA, cross communications
  http://www.oscommerce-admin.de

  Copyright (c) 2006 TMEDIA

  Released under the GNU General Public License
*/



var powerSearchReq = false;
var t = null;
var powerSearchLast = "";
var powerSearchPosition = -1;
var powerSearchPositionLast = -1;
var oldspin = '';
var sp = null;


var isIE = false;
// on !IE we only have to initialize it once
if (window.XMLHttpRequest) {
	powerSearchReq = new XMLHttpRequest();
}

function powerSearchInit() {
        var psearch = document.getElementById('powerSearch');

        if (psearch) {
		if (navigator.userAgent.indexOf("Safari") > 0) {
			psearch.addEventListener("keydown",powerSearchKeyPress,false);
//			psearch.addEventListener("blur",powerSearchHide,false);
		} else if (navigator.product == "Gecko") {
			psearch.addEventListener("keypress",powerSearchKeyPress,false);
			psearch.addEventListener("blur",powerSearchHideDelayed,false);
		} else {
			psearch.attachEvent('onkeydown',powerSearchKeyPress);
			psearch.attachEvent("onblur",powerSearchHideDelayed,false);

			isIE = true;
		}

		psearch.setAttribute("autocomplete","off");
                if (ps_autofocus == true) {
                	psearch.focus();
                }
	}
}

function powerSearchHideDelayed() {
	window.setTimeout("powerSearchHide()",400);
}

function powerSearchHide() {
	document.getElementById("PSResult").style.display = "none";
	var highlight = document.getElementById("PSHighlight");
	if (highlight) {
		highlight.removeAttribute("id");
	}
}

function powerSearchKeyPress(event) {


        // BACKSPACE
       if ((event.keyCode == 8 ) || (event.keyCode == 46 )) {

           powerSearchStart();
        }

	//PAGE DOWN
	if (event.keyCode == 34 ) {
 		node = document.getElementById("PSPageDown");
                if (node) {
                  var href = node.href;
                  href = href.replace(/javascript:/, '');
                  eval(href);
                }
        }

	//PAGE UP
	if (event.keyCode == 33 ) {
 		node = document.getElementById("PSPageUp");
                if (node) {
                  var href = node.href;
                  href = href.replace(/javascript:/, '');
                  eval(href);
                }
        }

	//KEY DOWN
	if (event.keyCode == 40 ) {
		highlight = document.getElementById("PSHighlight");
		if (!highlight) {
			highlight = document.getElementById("PSResult").firstChild.firstChild.firstChild;
                        if (highlight.getAttribute("id") == 'PSHead') {
  			  highlight = highlight.nextSibling;
                        }
		} else {
	      		highlight.removeAttribute("id");
                        oldhighlight = highlight;
			highlight = highlight.nextSibling;
                        if (highlight) {
                          if (highlight.getAttribute("id") == 'PSNext') {
        		    highlight = highlight.nextSibling;
                          }
                        } else {
                          highlight = oldhighlight;
                        }

		}
		if (highlight) {
			highlight.setAttribute("id","PSHighlight");
		}
		if (!isIE) { event.preventDefault(); }
	}
	//KEY UP
	else if (event.keyCode == 38 ) {
		highlight = document.getElementById("PSHighlight");
		if (!highlight) {
			highlight = document.getElementById("PSResult").firstChild.firstChild.lastChild;
		}
		else {
                        if (highlight.previousSibling.getAttribute("id") != 'PSHead') {
  			  highlight.removeAttribute("id");
			  highlight = highlight.previousSibling;
                          if (highlight.getAttribute("id") == 'PSNext') {
  			    highlight = highlight.previousSibling;
                          }
                        }

		}
		if (highlight) {
				highlight.setAttribute("id","PSHighlight");
		}
		if (!isIE) { event.preventDefault(); }
	}
	//ESC
	else if (event.keyCode == 27) {
		highlight = document.getElementById("PSHighlight");
		if (highlight) {
			highlight.removeAttribute("id");
		}
		document.getElementById("PSResult").style.display = "none";
	}
}

function powerRemoveHighlight() {
	highlight = document.getElementById("PSHighlight");
	if (highlight) {
		highlight.removeAttribute("id");
	}
}

function powerSearchStart() {
	if (t) {
		window.clearTimeout(t);
	}
        powerSearchPosition = -1;
        t = window.setTimeout("powerSearchDoSearch()",200);
}

function powerSearchStartNext(position) {
	highlight = document.getElementById("PSHighlight");
	if (highlight) {
		highlight.removeAttribute("id");
	}

	if (t) {
		window.clearTimeout(t);
	}
        powerSearchPosition = position;
        t = window.setTimeout("powerSearchDoSearch()",200);
}

function powerSearchDoSearch() {

	if (typeof powerSearchRoot == "undefined") {
		powerSearchRoot = "";
	}
	if (typeof powerSearchRootSubDir == "undefined") {
		powerSearchRootSubDir = "";
	}
	if (typeof powerSearchParams == "undefined") {
		powerSearchParams2 = "";
	} else {
		powerSearchParams2 = "&" + powerSearchParams;
	}

	if ((powerSearchLast != document.forms.searchform.q.value) || ((powerSearchPosition >= 0) && (powerSearchPosition != powerSearchPositionLast)) ) {




	if (powerSearchReq && powerSearchReq.readyState < 4) {
		powerSearchReq.abort();
	}



	if ( document.forms.searchform.q.value == "") {
		powerSearchHide();
		return false;
	}


	if (window.XMLHttpRequest) {
	// branch for IE/Windows ActiveX version
	} else if (window.ActiveXObject) {
		powerSearchReq = new ActiveXObject("Microsoft.XMLHTTP");
	}

 	powerSearchReq.onreadystatechange= powerSearchProcessReqChange;

        if (ps_spinner != 'none') {
    	  var  spin = document.getElementById("ps_goSearch");
          if(spin) {
            if (sp) {
	      window.clearTimeout(sp);
              sp = window.setTimeout("changeSpin()",800);
     	    } else {
              oldspin = spin.src;
              spin.src = ps_spinner;
            }
          }
        }


        if (powerSearchPosition < 0) {
  	  powerSearchReq.open("GET", powerSearchRoot + "/powersearch.php?q=" + document.forms.searchform.q.value + powerSearchParams2);
          powerSearchPositionLast = -1;
          powerSearchPosition = -1;
        } else {
  	  powerSearchReq.open("GET", powerSearchRoot + "/powersearch.php?q=" + document.forms.searchform.q.value + powerSearchParams2 + "&mp=" + powerSearchPosition);
          powerSearchPositionLast = powerSearchPosition;
          document.forms.searchform.q.focus();
        }

        if ( (!sp) && (spin) && (ps_spinner != 'none')) {
          sp = window.setTimeout("changeSpin()",800);
        }

	powerSearchLast = document.forms.searchform.q.value;
	powerSearchReq.send(null);
	}
}

function changeSpin() {
  var  spin = document.getElementById("ps_goSearch");
  spin.src = oldspin;
  sp=null;
}

function powerSearchProcessReqChange() {
	if (powerSearchReq.readyState == 4) {
		var  res = document.getElementById("PSResult");
		res.style.display = "block";
		res.innerHTML = powerSearchReq.responseText;
	}
}

function powerSearchSubmit() {
  var highlight = document.getElementById("PSHighlight");
  var child = highlight.firstChild.nextSibling.firstChild;

  if (highlight && child) {
    window.location = powerSearchRoot + powerSearchRootSubDir + child.getAttribute("href");
    return false;
  }
  else {
    return true;
  }
}

function powerSearchPopup(url) {
  window.open(url,'powerSearchPopup','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=450,height=340,screenX=150,screenY=150,top=150,left=150')
}

