
/*********************************************************
**                    UI JsUtil                        **  
*********************************************************/
// Function Name: getItem
// Function Description: 通过id获取document对象 

function getItem(id){
	return document.getElementById(id);
}


// Function Name: isValidItem
// Function Description:判断对象是否有效
function isValidItem(id, title){
	var item = getItem(id);
	if (item == 'undefined'){
		alert(title +'不存在');
		return false ;
	}
	return true ;
}
// Function Name: chkNull
// Function Description:判断是否为空
function chkNull(id , title){
	if (!isValidItem(id,title))
		return false ;
	
	var item = getItem(id);	
	if (getByteLength(item.value) == 0){
		alert(title +'不能为空');
		item.focus();
		return false ;
	}
	return true ;
}

// Function Name: chkLength
// Function Description:判断长度是否合法
function chkLength(id, title ,minLength , maxLength){
	if (!isValidItem(id,title))
		return false ;
	
	var item = getItem(id);
	if(getByteLength(item.value)==0)
		return true ;
		
	if (getByteLength(item.value)> maxLength){
		alert(title+"长度不能超过"+maxLength);
		item.focus();
		return false ;
	}
	if (getByteLength(item.value)<minLength){
		alert(title+"长度不能小于"+minLength);
		item.focus();
		return false ;
	}
	return true ;
}
/*******************************************************
**                 UI Data Validator                  **
********************************************************/

// Function Name: isPhone
// Function Description:判断长度是否合法
function isPhone(id,title){
	if (!isValidItem(id,title))
		return false ;
	var item = getItem(id);
	if (!isValidPhoneNo(item.value)){
		alert(title+'输入有误!');
		item.focus();
		return false ;
	}
	return true ;
}

// Function Name: isFax
// Function Description:判断传真号码是否有效
function isFax(id,title){

	if (!isValidItem(id,title))
		return false ;
	var item = getItem(id);
	if (!isValidPhoneNo(item.value)){
		alert(title+'输入有误!');
		item.focus();
		return false ;
	}
	return true ;
}
// Function Name: isMobilePhone
// Function Description:判断移动电话号码是否有效
function isMobilePhone(id,title){
	if (!isValidItem(id,title))
		return false ;
	var item = getItem(id);
	if (!isValidMobileNo(item.value)){
		alert(title+'输入有误!');
		item.focus();
		return false ;
	}
	return true ;
}
// Function Name: isEmail
// Function Description:判断email是否有效
function isEmail(id,title){
	if (!isValidItem(id,title))
		return false ;
	var item = getItem(id);
	if (!isValidEmail(item.value)){
		alert(title+'输入有误!');
		item.focus();
		return false ;
	}
	return true ;
}
// Function Name: isNumber
// Function Description:输入的是否有效的数字
function isNumber(id , dot){
	if (!isValidItem(id,title))
		return false ;
		
	var item = getItem(id);
	if (!isValidNumber(item.value)){
		alert(title+'输入有误!');
		item.focus();
		return false ;
	}
	var lastIndex = item.value.lastIndexOf(".");
	if ((getByteLength(item.value)-lastIndex)>dot){
		alert(title+'输入有误{最多只能有' + dot + '位小数}');
		item.focus();
		return false ;
	}
	return true ;
}

/*******************************************************
**                UI PressKey Check                  **
*******************************************************/
// Function Name: doLongPress
// Function Description:验证用户输入
function doLongPress(id , maxLength){
	if (getByteLength(getItem(id).value)>= maxLength){
		event.returnValue = false;
		return false ;
	}
	var char =String.fromCharCode(event.keyCode);
	var result=char.match(/^\d$/);
    if(result==null){
        event.returnValue = false;
		return false ;
    }
}
// Function Name: doDoublePress
// Function Description:验证用户输入
function doDoublePress(id,maxLength,dotLength){
	var item = getItem(id);
	if (getByteLength(item.value)>= maxLength){
		event.returnValue = false;
		return false ;
	}
	var lastIndex = item.value.lastIndexOf(".");
	if (lastIndex!=-1&&
		((getByteLength(item.value)-lastIndex)>dotLength)){
        event.returnValue = false;
		return false ;
	}
	
	var char =String.fromCharCode(event.keyCode);
	var result=char.match(/^(\d|\.)$/);
	if(result==null){
        event.returnValue = false;
		return false ;
   }	
}
// Function Name: doDatePress
// Function Description:验证用户输入
function doDatePress(id){
	var item = getItem(id);
	var length=getByteLength(item.value);
	if (length>= (4+1+2+1+2)){
		event.returnValue = false;
		return false ;
	}
	var result = null ;
	var char =String.fromCharCode(event.keyCode);
	
	if (length==4||length==7){
		result = char.match(/^-$/);
		if (result==null){			
        	event.returnValue = false;
			return false ;
		}
	
	}else{
		result=char.match(/^\d$/);
		if(result==null){
        	event.returnValue = false;
			return false ;
   		}
   	}	
}
// Function Name: doDatePress
// Function Description:验证用户输入
function doDateTimePress(id){
	var item = getItem(id);
	var length=getByteLength(item.value);	
	if (length >= (4+1+2+1+2+1+2+1+2+1+2)){
		event.returnValue = false;
		return false ;
	}
	var result = null ;
	var char =String.fromCharCode(event.keyCode);
	
	if (length==4||length==7){
		result = char.match(/^(-|\/)$/);
		if (result==null){			
        	event.returnValue = false;
			return false ;
		}
		return true ;
	}
	
	
	if (length==10){	
		if (trim(char)!=0){		
        	event.returnValue = false;
			return false ;
		}
		return true ;
	}
	if (length==13||length==16){
		result = char.match(/^:$/);
		if (result==null){			
        	event.returnValue = false;
			return false ;
		}
		return true ;
	}	
	
	result=char.match(/^(\d)$/);
	if(result==null){
		event.returnValue = false;
		return false ;
	}	
}
// Function Name: trim
// Function Description: 去除字符串的首尾的空格
function trim(string){
    return string.replace(/(^\s*)|(\s*$)/g, "");
}
// Function Name: ltrim
// Function Description: 去除字符串的左侧的空格
function ltrim(string){
    return string.replace(/(^\s*)/g, "");
}

