﻿
//js正则表达式常量-------------------------------------------------------------------------------------
//字符范围限制
var REGEXP_IS_VALID_STRFWXZ6_40 =".{6,40}" //6-40字符范围限制
//数据检验常量
var REGEXP_IS_VALID_NULL ="^[\\S]+$";//非空值校验常量
var REGEXP_IS_VALID_EMAIL ="^\\w+((-\\w+)|(\\.\\w+))*\\@\\w+((\\.|-)\\w+)*\\.\\w+$" ;//电子邮件校验常量
var REGEXP_IS_VALID_URL ="^http://([\\w-]+\\.)+[\\w-]+(//[\\w- .//?%&=]*)?"; //网址校验常量
var REGEXP_IS_VALID_ZIP ="\\d{6}"; //邮编校验常量
var REGEXP_IS_VALID_SSN ="\\d{18}|\\d{15}"; //身份证校验常量 
var REGEXP_IS_VALID_INT ="^\\d{1,}$"; //整数校验常量
var REGEXP_IS_VALID_DEMICAL ="^-?(0|\\d+)(\\.\\d+)?$"; //数值校验常量
//IP校验常量
var REGEXP_IS_VALID_IP ="^(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])$"; 
//日期校验常量
var REGEXP_IS_VALID_TIME = "^(([0-1][0-9])|(2[0-3])|([0-9])):(([0-5][0-9])|([0-9]))$";//时分格式效验 列如：15:18
var REGEXP_IS_VALID_DATE = "";
var REGEXP_IS_VALID_SHORTDATE = "^(?:(?:(?:(?:1[6-9]|[2-9]\\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))(\\//|-|\\.)(?:0?2\\1(?:29))$)|(?:(?:1[6-9]|[2-9]\\d)?\\d{2})(\\//|-|\\.)(?:(?:(?:0?[13578]|1[02])\\2(?:31))|(?:(?:0?[1,3-9]|1[0-2])\\2(29|30))|(?:(?:0?[1-9])|(?:1[0-2]))\\2(?:0?[1-9]|1\\d|2[0-8]))$";
var REGEXP_IS_VALID_FFZS ="^\\d+$";　　//非负整数（正整数 + 0） 
var REGEXP_IS_VALID_ZZS ="^[0-9]*[1-9][0-9]*$";　　//正整数 
var REGEXP_IS_VALID_FZZS ="^((-\\d+)|(0+))$";　　//非正整数（负整数 + 0） 
var REGEXP_IS_VALID_FZS ="^-[0-9]*[1-9][0-9]*$";　　//负整数 
var REGEXP_IS_VALID_ZS ="^-?\\d+$";　　　　//整数 
var REGEXP_IS_VALID_FFFDS ="^\\d+(\\.\\d+)?$";　　//非负浮点数（正浮点数 + 0） 
var REGEXP_IS_VALID_ZFDS ="^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$";　　//正浮点数 
var REGEXP_IS_VALID_FZFDS ="^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$";　　//非正浮点数（负浮点数 + 0） 
var REGEXP_IS_VALID_FFDS ="^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$";　　//负浮点数 
var REGEXP_IS_VALID_FDS ="^(-?\\d+)(\\.\\d+)?$";　　//浮点数 
var REGEXP_IS_VALID_26YWZM ="^[A-Za-z]+$";　　//由26个英文字母组成的字符串 
var REGEXP_IS_VALID_26YWZMD ="^[A-Z]+$";　　//由26个英文字母的大写组成的字符串 
var REGEXP_IS_VALID_26YWZMX ="^[a-z]+$";　　//由26个英文字母的小写组成的字符串 
var REGEXP_IS_VALID_SZ26YWZM ="^[A-Za-z0-9]+$";　　//由数字和26个英文字母组成的字符串 
var REGEXP_IS_VALID_SZYWHX ="^[A-Za-z0-9-]+$";　　//由数字和26个英文大小写字母和“-”组成的字符串
var REGEXP_IS_VALID_SZ26YWZMXHX ="^\\w+$";　　//由数字、26个英文字母或者下划线组成的字符串 
var REGEXP_IS_VALID_REURL ="^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$";　　//url 
var REGEXP_IS_VALID_COLOR ="^#[0-9a-fA-F]{6}$" //颜色值十六进格式制检查
//颜色值十进制格式检查
var REGEXP_IS_VALID_COLORSZ ="^(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\,(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\,(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])$"; 
var REGEXP_IS_VALID_zwyw ="^[\\u4e00-\\u9fa5A-Za-z0-9]+$";　　//由数字、26个英文大小写字母或者中文组成的字符串
//js正则表达式常量-------------------------------------------------------------------------------------

