/*
* Funktion für PopUp-Fenster
*/
function popUp(popUpURL, popUpName, popUpWidth, popUpHeight) {
	var popUpParamString = "";	
	if(popUpName == "fix"){//feste grösse, keine scrollbars
		if(popUpHeight == ""){
			popUpHeight = 180;
		}		
		if(popUpWidth == ""){
			popUpWidth = 200;
		}
		popUpParamString = "menubar=0,location=0,toolbar=0,status=0,resizable=0,scrollbars=yes,dependent=1,height=" + popUpHeight +",width=" + popUpWidth;
	}	
	else if(popUpName == "flex"){//keine feste grösse, mit scrollbars
		if(popUpHeight == ""){
			popUpHeight = 600;
		}		
		if(popUpWidth == ""){
			popUpWidth = 400;
		}
		popUpParamString = "menubar=1,location=0,toolbar=0,status=1,resizable=1,dependent=1,scrollbars=yes,height=" + popUpHeight +",width=" + popUpWidth;
	}	
		
	else if(popUpName == "flux"){//feste grösse, mit scrollbars
		
		if(popUpHeight == ""){
			popUpHeight = 600;
		}
		
		if(popUpWidth == ""){
			popUpWidth = 400;
		}
		popUpParamString = "menubar=0,location=0,toolbar=0,status=0,resizable=0,dependent=1,scrollbars=yes,height=" + popUpHeight +",width=" + popUpWidth;
	}	
	
	else if(popUpName == "media"){//keine feste grösse, mit scrollbars
		if(popUpHeight == ""){
			popUpHeight = 600;
		}		
		if(popUpWidth == ""){
			popUpWidth = 400;
		}
		popUpParamString = "menubar=1,location=0,toolbar=1,status=1,resizable=1,dependent=1,scrollbars=yes,height=" + popUpHeight +",width=" + popUpWidth;
	}
	window.open( popUpURL, popUpName, popUpParamString );
}



// JavaScript Dokument speziell für TravelTainment Suchboxen
DatArray = new Array("So","Mo","Di","Mi","Do","Fr","Sa","??" )
/*
* Funktion zur Erzeugung von Dropdowns mit Datum
* für das Hinreisedatum
*/
function select_termin(z, width){	
	document.write("<select name='termin' size=1 style='width: " + width + "px'>");
	for (var i=1; i<=360;i++){
		if (i==z) {
			document.write('<option value='+GetDate(i)+' selected>'+GetDate(i,true)+'');
		} else {
			document.write('<option value='+GetDate(i)+'>'+GetDate(i,true)+'');
		}
	}
	document.write("</select>")
}

/*
* Funktion zur Erzeugung von Dropdowns mit Datum
* für das Rückreisedatum
*/
function select_ruecktermin(t, width){
	document.write("<select name='ruecktermin' size=1 style='width: " + width + "px'>");
	for (var i=3; i<=360;i++){
		if (i==t) {
			document.write('<option value='+GetDate(i)+' selected>'+GetDate(i,true)+'');
		} else {
			document.write('<option value='+GetDate(i)+'>'+GetDate(i,true)+'');
		}
	}
	document.write("</select>")
}

/*
* Funktion zur Ausgabe des aktuellen Datums mit oder ohne Wochentag
*/
function GetDate(offset, withDayOfWeek){
	var time = new Date()
	time.setTime( time.getTime()+offset*86400000);
	tag     = time.getDate();
	monat   = time.getMonth()+1;
	jahr    = time.getYear() % 100;
	if (tag   < 10)   tag   = "0"+tag;
	if (monat < 10)   monat = "0"+monat;
	if (jahr  < 10)   jahr  = "0"+jahr;
	
	var aDate = tag+'.'+monat+'.'+jahr;
	
	if(withDayOfWeek) aDate = aDate +' '+DatArray[time.getDay()];
	
	return aDate;
}

function openWindow(popUpURL, popUpName, popUpWidth, popUpHeight) {
	var popUpParamString = "";	
	if(popUpName == "calendar"){		
		if(popUpHeight == ""){
			popUpHeight = 250;
		}		
		if(popUpWidth == ""){
			popUpWidth = 250;
		}
		popUpParamString = "menubar=0,location=0,toolbar=0,status=0,resizable=0,scrollbars=no,dependent=1,height=" + popUpHeight +",width=" + popUpWidth;
	}
	
	window.open( popUpURL, popUpName, popUpParamString );
}

