// 为 Array 类增加一个 max 方法
Array.prototype.max = function()
{
	var i, max = this[0];
	
	for( i = 1; i < this.length; i++ )
	{
		if( max < this[i] )
		max = this[i];
	}
	
	return max;
}

//字符串trim方法
String.prototype.trim = function()
{
    // 用正则表达式将前后空格用空字符串替代。
    return this.replace( /(^\s*)|(\s*$)/g, "" );
}

// 执行正则表达式
function executeExp( re, s )
{
	return re.test( s );
}

//字母数字
function isAlphaNumeric( strValue )
{
	// 只能是 A-Z a-z 0-9 之间的字母数字 或者为空
	return executeExp( /^\w*$/gi, strValue );
}

//日期判断
function isDate( strValue )
{
	if( isEmpty( strValue ) ) return true;

	if( !executeExp( /^\d{4}-[01]?\d-[0-3]?\d$/g, strValue ) ) return false;
	
	var arr = strValue.split( "-" );
	var year = arr[0];
	var month = arr[1];
	var day = arr[2];
	
	// 1 <= 月份 <= 12，1 <= 日期 <= 31
	if( !( ( 1<= month ) && ( 12 >= month ) && ( 31 >= day ) && ( 1 <= day ) ) )
		return false;
		
	// 润年检查
	if( !( ( year % 4 ) == 0 ) && ( month == 2) && ( day == 29 ) )
		return false;
	
	// 7月以前的双月每月不超过30天
	if( ( month <= 7 ) && ( ( month % 2 ) == 0 ) && ( day >= 31 ) )
		return false;
	
	// 8月以后的单月每月不超过30天
	if( ( month >= 8) && ( ( month % 2 ) == 1) && ( day >= 31 ) )
		return false;
	
	// 2月最多29天
	if( ( month == 2) && ( day >=30 ) )
		return false;
	
	return true;
}

//Email判断
function isEmail( strValue )
{
	if( isEmpty( strValue ) ) return true;
	
	var pattern = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/;
	return executeExp( pattern, strValue );
	
}

//字符串是否为空
function isEmpty( strValue )
{
	if( strValue == "" )
		return true;
	else
		return false;
}
//字段是否为空
function checkEmpty(field)
{
	if(document.all(field)!=null)
	{
		if(document.all(field).value.trim()=="")
			return true;
	}
	return false;
}
//是否为数字
function isNumeric( strValue )
{
	return executeExp( /^\d*$/g, strValue );
}
//是否为浮点数（不带正负号）
function isNumberFloat(strValue)
{
	if( isEmpty( strValue ) ) return true;
	return executeExp(/^\d+(\.\d+)?$/, strValue);
	//return (!isNaN(parseFloat(strValue))) ? true : false; 
}
//货币
function isMoney( strValue )
{
	if( isEmpty( strValue ) ) return true;
	return executeExp( /^[+-]?\d+(,\d{3})*(\.\d+)?$/g, strValue );
}

//是否为手机号码
function isMobile( strValue )
{
	if( isEmpty( strValue ) ) return true;
	return executeExp( /^(130|131|135|136|137|138|139)\d{8}$/, strValue );
}

//是否为电话
function isPhone( strValue )
{
	if( isEmpty( strValue ) ) return true;
	return executeExp( /(^\(\d{3,5}\)\d{6,8}(-\d{2,8})?$)|(^\d+-\d+$)|(^(130|131|135|136|137|138|139)\d{8}$)/g, strValue );
}

//否邮政编码
function isPostalCode( strValue )
{
	return executeExp( /(^$)|(^\d{6}$)/gi, strValue )
}

//是否为合法的URL
function isURL( strValue )
{
	if( isEmpty( strValue ) ) return true;
	var pattern = /^(http|https|ftp):\/\/(\w+\.)+[a-z]{2,3}(\/\w+)*(\/\w+\.\w+)*(\?\w+=\w*(&\w+=\w*)*)*/gi;
	return executeExp( pattern, strValue );
}

