﻿//列表的每页展示的条数
var pagesize=15;
var gridHeight=462;
var gridWidth="100%";

//定义要过滤的特殊字符
var speStr="<|>|'|;|&|#|\"|'";

/**
* 得到字符串的真实长度（双字节字符如汉字换算成两个单字节字符）.
*/
String.prototype.len = (function() {
    var re = /[^\x00-\xff]/g, xx = 'xx';

    return function() {
        return this.replace(re, xx).length;
    };
})();
String.prototype.getLength = String.prototype.len;

/**
 判断字符串是否以某个字符结尾
**/
String.prototype.endwith=function(oString){
   var reg=new RegExp(oString+"$");
   return reg.test(this);
}


/**
* 格式化字符串中的表达式：{0}、{1}、{2}...
*/
String.prototype.format = (function() {
    var re = /\{(\d+)\}/g;

    return function() {
        var args = arguments;

        if (args.length == 0) {
            return this;
        }

        return this.replace(re, function(m, i) {
            return args[i] != null ? args[i] : m;
        });
    };
})();

String.format = function(source) {
    if (source == null || source.trim() == '') {
        return '';
    }

    return String.prototype.format.apply(
		source, Array.prototype.slice.call(arguments, 1)
	);
};
/**
* 去掉字符串前后空格.
*/
String.prototype.trim = (function() {
    var re = /^\s+|\s+$/g, s = '';

    return function() {
        return this.replace(re, s);
    };
})();

/**
* 去掉字符串左边空格.
*/
String.prototype.trimLeft = (function() {
    var re = /^\s+/g, s = '';

    return function() {
        return this.replace(re, s);
    };
})();

/**
* 去掉字符串右边空格.
*/
String.prototype.trimRight = (function() {
    var re = /\s+$/g, s = '';

    return function() {
        return this.replace(re, s);
    };
})();

//去除前后空格
function Trim(Str)
{
  return Str.replace(/^[\s]+|[\s]+$/g,'');
}

/**
* 去掉字符串中的html标签.
*/
String.prototype.stripHTML = (function() {
    var re = /<(?:.|\s)*?>/g, s = '';

    return function() {
        return this.replace(re, s);
    };
})();

//获取路径地址的文件名
 function getFileName(url)
      {
        var reg=/[^\\\/]*[\\\/]+/g;
        
        url=url.replace(reg,'');
        
        return url;
      }
      


/**
* 格式化数字（默认格式为：#,###.##）.
* 
* @param num 数字
* @param iScale 精度位数
*/
Number.format = function(num, iScale) {
    var fNum = num;

    // 不是有效数字，返回该num
    if (typeof (fNum) != 'number') {
        var sNum = String(fNum);

        if (sNum.trim() == '' || isNaN(sNum)) {
            return sNum;
        }

        fNum = Number(sNum);
    }

    // 如果指定了精度
    if (typeof (iScale) == 'number') {
        fNum = fNum.toFixed(iScale);
    }
    else {
        fNum = String(fNum);
    }

    // 分开整数部分和小数部分
    var ps = fNum.split('.'),
		zs = ps[0],
		xs = (ps[1] ? '.' + ps[1] : ''),
		re = /(\d+)(\d{3})/;

    // 整数部分每3位插入一个逗号
    while (re.test(zs)) {
        zs = zs.replace(re, '$1' + ',' + '$2');
    }

    // 销毁变量
    fNum = null; ps = null; re = null;

    return zs + xs;
};

/**
* 格式化成金额格式，前缀可以指定，默认为￥符号.
* 用法：(1) Number.money(123.45, 2);
* 		(2) Number.money(123.45, '$');
* 		(3) Number.money(123.45, 2, '$');
* 
* @param num 数字
* @param iScale 精度
* @param sSymbol 金额符号
*/
Number.money = function(num, iScale, sSymbol) {
    var v;

    if (typeof (iScale) == 'number') {
        v = Number.format(num, iScale);

        if (sSymbol == null) {
            sSymbol = '￥';
        }
    }
    else {
        v = Number.format(num);
        sSymbol = iScale;
    }

    if (v.charAt(0) == '-') {
        return '-' + sSymbol + v.substring(1);
    }
    return sSymbol + v;
};

/**
* 设置浮点数的精度.
* 
* @param iScale 精度
*/
Number.prototype.setScale = function(iScale) {
    return Number(this.toFixed(iScale));
};

