// GLOBALE VARIABLEN
isNav = (navigator.appName.indexOf("Netscape") != -1) ? true : false;
isIE  = (navigator.appName.indexOf("Microsoft") != -1) ? true : false;


/* EXTRA-Fenster für die Behandlung von multipler Auswahl */


/* Diese Funktion sollte verallgemeinert werden da sie in der einen oder anderen Form öfters in diesem Skript auftaucht */
function auswahlfenster( vonFeld, anFeld )
{
        var newWindow;
        var props = 'scrollBars=yes,resizable=yes,toolbar=no,menubar=no,location=no,directories=no, width=100, height=100';
        var fromfield = eval ( 'document.forms[0].'+vonFeld );
        var vval  = fromfield.options[fromfield.selectedIndex].value;
        var cgi_skript = '/cgi-bin/dinoa/relselect.cgi/'+vonFeld+'/'+anFeld+'/'+vval;
        newWindow = window.open( cgi_skript , "Add_from_Src_to_Dest", props);
}

/* Diese Funktion wird vom Child_Window aufgerufen, */
/* um die Werte aus dessen Auswahl-Liste in die Zielliste */
/* zu übertragen!!!! */
function WerteUebernehmen ( sourceList, destinationList )
{
        for(var count = destinationList.options.length - 1; count >= 0; count--)
        {
                destinationList.options[count] = null;
        }

        destinationList.options[0] = new Option ( '-- Keine Auswahl --','',false )


        if ( ( sourceList ) && ( sourceList.options.length > 0 )) {
                destinationList.options[0] = new Option ( '-- Auswahl --','',false )
                for(var i = 0; i < sourceList.options.length; i++)
                {
                        if (sourceList.options[i] != null)
                                destinationList.options[i+1] = new Option(sourceList.options[i].text, sourceList.options[i].value,true );
                }
           }
        destinationList.options[0].selected = true;
}


function hilfe_fenster () {
    F1 = window.open ('','Bild','width=450,height=400,screenX=0,screenY=0,menubar=no,scrollbars=yes,resizable=yes,status=no');
}


function ersetze_zeichen ( text, zeichen, ersatzzeichen ) {
    var neuer_text = "";
    for (i = 0; i < text.length; i++) {
        var z = text.substring(i, i+1);
        if (z != zeichen)
            neuer_text = neuer_text + z;
        else
            neuer_text = neuer_text + ersatzzeichen;
    }
    return neuer_text;
}


function checkDate ( datum ) {
/* Check Dateformat */
var checkstr = "0123456789";
var DateValue = "";
var day;
var month;
var year;
var leap = 0;
var err = 0;
var i;
var jetzt = new Date();
var year_now  = jetzt.getFullYear();
var month_now = jetzt.getMonth()+1;


   /* Delete all chars except 0..9 */
   for (i = 0; i < datum.length; i++)
      if (checkstr.indexOf(datum.substr(i,1)) >= 0)
         DateValue = DateValue + datum.substr(i,1);

   /* Always change date to 8 digits - string
      if year is entered as 2-digit / always assume 20xx
      if year is not entered assume current year */

   if (DateValue.length == 1) DateValue = '0'+DateValue;
   if (DateValue.length == 2) DateValue = month_now+DateValue;
   if (DateValue.length == 3) DateValue = '0'+DateValue;
   if (DateValue.length == 4) DateValue = year_now+DateValue;
   if (DateValue.length == 5) DateValue = '200'+DateValue;
   if (DateValue.length == 6) DateValue = '20'+DateValue;
   if (DateValue.length == 7) DateValue = '2'+DateValue;

   if (DateValue.length != 8) err = 19;

   /* year is wrong if year = 0000 */
   year = DateValue.substr(0,4);
   if (year == 0) err = 20;

   /* Validation of month*/
   month = DateValue.substr(4,2);
   if ((month < 1) || (month > 12)) err = 21;

   /* Validation of day*/
   day = DateValue.substr(6,2);
   if (day < 1) err = 22;

   /* Validation leap-year / february / day */
   if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0))leap = 1;
   if ((month == 2) && (leap == 1) && (day > 29)) err = 23;
   if ((month == 2) && (leap != 1) && (day > 28)) err = 24;

   /* Validation of other months */
   if ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12"))) {
      err = 25;
   }
   if ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11"))) {
      err = 26;
   }

   DateValue = ( err ) ? err : DateValue;
   return DateValue;
}


