/******************************************************/
/* 文件名：CheckForm.js                               */
/* 功  能：基于自定义属性的通用检测用Javascript函数库 */
/* 作  者：红旗科技软件开发中心(software@flyflag.net)  */
/******************************************************/

//函数名：ShowDialog 
//功能介绍：显示模式或非模式对话框
//参数说明：需要显示的url，是否模式(其中no为非模式，其它为模式) ，宽度，高度，是否要Scroll(只选yes或no)
//返回值：打开的网页

function ShowDialog(url, blnModeless, width, height, strScroll) {
var basePage="ShowDialog.htm";
if (blnModeless=='no'){
	var arr = showModalDialog(basePage, url, "dialogWidth:" + width + "px;dialogHeight:" + height + "px;help:no;scroll:" + strScroll + ";status:no");
	}
else{
	var arr = showModelessDialog(basePage, url, "dialogWidth:" + width + "px;dialogHeight:" + height + "px;help:no;scroll:" + strScroll + ";status:no");
	}
	//因为在parent页面中传递给child页面的是对象类型数据window，所以child页面的参数就指向了其parent页面，然后就可以在child页面中按照ChildWindowObj.xxx的形式引用parent页面中的变量及函数
if (url.indexOf('guestbook')!=-1){
	location.reload();
	}
	//如果是查看留言，则需要重刷新页面。
}

//函数名：ShowDialog1
//功能介绍：显示模式或非模式对话框
//参数说明：需要显示的url，是否模式(其中no为非模式，其它为模式) ，宽度，高度，是否要Scroll(只选yes或no)
//返回值：打开的网页

function ShowDialog1(rtnInput, url, blnModeless, width, height, strScroll) {
var basePage="ShowDialog.htm";
if (blnModeless=='no'){
	var arr = showModalDialog(basePage, url, "dialogWidth:" + width + "px;dialogHeight:" + height + "px;help:no;scroll:" + strScroll + ";status:no");
	}
else{
	var arr = showModelessDialog(basePage, url, "dialogWidth:" + width + "px;dialogHeight:" + height + "px;help:no;scroll:" + strScroll + ";status:no");
	}
if(typeof(arr) == "undefined"){
	arr = "";//防止产生undefined字符
}
rtnInput.value=arr;
//location.href="http://www.sohu.com";或location.reload();
}


//函数名：EmailCheck  
//功能介绍：判断Email是否合法
//参数说明：要检查的字符串  
//返回值：0：含有  1：全部为数字或字母

function EmailCheck(emailStr)
{
	var checkTLD=1;
	var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
	var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var quotedUser="(\"[^\"]*\")";
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom=validChars + '+';
	var word="(" + atom + "|" + quotedUser + ")";
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
	var emailPat=/^(.+)@(.+)$/;
	var matchArray=emailStr.match(emailPat);
	if (matchArray==null)
	{
		alert("邮件地址错误！ (请检查@ 和 .)");
		return false;
	}
	var user=matchArray[1];
	var domain=matchArray[2];
	for (i=0; i<user.length; i++)
	{
		if (user.charCodeAt(i)>127)
		{
			alert("邮件包含非法字符！");
			return false;
		}
	}
	for (i=0; i<domain.length; i++)
	{
		if (domain.charCodeAt(i)>127)
		{
			alert("域名包含非法字符！");
			return false;
		}
	}
	if (user.match(userPat)==null)
	{
		alert("用户名不存在！");
		return false;
	}
	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null)
	{
		for (var i=0;i<=3;i++)
		{
			if (IPArray[i]>255)
			{
				alert("IP地址不正确！");
				return false;
			}
		}
		return true;
	} 
	var atomPat=new RegExp("^" + atom + "$");
	var domArr=domain.split(".");
	var len=domArr.length;
	for (i=0;i<len;i++)
	{
		if (domArr[i].search(atomPat)==-1)
		{
			alert("域名不正确！");
			return false;
		}
	}
	if (checkTLD && domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1)
	{
		alert("邮件地址必须是已知域名或是两个字母 " + "国家.");
		return false;
	}
	if (len<2)
	{
		alert("这个邮件地址没有主机名！");
		return false;
	}
	return true;
}


/* 检测URL是否正确 */
function IsURL(str)
{
	if (str.indexOf('.')==-1) return false;
	return true;
}

/* 检测内容是否安全 */
function IsSafe(str)
{
	if ( (str.indexOf('\'')==-1) && (str.indexOf(';')==-1) ) return true;
	return false;
}
	

/* 取得字符串的字节长度 */
function strlen(str)
{
	var i;
	var len;
	
	len = 0;
	for (i=0;i<str.length;i++)
	{
		if (str.charCodeAt(i)>255) len+=2; else len++;
	}
	return len;
}


