var AjaxSuggestionObj=new Array();
var ajaxInput=new Array();
/* andere globale Variablen */
var AjaxActive=false;
var TimeoutError=false;
var AjaxBatchList=new Array();
/* moegliche werte (Firefox,Netscape,Opera,Safari,MSIE) */
var Browser=false;
var activeSuggest="none";

function initAjaxSearch(){
try{
	ajaxInput[0] = document.getElementById("ajax_suche");
	addEvent(ajaxInput[0],"focus",function(){activeSuggest="suche";AjaxGotFocus(ajaxInput[0]);});	
	addEvent(ajaxInput[0],"blur",AjaxLostFocus);
	addEvent(ajaxInput[0],"blur",function(){activeSuggest="none";});
	
	
	ajaxInput[1] = document.getElementById("ajax_standortsuche");
	addEvent(ajaxInput[1],"focus",function(){activeSuggest="standorte";AjaxGotFocus(ajaxInput[1]);});
	addEvent(ajaxInput[1],"blur",AjaxLostFocus);
	addEvent(ajaxInput[1],"blur",function(){activeSuggest="none";});
	
	ajaxInput[0].setAttribute("autocomplete", "off");
	ajaxInput[1].setAttribute("autocomplete", "off");
} catch(e){}
}

function AjaxGotFocus(evtObj){
try{
	AjaxDestroySuggestion();
	AjaxSuggestionObj["Input"]=evtObj;
	if(evtObj.id=='ajax_standortsuche'){evtObj.value='';}
	addEvent(evtObj,"keyup",function(evt){AjaxHandleKeyPress(evt,evtObj);});
	AjaxHandleKeyPress(false,evtObj);
} catch(e){}
}

function AjaxLostFocus(){
try{
	AjaxDestroySuggestion();
	var evtObj=((activeSuggest=="suche")?ajaxInput[0]:((activeSuggest=="standorte")?ajaxInput[1]:false));
	if(evtObj.id == "ajax_standortsuche" && evtObj.value==""){evtObj.value=evtObj.defaultValue;}
	removeEvent(evtObj,"keyup",function(){});
	evtObj.onkeyup=null;
} catch(e){}
}

function AjaxHandleKeyPress(evt,obj){
try{
	var ajaxKeyCode = getEventKeyCode(evt);
	switch(ajaxKeyCode){
		case 40:AjaxMarkNxt(obj);break;//down
		case 38:AjaxMarkPrev(obj);break;// up
		case 37:break;// Pfeil recht 
		case 39:break;// Pfeil links 
		case 16:break;// Shift loesen nichts aus
		case 13:submitRealEntry();break;
		case 27:AjaxDestroySuggestion();break;// ESC klappt ajax zu
		default:(obj.value.length>=3)?(ajaxXMLRequest(((obj.id=="ajax_suche")?globalAjaxSucheUrl:globalAjaxStandortsucheUrl)+"&search="+obj.value,"AjaxHandleRequest(ajaxReq)")):AjaxDestroySuggestion();AjaxSuggestionObj["InputOldValue"]=obj.value;
	}
} catch(e){}
}

function submitRealEntry(){
try{
	document.location.href=AjaxSuggestionObj["Treffer"][ID].href;
	}catch(e){}
}

function AjaxHandleRequest(req){
try{
if(typeof closeWarenkorb=="function")
	closeWarenkorb();

var Sugg=new Array();
var Suggestions = req.responseXML.getElementsByTagName("suggestions")[0].getElementsByTagName("suggestion");
for(var i=0;i<Suggestions.length;i++){
	Sugg[i]=new Array(
		Suggestions[i].getElementsByTagName("title")[0].firstChild.nodeValue,
		Suggestions[i].getElementsByTagName("link")[0].firstChild.nodeValue);
}

if(Sugg.length>=1){
	if(!document.getElementById("ajaxstand"))
		AjaxCreateSuggestion();
	AjaxAddSuggestion(Sugg);
} else {
	AjaxDestroySuggestion();
}
} catch(e){}
}

