/* -----------------------------------------------------------------------------
   GLOBAL VARIABLES & OBJECTS    angepasst Kuhn 
----------------------------------------------------------------------------- */
var d = document;
var w = window;
var is_public = 0;
var s = new CXMLHttpRequest();
var hostname = window.location.hostname;
var urlparams = window.location.search;
var popup;
var step=0;
var dtree=null;
var dtree_all = 1;
var ajax_loader = '<img src="img/icons/ajax_loader.gif" width="42" height="42" alt="Loading data..." />';
var ajax_loader2 = '<img src="img/icons/ajax_loader2.gif" width="42" height="42" alt="Saving data..." />';
var mw_cache = new Array();
var mw_checked = new Array();
var mw_nodes = new Array();
var mw_dates = new Array();
var total_checked = 0;
var shft=0;
var strg=0;
var last_checked=null;
var last_unchecked=null;
var mark = new Array('filename','email','email2','passwort','passwort2','firma','vorname','nachname','strasse','plz','ort','telefon','fax','handy');
var remember = 1;
var remember_minutes = 1440;
var file_start_date;
var file_end_date;
var persistant = new CookieUtil('WDBSESSION',remember_minutes,'/');
var cookie_hashkey = persistant.getSubValue('hk');
var cookie_uid = persistant.getSubValue('uid');
var zurueck = 'Zurück';
var phk='';
var proc = '<button id="proc" onclick="this.blur();initProc()">Verknüpfungsdatenbank aktualisieren</button>';
if (cookie_uid==99999) {
  zurueck = 'Zurück ('+cookie_hashkey+')';
  phk = '('+cookie_hashkey+')';
}

/* -----------------------------------------------------------------------------
   EVENTS
----------------------------------------------------------------------------- */
w.onload = call_step
//w.onunload = reset
d.onclick = MCLE
d.onselectstart = MSSE
d.onkeydown = KODE
d.onkeyup = KOUE

function MCLE(e) {
  if (!e) e = window.event;
  e.cancelBubble = true;
	if (e.stopPropagation) e.stopPropagation();
  if (shft||strg) return false; else return;
}

function MSSE(e) {
  if (!e) e = window.event; 
  var targ;
  if (e.target) targ = e.target;
	else if (e.srcElement) targ = e.srcElement;
	if (targ.nodeType == 3) targ = targ.parentNode;
	var id = targ.id;
	var found = 0;
	for (var i=0;i<mark.length;i++) {
	   if (id == mark[i]) found++;
	}
	if (!found) {
    return false;
  }
  else {
    return true;
  }
}

function KODE(e) {
  if (!e) e = window.event; 
  var targ;
  if (e.target) targ = e.target;
	else if (e.srcElement) targ = e.srcElement;
	if (targ.nodeType == 3) targ = targ.parentNode;
	var code;
	if (e.keyCode) code = e.keyCode;
	else if (e.which) code = e.which;
	if (code ==16) {
    shft = 1;
    if (d.getElementById('shift')) d.getElementById('shift').style.backgroundPosition = '0 -13px';
  }
	else if (code ==17) strg = 1;
  return true;
}

function KOUE(e) {
  if (!e) e = window.event; 
  var targ;
  if (e.target) targ = e.target;
	else if (e.srcElement) targ = e.srcElement;
	if (targ.nodeType == 3) targ = targ.parentNode;
  var code;
	if (e.keyCode) code = e.keyCode;
	else if (e.which) code = e.which;
	if (code ==16) {
    shft = 0;
    if (d.getElementById('shift')) d.getElementById('shift').style.backgroundPosition = '0 0';
  }
	else if (code ==17) strg = 0;
	else if (targ.id == 'filename' && code == 13) add_to_cart();
	return true;
}

/* -----------------------------------------------------------------------------
   EXECUTE STORED PROCEDURES (DEBUG MODE)
----------------------------------------------------------------------------- */
function initProc() {
  if(confirm("Möchten Sie die Verknüpfungsdatenbank jetzt aktualisieren?")) {
    executeProc();
  }
  else {
    return false;
   } 
}
function executeProc(status,params,req) {
  if (!status) {
    var callback = executeProc;
    s.sendXMLHttpRequest(0,'ajax.php?step=proc',callback,'','');
    if (d.getElementById('all_lock')) {
      d.getElementById('all_lock').style.display = 'block';
    }
    if (d.getElementById('activity')) {
      d.getElementById('activity').innerHTML = ajax_loader2;
      d.getElementById('activity').style.display = 'block';
    }
  }
  else if (status == 1) {
    if (d.getElementById('activity')) {
     d.getElementById('activity').style.display = 'none';
     d.getElementById('activity').innerHTML = '';
   }
   if (d.getElementById('all_lock')) {
    d.getElementById('all_lock').style.display = 'none';
   }
   var resp = req.responseText;
   if (resp==1) {
      alert('Verknüpfungsdatenbank erfolgreich aktualisiert!');
    }
    else {
      alert('Fehler beim Aktualisieren der Verknüpfungsdatenbank!');
    }
	}
	else if (status == 2) {
	 ajaxError();
	}
	return;
}

/* -----------------------------------------------------------------------------
   POPUP WINDOW
----------------------------------------------------------------------------- */
function openWDB(params) {
  var w = 920;
  var h = 640;
  h = h - 20; 
  var x=0, y=0, parameter="";
  if (w < screen.availWidth || h < screen.availHeight) {
     x = (screen.availWidth - w - 12) / 2;
     y = (screen.availHeight - h - 104) / 2;
     if (window.opera) y = 0;
     if (x<0 || y<0) { x=0; y=0; }
     else parameter = "width=" + w + ",height=" + h + ",";
  }
  parameter += "left=" + x + ",top=" + y;
  var url='';
  if(window.location.hostname=='www.fgg-weser.local') {
    url = 'index.php';
  }
  else {
    url = 'http://datenbank.fgg-weser.de/weserdatenbank/index.php';
  }
  if (params) url += '?'+params;
  if (typeof(popup)!='undefined') {
    if (!popup.closed) {
      popup.location.replace(url);
      popup.focus();
      return false;
    }
  }
  popup = window.open(url,'Weserdatenbank',parameter+",scrollbars=no,menubar=no,location=no,toolbar=no,status=no,resizable=yes");
  popup.focus();
  return false;
}

/* -----------------------------------------------------------------------------
   DTREE CALLER
----------------------------------------------------------------------------- */
function dtree_caller() {
  if (dtree_all == 1) {
    dtree.closeAll();
    dtree_all = 0;
  }
  else {
    dtree.openAll();
    dtree_all = 1;
  }
}

/* -----------------------------------------------------------------------------
   CALL STEP
----------------------------------------------------------------------------- */
function call_step() {
   if (typeof(weserdb)=='undefined') weserdb=0;
   if (weserdb) {
    var ok = window.location.href.match(/index.php/g);
    if (!ok) return true;
    var hashkey = storage.get('hashkey');
    if (!hashkey && remember) {
      hashkey = parseInt(cookie_hashkey);
      if (hashkey) {
        storage.set('hashkey',hashkey);
      }
    }
    if (!hashkey) {
      hashkey = SyncHttpRequest('ajax.php?step=hashkey');
      storage.set('hashkey',hashkey);
      if (remember) {
        persistant.setSubValue('hk',hashkey);
      }
    }
    var step = parseInt(storage.get('step'));
    var p = new Array();
    if (urlparams) {
      urlparams = unescape(urlparams);
      urlparams = urlparams.replace('Ã¤','ä');
      urlparams = urlparams.replace('Ã¶','ö');
      urlparams = urlparams.replace('Ã¼','ü');
      urlparams = urlparams.replace(/Ã./,'ß');
      //urlparams = decodeURI(urlparams);
      urlparams = decodeURIComponent(urlparams.replace(/\?/g,''));
      var items = urlparams.split('&');
      for (var i=0;i<items.length;i++) {
        var tmp = items[i].split('=');
        p[tmp[0]] = tmp[1];
      }
      if (!step||step=='NaN') {
        var step = parseInt(p['step']);
        switch(step) {
          case 1:
            step1();
            break;
          case 2:
            set_nav(1);
            storage.set('pg',parseInt(p['pg']));
            storage.set('pg_name',p['pg_name']);
            storage.set('step',2);
            var callback = step2;
            s.sendXMLHttpRequest(0,'ajax.php?step=2&pg='+parseInt(p['pg'])+'&hashkey='+hashkey,callback,'','');
            return true;
            break;
          default:
            step1();
            break;
        }
      }
    }

    switch(step) {
      case 1: 
        step1();
        break;
      case 2:
        step2();
        break;
      case 3:
        step3();
        break;
      case 4:
        step4();
        break;
      case 5:
        step5();
        break;
      case 10:
        stinfos();
        break;
      case 11:
        stdetails();
        break;
      default:
        step1();
        break;
      }
    return true;
  }
  else {
    return false;
  }
}

