/*
 * Javascript-Methoden für www.als-verlag.de
 * oliver koelle, oliver.koelle@sintec.de
 * Jan - Mar 2003
 * v 1.0.0
*/

/*
 * Aktivieren und Deaktivieren des
 * Feldes 'institute' in der
 * orderForm.aspx
*/
var instituteValue = "";
function setAdrTyp(val){
  if(val == "privAdr"){
    instituteValue = document.orderform.institute.value;
    document.orderform.institute.value = "";
    document.orderform.institute.disabled = true;
    document.orderform.institute.style.backgroundColor = "#ffffff";
  }else{
    document.orderform.institute.value = instituteValue;
    document.orderform.institute.disabled = false;
    document.orderform.institute.style.backgroundColor = "#FFE293";
  }
}

//dl 10.08.2006 : Mail wird jetzt RICHTIG geprüft, nur mit IE < 5.5 ist die kürzeste mögliche Mail-addy "@."
 function verifyMail(email)
 {
 
	if (navigator.appName == "Microsoft Internet Explorer" && navigator.appVersion.substring(22,25) <= 5.5)
	{
		if((email == "") || (email.indexOf("@")==-1) || (email.split("@")[1].indexOf("\.") == -1))
		{
			return false;
		}
		return true;
     }
     else
     {
		var proto  = "(mailto:)?";
		var usr    = "([a-zA-Z0-9][a-zA-Z0-9_.-]*|\"([^\\\\\x80-\xff\015\012\"]|\\\\[^\x80-\xff])+\")";
		var domain = "([a-zA-Z0-9][a-zA-Z0-9._-]*\\.)*[a-zA-Z0-9][a-zA-Z0-9._-]*\\.[a-zA-Z]{2,4}";
		var regex  = "^" + proto + "?" + usr + "\@" + domain + "$";

		var rgx    = new RegExp(regex);
		return rgx.exec(email) ? true : false;
	}
 }

/* 
 * neues Fenster mit Artikeldetails
*/
function showArticle(an){
  adr = "articleDetail.aspx?topic=" + an;
  window.open(adr,"articleDetail","directories=no, status=no, toolbar=no, width=450, height=450, menubar=no, scrollbars, resizable");
}

/*
 * scrollen der oberen Navi-Leiste
 * in artikelliste.aspx
*/
function setNaviPos()
{
 if(isGecko || isIE)
 {
  document.getElementById("navi").style.top = document.body.scrollTop;
 }
}

/*
 * Behandlung für MausOver-Event
 * auf den Menü-Layern
*/
var layBefore = "";
var catToBeDisplayed = 1;
function m_over(lay)
{
  if((layBefore != "")&&
     (layBefore.indexOf("_") == -1)){
    setLayBgColor(layBefore,"transparent");
  }
  else
  {
    if(layBefore != "")setLayBgColor(layBefore,categoryColor[catToBeDisplayed]);
  }
  tmpCat = lay.split("_");
  catNum = parseInt(tmpCat[0].substr(3,tmpCat[0].length));
  // nur wenn unterpunkt
  if(lay.indexOf("_") != -1)
  {
    setLayBgColor(lay,categoryColor[1]);
  }
  // nur wenn unterpunkt
  if(lay.indexOf("_") != -1)
  {
	// dl 23.06.2006 : Mozilla (Gecko-Engine) kennt keine "hand" ; "pointer" erfüllt den gleichen zweck
    //if(isGecko) document.getElementById(lay).style.cursor = "hand";
    if(isGecko) document.getElementById(lay).style.cursor = "pointer";
  }
  else
  {
    if(isGecko) document.getElementById(lay).style.cursor = "default";
  }
  showSubMenu(lay,30000);
    
  layBefore = lay;
  // Contentlayer ausblenden, wenn IE5
  if((navigator.appVersion.indexOf("MSIE 5.01") != -1)||
     (navigator.appVersion.indexOf("MSIE 5.0") != -1)){
    hide("content");
  }
}

