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 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 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 fnMandatory(strTxtCtrlValue)
{
	if (strTxtCtrlValue == "")
        return false
    
    strTxtCtrlValue = fnTrim(strTxtCtrlValue)
    if (strTxtCtrlValue.length == 0)
       return false
    
	return true
}

//---------------------validation for date--------------------------

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}

function isDate(dtStr){
	var dtCh= "-";
	var minYear=1900;
	var maxYear=2100;

	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	//var strMonth=dtStr.substring(0,pos1)
	//var strDay=dtStr.substring(pos1+1,pos2)
	//var strYear=dtStr.substring(pos2+1)
	var strYear=dtStr.substring(0,pos1)
	var strMonth=dtStr.substring(pos1+1,pos2)
	var strDay=dtStr.substring(pos2+1)
	strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1==-1 || pos2==-1){
		//alert("The date format should be : mm/dd/yyyy")
		return false
	}
	if (strMonth.length<1 || month<1 || month>12){
		//alert("Please enter a valid month")
		return false
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		//alert("Please enter a valid day")
		return false
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		//alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear)
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		//alert("Please enter a valid date")
		return false
	}
return true
}

//-----------------------------------------------------------------

function checkform(_form){

	name = _form.Name.value;	
	email = _form.EmailID.value;
	phone = _form.Phone.value
	
	errmsg = "";
	submitflag = true;

	if(!fnMandatory(name)){
		errmsg = errmsg + "Bitte 'name' auffüllen \n";   
		submitflag = false;
	}	
	
	if(!fnMandatory(phone)){
		errmsg = errmsg + "Bitte 'telephone' auffüllen \n";
		submitflag = false;
	}
			
	if(!fnMandatory(email)){
		//errmsg = errmsg + "Please enter the email \n";
		//submitflag = false;
	}else if (!fnEmailValidation(email,"",100)){
			errmsg = errmsg + "Bitte 'email' auffüllen \n";
			submitflag = false;
	}	
	
	if(submitflag)
		_form.submit();
	else{
		alert(errmsg);		
	}
}