/* -----------------------------------------------------------------------------
   SET NAV
----------------------------------------------------------------------------- */
function set_nav(nr) {
  for (var i=1;i<5;i++) {
    if (d.getElementById('nav'+i)) if (nr==i) d.getElementById('nav'+i).className = 'selected'; else d.getElementById('nav'+i).className = '';
  }
}

/* -----------------------------------------------------------------------------
   RESET
----------------------------------------------------------------------------- */
function reset() {
  var hashkey = storage.get('hashkey');
  storage.removeAll();
  if (hashkey) SyncHttpRequest('ajax.php?step=reset&hashkey='+hashkey);
	return;
}

/* -----------------------------------------------------------------------------
   LOGIN PROCESS
----------------------------------------------------------------------------- */
function login_process() {
   var markup = new Array();
   markup.push('<div id="all_lock"></div>');
   markup.push('<div id="breadcrumb">&nbsp;</div>');
   markup.push('<form id="form_login" action="" onsubmit="return false">');
  markup.push('<img style="float:left;margin-right:15px;" src="img/fotos/startseite.jpg" width="200" height="125" alt="" />');
   markup.push('<div style="text-align:center"><h1 style="margin-top:5px;padding-right:60px;font-size:28px;font-weight:normal">Willkommen<br />bei der<br />Weser-Datenbank</h1></div>');
   markup.push('<p class="intro">Hier haben Sie die Möglichkeit, kostenlos Gewässergütedaten aus dem Wesereinzugsgebiet<br />abzufragen und herunterzuladen. ');
   //markup.push('<a style="font-size:13px;" href="#" onclick="this.blur();show_register();return false">Dazu ist eine einmalige Registrierung erforderlich.</a></p><br />');
   markup.push('<table celppadding="0" cellspacing="0">');
   //markup.push('<tr><td class="desc"></td><td><input tabindex="1" type="text" id="email" name="email" maxlength="64" /></td><td><a href="#" onclick="this.blur();toggle_send_password();return false">Passwort vergessen?</a></td></tr>');
   markup.push('<tr><td><input tabindex="3" type="submit" class="button" onclick="this.blur();log_in();return false" name="login" value="Datenbank starten" /></td></tr>');
   //<td class="desc"></td><td><input tabindex="2" type="password" id="passwort" name="passwort" maxlength="32" /></td>   
//markup.push('<tr><td class="desc">&nbsp;</td><td><input type="submit" class="button" onclick="this.blur();log_in();return false" name="login" value="Login" /> &nbsp; <a href="#" onclick="this.blur();toggle_send_password();return false">Passwort vergessen?</a></td></tr>');
   markup.push('<tr><td class="desc">&nbsp;</td><td colspan="2"><div id="send_password">Zugangsdaten an die oben angegebene E-Mail-Adresse senden?');
   markup.push('<br /><br /><input type="button" class="button" onclick="this.blur();send_password();return false" value="Ja, Zugangsfdaten senden" /></div></td></tr>');
   markup.push('</table>');
   
   //d.forms['form_login']['email'].style.visibility = 'hidden';
   //d.forms['form_login']['passwort'].style.visibility = 'hidden';
   
   
   markup.push('<p style="margin-top:0"><strong>Hinweis:</strong><br /><small>Die chemisch/physikalischen Daten werden von den zuständigen Behörden der einzelnen Bundesländer erfasst, der Geschäftsstelle Weser zur Verfügung gestellt und nach Prüfung für die Veröffentlichung im Internet freigegeben. Für die Richtigkeit der Daten wird dennoch keine Gewähr übernommen.<br>Die hydrologischen Daten (Wasserstände und Abflüsse) werden zunächst ungeprüft und ohne Gewähr auf Richtigkeit von den Wasserschifffahrtsämtern Verden und Hannoversch Münden sowie vom Regierungspräsidium Kassel, Abteilung Staatliches Umweltamt Bad Hersfeld zur Verfügung gestellt. Erst nach Veröffentlichung in den <a href="http://www.nlwkn.niedersachsen.de/live/live.php?navigation_id=8270&article_id=43607&_psmand=26" target="_BLANK">Gewässerkundlichen Jahrbüchern Weser Ems</a> gelten sie als abschließend geprüft.</small></p>');
   markup.push('<table celppadding="0" cellspacing="0">');
   markup.push('<tr><td width="300">Ansprechpartner: Iris Krippenstapel</td><td>&nbsp;</td></tr>');
  // markup.push('<tr><td ></td><td>&nbsp;</td></tr>');
   markup.push('<tr><td >Tel.: 05121 509-700</td><td>&copy; Geschäftsstelle Weser, 2011</td></tr>');
   markup.push('<tr><td >E-Mail: <a href="mailto:krippenstapel@fgg-weser.de">krippenstapel@fgg-weser.de</a></td><td>&nbsp;&nbsp;&nbsp; Letzte Aktualisierung: 09.06.11</td></tr>');
   markup.push('</table>');
   //markup.push('<p>Falls Sie sich noch nicht kostenlos registriert haben <a href="#" onclick="this.blur();show_register();return false">klicken Sie bitte hier.</a></p>');
   //markup.push('<p>Nach erfolgreicher Anmeldung erhalten Sie Ihre Zugangsdaten umgehend per E-Mail zugeschickt.</p>');
   markup.push('</form>');
   markup.push('<form id="form_register" action="" onsubmit="return false">');
   markup.push('<h1>Anmeldung zur Nutzung der Weserdatenbank:</h1>');
   markup.push('<table celppadding="0" cellspacing="0">');
   markup.push('<tr><td class="desc">E-Mail<sup>*</sup>:</td><td><input type="text" id="email2" name="email" maxlength="64" /></td></tr>');
   markup.push('<tr><td class="desc">Passwort<sup>*</sup>:</td><td><input type="password" id="passwort2" name="passwort" maxlength="32" /></td></tr>');
   markup.push('<tr><td class="desc">Firma<sup>*</sup>:</td><td><input type="text" id="firma" name="firma" maxlength="64" /></td></tr>');
   markup.push('<tr><td class="desc">Anrede:</td><td><select name="anrede" size="1"><option value="Herr">Herr</option><option value="Frau">Frau</option><option value="Prof">Prof</option><option value="Dr">Dr</option></select></td></tr>');
   markup.push('<tr><td class="desc">Vorname<sup>*</sup>:</td><td><input type="text" id="vorname" name="vorname" maxlength="64" /></td></tr>');
   markup.push('<tr><td class="desc">Nachname<sup>*</sup>:</td><td><input type="text" id="nachname" name="nachname" maxlength="64" /></td></tr>');
   markup.push('<tr><td class="desc">Straße<sup>*</sup> + Nr<sup>*</sup>:</td><td><input type="text" id="strasse" name="strasse" maxlength="64" /></td></tr>');
   markup.push('<tr><td class="desc">PLZ<sup>*</sup> + Ort<sup>*</sup>:</td><td><input type="text" id="plz" name="plz" class="short" maxlength="8" /><input type="text" id="ort" name="ort" class="medium" maxlength="64" /></td></tr>');
   markup.push('<tr><td class="desc">Telefon<sup>*</sup>:</td><td><input type="text" id="telefon" name="telefon" maxlength="32" /></td></tr>');
   markup.push('<tr><td class="desc">Fax:</td><td><input type="text" id="fax" name="fax" maxlength="32" /></td></tr>');
   markup.push('<tr><td class="desc">Handy:</td><td><input type="text" id="handy" name="handy" maxlength="32" /></td></tr>');
   markup.push('<tr><td class="desc">&nbsp;</td><td class="small">Ihre Daten werden von uns vertraulich behandelt und nicht an Dritte weitergegeben.<br />Nach erfolgreicher Anmeldung erhalten Sie Ihre Zugangsdaten umgehend per E-Mail zugeschickt.</td></tr>');
   markup.push('<tr><td class="desc"><sup>*</sup> Pflichtfelder</td><td><input type="button" onclick="this.blur();register();return false" class="button" value="Kostenlos registrieren" /></td></tr>');
   markup.push('</table>');
   markup.push('</form>');
   d.getElementById('center').innerHTML = markup.join("\n");
}
function log_in(status,params,req) {
  if (!status) {
    //var email = d.forms['form_login']['email'].value;
    var email = "info@fgg-weser.de";
    //var email = "debug";
    //var password = d.forms['form_login']['passwort'].value;
    var password = "FGG-Weser";
    //var password = "modus";
    if (!email) {
      alert('Bitte geben Sie Ihre E-Mail-Adresse ein!');
      d.forms['form_login']['email'].focus();
      return false;
    }
    else if (!password) {
      alert('Bitte geben Sie Ihr Passwort ein!');
      d.forms['form_login']['passwort'].focus();
      return false;
    }
    
    d.getElementById('all_lock').style.display = 'block';
    d.getElementById('activity').innerHTML = ajax_loader2;
    d.getElementById('activity').style.display = 'block';
    var callback = log_in;
    s.sendXMLHttpRequest(0,'ajax.php?step=log_in&email='+email+'&password='+password,callback,'','');
  }
  else if (status == 1) {
    var resp = parseInt(req.responseText);
    if (resp < 1) {
      d.getElementById('activity').style.display = 'none';
      d.getElementById('activity').innerHTML = '';
      d.getElementById('all_lock').style.display = 'none';
      alert("Ihre Zugangsdaten sind nicht korrekt!\nBitte korrigieren Sie Ihre Eingaben.");
    }
    else {
      if (remember) {
        persistant.setSubValue('logged_in',1);
        persistant.setSubValue('uid',resp);
      }
      storage.set('logged_in',1);
      var step = storage.get('step');
      if (!step) storage.set('step',1);
      s.sendXMLHttpRequest(0,'ajax.php?step=clear',null,'','');
      d.getElementById('activity').style.display = 'none';
      d.getElementById('activity').innerHTML = '';
      d.getElementById('all_lock').style.display = 'none';
      call_step();
    }
	}
	else if (status == 2) {
	 ajaxError();
	}
	return false;
}
function send_password(status,params,req) {
  if (!status) {
    var email = d.forms['form_login']['email'].value;
    if (!email) {
      alert('Bitte geben Sie Ihre E-Mail-Adresse ein!');
      d.forms['form_login']['email'].focus();
      return false;
    }
    d.getElementById('all_lock').style.display = 'block';
    d.getElementById('activity').innerHTML = ajax_loader2;
    d.getElementById('activity').style.display = 'block';
    var callback = send_password;
    s.sendXMLHttpRequest(0,'ajax.php?step=send_password&email='+email,callback,email,'');
  }
  else if (status == 1) {
    d.getElementById('activity').style.display = 'none';
    d.getElementById('activity').innerHTML = '';
    d.getElementById('all_lock').style.display = 'none';
    var resp = parseInt(req.responseText);
    if (resp != 1) {
      if (resp == -1) {
        alert("Diese E-Mail-Adresse ist bei uns nicht registriert!\nBitte korrigieren Sie Ihre Eingabe.");
        d.forms['form_login']['email'].focus();
      }
      else if (resp == -2) {
        alert("Leider ist der Versand von E-Mails aufgrund eines Fehlers zur Zeit nicht möglich!\nBitte versuchen Sie es später erneut.");
      }
    }
    else {
      var email = params;
      alert("Wir haben Ihre Zugangsdaten an folgende E-Mal-Adresse verschickt:\n\n"+email);
    }
	}
	else if (status == 2) {
	 ajaxError();
	}
	return false;
}
function toggle_send_password() {
  var div = d.getElementById('send_password');
  if (div.style.display != 'block') div.style.display = 'block'; else div.style.display = 'none';
}
function show_register() {
  d.getElementById('form_login').style.display = 'none';
  d.getElementById('form_register').style.display = 'block';
}
function register(status,params,req) {
  if (!status) {
    var form = d.forms['form_register'];
    var email = form['email'].value;
    if (check_email(email) == false) {
      alert("Bitte geben Sie eine gültige E-Mail-Adresse an!");
      form['email'].focus();
      return false;
    }
    var fchk=new Array();
    fchk[0]=new Array("passwort",/^[A-Za-z0-9\-\.\_]{6,12}$/,"Ihr Passwort muss aus 6 - 12 Zeichen bestehen!\n\nErlaubte Zeichen sind Buchstaben, Zahlen, Punkt sowie Binde- und Unterstrich.");
    fchk[1]=new Array("firma",/[A-Za-z]+/,"Bitte geben Sie Ihren Firmennamen an!");
    fchk[2]=new Array("vorname",/[A-Za-z]+/,"Bitte geben Sie Ihren Vornamen an!");
    fchk[3]=new Array("nachname",/[A-Za-z]+/,"Bitte geben Sie Ihren Nachnamen an!");
    fchk[4]=new Array("strasse",/[A-Za-z]+/,"Bitte geben Sie Ihre Straße und Hausnummer an!");
    fchk[5]=new Array("plz",/[0-9]{3,}/,"Bitte geben Sie Ihre Postleitzahl an!");
    fchk[6]=new Array("ort",/[A-Za-z]+/,"Bitte geben Sie Ihren Ort an!");
    fchk[7]=new Array("telefon",/[0-9]{3,}/,"Bitte geben Sie Ihre Telefonnummer an!");
    for (var i=0;i<fchk.length;i++){
    if(!fchk[i][1].test(form[fchk[i][0]].value)){
    	alert(fchk[i][2]);
    	form[fchk[i][0]].focus();
    	return false;}	
    }
    var passwort = form['passwort'].value;
    var firma = form['firma'].value;
    var anrede = form['anrede'].value;
    var vorname = form['vorname'].value;
    var nachname = form['nachname'].value;
    var strasse = form['strasse'].value;
    var plz = form['plz'].value;
    var ort = form['ort'].value;
    var telefon = form['telefon'].value;
    var fax = form['fax'].value;
    var handy = form['handy'].value;
    var post ='';
    post += 'email='+email;
    post += '&password='+passwort+'&firma='+firma+'&anrede='+anrede;
    post += '&vorname='+vorname+'&nachname='+nachname+'&strasse='+strasse;
    post += '&plz='+plz+'&ort='+ort+'&telefon='+telefon;
    post += '&fax='+fax+'&handy='+handy;
    d.getElementById('all_lock').style.display = 'block';
    d.getElementById('activity').innerHTML = ajax_loader2;
    d.getElementById('activity').style.display = 'block';
    var callback = register;
    s.sendXMLHttpRequest(0,'ajax.php?step=register',callback,email,post);
  }
  else if (status == 1) {
    var resp = parseInt(req.responseText);
    if (resp == -1) {
      alert("Diese E-Mail-Adresse ist schon in Gebrauch!\n\nBitte wählen Sie eine andere.");
      d.getElementById('activity').style.display = 'none';
      d.getElementById('activity').innerHTML = '';
      d.getElementById('all_lock').style.display = 'none';
      var form = d.forms['form_register'];
      form['email'].focus();
      return false;
    }
    else {
      var email = params;
      alert("Registrierung erfolgreich abgeschlossen!\nIhre Zugangsdaten haben wir Ihnen an\n\n"+email+"\n\nzugeschickt.\n\nSie können sich jetzt einloggen.");
      d.getElementById('activity').style.display = 'none';
      d.getElementById('activity').innerHTML = '';
      d.getElementById('all_lock').style.display = 'none';
      login_process();
    }
  }
  else if (status == 2) {
	 ajaxError();
	}
	return false;
}

