/* <![CDATA[ */
function MM_findObj(n, d) { //v4.01
	var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
	d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
	if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
	if(!x && d.getElementById) x=d.getElementById(n); return x;
}
/* ]]> */

/*
Popup Funktion

@param url	zu öffnende URL
@param name Name des Fensters
@param width Breite des Fensters
@param height Höhe des Fensters
@param top Abstand des Popups vom oberen Rand des Bildschirms
@param left Abstand des Popups vom linken Rand de Bildschirms
@param toolbar Toolbar anzeigen = yes nicht anzeigen = no
@param status Statusbar anzeigen = yes nicht anzeigen = no
@param scrollbars Scrollbalken anzeigen = yes nicht anzeigen = no
@param resize Größe des Fensters veränderbar = yes fixiert = no
*/
var win = null;
function windowOpen(url,name,width,height,top,left,toolbar,status,scrollbars,resize){

	//schliesse das fenster wenn es bereits geöffnet ist
	if( win != null )win.close();
	var attrib_str = 'toolbar='+toolbar+',width='+width+',height='+height+',top='+top+',left='+left+',directories=no,status='+status+',scrollbars='+scrollbars+',resize='+resize
	win = window.open(url,name,attrib_str);
	return true;
}


/*
Zählt bei Textarea Felder die noch verfügbaren
Zeichen runter

@param Anzahl der
@param Anzahl der max. Zahlen
@param ID des Formularfeldes
*/
function checkLen(val,zeichen,formid) {

objLen 		= document.getElementById("objLen");
formid	= document.getElementById(formid);

tmpLen		= zeichen - formid.value.length;

if(tmpLen >= 0) {
svobjComment = formid.value;
} else {
formid.value = svobjComment;
tmpLen = zeichen - svobjComment.length;
}
objLen.value = tmpLen;
}


/*
Zählt bei Textarea Felder die noch verfügbaren
Zeichen runter und zwar FÜR BELIEBIGE TEXTAREAS UND NICHT NUR FÜR DIE MIT ID objLen :-)

@param Objekt (Textarea)
@param Anzahl der max. Zahlen
@param ID des Ausgabefeldes
*/
function limitChars(obj,max,leftId)
{
if (obj.value.length > max) {
	obj.value = obj.value.substring(0,max);
	alert("Es dürfen nicht mehr als "+max+" Zeichen eingegeben werden");
}
iZeichen = max - obj.value.length

document.getElementById(leftId).value = iZeichen >= 0 ? iZeichen : 0;

}

/*
Inputfields replace values

Bei Bestellformularen oder ähnlichem wird in z.b. grauer Schrift
als value z.b. Anzahl und Bestell-Nummer angezeigt.
bei einem onclick event muß dieser zurückgesetzt werden und
evtl. der Style geändert werden.

@param neue TextFarbe
@param Array mit IDs der Inputfields welche zurückgesetzt werden sollen
@param Array MaxLength
*/
var finished = 0;
function inputFieldsChangeValue(textstyle, inputFields, maxLength){

	if(finished == 1){

		return;
	}
	for(i = 0; i < inputFields.length; i++){
			document.getElementById( inputFields[i] ).value = '';
			document.getElementById( inputFields[i] ).style.color = textstyle;
			document.getElementById( inputFields[i] ).maxLength = maxLength[i];
	}

	finished = 1;
}

/*
Funktion pr�ft, ob Text der Vorbelegung entspricht --> Text entfernen
sonstige Eingaben nicht l�schen 
Wenn Leer --> Text-Vorbelegung
*/
function inputFieldChangeText(textstyle,id,value){

	if (document.getElementById( id ).value == value){
		document.getElementById( id ).value = '';
		document.getElementById( id).style.color = textstyle;
		return;
	}
	
	if (document.getElementById( id ).value == ''){
		document.getElementById( id ).value = value;
		document.getElementById( id ).style.color = textstyle;
		return;
	}		
}



/*
Katalogbestellformular

übernehme Daten des kleinen Katalogbestellformulars wenn auf weitere Produkte geklickt wurde
@param modifier
*/
function getOrderNumbers(modifier){
	var f1, f3;
	//artikel 1
	if(document.getElementById( 'f2'+modifier ).value.match(/[0-9]+/)){
		if (!document.getElementById( 'f1'+modifier ).value.match(/[0-9]+/))
			f1 = 1;
		else
			f1 = document.getElementById( 'f1'+modifier ).value;
		document.getElementById( 'cat'+modifier ).href += '&f1='+f1+'&f2='+document.getElementById( 'f2'+modifier ).value;
	}

	//artikel 2
	if(document.getElementById( 'f4'+modifier ).value.match(/[0-9]+/)){
		if (!document.getElementById( 'f3'+modifier ).value.match(/[0-9]+/))
			f3 = 1;
		else
			f3 = document.getElementById( 'f3'+modifier ).value;
		document.getElementById( 'cat'+modifier ).href += '&f3='+f3+'&f4='+document.getElementById( 'f4'+modifier ).value;
	}

}

/*
Abfrage der Anzahl von Filialen im Umkreis einer Postleitzahl

Mittels Ajax-Request werden die Daten aus der MS abgefragt und in dem Container mit ID 'nr_of_stores' abgelegt

@param string plz
@param string land
*/
function getNrOfStores(plz,land){

	if( window.XMLHttpRequest ) {
          req = new XMLHttpRequest();
        } else if( window.ActiveXObject ) {
          req = new ActiveXObject( "Microsoft.XMLHTTP" );
        } else {
          return;
        }
        
        if ((plz.match(/[0-9]{4,5}/))){
	        req.open( "GET", '/index.html?f=chainstore.count&plz='+plz.substring(0,2), true );
	        req.onreadystatechange = callbackFiliale;
	        req.send( null );
		} else {
			document.getElementById("nr_of_stores").innerHTML = '';
		}
}

function callbackFiliale() {
	 if( 4 == req.readyState ) {
		if (200 == req.status){
			if (req.responseText != '0'){
				document.getElementById("nr_of_stores").innerHTML = 'Wir haben '+req.responseText+' Filialen in Ihrer Nähe gefunden';
			} else {
				document.getElementById("nr_of_stores").innerHTML = '';
			}
		}
	 }
}

/*
Prüffunktion für ISBN-Nummern aus dem Schulbuch-Bestellformular

@param string text
*/
function checkISBN(formular) {
	invalidNrs = "Ungültige ISBN-Nummer(n):\n\n";
	text = "Bitte prüfen Sie die ISBN-Nummer(n) (13 Ziffern) oder verwenden Sie die Suche (oben links) durch Eingabe des Autors bzw. Titels.";
	var count = 0;
	isbns = formular.elements["b[]"];
	anzahl = isbns.length;
	for (var i=0; i<anzahl; i++) {
		isbn = isbns[i].value;
		if (isbn!="") {
			if(isValidISBN(isbn)==false) {
				count++;
				invalidNrs = invalidNrs+isbn+"\n";
			}
		}
	}
	if (count>0) {
		alert(invalidNrs+"\n"+text);
		return false;
	} else {
		return true;
	}
}

