var count_N=0;

function dialog(url, width, height, title, event)
{
	//alert(url);
	var url = "dialogFrame.jsp?url=" + replaceCharacters(url, "&", "@");
	//alert(url);
	var msg = showModalDialog(url, title, "dialogWidth: " + width + "px; dialogHeight: " + height + "px; help: no; status: no");
	if(msg && msg != "")
		window.alert(msg);
	if(event)
		eval(event);
}

// 替换字符，用其他字符替换给定字符串中指定字符的所有匹配项。
function replaceCharacters(conversionString, inChar, outChar)
{
  var convertedString = conversionString.split(inChar);
  convertedString = convertedString.join(outChar);
  return convertedString;
}

//显示错误消息
function InputError(obj, msg)
{
	var old = obj.style.background;
	obj.style.background = "yellow";
	obj.focus();
	alert(msg);
	if(old == null || old == "")
		old = "white";
	obj.style.background = old;
}

//检查数据类型
//@return true:符合要求 false:不符合要求
function checkInput(input, disName, dataType, dataCanNull, min, max, extra)
{

	 if(!checkNotRequestChar()){
	   count_N=0;
	   return false;
	 }
	
	
	if(input == null)
		return true;

  	 //如果字段被隐藏，将不做检查
  	 if(input.style.visibility == "hidden") return true;
  	 
  	 //无效字段也不检查
  	 if(input.disabled) return true;
  	 
  	 if (dataCanNull)
	{
  	 	if (input.value == "") 
		{
	  	 	 return true;
	  	}
  	 }
  	     
     if(dataType!=null)
	{    	
	     if(dataType == 'number'){
	     	if(!isNumber(input.value)||Trim(input.value)==''){
				InputError(input, '"' + disName + '"必须为整数');
	     		return(false);
	     	}
	     	//判断是否是非负数
	     	if((0-input.value)>0){
				InputError(input, '"' + disName + '"必须为非负');
	     		return(false);	     		
	     	}
	     }else if(dataType == 'num' && input.value!=''){
	     	if(!isNumber(input.value)){
				InputError(input, '"' + disName + '"必须为整数');
	     		return(false);
	     	}
	     	//判断是否是非负数
	     	if((0-input.value)>0){
				InputError(input, '"' + disName + '"必须为非负');
	     		return(false);	     		
	     	}
	     }else if(dataType == 'number_null' && input.value!=''){//可以为空
	     	if(!isNumber(input.value)){
				InputError(input, '"' + disName + '"必须为整数');
	     		return(false);
	     	}
	     	//判断是否是非负数
	     	if((0-input.value)>0){
				InputError(input, '"' + disName + '"必须为非负');
	     		return(false);	     		
	     	}
	     }else if(dataType == 'deganumber'){//可以为负数
	     	if(!isNumber(input.value)||Trim(input.value)==''){
				InputError(input, '"' + disName + '"必须为整数');
	     		return(false);
	     	}
	     }else if(dataType == 'float_null' && input.value!=''){
	     	if(isNaN(input.value)||Trim(input.value)==''){
				InputError(input, '"' + disName + '"必须为数字');
	     		return(false);
	     	}	
	     	//判断是否是非负数
	     	if(0 > parseFloat(input.value)){
				InputError(input, '"' + disName + '"必须为非负');
	     		return(false);	     		
	     	}	
	     }else if(dataType == 'float'){
	     	if(isNaN(input.value)||Trim(input.value)==''){
				InputError(input, '"' + disName + '"必须为数字');
	     		return(false);
	     	}	
	     	//判断是否是非负数
	     	if(0 > parseFloat(input.value)){
				InputError(input, '"' + disName + '"必须为非负');
	     		return(false);	     		
	     	}		     	     	
	     }else if(dataType == 'degafloat'){   //可以为负数
	     	if(isNaN(input.value)||Trim(input.value)==''){
				InputError(input, '"' + disName + '"必须为数字');
	     		return(false);
	     	}	
	     }else if(dataType == 'not_null'){
	     	if(Trim(input.value) == ''){
				InputError(input, '"' + disName + '"不能为空');
	     		return(false);	     		
	     	}
	     }else if(dataType == 'indentifier'){
	     	if(Trim(input.value) == ''){
				InputError(input, '"' + disName + '"不能为空');
	     		return(false);	     		
	     	}
	     	if(!checkCharDigital(input.value)){
				InputError(input, '"' + disName + '"只能包括字母,数字,下划线');
	     		return(false);	     		
	     	}
	     }else if(dataType == 'indentifier_null'){
	     	if(!checkCharDigital(input.value)){
				InputError(input, '"' + disName + '"只能包括字母,数字,下划线');
	     		return(false);	     		
	     	}
	     }else if(dataType == 'date'){
	     	if(dateCheck(input.value) != 0){
				InputError(input, '"' + disName + '"必须为日期类型(yyyy-mm-dd)');
	     		return(false);
	     	}
	     }else if(dataType == 'time'){
	     	if(timeCheck(input.value) != 0){
				InputError(input, '"' + disName + '"必须为时间类型(hh:mm,hh:mm:ss)');
	     		return(false);
	     	}
	     }else if(dataType == 'ip'){
	     	if(!ipCheck(input.value)){
				InputError(input, '"' + disName + '"必须为IP类型(0.0.0.0, 255.255.255.255)');
	     		return(false);
	     	}
	     }else if(dataType == 'email'){
	     	if(!verifyEmail(input.value)){
				InputError(input, '"' + disName + '"必须为正确的电子邮件地址');
	     		return(false);
	     	}
	     }else if(dataType == 'maxlen'){
	     	if(getStringLen(input.value)> extra ){
				InputError(input, '"' + disName + '"最多只能包含' + extra + '个字符(其中,一个中文汉字代表2个字符)');
	     		return(false);
	     	}
	     }
		 else if(dataType == 'range')
		{     //设置了最大最小值的整数
	        if(!isNumber(input.value)){
				InputError(input, '"' + disName + '"必须为整数');
	     		return(false);
	     	}

	     	//获得允许的最大值和最小值
	     	var t_value  = eval(input.value);	
	     	
	     	//检查最小值
	     	if(min != null){
	     		if(t_value < eval(min)){
					InputError(input, '"' + disName + '"必须大于' + min);
		     		return(false);	     			
	     		}
	     	}
	     	
	     	if(max != null)
			{
	     		if(t_value > eval(max))
				{
					InputError(input, '"' + disName + '"必须小于' + max);
		     		return(false);	     			
	     		}
	     	}

	     }
     }  

  return(true);
}  
//检测单引号
function checkNotRequestChar(){
 var elements=document.all;
 var length=elements.length;
 for(var i=0;i<length;i++){
	 var ob=elements[i];
	 if(ob.type=="text"||ob.type=="textarea"){
	   if(ob.value.indexOf("'")>=0){
	   InputError(ob, '所有的输入框里都不能含有单引号');  
	   return false;
	   }
	 }
 }
 return true;
}
//检查数据类型
//@return true:符合要求 false:不符合要求
function checkForm()
{
  var inputs = document.all.tags("input");
  var dataType = null;
  var disName  = null;
  var dataCanNull = null;

  //遍历所有的INPUT
  for(var i=0;i<inputs.length;i++){
  	 //如果字段被隐藏，将不做检查
  	 if(inputs[i].style.visibility == "hidden") continue;
  	 
  	 //无效字段也不检查
  	 if(inputs[i].disabled) continue;
  	 
  	 // 字段可以为空
  	 dataCanNull = inputs[i].getAttribute("DATACANNULL");
  	 if (dataCanNull != null && dataCanNull == 'yes') {
  	 	if (inputs[i].value == "") {
	  	 	continue;
	  	}
  	 }
  	 
     dataType = inputs[i].getAttribute("DATATYPE");    //获得数据类型
     
     if(dataType!=null){
     	 //获得提示的名称
     	 disName = inputs[i].getAttribute("DISNAME");
     	 if(disName == null){
     	 	disName = inputs[i].name;
     	 }
     	
	     if(dataType == 'number'){
	     	if(!isNumber(inputs[i].value)||Trim(inputs[i].value)==''){
				InputError(inputs[i], '"' + disName + '"必须为整数');
	     		return(false);
	     	}
	     	//判断是否是非负数
	     	if((0-inputs[i].value)>0){
				InputError(inputs[i], '"' + disName + '"必须为非负');
	     		return(false);	     		
	     	}
	     }else if(dataType == 'num' && inputs[i].value!=''){
	     	if(!isNumber(inputs[i].value)){
				InputError(inputs[i], '"' + disName + '"必须为整数');
	     		return(false);
	     	}
	     	//判断是否是非负数
	     	if((0-inputs[i].value)>0){
				InputError(inputs[i], '"' + disName + '"必须为非负');
	     		return(false);	     		
	     	}
	     }else if(dataType == 'number_null' && inputs[i].value!=''){
	     	if(!isNumber(inputs[i].value)){
				InputError(inputs[i], '"' + disName + '"必须为整数');
	     		return(false);
	     	}
	     	//判断是否是非负数
	     	if((0-inputs[i].value)>0){
				InputError(inputs[i], '"' + disName + '"必须为非负');
	     		return(false);	     		
	     	}
	     }else if(dataType == 'deganumber'){
	     	if(!isNumber(inputs[i].value)||Trim(inputs[i].value)==''){
				InputError(inputs[i], '"' + disName + '"必须为整数');
	     		return(false);
	     	}
	     }else if(dataType == 'float_null' && inputs[i].value!=''){
	     	if(isNaN(inputs[i].value)||Trim(inputs[i].value)==''){
				InputError(inputs[i], '"' + disName + '"必须为数字');
	     		return(false);
	     	}	
	     	//判断是否是非负数
	     	if(0 > parseFloat(inputs[i].value)){
				InputError(inputs[i], '"' + disName + '"必须为非负');
	     		return(false);	     		
	     	}	
	     }else if(dataType == 'float'){
	     	if(isNaN(inputs[i].value)||Trim(inputs[i].value)==''){
				InputError(inputs[i], '"' + disName + '"必须为数字');
	     		return(false);
	     	}	
	     	//判断是否是非负数
	     	if(0 > parseFloat(inputs[i].value)){
				InputError(inputs[i], '"' + disName + '"必须为非负');
	     		return(false);	     		
	     	}		     	     	
	     }else if(dataType == 'degafloat'){   //可以为负数
	     	if(isNaN(inputs[i].value)||Trim(inputs[i].value)==''){
				InputError(inputs[i], '"' + disName + '"必须为数字');
	     		return(false);
	     	}	
	     }else if(dataType == 'not_null'){
	     	if(Trim(inputs[i].value) == ''){
				InputError(inputs[i], '"' + disName + '"不能为空');
	     		return(false);	     		
	     	}
	     }else if(dataType == 'indentifier'){
	     	if(Trim(inputs[i].value) == ''){
				InputError(inputs[i], '"' + disName + '"不能为空');
	     		return(false);	     		
	     	}
	     	if(!checkCharDigital(inputs[i].value)){
				InputError(inputs[i], '"' + disName + '"只能包括字母,数字,下划线');
	     		return(false);	     		
	     	}
	     }else if(dataType == 'indentifier_null'){
	     	if(!checkCharDigital(inputs[i].value)){
				InputError(inputs[i], '"' + disName + '"只能包括字母,数字,下划线');
	     		return(false);	     		
	     	}
	     }else if(dataType == 'date'){
	     	if(dateCheck(inputs[i].value) != 0){
				InputError(inputs[i], '"' + disName + '"必须为日期类型(yyyy-mm-dd)');
	     		return(false);
	     	}
	     }else if(dataType == 'time'){
	     	if(timeCheck(inputs[i].value) != 0){
				InputError(inputs[i], '"' + disName + '"必须为时间类型(hh:mm,hh:mm:ss)');
	     		return(false);
	     	}
	     }else if(dataType == 'ip'){
	     	if(!ipCheck(inputs[i].value)){
				InputError(inputs[i], '"' + disName + '"必须为IP地址类型(0.0.0.0, 255.255.255.255)');
	     		return(false);
	     	}
	     }else if(dataType == 'email'){
	     	if(!verifyEmail(inputs[i].value)){
				InputError(inputs[i], '"' + disName + '"必须为正确的电子邮件地址');
	     		return(false);
	     	}
	     }else if(dataType == 'range'){     //设置了最大最小值的整数
	        if(!isNumber(inputs[i].value)){
				InputError(inputs[i], '"' + disName + '"必须为整数');
	     		return(false);
	     	}
	     	//获得允许的最大值和最小值
	     	var minValue = inputs[i].getAttribute("min");
	     	var maxValue = inputs[i].getAttribute("max");
	     	var t_value  = eval(inputs[i].value);	
	     	
	     	//检查最小值
	     	if(minValue != null){
	     		if(t_value < eval(minValue)){
					InputError(inputs[i], '"' + disName + '"必须大于' + minValue);
		     		return(false);	     			
	     		}
	     	}
	     	
	     	if(maxValue != null){
	     		if(t_value > eval(maxValue)){
					InputError(inputs[i], '"' + disName + '"必须小于' + maxValue);
		     		return(false);	     			
	     		}
	     	}	     	
	     }
     }
  }
  
  var selects = document.all.tags('select');
  //遍历所有的select
  for(var i=0;i<selects.length;i++){
      disName = selects[i].getAttribute("DISNAME");
     if(selects[i].value=='bad'||selects[i].value=='BAD'){
     		alert(disName+'下拉列表框的值必须被选择');
     		return(false);     	
     }
  }   
  return(true);
}  

