﻿//---------定义 $ 函数----------------------
var zQuery=function(ele,tagName,className){ 
    if ( window == this ) return new zQuery(ele,tagName,className); 
    if(!arr){var arr=new Array;} 
    if(ele){ 
        if(ele.constructor!=zQuery){ 
            var elem=typeof(ele)=="object"?ele:document.getElementById(ele); 
            if(!tagName){ 
                arr.push(elem); 
            }else{ 
                var tags = elem.all&&!window.opera?tagName=="*"?elem.all:elem.all.tags(tagName):elem.getElementsByTagName(tagName); 
                if(!className){ 
                    for(var i=0, l=tags.length; i<l; i++){ 
                        arr.push(tags[i]); 
                    } 
                }else{ 
                    var reClassName = RegExp("(^|\\s+)"+className+"($|\\s+)"); 
                    for(var i=0, l=tags.length; i<l; i++){ 
                        if(reClassName.test(tags[i].className)){ 
                            arr.push(tags[i]); 
                        } 
                    } 
                } 
            } 
        }else{ 
            for(var i=0, l=ele.length; i<l; i++){ 
                arr=arr.concat(Array.prototype.slice.call(zQuery(ele[i],tagName,className))); 
            } 
        } 
    } 
    return this.setArray(arr);
} 
zQuery.prototype.setArray = function( arr ) { 
    this.length = 0; 
    Array.prototype.push.apply( this, arr );
    return this; 
} 
zQuery.fn = zQuery.prototype; 
var $ = zQuery;


//------获取某一对象的绝对位置---------------------------------------
function Offset(obj){ 
    var t = obj.offsetTop; 
    var l = obj.offsetLeft; 
    var w = obj.offsetWidth; 
    var h = obj.offsetHeight; 
    //var h=obj.style.height; 
    while(obj=obj.offsetParent) 
    { 
        t += obj.offsetTop; 
        l += obj.offsetLeft; 
    }
    return { 
        top : t, 
        left : l, 
        width : w, 
        height : h 
    } 
}

//------------获取事件对象-----------------------------------------------

function getEvent(){  
     if(document.all)    return window.event; 
     func=getEvent.caller; 
     while(func != null){ 
         var arg0=func.arguments[0]; 
         if(arg0){ 
             if((arg0.constructor==Event || arg0.constructor ==MouseEvent) 
                || (typeof(arg0)=="object" && arg0.preventDefault && arg0.stopPropagation)){     
                return arg0; 
              } 
         } 
          func = func.caller; 
        } 
        return null; 
} 



//=====================================================================
//计算串长度（一个中文=2字符）
 String.prototype.uLength = function(){
    var c, b = 0, l = this.length;    
    while(l) {    
        c = this.charCodeAt(--l);    
        //b += (c < 128) ? 1 : ((c < 2048) ? 2 : ((c < 65536) ? 3 : 4)); 
        b += (c < 255) ? 1 : 2;   
    };    
    return b; 
 }
 
 //取出指定位置的子字符串（一个中文=2字符）
 String.prototype.uSubstring = function (start, end) {     
    var s = '', p = 0;            
    for (i=0;i<this.length;i++) {    
        if (start <= p && p < end) {    
            s += this.charAt(i);    
        }    
        c = this.charCodeAt(i);    
        //p += c < 128 ? 1 : (c < 2048 ? 2 : (c < 65536 ? 3 : 4));
        p += (c < 255) ? 1 : 2;  
    }    
    return s;    
}

//从指定位置开始的指定长度的子字符串（一个中文=2字符）
String.prototype.uSubstr = function (start, l) {    
    var s = '', p = 0;    
    for (i=0;i<this.length;i++) {    
        if (start <= p && p < start + l) {    
            s += this.charAt(i);    
        }    
        c = this.charCodeAt(i);    
        //p += c < 128 ? 1 : (c < 2048 ? 2 : (c < 65536 ? 3 : 4));  
        p += (c < 255) ? 1 : 2;   
    }    
    return s;    
}

//返回 String 对象内第一次出现子字符串的字符位置（一个中文=2字符）
String.prototype.uIndexOf = function (str, starIndex) {    
    var p = 0, l = str.length;    
    for (i=0;i<this.length;i++) {    
        if (this.substring(i, i + l) == str && (starIndex && p >= starIndex)) {    
            return p;    
        }    
        c = this.charCodeAt(i);    
        //p += c < 128 ? 1 : (c < 2048 ? 2 : (c < 65536 ? 3 : 4));   
        p += (c < 255) ? 1 : 2;  
    }    
    return false;    
}   


//=======================================================================

//判断指定长度的字符串是否全为数字
//len1：数字最短个数
//len2：数字最长个数
String.prototype.isNumeric = function(len1,len2){
    var str = "^[0-9]{" + len1 + "," + len2 + "}$";
    var pattern = new RegExp(str);    
    return pattern.test(this);
}