function toggle(type,element,toggleID) {
 // Lokale Variable definieren
 var i, j, t, type0, start=0, result=0;
 var obj, objName, objFirst=-1, objLast=-1, objCount, exceptions, lastArgument, xSwitch;
 var toggleDisplay, displayType, displayStyle, displayXStyle;
 var toggleVisibility, visibilityStyle, visibilityXStyle;
 var toggleAttribute="id"; // hier ggf. gewuenschten Standard-Attribut-Namen eintragen (z.B. "id")
 var toggleBack, backType, backXType, backStyle, backXStyle;
 var showStatus=200; // hier eintragen, ab wieviel Elementen ein Bearbeitungshinweis erfolgen soll

 // Aktionstyp vereinheitlichen/definieren (Standard: "Falten")
 type=(type)?type.toLowerCase():"fold";

 // Wurde Elemente-Begrenzung uebergeben?
 if(element) {
  i=element.indexOf("{"); j=element.indexOf("}",i);
  if(i>=0 && j>=0) {
  objFirst=parseInt(element.substring(i+1,element.indexOf("-",i)));
  objLast=parseInt(element.substring(element.indexOf("-",i)+1,j));
  element=element.substring(0,i);
  }
 }

 // Nur Abfrage, ob toggle technisch moeglich ist?
 if(!element || type=="test") {
  result=(document.getElementsByTagName)?true:false;
 } else {

  // Aktionsflags definieren
  toggleDisplay=(type.indexOf("fold")+1);    // Style display verwenden
  toggleVisibility=(type.indexOf("hide")+1); // Style visibility verwenden
  toggleBack=(type.indexOf("back")+1);       // Style background-color verwenden

  // "Ent-/Falten" (Darstellung ohne Platzhalter: display)?
  // ------------------------------------------------------
  if(toggleDisplay) {
   // Standard-Darstellungsart
   displayType="";
   // Spezielle Darstellungsart uebergeben?
   i=type.indexOf("fold:");
   if(i>=0) {
    // Ja, also Trenn-Positionen der Art festlegen, ...
    i+=4; j=type.indexOf(" ",i)
    // ... und Aktion von Darstellungsart trennen
    displayType=type.substring(i+1,(j<0)?type.length:j);
    // Darstellungsart "none" aus logischen Gruenden nicht zulassen
    displayType=(displayType=="none")?"":displayType;
   }
   // Aktionsstyle und Ausnahmestyle festlegen
   if(type.indexOf("unfold")>=0) {
    displayStyle=displayType; displayXStyle="none";
   } else {
    displayStyle="none"; displayXStyle=displayType;
   }
  }

  // "Anzeigen/Verstecken" (Darstellung mit Platzhalter: visibility)?
  // ----------------------------------------------------------------
  if(toggleVisibility) {
   // Aktionsstyle und Ausnahmestyle festlegen
   if(type.indexOf("unhide")>=0) {
    visibilityStyle="visible"; visibilityXStyle="hidden";
   } else {
    visibilityStyle="hidden"; visibilityXStyle="visible";
   }
  }

  // "Farbwahl (Hintergrund)" (Darstellung auf Farbe: background-color)?
  // -------------------------------------------------------------------
  if(toggleBack) {
   // Standard-Darstellungsart
   backType="#FFFFFF";
   // Komplementaere Standard-Darstellungsart
   backXType="#000000";
   // Spezielle Darstellungsart uebergeben?
   i=type.indexOf("back:");
   if(i>=0) {
    // Ja, also Trenn-Positionen der Art festlegen, ...
    i+=4; j=type.indexOf(" ",i)
    // ... und Aktion von Darstellungsart trennen
    backType=type.substring(i+1,(j<0)?type.length:j);
    // Spezielle komplementaere Darstellungsart uebergeben?
    i=backType.indexOf("/");
    if(i>=0) {
     // Ja, also Trenn-Positionen der Art festlegen, ...
     j=backType.indexOf(" ",i)
     // ... und Darstellungsarten trennen
     backXType=backType.substring(i+1,(j<0)?backType.length:j);
     backType=backType.substring(0,i)+((j<0)?"":backType.substring(j,backType.length));
    }
   }
   // Aktionsstyle und Ausnahmestyle festlegen
   backStyle=backType;
   backXStyle=backXType;
  }

  /* ----------------------- */
  /* Beginn der Hauptroutine */
  /* ----------------------- */

  // Toggling per ID?
  if(document.getElementById && document.getElementById(element)) {
   // ID gefunden: Kurzform fuer Element-Objekt definieren
   obj=document.getElementById(element);
   // Ein Element behandelt
   result=1;

   // Darstellung ohne Platzhalter
   // ----------------------------
   if(toggleDisplay) {
    // Display-Style setzen
    obj.style.display=displayStyle;
   }

   // Darstellung mit Platzhalter
   // ---------------------------
   if(toggleVisibility) {
    // Visibility-Style setzen
    obj.style.visibility=visibilityStyle;
   }

   // Darstellung auf Farbe
   // ---------------------
   if(toggleBack) {
    // Background-Color-Style setzen
    obj.style.backgroundColor=backStyle;
   }

  // ID nicht gefunden!
  } else if(document.getElementsByTagName) {
   // Enthaelt element nicht nur Tag-, sondern auch Attributnamen?
   i=element.indexOf(":");
   if(i>=0) {
    // Ja, also toggleAttribut neu definieren und element anpassen
    toggleAttribute=element.substring(i+1,element.length);
    element=element.substring(0,i);
   }

   // Sind gesuchtes Element vorhanden und eine Basiskennung definiert?
   if(document.getElementsByTagName(element).length && toggleID) {

    // Letzter Parameter ist true/false?
    lastArgument=(typeof(toggle.arguments[toggle.arguments.length-1])=="boolean")?-1:0;
    // "Switch"-Effekt?
    xSwitch=(lastArgument)?toggle.arguments[toggle.arguments.length-1]:false;
    // Ausnahme-Kennungen in einem String zusammenfassen (Basiskennung+Restkennung+Pipe-Symbol als Trenner)
    exceptions=toggleID; for(i=3;i<(toggle.arguments.length+lastArgument);i++) { exceptions+=toggle.arguments[i]+"|"; }
    i=exceptions.indexOf("|"); t=""; while(i>=0) { t+=exceptions.substring(start,i+1)+toggleID; start=i+1; i=exceptions.indexOf("|",start); if(!i) { break; } }
    exceptions=t.substring(0,t.length-toggleID.length);

    // Kurzform fuer Element-Objekt definieren
    obj=document.getElementsByTagName(element);
    // Start- und Endelement sowie zu bearbeitende Anzahl festlegen
    objFirst=(objFirst<0)?0:Math.max(0,objFirst);
    objLast=(objLast<0)?obj.length:Math.min(obj.length,objLast);
    objCount=(objLast-objFirst)+1;
    // Alle passenden Objekte durchgehen
    for(i=objFirst;i<objLast;i++) {
     // Kennung des aktuellen Elementes auslesen (und mit Trenner versehen)
     objName=obj[i].getAttribute(toggleAttribute);
     // Existiert Kennung und beginnt diese auch mit der Basiskennung?
     if(objName && objName.substring(0,toggleID.length)==toggleID) {
      // Anzahl der bearbeiteten Elemente erhoehen
      result++;
      // Element steht in der Ausnahmeliste?
      toggleException=(exceptions.indexOf(objName+"|")>=0)?true:false;
      // Wenn Anzahl ueber 100: Fortschritt in Statuszeile anzeigen
      if(objCount>showStatus) { window.status="Bearbeitetes Element: "+(result)+"/"+objCount; }

      // Darstellung ohne Platzhalter
      // ----------------------------
      if(toggleDisplay) {
       // Auf jeden Fall Style setzen (entweder/oder)?
       if(xSwitch) {
        // Display-Style unbedingt setzen
        obj[i].style.display=(toggleException)?displayXStyle:displayStyle;
       } else if(!toggleException) {
        // Einfachen Display-Style setzen
        obj[i].style.display=displayStyle;
       }
      }

      // Darstellung mit Platzhalter
      // ---------------------------
      if(toggleVisibility) {
       // Auf jeden Fall Style setzen (entweder/oder)?
       if(xSwitch) {
        // Visibility-Style unbedingt setzen
        obj[i].style.visibility=(toggleException)?visibilityXStyle:visibilityStyle;
       } else if(!toggleException) {
        // Visibility-Style nur bei gueltiger Kennung setzen
        obj[i].style.visibility=visibilityStyle;
       }
      }

      // Darstellung auf Farbe
      // ---------------------
      if(toggleBack) {
       // Auf jeden Fall Style setzen (entweder/oder)?
       if(xSwitch) {
        // Background-Color-Style unbedingt setzen
        obj[i].style.backgroundColor=(toggleException)?backXStyle:backStyle;
       } else if(!toggleException) {
        // Background-Color-Style nur bei gueltiger Kennung setzen
        obj[i].style.backgroundColor=backStyle;
       }
      }

     }
    }
    // Statuszeile wieder loeschen
    if(objCount>showStatus) { window.status=" "; }
   } else {
    // Dokument hat keine passenden Elemente
    result=0;
   }
  } else {
   // Browser kennt getElementsByTagName nicht
   result=false;
  }
 }
 return result;
}