//校验IP地址格式（IPv4）
function verifyIP(ip)
{ 
	var pattern = /[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/; 
	ok = pattern.test(ip); 
	if(ok)
	{
		var tmp = ip.split(".");
		for(i=0;i<4;i++)
		{
			if(eval(tmp[i] > 255))
				return false;
		}
	}
	return ok;
}

//校验EMail格式
function verifyEmail(email) 
{ 
	var pattern = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/; 
	return pattern.test(email);
} 


// 获取所有已选择的checkbox的总数
function getNumOfSelectedCheckbox(checkboxName)
{
	var arrCheckbox = document.all(checkboxName);
	
	if (arrCheckbox == null) { return 0; }

	var nSum = 0;
	
	if (arrCheckbox.length == null) 
	{ // only one
		(arrCheckbox.checked) ? nSum ++ : 0;
	} 
	else 
	{
		for (var i = 0; i < arrCheckbox.length; i ++) 
		{
			(arrCheckbox[i].checked) ? nSum ++ : 0;
		}
	}
	
	return nSum;
}


//去除字符串头尾的空格
function Trim(str)
{
   if(str == null) return(null);
   	
   //去除头上的空格	
   var start = 0, end = 0;   //记录字符串的起始和结束位置
   var i = 0;
   while(i < str.length)
   {
   	  //判断是否为空格
   	  if(str.charAt(i) == ' ')
	  {
   	  	i++;
   	  }
	  else
	 {
   	    start = i;
   	    break;
   	  }
   }
   
   // 支除尾部空格
   i = str.length - 1;
   while(i >= 0)
   {
   	  //判断是否为空格
   	  if(str.charAt(i) == ' ') 
	  {
   	  	i--;
   	  }
	  else
	  {
   	    end = i + 1;
   	    break;
   	  }
   }   
   
   return str.substring(start,end);
}

// 检验输入的字符串是否只包含字母数字下划线,是则返回true，否则返回false
function checkCharDigital(str)
{
	var ch = '';
	if (str != null) {
    	for (var i = 0; i < str.length; i ++) {
    		ch = str.charAt(i);
    		if (!((ch >= '0' && ch <= '9') || 
    			(ch >= 'a' && ch <= 'z') ||
    			(ch >= 'A' && ch <= 'Z') ||
    			(ch == '_') )) {
    			return false;
    		}
    	}
    }

	return true;
}

//检查是否整数, 是整数就返回TRUE
function isNumber(value)
{
	if(Trim(value)!='' && !isNaN(value) && (value.indexOf('.') == -1)) {
		return(true);
	}
	
	return(false);
}

// 检查数字,包括几位的小数.
// strNum : 待检查的字符串, len : 数字的长度, 0 代表没限制, prec : 小数点的位数, -1 代表没限制, bShowMsg : 是否显示错误信息,默认为 false
// 正确返回 true, 不正确返回 false, 
function checkFloatNumber(strNum, len, prec, bShowMsg, strName)
{
    if (strName == null) {
    	strName = ""; 
    } else {
    	strNum = Trim(strNum);
    }
    
	if (strNum == "" || isNaN(strNum)) {	// 不是浮点数
		if (bShowMsg) { alert(strName + "不是数字!"); }
		return false;
	}
	
	if (len > 0 && strNum.length > len) { // 长度过长
		if (bShowMsg) { alert(strName + "数字长度超出限定位数!"); }
		return false;		
	}
	
	if (prec == -1) { return true; }
	
	var nDotPos = strNum.indexOf('.');		// 小数点的位置
	if (nDotPos == -1) { return true; }
	
	if (strNum.length - nDotPos - 1 > prec) { // 小数位数过多
		if (bShowMsg) { alert(strName + "小数位数过多!  只能 " + prec + " 位."); }
		return false;
	}
		
	return true;
}


///////////////////////////////////////////
// 日期操作
///////////////////////////////////////////


// 取当前的日期,按yyyy-mm-dd返回
function getCurrentDateStr()
{
	var nowDate = new Date();
	var strNowDate = "";
	
	strNowDate += nowDate.getYear() + "-";
	if (nowDate.getMonth() < 9) {
		strNowDate += "0" + (nowDate.getMonth() + 1) + "-";
	} else {
		strNowDate += (nowDate.getMonth() + 1) + "-";
	}
	if (nowDate.getDate() < 10) {
		strNowDate += "0" + nowDate.getDate();
	} else {
		strNowDate += nowDate.getDate();
	}
	
    return strNowDate;    
}





// IP地址的合法性检查
function ipCheck(ip)
{
	ip = Trim(ip.toString());
	var arrSect = converStrToArr(ip, '.');
	if (arrSect.length != 4) {
		return false;
	}
	
	var nSect = 0;
	for (var i = 0; i < arrSect.length; i ++) {
		if (!isNumber(arrSect[i])) {
			return false;
		}

		nSect = eval(arrSect[i]);
		if (nSect < 0 || nSect > 255) {
			return false;
		}
	}

	return true;
}


//电话号码的合法性检查
function telCheck(tel)
{
    var num= Trim(tel.toString());
    var ch = '';
    
    if (num == "")  
        return true;
        
    // 电话号码只能由以下字符组成：0..9、-、(、)
   for(var i =0;i<num.length;i++)
   {
     ch = num.substr(i, 1);   // 检查每个字符
     // 电话号码开头不能是：-、)
     if (i == 0 && ((ch == '-') || (ch == ')')))
        return false;
     // 电话号码结尾只能是：0..9
     if (i == num.length - 1 && ((ch < '0') || (ch > '9')))
        return false;
     
     if (ch < '0' || ch > '9')
     {
        if (ch != '-' && ch != '(' && ch != ')')
            return false;  
     }

   }

    return true;
}

// 手机号码检查，只能全部是数字
function mobileCheck(mbl)
{
    return postCheck(mbl);
}

// 邮政编码检查，只能全部是数字
function postCheck(pz)
{
    var num = Trim(pz.toString());
    var ch = '';
    
    if (num == "") {
        return true;
    }    
    
    for (var i = 0; i < num.length; i ++)
    {
        ch = num.substr(i, 1);   // 检查每个字符
        if (ch < '0' || ch > '9')
            return false;   
    }
    
    return true;
}


//Email的合法性检查
function emailCheck(eml)
{   var num= Trim(eml.toString());
   if(num!=""){
     if((num.indexOf("@")==-1)||(num.indexOf("@")==0)||(num.indexOf(".")==0)||(num.indexOf(".")==-1))
        {return false;}
     else  if((num.indexOf("@")==num.length-1 )||(num.indexOf(".")==num.length-1))
      {return false;}
    }
   return true;
 }
 
// HomePage的合法性检查
function homepageCheck(homepg)
{
    var num = Trim(homepg.toString());
    
    if (num != "")
    {
        if (num.indexOf(".") == -1)
            return false;   
    }
    
    return true;
} 

// 日期的合法性检查，格式只能是 yyyy-mm-dd，合法返回0，不合法返回负数
function dateCheck(dat)
{
    var num = Trim(dat.toString());    
    
    if (num != "") { // 不为空，开始检测
        if (num.length != 10)  {  // 长度不对
            return -1;
        }
        if (num.substring(4, 5) != "-" || num.substring(7, 8) != "-") { // 分隔符不对
            return -2;
        }
        if (!isNumber(num.substring(0, 4)) || !isNumber(num.substring(5, 7)) ||!isNumber(num.substring(8, 10))) {
            // 不是数字
            return -3;
        }
        if (eval(num.substring(0, 4)) < 1900) { // 年份不对
            return -4;
        }
        if (eval(num.substring(5, 7)) < 1 || eval(num.substring(5, 7)) > 12) { // 月份不对
            return -5;
        }
        if (eval(num.substring(8, 10)) < 1 || eval(num.substring(8, 10)) > 31) { // 天数不对
            return -6;
        }
        
    }
    
    return 0;
    
}

// 时间的合法性检查，格式只能是 hh:mm 或 hh:mm:ss，合法返回0，不合法返回负数
function timeCheck(tim)
{
    var num = Trim(tim.toString());    
    
    if (num != "") { // 不为空，开始检测
        if (num.length == 5) { // 检查格式为 hh:mm
            if (num.substring(2, 3) != ":") { // 分隔符不对
                return -2;
            }
            if (!isNumber(num.substring(0, 2)) || !isNumber(num.substring(3, 5))) {
                // 不是数字
                return -3;
            }
            if (eval(num.substring(0, 2)) < 0 || eval(num.substring(0, 2)) > 23) { // 小时不对
                return -4;
            }
            if (eval(num.substring(3, 5)) < 0 || eval(num.substring(3, 5)) > 59) { // 分钟不对
                return -5;
	    }
        } else if (num.length == 8) { // 检查格式为 hh:mm:ss
            if (num.substring(2, 3) != ":" || num.substring(5, 6) != ":") { // 分隔符不对
                return -2;
            }
            if (!isNumber(num.substring(0, 2)) || !isNumber(num.substring(3, 5)) || !isNumber(num.substring(6, 8))) {
                // 不是数字
                return -3;
            }
            if (eval(num.substring(0, 2)) < 0 || eval(num.substring(0, 2)) > 23) { // 小时不对
                return -4;
            }
            if (eval(num.substring(3, 5)) < 0 || eval(num.substring(3, 5)) > 59) { // 分钟不对
                return -5;
	    }
            if (eval(num.substring(6, 8)) < 0 || eval(num.substring(6, 8)) > 59) { // 秒数不对
                return -6;
	    }
        }  else {   // 长度不对
            return -1;
        }

    }
    
    return 0;

}

// 返回字符串的长度,包括中文字符的检查,一个中文字符长度为2
function getStringLen(str)
{
	if (str == null) { return 0; }
	
	var iLength = 0;

	var ch = ' ';
	var i = 0;
	while (!isNaN(ch)) {
		ch = str.charCodeAt(i);
		
		i ++;
		iLength ++;
		
		if (ch >= 0x80) { iLength ++; }
	}

	return iLength - 1;
}


function openURL(url)
{
	if(url)
		window.open(url);
}

function openMail(email)
{
	if(email)
		window.open("mailto:" + email);
}

function uploadDialog()
{
	var url = "dialogFrame.jsp?url=upload.jsp";
	var s = showModalDialog(url, "文件上传", "dialogWidth: 500px; dialogHeight: 400px; help: no; status: no");
	if(s)
		return s;
	else
		return "";
}

// 是否有效的扩展名
function IsExt(url, ext_str){
	var sTemp;
	var b=false;
	var s=ext_str.toUpperCase().split("|");
	for (var i=0;i<s.length ;i++ ){
		sTemp=url.substr(url.length-s[i].length-1);
		sTemp=sTemp.toUpperCase();
		s[i]="."+s[i];
		if (s[i]==sTemp){
			b=true;
			break;
		}
	}
	return b;
}