/* 检测字符串是否为空---输入对象可为input，也可为textarea*/
function isnull(str)
{
    var i;
    
    for (i=0;i<str.length;i++)
    {
        if (str.charAt(i)!='') return false;
    }
    return true;
}

/* 检测字符串是否为浮点数 */
function  IsFloat(str)  
{  
	var  i,j,strTemp;  
	strTemp="0123456789.";  
	for  (i=0;i<str.length;i++)  
	{  
		j=strTemp.indexOf(str.charAt(i));              
		if  (j==-1)  
		{  
		//说明有字符不合法  
			return  false;  
		}  
	}  
	//说明合法  
	return  true;  
}  

function IsIP(strIP){
	var IPArray=strIP.split(".");
	if (IPArray!=null)
	{
		if (IPArray.length!=4)
		{
			//alert("IP地址不正确！");
			return false;	
		}
		for (var i=0;i<=3;i++)
		{
			if (IPArray[i]>255 || IsInt(IPArray[i])==false)
			{
				//alert("IP地址不正确2！");
				return false;
			}
		}
		return true;
	} 
}


/* 检测字符串是否为整数 */
function IsInt(str)
{
	var number_chars = "1234567890";
	var i;

	for (i=0;i<str.length;i++)
	{
		if (number_chars.indexOf(str.charAt(i))==-1) return false;
	}
	return true;
}

/* 检测指定文本框输入是否合法 */
function CheckInput(input)
{
	var image;
	var i;
	var error = false;

	/* 长度校验 */
	if (strlen(input.value)>parseInt(input.maxsize))
	{
		alert(input.showname+"输入的长度为"+strlen(input.value)+"\n\n超出了最大长度"+input.maxsize+"\n\n请重新输入！");
		error = true;
	}
	else
	/* 非空校验 */
	if (input.nullable=="no"&&isnull(input.value))
	{
		alert(input.showname+"不能为空");
		error = true;
	}
	else
	{
 		/* 数据类型校验 */
		switch(input.datatype)
		{
			/*安全数据*/
			case "safe": if(IsSafe(input.value)==false)
							{
								alert(input.showname+"含有系统不允许输入的字符！\n\n请重新检查后再输入");
								error = true;

							}
							break;
			/*整型数据*/
		 	case "int": if(IsInt(input.value)==false)
							{
								alert(input.showname+"值应该为整数！");
								error = true;

							}
							break;
			/*浮点数据*/
		 	case "float": if(IsFloat(input.value)==false)
							{
								alert(input.showname+"值应该有.号！");
								error = true;

							}
							break;
			/*IP数据*/
		 	case "ip": if(IsIP(input.value)==false)
							{
								alert("请输入正确的IP地址！");
								error = true;

							}
							break;
			/*邮箱数据*/
			case "email": if(EmailCheck(input.value)==false)
							{
								//alert(input.showname+"不是正确的Email")
								error =true;
							}
							break;
			/*网址数据*/
			case "url": if(IsURL(input.value)==false)
							{
								alert(input.value+"不是正确的网址！")
								error=true;
							}
							break;
			/*电话数据*/
			case "tel": if(CheckTEL(input.value)==false)
							{
								alert("请输入正确的电话形式：\n\n可以包含 - ( ) # 字符")
								error=true;
							}
							break;
			/*手机数据*/
			case "mobile": if(isMobile(input.value)==false)
							{
								alert("请输入正确的手机号码!")
								error=true;
							}
							break;
			/*密码数据*/
			case "password": if(CheckPWD(input.value)==false)
							{
								alert("密码只允许数字和字母组成！")
								error=true;
							}
							break;
			/*日期数据*/
			case "date": if(chkdate(input.value)==false)
							{
								alert("请输入正确的日期格式！")
								error=true;
							}
							break;
			default		: break;
		}
	}
	/* 根据有无错误设置或取消警示标志 */
	if (error)
	{
		//image = document.getElementById("img_"+input.name);	//建立一个对象
		//image.src="img/warning.gif";	//用图片作提示用
		return false;
	}
	else
	{
		//image = document.getElementById("img_"+input.name);	//建立一个对象
		//image.src="img/space.gif";	//用图片作提示用
		return true;
	}
}

/* 检测指定FORM表单所有应被检测的元素（那些具有自定义属性的元素）是否合法，此函数用于表单的onsubmit事件 */
function CheckAll(myform)
{

	var i;

	for (i=0;i<myform.elements.length;i++)
	{
	    /* 非自定义属性的元素不予理睬 */
		if (myform.elements[i].showname+""=="undefined") continue;
		/* 校验当前元素 */
		if (CheckInput(myform.elements[i])==false)
		{
			myform.elements[i].focus();
			return false;
		}
	 }
	 return true;
}