function checkTime ( zeit ) {
/* check Timeformat */
var hhmm, h, m, TimeValue, err;

   err  = 0;
   hhmm = zeit.split (':');
   h    = hhmm[0];
   m    = (hhmm.length == 2) ? hhmm[1] : '0';

   if ( (h < 0) || (h>23) ) err = 41;
   if ( (m < 0) || (m>59) ) err = 42;
   if (h.length == 1) h = '0'+h;
   if (m.length == 1) m = '0'+m;
   TimeValue = ( err == 0) ? h + ':' + m : err;

   return TimeValue;
}

function checkDateTime ( field ) {

var DateValue = "";
var TimeValue = "";
var curVal = field.value;

   var ergebnis = curVal.match (/\S+\s*/g );
   if ( ergebnis == null ) {
     alert("(1) Datumsformat nicht korrekt (JJJJ.MM.TT)");
     field.select();
     field.focus();
     field.value ="";
     return false;
   }
   DateValue = ergebnis[0];
   if ( ergebnis.length > 1) TimeValue = ergebnis[1];
   var err   = 0;

   myDate = checkDate ( DateValue );
   if ( myDate < 100 ) {
     alert("(2) Datumsformat nicht korrekt (JJJJ.MM.TT)");
     field.select();
     field.focus();
     field.value ="";
     return false;
   }

   myTime = (TimeValue) ? checkTime ( TimeValue ): "";
   if ( myTime && ( myTime.length != 5) ) err = myTime;

   if ( err != 0 ) {
      alert("Zeitformat nicht korrekt (HH:MM)");
      field.value = myDate.slice(0,4)+'.'+ myDate.slice(4,6)+'.'+myDate.slice(6,8);
      field.select();
      field.focus();
      return false;
   }
   field.value = myDate.slice(0,4)+'.'+ myDate.slice(4,6)+'.'+myDate.slice(6,8)+' '+myTime;
   return true;
}


function checkWaehrung( feld ) {

    if (feld.value != "") {
            wert = feld.value;
        var null_zaehler = 0;
        var zahl_ok = 1;
        var i       = 0;

        flag = 0
        for (i = 0; i < wert.length; i++) {
            var z = wert.substring(i, i+1);
            if (z!="0" && z!="1" && z!="2" && z!="3" && z!="4" && z!="5" && z!="6" && z!="7" && z!="8" && z!="9" && z!="." && z!="," && z!="-" && z!="+") {
                zahl_ok = 0;
                break;
            }
        }
        if (zahl_ok==0) {
            alert("\nEs werden in diesem Feld nur Zahlen akzeptiert.\nBitte geben Sie eine Zahl ein.");
            feld.value = "";
               return false;
        }
        var negativer_wert = 0;
        erstes_zeichen = wert.substring(0,1);
        if (erstes_zeichen=="-") {
            negativer_wert = 1;
        }
        wert = ersetze_zeichen ( wert, "-", "" );
        wert = ersetze_zeichen ( wert, "+", "" );
        for (i = 0; i < wert.length; i++) {
            var z = wert.substring(i, i+1);
            if (z=="0" || z==".")
                null_zaehler = null_zaehler + 1;
            else
                break;
        }
        wert = wert.substring(null_zaehler, wert.length)
        wert_ohne_punkt = ersetze_zeichen ( wert, ".", "" );
        komma_pos = wert_ohne_punkt.indexOf(",");
        if (komma_pos == -1)
            wert_ohne_punkt = wert_ohne_punkt + ",00";
        wert_liste = wert_ohne_punkt.split(",");
        ganzzahlen = wert_liste[0];
        dezimalstellen = wert_liste[wert_liste.length-1];
        if (dezimalstellen.length == 0)
            dezimalstellen = dezimalstellen + "00";
        if (dezimalstellen.length == 1)
            dezimalstellen = dezimalstellen + "0";
        if (dezimalstellen.length >= 3)
            dezimalstellen = dezimalstellen.substring(0,2);
        if (ganzzahlen.length > 3) {
            g = ganzzahlen;
            var hunderter = "";
            var tausender = "";
            var millionen = "";
            var milliarden = "";
            if (g.length > 12) {
                feld.value = "";
                alert("Zahl zu gross.");
                return false;
            }
            if (g.length > 3 && g.length <= 6) {
                tausender  = g.substring(0, g.length-3);
                hunderter  = g.substring(g.length-3, g.length);
            }
            if (g.length > 6 && g.length <= 9) {
                millionen  = g.substring(0, g.length-6);
                tausender  = g.substring(g.length-6, g.length-3);
                hunderter  = g.substring(g.length-3, g.length);
            }
            if (g.length > 9 && g.length <= 12) {
                milliarden = g.substring(0, g.length-9);
                millionen  = g.substring(g.length-9, g.length-6);
                tausender  = g.substring(g.length-6, g.length-3);
                hunderter  = g.substring(g.length-3, g.length);
            }
            stop = 0;
            if (milliarden!="" && stop==0) {
                ganzzahlen = milliarden + "." + millionen + "." + tausender + "." + hunderter;
                stop = 1;
            }
            if (millionen!="" && stop==0) {
                ganzzahlen = millionen + "." + tausender + "." + hunderter;
                stop = 1;
            }
            if (tausender!="" && stop==0)
                ganzzahlen = tausender + "." + hunderter;
        }
        if (ganzzahlen.length==0)

            ganzzahlen = "0";
        if (negativer_wert==0)

            wert_neu = ganzzahlen + "," + dezimalstellen;

        else {

            wert_neu = "-" + ganzzahlen + "," + dezimalstellen;

            if (wert_neu=="-0,00")

                wert_neu = "0,00";

        }
        feld.value = wert_neu;

        return true;
    }
    else {
        return true;
    }
}