function AjaxCreateSuggestion(){
try{
	var MainDiv = document.createElement("div");
		MainDiv.id="ajaxstand";
	var HeadlineDiv = document.createElement("div");
		HeadlineDiv.className = "header";
		AjaxSuggestionObj["Headline"]=HeadlineDiv;
		var HeadlineCntLink = document.createElement("a");
			HeadlineCntLink.href="Javascript:AjaxDestroySuggestion();";
		var HeadlineCloseImg = document.createElement("img");
			HeadlineCloseImg.style.border="0";
			if(activeSuggest == "suche")
				HeadlineCloseImg.src="/global_spar_hu/html/images/bt_ajax230.gif";
			else
				HeadlineCloseImg.src="/global_spar_hu/html/images/bt_ajax230.gif";
		HeadlineCntLink.appendChild(HeadlineCloseImg);
		HeadlineDiv.appendChild(HeadlineCntLink);
	var TrefferlisteUL = document.createElement("ul");
		AjaxSuggestionObj["Trefferliste"]=TrefferlisteUL;
	MainDiv.appendChild(HeadlineDiv);
	MainDiv.appendChild(TrefferlisteUL);
	AjaxSuggestionObj["MainDiv"]=MainDiv;
	if(activeSuggest=="suche"){
		document.getElementById("suche").appendChild(MainDiv);
	} else if(activeSuggest=="standorte"){
		document.getElementById("standortsuche").appendChild(MainDiv);
	}
} catch(e){}
}

function AjaxAddSuggestion(sugg){
try{
if(AjaxSuggestionObj["Trefferliste"].childNodes.length>0){
removeChildNodes(AjaxSuggestionObj["Trefferliste"]);
}

	AjaxSuggestionObj["Treffer"]=new Array();
	for(var i=0; i<sugg.length; i++){
	var ParLi = document.createElement("li");
	if(activeSuggest == "suche")
		ParLi.width = 230;
	else
		ParLi.width = 194;
		var Link = document.createElement("a");
		Link.href=sugg[i][1];
		Link.innerHTML=sugg[i][0];
		
		addEvent(Link,"mouseover",function(){removeEvent(ajaxInput[0],"blur",AjaxLostFocus);removeEvent(ajaxInput[1],"blur",AjaxLostFocus);});
		addEvent(Link,"mouseout",function(){addEvent(ajaxInput[0],"blur",AjaxLostFocus);addEvent(ajaxInput[1],"blur",AjaxLostFocus);});
		Link.id="suggestionEntry"+i;
		addEvent(Link,"mouseover",function(evt){AjaxMarkEntry(getEventSourceObject(evt).id.split("suggestionEntry").join(""));});
	ParLi.appendChild(Link);
	AjaxSuggestionObj["Trefferliste"].appendChild(ParLi);
	AjaxSuggestionObj["Treffer"][i]=Link;
	}
	
	
	if(Browser=="MSIE"&&Version<7)
		makeTopMost(AjaxSuggestionObj["MainDiv"]);
	AjaxSuggestionObj["LastSuggestionEntry"]=false;
} catch(e){}
}


function AjaxMarkNxt(){
try{
	if(AjaxSuggestionObj["LastSuggestionEntry"]===false){
		ID=0;
	} else if (((AjaxSuggestionObj["LastSuggestionEntry"]*1)+1)<AjaxSuggestionObj["Treffer"].length){
		ID=(AjaxSuggestionObj["LastSuggestionEntry"]*1)+1;
	} else {
		ID=0;
	}
	if(AjaxSuggestionObj["Treffer"][AjaxSuggestionObj["LastSuggestionEntry"]])
		AjaxSuggestionObj["Treffer"][AjaxSuggestionObj["LastSuggestionEntry"]].className="suggestionEntry";
	AjaxSuggestionObj["Treffer"][ID].className="suggestionEntry on";
	AjaxSuggestionObj["LastSuggestionEntry"]=ID;
	/* 
	if(activeSuggest=="standorte"){
		var sugInputText=AjaxSuggestionObj["Treffer"][ID].firstChild.nodeValue.split(",");
			AjaxSuggestionObj["Input"].value=sugInputText[1];
	} else if(activeSuggest=="suche"){
			AjaxSuggestionObj["Input"].value=AjaxSuggestionObj["Treffer"][ID].firstChild.nodeValue;
	}
	 */
	//markText(AjaxSuggestionObj["Input"],AjaxSuggestionObj["Treffer"][ID].firstChild.nodeValue,AjaxSuggestionObj["InputOldValue"]);
} catch(e){}
}