//函数名：chkdate  
//功能介绍：检查是否为日期  
//参数说明：要检查的字符串  
//返回值：0：不是日期    1：是日期  
function  chkdate(datestr)  
{  
           var  lthdatestr  
           if  (datestr  !=  "")  
                       lthdatestr=  datestr.length  ;  
           else  
                       lthdatestr=0;  
                         
           var  tmpy="";  
           var  tmpm="";  
           var  tmpd="";  
           //var  datestr;  
           var  status;  
           status=0;  
           if  (  lthdatestr==  0)  
                       return  0  
 
             
           for  (i=0;i<lthdatestr;i++)  
           {            if  (datestr.charAt(i)==  '-')  
                       {  
                                   status++;  
                       }  
                       if  (status>2)  
                       {  
                                   //alert("Invalid  format  of  date!");  
                                   return  0;  
                       }  
                       if  ((status==0)  &&  (datestr.charAt(i)!='-'))  
                       {  
                                   tmpy=tmpy+datestr.charAt(i)  
                       }  
                       if  ((status==1)  &&  (datestr.charAt(i)!='-'))  
                       {  
                                   tmpm=tmpm+datestr.charAt(i)  
                       }  
                       if  ((status==2)  &&  (datestr.charAt(i)!='-'))  
                       {  
                                   tmpd=tmpd+datestr.charAt(i)  
                       }  
 
           }  
           year=new  String  (tmpy);  
           month=new  String  (tmpm);  
           day=new  String  (tmpd)  
           //tempdate=  new  String  (year+month+day);  
           //alert(tempdate);  
           if  ((tmpy.length!=4)    ||  (tmpm.length>2)    ||  (tmpd.length>2))  
           {  
                       //alert("(错误的数据格式！)Invalid  format  of  date!");  
                       return  0;  
           }  
           if  (!((1<=month)  &&  (12>=month)  &&  (31>=day)  &&  (1<=day))  )  
           {  
                       //alert  ("(错误的月或日期！)Invalid  month  or  day!");  
                       return  0;  
           }  
           if  (!((year  %  4)==0)  &&  (month==2)  &&  (day==29))  
           {  
                       //alert  ("(这不是一个闰年)This  is  not  a  leap  year!");  
                       return  0;  
           }  
           if  ((month<=7)  &&  ((month  %  2)==0)  &&  (day>=31))  
           {  
                       //alert  ("(这不是小月！)This  month  is  a  small  month!");  
                       return  0;  
             
           }  
           if  ((month>=8)  &&  ((month  %  2)==1)  &&  (day>=31))  
           {  
                       //alert  ("(这不是小月！)This  month  is  a  small  month!");  
                       return  0;  
           }  
           if  ((month==2)  &&  (day==30))  
           {  
                       //alert("(二月没有这一天！)The  February  never  has  this  day!");  
                       return  0;  
           }  
             
           return  1;  
}  
 
//函数名：CheckTEL  
//功能介绍：检查是否为电话号码  
//参数说明：要检查的字符串  
//返回值：1为是合法，0为不合法  
function  CheckTEL(TEL)  
{  
           var  i,j,strTemp;  
           strTemp="0123456789-()#  ";  
           for  (i=0;i<TEL.length;i++)  
           {  
                       j=strTemp.indexOf(TEL.charAt(i));              
                       if  (j==-1)  
                       {  
                       //说明有字符不合法  
                                   return  0;  
                       }  
           }  
           //说明合法  
           return  1;  
}  

//功能介绍：检查是否含有非数字或字母  
//参数说明：要检查的字符串  
//返回值：0：含有  1：全部为数字或字母  
function  CheckPWD(str)  
{  
   var  strSource  ="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";  
   var  ch;  
   var  i;  
   var  temp;  
     
   for  (i=0;i<=(str.length-1);i++)  
   {  
       ch  =  str.charAt(i);  
       temp  =  strSource.indexOf(ch);  
       if  (temp==-1)    
       {  
         return  0;  
       }  
   }  
   if  (strSource.indexOf(ch)==-1)  
   {  
       return  0;  
   }  
   else  
   {  
       return  1;  
   }    
}  

//比较密码是否相等
function equals(object1,object2,str)
{
	if(object1.value!=object2.value)
	{
		alert(str);
		object2.focus();
		return false;
	}
	return true;
}