//比较，compare(1,'<=10')将返回true，第一个参数为要比较的数字，第二个参数支持>、=、<、<=、>=
function compare(l, strParam) {
	var ml; // 要判断的长度
	var co; // 比较符

	// 判断是否为<=、>=
	if (strParam.indexOf('<=') != -1 || strParam.indexOf('>=') != -1) {
		ml = parseInt( strParam.substr( 2 ) );
		cp = strParam.substr(0, 1);
	} else {
		ml = parseInt( strParam.substr( 1 ) );
		cp = strParam.charAt(0);
	}

	switch(cp)
	{
		case '<' :
			if( l >= ml ) return false;
			break;
		case '=' :
			if( l != ml ) return false;
			break;
		case '>' :
			if( l <= ml ) return false;
			break;		
		case '<=' :
			if( l > ml ) return false;
			break;
		case '>=' :
			if( l < ml ) return false;
			break;
		default :
			return false
	}
	
	return true;
}

//检查字符的长度
function checkStrLength( strValue, strParam )
{
	//if( isEmpty( strValue ) )	return true; // 此处注释掉，空字符串同样要检查
	
	// 参数形如：L<10, L=5, L>117, L<=10, L>=10
	if( strParam.charAt( 0 ) != 'L' )	return false;
	
	return compare(strValue.length, strParam.substr(1));
}

// 给String添加getBytesLength方法，用于得到字节数。中文为2个字节
String.prototype.getBytesLength = function() {
    var cArr = this.match(/[^\x00-\xff]/ig);
    return this.length + (cArr == null ? 0 : cArr.length);
}

//检查字符的长度，使用字节数来检测，即1个中文当作2个字节
function checkStrLengthOfBytes( strValue, strParam )
{
	//if( isEmpty( strValue ) )	return true; // 此处注释掉，空字符串同样要检查
	
	// 参数形如：L<10, L=5, L>117
	if( strParam.charAt( 0 ) != 'L' )	return false;
	
	return compare(strValue.getBytesLength(), strParam.substr(1));
}

/**
 * 检查文件扩展名
 * @param fileName 文件名
 * @param allowedName 允许的扩展名，以|分开，如"jpg|gif"代表允许.jpg和.gif文件。"*"和""（空字符串）代表不允许所有。如果该文件无扩展名，返回true
 */
function checkFileExtendName(fileName, allowedName) {
	if (allowedName == null || allowedName == "" || allowedName == "*" ||
		    fileName == null || fileName == "" || fileName.indexOf(".") == -1) {
		return true;
	}

	var realFileName = "";
	if (fileName.indexOf("\\") != -1) { // 如果包含路径名
		realFileName = fileName.substr(fileName.lastIndexOf("\\") +1, fileName.length);
	} else if (fileName.indexOf("/") != -1) { // 如果包含路径名（for Unix）
		realFileName = fileName.substr(fileName.lastIndexOf("/") +1, fileName.length);
	} else { // 无路径名
	    realFileName = fileName;
	}

	if (realFileName.indexOf(".") == -1) {
		return true;
	}

	var extendName  = realFileName.substr(realFileName.lastIndexOf(".") + 1, realFileName.length);

    var extendNames = allowedName.split("|");
	//alert("文件名：" + realFileName + " 扩展名：" + extendName + " " + extendNames);

	for (var i = 0; i < extendNames.length; i++) {
		if (extendName.toLowerCase() == extendNames[i].toLowerCase()) {
			return true;
		}
	}

	return false;
}

//检查字符的长度，使用字节数来检测，即1个中文当作2个字节
function validStrLengthOfBytes( obj, strDescription, strParam) {
	var strMsg = "";
	if(!document.all(obj))
	{
		strMsg = strDescription + " 对象不存在";
		window.alert(strMsg);
		return;
	}
	var strValue = document.all(obj).value.trim();

	if(!checkStrLengthOfBytes(strValue, strParam)) {
		strMsg = '"' + strDescription + '" 长度不正确，必需为' + strParam + '（注意1个中文为2个字节长度）\n';
	}
	
	return strMsg;
}