/*
Prüffunktion für ISBN-10 und ISBN-13 Nummern

@param string isbn
*/
function isValidISBN(isbn) {
	// Eliminieren eventueller Bindestriche und Leerzeichen
	isbn = isbn.replace(/-/g, "");
	isbn = isbn.replace(/\s/g, "");
	// Format überprüfen

	if (isbn.search(/^\d{9}[\dx]$/i)!=-1) {
		isbnart = 10;
	}
	else if (isbn.search(/^\d{13}$/i)!=-1) {
		isbnart = 13;
	}
	else{
		return false;
	}

	arrIsbn = new Array(isbnart);
	for (i=0; i<isbnart; i++) {
		arrIsbn[i] = isbn.charAt(i);
	}
	if (arrIsbn[isbnart-1].toLowerCase() == "x") arrIsbn[isbnart-1] = 10;
	// Prüfsumme ermitteln
	if (isbnart == 10){
		summe = 0;
		for (i=0; i<10; i++) {
			summe += arrIsbn[i]*(10-i);
		}
		if ((summe%11)!=0)
			return false;
	}
	else if (isbnart == 13){
		summe = 0;
		for (i=0; i<12; i++) {
		//Der Multiplikator für dei einzelnen Ziffern ist abwechselnd 1 und 3
			$next_mult = 2*(i%2)+1;
	//		alert (arrIsbn[i]*$next_mult);
			summe += arrIsbn[i]*$next_mult;

		}
	//	alert (summe);
		prueffziffer = 10 - (summe%10);
	//	alert (prueffziffer);
		if ((prueffziffer == 10)&&(arrIsbn[12])!= 0){
			return false;
		}
		else if (prueffziffer != arrIsbn[12]) {
			return false;
		}

	}
	return true;
}

/*
Prüft die Bestellnummern der Katalogbestellungen ob diese >= 6 Stellen besitzt
und gibt bei einem Fehler einen Alertfenster mit einem Hinweistext aus
*/
function checkOrderNumbers(idTag,type)
{
	////////////////////////////
	//kleines Katalogbestellformular auf Homepage
	if(type == 1){
			value = document.getElementById( 'f2'+idTag ).value;
			//wenn value gesetzt prüfe auf länge
			if(value != ''){
				//gebe eine Meldung aus
				if(value.length <= 5 ){
					alert('Bestellnummern bestehen aus 6 bis 8 Zahlen.\nBitte korrigieren Sie Ihre Angaben.');
					return false;
				}
			}
			value = document.getElementById( 'f4'+idTag ).value;
			//wenn value gesetzt prüfe auf länge
			if(value != ''){
				//gebe eine Meldung aus
				if(value.length <= 5 ){
					alert('Bestellnummern bestehen aus 6 bis 8 Zahlen.\nBitte korrigieren Sie Ihre Angaben.');
					return false;
				}
			}
	}else{
	////////////////////////////
	//Großes Katalogbestellformular
		//durchlaufe die schleife solage bis iTag+1 = undefined und breche schleife ab
		for(i=1;i<100;i++){

			if(document.getElementById( idTag+i )){

				value = document.getElementById( idTag+i ).value;
				//wenn value gesetzt prüfe auf länge
				if(value != ''){
					//gebe eine Meldung aus
					if(value.length <= 5 ){
						alert('Bestellnummern bestehen aus 6 bis 8 Zahlen.\nBitte korrigieren Sie Ihre Angaben.');
						return false;
					}
				}
			}else{
				break;
			}
		}
	}
}

/**
Ersetzt die CSS Klasse eines Elementes
Wenn Objekt Class "first" tausche mit second und umgekehrt
Wird z.b. für Sys::dumpVar
@autor Markus Kamenew
@param id = id des Elements
@param first = default Klassenname
@param second = zweiter Klassenname

**/
function changeClass(id,first,secound){
	
	if( document.getElementById(id).className==first){
		document.getElementById(id).className=secound;
	}else{
		document.getElementById(id).className=first;
	}
}

/**
Generiert zufälligen Wert und prüft, ob er im übergebenen Wertebereich liegt
Wird z.b. für zufälliges Öffnen eines Popup benutzt (Sammler-Editionen)
@autor Oliver Deul
@param range = Wertebereich

**/
function my_rand(range){
	a=Math.random();
	a*=100;
	a=Math.ceil(a)
	if (a <= range)
		return true;
	else
		return false;		
}

/**
Ersetzt den Inhalt vom 1. Element mit dem Inhalt vom 2. Element und umgekehrt
und weist den neuen Inhalt den Elementen entsprechend zu
@autor Oliver Deul
@param id1 = id des 1. Elementes
@param id2 = id des 2. Elementes

**/
function flipContent (id1, id2){
	var content1 = document.getElementById(id1).innerHTML;
	var content2 = document.getElementById(id2).innerHTML;
	document.getElementById(id1).innerHTML = content2;
	document.getElementById(id2).innerHTML = content1;
}

/**
Liest in das Popup den Inhalt des im opener Fenster definierten Inhalt ein.
@autor Oliver Deul
@param id_opener = id des Elementes im opener Fenster
@param id_popup = id des Elements im Popup
@param add_head = Angaben, die im Header stehen können (Javacripts, css, etc.)

**/
function getContent (id_opener,id_popup){
	var content = opener.document.getElementById(id_opener).innerHTML;
	document.getElementById(id_popup).innerHTML = content;
}

/**
Konfiguration der Detailimagesslideshow.
@autor Oliver Deul

**/
var oMyDiv;
var isScrolling;
var DX;
var DELAY;

function initPage() {
	oMyDiv = document.getElementById( "divname" );
	isScrolling = false;
	DX = 50; 
	DELAY = 150;
};

/**
Scrollt die Slideshow nach links.
@autor Oliver Deul
@param evt = Initialisierungsparameter

**/
function scroll2Left( evt ) {
	if ( evt ) {
		isScrolling = true;
	}
	if ( isScrolling ) {
		if ( oMyDiv.scrollLeft > 0 ) {
			oMyDiv.scrollLeft -= DX;
			window.setTimeout( "scroll2Left()", DELAY );
		};
	};
};

/**
Scrollt die Slideshow nach rechts.
@autor Oliver Deul
@param evt = Initialisierungsparameter

**/
function scroll2Right( evt )
{
	if ( evt ) {
		isScrolling = true;
	}
	if ( isScrolling )
	{		
		oMyDiv.scrollLeft += DX;
		window.setTimeout( "scroll2Right()", DELAY );
	};
};

/**
schaltet das Scrolling aus.
@autor Oliver Deul

**/
function stopScrolling()
{
	isScrolling = false;
}


/**
Speicherbarer Warenkorb - Daten aus dem Cookie holen
**/
function getStorableCartData(){

		if( window.XMLHttpRequest ) {
          req = new XMLHttpRequest();
        } else if( window.ActiveXObject ) {
          req = new ActiveXObject( "Microsoft.XMLHTTP" );
        } else {
          return;
        }
        
        
	    req.open( "GET", '/index.html?f=cart.add&mode=sc', true );
	    req.onreadystatechange = callbackStorableCart;
	    req.send( null );

}
/*
Speicherbarer Warenkorb - Setzen der Anzeige Artikel im Warenkorb  
*/
function callbackStorableCart() {
	 if( 4 == req.readyState ) 
		if (200 == req.status){
			if (req.responseText != null && req.responseText != "0" && req.responseText != ""){
				values=req.responseText.split("|");
				if (values != null){
					if (values.length > 0)				
				    	if (document.getElementById("set_aiw") != null && values[0] != null){
				    		if (values[0].indexOf("fallback") == -1)
								document.getElementById("set_aiw").innerHTML = values[0];
							else
								document.getElementById("set_aiw").innerHTML = "0";
							}
					if (values.length > 1)
						if (document.getElementById("set_sav") != null)
							document.getElementById("set_sav").innerHTML = values[1];
				}
				if (window.location.href.indexOf('cart.wk') != -1){
					window.location.href=window.location.href;
				}	
			} 
		}
			
}


