/**
*"空字符"的定义
*/
var whitespace = " \t\n\r";


/**
* 检查是否为空
*/
function IsEmpty(s)
{ 
  return ((s == null) || (s.length == 0))
}

/*
* 检查是否为"空字符"
*/
function IsWhitespace (s)
{
  var i;
  if (IsEmpty(s)) return true;

  for (i = 0; i < s.length; i++)
  {
    var c = s.charAt(i);
    if (whitespace.indexOf(c) == -1) return false;
  }
  return true;
}

/*
*强制输入,如果输入为"空字符",提示
* @param val 控件
* @param str 提示信息
*/
function ForceEntry(val, msg)
{
  var strInput = new String(val.value);
  if (IsWhitespace(strInput))
  {
    alert(msg);
    return false;
  }
  else
    return true;
}
/**
*判断是否为数字
*/
function IsDigit(fData)
{
    return ((fData>="0") && (fData<="9"))
}

/**
*是否为整数
*/
function IsInteger(fData)
{
    //如果为空，返回true
    if (IsEmpty(fData))
        return true
    if ((isNaN(fData)) || (fData.indexOf(".")!=-1) || (fData.indexOf("-")!=-1))
        return false    
    
    return true    
}

/**
*判断是否为正确的正数
*/
function IsPlusNumeric(fData)
{
    if (IsEmpty(fData))
        return true
    if ((isNaN(fData)) || (fData.indexOf("-")!=-1))
        return false
    return true
}

function DataLength(fData)
{
    var intLength=0
    for (var i=0;i<fData.length;i++)
    {
        if ((fData.charCodeAt(i) < 0) || (fData.charCodeAt(i) > 255))
            intLength=intLength+2
        else
            intLength=intLength+1    
    }
    return intLength
}


function IsIntegerInRange(fInput,fLower,fHigh)
{
    if (fLower==null)
        return (fInput<=fHigh)
    else if (fHigh==null)
        return (fInput>=fLower) 
    else         
        return ((fInput>=fLower) && (fInput<=fHigh))
}



function DaysInFebruary(fYear)
{
    
    return ((((fYear % 4==0) && ( !(fYear % 100 ==0))) ||(fYear % 400 ==0)) ? 29 : 28);
}

function IsYear(fYear)
{
    if (!(IsInteger(fYear))) 
        return false
    if (DataLength(fYear)!=4 )
        return false
    if (IsIntegerInRange(fYear,1900,3000)==false)
        return false
    
    return true        
}



function IsMonth(fMonth)
{
    if (!(IsInteger(fMonth)))
        return false
    if (IsIntegerInRange(fMonth,1,12)==false)
        return false
        
    return true
}


function IsDay(fDay)
{
    if (!(IsInteger(fDay)))
        return false
    if (!(IsIntegerInRange(fDay,1,31)))
        return false
        
    return true
    
}


function IsDate(fDate)
{

    var arrDaysInMonth=new Array(12);
    arrDaysInMonth[1]=31;
    arrDaysInMonth[2]=29;
    arrDaysInMonth[3]=31;
    arrDaysInMonth[4]=30;
    arrDaysInMonth[5]=31;
    arrDaysInMonth[6]=30;
    arrDaysInMonth[7]=31;
    arrDaysInMonth[8]=31;
    arrDaysInMonth[9]=30;
    arrDaysInMonth[10]=31;
    arrDaysInMonth[11]=30;
    arrDaysInMonth[12]=31;
    
    if (IsEmpty(fDate))
        return true
        
    var NameList=fDate.split("-");
    if (NameList.length!=3)
        return false
    
    if (!(IsYear(NameList[0]) && IsMonth(NameList[1]) && IsDay(NameList[2])) )
        return false
    
    if ( NameList[1]>arrDaysInMonth[NameList[1]] )
        return false
        
    if ( (NameList[1]==2) && (NameList[2]>DaysInFebruary(NameList[0]) ) )
        return false
        
    return true

}