//判断类型
function checkValid( obj, strDescription, strType)
{
	var strMsg = "";
	if(!document.all(obj))
	{
		strMsg = strDescription + " 对象不存在";
		window.alert(strMsg);
		return;
	}
	var strValue = document.all(obj).value.trim();
	
	switch( strType )
	{
		case "Date" :	// 日期
			if( !isDate( strValue ) ) 
				strMsg = '"' + strDescription + '" 格式错误，请输入正确的日期格式，如1970-1-1\n';
			break;
				
		case "AlphaNumeric" :	// 字母数字
			if( !isAlphaNumeric( strValue ) )
				strMsg = '"' + strDescription + '" 格式错误，请输入字母或数字！\n';
			break;
			
		case "NotEmpty" :	// 不许空值
			if( isEmpty( strValue ) )
				strMsg = '"' + strDescription + '" 不能为空！\n';
			break;
				
		case "Email" :	// 电子邮件
			if( !isEmail( strValue ) )
				strMsg = '"' + strDescription + '" 格式错误，请输入正确的邮件格式\n';
			break;
				
		case "Money" :	//货币
			if( !isMoney( strValue )  )
				strMsg = '"' + strDescription + '" 格式错误，请输入正确的货币格式\n';
			break;
					
		case "Numeric" :	//数字
			if( !isNumeric( strValue )  )
				strMsg = '"' + strDescription + '" 格式错误，请输入数字！\n';
			break;

		case "NumberFloat" :	//浮点数
			if( !isNumberFloat( strValue )  )
				strMsg = '"' + strDescription + '" 格式错误，请输入浮点数！\n';
			break;
		
		case "Mobile" :	// 手机号码
			if( !isMobile( strValue ) )
				strMsg = '"' + strDescription + '" 格式错误，请输入正确的手机号码\n';
			break;

		case "Phone" :	// 电话
			if( !isPhone( strValue ) )
				strMsg = '"' + strDescription + '" 格式错误，请输入正确的电话格式\n';
			break;
			
		case "PostalCode" :	// 邮政编码
			if( !isPostalCode( strValue ) )
				strMsg = '"' + strDescription + '" 格式错误，请输入6位数字！\n';
			break;
			
		case "URL" :	// URL
			if( !isURL( strValue ) )
				strMsg = '"' + strDescription + '" 格式错误，请输入正确的URL格式！\n';
			break;
				
		default :	// 其他
			strMsg = '错误的 "' + strDescription + '" 类型 "' + strType + '" 不能识别！\n';
			break;
	}
	
	return strMsg;
}


// 确认删除
function confirm_delete( url )
{
	if( confirm( "您确实要删除吗？" ) )
	{
		window.location = ( url )
	}
}
//
// 确认删除
function confirm_deleteAll( url )
{
	if( confirm( "您确定要清空日志吗？" ) )
	{
		window.location = ( url )
	}
}
// 链接转向
function goToURL( url )
{
	window.location = url;
}

//判断用户是否选择了要操作的记录，如果是
//则自动提交表单
//form:表单名称
//action:要进行的操作
//listName:多选field字称
function ListCheck(formName,action,listName,msg)
{
	var flag = 0;
	var form = document.all(formName);

	if (form==null)
		return false;

	if(action=='')
		return false;

	if(listName=='')
		return false;
	
	var field = document.all(listName);

	if(field.length == null)	//处理可能只有一条记录的Bug
	{
		if(field.checked == true)
		{
			flag=1;
		}		
	}
	else
	{
		for(i = 0; i < field.length; i++)
		{
			if (field[i].disabled != true)
			{
				if(field[i].checked == true)
				{
					flag=1;
				}
			}
		}
	}

	if(flag==1)
	{
		document.all("function").value = action;
		if (window.confirm("你确定要["+msg+"]吗？"))
		{
			form.submit();
			return true;
		}
		else
		{
			return false;
		}
	}
	else
	{
		alert("请选择记录！");
		return false;
	}

	return false;
}
function Confirm(msg)
{
	return window.confirm("你确定要" + msg + "吗？");
}

oncontextmenu="window.event.returnValue=false";