//100 milisekunden * suggestTime dann feuer
var suggestTime = 1;
var suggestCounter = 0;
var intervalObj = null;
var stopSuggestionAfterEnter = 0;
var dontRequestSuggestion = 0;
var maxCharforSuggestBox = 2;
var registerClickeventforBoxclosing = 0;
var BoxclosingonClick = 1;
var globalsuggestDiv = '';
var actualSerachphrase = '';
/*
Initalisiert die Suggestion
@textFieldId	id des Such-Inputfields
@width			breite des Vorschlagfelds
@height			höhe des Vorschlagfelds
@suggestDiv		id des Vorschlag-DIVs
@activeColor	Farbe wenn Div ausgewählt
@inactiveColor	Farbe wenn Div nicht ausgewählt
*/
function fireSuggestions(textFieldId,width,suggestDiv,activeColor,inactiveColor){

	// Globalisierung der Suggestbox
	globalsuggestDiv = suggestDiv;
	
	// aktuelle Eingabe speichern, wenn Zeichen im Suchfeld hinzugefügt oder entfernt werden:
	if (dontRequestSuggestion != 1) {
		actualSerachphrase = document.getElementById(textFieldId).value;
	}

	// registriere Clickevent zum Schliessen der Suggestbox
	if (registerClickeventforBoxclosing == 0){
		document.getElementById(suggestDiv).onmousedown = switchsuggestboxshow;
		document.onmouseup = closeSuggestorBoxEvent;
		registerClickeventforBoxclosing = 1;
	}

	suggestCounter = 0;

	//feuer pfeiltasten
	arrowKeyListener(textFieldId,suggestDiv,activeColor,inactiveColor);
		
	if(intervalObj == null)
		intervalObj = window.setInterval("suggestTimer('"+textFieldId+"','"+width+"','"+suggestDiv+"','"+activeColor+"','"+inactiveColor+"')", 100);
}

/*
Timer zählt nach Ablauf des Intervals suggestCounter +1 und feuert die Anfrage
wenn suggestTime < suggestCounter

@textFieldId	id des Such-Inputfields
@width			breite des Vorschlagfelds
@suggestDiv		id des Vorschlag-DIVs
@activeColor	Farbe wenn Div ausgewählt
@inactiveColor	Farbe wenn Div nicht ausgewählt
*/
function suggestTimer(textFieldId,width,suggestDiv,activeColor,inactiveColor){
	
	suggestCounter++;

	if(suggestCounter > suggestTime){
		suggestCounter = 0;
		window.clearInterval(intervalObj);
		intervalObj = null;
		//eventkeylistener aktivieren
		document.getElementById(textFieldId).onkeydown = keyEventListener;
		
		// Suggestlist erst nach bestimmter Anzahl (maxCharforSuggestBox) an Zeichen ein- bzw. ausblenden inkl. Searchrequest
		if (document.getElementById(textFieldId).value.length <= maxCharforSuggestBox) {
			document.getElementById(suggestDiv).innerHTML = "";
			dontRequestSuggestion = 1;
		}
		//vorschlagsliste anfordern
		if(dontRequestSuggestion == 0)
			getSuggestion(textFieldId,width,suggestDiv,activeColor,inactiveColor);	
	}
}

/*
wenn außerhalb der Suggestbox geklickt wurde, diese ausblenden:
Beim Event onmouseup wird geprüft, ob der onmousedown außerhalb der Suggestbox stattgefunden hat.
Falls ja, wird Box ausgeblendet, ansonsten geht es ganz normal weiter.
*/
function closeSuggestorBoxEvent() {
	if (document.getElementById(globalsuggestDiv).innerHTML != "" && BoxclosingonClick == 1) {
		document.getElementById(globalsuggestDiv).innerHTML = "";
	}
	BoxclosingonClick = 1;
}

/*
Hilfsfunktion zum Ausblenden der Suggestbox -> closeSuggestorBoxEvent()
*/
function switchsuggestboxshow() {
	BoxclosingonClick = 0;
}

/**
/**
Autosuggestion der Suche
führt einen Ajax-Request durch und zeigt das Vorschlagsfenster an

@textFieldId	id des Such-Inputfields
@width			breite des Vorschlagfelds
@height			höhe des Vorschlagfelds
@suggestDiv		id des Vorschlag-DIVs
@activeColor	Farbe wenn Div ausgewählt
@inactiveColor	Farbe wenn Div nicht ausgewählt
*/
function getSuggestion(textFieldId,width,suggestDiv,activeColor,inactiveColor){
	//return
	if(stopSuggestionAfterEnter)
		return;
	//hole input aus suchefeld
	searchPhrase = document.getElementById(textFieldId).value;
	
	//return wenn searchphrase leer
	if(searchPhrase.length == 0)
		document.getElementById(suggestDiv).innerHTML = "";
	
	if( window.XMLHttpRequest) {
		req = new XMLHttpRequest();
	} else if( window.ActiveXObject ) {
		req = new ActiveXObject( "Microsoft.XMLHTTP" );
	} else {
		return;
	}

	// Leerzeichen mitnehmen (request::trustnoone umgehen)
	var s_searchPhrase = searchPhrase.replace(/ /g, "###");
	
	req.open( "GET", '/index.html?f=search.getsuggestions&com='+encodeURIComponent(s_searchPhrase), true );
	//hole daten
	req.onreadystatechange = function(){getSuggestionBox(width,suggestDiv,searchPhrase,textFieldId,activeColor,inactiveColor);};	
	req.send( null );
}

/*
Erstelle die Dropdownbox

@width 			breite des divs
@suggestDiv 	id des Divs welches per innerHTML gefüllt werden soll
@searchPhrase 	Eingabetext des Users
@searchBox 		id des Sucheingabetextfelds
@activeColor		Farbe wenn Div ausgewählt
@inactiveColor	Farbe wenn Div nicht ausgewählt
*/
function getSuggestionBox(width,suggestDiv,searchPhrase,searchBox,activeColor,inactiveColor){
	 
	if( 4 == req.readyState ) {
		
	 	if (200 == req.status){
			jsonData = JSON.parse(req.responseText);
			suggestJson = jsonData.a.rs;
			if(suggestJson.length > 0){
				
				//erstelle rexEx Object
				var regObj = new RegExp("^("+searchPhrase+")",'i');
				
				//erstelle autocomplet div
				//height:"+height+"px;
				html = "<div id=\""+suggestDiv+"inner\" style=\"position:absolute;z-index:550;margin-left:-1px;background-color:white;border:1px solid #cccccc;width:"+width+"px;overflow:auto;\">"+
				"<div style=\"text-align:right;margin-right:2px\" class=\"text09\">Suchvorschl&auml;ge<a href=\"\" onclick=\"document.getElementById('"+suggestDiv+"').innerHTML='';return false;\"></div>";
			
				
				//durchlaufe ergebnisliste aus json
				for(i = 0;i<suggestJson.length;i++){
					
					search = suggestJson[i];
					
					if(search.match(regObj)){
						//substring des textstrings
						txt = suggestJson[i].substring(0,searchPhrase.length);
						search = search.replace(txt,"<b>"+txt+"</b>");
					}
					html += "<div onclick=\"fillSearchBox('"+searchBox+"','"+suggestJson[i]+"','"+suggestDiv+"')\" style=\"width:97%;padding: 1px 1px 1px 5px;cursor:pointer\" id=\"sug"+i+"\""+
					" onmouseover=\"overOut('sug"+i+"','"+activeColor+"',1)\" onmouseout=\"overOut('sug"+i+"','"+inactiveColor+"',0)\""+
					"  title=\""+suggestJson[i]+"\">"+
					"<a style=\"display:block;text-align:left;\" onclick=\"fillSearchBox('"+searchBox+"','"+suggestJson[i]+"','"+suggestDiv+"')\">"+
					""+search+"</a></div>";
				}
				html +="</div>";
				
				//insert div
				document.getElementById(suggestDiv).innerHTML = html;
			}else{
				//insert div
				document.getElementById(suggestDiv).innerHTML = "";
			}
		}
	 }
}

