/* Zuerst wird der Browsertyp festgestellt */
NS=0; MS=0; DOM=0;
if ( document.getElementById ) DOM = 1;
if ( document.all ) MS = 1;
if ( document.layers) NS = 1;
if (!DOM)
  alert ('Ihr Browser ist veraltet.\nBitte installieren Sie einen neueren Browser.\n  Wir empfehlen die Open-Source Software Mozilla\n www.mozilla.org');


/* Browserabhängige Funktionen */
function setFieldHandler ( field, myEvent, myHandler ) {
  if (MS) field.attachEvent      ( "on"+myEvent, myHandler);
  else    field.addEventListener ( myEvent,      myHandler, true);
  return false;
}

function unsetFieldHandler ( field, myEvent, myHandler ) {
  if (!field) return false;
  if (MS) field.detachEvent ("on"+myEvent, myHandler)
  else    field.removeEventListener( myEvent, myHandler, true);
  return false;
}

function butOver ( what ) {
  //Eventnode feststellen
  if ( MS ) {var node = event.srcElement}
  else      {var node = what.currentTarget}
  node.style.backgroundColor = "#ffffff";
  node.style.borderColor = "#ccdefd";
  node.style.color = "#ff9900";
}

function butOut ( what ) {
  //Eventnode feststellen
  if ( MS ) {var node = event.srcElement}
  else      {var node = what.currentTarget}
  node.style.backgroundColor = "#003366";
  node.style.borderColor = "#ccdefd";
  node.style.color = "#ffffff";
}

/* Methoden/Abkürzungen für das DOM */
DOMHelper = {
 DCE:  function(x){ return document.createElement(x)},
 DCT:  function(x){ return document.createTextNode(x)},
 DCNE: function(x,id,css ) {
  // Erzeugt ein Tag-Element mit id und Style-Sheet Anweisung css
  var nN = dh.DCE ( x );
  nN.id   = id; nN.name = id; nN.className = css;
  return nN;
 },
 DCHF: function ( f,id, v ) {
  // Erzeugt ein Hidden-Field Element in Formular "f"
  var hf;
  hf = dh.DGE (id);
  if (!hf) hf = dh.DCNE ("input",id,"search");
  hf.type = "hidden";
  hf.value = v;
  dh.AC (f,hf,'' );
 },
 DGE:  function(x){ return document.getElementById(x)},
 DGBN: function(x){ return document.getElementsByName(x)},
 AC:   function(a,b,c){
  a.appendChild(b);
  if(c != null && c == true){ return a}
  },
 ACL:  function(){
  var a = arguments;
  var m =0, l=1;
  bReturn = false;
  var limit = a.length;
  if(typeof a[a.length-1] == "boolean"){
    bReturn = a[a.length-1];
    limit = a.length -1;
  }
  while(l != limit){
    a[m].appendChild(a[l]);
    l++;m++;
  }
  if(bReturn){
    return a[0];
  }
 },
 ACN:  function(){
  var a = arguments;
  var m =0, l=1;
  bReturn = false;
  var limit = a.length;
  if(typeof a[a.length-1] == "boolean"){
    bReturn = a[a.length-1];
    limit = a.length -1;
  }
  while(l != limit){
    a[m].appendChild(a[l]);
    l++;
  }
  if(bReturn){return a[0];}
 },

 RC:   function(a,b,c){ a.replaceChild(b,c) },
 SN:   function(a,b){ a.parentNode.replaceChild(b,a) },
 GOBS: function(a){ return typeof a == "string"?dh.DGE(a):a; },
 IS6:  function (iz) {
    if ( isNaN ( parseInt ( iz, 10 ))) return iz;
    if ( iz.length < 6 ) iz="000000".slice(0,(6-iz.length)) + iz;
    return iz;
  },
 HIDE: function(e){e.style.visibility="hidden"},
 SHOW: function(e){
   if (  e != null  ) {
     e.style.visibility="visible";
   }
  },
 YES:  function(e){e.checked = true},
 NO:   function(e){e.checked = false},
 GAP:  function(e){
  var r = { x: e.offsetLeft, y: e.offsetTop };
  if (e.offsetParent) {
    var tmp = dh.GAP(e.offsetParent);
    r.x += tmp.x;
    r.y += tmp.y;
  }
  return r;
 }
}
dh = DOMHelper;


/* Anzupassende Funktionen */
function createLabel ( id, Text, required ) {

   var Link = dh.DCE("a");
   var href = "/cgi-bin/dinoa/v2.1/help.cgi?database="+DATABASE+"&modul="+MODUL+"&field="+id.slice(1);
   Link.href = href;
   Link.className = (required) ? 'required':'normal';
   Link.target    = 'Bild';
   Link.tabindex   = 99;
   setFieldHandler ( Link, "onclick", hilfe_fenster );

   dh.AC ( Link, dh.DCT ( Text) );
   return Link;
}

