// BOI, followed by one or more whitespace characters, followed by EOI.
var reWhitespace = /^\s+$/

// BOI, followed by one lower or uppercase English letter, followed by EOI.
var reLetter = /^[a-zA-Z]$/

// BOI, followed by one or more lower or uppercase English letters, 
// followed by EOI.
var reAlphabetic = /^[a-zA-Z]+$/


// BOI, followed by one or more lower or uppercase English letters
// or digits, followed by EOI.
var reAlphanumeric = /^[a-zA-Z0-9]+$/


// BOI, followed by one digit, followed by EOI.
var reDigit = /^\d$/


// BOI, followed by one lower or uppercase English letter
// or digit, followed by EOI.
var reLetterOrDigit = /^([a-zA-Z]|\d)$/


// BOI, followed by one or more digits, followed by EOI.
var reInteger = /^\d+$/

// BOI, followed by one of these two patterns:
// (a) one or more digits, followed by ., followed by zero or more digits
// (b) zero or more digits, followed by ., followed by one or more digits
// ... followed by EOI.
var reFloat = /^((\d+(\.\d*)?)|((\d*\.)?\d+))$/


var reEmail = /^.+\@.+\..+$/

var reIp=/^(\d{1,3})[.](\d{1,3})[.](\d{1,3})[.](\d{1,3})$/;

var reReplace=/^0*/;

// whitespace characters as defined by this sample code
var whitespace = " \t\n\r";



/////////////////////////////////////////////////////////////////////////
//                               Functions                             //
/////////////////////////////////////////////////////////////////////////          
          

// Check whether string s is empty.
function isEmpty(s)
{   return ((s == null) || (s.length == 0))
}


// Returns true if string s is empty or 
// whitespace characters only.
function isWhitespace (s)

{   
    return (isEmpty(s) || reWhitespace.test(s));
}


///////////////////////////////////////////
//以下函数(到isLetterOrDigit(c))均为单字符验证函数
///////////////////////////////////////////


// Returns true if character c is an English letter 
// (A .. Z, a..z).

function isLetter (c)
{   return reLetter.test(c)
}

// Returns true if character c is a digit 
// (0 .. 9).

function isDigit (c)
{   return reDigit.test(c)
}

// Returns true if character c is a letter or digit.

function isLetterOrDigit (c)
{   return reLetterOrDigit.test(c)
}



/////////////////////////////
//以下为多位数或多个字符的验证函数
/////////////////////////////
function isInteger (s)
{   
    if (isWhitespace(s)) 
       return false;
    
    return reInteger.test(s)
}

function isFloat (s)
{   if (isWhitespace(s)) 
      return false;

    return reFloat.test(s)
}


//是否是字符
function isAlphabetic (s)
{   

    if (isWhitespace(s)) 
       return false;
    else {
       return reAlphabetic.test(s)
    }
}

//是否是字符或数字
function isAlphanumeric (s)
{   
    if (isWhitespace(s)) 
       return false;

    else {
       return reAlphanumeric.test(s)
    }
}


////////////////////////
//特定格式的验证函数
////////////////////////

//是否email地址有效
function isEmail (s)
{   if (isWhitespace(s)) 
       return false;
    
    else {
       return reEmail.test(s);
    }
}

//是否IP地址有效
function isIp(s){
  if(isWhitespace(s))
    return false;
  else
    return reIp.test(s);   	
}

function isIntegerInRange (s, a, b)
{   
	if (isWhitespace(s)) 
      return false;
  if (!isInteger(s)) 
      return false;

  var newstr=s.replace(reReplace,"");   
  var num = parseInt (newstr);
  return ((num >= a) && (num <= b));
}

/////////////////////
//日期验证函数
/////////////////////

function isYear (s)
{   if (isWhitespace(s)) 
       return false;
       
    if (parseInt(s)<=9) return false;
    return ((s.length == 2) || (s.length == 4));
}

function isMonth (s)
{   if (isWhitespace(s)) 
       return false;
      
    return isIntegerInRange (s, 1, 12);
}

function isDay (s)
{   if (isWhitespace(s)) 
       return false;
       
    return isIntegerInRange (s, 1, 31);
}

function isDate(s){
    if (isWhitespace(s)) 
       return false;	
       
    var sArray=s.split('-');
    if(sArray.length!=3){
      return false;
    }   
    if(!isYear(sArray[0])){
    	return false;
    } 
    if(!isMonth(sArray[1])){
    	return false;    	
    } 
    if(!isDay(sArray[2])){
    	return false;    	
    }
    
    return true;
}

//////////////
//去掉前后空格
//////////////
function ltrim(s){
  var reLeftSpace=/^\s+/;
  var replaceStr="";
  s=s.replace(reLeftSpace,replaceStr);
  return s;
}

function rtrim(s){
  var reRightSpace=/\s+$/;
  var replaceStr="";
  s=s.replace(reRightSpace,replaceStr);
  return s;	
}

function trim(s){
  return ltrim(rtrim(s));
	
}