/*
Setze HintergrundFarbe der divs mit suchbegriffen

@idSuggest 	id des div
@color		Hintergrundfarbe
@inOut		true aktiv false inaktiv
*/
function overOut(idSuggest,color,inOut){
	
	if(inOut)
	{
		document.getElementById(idSuggest).style.backgroundColor = color;
	}else{
		document.getElementById(idSuggest).style.backgroundColor = color;
	}
}

var eventKeyCode = "";
/*
Textfeld der Suche füllen und gleich Suche abschicken

@box 			id des Textfelds
@searchSuggest	asugewählter Suchbegriff
@suggestDiv		id des großen Vorschlags-DIV
*/
function fillSearchBox(box,searchSuggest,suggestDiv){
	
	document.getElementById(box).value = searchSuggest;
	document.getElementById(suggestDiv).innerHTML = "";
	document.getElementById(box+"Button").click();
}

/*
KeyDownUp Listener um mit Pfeiltasten zu navigieren
*/
function arrowKeyListener(searchBoxObject,suggestDiv,activeColor,inactiveColor){
	
	active = 1;
	
	suggestObj = document.getElementById(suggestDiv+"inner");
	//event
	//wenn nicht leer
	if(eventKeyCode != "" && suggestObj != ""){
		divs = suggestObj.getElementsByTagName("div");
		
		//KeyCode down
		if(eventKeyCode == "down"){
			//durchlaufe divs
			for(i = 1; i < divs.length;i++){

				if(divs[i].style.zIndex == 1){
					active = i+1;
					divs[i].style.backgroundColor = inactiveColor;
					divs[i].style.zIndex = 0;
					break;
				}
			}
			//nun aktiviere nächstes div
			if(divs.length == active){
				active = 1;
				document.getElementById(searchBoxObject).value = actualSerachphrase;
			} else {
				divs[active].style.backgroundColor = activeColor;
				divs[active].style.zIndex = 1;
				document.getElementById(searchBoxObject).value = divs[active].title;
			}
		}
		
		//KeyCode up
		if(eventKeyCode == "up"){
			if (active == 1) {
				active = divs.length-1;
			}
			//durchlaufe divs
			for(i = (divs.length-1); i > 0;i--){
	
				if(divs[i].style.zIndex == 1){
					active = i-1;
					divs[i].style.zIndex = 0;
					divs[i].style.backgroundColor = inactiveColor;
					break;
				}
				
			}
			//nun aktiviere nächstes div
			if(active == 0){
				active = divs.length-1;
				document.getElementById(searchBoxObject).value = actualSerachphrase;
			} else {
				divs[active].style.backgroundColor = activeColor;
				divs[active].style.zIndex = 1;
				document.getElementById(searchBoxObject).value = divs[active].title;
			}
		}
		//KeyCode enter
		if(eventKeyCode == "enter"){
			//ausgewähltes div
			selectedDiv = "";
			//durchlaufe divs
			for(i = 1; i < divs.length;i++){
	
				if(divs[i].style.zIndex == 1){
					selectedDiv = divs[i];
					break;
				}
			}
			
			if(selectedDiv != ""){
				document.getElementById(searchBoxObject).value = selectedDiv.title;
				document.getElementById(searchBoxObject).style.zIndex = 1;
				document.getElementById(suggestDiv).innerHTML = "";
				eventKeyCode = "";
				stopSuggestionAfterEnter = 1;
			}
		}
	}
}

/*
Eventhandler Key up down
*/
function keyEventListener(ev){

	if(window.event){
		ev = window.event;
	}
	
	//up 38
	if(ev.keyCode == 38){
		eventKeyCode = "up";
		dontRequestSuggestion = 1;
	}
	//down 40
	else if(ev.keyCode == 40){
		eventKeyCode = "down";
		dontRequestSuggestion = 1;
	//enter 13
	}else if(ev.keyCode == 13){
		eventKeyCode = "enter";
	}else{
		eventKeyCode = "";
		dontRequestSuggestion = 0;
	}
}


/*
Fügt neue Bestellfelder dem Bestellformular hinzu

@param string field_length_small
@param string field_length_large
*/
function addOrderFields(field_length_small, field_length_large, host) {
	// Anzahl der Erhöhungen
	var add_more = 5; 
	// Maximale Anzahl der Felder
	var max_fields = 30;
	// Anzahl der aktuellen Bestellfelder
	var act_count = parseInt(document.direct_order_form.elem_count.value);
	// Abbruch, wenn schon max_fields vorhanden sind
	if (act_count >= max_fields) {
		return;
	}
	// neue Felder anhängen
	for (i = act_count; i < (act_count+add_more); i++) {
		var neuerdiv = document.createElement("div");
		neuerdiv.setAttribute("id","cat_order_form_"+(i+1),0);
		neuerdiv.innerHTML = '\n'
			+	'<img onClick="delLine('+(i+1)+')" id="delete$counter}" src="/lay/wbde/i_delete.gif" style="cursor:pointer;margin-left:20px;" class="f_l" />\n'
			+	'<input onfocus="last'+(i+1)+' = this.value;" onkeypress="jumpto(\'orderNumber'+(i+1)+'\',event);" onkeyup="if (isNaN(this.value)) this.value = last'+(i+1)+'; last'+(i+1)+' = this.value;" onChange="getNewPrice('+(i+1)+');" class="input_size25 cat_order_form_small" id="orderValue'+(i+1)+'"  name="ba[]" maxlength="'+field_length_small+'" type="text" />\n'
			+	'<input onfocus="last'+(i+1)+' = this.value;" onkeypress="jumpto(\'orderValue'+(i+2)+'\',event);" onkeyup="if (isNaN(this.value)) this.value = last'+(i+1)+'; last'+(i+1)+' = this.value;" onChange="searchArticle(\''+host+'/?f=catalog_order.ajaxsearcharticle\','+(i+1)+');" class="input_size60 cat_order_form_large"  id="orderNumber'+(i+1)+'"  name="b[]" maxlength="'+field_length_large+'"type="text" />\n'
			+	'<div id="cat_order_title_'+(i+1)+'" class="f_l cat_order_title"></div>\n'
			+	'<div id="cat_order_price_'+(i+1)+'" class="f_l cat_order_price"></div>\n'
			+	'<div id="cat_order_single_price_'+(i+1)+'" style="display:none;"></div>\n'
			+	'<img id="loader'+(i+1)+'" src="/lay/wbde/loader.gif" style="margin-left:3px;display:none;" class="f_l" />\n';
		var position = document.getElementById("cat_order_form_"+i);
		insertAfter(neuerdiv, position);
		document.getElementById("cat_order_form_"+(i+1)).className = "f_l v_top_small textleft";
		document.getElementById("cat_order_form_"+(i+1)).style.width = "100%";
		if ((act_count + add_more) == max_fields) {
			document.getElementById('add_more_fields').style.display = 'none';
		}
	}
	
	// Anzahl der Bestellfelder anpassen
	document.direct_order_form.elem_count.value = act_count + add_more;
}

