//start --> lib/forms8.js
var tx_verworfen="Ihre Eingaben/Änderungen wurden verworfen!";
var tx_nochange="Datensicherung ist nicht notwendig,\nweil keine Daten verändert wurden";
var tx_err_user="Ihre Dateneingabe ist leider unvollständig!\nPrüfen Sie bitte die mit einen Stern markierten Felder";
var tx_dsi="Sie haben Daten verändert, ohne zu sichern.\nSicherung=OK, Keine Sicherung=Abbrechen";
var tx_del="Soll der Eintrag | wirklich gelöscht werden?";

//ly = layout (No Spaces!), no=ansagen, yes=nur Wert
//var ly_help="toolbar=yes,location=yes,scrollbars=yes,width=400,height=600,top=0";
//var ly_quer="toolbar=no,locationbar=no,scrollbars=yes,width=790,height=300,top=300";
//var ly_hoch="toolbar=no,locationbar=no,scrollbars=yes,width=427,height=600,top=0";
//var ly_lb="toolbar=no,locationbar=no,menubar=no,scrollbars=no,statusbar=no,personalbar=no,width=156,height=270,left=200,top=100";
var ly_help="toolbar=no,location,scrollbars,width=400,height=600,top=0";
var ly_quer="toolbar=no,locationbar=no,scrollbars,width=790,height=300,top=300";
var ly_hoch="toolbar=no,locationbar=no,scrollbars,width=427,height=600,top=0";
var ly_lb="toolbar=no,locationbar=no,menubar=no,scrollbars=no,statusbar=no,personalbar=no,width=153,height=270,left=200,top=100";
var ly_msg="toolbar=no,locationbar=no,menubar=no,scrollbars=no,statusbar=no,personalbar=no,width=200,height=150,left=200,top=100";

var chgd=0; var f_anz=1;
//Hier bietet sich evtl. ein array an:
var w_help=""; w_lb=""; w_quer=""; w_hoch=""; w_full=""; w_msg=""; w_user=""; w_left=0;     // w_memo="";

//Sonst gibt es Fehlermeldung, falls ohne additional js
var fld_names = new Array();
saved = new Image;  saved.src = "../img/saved.gif";
save_it = new Image; save_it.src = "../img/save_it.gif";
save_no = new Image;  save_no.src = "../img/save_no.gif";

//Standardprüfungen immer nur auf erstes Formular im aktuellen Fenster oder opener

window.onerror=errorhandler;

function errorhandler(msg,url,line)
{
   //email to, page O'r 264
   alert("CEBUS js-Error\nMessage.: " + msg + "\nPage.....: " + url + "\nLine......: " + line);
   return true;
}

function f_chg()
{
   //stati: 0=keine Veränderung, 1=Veränderung, Sicherung OK, 2=Veränderung, Sicherung nicht OK
   chgd=1;
   if(f_check())
   {
      document.saved.src=save_it.src
      chgd=1;  //es kann gesichert werden
   } else
   {
      document.saved.src=save_no.src
      chgd=2;  //es kann nicht gesichert werden
   }
   //alert("f_chg="+chgd + " form="+document.forms[0].name);
}

function f_check()
//Standard-egp auf minlen und 0. Bricht ab bei erstem Fehlwert. Besser: Zahlen=Länge, n=nur numerische Zeichen
{
   //Keine Var's gesetzt, zurück
   //alert("Vorher");
   if(fld_names.length==0) return true;  //leerer Array
   //alert("Nachher");
   var ok; f="";
   for(x=0; x<fld_names.length; x++)
   {
      f=document.forms[0].elements[fld_names[x]];
      //alert("Feldname="+fld_names[x]);
      //test auf radios -1 (true), sind undefined
      if(fld_length[x] == -1)
      {
         //einer muss in der Gruppe gesetzt sein
         ok=false;
         for(y=0; y<f.length;y++)
         {
            if(f[y].checked) ok=true;
         }
         //alert(ok);
         if (!ok) return false;
      } else
      {
         //test auf textfelder
         //alert("Value="+f.value+", Soll_Len="+fld_length[x]+", Ist_Len="+f.value.length+", x="+x +", Feldname="+fld_names[x]+" ("+f.type+")");
         //Geht nicht bei Radios
         if(f.value.length < fld_length[x] | f.value=="0" | f.value=="null")
         {
            //alert("Durchgefallen");
            return false;
         }
      }
   }
   return true;
}//f_check

function w_new(wname, typ, ly_user)
//Öffnet ein neues Fenster. Fensterklasse = wname. Künftig aus js() aufrufen. wname=php/htm Form, typ=größe
{
var left_pos=w_left;
switch(typ)    //ab Java 1.2
   {
   case "help":
      if (left_pos>0) {left_pos-=(400+10)};
      ly_help+=",left="+left_pos;
      //alert(ly_help);
      w_help=window.open(wname,"help",ly_help); w_help.focus();
      break;

   case "quer":
      if (left_pos>0) {left_pos-=(400+10)};
      //ly_quer+=",left="+left_pos;    //steht wie normales fenster
      //alert(ly_help);
      w_quer=window.open(wname,"quer",ly_quer,true); w_quer.focus();
      break;

   case "hoch":
      if (left_pos>0) {left_pos-=(430+10)};
      ly_hoch+=",left="+left_pos;
      //alert(ly_help);
      w_hoch=window.open(wname,"quer",ly_hoch,true); w_hoch.focus();
      break;

   //öffnet eine beliebige Listbox mit Querystring
   //nicht geeignet, wenn Prüfung erfolgen muss auf bestehende Feldinhalte, wie city, strasse
   case "lb":
      w_lb=window.open(wname,"lb",ly_lb); w_lb.focus();
      break;

   case "msg":  //Öffnet eine msg-box, ähnlich Windows.
      if (left_pos>0) {left_pos-=(400+10)};
      w_msg=window.open(wname,"msg",ly_quer,true); w_msg.focus();
      break;

   case "user":  //Öffnet ein Fenster, Größe und Eigenschaften können durch User eingestellt werden
      w_user=window.open(wname,"user",ly_user); w_user.focus();
      break;

   default:
      //Ein Fenster ohne Function. Wird auch nicht automatisch geschlossen
      //alert(ly_full);  //name sollte hier nicht stehen, sonst gibt es bei Dokumenten Problme mit mehr als einem Fenster
      w_full=window.open(wname); w_full.focus();
      break;
   }
}