function getAbsolutePos ( el ) {
  //Koordinaten eines HTML-Elements auf dem Bildschirm
  var r = { x: el.offsetLeft, y: el.offsetTop };
  if (el.offsetParent) {
    var tmp = getAbsolutePos(el.offsetParent);
    r.x += tmp.x; r.y += tmp.y;
  }
  return r
}

/* Ergebnis in gesondertem Fenster öffnen */
function slaveWindow ( url, parameter ) {
    var X = 120; // x position
    var Y = 100; // y position
    var W = 825; // width
    var H = 600; // height
    var ps = '';
    var s="resizable,left="+X+",top="+Y+",screenX="+X+",screenY="+Y+",width="+W+",height="+H;

    for ( var p in parameter ) {
        ps = ps + '&'+ p +'='+ parameter[p];
    }
    var SGW = window.open(url+'?'+ps.slice(1),'Special',s)
    return false;
}

function submitter ( programm, parameter) {
  // Erzeugt ein virtuelles Formular 'submitter' und führt mit den
  // angegebenen Parametern die Funktion submit dieses Formulars aus
  // Damit nicht multiple Anfragen gestellt werden, wird die Menüzeile
  // ausgeblendet
  dh.DGE('menu').style.visibility="hidden";
  var f = dh.DGE ('submitter');
  if ( !f ) {
    var myBody = dh.DGE('thebody');
    f = dh.DCNE ('FORM','submitter','');
    dh.AC ( myBody, f,'' );
  }

  f.action = '/cgi-bin/dinoa/'+programm;
  f.method = 'post';
  for ( var p in parameter ) dh.DCHF ( f, p, parameter[p] );
  f.submit();
  dh.DGE('menu').style.visibility="visible";
  return false;
}


function sendData ( ) {
  /* Speichern eines einzelnen Datensatzes */

  var dummy = ""
  var tmp = new Array ();
  var myFlag, myField, aktion,dsnr;
  var trenn = "_!_" // Trennzeichen zwischen den Feldern eines Datensatzes
  var i, j, theID;
  var transfer = new Array ();

  var FORM = dh.DGE ( 'maskenformular' );
  if (!FORM ) alert ('Die Html-Datei enthält kein Formular mit der ID: maskenformular');

  dh.DGE('maskenlayer').style.visibility="hidden";
  dh.DGE('menu').style.visibility="hidden";
  dh.DGE ('tit2').firstChild.nodeValue = '- Speichern -';

  for ( i=0; i< MASK.length; i++ ) { // ueber alle Feldelemente

        formid  = MASK[i][0];
        formtyp = MASK[i][2];


        if ((formtyp == 'select-one') || ( formtyp == 'select-multiple' )) {
           value = data[0][fieldpos[formid]];
           if (!value) value=' ';
           dh.DGE ('$'+formid).value = value;

        }  else {
           if (( formtyp == 'float') || ( formtyp == 'integer')){
             value = data[0][fieldpos[formid]];
             dh.DGE('$'+formid).value = value;
           } else {
             if ( formid != 'dateiname' && formid !="_right" ) {
               value = data[0][fieldpos[formid]]
               if (!value) value=' ';
               dh.DGE('$'+formid).value = value;
             }
           }
        }
    }

   if  ( ( MODUL == "raumverwaltung") || ( MODUL == "dozentverwaltung") ) {
      
      if ( ACTION == 'new' ) {
        // Neueingabe -- multiple Termine möglich
        // die Termine in myev.list werden aufgesplittet und an $termin, und $termin2
        // übergeben.
        var t1 ='';
        var t2 ='';
        var dt ='';
        for ( var di = 0; di < myev.list.length; di++ ) {
          dt = myev.list[di].text.split('-');
          t1 = t1+dt[0]+',';
          t2 = t2+dt[1]+',';
        }
        dh.DGE('$termin').value  = t1.substr(0,t1.length-1);
        dh.DGE('$termin2').value = t2.substr(0,t2.length-1);
      } else { // Termin wurde editiert nur eine Zeitraum (termin, termin2) möglich
        dh.DGE('$termin').value  = dh.DGE ('_startdate').value+' '+dh.DGE ('_starttime').value;
        dh.DGE('$termin2').value = dh.DGE ('_enddate').value+' '+dh.DGE ('_endtime').value;
      }
    }


    FORM.action = "/cgi-bin/dinoa/v3.0/modulator.cgi";
    dh.DCHF ( FORM, "modul", MODUL );
    dh.DCHF ( FORM, "aktion", 'save' );
    FORM.method = "POST";

/*    if ( (MODUL=='dokument') && (MODUL =='ava') ) {
        FORM.enctype="multipart/form-data";
    }*/
//    FORM.action = "/cgi-bin/dinoa/dump.cgi";
    FORM.submit();

}