/**
* 1. 取子字符串.
* 2. 子字符串 + ... + title提示
* 
* @param is 开始位置（下标从0开始）
* @param ie 结束位置
* @param showTitle 是否显示title提示。true：显示、false：不显示。默认false
* @deprecated
*/
String.prototype.substring2 = function(is, ie, showTitle) {
    if (arguments.length == 0) {
        return '';
    }

    if (arguments.length == 1) {
        ie = this.length;
    }

    if (typeof (is) != 'number' ||
		typeof (ie) != 'number') {
        return '';
    }

    if (typeof (showTitle) == 'undefined' ||
		typeof (showTitle) != 'boolean') {
        showTitle = false;
    }

    if (is < 0) is = 0;
    if (is > ie) is = ie;

    if (this.len() <= ie) {
        return this;
    }

    var sSource = this.substring(is);

    var str = '', c = '', len = 0;
    var reg = /[^\x00-\xff]/;

    for (var i = 0; c = sSource.charAt(i); i++) {
        str += c;
        len += (c.match(reg) != null ? 2 : 1);

        if (len >= ie) break;
    }

    if (showTitle) {
        return '<span title="' + this + '">' + str + '...<span>';
    }

    return str;
};

 //通过ID获取对象
 function $get(id)
 {
   return document.getElementById(id);
 }
 
 String.prototype.gblen=function()
 {
   var len=0;
   for(var i=0;i<this.length;i++)
   {
     if(this.charCodeAt(i)>127||this.charCodeAt(i)==94)
       len+=2;
      else
       len++;
   }
  return len; 
 }
 
 //中文字符长度
 function gblen(str)
 {
  var len=0;
  str=Trim(str);
   for(var i=0;i<str.length;i++)
   {
     if(str.charCodeAt(i)>127||str.charCodeAt(i)==94)
       len+=2;
      else
       len++;
   }
   return len; 
 }
 
 //验证是否为图片
 function ExPic(Picstr)
  {
         var regPhoto=new RegExp("(^.jpg$)|(^.gif$)|(^.png)|(^.bmp)","i");
         Picstr=Picstr.substring(Picstr.length-4,Picstr.length);
         return regPhoto.test(Picstr);
  }
  
  //验证是否为Excel文件
  function ExExcelFile(fileUrl)
  {
    var regExFile=new RegExp("(^.xls$)","i");
    fileUrl=fileUrl.substring(fileUrl.length-4,fileUrl.length);
    return regExFile.test(fileUrl); 
  }
  
  //验证是否为数字与字符组成的字符串 
 function ExName(Namestr)
  {
     var regName=new RegExp("[A-Za-z0-9]+","i");
     return regName.test(Namestr);
 }

 //验证是否为数字
 function isNumber(str) {
     var regName = new RegExp("^[0-9]+.?[0-9]*$", "i");
     return regName.test(str);
 }

 //验证是否为正整数
 function isINumber(str) {
     var regName = new RegExp("^\\d+$", "i");
     return regName.test(str);
 } 
 
   
//是否是合法邮箱
function isEmail(s)
{
  var patrn=new RegExp(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9_]+((\.|-)[A-Za-z0-9_]+)*\.[A-Za-z0-9]+$/);
  return patrn.test(s);
}

//是否包含中文
function ExChinese(str)
{
  var regName=new RegExp("([\u4e00-\u9fa5])+","i")
  return regName.test(str);
}

function stopBubble(e) {
    if (e && e.stopPropagation) {
        e.stopPropagation();
    } else {
        window.event.cancelBubble = true;
    }
}

function isNum(e, o, c) {
    if(e.keyCode==13) return;
    if (o.createTextRange) {
        var r = document.selection.createRange();
        var n = 0;
        var r2 = o.createTextRange();
        r2.collapse();
        while(r2.compareEndPoints("StartToStart",r)<0){
            r2.moveStart("character", 1);
            n++;
        }
    }
    n = n == undefined ? -99999 : n;
    var re = [];
    re.push('/^\\d');
    re.push(n <= o.value.indexOf('.') ? '' : '(?!\\d*\\.\\d{' + (c || 2) + '}$)');
    if(window.navigator.userAgent.toLowerCase().indexOf("msie")>=1){
      re.push('|^\\.\\d+(?!\\d*\\.)/.test("' + (String.fromCharCode(e.keyCode) + o.value) + '")');
    }
    else{
      re.push('|^\\.\\d+(?!\\d*\\.)/.test("' + (String.fromCharCode(e.which) + o.value) + '")');
    }
    return eval(re.join(''));
}

//验证是否包含特殊字符
function isSpecialChar(str)
{
  var reg=new RegExp(speStr,"i")
  return reg.test(str);
}

//替换特殊字符为空
function repalceUnsafeChar(obj)
{  
 //alert(event.keyCode);
  var keyNum=event.keyCode;

    if(keyNum==37||keyNum==38||keyNum==39||keyNum==40||keyNum==13||keyNum==8)
      return;
    obj.value = obj.value.replace(/[^a-zA-Z0-9@ \。\，\/\,\.\:\_\-\u4E00-\u9FA5]*$/, '');
}

function appendZero(s){ return ("00"+s).substr((s+"").length);}

function DateFormat(dateStr)
{
  if(dateStr.trim().length==0)
    return "";
  
  var year=dateStr.split("-")[0];
  var month=appendZero(dateStr.split("-")[1]);
  var day=appendZero(dateStr.split("-")[2]);
  
  return year+"-"+month+"-"+day;
}

