/**************************************************************
 *  Common meetingmasters.de Functions                        *
 *                                                            *
 **************************************************************/
var PLEASE_SELECT_VALUE = "please_select";
var vdr_div_pos_calculated = false;
var certificateImgArray = new Array();

function disableEnter(f,ev) {
  var k=ev.keyCode?ev.keyCode:ev.which?ev.which:ev.charCode;
    if(k==13){
     var i;
     for(i=0;i<f.form.elements.length;i++)
      if(f==f.form.elements[i])
        break;
      i=(i+1)%f.form.elements.length;
      f.form.elements[i].focus();
      return false;
    }
   else
    return true;
  }

function preload_images() {
    var button_bearbeiten = new Image();
    var button_bearbeiten_inaktiv = new Image();
    var calendar_showcalendar = new Image();

    button_bearbeiten.src = "/mm/htdocs/img/button_bearbeiten_sh_sw.gif";
    button_bearbeiten_inaktiv.src = "/mm/htdocs/img/button_bearbeiten_sh_gr.gif";
    calendar_showcalendar.src = "/mm/htdocs/img/calendar_showcalendar.gif";
}

function preloadImage(fileName) {
    certificateImgArray = new Array();
    
    var newImg = new Image();
    newImg.src = fileName;
    
    certificateImgArray[certificateImgArray.length] = newImg;
}

function killTitle(elemId) {
    document.getElementById(elemId).title = "";
}

function setValidDate(date, selectListDay, selectListMonth, selectListYear, notifyCalendar) {
    // Datumswerte auf übergebene Auswahllisten übertragen
    // hier müssen wir 1 subtrahieren, da der Index ja bei 0 beginnt
    // ==> der 2. des Monats liegt also bei Index 1
    selectListDay.selectedIndex = date.getDate() - 1;
    // Hier muss nichts subtrahiert werden, da die Monatswerte im Datumsobjekt ja bei 0 beginnen
    selectListMonth.selectedIndex = date.getMonth();

    // Die Jahreszahlen sind nicht mit dem Index vereinbar, also müssen wir
    // den ausgewählten Index hier in einer Schleife bestimmen
    for (var i = 0; i < selectListYear.options.length; i++) {
        if (selectListYear.options[i].value == date.getFullYear()) {
            selectListYear.selectedIndex = i;
            break;
        }
    }

    // Kalender aktualisieren
    if (notifyCalendar) {
        notifyCalendars(selectListDay.id);
    }
}

/* Nachdem ein Benutzer ein Datum verändert hat, wird aus der Benutzerauswahl ein Datumsobjekt erzeugt,
 * das ein gültiges Datum repräsentiert. Der Wert dieses gültigen Datums wird dann wiederum
 * in die Auswahllisten übertragen. Somit werden falsche Eingaben, wie z.B. der 30. Februar
 * oder der 31. Juni verhindert.
 *
 * Parameter: - Die Ids der Auswahllisten, in die das gültige Datum übertragen wird.
 *            - Soll ein evtl. vorhandener Kalender aktualisiert werden?
 */
function checkDate(tagId, monatId, jahrId, notifyCalendar) {
    var selectListDay = document.getElementById(tagId);
    var selectListMonth = document.getElementById(monatId);
    var selectListYear = document.getElementById(jahrId);

    // Datumsobjekt mit den ausgewählten Daten erzeugen
    var date = new Date(selectListYear.options[selectListYear.selectedIndex].value,
            (selectListMonth.options[selectListMonth.selectedIndex].value - 1),
            selectListDay.options[selectListDay.selectedIndex].value);

    setValidDate(date, selectListDay, selectListMonth, selectListYear, notifyCalendar);
}

function updateStartDate(startTagId, startMonatId, startJahrId,
        endTagId, endMonatId, endJahrId) {
    var selectListSDay = document.getElementById(startTagId);
    var selectListSMonth = document.getElementById(startMonatId);
    var selectListSYear = document.getElementById(startJahrId);
    var sDate = new Date(selectListSYear.options[selectListSYear.selectedIndex].value,
            (selectListSMonth.options[selectListSMonth.selectedIndex].value - 1),
            selectListSDay.options[selectListSDay.selectedIndex].value);

    var selectListEDay = document.getElementById(endTagId);
    var selectListEMonth = document.getElementById(endMonatId);
    var selectListEYear = document.getElementById(endJahrId);
    var eDate = new Date(selectListEYear.options[selectListEYear.selectedIndex].value,
            (selectListEMonth.options[selectListEMonth.selectedIndex].value - 1),
            selectListEDay.options[selectListEDay.selectedIndex].value);

    if(sDate > eDate) {
        eDate.setDate((eDate.getDate() - 1));
        setValidDate(eDate, selectListSDay, selectListSMonth, selectListSYear, true);
    }
}