function AjaxMarkPrev(){
try{
	if(AjaxSuggestionObj["LastSuggestionEntry"]===false){
		ID=AjaxSuggestionObj["Treffer"].length-1;
	}
	if (((AjaxSuggestionObj["LastSuggestionEntry"]*1)-1)>=0){
		ID=(AjaxSuggestionObj["LastSuggestionEntry"]*1)-1;
	} else {
		ID=AjaxSuggestionObj["Treffer"].length-1;
	}
	if(AjaxSuggestionObj["Treffer"][AjaxSuggestionObj["LastSuggestionEntry"]])
		AjaxSuggestionObj["Treffer"][AjaxSuggestionObj["LastSuggestionEntry"]].className="suggestionEntry";
	AjaxSuggestionObj["Treffer"][ID].className="suggestionEntry on";
	AjaxSuggestionObj["LastSuggestionEntry"]=ID;
	/* 
	if(activeSuggest=="standorte"){
		var sugInputText=AjaxSuggestionObj["Treffer"][ID].firstChild.nodeValue.split(",");
			AjaxSuggestionObj["Input"].value=sugInputText[1];
	} else if(activeSuggest=="suche"){
			AjaxSuggestionObj["Input"].value=AjaxSuggestionObj["Treffer"][ID].firstChild.nodeValue;
	}
	 */
	//markText(AjaxSuggestionObj["Input"],AjaxSuggestionObj["Treffer"][ID].firstChild.nodeValue,AjaxSuggestionObj["InputOldValue"]);
} catch(e){}
}

function AjaxMarkEntry(ID){
try{
	for(var i=0;i<AjaxSuggestionObj["Treffer"].length;i++)
		if(i!=ID)
			AjaxSuggestionObj["Treffer"][i].className="suggestionEntry";
		else
			AjaxSuggestionObj["Treffer"][i].className="suggestionEntry on";
	/* 
	if(activeSuggest=="standorte"){
		var sugInputText=AjaxSuggestionObj["Treffer"][ID].firstChild.nodeValue.split(",");
			AjaxSuggestionObj["Input"].value=sugInputText[1];
	} else if(activeSuggest=="suche"){
			AjaxSuggestionObj["Input"].value=AjaxSuggestionObj["Treffer"][ID].firstChild.nodeValue;
	}
	 */
	//markText(AjaxSuggestionObj["Input"],AjaxSuggestionObj["Treffer"][ID].firstChild.nodeValue,AjaxSuggestionObj["InputOldValue"]);
	AjaxSuggestionObj["LastSuggestionEntry"]=ID;
} catch(e){}
}

function AjaxDestroySuggestion(){
try{
if(document.getElementById("ajaxstand")){
	try{
	var ajaxLayer = document.getElementById("ajaxstand");
	removeObject(ajaxLayer);
	removeTopMost(ajaxLayer);
	}catch(e){}
	try{
	AjaxActive=false;
	AjaxBatchList=new Array();
	ajaxReq.onreadystatechange=void(0);		
	AjaxSuggestionObj["LastSuggestionEntry"]=false;
	}catch(e){}
}
} catch(e){}
}

/* 
 * Ajaxrequest wrapper der sich um Timmouts und umd doppelte requests kuemmert 
 * standard Server timeout ist auf 10sek gestellt
 * aufruf beispiel: ajaxXMLRequest("index.xml","foobar(ajaxReq);fooobar(ajaxReq);");
 */