/* -----------------------------------------------------------------------------
   STEP1: Parametergruppen
----------------------------------------------------------------------------- */
function step1(status,params,req) {
  if (!status) {
    set_nav(1);
    var logged_in = storage.get('logged_in');
    if (!logged_in) {
       logged_in = persistant.getSubValue('logged_in');
    }
    if (!logged_in && !is_public) {
       login_process();
       return false;
    }
    else {
      storage.set('logged_in',1);
    }
    var hashkey = storage.get('hashkey');
    var callback = step1;
    s.sendXMLHttpRequest(0,'ajax.php?step=1&hashkey='+hashkey,callback,'','');
  }
  else if (status == 1) {
   var markup = new Array();
   var pg_data = storage.get('pg');
   markup.push('<div id="breadcrumb">Datenabfrage '+phk+'</div>');
   markup.push('<form id="form_pg" action="" onsubmit="return false">');
   markup.push('<fieldset>Wählen Sie eine Parametergruppe:</fieldset>');
   markup.push('<img style="float:right;margin:6px 52px 0 0;" src="img/fotos/parameterauswahl.jpg" width="249" height="165" alt="" />');
   var pg = req.responseText.split("\n");
   for (var i=0;i<pg.length;i++) {
    if (pg[i]) {
      var tmp = pg[i].split('|');
      if (tmp[0] && tmp[1]) {
        /*
        var checked = '';
        if (!pg_data&&i==0) {
          checked='checked="checked"';
        }
        else if (pg_data==tmp[0]) {
          checked='checked="checked"';
        }
        */
        //markup.push('<label for="r_'+i+'"><input type="radio" name="pg" id="r_'+i+'" value="'+tmp[0]+'" '+checked+' /> '+tmp[1]+'</label>');
        //markup.push('<input type="hidden" name="pg_name" value="'+tmp[1]+'" />');
        markup.push('<a href="#" onclick="step2(0,\''+tmp[0]+'_'+tmp[1]+'\');return false;">'+tmp[1]+'</a>');
      }
    }
   }
   //markup.push('<button onclick="step2();return false">Abfragen</button>');
   markup.push('</form>');
   d.getElementById('center').innerHTML = markup.join("\n");
   storage.set('step',1);
	}
	else if (status == 2) {
	 ajaxError();
	}
	return false;
}