function updateEndDate(startTagId, startMonatId, startJahrId,
        endTagId, endMonatId, endJahrId) {
    var selectListSDay = document.getElementById(startTagId);
    var selectListSMonth = document.getElementById(startMonatId);
    var selectListSYear = document.getElementById(startJahrId);
    var sDate = new Date(selectListSYear.options[selectListSYear.selectedIndex].value,
            (selectListSMonth.options[selectListSMonth.selectedIndex].value - 1),
            selectListSDay.options[selectListSDay.selectedIndex].value);

    var selectListEDay = document.getElementById(endTagId);
    var selectListEMonth = document.getElementById(endMonatId);
    var selectListEYear = document.getElementById(endJahrId);
    var eDate = new Date(selectListEYear.options[selectListEYear.selectedIndex].value,
            (selectListEMonth.options[selectListEMonth.selectedIndex].value - 1),
            selectListEDay.options[selectListEDay.selectedIndex].value);

    if(eDate < sDate) {
        sDate.setDate((sDate.getDate() + 1));
        setValidDate(sDate, selectListEDay, selectListEMonth, selectListEYear, true);
    }
}

function setSleepInfo(endTagId, endMonatId, endJahrId, von_day_id, bis_day_id) {
    var selectListEDay = document.getElementById(endTagId);
    var selectListEMonth = document.getElementById(endMonatId);
    var selectListEYear = document.getElementById(endJahrId);
    var eDate = new Date(selectListEYear.options[selectListEYear.selectedIndex].value,
            (selectListEMonth.options[selectListEMonth.selectedIndex].value - 1),
            selectListEDay.options[selectListEDay.selectedIndex].value);
            
    var nextDate = new Date(eDate.getFullYear(), eDate.getMonth(), eDate.getDate());
    nextDate.setDate((nextDate.getDate() + 1));

    var newNodeVon = document.createTextNode(eDate.getDate());
    var oldNodeVon = document.getElementById(von_day_id).firstChild;
    var newNodeBis = document.createTextNode(nextDate.getDate());
    var oldNodeBis = document.getElementById(bis_day_id).firstChild;
    
    document.getElementById(von_day_id).replaceChild(newNodeVon, oldNodeVon);
    document.getElementById(bis_day_id).replaceChild(newNodeBis, oldNodeBis);
}

/*
 * Ueberpruefung der Formulardaten von hotel.direktanfrage.form2
 */
function controlInputsEckdaten() {
    // Es wurde kein Veranstaltungsname eingegeben
    if (document.getElementById("vaname").value == "") {
        alert("Bitte geben Sie einen Namen für Ihre Veranstaltung ein!");
        return false;
    }

    // Die Anzahl der Teilnehmer wurde nicht eingegeben
    if (document.getElementById("anzteiln").value == "") {
        alert("Bitte geben Sie die geplante Teilnehmeranzahl ein!");
        return false;
    }

    // Es wurde eine Teilnehmeranzahl eingegeben
    if (document.getElementById("anzteiln").value != "") {
        // Die eingegebene Anzahl der Teilnehmer ist keine Zahl
        if (isNaN(document.getElementById("anzteiln").value)) {
            alert("Die Anzahl der Teilnehmer muss als ganze Zahl eingegeben werden!");
            return false;
        }
        else {
            var test = parseInt(document.getElementById("anzteiln").value);
            // Die eingegebene Anzahl der Teilnehmer ist kleiner oder gleich 0
            if (test <= 0) {
                alert("Bitte geben Sie die geplante Anzahl der Teilnehmer als ganze Zahl an größer 0 an!");
                return false;
            }
        }
    }
    return true;
}

/*
 * Ueberpruefung der Formulardaten von hotel.direktanfrage.form3
 * Es muss mindestens eine Checkbox selektiert sein
 */