function ajaxXMLRequest(ajaxUrl,ajaxFkt,ErrorTimeout){
try{
	var defaultTimeout=10;
	if(AjaxActive) {AjaxActive=false;}
	if(AjaxActive){
		TimeoutErrorTime=(!ErrorTimeout)?defaultTimeout:ErrorTimeout;
		ajaxAddBatchJob(ajaxUrl,ajaxFkt,TimeoutErrorTime);
	} else {
	TimeoutErrorTime=(!ErrorTimeout)?defaultTimeout:ErrorTimeout;
	TimeoutError=window.setTimeout("ajaxXMLRequestTimeoutError('"+(ajaxUrl.split("'").join("\\\'"))+"');",(TimeoutErrorTime*1000));
	AjaxActive=true;
	if (window.XMLHttpRequest){
		ajaxReq = new XMLHttpRequest();
		ajaxReq.onreadystatechange = new Function("ajaxReady", "try{if(ajaxReq.readyState==4 && ajaxReq.status==200){"+ajaxFkt+";clearTimeout(TimeoutError);AjaxActive=false;ajaxNextBatchJob();}}catch(e){}");
		ajaxReq.open("GET", ajaxUrl, true);
		ajaxReq.send(null);
	}
	else if (window.ActiveXObject){
		ajaxReq = new ActiveXObject("Microsoft.XMLHttp");
		if (ajaxReq){
		ajaxReq.onreadystatechange = new Function("ajaxReady", "try{if(ajaxReq.readyState==4 && ajaxReq.status==200){"+ajaxFkt+";clearTimeout(TimeoutError);AjaxActive=false;ajaxNextBatchJob();}}catch(e){}");
			ajaxReq.open("GET", ajaxUrl, true);
			ajaxReq.send();
		}
	}
	}
}catch(e){
	try{
		ajaxReq.onreadystatechange=void(0);
		AjaxActive=false;
		ajaxNextBatchJob();
	}catch(e){}
}
}

/* aus der global */

/* fuegt de ajaxanfrage zur wrteliste hinzu */
function ajaxAddBatchJob(ajaxUrl,ajaxFkt,ErrorTimeout){
try{
	AjaxBatchList[AjaxBatchList.length]=new Array(ajaxUrl,ajaxFkt,ErrorTimeout);
}catch(e){}
}

/* fuehrt den naechsten request aus */
function ajaxNextBatchJob(){
try{
	if(AjaxBatchList.length>0){
		var newAjaxJob=AjaxBatchList.shift();
		ajaxXMLRequest(newAjaxJob[0],newAjaxJob[1],newAjaxJob[2]);
	}
}catch(e){}
}

/* ignoriert die fehlgeschlagene anfrage und fuehrt dei naechst in der liste aus */
function ajaxXMLRequestTimeoutError(URL){
try{
	ajaxReq.onreadystatechange=void(0);
	AjaxActive=false;
	ajaxNextBatchJob();
}catch(e){}
}

/*Cross-Browser Ereignis-Register Funktion (fuegt nur hinzu und ueberschreibt nicht) */
function addEvent(Obj,EvName,Fkt){
try{
	Obj=(Obj)?Obj:window;
	EvName=(EvName)?EvName:"load";
	Fkt=(Fkt)?Fkt:void(0);
	if (Obj.addEventListener){
		Obj.addEventListener(EvName,Fkt,false );
	}else if (Obj.attachEvent){
		Obj["e"+EvName+Fkt] = Fkt;
		Obj[EvName+Fkt] = function(){Obj["e"+EvName+Fkt](window.event);}
		Obj.attachEvent("on"+EvName,Obj[EvName+Fkt]);
		
	}
}catch(e){}
}

/*Cross-Browser Ereignis-Unregister Funktion loescht den event handler */
function removeEvent(Obj,EvName,Fkt){
try{
	Obj=(Obj)?Obj:window;
	EvName=(EvName)?EvName:load;
	Fkt=(Fkt)?Fkt:void(0);
	if (Obj.removeEventListener){
		Obj.removeEventListener( EvName, Fkt, false );
	}else if (Obj.detachEvent){
		Obj.detachEvent( "on"+EvName, Obj[EvName+Fkt] );
		Obj[EvName+Fkt] = null;
		Obj["e"+EvName+Fkt] = null;
	}
}catch(e){}
}

/* gibt den handel auf das Objekt zurueck dass das event ausgeloest hat*/
function getEventSourceObject(e){
try{
	return (e.target)?e.target:((typeof(window.event.srcElement)=="object")?window.event.srcElement:false); 
}catch(e){}
}

/* liefert den tastencode zu dem event zurueck */
function getEventKeyCode(e){
try{
	if (!e) var e = window.event;
	if (e.keyCode) return e.keyCode;
	else if (e.which) return e.which;
}catch(e){}
}

/* loescht alle Kindknoten zu einem Element */
function removeChildNodes(node){
try{
	for (var i=(node.childNodes.length-1);i>=0;i--){
		node.removeChild(node.childNodes[i]);
	}
}catch(e){}
}