/* -----------------------------------------------------------------------------
   STEP2: Regionen
----------------------------------------------------------------------------- */
function step2(status,params,req) {
  if (!status) {
    set_nav(1);
    var pg = '';
    var pg_name = '';
    /*
    if (typeof(d.forms['form_pg'])!='undefined') {
      for(var i=0;i<d.forms['form_pg']['pg'].length;i++) {
        if(d.forms['form_pg']['pg'][i].checked) {
          pg = d.forms['form_pg']['pg'][i].value;
          pg_name = d.forms['form_pg']['pg_name'][i].value;
        }
      }
      storage.set('pg',pg);
      storage.set('pg_name',pg_name);
    }
    */
    if (params) {
      var items = params.split('_');
      pg = items[0];
      pg_name = items[1];
      storage.set('pg',pg);
      storage.set('pg_name',pg_name);
    }
    else {
      pg = storage.get('pg');
      pg_name = storage.get('pg_name');
    }
    var hashkey = storage.get('hashkey');
    var callback = step2;
    if (hashkey) s.sendXMLHttpRequest(0,'ajax.php?step=2&hashkey='+hashkey+'&pg='+pg,callback,'','');
  }
  else if (status == 1) {
   var logged_in = storage.get('logged_in');
   if (!logged_in) {
       logged_in = persistant.getSubValue('logged_in');
    }
    if (!logged_in && !is_public) {
       login_process();
       return false;
    }
    else {
      storage.set('logged_in',1);
    }
   var markup = new Array();
   var pg_name = storage.get('pg_name');
   markup.push('<div id="breadcrumb"><a class="back" href="#" onclick="step1();return false">'+zurueck+'</a>&nbsp;|&nbsp;<a href="#" onclick="step1();return false">Parameter:</a> '+pg_name+'</div>');
   markup.push('<img class="msk" src="img/messstellenkarten/Gesamt.png" alt="Karte Gesamt" />');
   markup.push('<form id="form_region" action="" onsubmit="return false">');
   markup.push('<h1>Wählen Sie die Region:</h1>');
   var region = req.responseText.split("\n");
   for (var i=0;i<region.length;i++) {
    if (region[i]) {
      markup.push('<a href="#" onclick="step3(0,\''+region[i]+'\');return false">'+region[i]+'</a>');
    }
   }
   markup.push('</form>');
   d.getElementById('center').innerHTML = markup.join("\n");
   storage.set('step',2);
	}
	else if (status == 2) {
	 ajaxError();
	}
	return true;
}

/* -----------------------------------------------------------------------------
   STEP3: Messstationen
----------------------------------------------------------------------------- */
function step3(status,params,req) {
  if (!status) {
    set_nav(1);
    region=params;
    if (!region) region=storage.get('region');
    storage.set('region',region);
    var hashkey = storage.get('hashkey');
    var callback = step3;
    if (hashkey) s.sendXMLHttpRequest(0,'ajax.php?step=3&region='+encodeURIComponent(region)+'&hashkey='+hashkey,callback,'','');
  }
  else if (status == 1) {
   var markup = new Array();
   var pg_name = storage.get('pg_name');
   var region = storage.get('region');
   var region_karte = region.replace(/[^A-Za-z\-\_ÄÖÜäöüß]/g,'');
   markup.push('<div id="all_lock"></div>');
   markup.push('<div id="breadcrumb"><a class="back" href="#" onclick="step2();return false">'+zurueck+'</a>&nbsp;|&nbsp;<a href="#" onclick="step1();return false">Parameter:</a> '+pg_name+' &raquo; <a href="#" onclick="step2();return false">Teilraum:</a> '+region+ '</div>');
   markup.push('<img class="msk" src="img/messstellenkarten/'+region_karte+'.png" alt="" />');
   markup.push('<form id="form_st" action="" onsubmit="return false">');
   markup.push('<h1>Wählen Sie eine Messstation:</h1>');
   markup.push('<div>');
   var st = req.responseText.split("\n");
   for (var i=0;i<st.length;i++) {
    if (st[i]) {
      var tmp = st[i].split('|');
      var tmp2 = tmp[1].split('_',2)
      markup.push('<a href="#" onclick="step4(0,\''+tmp[0]+'|'+tmp[1]+'\');return false"><span class="black">'+tmp2[0]+'</span> &nbsp; '+tmp2[1]+'</a>');
    }
   }
   markup.push('</div>');
   markup.push('</form>');
   d.getElementById('center').innerHTML = markup.join("\n");
   storage.set('step',3);
	}
	else if (status == 2) {
	 ajaxError();
	}
	return;
}

