
var xmlhttp;
var xmlrequestsndx; 
var searchresult;
function handleHttpState(){
	if (xmlhttp.readyState == 4){ 
		try{
			if (xmlhttp.status == 200) {
                                searchresult=xmlhttp.responseText;                                
                                var popup=contentFrame.document.getElementById("searchSuggestionWindow");
			 	searchresult=entity_decode(searchresult);                             
                                popup.innerHTML=searchresult;
				xmlrequestsndx=null;		                                                             			
                                if (searchresult!='') { bubbleSearchSuggestion();}
			} 
		}catch(ss){}
	} 
} 

function get_data(term){
	  if(xmlhttp&&xmlhttp.readyState!=0){
			xmlhttp.abort()
		}

	try { 
		if (window.XMLHttpRequest) { // Mozilla, Safari, ...
    			xmlhttp = new XMLHttpRequest();
		} else if (window.ActiveXObject) { // IE
    			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
		catch(s){ }
		xmlhttp.onreadystatechange = handleHttpState;
                var mydomain=window.location.hostname;                
		xmlhttp.open("GET", "http://"+mydomain+"/cgi-bin/shop/search_suggestion.pl?search="+escape(term));
		xmlhttp.send(null);
		xmlrequestsndx=term;	
				
}

function entity_decode(term){
	term=term.replace(/&auml;/g,'ä');
	term=term.replace(/&ouml;/g,'ö');
	term=term.replace(/&uuml;/g,'ü');
	term=term.replace(/&Auml;/g,'Ä');
	term=term.replace(/&Ouml;/g,'Ö');
	term=term.replace(/&Uuml;/g,'Ü');
	term=term.replace(/&szlig;/g,'ß');
	term=term.replace(/&quot;/g,'"');
	term=term.replace(/&nbsp;/g,' ');
	term=term.replace(/&deg;/g,'°');
        term=term.replace(/&#181;/g,'µ');
        term=term.replace(/#181;/g,'µ');

        // immer letzte Ersetzung!
	term=term.replace(/&amp;/g,'&');
       
	return term;	
}

function checkSuggestions() {
  var suche=document.getElementById('searchInput');
  if (suche.value.length>=3) {
     get_data(suche.value); 
  }  
}  

function search_suggest(suggestion) {
  var suche=document.getElementById('searchInput');
  suche.value=suggestion;

}


var artikelsuche=cm_findFrame("artikelsuche");
var leftFrame=cm_findFrame("frmMenu1"); 
var contentFrame=cm_findFrame("ausgabe");
if (artikelsuche){leftFrame=artikelsuche;}
var aktiv;

/*********************************************************************
Function to find a spesified frame - loops all frames 3 levels deep 
(should be enough in most cases, I was to lazy to make a proper one)
*********************************************************************/
function cm_findFrame(frameName){
	obj=parent; var frameObj=0;
	for(i=0;i<obj.frames.length;i++){
		if(obj.frames[i].name==frameName){frameObj=obj.frames[i]; break;}; ln=obj.frames[i].frames.length
		for(j=0;j<ln;j++){
			if(obj.frames[i].frames[j].name==frameName){frameObj=obj.frames[i].frames[j];  break}; ln2=obj.frames[i].frames[j].frames.length
			for(a=0;a<ln2;a++){
				if(obj.frames[i].frames[j].frames[a].name==frameName){frameObj=obj.frames[i].frames[j].frames[a]; break}
			}
		}
	}return frameObj
}

function dontCloseSearchSuggestion() { 
   if (aktiv) {
     window.clearTimeout(aktiv);  
   }
 
}

function closeSearchSuggestion() {
  var a=contentFrame.document.getElementById("searchSuggestionWindow");
  if (a.style.visibility='visible') {
    a.style.visibility="hidden";
  }
//  var a=contentFrame.document.getElementById("dark");
//  if (a.style.display='inline') {
//    a.style.display="none";
//  }
}


function fireCloseSearchSuggestion(e) { 
  if (!e)  e = window.event;
  if (e!=null)  {
     var tg = (window.event) ? e.srcElement : e.target;
     if (tg==null) {return;}
     if (tg.nodeName == 'TBODY' || tg.nodeName == 'TABLE' || tg.nodeName=='TD' || tg.nodeName=='A')  {
       dontCloseSearchSuggestion();return;
     }   
  }
  if (aktiv) {
    window.clearTimeout(aktiv);  
  }
//  aktiv=window.setTimeout("closeSearchSuggestion()",10000);
}

function bubbleSearchSuggestion() {
  var suche=leftFrame.document.getElementById('searchInput');
  if (suche.value.length>=3) {  
  
    var ns = (navigator.appName.indexOf("Netscape") != -1);
    var el=contentFrame;

    var y = ns ? el.pageYOffset : el.document.body.scrollTop ;
    var x = ns ? el.pageXOffset : el.document.body.scrollLeft ;
    x=x+0;
    y=y+0;

    var a=contentFrame.document.getElementById("searchSuggestionWindow");
    a.style.top=y;
    a.style.left=x;
    a.style.visibility="visible";
    
   
//    var dark=contentFrame.document.getElementById("dark");
//    dark.style.height=contentFrame.document.body.scrollHeight;
//    dark.style.width=contentFrame.document.body.scrollWidth;
//    dark.style.display="inline";
  
   

       
  }
  if (aktiv) {
     window.clearTimeout(aktiv);  
   }  
}


function clickSearchSuggestion() {
  var suche=leftFrame.document.getElementById('searchInput');
  if (suche.value.length>=3) {  
  
    var ns = (navigator.appName.indexOf("Netscape") != -1);
    var el=contentFrame;

    var y = ns ? el.pageYOffset : el.document.body.scrollTop ;
    var x = ns ? el.pageXOffset : el.document.body.scrollLeft ;
    x=x+0;
    y=y+0;

    var a=contentFrame.document.getElementById("searchSuggestionWindow");
    a.style.top=y;
    a.style.left=x;
    if (searchresult) {a.innerHTML=searchresult;}
    a.style.visibility="visible";  
    
 
//    var dark=contentFrame.document.getElementById("dark");
//    dark.style.height=contentFrame.document.body.scrollHeight;
//    dark.style.width=contentFrame.document.body.scrollWidth;  
//    dark.style.display='inline';

  }  

  if (aktiv) {
    window.clearTimeout(aktiv);  
  }  
}



function showSearchSuggestion(e) {
  var keyOK=0;
  if (!e)  e = window.event;
  if (e) {
    if (e.keyCode>=49 && e.keyCode<=57) {keyOK=1;}  
    if (e.keyCode>=65 && e.keyCode<=90) {keyOK=1;}
    if (e.keyCode==8) {keyOK=1;} 
    if (keyOK==0) {return;}
  }
  var suche=leftFrame.document.getElementById('searchInput');
  if (suche.value.length>=3) {  
    get_data(suche.value); 
  } 
 
}



function startSearchSuggestion(contentFrameName,leftFrameName) {
  var searchDIV=document.getElementById("searchDIV");
  searchDIV.onmouseout=fireCloseSearchSuggestion; 
  var searchInput=document.getElementById("searchInput");
  searchInput.onkeyup=showSearchSuggestion;
}