/*
 * tmpFunc für handling mausklick
 * auf den Menülayern
 * Ersetzt die Behandlung im 
 * x42 Menügenerator
*/
function m_click(lay){
  // Werte in MasterFormular schreiben
  if(top.contentFrame.document.title == "Kundendaten") writeFormValuesIntoMaster();
  //alert(top.window.frames[0].document.title);
  
   // wenn menü-unterpunkt
  if(lay.indexOf("_") != -1){
    // Kopfzeile beschreiben
    catToBeDisplayed = parseInt(lay.substr(3,lay.length));
    for(i=0;i<subMenId.length;i++){
      if(subMenId[i] == lay){
        tmpSubMenText = subMenText[i];
        break;
      }
    }
    writeLay('categoryStripe',tmpCatStr1 + category[catToBeDisplayed] + " - " + tmpSubMenText + tmpCatStr2);
   
    setLayBgColor('stripeLeft',categoryColor[catToBeDisplayed]);  
    // nicht benötigte Elemente ausblenden
    setSubMenColors(catToBeDisplayed);  
    // Aufruf der Content-Seiten
    // wenn menü-unterpunkt
    //if(lay.indexOf("_") != -1){
    adr = "content.aspx?topic=" + lay.substr(3,lay.length);
    document.getElementById("contentFrame").src = adr;
  }
  // Page-Focus wieder auf Suchformular
  document.searchForm.query.focus();
  // Contentlayer einblenden, wenn IE5
  if((navigator.appVersion.indexOf("MSIE 5.01") != -1)||
     (navigator.appVersion.indexOf("MSIE 5.0") != -1)){
    show("content");
  }
}
function setSubMenColors(catToBeDisplayed){
  for(i=0;i<tmpTopics.length;i++){
    if(tmpTopics[i].indexOf("_") != -1){
      hide(tmpTopics[i]);
      setLayBgColor(tmpTopics[i],categoryColor[catToBeDisplayed]);
    } else {
      setLayBgColor(tmpTopics[i],"transparent");
    }
  }
}

/*
 * Aufruf der Suchseite
 * für bestimmte Inhalte
*/
function searchContent(){
  // Anfordern der Suchseite mit
  // 'query' als Suchbegriff
  adr = "search.aspx?query=" + document.searchForm.query.value;
  document.getElementById("contentFrame").src = adr;
  // zurücksetzten des Layouts auf Defaultwerte
  resetSearchForm();
}

/*
 * Aufruf der sonstigen Inhalt
 * Schnäppchen --> men0_1
 * Startseite --> men0_2
 * Kontakt --> men0_3
 * Direktbestellung --> men0_4
 * Newsletter --> men0_6
 * Magazin --> men0_7
 * Kataloge --> men0_8
 * param: lay --> id des Layers == Schlüssel für Inhalt
*/
function getContent(lay,but){
  // BZ-Daten kopieren, falls BZ
  // gerade aktiv
  if(top.contentFrame.document.title == "Bestellzettel")
  {
	writeFormValuesIntoMaster();
  }
  
  adr = "content.aspx?topic=" + lay;
  // zurücksetzten des Layouts auf Defaultwerte
  resetSearchForm();
  // Anfordern des Inhalts
  document.getElementById("contentFrame").src = adr;
  document.searchForm.query.focus();
  
  // Kopfzeile beschreiben
  writeLay('categoryStripe',tmpCatStr1 + but.value + tmpCatStr2);
}

/*
 * Mausover-Effekt für searchForm
*/
function searchForm_over(but)
{
  // dl 23.06.2006 : Mozilla (Gecko-Engine) kennt keine "hand" ; "pointer" erfüllt den gleichen zweck
  if(isGecko) document.getElementById(but).style.cursor = "pointer";
}

/*
 * Formular reset und Fokus wieder auf
 * Suchfeld setzen
*/
function resetSearchForm(){
  catToBeDisplayed = 1;
  writeLay('categoryStripe',category[catToBeDisplayed]);
  setLayBgColor('stripeLeft',categoryColor[catToBeDisplayed]);
  setSubMenColors(catToBeDisplayed);
  document.searchForm.query.value = "";
  document.searchForm.query.focus();
}