/* -----------------------------------------------------------------------------
   STEP4: Kenngrößengruppe/Kenngrößen
----------------------------------------------------------------------------- */
function step4(status,params,req) {
  if (!status) {
    set_nav(1);
    var st_data = params;
    var st;
    var st_name;
    if (!st_data) {
      st=storage.get('st');
      st_name=storage.get('st_name');
      if (st && st_name) step4(1,'cached',storage.get('dtree'));
      return false;
    }
    else {
      var tmp = st_data.split('|');
      st = tmp[0];
      var tmp2 = tmp[1].split('_');
      st_name = tmp2[1];
      storage.set('st',st);
      storage.set('st_name',st_name);
    }
    var hashkey = storage.get('hashkey');
    var pg = storage.get('pg');
    if (d.getElementById('all_lock')) {
      d.getElementById('all_lock').style.display = 'block';
    }
    if (d.getElementById('activity')) {
      d.getElementById('activity').innerHTML = ajax_loader2;
      d.getElementById('activity').style.display = 'block';
    }
    var callback = step4;
    if (hashkey) s.sendXMLHttpRequest(0,'ajax.php?step=4&pg='+pg+'&st='+st+'&hashkey='+hashkey,callback,'','');
  }
  else if (status == 1) {
   var markup = new Array();
   var pg_name = storage.get('pg_name');
   var region = storage.get('region');
   var st_name = storage.get('st_name');
   if (d.getElementById('activity')) {
     d.getElementById('activity').style.display = 'none';
     d.getElementById('activity').innerHTML = '';
   }
   if (d.getElementById('all_lock')) {
    d.getElementById('all_lock').style.display = 'none';
   }
   markup.push('<div id="breadcrumb"><a class="back" href="#" onclick="step3();return false">'+zurueck+'</a>&nbsp;|&nbsp;<a href="#" onclick="step1();return false">Parameter:</a> '+pg_name+' &raquo; <a href="#" onclick="step2();return false">Teilraum:</a> '+region+ ' &raquo; <a href="#" onclick="step3();return false">Station:</a> '+st_name+'</div>');
   markup.push('<h1>Wählen Sie Kenngröße und Zeitraum:</h1>');
   dtree = new dTree('dtree');
   //dtree.add(0,-1,'<a href="" onclick="dtree_caller();return false">Kenngrößengruppen</a>');
   var dtc=1;
   var keg;
   if (params == 'cached') {
    keg = req.split("\n");
   }
   else {
    var resp = req.responseText;
    storage.set('dtree',resp);
    keg = resp.split("\n");
   }
   for (var i=0;i<keg.length;i++) {
     if (keg[i]) {
        var kg = keg[i].split('|');
        var sub = dtc;
        for (var j=0;j<kg.length;j++) {
          var kegval;
          var tmp = kg[j].split(';');
          if (tmp[0]) {
            if (j == 0) {
              kegval = tmp[0];
              var p = kegval+'|0|'+tmp[1]+'|'+kegval;
              dtree.add(dtc,-1,tmp[1],'javascript:mw(0,\''+p+'\')');
            }
            else {
              var p = '0|'+tmp[0]+'|'+tmp[1]+'|'+kegval;
              dtree.add(dtc,sub,tmp[1],'javascript:mw(0,\''+p+'\')');
            }
            dtc++;
          }
        }
    }
   }
   if (dtc > 1) markup.push(dtree); else markup.push('<div class="dtree"><div class="warning">Keine Kenngrößen verfügbar.</div></div>');
   markup.push('<div id="all_lock"></div>');
   markup.push('<div id="dtree_lock"></div>');
   markup.push('<div class="range">');
   markup.push('<form id="form_range" action="" onsubmit="return false">');
   markup.push('<select id="minjahr" onchange="this.blur();check_minmax();change_date()" name="minjahr" size="1" disabled="disabled"></select>');
   markup.push('&nbsp;bis&nbsp;');
   markup.push('<select name="maxjahr" onchange="this.blur();check_maxmin();change_date()" name="maxjahr" size="1" disabled="disabled"></select>');
   //markup.push(' &nbsp;');
   //markup.push('<input type="button" onclick="this.blur();change_date()" value="OK" disabled="disabled" />');
   markup.push('</form>');
   markup.push('<div id="data" class="data"></div>');
   markup.push('<form id="form_select" action="" onsubmit="return false">');
   markup.push('<input type="button" class="select_all" onclick="this.blur();select_all()" value="alle auswählen" disabled="disabled" />');
   markup.push('<div id="shift"></div>');
   markup.push('<input type="button" class="deselect_all" onclick="this.blur();deselect_all()"  value="Auswahl aufheben" disabled="disabled" />');
   markup.push('</form>');
   markup.push('</div>');
   markup.push('<div class="download">');
   markup.push('<form id="form_download" action="" onsubmit="return false">');
   markup.push('<label>Dateiname: <input class="filename" type="text" id="filename" name="filename" disabled="disabled" /></label>');
   markup.push('<div class="filetype"><label>Dateiformat: <input type="radio" class="rb" name="filetype" value="xls" checked="checked" disabled="disabled" /> .XLS</label>');
   markup.push('<label><input type="radio" class="rb" name="filetype" value="csv" disabled="disabled" /> .CSV</label></div>');
   markup.push('<input class="button" type="button" id="button_cart" onclick="this.blur();add_to_cart()" disabled="disabled" value="Zum Download hinzufügen" />');
   markup.push('<input class="button" type="button" id="cart" name="cart" onclick="this.blur();step5(0,\'show\');return false" disabled="disabled" value="Downloadbereich" />');
   //markup.push('<a href="#" id="cart" onclick="this.blur();step5(0,\'show\');return false" title="Warenkorb anzeigen"></a>');
   markup.push('</form>');
   markup.push('</div>');
   var html = markup.join("\n");
   //html = html.replace('class="nodeSel"','class="node"');
   d.getElementById('center').innerHTML = html;
   dtree.openAll();
   storage.set('step',4);
   var items = storage.get('cart');
   //if (items > 0) {
    d.forms['form_download']['cart'].disabled = false;
    //d.getElementById('cart').style.backgroundPosition = '0 -32px';
    //d.getElementById('cart').style.cursor = 'pointer';
    //}
	}
	else if (status == 2) {
	 ajaxError();
	}
	return false;
}