/**
 * Fängt die Enter-Taste ab und springt dafür in das nächte Feld.
 * Falls alle Felder voll, füge per Enter neue Felder hinzu.
 * Beim letztem Feld (OrderNumber30), klicke auf den WK-Button.
 * 
 * WICHTIG: Damit diese Funktion korrekt funktionieren kann,
 * muss im Formular-Tag die Enter-Taste deaktiviert werden:
 * onkeypress="if (window.event) kc = window.event.keyCode; else kc = event.which; if (kc == 13) { return false; }"
 * @param jump
 * @param event
 * @return
 */
function jumpto(jump,event) {
	var kc = '';
	kc = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
	if (kc == 13) { 
		//if (field.name=="button") document.direct_order_form.submit();
		try {
			document.getElementById(jump).focus();
		} catch(err) {
			if (kc == 13) {
				try {
					document.getElementById('orderNumber30').focus();
					document.getElementById('orderbutton').click();
				} catch(err) {
					addOrderFields(2, 8, '');
				}
			}
		}
	}
}

	/**
	 * Katalog-Bestellformular. Befüllt automatisch die Liste mit dem zugehörigem Titel des Artikels und dem Preis.
	 * @param orderURL
	 * @param fieldId
	 * @return
	 */
	function searchArticle(orderURL,fieldId,loadnext) {
		
		//Initialisiere Variable
		var orderNumber	= document.getElementById("orderNumber"+fieldId);
		var orderValue	= document.getElementById("orderValue"+fieldId);
		var orderTitle	= document.getElementById("cat_order_title_"+fieldId);
		var orderButton = document.getElementById("orderbutton");
		
		//Initial alle Felder löschen, bis auf die OrderNumber
		document.getElementById("cat_order_single_price_"+fieldId).innerHTML = '';
		document.getElementById("cat_order_price_"+fieldId).innerHTML = '';
		document.getElementById("cat_order_title_"+fieldId).innerHTML = '';
		
		//Falls keine Bestellnummer eingegeben ist, oder Anzahl auf 0 gestellt wurde, lösche die ganze Zeile
		if(orderNumber.value == '' || orderValue <= 0 || orderNumber.value.length == 0) {
			orderNumber.className = 'input_size60 cat_order_form_large';
			document.getElementById("errorbox").style.display="none";
			delLine(fieldId);
		}
		
		// Frage Artikelnummer erst dann ab, sobald mindestens 6 Ziffern eingegeben wurden
		if(orderNumber.value.length >= 6) {
			startSearchArticleAjax(orderURL,orderNumber.value,fieldId,loadnext);
		} else if(orderNumber.value.length > 0 && orderNumber.value.length < 6) {
			document.getElementById("errorbox").style.display="block";
			orderNumber.className = 'input_size60 cat_order_form_large input_highlight';
		}
	}
	/**
	 * Starte Ajax-Abfrage der Methode mit übergebenener Bestellnummer. 
	 * @param url
	 * @param orderNumber
	 * @param fieldId
	 * @return
	 */
	function startSearchArticleAjax(url,orderNumber,fieldId,loadnext) {
		
		var orderTitle = document.getElementById("cat_order_title_"+fieldId);
		var orderLoader = document.getElementById("loader"+fieldId);
		
		if( window.XMLHttpRequest ) {
			OrderReq = new XMLHttpRequest();
		} else if( window.ActiveXObject ) {
			OrderReq = new ActiveXObject( "Microsoft.XMLHTTP" );
		} else {
			return;
		}
		
		//Starte Methode
		OrderReq.open( "GET", url+"&b="+orderNumber, true );
		//Ladenachricht, und Ladegrafik anzeigen
		orderTitle.innerHTML='<p style="font-style:italic;color:#9ea1a8;">Eingabe wird gepr&uuml;ft</p>';
		orderLoader.style.display="block";
		
		//Wenn Methode ausgeführt wurde, rufe Callback-Funktion auf
		OrderReq.onreadystatechange = function(){callbackSearchArticle(fieldId,loadnext);};
		OrderReq.send( null );
	}
	/**
	 * Callback-Funktion zur Katalogbestell-Seite
	 * @param fieldId
	 * @return
	 */
	function callbackSearchArticle(fieldId,loadnext) {
		//Wenn Seite fertig geladen hat, und ein Ergebnis vorliegt
		if( 4 == OrderReq.readyState ) {
			if (200 == OrderReq.status){
				if (OrderReq.responseText != '0'){
					var orderTitle	= document.getElementById("cat_order_title_"+fieldId);
					var orderLoader = document.getElementById("loader"+fieldId);
					var orderNumber	= document.getElementById("orderNumber"+fieldId);
					var errorBox	= document.getElementById("errorbox");
					
					//Überführe den erhaltenen Text in ein Objekt (JSON)
					result = new Function("return "+OrderReq.responseText)();
					
					//Falls ein Titel gefunden wurde, setze alle Informationen in die Felder
					if(result.long_title) {
						orderTitle = document.getElementById("cat_order_title_"+fieldId);
						orderTitle.innerHTML=result.long_title_truncate;
						
						orderValue = document.getElementById("orderValue"+fieldId);
						if(orderValue.value == '' || orderValue.value < 0) {
							orderValue.value = 1;
						}
						
						//Berechne Preis mittels der übergebenen Anzahl
						orderPrice = document.getElementById("cat_order_price_"+fieldId);
						var newPrice = orderValue.value * result.prices.current.value;
						newPrice = newPrice / 100;
						if(result.currency == "EUR") {
							orderPrice.innerHTML = newPrice.toFixed(2)+" "+result.currency;
						} else {
							orderPrice.innerHTML = result.currency+" "+newPrice.toFixed(2);
						}
						document.getElementById("cat_order_single_currency").innerHTML = result.currency;
						
						//Für spätere Berechnungen wird der Einzelpreis als INT benötigt.
						orderSinglePrice = document.getElementById("cat_order_single_price_"+fieldId);
						orderSinglePrice.innerHTML = result.prices.current.value;
						
						orderNumber.className = 'input_size60 cat_order_form_large';
						errorBox.style.display="none";
					//Falls kein titel gefunden wurde, gibt Fehlermeldung aus
					} else {
						orderTitle.innerHTML='<p style="font-style:italic;color:#9ea1a8;">Artikel nicht (mehr) verf&uuml;gbar</p>';
						orderNumber.className = 'input_size60 cat_order_form_large input_highlight';
						errorBox.style.display="block";
					}
					//Sobald alles fertig ist, blende Ladegrafik wieder aus.
					orderLoader.style.display="none";
					if(loadnext == 1)
						searchArticle('/?f=catalog_order.ajaxsearcharticle',2,0);
				}
			}
		}
	}
	/**
	 * Berechnet den Preis neu, falls sich die Anzahl geändert hat
	 * @param fieldId
	 * @return
	 */
	function getNewPrice(fieldId) {
		var orderValue		= document.getElementById("orderValue"+fieldId);
		var orderNumber		= document.getElementById("orderNumber"+fieldId);
		var oldSinglePrice	= document.getElementById("cat_order_single_price_"+fieldId);
		var price			= document.getElementById("cat_order_price_"+fieldId);
		var newPrice;
		var currency		= document.getElementById("cat_order_single_currency").innerHTML;
		
		if(!orderValue.value) {
			orderValue = 1;
		}
		
		if(orderValue.value <= 0) {
			delLine(fieldId);
		}
				
		if(price.innerHTML != '') {
			newPrice = (parseInt(orderValue.value, 10) * parseInt(oldSinglePrice.innerHTML)) / 100;
			if(currency == "EUR") {
				price.innerHTML = newPrice.toFixed(2)+" "+currency;
			} else {
				price.innerHTML = currency+" "+newPrice.toFixed(2);
			}
		}
	}
	
	/**
	 * Überprüft, ob
	 * 1. Gesamtes Formular leer (return false)
	 * 2. Gesamtes Formular mit fehlerhaften Artikelnummern gefüllt (return false)
	 * 3. Gemischt: Einige richtige Nummern, einige false => lösche Fehlerhafte und führe Submit durch
	 * 4. Nur richtige nummer => Führe Submit durch
	 * @return
	 */
	function checkValid() {
		
		var errorBox	= document.getElementById("errorbox");
		var hasEntry = 0;
		for (fieldNo = 1; fieldNo <=30; fieldNo++) {
			if(document.getElementById("orderNumber"+fieldNo)) {

				var orderNumber = document.getElementById("orderNumber"+fieldNo);
				
				if(orderNumber.value && orderNumber.className.search(/input_highlight/) == -1) {
					hasEntry++;
				}
				
				if(orderNumber.className.search(/input_highlight/) != -1) {
					delLine(fieldNo);
				}
			}
		}
		
		if(hasEntry > 0) {
			errorBox.style.display="none";
			return true;
		} else {
			errorBox.style.display="block";
			return false;
		}
	}
	/**
	 * Löscht alle Daten einer Zeile
	 * @param fieldId
	 * @return
	 */
	function delLine(fieldId) {
		document.getElementById("orderValue"+fieldId).value = '';
		document.getElementById("orderNumber"+fieldId).value = '';
		document.getElementById("cat_order_single_price_"+fieldId).innerHTML = '';
		document.getElementById("cat_order_price_"+fieldId).innerHTML = '';
		document.getElementById("cat_order_title_"+fieldId).innerHTML = '';
		document.getElementById("orderNumber"+fieldId).className = 'input_size60 cat_order_form_large';
		document.getElementById("errorbox").style.display="none";
	}
	