function controlInputsMerkliste() {
    var checkBoxes = document.getElementsByName("hotel");
    for(var i = 0; i < checkBoxes.length; i++) {
        if(checkBoxes[i].checked) {
            return true;
        }
    }
    alert("Um mit Hotels direkt in Kontakt treten zu können, müssen\nSie " +
          "mindestens ein Hotel von Ihrer Merkliste auswählen!");
    return false;
}

function updateServicesForCategory(catId, srvId) {
    var lsSelect = document.getElementById(srvId);

    if(lsSelect.length > 1) {
        for(var i = (lsSelect.length - 1); i > 0; i--) {
            if(lsSelect.options[i].value != PLEASE_SELECT_VALUE) {
                lsSelect.options[i] = null;
            }
        }
    }

    var selectedCategory = document.getElementById(catId)
            .options[document.getElementById(catId).selectedIndex].value;
    var newOption;
    for(var j = 0; j < leistungen.length; j++) {
        if(leistungen[j].getKategorieKuerzel() == selectedCategory) {
            var lsText = leistungen[j].getName();
            if((leistungen[j].getBeschreibung()) != null && (leistungen[j].getBeschreibung() != "")) {
                lsText = lsText + " " + leistungen[j].getBeschreibung();
            }
            newOption = new Option(lsText, leistungen[j].getId());
            lsSelect.options[lsSelect.length] = newOption;
        }
    }
}

function controlWDVSelected() {
    var selectBox = document.getElementById("userwdvs");

    if(selectBox.selectedIndex <= 0) {
        alert("Bitte wählen Sie eine Anfrage aus der Liste aus!");
        return false;
    }

    return true;
}

function controlActiveWDVSelected() {
    if(controlWDVSelected()) {
        var selectBox = document.getElementById("userwdvs");
        var selectedValue = selectBox.options[selectBox.selectedIndex].value;
        for (var i = 0; i < wdvs.length; i++) {
            if(wdvs[i].getId() == selectedValue) {
                if(wdvs[i].getGesendet()) {
                    alert("Sie haben diese Anfrage bereits abgesendet!\n"
                        + "Um eine bereits versendete Anfragen zu editieren, müssen\n"
                        + "Sie zunächst eine Kopie dieser Anfrage erstellen!");
                    return false;
                }
                else {
                    return true;
                }
            }
        }
        
    }
    return false;
}

function checkIsActiveSelected() {
    var selected = false;
    var selectBox = document.getElementById("userwdvs");
    
    if(selectBox.selectedIndex > 0) {
        var selectedValue = selectBox.options[selectBox.selectedIndex].value;
        
        for (var i = 0; i < wdvs.length; i++) {
            if(wdvs[i].getId() == selectedValue) {
                if(!wdvs[i].getGesendet()) {
                    selected = true;
                    break;
                }
            }
        }
    }
    
    if(!selected) {
        document.getElementById("editbutton").src = "/mm/htdocs/img/button_bearbeiten_sh_gr.gif";
    }
    else {
        document.getElementById("editbutton").src = "/mm/htdocs/img/button_bearbeiten_sh_sw.gif";
    }
}

function noCopyFunction() {
    alert("Die Kopieren-Funktion wird zur Zeit überarbeitet und steht "
        + "Ihnen in Kürze zur Verfügung!");
    return false;
}


/*
 * Ueberpruefung der Formulardaten von hotel.direktanfrage.form4
 */
