function fnTrim(strString)
{

	// white space consist of (blank,tab,newline)
	var intLeftIndex = 0; //Store position of first non-white space from leftmost side
	var intRightIndex = 0; //Store position of first non-white space from rightmost side
	var blnFound = false; //Check for any non-white space character
	var regExp = /\S+/; 
	var intCount;
	if (strString.search(regExp) == -1) //Check for non-white space character
	{
		strString = ""; //Valid character not found then return empty string
		return(strString);
	}

	//If  atleast one non-white space character found.
	for (intCount=0;intCount < strString.length; intCount++)
	{
		if (strString.charAt(intCount) != " ") // Checking for first non-white spaces 
											// from left side
		{
			intLeftIndex = intCount - 1;
			break;
		}
	}
	for (intCount=strString.length - 1;intCount >= 0; intCount--)
	{
		if (strString.charAt(intCount) != " ") // Checking for first non-white spaces 
											// from Right most side
		{
			intRightIndex = intCount + 1;
			break;
		}
	}

	strString=strString.substring(intLeftIndex+1,intRightIndex); //Remove leading and trailing
														// spaces
	return (strString);
}
function fnMandatory(strTxtCtrlValue)
{
	if (strTxtCtrlValue == "")
        return false
    
    strTxtCtrlValue = fnTrim(strTxtCtrlValue)
    if (strTxtCtrlValue.length == 0)
       return false
    
	return true
}
function fnEmailValidation(strTxtCtrlValue,strDelimiter,strMaxLength)
{
	var strAtSym
	var strPeriod
	var strSpace
	var strLength

	if (fnMandatory(strTxtCtrlValue) == false) // This includes Null and Space check
		return false;
	if (strTxtCtrlValue.length > strMaxLength)
		return false;

	strTxtCtrlValue = fnTrim(strTxtCtrlValue);
	var regExpression = /[^0-9a-zA-Z][^0-9a-zA-Z]/;
	
	if (regExpression.test(strTxtCtrlValue))
		return false;
	
	var arrEmailIds = new Array(); 
	var strFieldValue = strTxtCtrlValue;
	if (strDelimiter == "")
	{
		arrEmailIds[0] = strTxtCtrlValue
	}
	else
	{
		arrEmailIds = strFieldValue.split(strDelimiter); // Split to get individual email ids using the Delimiter 
	}	
	for (intk = 0;intk < arrEmailIds.length;intk++ )
	{
		if (arrEmailIds[intk] == "") // Null check
			return false;
			
		arrEmailIds[intk] = fnTrim(arrEmailIds[intk]);
		if (arrEmailIds[intk].length == 0 )			 // Spaces Check
			return false;
				
		if (arrEmailIds[intk].search(/\s+/) != -1 ) // checking space in between email id
			return false;
		var arrSplit = new Array();
		arrSplit = 	arrEmailIds[intk].split("@");
		if ( arrSplit.length != 2) 				 // Only one @ is allowed in an email id
			return false;
	
		// Call Function for Alphanumeric Check along with special character (. - _) 
		// for the string before @ and pass 0 in maxlength as maxlength check not required
		
		if (fnIsAlphaNumeric(arrSplit[0],"M","0",".-_") == false)
			return false;
		
		//Check whether first charater is in a-z /A-Z
		var strValidchar = arrSplit[0].substring(0,1)
		if (!((strValidchar >= "A") && (strValidchar <= "Z")) &&  !((strValidchar >= "a") && (strValidchar <= "z")))
			return false
		
		// Call Function for IsAlpha Check along with special character (.) 
		// for the string after @ and pass 0 in maxlength as maxlength check not required
		if (fnIsAlphaNumeric(arrSplit[1],"M","0",".-_")== false)
			return false;
		
		//Anil ------------------- commented to allow number after @
		//Check whether first charater is in a-z /A-Z
		//strValidchar = arrSplit[1].substring(0,1)
		//if (!((strValidchar >= "A") && (strValidchar <= "Z")) &&  !((strValidchar >= "a") && (strValidchar <= "z")))
		//	return false
		//Check whether last character is in a-z /A-Z
		strValidchar = arrSplit[1].substring(arrSplit[1].length-1,arrSplit[1].length)
		
		if (!((strValidchar >= "A") && (strValidchar <= "Z")) &&  !((strValidchar >= "a") && (strValidchar <= "z")))
			return false
		
		//Every portion of the email address after @ must be of <= 2 characters
		var arrEmails
		arrEmails = arrSplit[1].split("."); 
			
		for (intm = 0;intm < arrEmails.length;intm++ )
		{
			if (arrEmails[intm].length < 2)
				return false;
		}
					
		strAtSym=arrEmailIds[intk].indexOf('@')
		strPeriod=arrEmailIds[intk].lastIndexOf('.')
		strSpace=arrEmailIds[intk].indexOf(' ')
		strLength=arrEmailIds[intk].length-1
		if ((strAtSym < 1) ||(strPeriod <= strAtSym+1)|| (strPeriod==strLength) ||(strSpace!=-1))
			return false;
		
	}
			
	return true;
}
function fnIsAlphaNumeric(strString,chrFormat,intMaxLength,strSpecialChar)
{
	
	var regExp;
	
	strString = fnTrim(strString); //Remove leading and trailing spaces
	var regSpChar = /([\$\@\#\%\^\&\*\(\)\[\]\+\_\{\}\`\|\-\\])/g;
	strSpecialChar = strSpecialChar.replace(regSpChar,"\\$1") //Take care of special character in RegExp
	if (intMaxLength > 0) 
	{
		if (strString.length > intMaxLength)
		{
			//alert ("Invalid Maxlength") //Return False if no. of  characters are greater than 
			return false				//specified max length
			
		}
	}

	switch(chrFormat) //Validate character against Format passed as parameter.
	{
		case "U": //All Upper case
			regExp = new RegExp("\[\^A-Z0-9" + strSpecialChar + "\]");
			if (regExp.test(strString)) 
			{
				//alert ("Invalid Characters");
				return false;
			}
			break;
		case "L": // All Lower Case
			regExp = new RegExp("\[\^a-z0-9" + strSpecialChar + "\]");
			if (regExp.test(strString)) 
			{
				//alert ("Invalid Characters");
				return false;
			}
			break;
		case "M": //Mixed Case
			regExp = new RegExp("\[\^a-zA-Z0-9" + strSpecialChar + "\]");
			if (regExp.test(strString)) 
			{
				//alert ("Invalid Characters");
				return false;
			}
			break;
		case "P": //Proper Case
			var arrWords;
			arrWords = strString.split(/\s+/) //Split string in words
			for (var i=0 ;i<arrWords.length; i++)
			{
				if (arrWords[i].search(/^[^A-Z]|\S[A-Z]/) != -1)//Check first letter of each word 
				{										// must be Capital Letter
					//alert ("Invalid Characters");
					return false;
				}
			}
			regExp = new RegExp("\[\^a-zA-Z0-9" + strSpecialChar + "\]");
			if (regExp.test(strString)) 
			{
				//alert ("Invalid Characters");
				return false;
			}
			break
		default:
			//alert ("incorrect  format");//Format Passed as a parameter is not valid
			return false;
	}
			
	//alert ("Valid Characters");
	return true; //Valid Character
}

function fnIsNumeric(strInteger)
{
	/*Generate Regular expression which will check 
	1) If (+,-) sign exist then  it must be the first character.
	2) Input value is a valid real number
	*/
	var regExp = /^[\-\+]{0,1}\d{0,100}\.{0,1}\d{1,100}$/
	strInteger = fnTrim(strInteger); //Remove leading and trailing spaces
	if (regExp.test(strInteger)) //Validate Integer
	{
		//alert ("valid number");
		return true;
	}
	//alert ("invalid");
	return false; //Not a valid integer
}

function versenden()
{	
	var Name	=	document.eMailer.Name.value;
	var Email	=	document.eMailer.Email.value;

	var errmsg = "";
	var submitflag = true;

	if(Name==""){
		errmsg += "Please enter your name.\n";
		submitflag = false;
	}
	
	if(Email==""){
		errmsg += "Please enter you email address.\n";
		submitflag = false;
	}else if (!fnEmailValidation(Email,"",100)){
		errmsg += "Please enter a valid email address.\n";
		submitflag = false;
	}

	if(submitflag){		
		document.eMailer.submit();
	}else
		alert(errmsg);
	
}