/*
Fügt ein Element (newElement) hinter einanderes Element (targetElement) hinzu

@param string newElement
@param string targetElement
*/
function insertAfter(newElement, targetElement) {
    var parent = targetElement.parentNode;
    if (parent.lastChild == targetElement) {
        parent.appendChild(newElement);
    } else {
        parent.insertBefore(newElement, targetElement.nextSibling);
    }
}


/*
zählt die Prämiendivs
*/
function countPraemienImgDivs () {
	i = 1;
	/* zählt die ids des <div id="PraemienBildNUMMER"> solange nicht null zurückliefert wird */
	while (document.getElementById("PraemienBild" + i) != null) {
		i++;
	};
	/* letzte PraemienBildDiv war nicht existent also 1 abziehen */
	i = i - 1;
	return i;
}

/* Höhe des Prämienbildes zurückliefern - i ist Nummer des Bildes */
function getPraemienImgHeight ( i ) {
	 return document.getElementById("PraemienBild" + i).getElementsByTagName("img")[0].height;
}


/* höchstes Bild finden und höhe zurückliefern - i ist Anzahl der gesamten PrämienbilderDivs */
function getPraemienImgMaxHeight ( i ) {
	
	PraemienImgMaxHeight = 0;
	
	for (var x = 1; x-1 < i; x++) {
			if ( getPraemienImgHeight(x) > PraemienImgMaxHeight ) {
				PraemienImgMaxHeight = getPraemienImgHeight(x);
				};
		};

	return PraemienImgMaxHeight;
}


/* Setzte Höhe aller Divs der Prämienbilder auf eine höhe - i ist Anzahl der gesamten PrämienbilderDivs - MaxHeight ist höchste Höhe */
function setPraemienImgDivHeight (i) {

	PraemienImgMaxHeight = getPraemienImgMaxHeight ( i );
	for (var x = 1; x-1 < i; x++) {
		document.getElementById("PraemienBild" + x).style.height =  PraemienImgMaxHeight + "px";
	 	document.getElementById("PraemienBild" + x).style.width = "170px";
		
		/* Prämienbild mit margin-top versehen um kleiner Bilder mittig auszurichten  img margintop = round(maximgheigh - imgheight) / 2  */
		document.getElementById("PraemienBild" + x).getElementsByTagName("img")[0].style.marginTop = Math.round((PraemienImgMaxHeight - document.getElementById("PraemienBild" + x).getElementsByTagName("img")[0].height) / 2) + "px";

	 };
	 
};

/*
Postet Daten und holt entsprechend Formfehler und BusinessID ab

@param string url
@param string formobj
@param string additionalparam
@param string posi (Position der SSL-Box, oben (1) oder unten (2))
*/
function postdata(url, formobj, additionalparam, posi) {

	if( window.XMLHttpRequest ) {
		var http = new XMLHttpRequest();
	} else if( window.ActiveXObject ) {
		var http = new ActiveXObject( "Microsoft.XMLHTTP" );
	} else {
		return;
	}

	var formdata = getdatafromform(formobj);
	var urlbase = getURLBase();
	var posturl = urlbase + url + additionalparam;
	var params = "ajax=1" + formdata;
	http.open("POST", posturl, true);

	//Send the proper header information along with the request
	http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http.setRequestHeader("Content-length", params.length);
	http.setRequestHeader("Connection", "close");
	
	http.onreadystatechange = function() {
		if (http.readyState == 4 && http.status == 200) {
			var jsonData = JSON.parse(http.responseText);
			// Falls keine Fehler auftreten zum nächsten Step weiterleiten:
			if ((!jsonData.form_errors || jsonData.form_errors == '') && (!jsonData.field_errors || jsonData.field_errors == '')) {
				// URL nur umschiessen, wenn man von der WK-Seite kommt
				var ajaxsslswitch = '';
				if (formobj.elements["ajaxsslswitch"]) {
					if (document.getElementById("ssl"+posi).checked && urlbase.substring(0,5) == "http:") {
						urlbase = urlbase.replace("http","https");
					} else if (!document.getElementById("ssl"+posi).checked && urlbase.substring(0,6) == "https:") {
						urlbase = urlbase.replace("https","http");
					}
					ajaxsslswitch = '&ajaxsslswitch=on';
				}
				var geturl = urlbase + '?p=' + jsonData.page + ajaxsslswitch
				window.location.href = geturl;
			
			// Ansonsten Fehler aufbereiten und ausgeben:
			} else {
				if (jsonData.mode == 'accountlogin') {
					var div_block_start = '';
					var div_block_end = ''
					var err_begin_style = '<p>';
					var err_end_style = '</p>';
					var err_block = 'ajaxlogin';
					window.scrollTo(0, 0);
				} else{
					var div_block_start = '';
					var div_block_end = ''
					var err_begin_style = '<p>';
					var err_end_style = '</p>';
					var err_block = 'ajaxerror';
					window.scrollTo(0, 0);
				}
				var FormErrJson = jsonData.form_errors;
				var FieldErrJson = jsonData.field_errors;
				var html = '';
				// durchlaufe Ergebnislisten aus JSON, erst Formularfehler, dann Feldfehler:

				if (FieldErrJson != null && FieldErrJson != '') {
					html += div_block_start;
					for(i = 0; i < FieldErrJson.length; i++){
						html += err_begin_style + FieldErrJson[i].message + err_end_style;
					}
					html += div_block_end;
				}
				
				if (FormErrJson != null && FormErrJson != '') {
					html += div_block_start;
					for(i = 0; i < FormErrJson.length; i++){
						html += err_begin_style + FormErrJson[i].message + err_end_style;
					}
					html += div_block_end;
				}
				
				if (document.getElementById('ajaxlogin') != null){
				document.getElementById('ajaxlogin').innerHTML = '';
				document.getElementById('ajaxlogin').style.display='none';
				}
				if (document.getElementById('ajaxerror') != null){
				document.getElementById('ajaxerror').innerHTML = '';
				document.getElementById('ajaxerror').style.display='none';
				}
				if (document.getElementById('errgap') != null){
					document.getElementById('errgap').style.display='none';
				}
				if (document.getElementById('err_zusatz') != null ){
						document.getElementById('err_zusatz').style.display='none';	
				}
			
				if (document.getElementById(err_block) != null){
						document.getElementById(err_block).innerHTML = html;
					document.getElementById(err_block).style.display='block';
				}
				if (document.getElementById('errgap') != null ){
					document.getElementById('errgap').style.display='block';
				}
				
				if (document.getElementById('err_zusatz') != null  && err_block == 'ajaxlogin'){
						document.getElementById('err_zusatz').style.display='block';	
				}
				
				setErrorHighlighting(formobj,FieldErrJson,jsonData.highlighting,jsonData.special_case);
			}

		}
	}
	http.send(params);
}