function OpenFullWindow(url) {
    window.open(url, "", 'height=' + screen.availHeight + ', width=' + screen.availWidth + ', top=0, left=0,toolbar=no, menubar=no, scrollbars=yes, resizable=yes, location=no, status=yes'); if (event) event.returnValue = false;
}

/**
formObj：form对象， exceptObjName： 不检查的对象名称
*/
function isFormChanged(formObj, exceptObjName) {
    if (formObj == null) formObj = document.forms[0];
    if (exceptObjName == null) exceptObjName == "";
    var selectObjs = formObj.getElementsByTagName("SELECT"); //For Select Obj
    for (var i = 0; i < selectObjs.length; i++) {
        if ((selectObjs[i].name == "") || (eval("/(^|,)" + selectObjs[i].name + "(,|$)/g").test(exceptObjName))) continue;
        if (selectObjs[i].value == selectObjs[i].defaultValue) continue;
        for (var j = 1; j < selectObjs[i].length; j++) {
            if (selectObjs[i].options[j].defaultSelected != selectObjs[i].options[j].selected)
                return true;
        }
    }

    var inputObjs = formObj.getElementsByTagName("INPUT"); //For input Obj
    for (var k = 0; k < inputObjs.length; k++) {
        if ((inputObjs[k].name == "") || (eval("/(^|,)" + inputObjs[k].name + "(,|$)/g").test(exceptObjName))) continue;
        if ((inputObjs[k].type.toUpperCase() == "TEXT") && (inputObjs[k].defaultValue != inputObjs[k].value))
            return true;

        else if (((inputObjs[k].type.toUpperCase() == "RADIO") || (inputObjs[k].type.toUpperCase() == "CHECKBOX"))
			&& (inputObjs[k].defaultChecked != inputObjs[k].checked))
            return true;

    }

    var textareaObjs = formObj.getElementsByTagName("TEXTAREA"); //For Select Obj
    for (var v = 0; v < textareaObjs.length; v++) {
        if ((textareaObjs[v].name == "") || (eval("/(^|,)" + textareaObjs[v].name + "(,|$)/g").test(exceptObjName))) continue;
        if (textareaObjs[v].defaultValue != textareaObjs[v].value)
            return true;

    }
    return false;
}



/********
日期验证
格式为：2009-01-01,
调用：isDate("2009-01-01");
如果要设置判断年段(默认为：从101年前到现在1年前)，则为
 dtCh='-';//日期分隔符
 minYear=1900;//开始年限
 maxYear=2009;//结束年限
*******/
    var dtCh='-';
    var minYear=new Date().getFullYear()-101;
    var maxYear=new Date().getFullYear()-1;
    function DaysArrary(n){
         var days=new Array();
         for(var i=1;i<=n;i++)
         {
           days[i]=31;
           if(i==4||i==6||i==9||i==11)
             days[i]=30;
           if(i==2)
             days[i]=29;
         }
        return days;
      }
      
    function stripCharInbag(s,bag){
      var str="";
      for(var i=0;i<s.length;i++)
      {
       var c=s.charAt(i);
        if(c.indexOf(bag)==-1)
          str+=c;
      }
      return str;
    }
    
     function isFeb(year){
       return (((year%4==0)&&(!(year%100==0)||(year%4==0)))?29:28)
     } 
     
     
     function isInt(s){
        for(var i=0;i<s.length;i++)
        {
          var c=s.charAt(i);
          if((c<"0")||(c>"9"))
            return false;
        }
        return true;
     }
     
     function toInt(s)
     {
       for(var i=0;i<s.length;i++)
        {
          var c=s.charAt(i);
          if((c<"0")||(c>"9"))
            return false;
        }
     }
     
     function isDate(dtStr)
     {
        var daysInMonth=DaysArrary(12);
        var pos1=dtStr.indexOf(dtCh);
        var pos2=dtStr.indexOf(dtCh,pos1+1);
        var strYear=dtStr.substring(0,pos1);
        var strMonth=dtStr.substring(pos1+1,pos2);
        var strDay=dtStr.substring(pos2+1);
        
        
        
        if(!isInt(strYear))
          return false;
        
        if(!isInt(strMonth))
          return false;
          
        if(!isInt(strDay))
         return false;
        
       
        
        year=parseFloat(strYear);
        month=parseFloat(strMonth);
        day=parseFloat(strDay);
        

        
        if(pos1==-1||pos2==-1)
          return false;
        
        if(month<1||month>12)
          return false;
          
       
         
        if(day<1||day>31||(month==2&&day>isFeb(year))||day>daysInMonth[month])
          return false;
       
        if(strYear.length!=4||year==0||year<minYear||year>maxYear)
          return false;
          
       if(dtStr.indexOf(dtCh,pos2+1)!=-1||isInt(stripCharInbag(dtStr,dtCh))==false)
        return false;
       
         return true;
      }
      
    /**********日期验证程序结束*********/

