// TRIM-FUNKTION
function Trim(myString) {
	var start 	= 0;
	var end		= 0;
	for(i=0; i < myString.length; i++)
		if(myString.charCodeAt(i)==32)
			start++;
		else
			break;	
			
	if(	start > 0) 
		myString = myString.slice(start);

			
	for(i=myString.length-1; i > 0; i--) 
		if(myString.charCodeAt(i)==32)
			end = i;
		else
			break;		
				
	if(	end > 0)
		myString = myString.substring(0, end);
		
	return myString;
}

// POSTLEITZAHL-ÜBERPRÜFUNG
function _ZipTest(teststring)  { 
	var result = true;
	var is_international = false ;
	
	if(	teststring.indexOf("-") > -1) {
		var z = teststring.split("-");
		var zip = z[1];
		is_international = true ;
	}	
	else
		var zip = teststring;

	if(!is_international || z[0] == "D")	// deutsche PLZ	
		result = _NumberTest(zip, 5, 0, 5);
	else	
		result = _NumberTest(zip);
			
	return result;	
}

// ZAHLEN-ÜBERPRÜFUNG (NUR ZAHLEN)
function _NumberTest(teststring, maxlength, remove_spaces, exact_length)  { 
	var result = true;
	
	if(remove_spaces) { //leerzeichen entfernen
		var new_teststring = "";
		for(i=0; i < teststring.length; i++)
  			 if(teststring.charCodeAt(i) != 32)
     			new_teststring += teststring.charAt(i);
		teststring = new_teststring;		
	}		
			

	for(i=0; i < teststring.length; i++) {
  		 if(teststring.charAt(i) < "0" || teststring.charAt(i) > "9") {
			 result = false;
		 	break;
		}	
	}
			
	if(result && maxlength)
		if(teststring.length > maxlength)
			result = false;
			
	if(result && exact_length)
		if(teststring.length != exact_length)
			result = false;
			
		
	return result;	
}



// EMAIL-ÜBERPRÜFUNG
function _EmailTest(teststring)  { 
	var result = true;
	if(result) {	
		if(teststring.indexOf("@") == -1)
			result = false;
	}		
	if(result) {
		var tmp_sting = teststring.split("@");
		if(tmp_sting[1].indexOf(".") == -1)
			result = false;
	}	
	
	if(result) {
		var domain 			= tmp_sting[1].split(".");
		var nDomainIndex 	= domain.length -1;
		if(domain[nDomainIndex].length < 2 || domain[nDomainIndex].length > 4)
			result = false;
	}	
	return result;	
}


// DATUMSÜBERPRÜFUNG
var strMonthArray = new Array(12);
strMonthArray[0] = "Jan";
strMonthArray[1] = "Feb";
strMonthArray[2] = "Mar";
strMonthArray[3] = "Apr";
strMonthArray[4] = "May";
strMonthArray[5] = "Jun";
strMonthArray[6] = "Jul";
strMonthArray[7] = "Aug";
strMonthArray[8] = "Sep";
strMonthArray[9] = "Oct";
strMonthArray[10] = "Nov";
strMonthArray[11] = "Dec";

var now 		= new Date();
var year_now 	= now.getFullYear()

function _DateTest(teststring, max_years_plus)  {
	var teststring =  Trim(teststring);
	var min_year = year_now - 100;
	if(!max_years_plus) 
		max_years_plus = 10; // default: Jahresangabe maximal 10 Jahre über jetzt
	
	var max_year = now.getFullYear() + 10; 
	
	
	var result = true;  
	
 	var pattern=/[A-Za-z]/;              // Nach Buchstaben suchen  
 	var r	=	teststring.match(pattern);  
 	if(r!=null)
		result = false;                  // Falls gefunden -> Fehler!  
	/*
	if(result == true) {
	 	pattern=/\./;    
		var r	=	teststring.match(pattern);  
 		if(r==null)	// kein Punkt gefunden -> Fehler
			result = false;
	}		
	*/
	if(result == true) {
		var r = teststring.split("."); // Nach Punkt in Array auftrennen 
		if(r.length != 3) 
			result = false;
	}		
  	
	if(result == true) {
	 	var tag		=	r[0];  
 		var monat	=	Math.abs(r[1]);  
	 	var jahr	=	r[2]; 
		if ( jahr.length == 2 )
			jahr = Number("20" + jahr);
		
		 if(tag <0 || tag > 31 || monat < 0 || monat > 12 || jahr < min_year || jahr > max_year)
			result = false;  
 	}	
	if(result == true) {
		tmp_date = tag + " " + strMonthArray[monat-1] + " " + jahr;
		r = Date.parse(tmp_date);
		result = !isNaN(r);
	}
	
	return result;
}  

function _TimeTest( sString )  {
	var sString =  Trim( sString );
	var bResult = true;  
	
 	var sPattern 	= /[A-Za-z]/;              // Nach Buchstaben suchen  
 	var aTest		= sString.match(sPattern);  
 	if( aTest != null )
		bResult = false;                  // Falls gefunden -> Fehler!  
	
	if( bResult ) {
		var aTime = sString.split(":"); // Nach Punkt in Array auftrennen 
		if( aTime.length != 2 ) 
			bResult = false;
	}		
  	
	if( bResult ) {
		if( aTime[0] < 0 || aTime[0] > 24 || aTime[1] < 0 || aTime[1] > 59 )
			bResult = false;  
 	}	
	return bResult;
}  

//
// Function to limit key presses for phone numbers,
// zip codes, letters, etc.  To use: 
// <input ... onKeyPress="return limit_keys( this, 'numeric', event )">
//
function limit_keys( selectObj, type, evt )
 {
  var keyCode = 0;
  var ret_val = true;

  if (evt) {
    keyCode = evt.keyCode || evt.which;
   }
  else {
    // The old version of this file did not use the evt parameter
    // and would only work under IE.
    keyCode = window.event.keyCode;
   }

  // Allow special characters: BACKSPACE, TAB, RETURN, LEFT ARROW,
  // RIGHT ARROW to go through
  if ((keyCode == 8) || (keyCode == 9) || (keyCode == 13)
   || (keyCode == 37) || (keyCode == 39)) {
    return (ret_val);
   }

  if (type == "phone") {
    // Numeric values and punctuation are OK
    ret_val = test_keycode( "0123456789()-.", keyCode );
   }
  else if (type == "alphanum") {
    ret_val = ((keyCode >= 48) && (keyCode <= 57))
            || ((keyCode >= 65) && (keyCode <= 90))
            || ((keyCode >= 97) && (keyCode <= 122));
   }
  else if (type == "numeric") {
    // Simply test for a numeric value
    ret_val = ((keyCode >= 48) && (keyCode <= 57));
   }

  return (ret_val);

 } // End of limit_keys()