/*
wandelt alle Formulardaten in eine Query-Format um

@param object formobj
*/
function getdatafromform(formobj) {
	var queryString = "";
	// durchlaufe alle Formularelemente
	for(var n=0; n < formobj.elements.length; n++) {
		var formName  = formobj.elements[n].name; 
		var formValue = formobj.elements[n].value;
		// bei Radiobuttons nur das Checked mitnehmen:
		if (formobj.elements[n].type == 'radio') {
			if (formobj.elements[n].checked) {
				queryString += "&"+formName+"="+formValue;
			}
		// bei Checkboxen nur das Checked mitnehmen:
		} else if (formobj.elements[n].type == 'checkbox') {
			if (formobj.elements[n].checked) {
				queryString += "&"+formName+"="+formValue;
			}
		} else {
			queryString += "&"+formName+"="+encodeURIComponent(formValue);
		}
	}
	return queryString;
}

/*
Für Error-Hightlighting

@param object formobj
*/
function setErrorHighlighting(formobj,fielderrors,highlighting,specialcase) {
	var from = '';
	var classtype = '';
	var highlight_class = 'input_highlight';
	var f_l = 'f_l';
	 for(i = 0; i < formobj.elements.length; i++){
	    if ( formobj.elements[i].name == 'form_id'){
			 form='form['+formobj.elements[i].value+']';
			 break;
		}		
	}
		
	
  if (document.forms != null){
		for (i=0;i<document.forms.length;i++){
			for(j=0;j<document.forms[i].length;j++){
		   	 	if (document.forms[i].elements[j].type=='text' || document.forms[i].elements[j].type=='password' || document.forms[i].elements[j].type=='select-one' ){
		   	 	 	
		   	 	 	classtype=document.getElementById(document.forms[i].elements[j].id).className;
		   	 	 	if (classtype == null) classtype='';
		   	 	 	
		   	 	 	if (classtype != '' && (classtype.indexOf(highlight_class) != -1 || classtype.indexOf(f_l) != -1)){
		   	 	 		classtype=classtype.replace(f_l,'').replace('  ',' ');
		   	 			classtype=classtype.replace(highlight_class,'').replace('  ',' ');
		   	 			classtype=document.getElementById(document.forms[i].elements[j].id).className=classtype;
		   	 		}
		        	
		        	if (document.getElementById(document.forms[i].elements[j].id+'_gif') != null)
		        		document.getElementById(document.forms[i].elements[j].id+'_gif').className='display_none_gif';
				}
			}
		}
	}
	
	if (highlighting == true){
	     if (fielderrors != null){
			for(i = 0; i < fielderrors.length; i++){
		         if (document.getElementsByName(form+"["+fielderrors[i].field_name+"]") != null){
		        	document.getElementsByName(form+"["+fielderrors[i].field_name+"]")[0].className
		        		 =document.getElementsByName(form+"["+fielderrors[i].field_name+"]")[0].className+' '+highlight_class;
		        	if (document.getElementById(document.getElementsByName(form+"["+fielderrors[i].field_name+"]")[0].id+'_gif') != null){
		        	 	document.getElementById(document.getElementsByName(form+"["+fielderrors[i].field_name+"]")[0].id+'_gif').className='display_gif';
		        	 	document.getElementsByName(form+"["+fielderrors[i].field_name+"]")[0].className
		        		 =document.getElementsByName(form+"["+fielderrors[i].field_name+"]")[0].className+' f_l';
		        	 }
		     	}
		     }
		   }  
		
		
		if (specialcase == null) specialcase='';
		
		if (specialcase != '' ){
		 		   
			for(i = 0; i < specialcase.length; i++){
			         if (document.getElementsByName(form+"["+specialcase[i].field+"]") != null){
			        	document.getElementsByName(form+"["+specialcase[i].field+"]")[0].className
			        		 =document.getElementsByName(form+"["+specialcase[i].field+"]")[0].className+' '+highlight_class;
			       
				        if (document.getElementById(document.getElementsByName(form+"["+specialcase[i].field+"]")[0].id+'_gif') != null){
			        	 	document.getElementById(document.getElementsByName(form+"["+specialcase[i].field+"]")[0].id+'_gif').className='display_gif';
			        	 	if ( specialcase[i].gifstate != true){
			        	 		document.getElementsByName(form+"["+specialcase[i].field+"]")[0].className
				        		 =document.getElementsByName(form+"["+specialcase[i].field+"]")[0].className+' f_l';
			        	 	}
			     		}
			     	}
		     }
	     }
 	}
}

/*
Gibt URL ohne Querystring zurück
*/
function getURLBase() {
	var completeURL = window.location.href;
	var questionmarkpos = completeURL.indexOf('?');
	if (questionmarkpos > 0) {
		var URLBase = completeURL.substring(0,questionmarkpos);
	} else {
		var URLBase = completeURL;
	}
	return URLBase
}

/*
Listener f�r Tracking setzen 
*/
function setTrackingListener(source,tracking){
   if (tracking == '1'){ 
	 	if (source == 'search')
		    	tr_source='se.';
	    if (document.getElementsByName('artlink') != null){
	    	for (var i=0; i < document.getElementsByName('artlink').length;i++)
	    	  setOnclickTrackingListener('artlink',i,document.getElementsByName("artlink")[i].rel,tr_source+'art');
	    }
	    
	    
	    if (document.getElementsByName('wklink') != null){   
	    	for (var i=0; i < document.getElementsByName('wklink').length;i++)
	    	  setOnclickTrackingListener('wklink',i,document.getElementsByName("wklink")[i].rel,tr_source+'wk');
	    }
    }
}

