//function to remove the whitespaces from the start and end of a string

function _ermTrim(s) 
{
	regl = /^[ \t\n\r]*/
	regr = /[ \t\n\r]*$/
	return s.replace(regl,"").replace(regr,"");
}



//function to check whether the value passed is a number or not
//This can also accept numbers with decimal points

function _ermIsNumeric(n) 
{
	reg = /^[0-9]*\.*[0-9]*$/
	return reg.test(_ermTrim(n));
}

//function to check whether the value passed is an integer or not
//This will not accept decimal places

function _ermIsInteger(n) 
{
	return (!isNaN(parseInt(n)) && parseInt(_ermTrim(n)).toString().length == _ermTrim(n).toString().length);
}


function _ermValidateAlphaNumericNoEmailRequired(source, args)
{
    
    if(args.Value.length==0)        
    {        
        args.IsValid = false;
    }
    else
    {
        if ((args.Value.search('[A-Za-z0-9]')==-1) || 
            (args.Value.indexOf('@')>=0) || 
            (args.Value.indexOf('.com')>=0) || 
            (args.Value.indexOf('.net')>=0) || 
            (args.Value.indexOf('gmail')>=0) || 
            (args.Value.indexOf('yahoo')>=0) || 
            (args.Value.indexOf('microsoft')>=0) || 
            (args.Value.indexOf('msn')>=0) ||
            (args.Value.indexOf('hotmail')>=0))
        {
            args.IsValid = false;
        }
        else
        {
            if(typeof(defaultArray) != "undefined" && defaultArray[source.id] != null && defaultArray[source.id]==args.Value) args.IsValid = false;
            else args.IsValid = true;
        }
    }
}

function _ermValidateAlphaNumericNoEmail(source, args)
{
    if(args.Value.length>0 && 
       ((args.Value.search('[A-Za-z0-9]')==-1) || 
        (args.Value.indexOf('@')>=0) || 
        (args.Value.indexOf('.com')>=0) || 
        (args.Value.indexOf('.net')>=0) || 
        (args.Value.indexOf('gmail')>=0) || 
        (args.Value.indexOf('yahoo')>=0) || 
        (args.Value.indexOf('microsoft')>=0) || 
        (args.Value.indexOf('msn')>=0) ||
        (args.Value.indexOf('hotmail')>=0)))
    {        
        args.IsValid = false;
    }
    else
    {
        args.IsValid = true;
    }
}

function _ermValidateNoEmailRequired(source, args)
{

    if(
        (args.Value.indexOf('@')>=0) || 
        (args.Value.indexOf('.com')>=0) || 
        (args.Value.indexOf('.net')>=0) || 
        (args.Value.indexOf('gmail')>=0) || 
        (args.Value.indexOf('yahoo')>=0) || 
        (args.Value.indexOf('microsoft')>=0) || 
        (args.Value.indexOf('msn')>=0) ||
        (args.Value.indexOf('hotmail')>=0) ||
        (args.Value.length==0)
      )
    {        
        args.IsValid = false;
    }
    else
    {
        if(typeof(defaultArray) != "undefined" && defaultArray[source.id] != null && defaultArray[source.id]==args.Value) args.IsValid = false;
            else args.IsValid = true;
    }
}

function _ermValidateNoEmail(source, args)
{

    if(
        (args.Value.indexOf('@')>=0) || 
        (args.Value.indexOf('.com')>=0) || 
        (args.Value.indexOf('.net')>=0) || 
        (args.Value.indexOf('gmail')>=0) || 
        (args.Value.indexOf('yahoo')>=0) || 
        (args.Value.indexOf('microsoft')>=0) || 
        (args.Value.indexOf('msn')>=0) ||
        (args.Value.indexOf('hotmail')>=0)
      )
    {        
        args.IsValid = false;
    }
    else
    {
        args.IsValid = true;
    }
}

function _ermValidateNumericIntegerRequired(source, args)
{
    if((args.Value.length==0) || !_ermIsInteger(args.Value))
    {
        args.IsValid = false;
    }
    else
    {
        args.IsValid = true;
    }
}

function _ermValidateNumericInteger(source, args)
{
    if(args.Value.length>0 && !_ermIsInteger(args.Value))
    {
        args.IsValid = false;
    }
    else
    {
        args.IsValid = true;
    }
}

function _ermValidateNumericRequired(source, args)
{
    if((args.Value.length==0) || !_ermIsNumeric(args.Value))
    {
        args.IsValid = false;
    }
    else
    {
        args.IsValid = true;
    }
}

function _ermValidateNumeric(source, args)
{
    if(args.Value.length>0 && !_ermIsNumeric(args.Value))
    {
        args.IsValid = false;
    }
    else
    {
        args.IsValid = true;
    }
}

function _ermValidateEmailRequired(source, args)
{    
    var strEmailID = args.Value;
    
    if (strEmailID.length == 0)     
    {
        args.IsValid = false;       //as this is required field.        
    }
    else
    {
        args.IsValid = CheckEmailID(strEmailID);
    }
}

function _ermValidateEmail(source, args)
{
    var strEmailID = args.Value;
    
    if (strEmailID.length == 0)
    {
        args.IsValid = true;
    }
    else
    {
        args.IsValid = CheckEmailID(strEmailID);
    }
}

function CheckEmailID(strEmailID)
{
    var strValidChars = /^[A-Za-z0-9.@_-]+$/
	var intLen = strEmailID.length;
	var intAtIndex = strEmailID.indexOf('@');
	var intDotIndex = strEmailID.indexOf('.');	

	if ((intAtIndex <= 0) || (intAtIndex == (intLen-1)) || (intDotIndex <= 0) || (intDotIndex == (intLen-1)))
	{   //missing '@' or '.' or 
	    //first charachters is '@' or '.' or
	    //last charachters is '@' or '.' 
	    
        return false;
	}

    if (strEmailID.indexOf('@', intAtIndex + 1) > -1)
    {   //more than one '@' charachters    
        
        return false;
    }
    
    if ((strEmailID.indexOf('.@') > -1) || (strEmailID.indexOf('@.') > -1))
    {           
        return false;
    }
    
    if (strEmailID.indexOf('..') > -1) 
    {   
        return false;
    }
    
    if (strEmailID.indexOf('.', intAtIndex + 2) == -1)
    {   //missing '.' charachter after '@'    
        
        return false;
    }
    
    if (strValidChars.test(strEmailID) == false)
    {        
        return false;
    }    
    return true;
}