// Function Name: rtrim
// Function Description: 去除字符串的右侧的空格
function rtrim(string){
    return string.replace(/(\s*$)/g, "");
}
// Function Name: len
// Function Description: 返回字符串的实际长度, 一个汉字算2个长度
function getByteLength(string ){

    return string.replace(/[^\x00-\xff]/g, "**").length
}
// Function Name: isValidDate
// Function Description: 判断输入是否是有效的短日期格式 - "YYYY-MM-DD"
function isValidDate(string)
{
    var result=string.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
    if(result==null) return false;
    var d=new Date(result[1], result[3]-1, result[4]);
    return (d.getFullYear()==result[1]&&d.getMonth()+1==result[3]&&d.getDate()==result[4]);
}

// Function Name: isValidTime
// Function Description: 判断输入是否是有效的时间格式 - "HH:MM:SS"
function isValidTime(string){
    var resule=string.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/);
    if (result==null) return false;
    if (result[1]>24 || result[3]>60 || result[4]>60) return false;
    return true;
}

// Function Name: isValidEmail
// Function Description: 判断输入是否是有效的电子邮件
function isValidEmail(string){
    var result=string.match(/^[a-zA-Z|\d][a-zA-Z|\d|_|\.|\-]*@[a-zA-Z|\d]+[a-zA-Z|\d|\.|\-]+[a-zA-Z]$/);
    if(result==null) return false;
    return true;
}

// Function Name: isValidDatetime
// Function Description: 判断输入是否是有效的长日期格式 - "YYYY-MM-DD HH:MM:SS"
function isValidDatetime(string){
    var result=string.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/);
    if(result==null) return false;
    var d= new Date(result[1], result[3]-1, result[4], result[5], result[6], result[7]);
    return (d.getFullYear()==result[1]&&(d.getMonth()+1)==result[3]&&d.getDate()==result[4]&&d.getHours()==result[5]&&d.getMinutes()==result[6]&&d.getSeconds()==result[7]);
}

// Function Name: isValidInteger
// Function Description: 判断输入是否是一个整数
function isValidInteger(string){
    var result=string.match(/^(-|\+)?\d+$/);
    if(result==null) return false;
    return true;
}

// Function Name: isValidPositiveInteger
// Function Description: 判断输入是否是一个正整数
function isValidPositiveInteger(string){
    var result=string.match(/^\d+$/);
    if(result==null) return false;
    if(parseInt(this)>0) return true;
    return false;
}

// Function Name: isValidNegativeInteger
// Function Description: 判断输入是否是一个负整数
function isValidNegativeInteger(string){
    var result=string.match(/^-\d+$/);
    if(result==null) return false;
    return true;
}

// Function Name: isValidNumber
// Function Description: 判断输入是否是一个数字
function isValidNumber(){
    return !isNaN(this);
}

// Function Name: isValidLetters
// Function Description: 判断输入是否是一个由 A-Z / a-z 组成的字符串
function isValidLetters(string){
    var result=string.match(/^[a-zA-Z]+$/);
    if(result==null) return false;
    return true;
}

// Function Name: isValidDigits
// Function Description: 判断输入是否是一个由 0-9 组成的数字
function isValidDigits(string ){
    var result=string.match(/^[1-9][0-9]+$/);
    if(result==null) return false;
    return true;
}

// Function Name: isValidAlphanumeric
// Function Description: 判断输入是否是一个由 0-9 / A-Z / a-z 组成的字符串
function isValidAlphanumeric(string){
    var result=string.match(/^[a-zA-Z0-9]+$/);
    if(result==null) return false;
    return true;
}

// Function Name: isValidString
// Function Description: 判断输入是否是一个由 0-9 / A-Z / a-z / . / _ 组成的字符串
function isValidString(string){
    var result=string.match(/^[a-zA-Z0-9\s.\-_]+$/);
    if(result==null) return false;
    return true;
}

// Function Name: isValidPostalcode
// Function Description: 判断输入是否是一个有效的邮政编码
function isValidPostalcode(string){
    var result=string.match(/(^[0-9]{6}$)/);
    if(result==null) return false;
    return true;
}

// Function Name: isValidPhoneNo
// Function Description: 判断输入是否是一个有效的电话号码
function isValidPhoneNo(string){
    var result=string.match(/(^[0-9]{3,4}\-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)/);
    if(result==null) return false;
    return true;
}

// Function Name: isValidMobileNo
// Function Description: 判断输入是否是一个有效的手机号码
function isValidMobileNo(string){
    var result=string.match(/^(\+86|86)?((13[0-9])|159)\d{8}$/);	
    if(result==null) return false;
    return true;
} 