//判断字符串是否为检查邮箱地址格式
String.prototype.isEmail = function(){
    var pattern = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/;
    return pattern.test(this);
}


//--判断字符串是否为身份证号码验证
String.prototype.isIDCardNo = function() {
    //身份证正则表达式(15位) 
    var isIDCard1 = /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/; 
    //身份证正则表达式(18位) 
    var isIDCard2 = /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/; 
    //验证身份证，返回结果 
    return (isIDCard1.test(this) || isIDCard2.test(this)); 
}

//-----------------去掉左边空格------------------------
String.prototype.lTrim = function(){
    var whitespace = new String(" \t\n\r");
    var s = new String(this);
    if (whitespace.indexOf(s.charAt(0)) != -1) {
        var j=0, i = s.length;
        while (j < i && whitespace.indexOf(s.charAt(j)) != -1) {
            j++;
        }
        s = s.substring(j, i);
    }
    return s;
}

//-----------------去掉右边空格------------------------
String.prototype.rTrim = function(){
    var whitespace = new String(" \t\n\r");
    var s = new String(this);
    if (whitespace.indexOf(s.charAt(s.length-1)) != -1) {
        var i = s.length - 1;
        while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1) {
            i--;
        }
        s = s.substring(0, i+1);
    }
    return s;
}

//----------------去掉首尾空格-------------------------
String.prototype.trim = function(){
    return this.lTrim().rTrim();
    //return this.replace(/(^\s*)|(\s*$)/g, ""); 
}


//-------------------判断字符串是否为整数-------------------
String.prototype.isInt = function(index){
    var pattern = new Array();
    pattern[0] = /^\+?[0-9]*[0-9][0-9]*$/; 　　	//正整数 + 0
    pattern[1] = /^\+?[0-9]*[1-9][0-9]*$/; 　	//正整数     
    pattern[2] = /^-[0-9]*[0-9][0-9]*$/; 　		//负整数 + 0     
    pattern[3] = /^-[0-9]*[1-9][0-9]*$/;　　	//负整数     
    pattern[4] = /(^-?|^\+?)\d+$/;　　　　		//整数
    return pattern[index].test(this);
}

//--------------判断字符串是否为浮点数---------------------
String.prototype.isFloat = function(index){
    var pattern = new Array();
    pattern[0] = /^\+?\d+(\.\d+)?$/;　　		//正浮点数 + 0         
    pattern[1] = /^\+?(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/　　//正浮点数         
    pattern[2] = /^((-\d+(\.\d+)?)|(0+(\.0+)?))$/;　　        //负浮点数 + 0	
    pattern[3] = /^-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/;    //负浮点数         
    pattern[4] = /^((-?|\+?)\d+)(\.\d+)?$/;　　		//浮点数  
    return pattern[index].test(this);
}

//---------------对字符串进行XML编码-----------------
String.prototype.xmlEncode = function(){
    var str = this;
    str=str.replace("&","&amp;");
    str=str.replace("<","&lt;");
    str=str.replace(">","&gt;");
    str=str.replace("'","&apos;");
    str=str.replace("\"","&quot;");
    return str;
}

//HTML过滤函数
String.prototype.enHTML = function(){
	var text = this;
	text = text.replace(/&/g, "&amp;");
	text = text.replace(/"/g, "&quot;");
	text = text.replace(/</g, "&lt;");
	text = text.replace(/>/g, "&gt;");
	text = text.replace(/'/g, "&#146;");
	return text ;
}


//============================================================================
//选中或取消所有复选框
//form -- 表单ID
//allCheckBox -- 全选的复选框ID
function checkAll(form,allCheckBox){
	var forms=document.getElementById(form).elements;
	var tempval=document.getElementById(allCheckBox).checked
	for(var i=0;i<forms.length;i++){
		if(forms[i].type=="checkbox")forms[i].checked = tempval;
	}
}

//图片大小调整处理
//obj -- 图片对象
//maxWidth --最大宽度
//maxHeight -- 最大高度
function picSize(obj,maxWidth,maxHeight){
        if(obj.resized) return;
        img=new Image();
        img.src=obj.src;
        if (img.width>maxWidth && img.height>maxHeight){
                if (img.width/img.height>maxWidth/maxHeight) {
                        obj.height=maxWidth*img.height/img.width;
                        obj.width=maxWidth;
                }else {
                        obj.width=maxHeight*img.width/img.height;
                        obj.height=maxHeight;
                }
        }else if (img.width>maxWidth) {
                obj.height=maxWidth*img.height/img.width;
                obj.width=maxWidth;
        }else if (img.height>maxHeight) {
                obj.width=maxHeight*img.width/img.height;
                obj.height=maxHeight;
        }else{
                obj.width=img.width;
                obj.height=img.height;
        }
        obj.resized=true;
}