//正则表达式检查
//需要检查的字符串对象
//js正则表达式常量或js正则表达式
function IsInRegExp(ssvalue,jsname){
    if(jsname=="REGEXP_IS_VALID_NULL"){
        if(ssvalue.Trim()==""){return false;
        }else{return true;}
    }
    if(jsname=="REGEXP_IS_VALID_DATE"){
        if(IsDate(ssvalue)==true){return true;
        }else{return false;}
    }
    var objRegExp = eval(jsname);
    var patrn=new RegExp(objRegExp,"ig");
    return patrn.test(ssvalue);
}

//正则表达式检查
//sValue   需要检查的字符串对象
//regStr   js正则表达式
//匹配或sValue为空返回true 不匹配返回false 
function IsRegExp(sValue,regStr){
    if(sValue==""){return true;}
    var patrn=new RegExp(regStr,"ig");
    return patrn.test(sValue);
}

//补足位数
//  参数1 sst  需要补足的字符串
//  参数2 wst  位数限制数字
//  参数3 bst  补的字符
function AddIntStr(sst,wst,bst){
    if(sst.length<wst){
        for(var i=0;i<wst-sst.length;i++){ sst=bst + sst}
    }
    return sst;
}

//验证字符串是否合法并输出 合法便输出 非法便输出空或指定的字符串
//  参数1、yzStr    需要验证的字符串
//  参数2、jcStr    验证所需字符串组 例如： tjrq|id|bt|xgrq|nr
//  参数3、mrStr    默认输出值 可选项
//  参数4、fgf      分割符 可选项
function StrOfS(yzStr,jcStr){
    var mrStr="";
    var fgf="|";
    if(arguments.length>2){mrStr=arguments[2];}
    if(arguments.length>3){fgf=arguments[3];}
    jcStr=fgf + jcStr + fgf;
    if(jcStr.indexOf(fgf + yzStr + fgf)<0){return mrStr;}else{return yzStr;}
}

//判断路径文件名后缀是否在指定的后缀
//  参数1、url    文件路径
//  参数2、opt    验证所需后缀字符串组 例如： jpg|jpeg|bmp
function IsExt(url, opt){
	var sTemp;
	var b=false;
	var s=opt.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;
}

//输出IE游览器版本
function getIEVersion(){ 
    if(navigator.appName == "Microsoft Internet Explorer") { 
        if(navigator.appVersion.match(/9./i)=='9.') {return 9;}
        if(navigator.appVersion.match(/8./i)=='8.') {return 8;}
        if(navigator.appVersion.match(/7./i)=='7.') {return 7;}
        if(navigator.appVersion.match(/6./i)=='6.') {return 6;}
        if(navigator.appVersion.match(/5./i)=='5.') {return 5;}
        if(navigator.appVersion.match(/4./i)=='4.') {return 4;}
        return 3;
    } 
} 

//判断IE游览器版本
function IsTourVer(){
    if (window.XMLHttpRequest) {
        if(!window.ActiveXObject){return  "Other";}
        else{return "IE7";}
    }else{return  "IE6";}
}