/*
 * Formular Lieferadresse ausfüllen
 * wenn "no" dann Kundenadresse
 * in Formular eintragen
 * wenn "yes" alten Inhalt wieder
 * herstellen
*/
//var fillFormStatus = false;
//var adressContainerOrderForm = new Array();
//adressContainerOrderForm[0] = "";
//adressContainerOrderForm[1] = "";
//adressContainerOrderForm[2] = "none";
//adressContainerOrderForm[3] = "";
//adressContainerOrderForm[4] = "";
//adressContainerOrderForm[5] = "";
//adressContainerOrderForm[6] = "";
function fillForm(elem){
  if(elem == "yes"){ // gleiche Lieferadresse
    // Layer sichtbar
    document.getElementById("lieferLayer").style.visibility = "hidden";
    // einsetzen der Kundenadresse
    //document.orderform.lastNameLi.value = document.orderform.lastName.value;
    //document.orderform.firstNameLi.value = document.orderform.firstName.value;
    //document.orderform.countryCodeLi.value = document.orderform.countryCode.value;
    //document.orderform.streetLi.value = document.orderform.street.value;
    //document.orderform.houseNbrLi.value = document.orderform.houseNbr.value;
    //document.orderform.zipLi.value = document.orderform.zip.value;
    //document.orderform.townLi.value = document.orderform.town.value;
    // Formularfelder einschalten
    //document.orderform.lastNameLi.disabled = true;
    //document.orderform.firstNameLi.disabled = true;
    //document.orderform.countryCodeLi.disabled = true;
    //document.orderform.streetLi.disabled = true;
    //document.orderform.houseNbrLi.disabled = true;
    //document.orderform.zipLi.disabled = true;
    //document.orderform.townLi.disabled = true;
  } else { // abweichende Lieferadresse
    // Formularfelder löschen/zurückschreiben
    //if(!fillFormStatus){
      //document.orderform.lastNameLi.value = "";
      //document.orderform.firstNameLi.value = "";
      //document.orderform.countryCodeLi.value = "none";
      //document.orderform.streetLi.value = "";
      //document.orderform.houseNbrLi.value = "";
      //document.orderform.zipLi.value = "";
      //document.orderform.townLi.value = "";
    //}else{
      //document.orderform.lastNameLi.value = adressContainerOrderForm[0]
      //document.orderform.firstNameLi.value = adressContainerOrderForm[1];
      //document.orderform.countryCodeLi.value = adressContainerOrderForm[2];
      //document.orderform.streetLi.value = adressContainerOrderForm[3];
      //document.orderform.houseNbrLi.value = adressContainerOrderForm[4];
      //document.orderform.zipLi.value = adressContainerOrderForm[5];
      //document.orderform.townLi.value = adressContainerOrderForm[6];
    //}
    // Layer sichtbar
    document.getElementById("lieferLayer").style.visibility = "visible";
    // sichern der alten Werte in Lieferadresse
    //adressContainerOrderForm[0] = document.orderform.lastNameLi.value;
    //adressContainerOrderForm[1] = document.orderform.firstNameLi.value;
    //adressContainerOrderForm[2] = document.orderform.countryCodeLi.value;
    //adressContainerOrderForm[3] = document.orderform.streetLi.value;
    //adressContainerOrderForm[4] = document.orderform.houseNbrLi.value;
    //adressContainerOrderForm[5] = document.orderform.zipLi.value;
    //adressContainerOrderForm[6] = document.orderform.townLi.value;
    // Formularfelder ausschalten
    document.orderform.lastNameLi.disabled = false;
    document.orderform.firstNameLi.disabled = false;
    document.orderform.countryCodeLi.disabled = false;
    document.orderform.streetLi.disabled = false;
    document.orderform.houseNbrLi.disabled = false;
    document.orderform.zipLi.disabled = false;
    document.orderform.townLi.disabled = false;
    // Flag für vorhandenen Inhalt
    //fillFormStatus = true;
  }
}

