//******************************************************************************************//
//********************* functions  for email-id validation ****************************//
//******************************************************************************************//

function isValidEmail(emailStr) {
	var checkTLD=1;
	var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
	var emailPat=/^(.+)@(.+)$/;
	var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var quotedUser="(\"[^\"]*\")";
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom=validChars + '+';
	var word="(" + atom + "|" + quotedUser + ")";
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
	var matchArray=emailStr.match(emailPat);
	if (matchArray==null) {
		alert("Email address seems incorrect (check @ and .'s)");
		return false;
	}
	var user=matchArray[1];
	var domain=matchArray[2];
	// Start by checking that only basic ASCII characters are in the strings (0-127).
	for (i=0; i<user.length; i++) {
		if (user.charCodeAt(i)>127) {
			alert("Ths username contains invalid characters.");
			return false;
		}
	}
	for (i=0; i<domain.length; i++) {
		if (domain.charCodeAt(i)>127) {
			alert("Ths domain name contains invalid characters.");
			return false;
		}
	}
	if (user.match(userPat)==null) {
		alert("The username doesn't seem to be valid.");
		return false;
	}
	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null) {
		for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
				alert("Destination IP address is invalid!");
				return false;
	   		}
		}
		return true;
	}
	var atomPat=new RegExp("^" + atom + "$");
	var domArr=domain.split(".");
	var len=domArr.length;
	for (i=0;i<len;i++) {
		if (domArr[i].search(atomPat)==-1) {
			alert("The domain name does not seem to be valid.");
			return false;
	   }	
	}
	if (checkTLD && domArr[domArr.length-1].length!=2 && 
		domArr[domArr.length-1].search(knownDomsPat)==-1) {
		alert("The address must end in a well-known domain or two letter " + "country.");
		return false;
	}

// Make sure there's a host name preceding the domain.

	if (len<2) {
		alert("This address is missing a hostname!");
		return false;
	}	
	return true;
}

function Trim(s) 
{
	/*
  // Remove leading spaces and carriage returns
  while ((s.substring(0,1) == ' ') || (s.substring(0,1) == '\n') || (s.substring(0,1) == '\r'))
  {
    s = s.substring(1,s.length);
  }

  // Remove trailing spaces and carriage returns
  while ((s.substring(s.length-1,s.length) == ' ') || (s.substring(s.length-1,s.length) == '\n') || (s.substring(s.length-1,s.length) == '\r'))
  {
    s = s.substring(0,s.length-1);
  }
  */
	return s.replace(/^\s+/g, '').replace(/\s+$/g, '');
}
function number(value,length){
	
	chk1="1234567890";
	for(i=0;i<length;i++)
	{
		ch1=value.charAt(i);
		rtn1=chk1.indexOf(ch1);
		if(rtn1==-1)
			return false;
	}
	return true;
}

function isPhoneNumber(str)
{
  //var re = /^\(?[2-9]\d{2}[\)\.-]?\s?\d{3}[\s\.-]?\d{4}$/;
  //var re=/^([a-z]|\.|\(|\)){1,}$/gi ;
  //var re=/^(\+){0,1}([0-9]|\.|\(|\)|\s){1,}$/gi ;
  
/*  
  str=Trim(str);
  var re=/^(\+){0,1}([0-9]|\.|\(|\)|\s|-){1,}$/
  
  var result=re.test(str);
  var valid=false;
  if(result==true)
  {
    str=str.replace(/([^0-9])/g,'');
    if(str.length<5)
      return false;  
    var valid=false;
    for(var i=1;i<str.length; i++)
    {
      if(str.charAt(i-1)!=str.charAt(i) )
      {
        valid=true;
      }
    }     
  }
  return valid;
*/  
  	var allowedChars="0123456789- ().";
  	str=Trim(str);
  	newstr=str;
  	var valid=true;
	
	// checking for first + sign
  	if(str.charAt(0)=="+")
  	{
		newstr=str.substr(1);
  	}
	
	// checking for valid characters
	for(var i=0; i<newstr.length; i++)
    {
    	var findchar=newstr.charAt(i);
        achar=allowedChars.indexOf(findchar);
        if(achar==-1)
        {
        	valid=false;
          	break;
        }
    }
	
	// checking for 5 digit length
    var digitstr = "";
    var digitcount=0;
    for(var i=0; i<newstr.length; i++)
    {
		var findcharCode=newstr.charCodeAt(i);
      	var findchar=newstr.charAt(i);
      	if(findcharCode>=48 && findcharCode<=57)
      	{
        	digitstr+=findchar;
        	digitcount = digitcount + 1;
      	}
    }
	
	// all letters not same
	if(digitcount < 5)
	{
   		valid=false;
	}
	
	if(valid)
	{
		valid=false;
    	for(var i=1;i<digitstr.length; i++)
    	{
      		if(digitstr.charAt(i-1)!=digitstr.charAt(i) )
      		{
        		valid=true;
      		}
    	}     
    }
  	return valid;    
}

//Added by emp 69
function checkKeyEventCaptcha(event)
{  
	var val;
	//alert(navigator.appName);
	if(navigator.appName == "Microsoft Internet Explorer")
		val = event.keyCode;
	else
		val = event.charCode;
	
	//alert(val);
	//var val=event.charCode? event.charCode :event.keyCode;
	
    //alert(val);
	if(val==13 || val==0)		return true;
	if(val<48){
		return false;
	}
	if(val>57){
		return false;
	}
	return true;
}