/*1、字符类************************************************************************************************/
//trim:去除两边空格 lTrim:去除左空格 rTrim: 去除右空格
String.prototype.trim = function(){return this.replace(/(^[\s]*)|([\s]*$)/g, "");}
String.prototype.lTrim = function(){return this.replace(/(^[\s]*)/g, "");}
String.prototype.rTrim = function(){return this.replace(/([\s]*$)/g, "");}


//校验字符串是否为空
function isEmpty(str){
    return (str.trim()=="");
}

//邮箱的判断。
function isEmail(mail){
	return(new RegExp(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/).test(mail));
}


//密码的判断。
function isPassword(str){
	return(/^(\w){6,20}$/.test(str));
}

//邮编的判断
function isPostalCode(str){
	return(/^[a-zA-Z0-9 ]{3,12}$/.test(str));
}
//字符串是否为中文
function isChinese(str){
    return (/^([\u4E00-\u9FA5]|[\uFE30-\uFFA0])*$/gi.test(str))
}

//计算字符串的长度，一个汉字两个字符
String.prototype.chineseLength = function(){return this.replace(/[^\x00-\xff]/g,"**").length;}


/*2、数字验证类************************************************************************************************/
//整数
function isInteger(str){
	return (/^(\-?)(\d+)$/.test(str));
}

//浮点数
function isFloat(str){
	return (/^(-?\d+)(\.\d+)?$/.test(str));
}

//包含数字
function inNum(str){
	return (str.match(/\d/g)!=null);
}

//包含字母
function inLetter(str){
	return (str.match(/[a-z]/ig)!=null);
}

//包含中文
function inChinese(str){
	return (str.match(/[^ -~]/g)!=null);
}

function isWeb(str){
	return (/http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w- .\/?%&=]*)?/.test(str));
}




//包含特殊字符
function inChar(str){
	return (str.match(/[^\da-zA-Z]/g)!=null);
}

//大于0的整数 （用于传来的ID的验证)自然数    
function isNatural(str){
	return (/^\d+$/.test(str));
} 

//负整数的验证
function isNegative(str){
	return (/^-\d+$/.test(str));
}       
  
      
/*3、时间类*************************************************************************************************/
//短时间，形如 (13:04:06)
function isTime(str){
	var a = str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/);
    if (a == null) return false;
	return (a[1]>24||a[3]>60||a[4]>60);
}

// 短日期，形如 (2003-12-05)
function isDate(str){
	var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/); 
	if(r==null)return false; 
	var d= new Date(r[1],r[3]-1,r[4]); 
    return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]);
}

//长时间，形如 (2003-12-05 13:04:06)
function isDateTime(str){
	var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/; 
	var r = str.match(reg); 
	if(r==null)return false; 
	var d= new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]); 
	return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]&&d.getHours()==r[5]&&d.getMinutes()==r[6]&&d.getSeconds()==r[7]);
}

//校验两个日期的先后
function DateEarlier(strStart,strEnd){
    if(isDate(strStart) == false || isDate(strEnd) == false)return false;
    var arr1 = strStart.split("-");
    var arr2 = strEnd.split("-");
    var date1 = new Date(arr1[0],parseInt(arr1[1].replace(/^0/,""),10) - 1,arr1[2]);
    var date2 = new Date(arr2[0],parseInt(arr2[1].replace(/^0/,""),10) - 1,arr2[2]);
    if(arr1[1].length == 1)arr1[1] = "0" + arr1[1];
    if(arr1[2].length == 1)arr1[2] = "0" + arr1[2];
    if(arr2[1].length == 1)arr2[1] = "0" + arr2[1];
    if(arr2[2].length == 1)arr2[2]="0" + arr2[2];
    var d1 = arr1[0] + arr1[1] + arr1[2];
    var d2 = arr2[0] + arr2[1] + arr2[2];
    return (parseInt(d1,10) < parseInt(d2,10));
}


/*4、浏览器类************************************************************************************************/
/*
  判断客户端的分辨率
      window.screen.height;  window.screen.width;
*/
//判断浏览器的类型
function browserVersion(){
	var Sys = {};
	var ua = navigator.userAgent.toLowerCase();
	var s;
	(s = ua.match(/msie ([\d.]+)/)) ? Sys.ie = s[1] :
	(s = ua.match(/firefox\/([\d.]+)/)) ? Sys.firefox = s[1] :
	(s = ua.match(/chrome\/([\d.]+)/)) ? Sys.chrome = s[1] :
	(s = ua.match(/opera.([\d.]+)/)) ? Sys.opera = s[1] :
	(s = ua.match(/version\/([\d.]+).*safari/)) ? Sys.safari = s[1] : 0;
        //以下进行测试
	if (Sys.ie) document.write('IE:' + Sys.ie);
	if (Sys.firefox) document.write('Firefox:' + Sys.firefox);
	if (Sys.chrome) document.write('Chrome:' + Sys.chrome);
	if (Sys.opera) document.write('Opera:' + Sys.opera);
	if (Sys.safari) document.write('Safari:' + Sys.safari);
}