function check_ganzzahl (feld) {
    var str = feld.value;
    if (str == "") {
            alert("\nDas Feld ist leer.\n\nBitte geben Sie eine Zahl ein.")
        feld.focus();
        return false;
    }

    for (var i = 0; i < str.length; i++) {
        var Zahl1 = str.substring(i, i + 1);
        if (Zahl1 < "0" || "9" < Zahl1)  {
            alert("\nDas Eingabefeld akzeptiert nur Zahlen.\n\nBitte geben Sie eine Zahl ein.");
            feld.select();
              feld.focus();
            return false;
        }
    }
    return true;
}


/* Besetzt ein Feldelement mit dem Wert aus einer Radiobutton-Gruppe */
/* Dabei hat die Radiobuttun-Gruppe den gleichen Namen wie das Textfeld */
/* Jedoch mit vorangestelltem und folgendem '_' */
function set_field ( tofeld, wert ) {

    tofeld.value = wert;
    return true;
}



function gruppen_info ( feld ) {

    var slink = "/cgi-bin/dinoa/v2.1/groupinfo.cgi";
    var wert  = "";
    var i = 0;
    var feld;
    var wahl = data[ds_pos][fieldpos[feld]];


    if  ( wahl) {
        slink = slink + '/'+wahl.slice(0,6);
        window.open(slink,"Mitglieder","width=450,height=400,left=0,top=0,scrollbars=yes");
    } else {
        alert ('Keine Gruppe ausgewählt');
    }

    return false;

}


function raum_info (id_nr) {

    var slink = "/cgi-bin/dinoa/formgen.cgi/raumbeschreibung/7?id=";
    slink = slink + id_nr;

    window.open(slink,"Raum","width=450,height=400,left=0,top=0,scrollbars=yes");

}

function azubi_info (id_nr) {

    var slink = "/cgi-bin/dinoa/v2.1/maske.cgi?modul=kontakt&action=edit&id=";
    slink = slink + id_nr;

    window.open(slink,"Azubi","width=840,height=550,left=0,top=0,scrollbars=yes");

}



function test_tabelle () {

    var slink = "/cgi-bin/dinoa/formgen.cgi/testtabelle/";
    var wert  = "";
    var i = 0;
    var typ;
    var wahl;
    var db;

    typ   = document.maske.maskentyp;
    db    = document.maske.datenbank.value
    if (db == 'Standard') {
        db = 'testdb';
    }
    i     = typ.selectedIndex;
    wahl  = document.maske.maskendaten.value;
    slink = slink+typ.options[i].value+'?database='+db+'&maskdata='+escape(wahl);

    window.open(slink,"Testtabelle","width=450,height=400,left=0,top=0,scrollbars=yes");

}