/*
Hilfsfunktion, die abh�ngig vom Browser das entspr. Event setzt.
*/
function setOnclickTrackingListener(type,id,article,tr_source){

		if (tr_source == 'se.wk')
    		categorie='Suche_Direct_Cart';
    	else
    		categorie = tr_source;	 

	    if (navigator.userAgent.indexOf("Firefox")!=-1){
	      document.getElementsByName(type)[id].addEventListener('click',new Function("setTrackingInformation('"+article+"','"+tr_source+"')"), false);
	      if (type == 'wklink')
	      	  document.getElementsByName(type)[id].addEventListener('click',new Function ("cmCreateConversionEventTag('"+article+"', 1,'"+categorie+"', 1 )"), false);
		  
	    } else if ((navigator.userAgent.indexOf("MSIE")!=-1) && (navigator.platform.indexOf("Win")!=-1)) {
	    	document.getElementsByName(type)[id].attachEvent('onclick',new Function("setTrackingInformation('"+article+"','"+tr_source+"')"), false);
	    	if (type == 'wklink')
	    		document.getElementsByName(type)[id].attachEvent('onclick',new Function ("cmCreateConversionEventTag('"+article+"', 1,'"+categorie+"', 1 )"), false);
	    }
}



/**
Setzt ein Cookie mit der Quelle f�r Tracking
*/

function setTrackingInformation(article,source) {
	var expires = new Date();
	var information = '';
	information = getCookie('tracking_source');	
	information=setTrackingArticle(information,article, source);
     
	expires = new Date(expires.getTime() + (5400000)); 
	document.cookie = 'tracking_source='+escape(information)+';expires='+expires.toGMTString()+';path=/;';
	return true;
}


/**
Tracking-Informationen im Cookie erg�nzen
*/
function setTrackingArticle(information,article, source){
	var skip = false;
	var content;
	var listtype;
	var element;
	var listelements;
	var count=0;
	var listexists = false;
	var sourcetype = source.split('.');
	
	if (information != ''){
		if (existTrackingArticle(information,article,source) == true)
			return information;
	}
	
	//Cookie leer
	if (information == ''){
		information=source+'_'+article;
		return information;
	}
	
	//Verschiedene Listen
	content = information.split('~-~');
	
	information='';
	
	count=0;
	//Anzahl ermitteln
	for (var i=0; i<content.length;i++){
		listtype=content[i].split('_');

	 	if (listtype[0].indexOf(source) != -1){
	 		element=listtype[1].split('~');
	 		count=count+element.length;
	 	}
	}
	
	//Anzahl 10 pro Trackingart �berschritten
	if (count >= 10){
		for (var i=0; i<content.length;i++){
			listtype=content[i].split('_');
		 	if (listtype[0].indexOf(source) != -1){
		 		element=listtype[1].split('~');
		 		element.shift();

		 	
			 	listelements='';
		   		for (var j=0; j<element.length;j++){
		   		   if (listelements == '')
		   		   	 listelements=element[j];
		   		   else
		   		   	 listelements=listelements+'~'+element[j];
		   		} 
			 	content[i]=listtype[0]+'_'+listelements;	   	
		 	break;
		 	}
		 }
	}
	
	count=0;
	//Ermitteln, welche Liste zu erg�nzen ist
	for (var i=0; i<content.length;i++){
	   listtype=content[i].split('_');
	   
	   if (listtype[0]==source){
	   		element=listtype[1].split('~');

	   		listelements='';
	   		for (var j=count; j<element.length;j++){
	   		   if (listelements == '')
	   		   	 listelements=element[j];
	   		   else
	   		   	 listelements=listelements+'~'+element[j];
	   		} 	
	   		listelements=listelements+'~'+article;	
	   		content[i]=listtype[0]+'_'+listelements;
	   		listexists = true;
	   }  	 
	}
	
	
	for (var i=0; i<content.length;i++){
		if (information == '')
			information=content[i];
		else
			information=information+'~-~'+content[i];
	}
	
	// Liste noch nicht vorhanden
	if (listexists == false)
		information=information+'~-~'+source+'_'+article;
	
		
	return information;
}

/**
Pr�fen, ob der Tracking-Artikel bereits existiert
*/
function existTrackingArticle(information,article,source){

	var content = information.split('~-~');
	var element = null;
	var sourcetype = source.split('.');
	
	for (var i=0; i<content.length;i++){
	 	listtype=content[i].split('_');

	 	if (listtype[0].indexOf(sourcetype[0]+'.') != -1){
	 		element=listtype[1].split('~');
	 		for (var j=0; j<element.length; j++)
	 			if (element[j] == article)
	 				return true;
	 	}
	}
	return false;
}

/**
Cookie auslesen
*/
function getCookie(c_name)
{
if (document.cookie.length>0)
  {
  c_start=document.cookie.indexOf(c_name + "=");
  if (c_start!=-1)
    {
    c_start=c_start + c_name.length+1;
    c_end=document.cookie.indexOf(";",c_start);
    if (c_end==-1) c_end=document.cookie.length;
    return unescape(document.cookie.substring(c_start,c_end));
    }
  }
return "";
}

/* Google Book Seaerch */
function ProcessGBSBookInfo(booksInfo) {
	
	for (isbn in booksInfo) {

		var bookInfo = booksInfo[isbn];

		if (bookInfo) {

			if (bookInfo.preview == "full" || bookInfo.preview == "partial") {
					//alert('hurra gefunden');
				document.getElementById('blaettern').style.display= 'block';
				document.getElementById('googlePreview').style.display= 'block';
				
				document.getElementById("detailpopup").onclick = new Function("javascript:windowOpen('/1/pprod.googlebook/google-book-search.html?isbn="+isbn+"','Google','600','760','10','10','no','no','no','no');return false;");
			}
		}
	}
}

/* Google Book Seaerch */
function ProcessGBSBookInfo2(booksInfo) {
	for (isbn in booksInfo) {

		var bookInfo = booksInfo[isbn];

		if (bookInfo) {

			if (bookInfo.preview == "full" || bookInfo.preview == "partial") {
				//alert('hurra gefunden');
				document.getElementById('googlebook').style.display= 'block'; 
				document.getElementById('libreka').style.display= 'none';   
				document.getElementById("detailpopup").onclick = new Function("javascript:windowOpen('/1/pprod.googlebook/google-book-search.html?isbn="+isbn+"','Google','600','760','10','10','no','no','no','no');return false;");
			}
			else {
				//alert('nix gefunden');
				//document.getElementById('medium').style.display= 'block';
			}
		}
	}
}

//Speichern der Zahlart PayPal und anfordern der Url für Saferpay
function getPayPal(){
 
	if( window.XMLHttpRequest ) {
          req = new XMLHttpRequest();
     } else if( window.ActiveXObject ) {
          req = new ActiveXObject( "Microsoft.XMLHTTP" );
     } else {
          return;
     }
   
	 req.open( "GET", '/index.html?f=cart.controller&step=paypal', true );

	 req.onreadystatechange = showPayPal;
	   
	 req.send( null );
}

function showPayPal(){
	if( 4 == req.readyState ){ 
		if (200 == req.status){
			if (req.responseText != null)
				window.location.href=req.responseText;
				
		}
	}
}

// A/B Test beide Häckchen bei AGB's synchron halten
function setWKB(pos) {
			if (pos == 2)
				if (document.getElementById("f_7b_agb2").checked == true) {
						document.getElementById("f_7b_agb").checked = true;
				}
				else {
					document.getElementById("f_7b_agb").checked = false;

				}
			else if (pos == 1) {
				if (document.getElementById("f_7b_agb").checked == true) {
						document.getElementById("f_7b_agb2").checked = true;
				}
				else {
					document.getElementById("f_7b_agb2").checked = false;

				}
				
			}
}