function isObject(Obj){ if (Obj == null) return false; return (typeof(Obj) == 'object'); }
function isInput(Obj){ if (!isObject(Obj)) return false; return ( (typeof Obj.type != 'undefined' && Obj.type.toLowerCase() == 'text') || (typeof Obj.type != 'undefined' && Obj.type.toLowerCase() == 'password') || (typeof Obj.type != 'undefined' && Obj.type.toLowerCase() == 'textarea'));}
function isRadio(Obj){ if (!isObject(Obj)) return false; return (typeof Obj.type != 'undefined' && Obj.type.toLowerCase() == 'radio'); } 
function isSubmit(Obj){ if (!isObject(Obj)) return false; return (typeof Obj.type != 'undefined' && Obj.type.toLowerCase() == 'submit'); }
function isReset(Obj){ if (!isObject(Obj)) return false; return (typeof Obj.type != 'undefined' && Obj.type.toLowerCase() == 'reset'); }
function isCheckbox(Obj){ if (!isObject(Obj)) return false; return (typeof Obj.type != 'undefined' && Obj.type.toLowerCase() == 'checkbox'); }
function replaceAll(text, strA, strB){ return text.replace( new RegExp(strA,"g"), strB ); } 
function isString(strValue) {return (typeof strValue == 'string' && strValue != '' && isNaN(strValue)); }
function isNumber(strValue){ return (!isNaN(strValue) && strValue != ''); }
function isEmail(strValue) { var objRE = /^[\w-\.\']{1,}\@([\da-zA-Z-]{1,}\.){1,}[\da-zA-Z-]{2,}$/; return (strValue != '' && objRE.test(strValue)); }
function isSelected(Obj){ if (!isObject(Obj)) return false; return (typeof Obj.type != 'undefined' && (Obj.type.toLowerCase() == 'select-multiple' || Obj.type.toLowerCase() == 'select-one')); }
function isBoolean(Obj){  return (!isObject(Obj) && typeof(Obj) == 'boolean'); }
function isBool(Obj){ return isBoolean(Obj); }
function isIE(){ return (document.all) ? true : false; };
function isNetscape(){ return (document.layers) ? true : false; };
function isW3C(){ return (document.getElementsById) ? true : false; };
function inttostr(n) { var int = ""; int = int.concat(parseInt(n)); return int; }	
function isCookiesOn() { return (document.cookie) }
function delay(prmSec) { prmSec *= 1000; var eDate = null; var eMsec = 0; var sDate = new Date(); var sMsec = sDate.getTime(); do { eDate = new Date(); eMsec = eDate.getTime(); } while ((eMsec-sMsec)<prmSec); }

//--------------------------------------------------------------------
function keyCount(obj, evt, maxCnt, name) {
  if (!evt.which) keyCode = event.keyCode; // ie5+ op5+
    else keyCode = evt.which; // nn6+
  var iobj = getElement(name);
  if (obj.value.length < maxCnt+1) iobj.innerHTML = maxCnt - obj.value.length;
    else { obj.value = obj.value.substring(0,maxCnt);  iobj.innerHTML = 0;  }
}

//--------------------------------------------------------------------
// Die Funktion trackKeys() erwartet ein festes "event" als ersten Parameter (da muss also auf jeden Fall "event stehen). Als zweiten Parameter erwartet sie einen regulären Ausdruck mit den den erlaubten Tasten (in diesem Fall ein kleins x und ein großes O). Die logischen Verknüpfungen am Ende (ab "|| keyCode>36") dienen dazu die Pfeiltasten, Backspace und Entf benutzbar zu machen - in dieser Reienfolge.  
function trackKeys(evnt,regEx) {
   	var keyCode = evnt.keyCode ? evnt.keyCode : evnt.which;
 	return !!String.fromCharCode(keyCode).match(regEx) || (keyCode > 36 && keyCode < 41) || (keyCode > 7 && keyCode < 10) || keyCode==46 || keyCode==24 || keyCode==16;
}

//-------------------------------------------------------------------
// Trim functions
//   Returns string with whitespace trimmed
//-------------------------------------------------------------------
function LTrim(str){
	if (str==null){return null;}
	for(var i=0;str.charAt(i)==" ";i++);
	return str.substring(i,str.length);
	}
function RTrim(str){
	if (str==null){return null;}
	for(var i=str.length-1;str.charAt(i)==" ";i--);
	return str.substring(0,i+1);
	}
function Trim(str){return LTrim(RTrim(str));}
function LTrimAll(str) {
	if (str==null){return str;}
	for (var i=0; str.charAt(i)==" " || str.charAt(i)=="\n" || str.charAt(i)=="\t"; i++);
	return str.substring(i,str.length);
	}
function RTrimAll(str) {
	if (str==null){return str;}
	for (var i=str.length-1; str.charAt(i)==" " || str.charAt(i)=="\n" || str.charAt(i)=="\t"; i--);
	return str.substring(0,i+1);
	}
function TrimAll(str) {
	return LTrimAll(RTrimAll(str));
	}
//-------------------------------------------------------------------
// isNull(value)
//   Returns true if value is null
//-------------------------------------------------------------------
function isNull(val){
  return(val==null);
}

//-------------------------------------------------------------------
// isBlank(value)
//   Returns true if value only contains spaces
//-------------------------------------------------------------------
function isBlank(val){
	if(val==null){return true;}
	for(var i=0;i<val.length;i++) {
		if ((val.charAt(i)!=' ')&&(val.charAt(i)!="\t")&&(val.charAt(i)!="\n")&&(val.charAt(i)!="\r")){return false;}
		}
	return true;
	}

//-------------------------------------------------------------------
// isInteger(value)
//   Returns true if value contains all digits
//-------------------------------------------------------------------
function isInteger(val){
	if (isBlank(val)){return false;}
	for(var i=0;i<val.length;i++){
		if(!isDigit(val.charAt(i))){return false;}
		}
	return true;
	}

//-------------------------------------------------------------------
// isNumeric(value)
//   Returns true if value contains a positive float value
//-------------------------------------------------------------------
function isNumeric(val){return(parseFloat(val,10)==(val*1));}

//-------------------------------------------------------------------
// isArray(obj)
// Returns true if the object is an array, else false
//-------------------------------------------------------------------
function isArray(obj){
  if (obj == null) return false; 
   else {return ( isString(obj) || typeof obj.length == "undefined" ) ? false : true;
   }	
}
//-------------------------------------------------------------------
// isDigit(value)
//   Returns true if value is a 1-character digit
//-------------------------------------------------------------------
function isDigit(num) {
	if (num.length>1){return false;}
	var string="1234567890";
	if (string.indexOf(num)!=-1){return true;}
	return false;
	}

//-------------------------------------------------------------------
// setNullIfBlank(input_object)
//   Sets a form field to "" if it isBlank()
//-------------------------------------------------------------------
function setNullIfBlank(obj){if(isBlank(obj.value)){obj.value="";}}

//-------------------------------------------------------------------
// setFieldsToUpperCase(input_object)
//   Sets value of form field toUpperCase() for all fields passed
//-------------------------------------------------------------------
function setFieldsToUpperCase(){
	for(var i=0;i<arguments.length;i++) {
		arguments[i].value = arguments[i].value.toUpperCase();
		}
	}

//-------------------------------------------------------------------
// disallowBlank(input_object[,message[,true]])
//   Checks a form field for a blank value. Optionally alerts if 
//   blank and focuses
//-------------------------------------------------------------------
function disallowBlank(obj){
	var msg=(arguments.length>1)?arguments[1]:"";
	var dofocus=(arguments.length>2)?arguments[2]:false;
	if (isBlank(getInputValue(obj))){
		if(!isBlank(msg)){alert(msg);}
		if(dofocus){
			if (isArray(obj) && (typeof(obj.type)=="undefined")) {obj=obj[0];}
			if(obj.type=="text"||obj.type=="textarea"||obj.type=="password") { obj.select(); }
			obj.focus();
			}
		return true;
		}
	return false;
	}

//-------------------------------------------------------------------
// disallowModify(input_object[,message[,true]])
//   Checks a form field for a value different than defaultValue. 
//   Optionally alerts and focuses
//-------------------------------------------------------------------
function disallowModify(obj){
	var msg=(arguments.length>1)?arguments[1]:"";
	var dofocus=(arguments.length>2)?arguments[2]:false;
	if (getInputValue(obj)!=getInputDefaultValue(obj)){
		if(!isBlank(msg)){alert(msg);}
		if(dofocus){
			if (isArray(obj) && (typeof(obj.type)=="undefined")) {obj=obj[0];}
			if(obj.type=="text"||obj.type=="textarea"||obj.type=="password") { obj.select(); }
			obj.focus();
			}
		setInputValue(obj,getInputDefaultValue(obj));
		return true;
		}
	return false;
	}

//-------------------------------------------------------------------
// commifyArray(array[,delimiter])
//   Take an array of values and turn it into a comma-separated string
//   Pass an optional second argument to specify a delimiter other than
//   comma.
//-------------------------------------------------------------------
function commifyArray(obj,delimiter){
	if (typeof(delimiter)=="undefined" || delimiter==null) {
		delimiter = ",";
		}
	var s="";
	if(obj==null||obj.length<=0){return s;}
	for(var i=0;i<obj.length;i++){
		s=s+((s=="")?"":delimiter)+obj[i].toString();
		}
	return s;
	}

//-------------------------------------------------------------------
// getSingleInputValue(input_object,use_default,delimiter)
//   Utility function used by others
//-------------------------------------------------------------------
function getSingleInputValue(obj,use_default,delimiter) {
	switch(obj.type){
		case 'radio': case 'checkbox': return(((use_default)?obj.defaultChecked:obj.checked)?obj.value:null);
		case 'text': case 'hidden': case 'textarea': return(use_default)?obj.defaultValue:obj.value;
		case 'password': return((use_default)?null:obj.value);
		case 'select-one':
			if (obj.options==null) { return null; }
			if(use_default){
				var o=obj.options;
				for(var i=0;i<o.length;i++){if(o[i].defaultSelected){return o[i].value;}}
				return o[0].value;
				}
			if (obj.selectedIndex<0){return null;}
			return(obj.options.length>0)?obj.options[obj.selectedIndex].value:null;
		case 'select-multiple': 
			if (obj.options==null) { return null; }
			var values=new Array();
			for(var i=0;i<obj.options.length;i++) {
				if((use_default&&obj.options[i].defaultSelected)||(!use_default&&obj.options[i].selected)) {
					values[values.length]=obj.options[i].value;
					}
				}
			return (values.length==0)?null:commifyArray(values,delimiter);
		}
	alert("FATAL ERROR: Field type "+obj.type+" is not supported for this function");
	return null;
	}

//-------------------------------------------------------------------
// getSingleInputText(input_object,use_default,delimiter)
//   Utility function used by others
//-------------------------------------------------------------------
function getSingleInputText(obj,use_default,delimiter) {
	switch(obj.type){
		case 'radio': case 'checkbox': 	return "";
		case 'text': case 'hidden': case 'textarea': return(use_default)?obj.defaultValue:obj.value;
		case 'password': return((use_default)?null:obj.value);
		case 'select-one':
			if (obj.options==null) { return null; }
			if(use_default){
				var o=obj.options;
				for(var i=0;i<o.length;i++){if(o[i].defaultSelected){return o[i].text;}}
				return o[0].text;
				}
			if (obj.selectedIndex<0){return null;}
			return(obj.options.length>0)?obj.options[obj.selectedIndex].text:null;
		case 'select-multiple': 
			if (obj.options==null) { return null; }
			var values=new Array();
			for(var i=0;i<obj.options.length;i++) {
				if((use_default&&obj.options[i].defaultSelected)||(!use_default&&obj.options[i].selected)) {
					values[values.length]=obj.options[i].text;
					}
				}
			return (values.length==0)?null:commifyArray(values,delimiter);
		}
	alert("FATAL ERROR: Field type "+obj.type+" is not supported for this function");
	return null;
	}

//-------------------------------------------------------------------
// setSingleInputValue(input_object,value)
//   Utility function used by others
//-------------------------------------------------------------------
function setSingleInputValue(obj,value) { 
	switch(obj.type){
		case 'radio': case 'checkbox': if(obj.value==value){obj.checked=true;return true;}else{obj.checked=false;return false;}
		case 'text': case 'hidden': case 'textarea': case 'password': obj.value=value;return true;
		case 'select-one': case 'select-multiple': 
			var o=obj.options;
			for(var i=0;i<o.length;i++){
				if(o[i].value==value){o[i].selected=true;}
				else{o[i].selected=false;}
				}
			return true;
		}
	alert("FATAL ERROR: Field type "+obj.type+" is not supported for this function");
	return false;
	}

//-------------------------------------------------------------------
// getInputValue(input_object[,delimiter])
//   Get the value of any form input field
//   Multiple-select fields are returned as comma-separated values, or
//   delmited by the optional second argument
//   (Doesn't support input types: button,file,reset,submit)
//-------------------------------------------------------------------
function getInputValue(obj,delimiter) {
	var use_default=(arguments.length>2)?arguments[2]:false;
	if (isArray(obj) && (typeof(obj.type)=="undefined")) {
		var values=new Array();
		for(var i=0;i<obj.length;i++){
			var v=getSingleInputValue(obj[i],use_default,delimiter);
			if(v!=null){values[values.length]=v;}
			}
		return commifyArray(values,delimiter);
		}
	return getSingleInputValue(obj,use_default,delimiter);
	}

//-------------------------------------------------------------------
// getInputText(input_object[,delimiter])
//   Get the displayed text of any form input field
//   Multiple-select fields are returned as comma-separated values, or
//   delmited by the optional second argument
//   (Doesn't support input types: button,file,reset,submit)
//-------------------------------------------------------------------
function getInputText(obj,delimiter) {
	var use_default=(arguments.length>2)?arguments[2]:false;
	if (isArray(obj) && (typeof(obj.type)=="undefined")) {
		var values=new Array();
		for(var i=0;i<obj.length;i++){
			var v=getSingleInputText(obj[i],use_default,delimiter);
			if(v!=null){values[values.length]=v;}
			}
		return commifyArray(values,delimiter);
		}
	return getSingleInputText(obj,use_default,delimiter);
	}

//-------------------------------------------------------------------
// getInputDefaultValue(input_object[,delimiter])
//   Get the default value of any form input field when it was created
//   Multiple-select fields are returned as comma-separated values, or
//   delmited by the optional second argument
//   (Doesn't support input types: button,file,password,reset,submit)
//-------------------------------------------------------------------
function getInputDefaultValue(obj,delimiter){return getInputValue(obj,delimiter,true);}

//-------------------------------------------------------------------
// isChanged(input_object)
//   Returns true if input object's value has changed since it was
//   created.
//-------------------------------------------------------------------
function isChanged(obj){return(getInputValue(obj)!=getInputDefaultValue(obj));}

//-------------------------------------------------------------------
// setInputValue(obj,value)
//   Set the value of any form field. In cases where no matching value
//   is available (select, radio, etc) then no option will be selected
//   (Doesn't support input types: button,file,password,reset,submit)
//-------------------------------------------------------------------
function setInputValue(obj,value) {
	var use_default=(arguments.length>1)?arguments[1]:false;
	if(isArray(obj)&&(typeof(obj.type)=="undefined")){
		for(var i=0;i<obj.length;i++){setSingleInputValue(obj[i],value);}
		}
	else{setSingleInputValue(obj,value);}
	}
	
//-------------------------------------------------------------------
// isFormModified(form_object,hidden_fields,ignore_fields)
//   Check to see if anything in a form has been changed. By default
//   it will check all visible form elements and ignore all hidden 
//   fields. 
//   You can pass a comma-separated list of field names to check in
//   addition to visible fields (for hiddens, etc).
//   You can also pass a comma-separated list of field names to be
//   ignored in the check.
//-------------------------------------------------------------------
function isFormModified(theform,hidden_fields,ignore_fields){
	if(hidden_fields==null){hidden_fields="";}
	if(ignore_fields==null){ignore_fields="";}
	var hiddenFields=new Object();
	var ignoreFields=new Object();
	var i,field;
	var hidden_fields_array=hidden_fields.split(',');
	for (i=0;i<hidden_fields_array.length;i++) {
		hiddenFields[Trim(hidden_fields_array[i])]=true;
		}
	var ignore_fields_array=ignore_fields.split(',');
	for (i=0;i<ignore_fields_array.length;i++) {
		ignoreFields[Trim(ignore_fields_array[i])]=true;
		}
	for (i=0;i<theform.elements.length;i++) {
		var changed=false;
		var name=theform.elements[i].name;
		if(!isBlank(name)){
			var type=theform.elements[i].type;
			if(!ignoreFields[name]){
				if(type=="hidden"&&hiddenFields[name]){changed=isChanged(theform[name]);}
				else if(type=="hidden"){changed=false;}
				else {changed=isChanged(theform[name]);}
				}
			}
		if(changed){return true;}
		}
		return false;
	}
	
		
//-------------------------------------------------------------------
// -- pfad ohne website und anderes z.B.: http://website.com/ --
var PATH_BLANK 	         = getBlankPath();
    DATA_URI             = PATH_BLANK;
    
function getBlankPath(){
  var protocol  = window.location.protocol;
  var host		= window.location.hostname;
  var path 		= window.location.pathname;
  var prot		= window.location.port;
  var separator = (protocol == "file:" && path.indexOf("/", 1) == -1 ? "\\" : "/");
  var file 		= path.substring(path.lastIndexOf(separator) + 1);
  var path		= path.substring(0, path.lastIndexOf(separator)-1);
  return (protocol + '\/\/' + host + separator);
}
////////////////////////////////////////////////////////////////////////////////////
// SetDisplayStyleOnObject
////////////////////////////////////////////////////////////////////////////////////
function setDisplayStyleOnObject(obj,dis){
  if (isString(obj)) obj = getElement(obj);
  if (isNull(obj)) return false;
  if (isNull(dis)) dis = 3;
  switch (dis){
    case 0   : obj.style.display = 'none';  break;
	case 1	 : obj.style.display = 'block'; break;
	case 3	 : obj.style.display = (obj.style.display == 'none') ? 'block':'none';
  }
  
}
////////////////////////////////////////////////////////////////////////////////////
// versucht ein Element der Seite zu finden und lefert desen Objekt zurück          
////////////////////////////////////////////////////////////////////////////////////

//  var doc = document;
//  if (arguments.length >= 2) doc = arguments[1];
//  var tmp = doc.getElementsByName(id);
// if (isNull(tmp) || tmp.length == 0) tmp = doc.getElementById(id);
//  if (isNull(tmp) || tmp.length == 0) tmp = doc.getElementsByTagName(id);
//  if (!isNull(tmp) && tmp.length == 1) tmp = tmp[0];
//  return tmp; 

function getElementsByName_iefix(tag, name) {
  var elem = document.getElementsByTagName(tag);
  var arr = new Array();
  for(i = 0,iarr = 0; i < elem.length; i++) {
    att = elem[i].getAttribute("name");
    if(att == name) {
      arr[iarr] = elem[i];
      iarr++;
    }
  }
  return arr;
}

function getElement(id){
  var doc = document;
  if (arguments.length >= 2) doc = arguments[1];
  var tmp = doc.getElementsByName(id);
  if (tmp.length == 0) tmp = doc.getElementById(id);
  if (tmp != null && tmp.length && tmp.length == 1) tmp = tmp.item(0);
    else if (tmp != null && tmp.length && tmp.length > 1) alert('Das Object ' + id + ' wurde ' + tmp.length + ' mal gefunden.');
  return tmp; 
}  

////////////////////////////////////////////////////////////////////////////////////
// versucht das dokument innerhalb eines Frames zu holen                                      
////////////////////////////////////////////////////////////////////////////////////
function getIFrameDocument(aID) {
  if (document.getElementById(aID).contentDocument) $res = document.getElementById(aID).contentDocument;
    else $res = document.frames[aID].document;
  return $res;
}
////////////////////////////////////////////////////////////////////////////////////
// versucht das bezeichnete frame zu holen                                      
////////////////////////////////////////////////////////////////////////////////////
function getIFrame(aID){
  if (document.getElementById(aID)) return document.getElementById(aID);
    else return document.frames[aID];
}
////////////////////////////////////////////////////////////////////////////////////
function Statustext (Text) {
  if (window.statusbar && window.statusbar.visible) window.defaultStatus = Text;
    else window.status = Text;
  return true;
}
////////////////////////////////////////////////////////////////////////////////////
function openInfoWindow() {
  $site  = (isNull(arguments[0]) || !isString(arguments[0])) ? "":arguments[0];
  $name  = (isNull(arguments[1]) || !isString(arguments[1])) ? "":arguments[1];
  $wnd 	 = window.open($site,$name,"width=440,height=520,left=50,top=100,resizable=yes,scrollbars=no,menubar=no,toolbar=no" );
  $wnd.focus();
}
////////////////////////////////////////////////////////////////////////////////////
//String eventType  	legt das Ereignis fest, bei dem der Event Handler aktiviert werden soll. Das Ereignis wird ohne den "on"-Präfix als String eingesetzt.
//Function handler 	die aufzurufende Funktion
//Boolean useCapture 	legt fest, in welcher Phase der Handler aktiviert wird

function addEvent( obj, type, fn )
{
   if (obj.addEventListener) {
      obj.addEventListener( type, fn, false );
   } else if (obj.attachEvent) {
      obj["e"+type+fn] = fn;
      obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
      obj.attachEvent( "on"+type, obj[type+fn] );
   }
}

////////////////////////////////////////////////////////////////////////////////////
function removeEvent( obj, type, fn )
{
   if (obj.removeEventListener) {
      obj.removeEventListener( type, fn, false );
   } else if (obj.detachEvent) {
      obj.detachEvent( "on"+type, obj[type+fn] );
      obj[type+fn] = null;
      obj["e"+type+fn] = null;
   }
}

////////////////////////////////////////////////////////////////////////////////////
// bestimmt die position eines seitenelements und liefter ein object mit zwei elementen

function getPosition(obj) {
  var pos = { x:0, y:0 };
  do {
    pos.x += obj.offsetLeft;
    pos.y += obj.offsetTop;
  } while (obj == obj.offsetParent);
  return pos;
}

////////////////////////////////////////////////////////////////////////////////////
// animation für div

// damit die funktion im IE ordentlich arbeite muss die Font-size:1px gesetzt sein 
// bzw. darf der Step nicht kleiner als die Font-size in Pixel sein  	
var DEFAULT_STEP     = 32;
var DEFAULT_SLEEP    = 3;
var OnOpenCall 		 = null;
var OnCloseCall		 = null;
	
function animDIV(id, minHeight, maxHeight) {
  var dest   = getElement(id);
  if (!dest) {
    alert('Das Object ' + id + ' ist unbekannt'); 
	return false;
  }
  minHeight = (!isNaN(minHeight)) ? minHeight : 0;
  maxHeight = (!isNaN(maxHeight)) ? maxHeight : 0;
  if (minHeight == maxHeight && minHeight <= 0) return false;
  //0 = schließen | 1 = auf
  if (arguments.length == 4) var act = arguments[3];
    else if ((minHeight + maxHeight) - (dest.offsetHeight + minHeight) <= 0 ) var act = 0;
	       else var act = 1;
  var soll = 0;
  switch (act) {
    case 1: soll = dest.offsetHeight + DEFAULT_STEP;
		 	if (soll > maxHeight) {
			  soll = maxHeight;
			  dest.style.height = soll;
			  if (OnOpenCall) OnOpenCall;
			  break;
			}
			if (arguments.length == 5 && arguments[4] == '1') {
			  dest.style.height = maxHeight;
			  break;
			}
			dest.style.height = soll;
			window.setTimeout("animDIV('" + id +"'," + minHeight + "," + maxHeight + "," + act + ");", DEFAULT_SLEEP);
		 	break;
	case 0: soll = dest.offsetHeight - DEFAULT_STEP;
		 	if (soll < minHeight) {
			  soll = minHeight;
			  dest.style.height = soll;
			  if (OnCloseCall) OnCloseCall;
			  break;
			}  
			if (arguments.length == 5 && arguments[4] == '1') {
			  dest.style.height = minHeight;
			  break;
			}
			dest.style.height = soll; 
			window.setTimeout("animDIV('" + id +"'," + minHeight + "," + maxHeight + "," + act + ");", DEFAULT_SLEEP);
		 	break;
  }	
  return true;
}	

////////////////////////////////////////////////////////////////////////////////
// getPageSize()
// Returns array with page width, height and window width, height
// Core code from - quirksmode.org
// Edit for Firefox by pHaez
//
function getPageSize(){
   var xScroll, yScroll;
   if (window.innerHeight && window.scrollMaxY) {
      xScroll = document.body.scrollWidth;
      yScroll = window.innerHeight + window.scrollMaxY;
   } else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
      xScroll = document.body.scrollWidth;
      yScroll = document.body.scrollHeight;
   } else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
      xScroll = document.body.offsetWidth;
      yScroll = document.body.offsetHeight;
   }
   var windowWidth, windowHeight;
   if (self.innerHeight) {   // all except Explorer
      windowWidth = self.innerWidth;
      windowHeight = self.innerHeight;
   } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
      windowWidth = document.documentElement.clientWidth;
      windowHeight = document.documentElement.clientHeight;
   } else if (document.body) { // other Explorers
      windowWidth = document.body.clientWidth;
      windowHeight = document.body.clientHeight;
   }
   // for small pages with total height less then height of the viewport
   if(yScroll < windowHeight){
      pageHeight = windowHeight;
   } else {
      pageHeight = yScroll;
   }
   // for small pages with total width less then width of the viewport
   if(xScroll < windowWidth){
      pageWidth = windowWidth;
   } else {
      pageWidth = xScroll;
   }
   arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight)
   return arrayPageSize;
}

////////////////////////////////////////////////////////////////////////////////
function PreisFormat(zahl) {
    wert = parseInt(zahl * 100);
    wert = wert / 100;
    wert = wert.toFixed(2);
    wert = wert.replace(/\./,",");
    while(wert.match(/^(\d+)(\d{3}\b)/)) {
        wert = wert.replace(/^(\d+)(\d{3}\b)/, RegExp.$1 + '.' + RegExp.$2);
    }
    return wert;
}
////////////////////////////////////////////////////////////////////////////////
  function DateTxtToDateObj(txt){
	txt = txt.split(".");
	if (txt.length <= 2) return false;
	res = Date.parse(txt[1]+"/"+txt[0]+"/"+txt[2]);
	res = new Date(res);
	return res;
  }
////////////////////////////////////////////////////////////////////////////////
  function differenz(V, B) {
    B = B.getTime();
	B = B - V.getTime();
   	return (B/(1000*60*60*24)); //anzahl der diffrenz in tage
  }  