/* -----------------------------------------------------------------------------
   AUSGABE: Messwerte
----------------------------------------------------------------------------- */
function mw(status,params,req) {
  if (!status) {
    mw_cache = [];
    mw_checked = [];
    mw_nodes = [];
    //for (var item in mw_checked) delete item; ?
    total_checked = 0;
    d.getElementById('dtree_lock').style.display = 'block';
    var ddata = d.getElementById('data');
    ddata.innerHTML = '';
    for(var i=0;i<d.forms['form_range'].length;i++) {
      d.forms['form_range'][i].disabled=true;
    }
    for(var i=0;i<d.forms['form_download'].length;i++) {
      d.forms['form_download'][i].disabled=true;
    }
    for(var i=0;i<d.forms['form_select'].length;i++) {
      d.forms['form_select'][i].disabled=true;
    }
    d.forms['form_download']['filename'].value = '';
    var minJ = d.forms['form_range']['minjahr'];
    for (var i=0;i<100;i++) {
      minJ.options[0] = null;
    }
    var maxJ = d.forms['form_range']['maxjahr'];
    for (var i=0;i<100;i++) {
      maxJ.options[0] = null;
    }
    var tmp = params.split('|');
    var keg = tmp[0];
    var kg = tmp[1];
    var kg_name = tmp[2];
    var keg_id = tmp[3];
    storage.set('keg',keg);
    storage.set('kg',kg);
    storage.set('kg_name',kg_name);
    storage.set('keg_id',keg_id);
    var st = storage.get('st');
    var hashkey = storage.get('hashkey');
    var callback = mw;
    d.getElementById('data').innerHTML = '<div class="message">Einen Augenblick bitte, die Daten werden aufbereitet...</div>'+ajax_loader;
    if (hashkey) s.sendXMLHttpRequest(0,'ajax.php?step=mw&st='+st+'&keg='+keg+'&kg='+kg+'&hashkey='+hashkey,callback,'','');
  }
  else if (status == 1) {
    var markup = Array();
    d.getElementById('dtree_lock').style.display = 'none';
    var ddata = d.getElementById('data');
    ddata.innerHTML = '';
    var data = req.responseText.split("\n");
    var tmp = data.shift().split('|');
    var minjahr = parseInt(tmp[0]);
    var maxjahr = parseInt(tmp[1]);
    if (data[0]) {
      if (params != 'cached') {
        if (minjahr && maxjahr) {
          var years = Array();
          for (var i=minjahr;i<maxjahr+1;i++) {
            years.push(i);
          }
          var minJ = d.forms['form_range']['minjahr'];
          var maxJ = d.forms['form_range']['maxjahr'];
          for (var i=0;i<years.length;i++) {
            minJ[i] = new Option(years[i],years[i]);
            maxJ[i] = new Option(years[i],years[i]);
            if (years[i] == maxjahr) maxJ.selectedIndex = i;
          }
        }
      }
      for(var i=0;i<d.forms['form_range'].length;i++) {
        d.forms['form_range'][i].disabled=false;
      }
      for(var i=0;i<d.forms['form_select'].length;i++) {
        d.forms['form_select'][i].disabled=false;
      }
      var region = storage.get('region');
      var st_name = storage.get('st_name');
      var kg_name = storage.get('kg_name');
      var keg = storage.get('keg');
      var keg_id = storage.get('keg_id');
      var jetzt = new Date();
      var kg_name_ohne_umlaute = kg_name;
      kg_name_ohne_umlaute = kg_name_ohne_umlaute.replace(/ä/g,'ae');
      kg_name_ohne_umlaute = kg_name_ohne_umlaute.replace(/ö/g,'oe');
      kg_name_ohne_umlaute = kg_name_ohne_umlaute.replace(/ü/g,'ue');
      kg_name_ohne_umlaute = kg_name_ohne_umlaute.replace(/Ä/g,'Ae');
      kg_name_ohne_umlaute = kg_name_ohne_umlaute.replace(/Ö/g,'Oe');
      kg_name_ohne_umlaute = kg_name_ohne_umlaute.replace(/Ü/g,'Ue');
      kg_name_ohne_umlaute = kg_name_ohne_umlaute.replace(/ß/g,'ss');
      var filename = st_name+'['+region+']_'+kg_name_ohne_umlaute+'_'+jetzt.getTime();;
      filename = filename.replace(/ /g,'_');
      filename = filename.replace(/[^A-Za-z0-9ÄÖÜäöüß\-\_\(\)\[\]]/g,'');
      d.forms['form_download']['filename'].value = filename;
      if (params != 'cached') while (mw_cache.length) { mw_cache.pop(); }
      for (var i=0;i<data.length;i++) {
        var tmp = data[i].split('|');
        var kg_id = tmp[1];
        var kg_date = tmp[0];
        var kg_desc = tmp[2];
        if (tmp[2]) kg_desc = tmp[2];
        var kg_checked = tmp[2];
        var checked = '';
        if (kg_checked==1) {
          checked=' checked"';
        }
        if (kg_id && kg_date) {
          var tmp = kg_date.split('-');
          var date = tmp[2] + '.' + tmp[1] + '.' + tmp[0];
          var cnr = i % 2;
          markup.push('<a href="#" onclick="select_one(this.id);return false;" id="id_'+kg_id+'" class="mw'+cnr+checked+'">'+date+' - '+kg_desc+'</a>');
          if (params != 'cached') mw_cache.push(kg_date+'|'+kg_id+'|'+kg_desc);
        }
      }
      /* IE6 BUG Workaround */
      if (markup[0]) {
        markup.unshift('<a href="#" style="display:none;" onclick="return false;" id="id_0" class="mw0"><strong>kein</strong></a>');
      }
    }
    if (markup[0]) {
      var div = document.createElement("DIV");
      div.innerHTML = markup.join("\n");
      ddata.appendChild(div);

      mw_nodes = [];
      //for (var item in mw_nodes) delete item; ?
      var el = ddata.lastChild;
      var cn = el.firstChild;
      var c = 0;
      while (cn!=null) {
        if (cn.nodeName=='A') {
          var id = cn.id;
          mw_nodes[id] = c;
        }
        c++;
        cn=cn.nextSibling;
      }

      var tf;
      if (total_checked > 0) tf=false; else tf = true;
      var form = d.forms['form_download'];
      for(var i=0;i<form.length;i++) {
        form[i].disabled=tf;
      }
      d.forms['form_download']['cart'].disabled=false;
    }
    else {
      if (params != 'cached') {
        for(var i=0;i<d.forms['form_range'].length;i++) {
          d.forms['form_range'][i].disabled=true;
        }
        for(var i=0;i<d.forms['form_select'].length;i++) {
          d.forms['form_select'][i].disabled=true;
        }
        for(var i=0;i<d.forms['form_download'].length;i++) {
          d.forms['form_download'][i].disabled=true;
        }
        d.forms['form_download']['cart'].disabled=false;
      }
      d.forms['form_download']['filename'].value = '';
      ddata.innerHTML = '<div class="warning">Leider stehen für Ihre Auswahl derzeit keine Daten zur Verfügung.</div>';
    }
	}
	else if (status == 2) {
	 ajaxError();
	}
	return;
}
function check_minmax() {
  var minjahr = d.forms['form_range']['minjahr'][d.forms['form_range']['minjahr'].selectedIndex].value;
  var maxjahr = d.forms['form_range']['maxjahr'][d.forms['form_range']['maxjahr'].selectedIndex].value;
  if (minjahr > maxjahr) {
    minjahr = maxjahr;
    d.forms['form_range']['minjahr'].selectedIndex = d.forms['form_range']['maxjahr'].selectedIndex;
  }
  return;
}
function check_maxmin() {
  var minjahr = d.forms['form_range']['minjahr'][d.forms['form_range']['minjahr'].selectedIndex].value;
  var maxjahr = d.forms['form_range']['maxjahr'][d.forms['form_range']['maxjahr'].selectedIndex].value;
  if (maxjahr < minjahr) {
    maxjahr = minjahr;
    d.forms['form_range']['maxjahr'].selectedIndex = d.forms['form_range']['minjahr'].selectedIndex;
  }
  return;
}
function change_date() {
  d.getElementById('dtree_lock').style.display = 'block';
  for(var i=0;i<d.forms['form_download'].length;i++) {
    d.forms['form_download'][i].disabled=true;
  }
  for(var i=0;i<d.forms['form_select'].length;i++) {
    d.forms['form_select'][i].disabled=true;
  }
  var cld = d.getElementById('data').lastChild;
  d.getElementById('data').removeChild(cld);
  var minjahr = parseInt(d.forms['form_range']['minjahr'][d.forms['form_range']['minjahr'].selectedIndex].value);
  var maxjahr = parseInt(d.forms['form_range']['maxjahr'][d.forms['form_range']['maxjahr'].selectedIndex].value);
  var mw_data = new Array();
  if (mw_cache) {
    var j = mw_cache.length;
    for (var i=0;i<j;i++) {
      var tmp = mw_cache[i];
      var jahr = tmp.substr(0,4);
      var id = tmp.substr(11);
      var checked = 0;
      if (typeof(mw_checked['id_'+id])!='undefined') checked = mw_checked['id_'+id];
      if (jahr >= minjahr && jahr <= maxjahr) {
         var datum = tmp.substr(0,10);
         mw_data.push(datum+'|'+id+'|'+checked);
      }
      else {
        /* uncheck hidden of date narrowing */
        if (checked == 1) {
          mw_checked['id_'+id] = 0;
          total_checked--;
        }
      }
    }
  }
  last_checked = 0;
  last_unchecked = 0;
  var resp = new Object();
  if (mw_data) resp.responseText = minjahr + '|' + maxjahr + "\n" + mw_data.join("\n");
  mw(1,'cached',resp);
}
function select_one(id) {
  var el = d.getElementById(id);
  var val = mw_checked[id];
  var check;
  var uncheck;
  if (shft&&last_checked) check = 1;
  if (shft&&last_unchecked) uncheck = 1;
  if ((val!=1&&!uncheck)||(val==1&&check)) {
    mw_checked[id] = 1;
    el.style.backgroundPosition = '6px -16px';
    el.style.color = '#445D68';
    total_checked++;
    if (shft&&last_checked) {
      var lastnode = mw_nodes[last_checked];
      var curnode = mw_nodes[id];
      var startnode;
      var endnode;
      if (lastnode > curnode) {
        startnode = curnode+1;
        endnode = lastnode;
      }
      else {
        startnode = lastnode;
        endnode = curnode;
      }
      var el = d.getElementById('data').lastChild;
      for (var i=startnode;i<endnode;i++) {
        if (el.childNodes[i].nodeName == 'A') {
          el.childNodes[i].style.backgroundPosition = '6px -16px';
          el.childNodes[i].style.color = '#445D68';
          var id2 = el.childNodes[i].id;
          if (typeof(mw_checked[id2])=='undefined') mw_checked[id2] = 0;
          if (mw_checked[id2]!=1) {
            mw_checked[id2]=1;
            total_checked++;
          }
        }
      }
      last_checked = 0;
    }
    else {
      last_checked = id;
      last_unchecked = 0;
    }
    //alert(total_checked);
  }
  else {
    mw_checked[id] = 0;
    el.style.backgroundPosition = '6px 6px';
    el.style.color = '#000000';
    total_checked--;
    if (shft&&last_unchecked) {
      var lastnode = mw_nodes[last_unchecked];
      var curnode = mw_nodes[id];
      var startnode;
      var endnode;
      if (curnode < lastnode) {
        startnode = curnode+1;
        endnode = lastnode;
      }
      else {
        startnode = lastnode;
        endnode = curnode;
      }
      var el = d.getElementById('data').lastChild;
      for (var i=startnode;i<endnode;i++) {
        if (el.childNodes[i].nodeName == 'A') {
          el.childNodes[i].style.backgroundPosition = '6px 6px';
          el.childNodes[i].style.color = '#000000';
          var id2 = el.childNodes[i].id;
          if (typeof(mw_checked[id2])=='undefined') mw_checked[id2]=0;
          if (mw_checked[id2]==1) {
            mw_checked[id2]=0;
            total_checked--;
          }
        }
      }
      last_unchecked=0;
    }
    else {
      last_unchecked = id;
      last_checked = 0;
    }
    // Error Correction
    if (total_checked < 0) total_checked=0;
     //alert(total_checked);
  }
  
  var jetzt = new Date();
  var cur_filename = d.forms['form_download']['filename'].value;
  var tmp = cur_filename.split('_');
  tmp.pop();
  d.forms['form_download']['filename'].value = tmp.join('_')+'_'+jetzt.getTime();
  var tf;
  if (total_checked > 0) tf=false; else tf = true;
  var form = d.forms['form_download'];
  for(var i=0;i<form.length;i++) {
    if (form[i].id != 'cart') {
      form[i].disabled=tf;
    }
  }
}
function select_all() {
  var el = d.getElementById('data').lastChild;
  var cn = el.firstChild;
  while (cn!=null) {
    if (cn.nodeName=='A') {
      var id = cn.id;
      if (id) {
        if (typeof(mw_checked[id])=='undefined') {
          total_checked++;
        }
        else if (mw_checked[id]<1) {
          total_checked++;
        }
        mw_checked[id] = 1;
        cn.style.backgroundPosition = '6px -16px';
        cn.style.color = '#445D68';
      }
    }
    cn=cn.nextSibling;
  }
  var jetzt = new Date();
  var cur_filename = d.forms['form_download']['filename'].value;
  var tmp = cur_filename.split('_');
  tmp.pop();
  d.forms['form_download']['filename'].value = tmp.join('_')+'_'+jetzt.getTime();
  var form = d.forms['form_download'];
  for(var i=0;i<form.length;i++) {
    if (form[i].id != 'cart') {
      form[i].disabled=false;
    }
  }
}
function deselect_all() {
  var el = d.getElementById('data').lastChild;
  var cn = el.firstChild;
  while (cn!=null) {
    if (cn.nodeName=='A') {
      var id = cn.id;
      if (typeof(mw_checked[id])!='undefined') if (mw_checked[id]==1) total_checked--;
      mw_checked[id] = 0;
      cn.style.backgroundPosition = '6px 6px';
      cn.style.color = '#000000';
    }
    cn=cn.nextSibling;
  }
  // Remove hidden
  total_checked=0;
  var jetzt = new Date();
  var cur_filename = d.forms['form_download']['filename'].value;
  var tmp = cur_filename.split('_');
  tmp.pop();
  d.forms['form_download']['filename'].value = tmp.join('_')+'_'+jetzt.getTime();
  if (total_checked<1) {
    var form = d.forms['form_download'];
    for(var i=0;i<form.length;i++) {
      if (form[i].id != 'cart') {
        form[i].disabled=true;
      }
    }
  }
}