/* setzt browserinformationen */
try{
if(window.XMLHttpRequest || window.ActiveXObject){
	HasAjax=true;
}

	if(navigator.userAgent.indexOf("Firefox/")>-1){
	var tmp = navigator.userAgent.match(/Firefox\/([0-9|.]{1,7})/g)[0].replace(/Firefox\//,"");
	Version = tmp.substr(0,tmp.indexOf("."))+"."+tmp.substr(tmp.indexOf("."),tmp.length).split(".").join("");
	Browser="Firefox";
	}
	else if(navigator.userAgent.indexOf("Netscape/")>-1){
	var tmp = navigator.userAgent.match(/Netscape\/([0-9|.]{1,7})/g)[0].replace(/Netscape\//,"");
	Version = tmp.substr(0,tmp.indexOf("."))+"."+tmp.substr(tmp.indexOf("."),tmp.length).split(".").join("");
	Browser="Netscape";
	}
	else if(navigator.userAgent.indexOf("Opera ")>-1){
	var tmp = navigator.userAgent.match(/Opera ([0-9|.]{1,7})/g)[0].replace(/Opera /,"");
	Version = VersionString.substr(0,tmp.indexOf("."))+"."+tmp.substr(tmp.indexOf("."),tmp.length).split(".").join("");
	Browser="Opera";
	}
	else if(navigator.userAgent.indexOf("Opera/")>-1){
	var tmp = navigator.userAgent.match(/Opera\/([0-9|.]{1,7})/g)[0].replace(/Opera\//,"");
	Version = tmp.substr(0,tmp.indexOf("."))+"."+tmp.substr(tmp.indexOf("."),tmp.length).split(".").join("");
	Browser="Opera";
	}
	else if(navigator.userAgent.indexOf("Safari/")>-1){
	var tmp = navigator.userAgent.match(/Safari\/([0-9|.]{1,7})/g)[0].replace(/Safari\//,"");
	Version = tmp.substr(0,tmp.indexOf("."))+"."+tmp.substr(tmp.indexOf("."),tmp.length).split(".").join("");
	Browser="Safari";
	}
	else if(navigator.userAgent.indexOf("MSIE ")>-1){
	var tmp = navigator.userAgent.match(/MSIE ([0-9|.]{1,4})/g)[0].replace(/MSIE /,"");
	Version = tmp.substr(0,tmp.indexOf("."))+"."+tmp.substr(tmp.indexOf("."),tmp.length).split(".").join("");
	Browser="MSIE";
	}
	else if(navigator.userAgent.indexOf("Mozilla/")>-1){
	var tmp = navigator.userAgent.match(/Mozilla\/([0-9|.]{1,7})/g)[0].replace(/Mozilla\//,"");
	Browser="Mozilla";
	Version = tmp.substr(0,tmp.indexOf("."))+"."+tmp.substr(tmp.indexOf("."),tmp.length).split(".").join("");
	}
if(location.protocol=='http:'){
	IsHTTPS=false;
}
else if(location.protocol=='https:'){
	IsHTTPS=true;
}
if(document.domain!=""){
	DomainName=document.domain;
} else {
	DomainName="unknown";
}
}catch(e){}

/* makiert den unterschied zwischen newText und oldText in einem Input element (Obj)*/
function markText(Obj,newText,oldText){
try{
	oldText=(oldText)?oldText:Obj.value;
	Obj.value=newText;
	if (Obj.createTextRange){
	var sRange = Obj.createTextRange();
		sRange.moveStart("character", oldText.length);
		sRange.moveEnd("character", newText.length);
		sRange.select();
		Obj.focus();
	} else {
		Obj.setSelectionRange(oldText.length,newText.length);
		Obj.focus();
	}
}catch(e){}
}

/* versteckt den IFRAME der in Topmost erzeugt wurde */
function removeTopMost(Obj){
	try{
	if(Obj.nextSibling && Obj.nextSibling.nodeName=="IFRAME"){
		Obj.nextSibling.style.display="none";
	}
	}catch(e){}
}

/* revovet das uebergebene Object*/
function removeObject(Obj){
try{
	if(Obj && Obj.parentNode) Obj.parentNode.removeChild(Obj);
}catch(e){}
}