function controlInputsLeistungen() {
   /*
   Zeitraum leer?
   */
    
   Inputs = document.Form4.getElementsByTagName("input");
   Selects = document.Form4.getElementsByTagName("select");
   for (var x = 0; x < Inputs.length; x++) {
       if(Inputs[x].type=="text")
       {
          if (Inputs[x].name.indexOf("anztr",0)==0) //Name des inputs fängt mit anztr an und es steht eine 0 oder ein leerstring drin
          {
            if (Inputs[x].value == "" || Inputs[x].value == "0") {
            alert("Bitte geben Sie jeweils die Anzahl der Tagungsräume an! Nicht benötigte Tagungsräume löschen Sie bitte mit einem Klick auf <<Tagungsraum löschen>>.");
            return false;
            }

          if (Inputs[x].value != "" && (isNaN(Inputs[x].value))) {
            alert("Die Anzahl der Tagungsräume muss als ganze Zahl eingegeben werden!");
            return false;
            }
         }

         if (Inputs[x].name.indexOf("anztn",0)==0)
         {
            if (Inputs[x].value == "" || Inputs[x].value == "0") {
            alert("Bitte geben Sie jeweils die Anzahl der Teilnehmer an!");
            return false;
            }

          if (Inputs[x].value != "" && (isNaN(Inputs[x].value))) {
            alert("Die Anzahl der Teilnehmer muss als ganze Zahl eingegeben werden!");
            return false;
            }
         }

         if (Inputs[x].name.indexOf("anzls",0)==0)
         {
            if (Inputs[x].value == "" || Inputs[x].value == "0") {
            alert("Bitte geben Sie jeweils die Anzahl der Leistungen an! Nicht benötigte Leistungen löschen Sie bitte mit einem Klick auf <<Leistung löschen>>.");
            return false;
            }

          if (Inputs[x].value != "" && (isNaN(Inputs[x].value))) {
            alert("Die Anzahl der Leistungen muss als ganze Zahl eingegeben werden!");
            return false;
            }
         }
       }
    }

    for (var x = 0; x < Selects.length; x++)
        {
           if (Selects[x].name.indexOf("typ",0)==0 && Selects[x].value=="please_select")
           {
             alert("Bitte geben Sie jeweils die Raumnutzung für die Tagungsräume an!");
             return false;
           }

           if (Selects[x].name.indexOf("bform",0)==0 && Selects[x].value=="please_select")
           {
             alert("Bitte geben Sie jeweils die Bestuhlungsform für die Tagungsräume an!");
             return false;
           }

           if (Selects[x].name.indexOf("srv",0)==0 && Selects[x].value=="please_select")
           {
             alert("Bitte geben Sie jeweils die Leistung an. Wählen Sie dazu bitte vorher die passende Kategorie aus!");
             return false;
           }
       }
    return true;
}

/*                                                       
 * Fuegt Attribute zu HTML-Elementen via DOM hinzu       
 */                                                      
function addAttribute2Element(owner, attName, attValue) {
    var attr = document.createAttribute(attName);        
    attr.nodeValue = attValue;                           
    owner.setAttributeNode(attr);                        
    return owner;                                        
}

function changeImgSrc(imgId, newSrc) {
    if ((imgId != null) && (imgId != "")
        && (newSrc != null) && (newSrc != "")) {
        var changeImg = document.getElementById(imgId);
        changeImg.src = newSrc;
    }
}

function showVdrLogo(over_elem_id, position) {
    var logoDiv = document.getElementById("certificate_logo_container_div");
    var overElem = document.getElementById(over_elem_id);
    
    if ((logoDiv != null) && (overElem != null)) {
        logoDiv.className = "hint";

        if (!vdr_div_pos_calculated) {
            var logoDivWidth = logoDiv.offsetWidth;
            var logoDivHeight = logoDiv.offsetHeight;
            
            var overElemWidth = overElem.offsetWidth;
            var overElemHeight = overElem.offsetHeight;
            var overElemLeft = overElem.offsetLeft;
            var overElemTop = overElem.offsetTop;
            
            var parent = overElem.offsetParent;
            while (parent) {
                overElemLeft += parent.offsetLeft;
                overElemTop += parent.offsetTop;
                parent = parent.offsetParent;
            }
            
            if (position == "top") {
                logoDiv.style.left = (overElemLeft - logoDivWidth) + 'px';
                logoDiv.style.top = (overElemTop - logoDivHeight) + 'px';
            } else if (position == "bottomleft") {
                logoDiv.style.left = overElemLeft + 'px';
                logoDiv.style.top = (overElemTop + overElemHeight + 10) + 'px';
            } else { // Positionierung bottom
                logoDiv.style.left = (overElemLeft + overElemWidth) + 'px';
                logoDiv.style.top = (overElemTop + overElemHeight) + 'px';
            }
            
            vdr_div_pos_calculated = true;
        }
    }
}

function hideVdrLogo() {
    var logoDiv = document.getElementById("certificate_logo_container_div");
    
    if (logoDiv != null) {
        logoDiv.className = "hidden";
        vdr_div_pos_calculated = false;
    }
}

function showHotelCertificateLogo(changeImgId, newSrc, iconId, over_elem_id, position) {
    changeImgSrc(changeImgId, newSrc);
    killTitle(iconId);
    showVdrLogo(over_elem_id, position);
}

function openRaumplaene(url,target) {
	 var t = target + '';
	 fenster=window.open(url, t, "width=420,height=300,left=100,top=200,status=yes,scrollbars=yes,resizable=no");
	 fenster.focus();
	 return false;
	}