/* -----------------------------------------------------------------------------
   STEP5: Warenkorb
----------------------------------------------------------------------------- */
function step5(status,params,req) {
  if (!status) {
    set_nav(4);
    var logged_in = storage.get('logged_in');
    if (!logged_in) {
       logged_in = persistant.getSubValue('logged_in');
    }
    if (!logged_in && !is_public) {
       login_process();
       return false;
    }
    else {
      storage.set('logged_in',1);
    }
    var items = storage.get('cart');
    /*
    if (items < 1 && params == 'show') {
      return false;
    }
    */
    var hashkey = storage.get('hashkey');
    var callback = step5;
    if (hashkey) s.sendXMLHttpRequest(0,'ajax.php?step=show_cart&hashkey='+hashkey,callback,params,'');
  }
  else if (status == 1) {
    var markup = new Array();
    if (params == 'nav') {
      markup.push('<div id="breadcrumb"></div>');
    }
    else {
      markup.push('<div id="breadcrumb"><a class="back" href="#" onclick="step4();return false">'+zurueck+'</a>&nbsp;|&nbsp;<a href="#" onclick="step1();return false">Parameter</a>&nbsp;|&nbsp;<a href="#" onclick="step2();return false">Teilräume</a>&nbsp;|&nbsp;<a href="#" onclick="step3();return false">Stationen</a>&nbsp;|&nbsp;<a href="#" onclick="step4();return false">Kenngrößen</a></div>');
    }
    markup.push('<h1>Downloadbereich: bereitstehende Dateien '+phk+'</h1>');
    markup.push('<div id="all_lock"></div>');
    markup.push('<div id="data2" class="data2"><div>');
    var disabled = '';
    if (req.responseText == -1) {
      markup.push('<div class="message">Es stehen keine Dateien zum Download bereit!</div>');
      disabled = 'disabled="disabled"';
    }
    else {
      var filelist = new Array();
      var files = req.responseText.split("\n");
      for (var i=0;i<files.length;i++) {
       var item = files[i].split('|');
       if (item[0]) {
          var id = 'id_' + (i+1);
          var cnr = i % 2;
          filelist.push('<div id="'+id+'"><a href="#" class="mw'+cnr+'" onclick="delete_from_cart(0,\''+id+'|'+item[0]+'|'+item[1]+'\');return false"></a><span class="mw'+cnr+'">'+item[0]+'.'+item[1]+'</span></div>');
        }
      }
      /* IE6 BUG Workaround */
      if (filelist[0]) {
        filelist.unshift('<a href="#" style="display:none;" onclick="return false;" id="id_0" class="mw0">&nbsp;</a>');
      }
      markup.push(filelist.join("\n"));
    }
    markup.push('</div></div>');
    markup.push('<div class="download">');
    markup.push('<form id="form_download" action="" onsubmit="return false">');
    markup.push('<input class="button" type="button" id="button_empty_cart" onclick="this.blur();delete_from_cart(0,\'all\')" value="Downloadbereich leeren" '+disabled+' />');
    markup.push('<input class="button" type="button" id="button_download" onclick="this.blur();step6()" value="Download starten" '+disabled+' />');
    markup.push('</form>');
    markup.push('</div>');
    html = markup.join("\n");
    d.getElementById('center').innerHTML = html;
    storage.set('step',5);
  }
	else if (status == 2) {
	 ajaxError();
	}
	return true;
}

function add_to_cart(status,params,req) {
  if (!status) {
    var hashkey = storage.get('hashkey');
    var pg = storage.get('pg');
    var pg_name = storage.get('pg_name');
    var region = storage.get('region');
    var st = storage.get('st');
    var st_name = storage.get('st_name');
    var keg = storage.get('keg');
    var kg = storage.get('kg');
    var kg_name = storage.get('kg_name');
    mw_dates = [];
    var el = d.getElementById('data').lastChild;
    var cn = el.firstChild;
    while (cn!=null) {
      if (cn.nodeName=='A') {
        var id = cn.id;
        if (id) {
          if (typeof(mw_checked[id])!='undefined') {
            if (mw_checked[id]==1) {
              var mw_id = id.substring(3);
              mw_dates.push(mw_id)
           }
          }
        }
      }
      cn=cn.nextSibling;
    }
    var form = d.forms['form_download'];
    var filename = form['filename'].value;
    var filetype;
    for(var i=0;i<form['filetype'].length;i++) {
      if(form['filetype'][i].checked) {
        filetype = form['filetype'][i].value;
      }
    }
    var post;
    if (hashkey) {
      d.getElementById('all_lock').style.display = 'block';
      d.getElementById('activity').innerHTML = ajax_loader2;
      d.getElementById('activity').style.display = 'block';
      post += 'step=add_to_cart&pg='+pg+'&pg_name='+pg_name+'&region='+region+'&st='+st+'&st_name='+st_name;
      post += '&keg='+keg+'&kg='+kg+'&kg_name='+kg_name+'&filename='+filename+'&filetype='+filetype;
      post += '&mw_dates='+mw_dates.join(',');
      post += '&hashkey='+hashkey;
      var callback = add_to_cart;
      s.sendXMLHttpRequest(0,'ajax.php?step=add_to_cart',callback,'',post);
    }
  }
  else if (status == 1) {
    var items = parseInt(req.responseText);
    if (items == -1) alert("Dateiname schon im Downloadbereich vorhanden!\nBitte wählen Sie einen anderen Namen.");
    else if (items == -2) alert("Beim Schreiben des Downloads ist ein unbekannter Fehler aufgetreten!\n");
    else if (items > 0) {
      storage.set('cart',items);
      d.forms['form_download']['cart'].disabled = false;
      //d.getElementById('cart').style.backgroundPosition = '0 -32px';
      //d.getElementById('cart').style.cursor = 'pointer';
    }
    d.getElementById('activity').innerHTML = '';
    d.getElementById('activity').style.display = 'none';
    d.getElementById('all_lock').style.display = 'none';
  }
  else if (status == 2) {
	 ajaxError();
	}
	return; 
}