function f_action(action,obj,obj2)
//generelle functionen
{
//alert("in f_action mit chdg="+chgd);
var f=document.forms[0];

switch(action)
   {
   case "focus":   //setzt focus nur, wenn Feld leer ist
      if(f.elements[obj].value=="") {f.elements[obj].focus();}
      break;

   case "submit":
      if(!f_check())  //falls noch nicht alle Prüfungen nach reload erfolgt sind
      {
         alert(tx_err_user);
         return false;
      }

      switch(chgd)   //normale Checks
      {
         case 0:
            alert(tx_nochange);
            break;

         case 1:
            chgd=0;
            return true;

         case 2:
            alert(tx_err_user);
            return false;
      }
      break;

   case "default":  //Holt onFocus den Wert von genanntem Feld, wenn eigenes Feld leer ist
      if(obj2.value=="")
      {
         obj2.value=obj.value; obj2.select();
      }
      break;

   case "confirm":
      break;

   }//case action
}//f_action

function w_action(action)
//generelle functionen     evtl. hier auch obj?
{
var w_name="";
//alert("w_Action: "+action+", "+document.title);

switch(action)
   {
   case "open":   //geht zum ersten Control und errechnet Fenstergröße
                        //alert(document.forms[0].elements[0].name);
      //geht nur, wenn erstes Element auch aktiviert werden kann
      //if(document.forms[0]) {document.forms[0].elements[0].focus();}
      //if(screen) {w_left=screen.width;}
      js("onOpen");
      break;

   case "focus":  //erhält wieder den focus, schließt anderes Fenster
      //alert("help und lb schliessen");
      if((w_help) && (!w_help.closed)) {w_help.close();}
      if((w_quer) && (!w_quer.closed)) {w_quer.close();}
      if((w_hoch) && (!w_hoch.closed)) {w_hoch.close();}
      if((w_user) && (!w_user.closed)) {w_user.close();}
      if((w_lb) && (!w_lb.closed)) {w_lb.close();}
//alert("Ende");
      break;

  case "unload":  //Fenster wird geschlossen, verlassen, reloaded
      switch(chgd)
      {
         case 0:  //verlassen ist kein DSI Problem
           //alert("unload dsi=0");
           break;

         case 1:  //Daten können gesichert werden, anbieten (geht nur für erste Form)
           //alert("unload dsi=1");
            if(confirm(tx_dsi))
            {
               chgd=0;
               document.forms[0].submit();
               //location.replace("http://localhost/php_dev/js_tst/start.htm"); disable back-Button geht so nicht
            } else
            {
               document.forms[0].reset();
            }
            break;

        case 2:  //Daten können sowieso nicht gesichert werden, unvollständige Eingabe, nur Hinweis
            alert(tx_verworfen);
            document.forms[0].reset();   //nur sinnvoll bei unload/reload, nicht bei submit
            break;

      }//case chgd
   }//case action
}//w_action

//Neu:
function js(action,p1,p2,p3)
//Soll die anderen js-Functionen komplett ersetzen
{
   //alert("js (action/p1/p2): "+action+" / "+p1+" / "+p2)
   var w_name="";
   //Schreibweise action korrigieren
   todo=action.toLowerCase();
   switch(todo)
   {
      case "null":   //nix
         return true; break;
      case "onopen": //onOpen und focus auf angegebenes Element setzten. Erstes geht nur, wenn es aktiviert werden kann
                     //falls Browsertypische Abweichungen, dann hier Version feststellen und -halten
                     //p1=Fenstername, p2=focus
         if(screen) {w_left=screen.width;}
         if(!p1) p1=0; if(!p2) p2=0;
         if(document.forms[p1]) {document.forms[p1].elements[p2].focus()};
         return true; break;
      case "onunload":        //Window wird geschlossen
         w_action("unload"); break;
      case "onfocus":         //Windows erhält focus
         w_action("focus"); break;
      case "delete":          //Eintrag löschen, p1=msg, p2=neuer link
         //tx_del, | ersetzen mit p1, p2=link zur neuen Seite
         if(confirm(tx_del) == true)
         {
            //alert("Löschen");
            //Zur neuen Form gehen, was einen einzelnen Datensatz löscht und glf. alle Fenster neue aufbaut
            location.replace(p2);
            break;
         } else
         {
            //alert("Nicht löschen");
            //Rücksprung ohne Form zu wechseln, Problem: Wenn kein Fenster geöffnet wird, bleibt cursor stehen
            location.replace("../all/msg6.php?action=null");
            break;
         }
         break;
      case "w_new":     //Neues Fenster öffen: p1=link, p2=Fenstertyp, p3=Layout
         w_new(p1,p2,p3);
         break;

   }//switch action

}//js




//end --> lib/forms8.htm