//获取另外网页的内容
function xmlhttp(path)
{
	var http=new ActiveXObject("Microsoft.XMLHTTP");
	http.open("POST",path,false);
	http.send();
	var str=unescape(http.responseText);
	return str;
}

/*
//判断是否是数字
function isNumber(num){
		var pattern = /^(\d){1,14}$/;
  		if (!pattern.exec(num)) return false;
  		return true;
}
*/
//判断是否是用户账号
function isUserId(userId){
		var pattern = /^(\d|\w){3,14}$/;
  		if (!pattern.exec(userId)) return false;
  		return true;
}
//判断是否用户名称可以是字母也可以是中文
function isUserName(userName){
//	/^[chr(0xa1)-chr(0xff)]+$/
		var pattern = /^[a-zA-Z\u4E00-\u9FA5]{2,50}$/;
  		if (!pattern.exec(userName)) return false;
  		return true;
}
//判断是否是身份证号
function isCardNumber(idNumber){
 		var pattern;
		//身份证验证 pattern = /^(\d){15}|(\d){17}[xX]|(\d){18}$/;
		pattern = /^(\d){5,18}$/;
 		if (!pattern.exec(idNumber)) return false;
 		return true;
}
//地址
function isAddress(address){
		var pattern = /^[a-zA-Z0-9\u4E00-\u9FA5]{2,200}$/;
  		if (!pattern.exec(address)) return false;
  		return true;
}
//联系电话
function isPhone(phone){
		var pattern = /^(\d){6,30}$/;
  		if (!pattern.exec(phone)) return false;
  		return true;
}
//手机
function isMobile(mobleNumber){
		var pattern = /^[1][3](\d){9}$/;
  		if (!pattern.exec(mobleNumber)) return false;
  		return true;
}
//邮编
function isPostCode(code){
		var pattern = /^(\d){6}$/;
  		if (!pattern.exec(code)) return false;
  		return true;
}
//email
function isEmail(email){
		var pattern = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/;
  		if (!pattern.exec(email)) return false;
  		return true;
}
//简拼
function isNameSimplicity(name){
		var pattern = /^([a-zA-Z]){2,25}$/;
  		if (!pattern.exec(name)) return false;
  		return true;
}

//	用于对sString字符串进行前空格截除:

// -----------------------------------------------------------------------------------
//本函数用于对sString字符串进行前空格截除
// -----------------------------------------------------------------------------------
function JHshLTrim(sString)
{
var sStr,i,iStart,sResult = "";

sStr = sString.split("");
iStart = -1 ;
for (i = 0 ; i < sStr.length ; i++)
{
if (sStr[i] != " ")
{
iStart = i;
break;
}
}
if (iStart == -1) { return "" ;} //表示sString中的所有字符均是空格,则返回空串
else { return sString.substring(iStart) ;}
}


//用于对sString字符串进行后空格截除:
// ---------------------------------------------------------
//4.2 本函数用于对sString字符串进行后空格截除
// --------------------------------------------------------
function JHshRTrim(sString)
{
var sStr,i,sResult = "",sTemp = "" ;

// if (sString.length == 0) { return "" ;} // 参数sString是空串

sStr = sString.split("");
for (i = sStr.length - 1 ; i >= 0 ; i --) // 将字符串进行倒序
{
sResult = sResult + sStr[i];
}
sTemp = JHshLTrim(sResult) ; // 进行字符串前空格截除

if (sTemp == "") { return "" ; }

sStr = sTemp.split("");
sResult = "" ;
for (i = sStr.length - 1 ; i >= 0 ; i--) // 将经处理后的字符串再进行倒序
{
sResult = sResult + sStr[i];
}
return sResult ;
}

//截除字符串前后空格:

function JHshTrim(sString)
{
var strTmp ;

strTmp = JHshRTrim(JHshLTrim(sString)) ;

return strTmp ;
}


// 设置一个 cookie 的值
function setCookie(name,value){
    //document.cookie = name + "=" + encodeURIComponent(value);
    document.cookie = name + "=" + value + ";path=/";
}

//取一个cookie 的值
function getCookie (name){
    var strArg = name + "=";
    var nArgLen = strArg.length;
    var nCookieLen = document.cookie.length;
    var nEnd;
    var i=0;
    var j;

    while (i < nCookieLen){
        j = i + nArgLen;
        if(document.cookie.substring(i,j) == strArg){
            nEnd = document.cookie.indexOf(";", j);
            if (nEnd == -1) nEnd = document.cookie.length;
            //return decodeURIComponent(document.cookie.substring(j,nEnd));
            return document.cookie.substring(j,nEnd);
        }
        i = document.cookie.indexOf(" ", i) + 1;
        if (i == 0) break;
    }
    
    return null;
}