/*
 * Drucken des Bestellzettels
 * Buttons vorher ausblenden und hinterher einblenden
*/
function printOrderForm(){
//
  if(isGecko) document.getElementById("orderFormFooter").style.visibility = "hidden";
  //if(isGecko) document.getElementById("orderArtBut").style.visibility = "hidden";
  if(isGecko) document.getElementById("unterschrift").style.visibility = "visible";
  window.print();
  if(isGecko) document.getElementById("orderFormFooter").style.visibility = "visible";
  //if(isGecko) document.getElementById("orderArtBut").style.visibility = "visible";
  if(isGecko) document.getElementById("unterschrift").style.visibility = "hidden";
}

/*
 * Artikel hinzufügen
 * startet den Artikelassistenten
 * in einem neuen Fenster
 * PARAM artNbr -> Artikelnummer (kann auch leer sein)
 * PARAM URL -> Referenzierte Seite (wird in 'orderForm.aspx' benötigt
*/ 
var AAisActive;
var AATimeout;
var writeError = false;
function addNewArticle(artNbr,URL){
  // Werte in MasterFromular schreiben
  if(document.title == "Kundendaten")writeFormValuesIntoMaster();
  if(writeError == true)return;
  // Referrer schliessen, wenn Artikeldetails
  if(document.title == "Artikeldetails"){
    window.close();
  }
  // Weiterleitung zum Artikelassistent
  if(!artNbr) artNbr = "none";  // verhindert, das keine Nummer übergeben wird
  if(URL){
    adr = URL + "?artNbr=" + artNbr + "";
  }else{
    adr = "productForm1.aspx?artNbr=" + artNbr + "";
  }
  AAisActive = window.open(adr,"addArticle","directories=no, status=no, toolbar=no, width=450, height=450, menubar=no, scrollbars, resizable");
  AATimeout = window.setInterval("checkForAA()",10);
}

/*
 * Prüfen, ob der Artikelassistent
 * geschlossen wurde
*/
function checkForAA(){
  if(AAisActive.closed){
    window.clearInterval(AATimeout);
    adr = top.window.document.contentFrame.document.location;
    top.window.document.contentFrame.document.location = adr;
    if(top.window.document.masterForm.orderPresent.value != "") changeBut('quickorderBut');
  }
}
/*
 * Ändert das aussehen eines Buttons
 * Param -> Id des Buttons
*/
function changeBut(but){
  if(isGecko){
    top.window.document.getElementById(but).style.backgroundColor = "#FFE293";
    top.window.document.getElementById(but).style.color = "#000000";
  }
}