/*5、结合类************************************************************************************************/
//根据ID获取object对象
function byId(id) {
	if (document.getElementById) {
		return document.getElementById(id);
	} else if (document.all) {
		return document.all[id];
	} else if (document.layers) {
		return document.layers[id];
	} else {
		return null;
	}
}
//该函数将返回XMLHTTP对象实例创建ajax
function createAjax() {
	var _xmlhttp;
	try { 
		_xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
	}catch (e) {
		try {
   			_xmlhttp=new XMLHttpRequest(); 
		}catch (e) {
			_xmlhttp=false; 
		}
	}
	return _xmlhttp; 
}
//显示对象
function show(str){ 
	byId(str).style.display="block";
} 
//隐藏对象
function hide(str){ 
	byId(str).style.display="none";
} 
//逐渐隐藏对象
/*<div id="div_main" style="background-color:#00F;position:absolute;width:300px;height:200px;z-index:99;"><input type="button" value="bbbb" onClick="printIt('div_main')"></div><input type="button" value="aaaa" onClick="clearIt('div_main')">*/
function clearIt(str) {
	var obj=byId(str);
	if (obj.filters.Alpha.Opacity == 100 ){
		obj.style.display="block";
	}else{
		obj.filters.Alpha.Opacity += 10;
		setTimeout("clearIt('"+str+"')",10); 
	}
}
//逐渐显示对象
function printIt(str) {
	var obj=byId(str);
	if (obj.filters.Alpha.Opacity == 0 ){
		obj.style.display="none";
	}else{
		obj.filters.Alpha.Opacity -= 10;
		setTimeout("printIt('"+str+"')",40); 
	}
}
/*6、表单*************************************************************************************************/
//获取radio控件的值
function vRadio(str){
	for (i=0;i<eval("document.all."+str).length;i++){
		if (eval("document.all."+str+"["+i+"]").checked){
			return eval("document.all."+str+"["+i+"]").value;
		} 
	}		
}
/*7、各种<object classid=>相关类，如播放器，flash与脚本互动等**************************************************/
//<OBJECT id="factory" style="DISPLAY: none" codeBase="smsx.cab#VVersion=6,3,435,20"  classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814" viewastext></OBJECT> 
//打印
function setPrintBase(headerText,footerText,rootUrl) {   
    // -- advanced features  ，未曾使用过，有待确认。   
    //factory.printing.SetMarginMeasure(2); // measure margins in inches   
    //factory.SetPageRange(false, 1, 3);// need pages from 1 to 3   
    //factory.printing.printer = "HP DeskJet 870C";   
    //factory.printing.copies = 2;   
    //factory.printing.collate = true;   
    //factory.printing.paperSize = "A4";   
    //factory.printing.paperSource = "Manual feed"   
    var header = (headerText==null||headerText=="")?'默认页眉':headerText;   
    var footer = (footerText==null||footerText=="")?'默认页角':footerText;   
	factory.printing.header = "&b"+header+"&b" ;   
	factory.printing.footer = "&b"+footer;   
	factory.printing.portrait = false;//方向   
	factory.printing.leftMargin =10.00;   
	factory.printing.topMargin =10.00;   
	factory.printing.rightMargin =10.00;   
	factory.printing.bottomMargin =10.00;   
}




/*9、文件************************************************************************************************/
// 得到文件的后缀名
function getFileSuffix(oFile){
    if(oFile == null)return null;
    var pattern = /(.*)\.(.*)$/gi;
    if(typeof(oFile) == "object"){
        if(oFile.value == null || oFile.value == "")return null;
        var arr = pattern.exec(oFile.value);
        return RegExp.$2;
    }else if(typeof(oFile) == "string"){
        var arr = pattern.exec(oFile);
        return RegExp.$2;
    }else return null;
}





/*验证数字：^[0-9]*$
验证n位的数字：^\d{n}$
验证至少n位数字：^\d{n,}$
验证m-n位的数字：^\d{m,n}$
验证零和非零开头的数字：^(0|[1-9][0-9]*)$
验证有两位小数的正实数：^[0-9]+(.[0-9]{2})?$
验证有1-3位小数的正实数：^[0-9]+(.[0-9]{1,3})?$
验证非零的正整数：^\+?[1-9][0-9]*$
验证非零的负整数：^\-[1-9][0-9]*$
验证非负整数（正整数 + 0）  ^\d+$
验证非正整数（负整数 + 0）  ^((-\d+)|(0+))$
验证长度为3的字符：^.{3}$
验证由26个英文字母组成的字符串：^[A-Za-z]+$
验证由26个大写英文字母组成的字符串：^[A-Z]+$
验证由26个小写英文字母组成的字符串：^[a-z]+$
验证由数字和26个英文字母组成的字符串：^[A-Za-z0-9]+$
验证由数字、26个英文字母或者下划线组成的字符串：^\w+$
验证用户密码:^[a-zA-Z]\w{5,17}$ 正确格式为：以字母开头，长度在6-18之间，只能包含字符、数字和下划线。
验证是否含有 ^%&',;=?$\" 等字符：[^%&',;=?$\x22]+
验证汉字：^[\u4e00-\u9fa5],{0,}$
验证Email地址：^\w+[-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
验证InternetURL：^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$ ；^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$
验证电话号码：^(\(\d{3,4}\)|\d{3,4}-)?\d{7,8}$：--正确格式为：XXXX-XXXXXXX，XXXX-XXXXXXXX，XXX-XXXXXXX，XXX-XXXXXXXX，XXXXXXX，XXXXXXXX。
验证身份证号（15位或18位数字）：^\d{15}|\d{}18$
验证一年的12个月：^(0?[1-9]|1[0-2])$ 正确格式为：“01”-“09”和“1”“12”
验证一个月的31天：^((0?[1-9])|((1|2)[0-9])|30|31)$    正确格式为：01、09和1、31。
整数：^-?\d+$
非负浮点数（正浮点数 + 0）：^\d+(\.\d+)?$
正浮点数   ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
非正浮点数（负浮点数 + 0） ^((-\d+(\.\d+)?)|(0+(\.0+)?))$
负浮点数  ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
浮点数  ^(-?\d+)(\.\d+)?$

*/