function delete_from_cart(status,params,req) {
  if (!status) {
    var tmp = params.split('|');
    var id = tmp[0];
    var filename = tmp[1];
    var filetype = tmp[2];
    var message;
    if (id == 'all') {
      filename = 'all';
      message = "Alle Dateien werden unwiderruflich gelöscht.\n\nMöchten Sie den Downloadbereich leeren?";
    }
    else {
      message = "Möchten Sie die Datei \n\n"+filename+'.'+filetype+"\n\nendgültig aus dem Downloadbereich entfernen?"
    }
    var check = confirm(message);
    if (check==true) {
      d.getElementById('all_lock').style.display = 'block';
      d.getElementById('activity').innerHTML = ajax_loader2;
      d.getElementById('activity').style.display = 'block';
      var hashkey = storage.get('hashkey');
      var callback = delete_from_cart;
      if (hashkey) s.sendXMLHttpRequest(0,'ajax.php?step=delete_from_cart&filename='+filename,callback,id,'');
    }
  }
  else if (status == 1) {
   var resp = parseInt(req.responseText);
	 var del_id = params;
	 var c = 0;
	 if (del_id) {
      var el = d.getElementById('data2').lastChild;
      var cn = el.firstChild;
      while (cn!=null) {
        if (cn.nodeName=='DIV') {
          if (cn.style.display != 'none') {
            var id = cn.id;
            if (id == del_id) {
              cn.style.display = 'none';
            }
            else {
              var cln = c % 2;
              //cn.className = 'mw' + cln;
              cn.firstChild.className = 'mw' + cln;
              cn.lastChild.className = 'mw' + cln;
              c++;
            }
          }
        }
        cn=cn.nextSibling;
      }
   }
   storage.set('cart',resp)
	 if (resp < 1) {
	   d.getElementById('data2').innerHTML = '<div class="message">Es stehen keine Dateien zum Download bereit!</div>';
	   d.forms['form_download']['button_empty_cart'].disabled = true;
	   d.forms['form_download']['button_download'].disabled = true;
	 }
	 d.getElementById('activity').style.display = 'none';
	 d.getElementById('activity').innerHTML = '';
	 d.getElementById('all_lock').style.display = 'none';
	}
  else if (status == 2) {
	 ajaxError();
	}
	return;
}

/* -----------------------------------------------------------------------------
   STEP6: Download
----------------------------------------------------------------------------- */
function step6(status,params,req) {
  if (!status) {
    d.getElementById('all_lock').style.display = 'block';
    d.getElementById('activity').innerHTML = ajax_loader2;
    d.getElementById('activity').style.display = 'block';
    var hashkey = storage.get('hashkey');
    var callback = step6;
    if (hashkey) s.sendXMLHttpRequest(0,'ajax.php?step=step6&hashkey='+hashkey,callback,'','');
  }
  else if (status == 1) {
    d.getElementById('activity').style.display = 'none';
	  d.getElementById('activity').innerHTML = '';
	  d.getElementById('all_lock').style.display = 'none';
	  var resp = parseInt(req.responseText);
	  if (req.responseText == -1) {
	     alert("Fehler beim Erstellen der ZIP-Datei!\nBitte starten Sie den Download nochmals.\n\nSollte das Problem bestehen bleiben setzen Sie sich bitte mit unserem technischen Support in Verbindung.");
	     return false;
    }
    else if (req.responseText == -2) {
       alert("Unbekannter Fehler!\n\nBitte wenden Sie sich an unseren Support.");
    }
    else {
  	  var tmp = req.responseText.split('|');
  	  var size = tmp[0];
  	  var zipfile = tmp[1];
  	  var message = "Die erzeugte Datei hat eine Größe von "+size+".\n\n Möchten Sie den Download jetzt starten?";
  	  var check = confirm(message);
      if (check==true) {
        window.location.href = zipfile;
        //window.location.replace(zipfile);
        /*
        var dl = window.open('','Download','width=100,height=100,scrollbars=no,menubar=no,location=no,toolbar=no,status=no,resizable=no');
        var markup='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">';
        markup+='<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">';
        markup+='<head>';
        markup+='<meta http-equiv="refresh" content="0; URL='+zipfile+'">';
        markup+='</head><body>';
        markup+='</body></html>';
        dl.document.open();
        dl.document.write(markup);
        dl.document.close();
        dl.focus();
        */
      }
    }
	}
  else if (status == 2) {
	 ajaxError();
	}
	return false;
}

/* -----------------------------------------------------------------------------
   Stationsinformationen
----------------------------------------------------------------------------- */
function stinfos(status,params,req) {
  if (!status) {
    set_nav(2);
    var logged_in = storage.get('logged_in');
    if (!logged_in) {
       logged_in = persistant.getSubValue('logged_in');
    }
    if (!logged_in && !is_public) {
       login_process();
       return false;
    }
    else {
      storage.set('logged_in',1);
    }
    var hashkey = storage.get('hashkey');
    var callback = stinfos;
    if (hashkey) s.sendXMLHttpRequest(0,'ajax.php?step=stinfos&hashkey='+hashkey,callback,'','');
  }
  else if (status == 1) {
   var markup = new Array();
   markup.push('<div id="breadcrumb">Übersicht</div>');
   markup.push('<img class="msk" src="img/stationsinfos/Messstationen.png" alt="" />');
   markup.push('<form id="form_stinfos" action="" onsubmit="return false">');
   markup.push('<h1>Wählen Sie eine Messstation:</h1>');
   markup.push('<div>');
   var stationen = req.responseText.split("\n");
   for (var i=0;i<stationen.length;i++) {
    if (stationen[i]) {
      var tmp = stationen[i].split('|');
      markup.push('<a href="#" onclick="stdetails(0,\''+tmp[0]+'|'+tmp[2]+'\');return false"><span class="black">'+tmp[1]+'</span> &nbsp; '+tmp[2]+'</a>');
    }
   }
   markup.push('</div>');
   markup.push('</form>');
   d.getElementById('center').innerHTML = markup.join("\n");
   storage.set('step',10)
	}
	else if (status == 2) {
	 ajaxError();
	}
	return true;
}

/* -----------------------------------------------------------------------------
   Stationsdetails
----------------------------------------------------------------------------- */
function stdetails(status,params,req) {
  if (!status) {
    set_nav(2);
    var info_st = '';
    var info_st_name = '';
    if (params) {
      var tmp = params.split('|');
      info_st = tmp[0];
      info_st_name = tmp[1];
    }
    if (info_st && info_st_name) {
      storage.set('info_st',info_st);
      storage.set('info_st_name',info_st_name);
    }
    else {
      info_st = storage.get('info_st');
      info_st_name = storage.get('info_st_name');
    }
    var hashkey = storage.get('hashkey');
    var callback = stdetails;
    if (hashkey) s.sendXMLHttpRequest(0,'ajax.php?step=stdetails&station='+info_st+'&hashkey='+hashkey,callback,'','');
  }
  else if (status == 1) {
   var info_st = storage.get('info_st');
   var info_st_name = storage.get('info_st_name');
   var markup = new Array();
   markup.push('<div id="breadcrumb"><a class="back" href="#" onclick="stinfos();return false">'+zurueck+'</a>&nbsp;|&nbsp; Station: '+info_st_name+'</div>');
   var tmp = req.responseText.split('|');
   var title = tmp[0];
   var desc = tmp[1];
   var img = tmp[2];
   var pdf = tmp[3];
   if (img != 0) {
      markup.push('<img class="pho" src="'+tmp[2]+'" width=325" alt="" />');
   }
   markup.push('<h1>Informationen zu:</h1>');
   markup.push('<div id="div_stdetails">');
   markup.push('<h3>Messstation '+info_st_name+'</h3>');
   markup.push('<p>'+desc+'</p>');
   if (pdf != 0) {
      markup.push('<a class="pdf" href="'+pdf+'" target="_blank">Informationen als PDF-Datei anzeigen</a>');
   }
   markup.push('</div>');
   d.getElementById('center').innerHTML = markup.join("\n");
   storage.set('step',11)
	}
	else if (status == 2) {
	 ajaxError();
	}
	return true;
}



/* -----------------------------------------------------------------------------
   GLOBAL FUNCTIONS
----------------------------------------------------------------------------- */
function ajaxError() {
  d.getElementById('dtree_lock').style.display = 'none';
  var ddata = d.getElementById('data');
  ddata.innerHTML = '';
  alert ("Die Verbindung zur Datenbank hatte einen Timeout bzw. der Server ist derzeit nicht erreichbar.\nBitte versuchen Sie es später erneut."); 
}
function check_email(s)
{
 var a = false;
 var res = false;
 if(typeof(RegExp) == 'function')
 {
  var b = new RegExp('abc');
  if(b.test('abc') == true){a = true;}
  }

 if(a == true)
 {
  var reg = new RegExp('^([a-zA-Z0-9\\-\\.\\_]+)'+
                   '(\\@)([a-zA-Z0-9\\-\\.]+)'+
                   '(\\.)([a-zA-Z]{2,4})$');
  var res = (reg.test(s));
 }
 else
 {
  var res = (s.search('@') >= 1 &&
         s.lastIndexOf('.') > s.search('@') &&
         s.lastIndexOf('.') >= s.length-5)
 }
 return(res);
}

