/*
    Seiten spezifische Anpassungen und Kalender Instanzbildung für CSU Re-Launch. 
    -Niki-
*/
    // Nur zum debuggen: zeigt alle Formulare und deren Felder mit werten
    function trace_all_forms() {
        var msg="Forms: ";
        for(var i=0; i < window.document.forms.length; i++) {
            msg = msg + "\n"+i+": "+window.document.forms[i].name + " - " + window.document.forms[i].action;
            for(var j=0; j < window.document.forms[i].elements.length; j++) {
                msg = msg + "\n"+"["+j+"]: "+window.document.forms[i].elements[j].name + " = " + window.document.forms[i].elements[j].value;
            }
            msg=msg+"\n";
        }
        alert(msg);
    }

    // Eventhandler Funktion um navigieren über Monate und Jahre zu visualisieren
    function myCal_MonthNavigate_Event(p_year, p_month)
    {
        // Evtl führende null im monat-string einfügen.
        if (p_month.length == 1) {p_month = "0"+p_month; };
        
        //// Highlighte Termin Datümer
        //Prepare_SpezialDate();
    }

    // Eventhandler für Datumselektion
    function myCal_DateSelect_Event(p_year, p_month, p_day)
    {
        var destForm = window.document.forms[myCal.custom.formName];
        var destField = destForm[myCal.custom.fieldName];

        // Datum-string formatieren
        var destDate = "";
        p_month = p_month.toString();
        p_day = p_day.toString();
        p_year = p_year.toString();

        // mit führenden 0-en auffüllen
        if (p_month.length == 1) { p_month = "0"+p_month; };
        if (p_day.length == 1) { p_day = "0"+p_day; };

        destDate = p_year + "-" + p_month + "-" + p_day;

        // Formularfeld mit selectiertem Datum bestücken
        destField.value = destDate;

        // Form abschicken...
        destForm.submit();
    }
    
    // Versucht das zuletzt gesetzte Datum aus Input feldern oder URL zu ermitteln.
    function seek_LastDate(calendar)
    {
        var result = "";

        var destForm = window.document.forms[calendar.custom.formName];
        var destField = destForm[calendar.custom.fieldName];

        // Suche in form Feld.
        if (destField) {
            if (destField.value.length > 0){
               return destField.value;
            }
        }
        
        // Suche in URL string
        /* $$$ -Niki- Im CSU Relaunch nicht aktiv!!
        var url = window.location.href; //destForm.action;
        var pos1 = url.indexOf(calendar.custom.fieldName);
        var temp = "";
        if (pos1 > 0) {
            pos1 = url.indexOf("=", pos1)+1;
            var pos2 = url.indexOf("&", pos1);
            if (pos2 <= 0) { pos2 = url.length; }
            temp = url.substr(pos1, pos2-pos1);
            if (temp.length > 1) {
                result = temp;
                return result;
            }
        }
        */

        // Weder form-feld noch URL enthielten datum: liefer nichts
        return; // Liefert implziet "undefined" :
                // null oder leer-string geht hier nicht, sonst 
                // verzählt sich: myCal.showCalendar(myAchorName, seek_LastDate(myCal));
                // beim Parameter zählen ;-)
    }
    
    
    // ************************************************************************
    // PROTOTYP "Custom"
    // ************************************************************************
    
    // Prototype "RestrictDate" - Function --- Begrenzt das kleinste und größte auswählbare Datum (Jahr).
    // Beispiel: this.currentDate = this.custom.restrictDate(this.currentDate); 
    function Custom_RestrictDate(date)
    {
        var result = date;

        // Auswahlbare Jahre begrenzen
        var iYear = parseInt(date.getFullYear());
        
        if ((this.MAX_YEAR_SELECTABLE >0) && (iYear > this.MAX_YEAR_SELECTABLE)) {
            result.setYear(this.MAX_YEAR_SELECTABLE);
            result.setMonth(12-1);
        }
        else if ((this.MIN_YEAR_SELECTABLE >0) && (iYear < this.MIN_YEAR_SELECTABLE)) {
            result.setYear(this.MIN_YEAR_SELECTABLE);
            result.setMonth(1-1);
        }
        
        return result;
    }
    
    // Prototype "Custom" - CONSTRUCTOR --- für den Kalender um Customization "unter zu schieben".
    function Custom(calendar)
    {
        var calendar = calendar; // Parent calendar object
        
        var formName = ""; // Formularname um gewähltes Datum durch zu schleifen
        var fieldName = "" // Form-Feld um gewähltes Datum durch zu schleifen
        
        var imgArrowLeftUrl = "" // STRING: Image-URL um Blättern-Pfeil nach links zu rendern, wenn leerer string dann textueller Link
        var imgArrowRightUrl = "" // STRING: Image-URL um Blättern-Pfeil nach rechts zu rendern, wenn leerer string dann textueller Link
        var imgArrowLeftTitle = "" // STRING: Image Title Text
        var imgArrowRightTitle = "" // STRING: Image Title Text
        var imgArrowHeight = 10 // INTEGER|STRING: Höhe in Pixel der Pfeile links-/Rechts blättern.
        var imgArrowWidth = "10" // INTEGER|STRING: Breite in Pixel der Pfeile links-/Rechts blättern.
        
        var dayTitles = new Array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"); // ARRAY[STRING]: Namen der Wochentage [Sonntag...Samstag]
        var MAX_YEAR_SELECTABLE = 0; // INTEGER: Grösstes auswählbares Jahr, wenn 0 dann unbegrenzt
        var MIN_YEAR_SELECTABLE = 0; // INTEGER: Kleinstes auswählbares Jahr, wenn 0 dann unbegrenzt
        
        this.restrictDate = Custom_RestrictDate; // Methode zum Eingrenzen der wählbaren Jahre
    }