/*
 * schreibt die eingegebenen
 * userDaten in die Masterform
 * in der index.aspx
*/
function writeFormValuesIntoMaster(){
  indexForm = eval(top.window.document.masterForm);
  ordForm = eval(top.contentFrame.document.orderform);
  // JS-Fehler vermeiden, wenn bei angezeigter oderform ein
  // Link im Masterframe geklickt wird
  if(ordForm.kdnNr1){
    indexForm.field1.value = ordForm.kdnNr1.value;
    indexForm.field2.value = ordForm.comment.value;
    indexForm.field3.value = ordForm.adrTyp.value;
    indexForm.field4.value = ordForm.institute.value;
    indexForm.field5.value = ordForm.lastName.value;
    indexForm.field6.value = ordForm.firstName.value;
    indexForm.field7.value = ordForm.street.value;
    indexForm.field8.value = ordForm.houseNbr.value;
    indexForm.field9.value = ordForm.zip.value;
    indexForm.field10.value = ordForm.town.value;
    indexForm.field11.value = ordForm.countryCode.selectedIndex;
    indexForm.field12.value = ordForm.areacode.value;
    indexForm.field13.value = ordForm.telefon.value;
    indexForm.field14.value = ordForm.telefaxAreacode.value;
    indexForm.field15.value = ordForm.telefax.value;
    indexForm.field16.value = ordForm.email.value;
    //dl 11.07.2006 : Die Email2 könnte auch gespeichert werden ..... macht aber in meinen Augen keinen Sinn,
    //  da das Feld ja der Prüfung durch erneute Eingabe seitens des Benutzers dient.
    
    // prüfen, welcher LI Button gedrückt ist
    if(ordForm.sameAdress[0].checked){
      indexForm.field17.value = "yes";
    }else{
      indexForm.field17.value = "no";
    }
    indexForm.field18.value = ordForm.lastNameLi.value;
    indexForm.field19.value = ordForm.firstNameLi.value;
    indexForm.field20.value = ordForm.countryCodeLi.selectedIndex;
    indexForm.field21.value = ordForm.streetLi.value;
    indexForm.field22.value = ordForm.houseNbrLi.value;
    indexForm.field23.value = ordForm.zipLi.value;
    indexForm.field24.value = ordForm.townLi.value;
  }
  
  
  // Ok zurückgeben
  writeError = false;
  return(writeError);
}
/*
 * schreibt die Daten von der masterForm in
 * index in den Bestellzettel
*/
function writeValuesFromMasterForm(){
  indexForm = eval(top.window.document.masterForm);
  ordForm = eval(top.contentFrame.document.orderform);
  ordForm.kdnNr1.value = indexForm.field1.value;
  ordForm.comment.value = indexForm.field2.value;
  ordForm.adrTyp.value = indexForm.field3.value;
  ordForm.institute.value = indexForm.field4.value;
  ordForm.lastName.value = indexForm.field5.value;
  ordForm.firstName.value = indexForm.field6.value;
  ordForm.street.value = indexForm.field7.value;
  ordForm.houseNbr.value = indexForm.field8.value;
  ordForm.zip.value = indexForm.field9.value;
  ordForm.town.value = indexForm.field10.value;
  ordForm.countryCode.selectedIndex = indexForm.field11.value;
  ordForm.areacode.value = indexForm.field12.value;
  ordForm.telefon.value = indexForm.field13.value;
  ordForm.telefaxAreacode.value = indexForm.field14.value;
  ordForm.telefax.value = indexForm.field15.value;
  ordForm.email.value = indexForm.field16.value;
  //dl 11.07.2006 : Die Email2 könnte auch gespeichert werden ..... macht aber in meinen Augen keinen Sinn,
  //  da das Feld ja der Prüfung durch erneute Eingabe seitens des Benutzers dient.
  
  // Adresse prüfen und Felder belegen
  if(indexForm.field17.value == "yes"){
    ordForm.sameAdress[0].checked = true;
    ordForm.lastNameLi.disabled = true;
    ordForm.firstNameLi.disabled = true;
    ordForm.countryCodeLi.disabled = true;
    ordForm.streetLi.disabled = true;
    ordForm.houseNbrLi.disabled = true;
    ordForm.zipLi.disabled = true;
    ordForm.townLi.disabled = true;
  }else if(indexForm.field17.value == "no"){
    ordForm.sameAdress[1].checked = true;
    ordForm.lastNameLi.disabled = false;
    ordForm.firstNameLi.disabled = false;
    ordForm.countryCodeLi.disabled = false;
    ordForm.streetLi.disabled = false;
    ordForm.houseNbrLi.disabled = false;
    ordForm.zipLi.disabled = false;
    ordForm.townLi.disabled = false;
    top.contentFrame.document.getElementById("lieferLayer").visibility = "visible";
  }else{
    indexForm.field17.value = ordForm.sameAdress.value;
  }
  ordForm.lastNameLi.value = indexForm.field18.value;
  ordForm.firstNameLi.value = indexForm.field19.value;
  ordForm.countryCodeLi.selectedIndex = indexForm.field20.value;
  ordForm.streetLi.value = indexForm.field21.value;
  ordForm.houseNbrLi.value = indexForm.field22.value;
  ordForm.zipLi.value = indexForm.field23.value;
  ordForm.townLi.value = indexForm.field24.value;
}

/*
 * Senden der ArtikelvariantenMengen bzw.
 * nur der Artikelmenge
*/
function sendProductForm2()
{
  // greift nur, wenn Artikelvarianten vorhanden
  if(!document.productForm2.InputNbr){
//    i = 0;
//    adr = "productForm3.aspx?";
//    atr = eval("document.productForm2.attrib"+i);
//    while(atr == eval("document.productForm2.attrib"+i)){
//      adr += "attrib" + i + "=" + atr.value + "&";
//      i++;
//    }
    adr = "productForm3.aspx?";
    for(i=0;i<PF2_artCount;i++){
      atr = eval("document.productForm2.attrib"+i);
      if(atr.value != parseInt(atr.value)) atr.value = "0";
      adr += "attrib" + i + "=" + atr.value + "&";
    }
    document.location = adr;
  }
}