//检查是否为颜色值
function IsColor(color){
	var temp=color;
	if (temp=="") return true;
	if (temp.length!=7) return false;
	return (temp.search(/\#[a-fA-F0-9]{6}/) != -1);
}

//建立下拉DIV
var setdivxyidobj=1;
function SetDivXY(divid,ckobj){
    if(setdivxyidobj!=1){
        setdivxyidobj.style.display="none";
    }
    setdivxyidobj=divid;
    var dads  = divid.style;
    var ttop  = ckobj.offsetTop;    
    var thei  = ckobj.clientHeight;  
    var tleft = ckobj.offsetLeft;    
    var ttyp  = ckobj.type;         
    while (ckobj = ckobj.offsetParent){ttop+=ckobj.offsetTop; tleft+=ckobj.offsetLeft;}
    dads.top  = (ttyp=="image")? ttop+thei : ttop+thei+6;
    dads.left = tleft;
    dads.display = '';
}

//只允许正整数数字键输入
function IsInInt(){return ((event.keyCode >= 48) && (event.keyCode <= 57));}
//只允许正浮点数字键输入
function IsInDouble(){return (((event.keyCode >= 48) && (event.keyCode <= 57)) || (event.keyCode == 46));}
//只允许整数数字键输入
function IsMInInt(){return (((event.keyCode >= 48) && (event.keyCode <= 57)) || (event.keyCode == 45));}
//只允许浮点数字键输入
function IsMInDouble(){return (((event.keyCode >= 48) && (event.keyCode <= 57)) || (event.keyCode == 46) || (event.keyCode == 45));}

//解决flash需要激活方法
//  参数1 ur    flash地址
//  参数2 w     flash宽度
//  参数3 h     flash高度
//  参数4       可省略，窗口模式：默认值 0
//                  0 Window       在 Web 页上用影片自己的矩形窗口来播放应用程序。"Window"表明此 Flash 应用程序与 HTML 层没有任何交互，并且始终位于最顶层。
//                  1 Opaque       使应用程序隐藏页面上位于它后面的所有内容。
//                  2 Transparent  使 HTML 页的背景可以透过应用程序的所有透明部分显示出来，并且可能会降低动画性能。
function StartFlash(ur,w,h){
    var FlashWmode =0;
    if(arguments.length>3){FlashWmode=arguments[3];}
    document.write('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="' + w + '" height="' + h + '"> ');
    document.write('<param name="movie" value="' + ur + '"> ');
    if(FlashWmode==1){document.write('<param name="wmode" value="opaque"> ');}
    if(FlashWmode==2){document.write('<param name="wmode" value="transparent"> ');}
    document.write('<embed src="' + ur + '" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" ');
    if(FlashWmode==1){document.write('wmode="opaque" ');}
    if(FlashWmode==2){document.write('wmode="transparent" ');}
    document.write('width="' + w + '" height="' + h + '"></embed>');
    document.write('</object> ');
}

//图片自动缩放 如果图片的宽度或高度大于指定的宽度或高度就等比列缩小宽度或高度
//  参数1 ImgD         图片对象
//  参数2 FitWidth     宽度限制
//  参数3 FitHeight    高度限制
//  调用方法：<img src="1148202890.jpg" width="0" height="0" onload="ImAutoSize(this,200,200);" style="visibility:hidden;" /> 
function ImAutoSize(ImgD,FitWidth,FitHeight) { 
    var image=new Image(); 
    image.src=ImgD.src; 
    if(image.width<=FitWidth && image.height<= FitHeight){
        ImgD.style.visibility="visible";
        return;
    }
    if(image.width>FitWidth){
        image.height=(image.height * FitWidth) / image.width;
        image.width=FitWidth;
        ImgD.width=image.width;
        ImgD.height=image.height;
    }
    if(image.height>FitHeight){
        image.width=(image.width * FitHeight) / image.height;
        image.height=FitHeight;
        ImgD.width=image.width;
        ImgD.height=image.height;
    }
    ImgD.style.visibility="visible";
}

//验证给定的日期是否合法,参数格式要求：yyyy-mm-dd[ hh:mi:ss] 可以根据情况更改正则表达式
function IsDate(oDateTime){
    //对日期格式进行验证 要求为1000-9099年  格式为 yyyy-mm-dd[ hh:mi:ss]  并且可以正常转换成正确的日期
    var pat_hd=/^(\d{1,5}-(([1-9]{1})|(0[1-9]{1})|(1[0-2]{1}))-(([1-9]{1})|(0[1-9]{1})|([1-2]{1}[0-9]{1})|(3[0-1]{1}))){1}(\s\d{1,2}:\d{1,2}:\d{1,2})?$/;
    try{
        if(!pat_hd.test(oDateTime)) throw "日期非法！";
        var arr_dt=oDateTime.split(" ");
        if(arr_dt[0]=='') throw "日期非法！";
        var oDate=arr_dt[0];
        var arr_hd=oDate.split("-");
        var dateTmp;
        dateTmp= new Date(arr_hd[0],parseFloat(arr_hd[1])-1,parseFloat(arr_hd[2]));
        if(dateTmp.getFullYear()!=parseFloat(arr_hd[0]) || dateTmp.getMonth()!=parseFloat(arr_hd[1]) -1 || dateTmp.getDate()!=parseFloat(arr_hd[2])) throw "日期非法！";
        if(arr_dt[1] && arr_dt[1]!=''){
            var oTime=arr_dt[1];
            var arr_ht=oTime.split(":");
            dateTmp.setHours(arr_ht[0],arr_ht[1],arr_ht[2]);
            if(dateTmp.getHours()!=parseFloat(arr_ht[0]) || dateTmp.getMinutes()!=parseFloat(arr_ht[1]) || dateTmp.getSeconds()!=parseFloat(arr_ht[2])) throw "日期非法！";
        }
    }catch(ex){
        if(ex.description){return false;}
        else{return false;}
    }
    return true;
} 

//返回颜色选择器选择的颜色值
// selSrc SelectColor.htm文件地址：例如 /subjs/selectcolor.htm
// oldcolor 旧的颜色值
function getSelColor(selSrc,oldcolor){
    var oldcolor = (oldcolor.indexOf('#') == 0) ? '?'+oldcolor.substr(1) : '?' + oldcolor;
    var color = showModalDialog(selSrc+oldcolor+"", "", "dialogWidth:502px; dialogHeight:388px; status:0");
    if (color != null) {return color;}
    return "";
}

//返回由时间加随及数组成的字符串
//  参数1 RStr         可选 替换关键字 如果为空，则返回由 年+月+日+时+分+秒+毫秒组成的字符串
//                          替换关键字：年：{$Year}、月: {$Month} 、日: {$Day} 、
//                          时: {$Hours}、分: {$Minutes}、秒: {$Seconds}、 毫秒: {$Ms} 、(1000000-9999999)之间随即数: {$Ran}
//  参数2 dateTime     可选 日期
function GetReDate() { 
    var Rstr=null;
    var dateTime=null;
    if(arguments.length>0){
        Rstr=arguments[0];
        if(arguments.length>1){
            dateTime=arguments[1];
        }
    }
    if(dateTime==null){
        dateTime=new Date();
    }
    if(Rstr==null){
        return  dateTime.getFullYear().toString()+AddIntStr((dateTime.getMonth()+1).toString(),2,"0")+AddIntStr(dateTime.getDate().toString(),2,"0")+AddIntStr(dateTime.getHours().toString(),2,"0")+AddIntStr(dateTime.getMinutes().toString(),2,"0")+AddIntStr(dateTime.getSeconds().toString(),2,"0")+AddIntStr(dateTime.getMilliseconds().toString(),3,"0");
    }else{
        Rstr=Rstr.replace("{$Year}", dateTime.getFullYear().toString());
        Rstr=Rstr.replace("{$Month}", AddIntStr((dateTime.getMonth()+1).toString(),2,"0"));
        Rstr=Rstr.replace("{$Day}", AddIntStr(dateTime.getDate().toString(),2,"0"));
        Rstr=Rstr.replace("{$Hours}", AddIntStr(dateTime.getHours().toString(),2,"0"));
        Rstr=Rstr.replace("{$Minutes}", AddIntStr(dateTime.getMinutes().toString(),2,"0"));
        Rstr=Rstr.replace("{$Seconds}", AddIntStr(dateTime.getSeconds().toString(),2,"0"));
        Rstr=Rstr.replace("{$Ms}", AddIntStr(dateTime.getMilliseconds().toString(),3,"0"));
        Rstr=Rstr.replace("{$Ran}", GetRandom(1000000,9999999).toString());
        return Rstr;
    }
}

//返回指定的最小整数和最大整数之间的随即数
//  参数1 minnum     最小整数
//  参数2 maxnum     最大整数
function GetRandom(minnum,maxnum){ 
    return parseInt(Math.random()*(minnum-maxnum+1)+maxnum); 
}

//返回字符串的真实长度（双字节换算为两个单字节）
//  参数1 sChars     字符串
function GetStrLen(sChars){
    return sChars.replace(/[^\x00-\xff]/g,"xx").length;
}

//截取固定长度子字符串
//  参数1 sSource   字符串
//  参数2 iLen     需要截取的长度
function MidStr(sSource, iLen){
    if(sSource.replace(/[^\x00-\xff]/g,"xx").length <= iLen){
        return sSource;
    }
    var str = "";
    var l = 0;
    var schar;
    for(var i=0; schar=sSource.charAt(i); i++){
        str += schar;
        l += (schar.match(/[^\x00-\xff]/) != null ? 2 : 1);
        if(l >= iLen){
            break;
        }
    }
    return str;
}

//去掉字符串左边空格 例子： s.LTrim()
String.prototype.LTrim=function(){return this.replace(/^(\s+)/g, "");}
//去掉字符串右边空格 例子： s.RTrim()
String.prototype.RTrim=function(){  return this.replace(/(\s+)$/g, "");}
//去掉字符串两边空格 例子： s.Trim()
String.prototype.Trim=function(){return this.LTrim().RTrim();}
//去掉字符串所有空格 例子： s.TrimAll
String.prototype.TrimAll=function(){return this.replace(/(\s)/g, "");}
// 扩展escape编码，将更多的特出码编码
String.prototype.EnUri=function(){return encodeURIComponent(this);}
// 扩展escape编码，将更多的特出码编码
String.prototype.UnHtm=function(){return unescape(this);}


//打开操作确认对话框
// tsxx 确认提示信息
function UserEnter(tsxx){
    if(confirm(tsxx)){return true;}
	else{return false;}
}

//确认关闭页面操作对话框
// tsxx 确认提示信息
function UserClose(tsxx) {
    if(confirm(tsxx)){window.close();}
}

//返回当前url内传递的参数值
// nameStr 参数名称
function QStr(nameStr){
	var qs=(location.search||"").toString().substring(1).split("&");
	for(var i=0; i<qs.length; i++){
		var j=qs[i].indexOf("=");
		var n=qs[i].substring(0, j).toLowerCase();
		if(n==nameStr.toLowerCase()) return qs[i].substring(j+1);
	}
	return "";
}

//返回指定url内传递的参数值
// urlStr Url类型字符串
// nameStr 参数名称
function QUrlStr(urlStr,nameStr){
	var qs=(urlStr.search||"").toString().substring(1).split("&");
	for(var i=0; i<qs.length; i++){
		var j=qs[i].indexOf("=");
		var n=qs[i].substring(0, j).toLowerCase();
		if(n==nameStr.toLowerCase()) return qs[i].substring(j+1);
	}
	return "";
}

//复制数据到剪切板，复制成功返回true 否则返回false
// ContentStr 需要复制的数据
function CopyText(ContentStr){
    if(ContentStr == "" ){return false;}
    else {window.clipboardData.setData("Text",ContentStr);return true;} 
}

//输出信息
// Str 需要输出的字符串
// Obj 需要输出字符串的容器
function OutText(Str,Obj){
    if(Str.Trim()!=""){alert(Str);if(Obj!=0){Obj.text(Str);}}
}

//序列字符串
// Str  需要输出的字符串
// nstr 参数名称
// val  参数值
function AddText(Str,nstr,val){
    if(Str.Trim()!=""){Str+="&";}
    return Str + nstr + "=" + val.EnUri(); 
}

//隐藏或打开
var htgltabledisplay1='start';
var htgltabledisplay2='start';
function turnit(sstable,bbtable,muurl){
    if (sstable.style.display=="none"){
        sstable.style.display="";
        htgltabledisplay1=sstable;
        htgltabledisplay2=bbtable;
        bbtable.src=muurl + "images/admin/ad_left01d.gif";
    }else{
        sstable.style.display="none"; 
        bbtable.src=muurl + "images/admin/ad_left01c.gif";
    }
}
