var saveValueBuffer = null;
var error = '';
var debug = false;
var processData = processNothing;

function processNothing(result) {
}

function onLoadFunc() {
}

function onFocusFunc() {
}

function debugFunc(debugtext) {
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

/*
==================================================================
LTrim(string) : Returns a copy of a string without leading spaces.
==================================================================
*/
function LTrim(str)
/*
   PURPOSE: Remove leading blanks from our string.
   IN: str - the string we want to LTrim
*/
{
   var whitespace = new String(" \t\n\r");

   var s = new String(str);

   if (whitespace.indexOf(s.charAt(0)) != -1) {
      // We have a string with leading blank(s)...

      var j=0, i = s.length;

      // Iterate from the far left of string until we
      // don't have any more whitespace...
      while (j < i && whitespace.indexOf(s.charAt(j)) != -1)
         j++;

      // Get the substring from the first non-whitespace
      // character to the end of the string...
      s = s.substring(j, i);
   }
   return s;
}

/*
==================================================================
RTrim(string) : Returns a copy of a string without trailing spaces.
==================================================================
*/
function RTrim(str)
/*
   PURPOSE: Remove trailing blanks from our string.
   IN: str - the string we want to RTrim

*/
{
   // We don't want to trip JUST spaces, but also tabs,
   // line feeds, etc.  Add anything else you want to
   // "trim" here in Whitespace
   var whitespace = new String(" \t\n\r");

   var s = new String(str);

   if (whitespace.indexOf(s.charAt(s.length-1)) != -1) {
      // We have a string with trailing blank(s)...

      var i = s.length - 1;       // Get length of string

      // Iterate from the far right of string until we
      // don't have any more whitespace...
      while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
         i--;


      // Get the substring from the front of the string to
      // where the last non-whitespace character is...
      s = s.substring(0, i+1);
   }

   return s;
}

/*
=============================================================
Trim(string) : Returns a copy of a string without leading or trailing spaces
=============================================================
*/
function Trim(str)
/*
   PURPOSE: Remove trailing and leading blanks from our string.
   IN: str - the string we want to Trim

   RETVAL: A Trimmed string!
*/
{
   return RTrim(LTrim(str));
}

function InZahl (Wert)
    {   // Erstellt von Ralf Pfeifer, www.ArsTechnica.de
        var PosPunkt = Wert.indexOf(".",0);
        var PosKomma = Wert.indexOf(",",0);
        if (PosKomma < 0) PosKomma = Wert.length;

        // Dezimalpunkte zur Tausendergruppierung entfernen
        while ((0 <= PosPunkt) && (PosPunkt < PosKomma))
        {
            Wert = Wert.substring(0, PosPunkt) + Wert.substring(PosPunkt + 1, Wert.length);
            PosPunkt = Wert.indexOf(".",0);
            PosKomma--;
        }

        // Enthaelt die Variable 'Wert' ein Komma ?
        PosKomma = Wert.indexOf(",",0);
        if (PosKomma >= 0)
           { Wert = Wert.substring(0, PosKomma) + "." + Wert.substring(PosKomma + 1, Wert.length); }

        //return parseFloat(Wert);
        return(Wert);
}

function SaveValue(inp) {
	saveValueBuffer = inp.value;
}

function CheckNum() {
	inp = CheckNum.arguments[0];
	if (! IsNum(inp.value)) {
		alert('Keine Zahl');
		inp.value = saveValueBuffer;
	}
  else {
  	if (CheckNum.arguments.length > 1) {
  		inp.value = number_format(inp.value, CheckNum.arguments[1], '.', '', true)
  	}
  }
	saveValueBuffer = null;
}

function IsNum(n) {
  return isFinite(InZahl(n));
}

function IsGt0(n) {
	return (IsNum(n) && InZahl(n) >= 0);
}


function gueltigesDatum (datum)
{
    //(Schritt 1) Fehlerbehandlung
 if (!datum) return false;
 datum=datum.toString();

    //(Schritt 2) Aufspaltung des Datums
 datum=datum.split(".");
 if (datum.length!=3) return false;

    //(Schritt 3) Entfernung der fuehrenden Nullen und Anpassung des Monats

 datum[0]=parseInt(datum[0],10);
 datum[1]=parseInt(datum[1],10)-1;

    //(Schritt 4) Behandlung Jahr nur zweistellig
 if (datum[2].length==2) datum[2]="20"+datum[2];

    //(Schritt 5) Erzeugung eines neuen Dateobjektes
 var kontrolldatum=new Date(datum[2],datum[1],datum[0]);

    //(Schritt 6) Vergleich, ob das eingegebene Datum gleich dem JS-Datum ist
 if (kontrolldatum.getDate()==datum[0] && kontrolldatum.getMonth()==datum[1] && kontrolldatum.getFullYear()==datum[2])
     return true; else return false;

}

  function IsDatum(dat) {
  	var d = dat.value;
  	if (d.length == 6 && parseFloat(d) > 010100) {
  		d = d.substr(0,2)+'.'+d.substr(2,2)+'.'+d.substr(4,2);
  	}
  	var t=0,m=0,j=0,p;
  	d = Trim(d);
  	p = d.lastIndexOf('.');
  	if (p > -1) {
  		j = parseFloat(d.substr(p+1,100));
  		d = d.substr(0,p);
    	p = d.lastIndexOf('.');
    	if (p > -1) {
    		m = parseFloat(d.substr(p+1,100));
  	  	d = d.substr(0,p);
    		t = parseFloat(d);
      }
      else {
    		m = parseFloat(d);
  	  }
  	}  
  	else if (d != '') {
  		j = parseFloat(d);
  	}
  	if (j < 20) {
  		j += 2000;
  	}
  	if (j < 100) {
  		j += 1900;
  	}
    if (t > 0 && t < 32 && m > 0 && m < 13 && j > 0 && j < 10000) {
    	tag = '00'+t;
    	monat = '00'+m;

    	d = tag.substr(tag.length-2,2)+'.'+monat.substr(monat.length-2,2)+'.'+j;
			if (gueltigesDatum(d)) {
				dat.value = d;
	    	return true;
	    }
		  else {
	    	if (dat.value != '') {
  	  		alert('Datum falsch');
		   		if (gueltigesDatum(saveValueBuffer)) {
  		 			dat.value = saveValueBuffer;
   				}
   				else {
    				dat.value = '';
    			}
    		}
    		return false;
		  }
    }
    else {
    	if (dat.value != '') {
    		alert('Datum falsch');
	   		if (gueltigesDatum(saveValueBuffer)) {
  	 			dat.value = saveValueBuffer;
   			}
   			else {
    			dat.value = '';
    		}
    	}
    	return false;
    }
  }
  
  function tagesDatum()
	{
    var d = new Date()
    tag = d.getDate()
    monat = d.getMonth()+1
    jahr = d.getFullYear()
    tag = '00'+tag;
    monat = '00'+monat;
   	return tag.substr(tag.length-2,2)+'.'+monat.substr(monat.length-2,2)+'.'+jahr;
   }


  function ForceDatum(dat) {
  	var d = dat.value;
  	if (d.length == 6 && parseFloat(d) > 010100) {
  		d = d.substr(0,2)+'.'+d.substr(2,2)+'.'+d.substr(4,2);
  	}
  	var t=0,m=0,j=0,p;
  	d = Trim(d);
  	p = d.lastIndexOf('.');
  	if (p > -1) {
  		j = parseFloat(d.substr(p+1,100));
  		d = d.substr(0,p);
    	p = d.lastIndexOf('.');
    	if (p > -1) {
    		m = parseFloat(d.substr(p+1,100));
  	  	d = d.substr(0,p);
    		t = parseFloat(d);
      }
      else {
    		m = parseFloat(d);
  	  }
  	}  
  	else if (d != '') {
  		j = parseFloat(d);
  	}
  	if (j < 20) {
  		j += 2000;
  	}
  	if (j < 100) {
  		j += 1900;
  	}
    if (t > 0 && t < 32 && m > 0 && m < 13 && j > 0 && j < 10000) {
    	tag = '00'+t;
    	monat = '00'+m;

    	d = tag.substr(tag.length-2,2)+'.'+monat.substr(monat.length-2,2)+'.'+j;
			if (gueltigesDatum(d)) {
				dat.value = d;
	    	return true;
	    }
		  else {
 	  		alert('Datum falsch');
	   		if (gueltigesDatum(saveValueBuffer)) {
 		 			dat.value = saveValueBuffer;
  				}
 				else {
   				dat.value = '';
   			}
    		return false;
		  }
    }
    else {
    	if (dat.value != '') {
    		alert('Datum falsch');
	   		if (gueltigesDatum(saveValueBuffer)) {
  	 			dat.value = saveValueBuffer;
   			}
   			else {
    			dat.value = '';
    		}
    	}
    	return false;
    }
  }
  
  function tagesDatum()
	{
    var d = new Date()
    tag = d.getDate()
    monat = d.getMonth()+1
    jahr = d.getFullYear()
    tag = '00'+tag;
    monat = '00'+monat;
   	return tag.substr(tag.length-2,2)+'.'+monat.substr(monat.length-2,2)+'.'+jahr;
   }


  function IsZeit(dat) {
  	var d = dat.value;
  	if (d.length == 4 && parseFloat(d) > 1) {
  		d = d.substr(0,2)+':'+d.substr(2,2);
  	}
  	var s=0,m=0,p;
  	d = Trim(d);
  	p = d.indexOf(':');
  	if (p > -1) {
   		m = parseFloat(d.substr(p+1,100));
 	  	d = d.substr(0,p);
   		s = parseFloat(d);
     }
     else {
   		s = -1
  	}  
    if (s > -1 && s < 24 && m > -1 && m < 60) {
    	stunde = '00'+s;
    	minute = '00'+m;
    	dat.value = stunde.substr(stunde.length-2,2)+':'+minute.substr(minute.length-2,2);
    	return true;
    }
    else {
    	if (dat.value != '') {
    		alert('Zeit falsch');
    		dat.value = '';
    	}
    	return false;
    }
  }
  
  
  

function  number_format( /* in: float   */ number, 
                                        /* in: integer */ laenge, 
                                        /* in: String  */ sep, 
                                        /* in: String  */ th_sep ) {
  number = number+'';                                      	
	number = number.replace(/,/,'.');
	if (! IsNum(number) || parseFloat(number) == 0 || number == '') {
		return '';
	}
	else {
		number = parseFloat(number);
    number = Math.round( number * Math.pow(10, laenge) ) / Math.pow(10, laenge);
    str_number = number+"";
    arr_int = str_number.split(".");
    if(!arr_int[0]) arr_int[0] = "0";
    if(!arr_int[1]) arr_int[1] = "";
    if(arr_int[1].length < laenge){
      nachkomma = arr_int[1];
      for(i=arr_int[1].length+1; i <= laenge; i++){  nachkomma += "0";  }
      arr_int[1] = nachkomma;
    }
    if(th_sep != "" && arr_int[0].length > 3){
      Begriff = arr_int[0];
      arr_int[0] = "";
      for(j = 3; j < Begriff.length ; j+=3){
        Extrakt = Begriff.slice(Begriff.length - j, Begriff.length - j + 3);
        arr_int[0] = th_sep + Extrakt +  arr_int[0] + "";
      }
      str_first = Begriff.substr(0, (Begriff.length % 3 == 0)?3:(Begriff.length % 3));
      arr_int[0] = str_first + arr_int[0];
    }
    if (arr_int[1] == '') {
    	return arr_int[0];
    }
  	else {
    	return arr_int[0]+sep+arr_int[1];
    }
  }
}

function replaceIt(string,suchen,ersetzen) {
ausgabe = "" + string;
while (ausgabe.indexOf(suchen)>-1) {
pos= ausgabe.indexOf(suchen);
ausgabe = "" + (ausgabe.substring(0, pos) + ersetzen + 
ausgabe.substring((pos + suchen.length), ausgabe.length));
}
return ausgabe;
}


            var http_request = false;
            var requestList = Array();
            var requestcount = 0;

            function doRequest() {
            	  if (doRequest.arguments.length < 3 && doRequest.arguments.length > 0) {
            	  	requestcount = 0;
	            	  a = doRequest.arguments;
            	  }
            	  else {
            	  	if (doRequest.arguments.length > 2) {
            	  		requestList = Array();
            	  		for(i=0; i<doRequest.arguments.length; i++) {
            	  			requestList[i] = doRequest.arguments[i];
            	  		}
            	  		requestcount = 0;
            	  	}
            	  	requestcount++;
            	  	//alert('start: '+requestcount+' '+requestList[0]);
            	  	a = Array(requestList.shift() ,requestList.shift());
            	  	if (a[1] == '') {
            	  		a.pop();
            	  	}
            	  	eval('processData = ' + requestList.shift());
            	  }
              	var url, params, methode;
            	  if (a.length == 0) { alert('doRequest: keine Parameter übergeben'); return null; }
         		   	else if (a.length == 1) { url = a[0]; methode = 'GET', params = null; }
                else if (a.length == 2) { url = a[0]; methode = 'POST'; params = a[1];  }

                http_request = false;

                if (window.XMLHttpRequest) { // Mozilla, Safari,...
                    http_request = new XMLHttpRequest();
                    if (http_request.overrideMimeType) {
                        http_request.overrideMimeType('text/xml');
                    }
                } else if (window.ActiveXObject) { // IE
                    try {
                        http_request = new ActiveXObject("Msxml2.XMLHTTP");
                    } catch (e) {
                        try {
                        http_request = new ActiveXObject("Microsoft.XMLHTTP");
                        } catch (e) {}
                    }
                }

                if (!http_request) {
                    alert('Giving up :( Cannot create an XMLHTTP instance');
                    return false;
                }
                http_request.onreadystatechange = getContents;
                http_request.open(methode, url, true);
                if (methode == 'POST') {
                	http_request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
                }
								//document.body.style.cursor='wait';
                http_request.send(params);

            }

            function getContents() {

                if (http_request.readyState == 4) {
                    if (http_request.status == 200) {
												//document.body.style.cursor='default';
                        processData(http_request.responseText);
                    	  //alert('response: '+http_request.responseText);
                        if (requestcount > 0) {
                       		//alert('ende: '+requestcount+' '+processData);                        	
                       	}
                        if (requestList.length != 0) {
                        	doRequest();
                        }
                    } else {
                        alert('There was a problem with the request.');
                    }
                }

            }
            

            function doRequestX(url1, params, process) {
              	var methode;
              	var Xhttp_request;
         		   	if (params == '') { 
         		   		 methode = 'GET';
         		   		 params = null; 
         		   	}
                else { 
                	methode = 'POST'; 
                }

                Xhttp_request = false;
                

                if (window.XMLHttpRequest) { // Mozilla, Safari,...
                    Xhttp_request = new XMLHttpRequest();
                    if (Xhttp_request.overrideMimeType) {
                        Xhttp_request.overrideMimeType('text/xml');
                    }
                } else if (window.ActiveXObject) { // IE
                    try {
                        Xhttp_request = new ActiveXObject("Msxml2.XMLHTTP");
                    } catch (e) {
                        try {
                        Xhttp_request = new ActiveXObject("Microsoft.XMLHTTP");
                        } catch (e) {}
                    }
                }

                if (! Xhttp_request) {
                    alert('Giving up :( Cannot create an XMLHTTP instance');
                    return false;
                }

                Xhttp_request.onreadystatechange=function()
{
                if (Xhttp_request.readyState == 4) {
                    if (Xhttp_request.status == 200) {
                        process(Xhttp_request.responseText);
                    } else {
                        alert('There was a problem with the request.');
                    }
                }

}

                Xhttp_request.open(methode, url1, true);
                if (methode == 'POST') {
                	Xhttp_request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
                }
								//document.body.style.cursor='wait';
                Xhttp_request.send(params);

            }

            
            
            
function highlightRow(row, line) {
  row.style.backgroundColor="C1CDD9";
}
function darkenRow(row, line) {
	if (line == 'row1') {
  	row.style.backgroundColor="DDDDDD";
  }
	if (line == 'row2') {
  	row.style.backgroundColor="EEEEEE";
  }
}

	function closeDebug() {
		document.getElementById('debugdiv').style.display = 'none';
	}

	function evaluate(result) {
		error = '';
		debugtext = '';
  	pairs = result.split('<!&!>');
  	for(i=0; i<pairs.length; i++) {
	  	parts = pairs[i].split('<!=!>');
	  	if (parts.length == 2) {
		  	if (debug) {
		  		alert(parts[0]+':'+parts[1]);
	  		}
	  		if (parts[1].substr(0,1) == "'") {
					eval(parts[0]+'=unescape(' + parts[1] + ')');
				}
				else {
					if (parts[1] != '') {
						eval(parts[0]+'='+parts[1]);
					}
					else {
						eval(parts[0]+'=""');
					}
				}
			}
  	}
  	if (debugtext != '' && document.getElementById('debugdiv')) {
  		//alert('debug');
  		document.getElementById('debugdiv').style.display = 'block';
			document.getElementById('debugdiv').innerHTML = "<a href='javascript:closeDebug()'>close</a><p>"+debugtext;
  	}
	}	

function DatumKleiner (Datum1, Datum2) {
	Tag1 = Datum1.substr(0,2);
	Monat1 = Datum1.substr(3,2);
	Jahr1 = Datum1.substr(6,4);
	USDatum1 = Monat1 + "/" + Tag1 + "/" + Jahr1
	Tag2 = Datum2.substr(0,2);
	Monat2 = Datum2.substr(3,2);
	Jahr2 = Datum2.substr(6,4);
	USDatum2 = Monat2 + "/" + Tag2 + "/" + Jahr2
	return (Date.parse(USDatum1) < Date.parse(USDatum2));
}

function TagesDifferenz (Datum1, Datum2) {
	Tag1 = Datum1.substr(0,2);
	Monat1 = Datum1.substr(3,2);
	Jahr1 = Datum1.substr(6,4);
	USDatum1 = Monat1 + "/" + Tag1 + "/" + Jahr1
	Tag2 = Datum2.substr(0,2);
	Monat2 = Datum2.substr(3,2);
	Jahr2 = Datum2.substr(6,4);
	USDatum2 = Monat2 + "/" + Tag2 + "/" + Jahr2
	diff = Math.round((Date.parse(USDatum2) - Date.parse(USDatum1)) / 86400000);
	return diff;
}

function DatumPlusTage (Datum, Tage) {
	if (Datum != '') {
		Tag = Datum.substr(0,2);
		Monat = Datum.substr(3,2);
		Jahr = Datum.substr(6,4);
		USDatum = Monat + "/" + Tag + "/" + Jahr;
		Result = new Date;
		Result.setTime(Date.parse(USDatum) + Tage * 86400000);
		tag = '0'+Result.getDate();
		monat = '0'+(Result.getMonth()+1);
		jahr = Result.getFullYear()+'';
  	return tag.substr(tag.length-2,2)+'.'+monat.substr(monat.length-2,2)+'.'+jahr;
  }
	else {
		return '';
	}
}

function htmlspecialchars(str,typ) {
  if(typeof str=="undefined") str="";
  if(typeof typ!="number") typ=2;
  typ=Math.max(0,Math.min(3,parseInt(typ)));
  var from=new Array(/&/g,/</g,/>/g);
  var to=new Array("&amp;","&lt;","&gt;");
  if(typ==1 || typ==3) {from.push(/'/g); to.push("&#039;");}
  if(typ==2 || typ==3) {from.push(/"/g); to.push("&quot;");}
  for(var i in from) str=str.replace(from[i],to[i]);
  return str;
}



            var http_request_info = false;

            function doRequestInfo() {
              	var url, params, methode;
            	  a = doRequestInfo.arguments;
            	  if (a.length == 0) { alert('doRequest: keine Parameter übergeben'); return null; }
         		   	else if (a.length == 1) { url = a[0]; methode = 'GET', params = null; }
                else if (a.length == 2) { url = a[0]; methode = 'POST'; params = a[1];  }

                http_request_info = false;

                if (window.XMLHttpRequest) { // Mozilla, Safari,...
                    http_request_info = new XMLHttpRequest();
                    if (http_request_info.overrideMimeType) {
                        http_request_info.overrideMimeType('text/xml');
                    }
                } else if (window.ActiveXObject) { // IE
                    try {
                        http_request_info = new ActiveXObject("Msxml2.XMLHTTP");
                    } catch (e) {
                        try {
                        http_request_info = new ActiveXObject("Microsoft.XMLHTTP");
                        } catch (e) {}
                    }
                }

                if (!http_request_info) {
                    alert('Giving up :( Cannot create an XMLHTTP instance');
                    return false;
                }
                http_request_info.onreadystatechange = getContentsInfo;
                http_request_info.open(methode, url, true);
                if (methode == 'POST') {
                	http_request_info.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
                }

                http_request_info.send(params);

            }

            function getContentsInfo() {

                if (http_request_info.readyState == 4) {
                    if (http_request_info.status == 200) {
                        processDataInfo(http_request_info.responseText);
                    } else {
                        alert('There was a problem with the request.');
                    }
                }

            }



function radioWert(rObj) {
    for (var i=0; i<rObj.length; i++) if (rObj[i].checked) return rObj[i].value;
    return false;
}

function pageX() {
  var x,y;
  if (self.pageYOffset) // all except Explorer
  {
  	x = self.pageXOffset;
  	y = self.pageYOffset;
  }
  else if (document.documentElement && document.documentElement.scrollTop)
  	// Explorer 6 Strict
  {
  	x = document.documentElement.scrollLeft;
  	y = document.documentElement.scrollTop;
  }
  else if (document.body) // all other Explorers
  {
  	x = document.body.scrollLeft;
  	y = document.body.scrollTop;
  }
  return x;
}

function pageY() {
  var x,y;
  if (self.pageYOffset) // all except Explorer
  {
  	x = self.pageXOffset;
  	y = self.pageYOffset;
  }
  else if (document.documentElement && document.documentElement.scrollTop)
  	// Explorer 6 Strict
  {
  	x = document.documentElement.scrollLeft;
  	y = document.documentElement.scrollTop;
  }
  else if (document.body) // all other Explorers
  {
  	x = document.body.scrollLeft;
  	y = document.body.scrollTop;
  }
  return y;
}

function showWait(id) {
	document.getElementById(id).innerHTML = '<img src="/images/spin_32.gif">';
}

function hideSelect() {
	s = document.getElementsByTagName('select');
	for (x=0; x<s.length; x++) {
		s[x].style.visibility = 'hidden';
	}
}

function showSelect() {
	s = document.getElementsByTagName('select');
	for (x=0; x<s.length; x++) {
		s[x].style.visibility = 'visible';
	}
}


