﻿var whitespace = " \t\n\r";
var defaultEmptyOK = false;
var reEmail = /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/
var regExPhoneNumber = /^((\+){0,1}91(\s){0,1}(\-){0,1}(\s){0,1}){0,1}98(\s){0,1}(\-){0,1}(\s){0,1}[1-9]{1}[0-9]{7}$/
var reInteger = /^\d+$/
var reg5Digits = /^\d{5}$/
var reg10Digits = /^\d{10}$/
var reg12Digits = /^\d{3}-\d{3}-\d{4}$/
var reg14Digits = /^\(\d{3}\)\s{1,}\d{3}-\d{4}$/
var digitsInUSPhoneNumber = 10;
var regSplChars = /^[^&?]+$/

function isEmpty(s)
{  	
	s = trim(s);
    return ((s == null) || (stripInitialWhitespace(s).length == 0))
}
function stripInitialWhitespace (s)
{   var i = 0;
	s = s + '';
   while ((i < s.length) && charInString (s.charAt(i), whitespace))
       i++;
    
    return s.substring (i, s.length);
}
function stripEventualWhitespace (s)
{   var i = s.length-1;

    while ((i >= 0) && charInString (s.charAt(i), whitespace))
       i--;
    
    return s.substring (0,i+1);
}
function charInString (c, s)
{   for (i = 0; i < s.length; i++)
    {   if (s.charAt(i) == c) return true;
    }
    return false
}
function isEmail (s)
{   
	if (isEmpty(s)) 
	{
		if (isEmail.arguments.length == 1) 
		return defaultEmptyOK;
       else 
		return (isEmail.arguments[1] == true);
	}
    else 
    {
       return reEmail.test(s)
         
    }
}
function isPhone (s)
{   if (isEmpty(s)) 
       if (isPhone.arguments.length == 1) return true;
       else return (isPhone.arguments[1] == true);
    
    else {
       return regExPhoneNumber.test(s)
         
    }
}
function imposeMaxLength(Object, MaxLen)
{
     if (Object.value.length > MaxLen)
      {
            Object.value = Object.value.substr(0,MaxLen);
      }
}
function trim(s)
{   
     return stripEventualWhitespace(stripInitialWhitespace(s));
}
function isInteger (s)

{   
	s=trim(s);
	var i;

    if (isEmpty(s)) 
       if (isInteger.arguments.length == 1) return defaultEmptyOK;
       else return (isInteger.arguments[1] == true);

    return reInteger.test(trim(s));
}
function isUSPhoneNumber (s)
{   if (isEmpty(s)) 
       if (isUSPhoneNumber.arguments.length == 1) return defaultEmptyOK;
       else return (isUSPhoneNumber.arguments[1] == true);
    return (reg10Digits.test(s) || reg12Digits.test(s) || reg14Digits.test(s));
}
function isUSZipNumber(s)
{   if (isEmpty(s)) 
       if (isUSZipNumber.arguments.length == 1) return defaultEmptyOK;
       else return (isUSZipNumber.arguments[1] == true);
    return reg5Digits.test(s);
}
function isValidSplChars(s)
{
    if (isEmpty(s)) 
       if (isValidSplChars.arguments.length == 1) return defaultEmptyOK;
       else return (isValidSplChars.arguments[1] == true);    
    return regSplChars.test(s);
}
