///////////////显示模式对话框///////////////////////
// JavaScript Document
function ShowModalWindow(url,args,width,height,hasscroll) {
   return window.showModalDialog(url,args,'dialogWidth:'+width+'px;dialogHeight:'+height+'px;status:no;scroll:'+hasscroll+';help:no');
}

///////////////显示非模式对话框///////////////////////
function ShowWindow(URLStr, left, top, width, height)
{
  open(URLStr, 'popUpWin', 'toolbar=no,location=no,directories=no,status=no,menub ar=no,scrollbar=no,resizable=no,copyhistory=yes,width='+width+',height='+height+',left='+left+', top='+top+',screenX='+left+',screenY='+top+'');
}

///////////////用非模式对话框显示帮助信息///////////////////////
var popHelpWin=0;
function ShowHelp(functype)
{
  if(popHelpWin)
  {
    if(!popHelpWin.closed)
    {
      popHelpWin.close();
    }
  }
  popHelpWin = open('./help/flowhelp.html', 'popHelpWin', 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=yes,width=800,height=600,left=200, top=0,screenX=200,screenY=0');
}

///////////////用模式对话框显示错误信息///////////////////////
function ShowError(errmsg)
{
  ShowModalWindow('/smweb/error.jsp?errmsg='+errmsg,'',500,220,'no');
}
// Example:
// var b = new BrowserInfo();
// alert(b.version);
function BrowserInfo()
{
  this.name = navigator.appName;
  this.codename = navigator.appCodeName;
  this.version = navigator.appVersion.substring(0,4);
  this.platform = navigator.platform;
  this.javaEnabled = navigator.javaEnabled();
  this.screenWidth = screen.width;
  this.screenHeight = screen.height;
}

// =============================时间类========================================
//短时间(形如:  13:04:06)
//更具弹性的正则表达式:/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/
function isShortTime(elem)
{
  var pattern=/^([0-9]{1,2})(:)([0-9]{1,2})(:)([0-9]{1,2})$/;
  var temp=elem.match(pattern);
  if(temp==null)
    return false;
  if(temp[1]>24)
    return false;
  if(temp[3]>60)
    return false;
  if(temp[5]>60)
    return false;
  return true;
}
//短时间(形如:  13:04)
//更具弹性的正则表达式:/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/
function isShortTimeEx(elem)
{
  var pattern=/^([0-9]{1,2})(:)([0-9]{1,2})$/;
  var temp=elem.match(pattern);
  if(temp==null)
    return false;
  if(temp[1]>24)
    return false;
  if(temp[3]>60)
    return false;
  return true;
}
//短日期(形如: 2003-12-18)
//更具弹性的正则表达式:/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/
function isShortDate(elem)
{
  var pattern=/^(\d{4})(-)(\d{2})(-)(\d{2})$/;
  var temp=elem.match(pattern);
  if(temp==null)
  {
    return  false;
  }
  //
  var d=new Date(temp[1]+"/"+temp[3]+"/"+temp[5]);
  return d.getFullYear()==temp[1]&&(d.getMonth()+1)==temp[3]&&d.getDate()==temp[5];
}
//长时间,形如(2003-12-18 13:04:06)
//更具弹性的正则表达示/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/
function  isTime(elem)
{
  var pattern=/^(\d{4})(-)(\d{2})(-)(\d{2})(\s+)(\d{2})(:)(\d{2})(:)(\d{2})$/;
  var temp=elem.match(pattern);
  if(temp==null) return false;
  //date(year,month,date, hour,minutes,seconds)
  var d=new Date(temp[1],temp[3]-1,temp[5],temp[7],temp[9],temp[11]);
  return d.getFullYear()==temp[1]&&(d.getMonth()+1)==temp[3]&&d.getDate()==temp[5]&&
                         d.getHours()==temp[7]&&d.getMinutes()==temp[9]&&d.getSeconds()==temp[11];
}
//只有年月  形如:  2003-12
function isDate(elem)
{
  var pattern=/^([0-9]{4}|[0-9]{2})-([0-9]{1,2})$/;
  var temp=elem.match(pattern);
  if(temp==null) return false;
  //Date(year,month)
  var d=new Date(temp[1],temp[2]-1);
  return d.getYear()==temp[1]&&(d.getMonth()+1)==temp[2];
}
//只有小时与分 形如:  04:47
//timePat=/^([1-9]|1[0-2]):[0-5]d$/;
function isTM(elem)
{
  var pattern=/^(\d{1,2})(-|\/|:)(\d{1,2})$/;
  var temp=elem.match(pattern);
  if(temp==null) return false;
  var hour=parseInt(temp[1]);
  var mint=parseInt(temp[3]);
  if(hour>24) return false;
  if(hour<0) return false;
  if(mint>60) return false;
  if(mint<0) return false;

  return true;
}
//判断leapYear  (格式2003-12-18)   (没有测试)
function isLeapYear(elem)
{
  //选用上面的函数检验elem的有效性
  if(isShortDate(elem)==false)
  {
    //输入的时间不格式不正确
    return false;
  }
  var temp=elem.split("-");
  var year=parseInt(temp[0]);
  if((year%100)==0)
  {
    return (year%400)==0;
  }else
  {
    return (year%4)==0;
  }
}
/*********************************************************************************
*	FUNCTION:		isBetween
*	PARAMETERS:		val		AS any value
*					lo		AS Lower limit to check
*					hi		AS Higher limit to check
*	CALLS:			NOTHING
*	RETURNS:		TRUE if val is between lo and hi both inclusive, otherwise false.
**********************************************************************************/
function isBetween (val, lo, hi) {
        if ((val < lo) || (val > hi)) { return(false); }
        else { return(true); }
}
/********************************************************************************
*   FUNCTION:       Compare Date! Which is the latest!
*   PARAMETERS:     lessDate,moreDate AS String
*   CALLS:          isDate,isBetween
*   RETURNS:        TRUE if lessDate<moreDate
*********************************************************************************/
function isComdate (lessDate , moreDate)
{
  if (!isDate(lessDate)) { return(false);}
  if (!isDate(moreDate)) { return(false);}
  var less1st = lessDate.indexOf('-');
  var less2nd = lessDate.lastIndexOf('-');
  var more1st = moreDate.indexOf('-');
  var more2nd = moreDate.lastIndexOf('-');
  var lessy = lessDate.substring(0,less1st);
  var lessm = lessDate.substring(less1st+1,less2nd);
  var lessd = lessDate.substring(less2nd+1,lessDate.length);
  var morey = moreDate.substring(0,more1st);
  var morem = moreDate.substring(more1st+1,more2nd);
  var mored = moreDate.substring(more2nd+1,moreDate.length);
  var Date1 = new Date(lessy,lessm,lessd);
  var Date2 = new Date(morey,morem,mored);
  if (Date1>Date2) { return(false);}
      return(true);

}

/*********************************************************************************
*	FUNCTION	isEmpty checks if the parameter is empty or null
*	PARAMETER	str		AS String
**********************************************************************************/
function isEmpty (str) {
    if ((str==null)||(str.length==0)) return true;
    else return(false);
}
//////////////////////////时间类完毕/////////////////////////////////////////

//  ////////////////////////字符串完毕/////////////////////////////////////////

//============================数字类=========================================
//邮政编码
//要求:无地区规律,但都是6位数字,最大值为(西藏拉萨850000),最小值为(呼和浩特010000)
function isPost(elem){
  var pattern=/^[0-9]{6}$/;
  if(!pattern.test(elem)){
    return false;
  }else{
    if(parseInt(elem)<10000||parseInt(elem)>850000){
          return false;
   }
   return true;
  }
}
//整数(可以带正负符号或者不带符号表正数)
function isInt(elem)
{
  var pattern=/^\d+$/;
//  var pattern=/^(\-|+)?\d+$/;   //编译出错
  return (pattern.test(elem));
}
//负数
function isNegative(elem){
  var pattern=/^\b\-d+$/;
  return (pattern.test(elem));
}
//数字字符
function isFigStr(elem){
  var pattern=/^\d+$/;
  return (pattern.test(elem));
}
//不大于imax,不小于imix的整数
function isScopeInt(elem){
  var imax=80000;
  var imix=100;
  //判断elem是否为整数,向上参考
  if(isInt(elem)==false){
    //alert("elem不是整数");
    return false;
  }
  if(parseInt(elem)>imax){
    return false;
  }
  if(parseInt(elem)<imix){
    return false;
  }
  return true;
}
////////////////////////////////////数据类结束////////////////////////////////
//验证IP地址
function isIP3(elem){
  var pattern=/(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])/;
  return (pattern.test(elem));
}

