	// Runden auf Nachkommastellen
	function round(zahl,n_stelle)
	{
   		n_stelle = n_stelle == 0 ? 1 : Math.pow(10,n_stelle);
   		
   		zahl = Math.round(zahl * n_stelle) / n_stelle;
  		return zahl;
	}
	
	function dump(arr,level) 
	{
	var dumped_text = "";
	if(!level) level = 0;
	
	//The padding given at the beginning of the line.
	var level_padding = "";
	for(var j=0;j<level+1;j++) level_padding += "    ";
	
	if(typeof(arr) == 'object') { //Array/Hashes/Objects 
		for(var item in arr) {
			var value = arr[item];
			
			if(typeof(value) == 'object') { //If it is an array,
				dumped_text += level_padding + "'" + item + "' ...\n";
				dumped_text += dump(value,level+1);
			} else {
				dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
			}
		}
	} else { //Stings/Chars/Numbers etc.
		dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
	}
	return dumped_text;
}
	// Hat eine Macke es konvertiert alles zu klein buchstaben-.-.-
	function JSON___() 
	{
      var formValues = '{';
      // Suche input el
      for (var i=0; i<document.forms[0].getElementsByTagName('input').length; i++) 
      with (document.forms[0].getElementsByTagName('input')[i])
      {
        formValues = formValues + '\"' + name + '\":\"' + value + '\",';
      }
      // Suche select el
      for (var i=0; i<document.forms[0].getElementsByTagName('select').length; i++) 
      with (document.forms[0].getElementsByTagName('select')[i])
      {
        formValues = formValues + '\"' + name + '\":\"' + value + '\",';
      }
      
      return formValues = formValues.substr(0,formValues.length-1) + '}';
    }

    function getFORMDATA()
    {
    	var params = '';
    	
    	//alert(dump(document.forms[0].getElementsByTagName('input'))) ;
    	var poststr = '';
    	
    	for (var i=0; i<document.forms[0].getElementsByTagName('input').length; i++) 
      	with (document.forms[0].getElementsByTagName('input')[i])
      	{ 
      		//alert(name);
      		poststr = poststr + '&'+ name+ '=' + escape(encodeURI(value) );
      	}
    	for (var i=0; i<document.forms[0].getElementsByTagName('select').length; i++) 
      	with (document.forms[0].getElementsByTagName('select')[i])
      	{ 
      		poststr = poststr + '&'+ name+ '=' + escape(encodeURI(value) );
      	}
	//alert(poststr);
	return poststr;
    }
    
	// universal loader
	function ajax_load_get(url,uri,container,notification)
	{
		
		if(notification == undefined) var notification = false;
		
		var xhr = createXHR();
		var param = uri;
		var container = document.getElementById(container);
		if(xhr)
		{
			xhr.open('GET',url+param,true);
			
			xhr.onreadystatechange = function()
			{
				if(xhr.readyState == 4)
				{
					//alert('MiH2Su');
					// Reset Container ELmenent
					container.innerHTML = '';
					container.innerHTML = xhr.responseText;
					
					if(notification != '' )
					{
					Show();
					// FadeBox f. Ausgabe 
					document.getElementById('fadeBox').innerHTML = notification;
					delay_fade();
					} 
				}
				else
				{
					//container.innerHTML = 'ReadyState ' + xhr.readyState;
				}
			};
			xhr.send(null);
		}
		else
		{
			alert('error create xhr');
		}
	}

		// universal loader POST
	function ajax_load_post(url,uri,container,notification)
	{
		
		if(notification == undefined) var notification = false;
		
		var xhr = createXHR();
		var param = uri;
		var container = document.getElementById(container);
		if(xhr)
		{
			xhr.open('POST',url,true);
			xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			xhr.setRequestHeader("Content-length", param.length);
			xhr.setRequestHeader("Connection", "close");
			xhr.onreadystatechange = function()
			{
				if(xhr.readyState == 4)
				{
					//alert('MiH2Su');
					// Reset Container ELmenent
					container.innerHTML = '';
					container.innerHTML = xhr.responseText;
					
					if(notification != '' )
					{
					Show();
					// FadeBox f. Ausgabe 
					document.getElementById('fadeBox').innerHTML = notification;
					delay_fade();
					} 
				}
				else
				{
					//container.innerHTML = 'ReadyState ' + xhr.readyState;
				}
			};
			xhr.send(param);
		}
		else
		{
			alert('error create xhr');
		}
	}
	
	
	// Confirm Dialog
	function ask(url,msg)
	{
		if (confirm(msg) )
		{
			location.href = url;
		}
		else
		{
			return false;
		}
	}
	// checkOnEnter Event Handler
	function checkOnEnter(e)
	{
			var keycode;
 			if(e.which)
 			{
 				/*FF*/
 				keycode = e.which;
 			}
 			else if(window.event)
 			{
 				keycode = e.keyCode;
 			} 
  
			  if(keycode == 13)
			  {
			  	//sendSearch('volltext');
			  }
			  else
			  {
			  return true;
			  }
	}
	// Value Getter
	
	function getValue(val)
	{
		return document.getElementById(val).value;
	}
	
	function Validate(url,uri,container,method)
	{
		// FIXME 
		
		var form = document.forms[0];
		var err_count = 0;
		var no_err_count = 0;
		
		var err_count1 = 0;
		var no_err_count1 = 0;
		
		var err_count2 = 0;
		var no_err_count2 = 0;
		
		var err_count3 = 0;
		var no_err_count3 = 0;
		
		
		var msg = '';

		for (var i=0; i<form.getElementsByTagName('input').length; i++) 
		with (form.getElementsByTagName('input')[i])
      {
        if(className == "pflicht")
		{
			
			if(form.getElementsByTagName('input')[i].type == "checkbox" )
			{
			// Check Radio Boxes
			
			
			if(form.getElementsByTagName('input')[i].checked )
			{
				//alert('[OK] -> ' + name);
				msg = msg + '[CHECKBOX OK] -> ' + name+ '\n';	
				no_err_count1++;
			}
			
			else
			{
				msg = msg + '[CHECKBOX_NOT OK] -> ' + name+ '\n';	
				err_count1++;
			}
			
			}
			
			// Check Textfeld
			if(form.getElementsByTagName('input')[i].type == "text" )
			{
				if(form.getElementsByTagName('input')[i].value == '' )
				{
					msg = msg + '[TEXTFIELD_NOT OK] -> ' + name+ '\n';	
					err_count2++;
				}
				else
				{
					//alert('[OK] -> ' + name);
					msg = msg + '[TEXTFIELD OK] -> ' + name+ '\n';	
					no_err_count2++;
				}
			}
		}
		else
		{
			continue;
		}
		
		
		}// foreach
      	no_err_count = no_err_count1 + no_err_count2;
		err_count = err_count1 + err_count2;
		
		for (var i=0; i<form.getElementsByTagName('select').length; i++) 
		with (form.getElementsByTagName('select')[i])
      {
        if(className == "pflicht")
		{
			
			if (form.getElementsByTagName('select')[i].value == -1)
			{
				msg = msg + '[NOT OK] -> ' + name+ '\n';	
				err_count3++;
			}
			else
			{
				//alert('[OK] -> ' + name);
				msg = msg + '[OK] -> ' + name+ '\n';	
				no_err_count3++;
			}
			
		}
		else
		{
			continue;
		}
		
		}// foreach
		
		
		
		var el_count = document.forms[0].elements.length;
		var error_count = err_count1 + err_count2 + err_count3;
		
		
      	if(error_count == 0)
		{
			if(method == "post")
				{
					ajax_load_post(url,uri,container,'');
				}
				else
				{
					ajax_load_get(url,uri,container,'');
				}
		}
		else
		{
			
			Show();
			// FadeBox f. Ausgabe 
			document.getElementById('fadeBox').innerHTML = 'Bitte alle Pflichtfelder ausfüllen.';
			delay_fade();
		//	alert('Pflichtfeld DEBUG: (EL: '+ el_count + '/'+ error_count +')\n' + msg);
		}
      
      
		
	
	}

	//--------------------------------------------------------------------------
	// Notifications
	// Trigger
	function delay_fade()
	{
		window.setTimeout('Hide()',2000);
	}
	
	//Show Message
	function Show()
	{
		document.getElementById('fadeBox').style.display = 'block';		
	}
	
	// Restore StyleProperties fadeBox
	
	function Hide()
	{
		document.getElementById('fadeBox').style.display = 'none';
	}
	
	//--------------------------------------------------------------------------
	