function leer ( feld ) {

   if (!feld) {
       return false;
   }
   if ( ( feld.type == "select-one" ) && ( feld.options.selectedIndex > 0) ) return false;
   if ( ( feld.type == "select-multiple" ) && !( feld.options.selectedIndex < 0) ) return false;
   if ( ( feld.type == "text") && (feld.value != "" ) ) return false;
   if ( ( feld.type == "textarea") && (feld.value != "" ) ) return false;
   if ( ( feld.type == "file") && (feld.value != "" ) ) return false;
   return true;

}



function fehler (feld, msg) {
    alert (msg);
    feld.focus();
//  feld.select();
}

function test ( form, para ) {
    var args       = para.split (';');
    var elmname    = "";
    var label      = "";
    var liste;
    var feld,feld2;


    for ( var ia = 0; ia < args.length; ia++) {
        liste = args[ia].split(':');
        label    = liste[1];
        elmname  = liste[0];
        feld     = eval ('document.'+form+'.'+elmname);


        if ( leer( feld) ) {
            fehler (feld, 'Das Feld "'+label+'" darf nicht leer sein!');
            return;
        }

    }


    /* Diese Prüfung nur für die INFOZENTRALE */
    if (form == "info") {
        if ( leer(document.info.an_uids) && leer(document.info.an_oids)) {
            fehler (document.info.an_uids, 'Fuellen Sie bitte das Feld "an Mitglied"\n und/oder "an Gruppe" aus!');
            return;
        }
        if ( document.info.infotyp ) {
            typ_art  = document.info.infotyp.options[document.info.infotyp.options.selectedIndex].value;
        } else {
            typ_art  = "0";
        }


        if (typ_art == "000001") {
            anzahl_uids  = document.info.an_uids.options.length;
            anzahl_oids  = document.info.an_oids.options.length;
            anz_uids_sel = 0;
            anz_oids_sel = 0;
            for (var x = 0; x < anzahl_uids; x++) {
                if (document.info.an_uids.options[x].selected) {
                    anz_uids_sel = anz_uids_sel + 1;
                }
            }
            for (var x = 0; x < anzahl_oids; x++) {
                if (document.info.an_oids.options[x].selected) {
                    anz_oids_sel = anz_oids_sel + 1;
                }
            }
            if ( !leer(document.info.an_uids) && !leer(document.info.an_oids)) {
                alert ("Bitte die Aufgabe ENTWEDER einem Mitglied ODER einer Gruppe zuordnen!");
                return;
            }
            if ( !leer(document.info.an_uids) ) {
                if (anz_uids_sel != 1) {
                    alert ("Bitte die Aufgabe genau EINEM Mitglied zuordnen!");
                    return;
                }
            }
            if ( !leer(document.info.an_oids) ) {
                if (anz_oids_sel != 1) {
                    alert ("Bitte die Aufgabe genau EINER Gruppe zuordnen!");
                    return;
                }
            }
        }
    }


    /* Diese Prüfungen erfolgen nur für DOKUMENTE */
    if ( form == "dokument" ) {
        if ( leer(document.dokument.an_uids) && leer(document.dokument.an_oids)) {
            alert ("Neues Dokument\nIm Verteiler bitte mindestens einen Eintrag aus Gruppe oder Mitglied wählen");
            return
        }
        if ( document.dokument.ablagenr ) {
            if ( !leer(document.dokument.ablagenr) && isNaN(document.dokument.ablagenr.value)) {
                alert ("Fehlerhafte Archiv-Nr.!");
                return;
            }
        }
        document.dokument.action = '/cgi-bin/dinoa/dbaktion.cgi/dokument/save/dokument'

    }


    if ( form == "plan" ) {
        if ( leer(document.plan.an_uids) && leer(document.plan.an_oids)) {
            alert ("Neues Dokument\nMindestens eine Zugriffsberechtigung (Gruppe oder Mitglied)\n muss angegeben werden!");
            return
        }
/*        document.plaene.action = '/cgi-bin/dinoa/upload.cgi/plaene'
*/    }

    eval ( 'document.'+form+'.submit()' );
}