var ie = document.all?1:0
var ns4 = document.layers?1:0
var dodiv = 0;
var alphaChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
var digitChars = "0123456789";
var asciiChars = alphaChars + digitChars + "!\"#$%&'()*+,-./:;<=>?@[\]^_`{}~";

function isASCII(str){
var v_len = str.length;
var i;
for (i = 0; i < v_len; i++)
{
if (asciiChars.indexOf(str.charAt(i)) == -1)
return false;
}
return true;
}

function isDigit(str){
var v_len = str.length;
var i;
for (i = 0; i < v_len; i++)
{
if (digitChars.indexOf(str.charAt(i)) == -1)
return false;
}
return true;
}

function noEnterKey()
{
if (event.keyCode==13)
return false;
}

function isExistSpace(str){
var v_len = str.length;
var i;
var spaceChars=" กก";
for (i = 0; i < v_len; i++)
{
if (spaceChars.indexOf(str.charAt(i)) == -1)
return false;
}
return true;
}

function TrimStr(str){
var len=str.length;
var i=0;
var itemp1=0;
var itemp2=0;
for (i=0;i<len;i++)
{ if (str.charAt(i)!=' ' && str.charAt(i)!='กก')   {
      itemp1=i; 
      break;
  }
}
for(i=len-1;i>0;i--) {
  if(str.charAt(i)!=' ' && str.charAt(i)!='กก')   {
    itemp2=i+1;
    break;
  }
}
  if (len==1 ) itemp2=1;
  
  return str.substring(itemp1,itemp2);
}

// isEmail
// check if the item is email or not
function isMail( str )
{
  var resultStr = str.replace(/ /gi, "");
  var atIndex = resultStr.indexOf("@");
  var dotIndex = resultStr.lastIndexOf(".");
  if( resultStr == "" || !isASCII(resultStr) || dotIndex == -1)
    return false;
  if ( resultStr.lastIndexOf("@") != atIndex || resultStr.charAt(atIndex+1) == ".")
    return false;
  if ( atIndex <= 0 || dotIndex < atIndex || dotIndex >= resultStr.length-1)
    return false;
  return true;
}

// isIDNumber
// check if the id number is valid or not
function isIDNumber( str )
{
    var mID     = TrimStr(str);
    var mLen    = mID.length;

    if ( mLen != 15 && mLen != 18 )   return false;

    if ( mLen == 15 && mID.search(/\d{15}/gi) == -1 ) //not 15 digits
        return false;
        
    if ( mLen == 18 && mID.search(/\d{17}[0-9,x,X]/gi) == -1 ) //not 17 digits + 1 digits or X
        return false;
        
    return true;
}

// isMobile
// check if the mobile number is valid or not
function isMobile( str )
{
    var mID     = TrimStr(str);
    var mLen    = mID.length;

    if ( mLen != 11 )   return false;   // 11 digits
    
    if ( mID.search(/13[0-9]\d{8}/gi) == -1 ) // not china mobile
        return false;
        
    return true;
}

// isMultiMobile
// check if the mobile number is valid or not
function isTwoMobile( str )
{
    var mID     = TrimStr(str);
    var mLen    = mID.length;

    if ( mLen != 23 && mLen != 11 && mLen != 12)   return false;   // one mobile, one mobile+";", one mobile+";"+other mobile
    
    if ( mLen == 11 ) 
        return isMobile(mID);
    else if( mLen == 12 ) {
        return isMobile(mID.substring(0,11));
    }

    else if( mLen == 23 ) {
        return isMobile(mID.substring(0,11)) && isMobile(mID.substring(12,23));
    }
 
    return true;
}

// yyyy-mm-dd
function isDate(sDate) {
var mDate   = TrimStr(sDate);
var mLen    = mDate.length;

if ( mLen < 8 || mLen > 10 )   return false;

mDate = mDate.replace(/(\/)/g, "-");
if ( mDate.search(/\d{4}-\d{1,2}-\d{1,2}/gi) == -1 ) return false;

var arrDate = mDate.split('-');
var mYear   = parseInt(arrDate[0],10);
var mMonth  = parseInt(arrDate[1],10) - 1;  
var mDay    = parseInt(arrDate[2],10);

if (mYear<1900 || mYear>2100) return false;

var objDate = new Date(mYear,mMonth,mDay);
if(objDate.getFullYear() != mYear || objDate.getMonth() != mMonth || objDate.getDate() != mDay )
    return false;

return true;
}

// yyyy-mm
function isMonth(sDate) {
var mDate   = TrimStr(sDate);
var mLen    = mDate.length;

if ( mLen < 6 || mLen > 7 )   return false;

mDate = mDate.replace(/(\/)/g, "-");
if ( mDate.search(/\d{4}-\d{1,2}/gi) == -1 ) return false;

var arrDate = mDate.split('-');
var mYear   = parseInt(arrDate[0],10);
var mMonth  = parseInt(arrDate[1],10) - 1;  

if (mYear<1900 || mYear>2100) return false;

var objDate = new Date(mYear,mMonth,1);
if(objDate.getFullYear() != mYear || objDate.getMonth() != mMonth)
    return false;

return true;
}

// hh:mm
function isTime(sTime) {
var mTime   = TrimStr(sTime);
var mLen    = mTime.length;

if ( mLen < 3 || mLen > 5 ) return false;
if ( mTime.search(/\d{1,2}:\d{1,2}/gi) == -1 ) return false;

var arrDate = mTime.split(':');
var mHour    = parseInt(arrDate[0],10);
var mMinute  = parseInt(arrDate[1],10);  

if ( mHour < 0 || mHour > 23 || mMinute < 0 || mMinute > 59 ) return false;

return true;
}

// 0: yyyy-mm-dd  1: yyyy-mm-dd hh:mm 2: hh:mm 3: yyyy-mm
function isDateTime(sDate,sType) {
switch (sType.toString(10)) {
case '0':  // yyyy-mm-dd
    return isDate(sDate);
case '1':  // yyyy-mm-dd hh:mm

    var mDate   = TrimStr(sDate);
    var mLen    = mDate.length;

    if ( mLen < 12 || mLen > 16 ) return false;
    if ( mDate.search(/\d{4}-\d{1,2}-\d{1,2} \d{1,2}:\d{1,2}/gi) == -1 ) return false;

    var arrDate = mDate.split(' ');
    
    if ( isDate( arrDate[0] ) == false || isTime( arrDate[1]) == false )
        return false;
    break;
case '2':  // hh:mm
    return isTime(sDate);
case '3':  // yyyy-mm
    return isMonth(sDate);
default:
    return false;
}
return true;
  
}