﻿//通用功能
var corefunc = {
	//是否是浏览器
    isIE:function(){
       if(navigator.userAgent.toLowerCase().indexOf('msie') != -1){
           return true;
       }else{
           return false;
       }
    },
	//根据ID获取元素s
    $:function(objid){return document.getElementById(objid);},
	//根据Name获取元素集合
    $$:function(objname){return document.getElementsByName(objname);},
    $$x:function(objname){
		return corefunc.$(objname).getElementsByTagName("INPUT");
	},
	//根据TagName返回元素集合
    $$$:function(tagName, parentNode){
		if(typeof parentNode == "undefined") parentNode = document;
		return parentNode.getElementsByTagName(tagName);
	},
    moveCenter:function(obj){
		corefunc.fixedObjectPosition(obj,5,0,0);
    },
    fixedObjectPosition:function(obj,type,xAdjust,yAdjust){
		if(arguments.length < 3){
			xAdjust = 0;
			yAdjust = 0;
		}
		if(arguments.length < 4){
			yAdjust = 0;
		}
        var dw = document.documentElement.clientWidth||document.body.clientWidth;
        var dh = document.documentElement.clientHeight||document.body.clientHeight;
        var ow = obj.clientWidth;
        var oh = obj.clientHeight;
        var st = document.documentElement.scrollTop||document.body.scrollTop;
        var sl = document.documentElement.scrollLeft||document.body.scrollLeft;
		//设置left
		switch(type){
			case 1: case 4: case 7:
				obj.style.left = xAdjust+"px";
				break;
			case 2: case 5: case 8:
				obj.style.left = (sl+(dw-ow)/2 + xAdjust)+"px";
				break;
			case 3: case 6: case 9: default:
				obj.style.left = (dw-sl-ow+xAdjust)+"px";
				break;
		}
		//设置top
		switch(type){
			case 1: case 2: case 3:
				obj.style.top  = yAdjust+"px";
				break;
			case 4: case 5: case 6:
				obj.style.top  = (st+(dh-oh)/2 + yAdjust)+"px";
				break;
			case 7: case 8: case 9: default:
				obj.style.top  = (dh+st-oh+yAdjust)+"px";
				break;
		}
    },
    trim:function(str){
		var reg = new RegExp("(^[\\s　]*)|([\\s　]*$)","gim");
        str = str.toString();
        return str.replace(reg,"");
    },
	formatString:function(str, paramsArr){
		if(arguments.length<1)return "";
		if(arguments.length<2)return str;
		for(var i=0;i<paramsArr.length;i++){
			while(str.indexOf("{"+i.toString()+"}")>=0){
				str = str.replace("{"+i.toString()+"}",paramsArr[i]);
			}
		}
		return str;
	},
    byteLength:function(str){
        str = str.toString();
        var len = str.length,code,clen=0;
        for(var i=0;i<len;i++){
            code = str.charCodeAt(i);
            clen += (code>=0&&code<=255) ? 1 : 2;
        }
        return clen;
    },
    leftByte:function(str,aimlen){
        str = str.toString();
        if(corefunc.byteLength(str)<aimlen)
        {
            return str;
        }
        var code,i,j=0;
        for(i=0;i<str.length;i++){
            code = str.charCodeAt(i);
            j += (code>=0&&code<=255) ? 1 : 2;
            if(j>=aimlen)break;
        }
        return str.substr(0,i);
    },
	regTest:function(str,reg,regOption){
		if(arguments.length<3)regOption="";
		var reg = new RegExp(reg,regOption);
		return reg.test(str);
	},
    deleteSpace:function(str){
		var reg = new RegExp("[\\s　]*","gi");
        return str.replace(reg, "");
    },
    isIdSeries:function(str){
		return corefunc.regTest(str,"^\\d+(\\,\\d+)*$","gi");
    },
    isDateString:function(str){
		return corefunc.regTest(str,"^\\d{4}\\-\\d{1,2}\\-\\d{1,2}$","gi");
    },
    isYearMonthString:function(str){
		return corefunc.regTest(str,"^\\d{4}\\-\\d{1,2}$","gi");
    },
    isMobile:function(str){
		return corefunc.regTest(str,"^1[358]\\d{9}$","gi");
    },
    isPhoneNumber:function(str){
		return corefunc.regTest(str,"^((\\+)?\\d+\\-)?(\\(\\d+\\)|\\d+\\-)?\\d+(\\-\\d+)?$","gi");
    },
    isEmail:function(str){
		return corefunc.regTest(str,"^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$","gi");
    },
    isIdCardNumber:function(str){
        str = str.toString();
        if(str.length != 18) return false;
        var reg = new RegExp("^\\d{17}[\\dx]{1}$","gi");
        if(!reg.test(str)) return false;
	    var wi = [0,7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];
	    var amt = 0;
	    var chkNo = ["1","0","X","9","8","7","6","5","4","3","2"];
	    for(var i=1;i<18;i++){
		    amt += (parseInt(str.substr(i-1,1))*wi[i]);
	    }
	    return (chkNo[amt % 11] == str.substr(str.length-1,1).toUpperCase());
    },
    isPostcode:function(str){
		return corefunc.regTest(str,"^\\d{5,6}$","gi");
    },
    isQQ:function(str, containEmail){
		if(typeof containEmail=="undefined")containEmail = false;
		if(containEmail){
			return corefunc.regTest(str,"^\\d{5,11}$","gi") || corefunc.isEmail(str);
		}else{
			return corefunc.regTest(str,"^\\d{5,11}$","gi");
		}
    },
    isNumber:function(str){
		return corefunc.regTest(str,"^(-)?\\d+(\\.\\d*)?$");
    },
	isCurrency:function(str){
		if(corefunc.isNumber(str)==false)return false;
		return corefunc.regTest(str,"^(-)?\\d+(\\.\\d{0,2})?$");
	},
    isInteger:function(str){
		return corefunc.regTest(str,"^(-)?\\d+$");
    },
    isPositiveNumber:function(str,hasZero){
        if(arguments.length<2) hasZero=true;
        if(corefunc.isNumber(str)==false){
            return false;
        }
        if(hasZero){
            return parseFloat(str)>=0;
        }else{
            return parseFloat(str)>0;
        }
    },
	setSelectIndex:function(objSelect,val){
		for(var idx=0; idx<objSelect.options.length; idx++){
			if(objSelect.options[idx].value == val){
				objSelect.selectedIndex = idx;
				break;
			}
		}
	},
	appendSelectOption:function(objSelect,text,value){
		var opt = document.createElement("OPTION");
		opt.value = value;
		opt.text = text;
		objSelect.options[objSelect.options.length] = opt;
	},
    isPositiveInteger:function(str,hasZero){
        if(arguments.length<2) hasZero=true;
        if(corefunc.isInteger(str)==false){
            return false;
        }
        if(hasZero){
            return parseInt(str)>=0;
        }else{
            return parseInt(str)>0;
        }
    },
    deleteHtmlTag:function(str){
		var reg = new RegExp("\\<[^\\<]+\\>","gim");
        str = str.toString().replace(reg,"");
        reg = new RegExp("\\&[a-z]+\\;","gim");
        str = str.toString().replace(reg,"");
        return str;
    },
	isChineseAll:function(str){
		return corefunc.regTest(str,"^[\\u4e00-\\u9fa5]*$","gim");
	},
    isLeapYear:function(year){
	    if ((year%4)==0)
	    {
		    if ((year%100==0) && (year%400)!=0) return false;
		    else return true;
	    }
	    else return false;
    },
	getDayName:function(date,lang){
		switch(arguments.length){
			case 0:date=new Date();break;
			case 1:lang=0;break;
		}
		var dayname = [["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],
						["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],
						["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]];
		if(lang<0 || lang>=dayname.length) lang=0;
		return dayname[lang][date.getDay()];
	},
	getMonthName:function(date,lang){
		switch(arguments.length){
			case 0:date=new Date();break;
			case 1:lang=0;break;
		}
		var monthname = [["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],
						["January","February","March","April","May","June","July","August","September","October","November","December"],
						["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]];
		if(lang<0 || lang>=monthname.length) lang=0;
		return monthname[lang][date.getMonth()];
	},
	hasSpecialChar:function(str){
		return corefunc.regTest(str,"[\\x00-\\x2C\\x2F\\x3A-\\x40\\x5B-\\x5E\\x60\\x7B-\\xFF]{1,}","gim");
	},
	deleteSpecialChar:function(str){
	    var reg = new RegExp("[\\x00-\\x2C\\x2F\\x3A-\\x40\\x5B-\\x5E\\x60\x7B-\\xFF]*","gim");
	    return str.replace(reg,"");
	},
	resizeImg:function(imgObj,width,height){
		imgObj.style.width = "";
		imgObj.style.height = "";
		imgObj.style.display="";
		var objW = parseInt(imgObj.clientWidth);
		var objH = parseInt(imgObj.clientHeight);
		if (objW > width || objH > height){
			var aimP = width / height;
			var objP = objW / objH;
			var p2 = 1;
			if(objP > aimP){
				p2 = width / objW;
				height = parseInt(objH * p2);
			}else if(objP < aimP){
				p2 = height / objH;
				width = parseInt(objW * p2);
			}
			imgObj.style.width = width+"px";
			imgObj.style.height = height+"px";
		}
	},
	getMaxZIndex:function(){
		var eles = document.getElementsByTagName("*");
		var maxVal = 0, eleVal=0;
		for(var idx=0;idx<eles.length;idx++){
			eleVal = parseInt(eles[idx].style.zIndex);
			if(isNaN(eleVal))continue;
			maxVal = eleVal>maxVal?eleVal:maxVal;
		}
		return maxVal;
	},
    getXMLHttpObject:function(){
        var xmlhttp = null;
        if(typeof XMLHttpRequest != "undefined"){
            xmlhttp = new XMLHttpRequest();
        }else{
            var versions = ["MSXML2.XMLHttp.5.0","MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp","Microsoft.XMLHttp"];
            for(var i = 0 ; i < versions.length; i++)
            {
                try
                {
                    xmlhttp = new ActiveXObject(versions[i]);
                    break;
                }
                catch(e)
                {
                }
            }
        }
        return xmlhttp;
    },
	addListener:function(obj,eventName,func){
		if(corefunc.isIE()){
			obj.attachEvent("on"+eventName,func);
		}else{
			obj.addEventListener(eventName,func,true);
		}
	},
	removeListener:function(obj,eventName,func){
		if(corefunc.isIE()){
			obj.detachEvent("on"+eventName,func);
		}else{
			obj.removeEventListener(eventName,func,true);
		}
	}
};

//全局遮罩层
var globalMaskDiv = {
    maskdiv:null,
    zIndex:80000,
    show:function(){
        if(globalMaskDiv.maskdiv==null){
            globalMaskDiv.maskdiv = document.createElement("DIV");
            globalMaskDiv.maskdiv.style.zIndex = globalMaskDiv.zIndex;
            globalMaskDiv.maskdiv.style.position = "absolute";
            globalMaskDiv.maskdiv.style.left = "0px";
            globalMaskDiv.maskdiv.style.top = "0px";
            globalMaskDiv.maskdiv.style.backgroundColor="#FFFFFF";
            globalMaskDiv.maskdiv.style.filter = "Alpha(opacity=50)";
			globalMaskDiv.maskdiv.style.opacity = 0.5;
			globalMaskDiv.maskdiv.className = "global-mask-div";
            if(corefunc.isIE()){
                document.body.appendChild(globalMaskDiv.maskdiv);
            }else{
                document.documentElement.appendChild(globalMaskDiv.maskdiv);
            }
        }
		globalMaskDiv.resetMask();
		corefunc.addListener(window,"propertychange",globalMaskDiv.resetMask);
		corefunc.addListener(window,"resize",globalMaskDiv.resetMask);
        globalMaskDiv.maskdiv.style.display = "";
    },
    hide:function(){
		corefunc.removeListener(window,"propertychange",globalMaskDiv.resetMask);
		corefunc.removeListener(window,"resize",globalMaskDiv.resetMask);
        globalMaskDiv.maskdiv.style.display="none";
    },
	resetMask:function(e){
		var w,h;
        if(corefunc.isIE()){
			w = document.body.scrollWidth;
			h = document.body.scrollHeight;
        }else{
			w = document.documentElement.offsetWidth;
			h = document.documentElement.scrollHeight;
        }
        globalMaskDiv.maskdiv.style.width = w + "px";
        globalMaskDiv.maskdiv.style.height = h + "px";
	}
};