function isIP(s)
{
  var check=function(v){try{return (v<=255 && v>=0)}catch(x){return false}};
  var re=s.split(".");
  return (re.length==4)?(check(re[0]) && check(re[1]) && check(re[2]) && check(re[3])):false;
}

///////////////////////////////////////////////////end IP ////////////
///////////////////////////////////////////////////号码验证////////////
//移动电话(手机）
//样式:13531214732或013531214732
function isMoveTel(elem)
{
  var pattern=/^0{0,1}13[0-9]{9}$/;
  return (pattern.test(elem));
}

//固定电话(小灵通。。。。家庭电话) 
function isFixTel(elem) 
{ 
  var pattern=/(^[0-9]{3,4}[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)/; 
  return (pattern.test(elem)); 
} 

//电话号码(以上二种) 
function  isTel(elem) 
{ 
  var pattern=/(^[0-9]{3,4}[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)/; 
  return (pattern.test(elem)); 
}

//  5.3 判断客户端的分辨率
//      window.screen.height;  window.screen.width;

//  6.1 email的判断。
function isMail(mail)
{
  return(new RegExp(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/).test(mail));
}
/*
写注册表：
<SCRIPT>
var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.RegWrite ("HKCU\\Software\\ACME\\FortuneTeller\\", 1, "REG_BINARY");
WshShell.RegWrite ("HKCU\\Software\\ACME\\FortuneTeller\\MindReader", "Goocher!", "REG_SZ");
var bKey =    WshShell.RegRead ("HKCU\\Software\\ACME\\FortuneTeller\\");
WScript.Echo (WshShell.RegRead ("HKCU\\Software\\ACME\\FortuneTeller\\MindReader"));
WshShell.RegDelete ("HKCU\\Software\\ACME\\FortuneTeller\\MindReader");
WshShell.RegDelete ("HKCU\\Software\\ACME\\FortuneTeller\\");
WshShell.RegDelete ("HKCU\\Software\\ACME\\");
</SCRIPT>
*/

function isChinese(elem){
  var pattern=/[^\x00-\xff]/g;
  return !(pattern.test(elem));
}