/* 
 * Senden des Bestellzettels
 * mit prüfung der Pflichtfelder
*/
function sendOrderForm(){
  isOK = true;
  
  //Nachname
  if(document.orderform.lastName.value == "")
  {
    document.orderform.lastName.style.backgroundColor = "#ff0000";
    isOK = false;
  }
  else
  {
    document.orderform.lastName.style.backgroundColor = "#ffffff";
  }
  
  //Vorname
  if(document.orderform.firstName.value == "")
  {
    document.orderform.firstName.style.backgroundColor = "#ff0000";
    isOK = false;
  }
  else
  {
    document.orderform.firstName.style.backgroundColor = "#ffffff";
  }
  
  //Strasse
  if(document.orderform.street.value == "")
  {
    document.orderform.street.style.backgroundColor = "#ff0000";
    isOK = false;
  }
  else
  {
    document.orderform.street.style.backgroundColor = "#ffffff";
  }
//  if(document.orderform.houseNbr.value == ""){
//    document.orderform.houseNbr.style.backgroundColor = "#ff0000";
//    isOK = false;
//  }else{
//    document.orderform.houseNbr.style.backgroundColor = "#ffffff";
//  }

	//Postleitzahl
  if(document.orderform.zip.value == "")
  {
    document.orderform.zip.style.backgroundColor = "#ff0000";
    isOK = false;
  }
  else
  {
    document.orderform.zip.style.backgroundColor = "#ffffff";
  }
  
  //Stadt
  if(document.orderform.town.value == "")
  {
    document.orderform.town.style.backgroundColor = "#ff0000";
    isOK = false;
  }
  else
  {
    document.orderform.town.style.backgroundColor = "#ffffff";
  }
  
  //dl 11.07.2006 : email gegen email2 prüfen, nachdem die zwei adressen bereits auf korrektheit geprüft wurden
  if(!verifyMail(document.orderform.email.value) || !verifyMail(document.orderform.email2.value))
  {
    document.orderform.email.style.backgroundColor = "#ff0000";
    document.orderform.email2.style.backgroundColor = "#ff0000";
    isOK = false;
  }
  else
  {
	if (document.orderform.email.value == document.orderform.email2.value)
	{
		document.orderform.email.style.backgroundColor = "#ffffff";
		document.orderform.email2.style.backgroundColor = "#ffffff";
	}
	else
	{
		document.orderform.email.style.backgroundColor = "#ff0000";
		document.orderform.email2.style.backgroundColor = "#ff0000";
		isOK = false;
	}
  }
  
  // Prüfen, ob LiAdr ausgefüllt
  // und ggf. Flag auf 'gleiche Adr' setzen
  if(document.orderform.lastNameLi.value == "")
  {
    document.orderform.sameAdress.value = "yes";
  }
  
  // wenn Fehler, dann springe zu Formularstart, sonst weiter
  if(isOK)
  {
    // deaktivierte Felder aktivieren
    for(i=0;i<document.orderform.elements.length;i++)
    {
		if(document.orderform.elements[i].disabled == true)
		{
			 document.orderform.elements[i].disabled = false;
		}
    }
   
    writeFormValuesIntoMaster();
  }
  return isOK;
}

/*
 * Prüft Formulareingabe daraufhin,
 * ob es eine Ziffer ist
*/
function checkForNum(field){
  if(field.value != parseInt(field.value))
  {
    field.value = "0"; 
    nan = true;
  }
  else
  {
    nan = false;
  }
  return nan;
}

/* 
 * Vorprüfung des Bestellformulars
 * MEMBER orderError = (bool) Fehler im Formular
 * MEMBER sameAdress = (bool) Lieferadresse = Kundenadresse
*/
var orderError = false;
var sameAdress = true;

/*
 * Hintergrundfarben setzen für Adresseingabe
 * sorry, ist unschön so, aber funktioniert
 * ACHTUNG: keine Gecko-Abfrage
*/
//function setLiAdrBgColor(){

//}
