// JavaScript Document
//2010/08/25 leejq0428@163.com


var isBrowser = function(vision) {
    if (typeof vision == 'undefiend')
        return false;
    vision = vision.toLowerCase();
    var browserInfo = navigator.userAgent.toLowerCase();
    var regs = {
        ie: /msie ([\d\.]+)/,
        firefox: /firefox\/([\d\.]+)/,
        chrome: /chrome\/([\d\.]+)/,
        opera: /opera\/([\d\.]+)/,
        safari: /version\/([\d\.]+).*safari/
    };

    if (/ie(\d*)/.test(vision)) {
        var ieV = RegExp["$1"];
        if (!regs.ie.test(browserInfo)) {
            return false;
        }
        return (ieV != "") ? ieV == RegExp["$1"].split(".")[0] : true;
        /*switch (ieV) {
        case "6":
        return (!window.XMLHttpRequest) ? true : false;
        break;
        case "8":
        return (document.documentMode) ? true : false;
        break;
        case "7":
        return (window.XMLHttpRequest && !document.documentMode) ? true : false;
        break;
        case "":
        return true;
        break;
        }*/
    }
    else {
        return (regs[vision]) ? regs[vision].test(browserInfo) : false;
    }
}

Date.prototype.diffDay = function(){
	if(arguments.length ==0 ){
		return;
	}
	
	var compareObj;
	if (arguments.length == 1) {
		try{
			compareObj = new Date(arguments[0].getFullYear(), arguments[0].getMonth(), arguments[0].getDate());
		}
		catch(e){
			return;
		}
	}
	else if(arguments.length == 3){
		try{
			compareObj = new Date(parseInt(arguments[0]), parseInt(arguments[1].replace(/^0/,""))-1, parseInt(arguments[2].replace(/^0/,"")));
		}
		catch(e){
			return;
		}
	}
	else{
		return;
	}
	compareObj.setHours(0);
	compareObj.setMinutes(0);
	compareObj.setSeconds(0);
	compareObj.setMilliseconds(0);
	
	var original = new Date(this.getFullYear(), this.getMonth(), this.getDate());

	var returnDiffDay= (compareObj.getTime()-original.getTime())/86400000;
	return returnDiffDay;
};

Date.prototype.addYear = function() {
    if (arguments.length == 0) {
        return this;
    }
    var d = parseInt(arguments[0]);
    if (!d) return;
    this.setFullYear(this.getFullYear() + d);
    return this;
};

Date.prototype.addMonth = function() {
    if (arguments.length == 0) {
        return this;
    }
    var d = parseInt(arguments[0]);
    if (!d) return;
    if (d >= 12) {
        d++;
        var y = (d - d % 12) / 12;
        d %= 12;
        d--;
        this.addYear(y);
    }
    this.setMonth(this.getMonth() + d);
    return this;
};

Date.prototype.addDay = function() {
    if (arguments.length == 0) {
        return this;
    }
    var d = parseInt(arguments[0]);
    if (!d) return;
    var millisec = this.getTime() + 86400000 * d;
    this.setTime(millisec);
    return this;
};


 


 

Date.prototype.toMyDateString = function(){
	var y = this.getFullYear();
	var m = ("0" + (parseInt(this.getMonth())+1)).toString().right(2);
	var d = ("0" + this.getDate()).toString().right(2);
	return y + "-" + m + "-" + d;
};
var aryWeekCN = new Array("星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六");
Date.prototype.getWeekCn = function() {
    var weekIndex = this.getDay();
    return aryWeekCN[weekIndex];
};


String.prototype.trim = function(){
	var result = this.replace(/(^\s*)|(\s*$)/g, "");
	return result; 
};

String.prototype.left = function(){
	if(arguments.length ==0 || arguments.length >1){
		return this;
	}
	
	var c = parseInt(arguments[0]);
	if(! c){
		return this;
	}
	
	var l = this.length;
	if(c > l){
		return this;
	}
	
	var result = "";
	for(var i=0;i<c;i++){
		result += this.charAt(i);
	}

	return result; 
};

String.prototype.right = function(){
	if(arguments.length ==0 || arguments.length >1){
		return this;
	}
	
	var c = parseInt(arguments[0]);
	if(! c){
		return this;
	}
	
	var l = this.length;
	if(c > l){
		return this;
	}
	
	var result = "";
	for(var i=l-c;i<l;i++){
		result += this.charAt(i);
	}
	return result; 
};

String.prototype.replaceAll  = function(s1,s2){  
	return this.replace(new RegExp(s1,"gm"),s2);   
} ;

String.prototype.toDate = function() {
    if (this.trim() == "") {
        return;
    }
    var ymd = this.split("-");
    if (ymd.length != 3) {
        return null;
    }

    var y = parseInt(ymd[0]);
    var m = parseInt(ymd[1].replace(/^0/, "")) - 1;
    var d = parseInt(ymd[2].replace(/^0/, ""));
    try {
        var returnDate = new Date(y, m, d);
    }
    catch (e) {
        return;
    }
    return returnDate;
};

function StringBuffer() {
    this._strings_ = new Array;
}
StringBuffer.prototype.append = function(str) {
    this._strings_.push((arguments.length == 0) ? "" : str);
    return this;
}
StringBuffer.prototype.toString = function(c) {
    return this._strings_.join((arguments.length == 0) ? "" : c);
}


Array.prototype.toJoin = function(spr, fcn) {
    if (arguments.length == 0) {
        return this.join("");
    }
    else if (arguments.length == 1) {
        return this.join(spr.toString());
    }
    else if (arguments.length == 2 && typeof fcn == "function") {
        var strs = [];
        for (var i = 0; i < this.length; i++) {
            strs.push(fcn(this[i]));
        }
        return strs.join(spr.toString());
    }
}

/*
Object.prototype.toJSON = function(){   
    var json = [];   
    for(var i in this){   
        if(!this.hasOwnProperty(i)) continue;   
        //if(typeof this[i] == "function") continue;   
        json.push(   
            i.toJSON() + " : " +   
            ((this[i] != null) ? this[i].toJSON() : "null")   
        )   
    }   
    return "{" + json.join(",") + "}";   
}   
Array.prototype.toJSON = function(){   
    for(var i=0,json=[];i<this.length;i++)   
        json[i] = (this[i] != null) ? this[i].toJSON() : "null";   
    return "["+json.join(", ")+"]"  
} 
*/
function getStyle(elem,name){
	if(elem.style[name])
		return elem.style[name];
	else if(elem.currentStyle)
		return elem.currentStyle[name];
	else if(document.defaultView && document.defaultView.getComputedStyle){
		name = name.replace(/([A-Z])/g,"-$1");
		name = name.toLowerCase();
		
		var s = document.defaultView.getComputedStyle(elem,"");
		return s && s.getPropertyValue(name);
	}else
	 return null;
}
function hasClassName(obj, classNameStr) {
    var r = new RegExp("^" + classNameStr + "|\\s+" + classNameStr + "\\s+|" + classNameStr + "$", "g");
    return r.test(obj.className);
}
function removeClassName(obj, classNameStr) {
    var returnClass = obj.className.replace(new RegExp("^" + classNameStr + "|\\s+" + classNameStr + "(?=\\s)|" + classNameStr + "$", "g"), "");
    obj.className = returnClass;
    return returnClass;
}

function addClassName(obj, classNameStr) {
    if (hasClassName(obj, classNameStr)) {
        return obj.className;
    }
    else {
        var returnClass = (obj.className + " " + classNameStr).trim();
        obj.className = returnClass;
        return returnClass;
    }
}




//定位（被定位对象,参照物对象,x偏移值,y偏移值,水平方向,垂直方向,是否根据屏幕情况自动调整）
function fixTo(obj, targetObj, offsetX, offsetY, align, valign, isAuto) {
    var _isAuto = (arguments.length > 6) ? isAuto : true;
    var getX = function(r) {
        var left = 0, box = null;
        if (r.getBoundingClientRect) {
            box = r.getBoundingClientRect();
            left = box.left + Math.max(document.documentElement.scrollLeft, document.body.scrollLeft);
        }
        return left;
    };
    var getY = function(r) {
        var top = 0, box = null;
        if (r.getBoundingClientRect) {
            box = r.getBoundingClientRect();
            top = box.top + Math.max(document.documentElement.scrollTop, document.body.scrollTop);
        }
        return top;
    };
    var getCX = function() { return document.documentElement.clientWidth || document.body.clientWidth; };
    var getSX = function() { return document.documentElement.scrollLeft || document.body.scrollLeft; };
    var getCY = function() { return document.documentElement.clientHeight || document.body.clientHeight; };
    var getSY = function() { return document.documentElement.scrollTop || document.body.scrollTop; };
    var getPaddingBorder = function(o, WorH) {
        var returnVal = 0;
        var names = {
            W: ["paddingLeft", "paddingRight", "borderLeftWidth", "borderRightWidth"],
            H: ["paddingTop", "paddingBottom", "borderTopWidth", "borderBottomWidth"]
        };
        var nums = new Array();
        for (var i = 0; i < names[WorH].length; i++) {
            if (o.currentStyle) {
                nums.push(o.currentStyle[names[WorH][i]]);
            }
            else {
                var currentStyleObj = document.defaultView.getComputedStyle(o, null);
                nums.push((currentStyleObj != null) ? currentStyleObj[names[WorH][i]] : 0);
            }
        }
        nums.join("").replace(/(\d+)/g, function(n) { returnVal += parseInt(n); });
        return returnVal;
    };

    var intReg = /^\\d+$/;

    var pageX = getX(targetObj), pageY = getY(targetObj);

    var ow = $(obj).width() + getPaddingBorder(obj, "W"), oh = $(obj).height() + getPaddingBorder(obj, "H");
    var tw = targetObj.offsetWidth, th = targetObj.offsetHeight;
    var OSX = 0, OSY = 0;

    if (arguments.length < 3) {
    }
    else {
        if (!isNaN(offsetX) || intReg.test(offsetX)) {
            OSX = parseInt(offsetX);
        }
        else {
            if (arguments.length >= 5 && arguments[4] == "right") {
                OSX -= ow;
            }
            var XToward_val = offsetX.split(" ");
            if (XToward_val[0].toLowerCase() == "right") {
                OSX += tw;
            }
            else if (XToward_val[0].toLowerCase() == "left") {

            }
            OSX += (XToward_val.length < 2 || isNaN(XToward_val[1])) ? 0 : parseInt(XToward_val[1]);
        }

        if (arguments.length > 3) {
            if (!isNaN(offsetY) || intReg.test(offsetY)) {
                OSY = parseInt(offsetY);
            }
            else {
                if (arguments.length >= 6 && arguments[5] == "bottom") {
                    OSY -= oh;
                }
                var YToward_val = offsetY.split(" ");
                if (YToward_val[0].toLowerCase() == "bottom") {
                    OSY += th;
                }
                else if (YToward_val[0].toLowerCase() == "top") {
                }
                OSY += (YToward_val.length < 2 || isNaN(YToward_val[1])) ? 0 : parseInt(YToward_val[1]);
            }
        }
    }

    var returnXY = new Array();
    if (_isAuto && (pageX + ow + OSX) > (getCX() + getSX())) {
        returnXY.push((pageX + tw - OSX - ow).toString());
        obj.style.left = returnXY[0] + "px";
    }
    else {
        returnXY.push((pageX + OSX).toString());
        obj.style.left = returnXY[0] + "px";
    }

    if (_isAuto && (pageY + oh + OSY) > (getCY() + getSY())) {
        returnXY.push((pageY + th - OSY - oh).toString());
        obj.style.top = returnXY[1] + "px";
    }
    else {
        returnXY.push((pageY + OSY).toString());
        obj.style.top = returnXY[1] + "px";
    }
    return returnXY;
}

/*function getEvent() {
    if (document.all) {//如果是ie
        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;
}*/

function getEvent() {
    if (window.event) {
        return window.event;
    }
    else {
        return getEvent.caller.arguments[0];
    }
}
function getTarget() {
    return (window.event) ? window.event.srcElement : getTarget.caller.arguments[0].target;
}



//日历，基于jQuery UI 1.8.4
var MyDatepickerInitial = function() {

    var regularDate = /^(?:(?:19|20)\d{2}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|02-(?:0[1-9]|[1]\d|2[0-8]))|(?:19|20)(?:0[48]|[2468][048]|[13579][26])-02-29)$/;

    $(".MyDatepicker").each(function() {
        var $this = $(this);
        var pickerSetting = {
            dateFormat: 'yy-mm-dd',
            numberOfMonths: 1,
            stepMonths: 1,
            minDate: 0,
            maxDate: '',
            clearText: '清除',
            closeText: '关闭',
            prevText: '往前翻',
            nextText: '往后翻',
            dayNamesMin: ["日", "一", "二", "三", "四", "五", "六"],
            monthNames: ["1 月", "2 月", "3 月", "4 月", "5 月", "6 月", "7 月", "8 月", "9 月", "10 月", "11 月", "12 月"],
            showAnim: 'show'
        };

        var regularNum = /^[1-9]$/;
        var monthsVal = $this.attr("months");
        if (regularNum.test(monthsVal)) {
            pickerSetting.numberOfMonths = parseInt(monthsVal);
        }

        var stepMonthVal = $this.attr("stepMonth");
        if (regularNum.test(stepMonthVal)) {
            pickerSetting.stepMonths = parseInt(stepMonthVal);
        }

        var minDateVal = $this.attr("minDate");
        if (minDateVal != "" && minDateVal != undefined) {
            pickerSetting.minDate = minDateVal;
        }
        var maxDateVal = $this.attr("maxDate");
        if (maxDateVal != "" && maxDateVal != undefined) {
            pickerSetting.maxDate = maxDateVal;
        }
        if (isBrowser("ie6")) {
            pickerSetting.showAnim = "";
        }

        $this.datepicker(pickerSetting);

        var $minTo, minToStr = $this.attr("minTo"), minDelay = 0;
        if (/^(\S+)\s([-\+]?\d+)$/.test(minToStr)) {
            minDelay = RegExp["$2"];
            $minTo = $("#" + RegExp["$1"]);
        }
        else {
            $minTo = $("#" + minToStr);
        }
        if ($minTo.length == 1) {
            /*if(regularDate.test($minTo.val())){
            $this.datepicker('option',{minDate:$minTo.val()});	
            }*/

            $this.datepicker('option', { beforeShow: function() {
                //$this[0].focus();
                var minDateVal = $this.attr("minDate");
                var minToVal = $minTo.val().trim();
                if (minToVal == "" && (minDateVal == "" || minDateVal == undefined)) {
                    $(this).datepicker('option', { minDate: "" });
                }
                else if (regularDate.test(minToVal)) {
                    if (minDelay != 0) {
                        minToVal = minToVal.toDate().addDay(minDelay).toMyDateString();
                    }
                    $(this).datepicker('option', { minDate: minToVal });
                }
                else {
                    if (minDateVal != "" && minDateVal != undefined) {
                        $(this).datepicker('option', { minDate: minDateVal });
                    }

                }

            }
            });
        }

        var $maxTo, maxToStr = $this.attr("maxTo"), maxDelay = 0;
        if (/^(\S+)\s([-\+]?\d+)$/.test(maxToStr)) {
            maxDelay = RegExp["$2"];
            $maxTo = $("#" + RegExp["$1"]);
        }
        else {
            $maxTo = $("#" + maxToStr);
        }
        if ($maxTo.length == 1) {
            /*if(regularDate.test($maxTo.val())){
            $this.datepicker('option',{maxDate:$maxTo.val()});	
            }*/

            $this.datepicker('option', { beforeShow: function() {
                //$this[0].focus();
                var maxDateVal = $this.attr("maxDate");
                var maxToVal = $maxTo.val().trim();
                if (maxToVal == "" && (maxDateVal == "" || maxDateVal == undefined)) {
                    $(this).datepicker('option', { maxDate: "" });
                }
                else if (regularDate.test(maxToVal)) {
                    if (maxDelay != 0) {
                        maxToVal = maxToVal.toDate().addDay(maxDelay).toMyDateString();
                    }
                    $this.datepicker('option', { maxDate: maxToVal });
                }
                else {
                    if (maxDateVal != "" && maxDateVal != undefined) {
                        $(this).datepicker('option', { maxDate: maxDateVal });
                    }
                }

            }
            });
        }

        /*		var $turnTo = $("#" + $this.attr("turnTo"));
        if($turnTo.length > 0 ){
        $this.datepicker('option',{onSelect: function(){$this[0].focus();}});
        }*/

    });
};

var getRandomStr = function(l) {
    if (parseInt(l) < 1) {
        return "";
    }
    var r = "";
    for (var i = 0; i < l; i++) {
        r += Math.random().toString().charAt(2);
    }
    return r;
};



var addEvent = function(eventName, tag, fcn, bln) {
    var blnVal = (typeof arguments[3] == "boolean") ? bln : true;
    var $tag = (tag instanceof jQuery) ? tag : $(tag);
    var eventNames = (/,/.test(eventName)) ? eventName.split(",") : [eventName];
    $tag.each(function(i) {
        for (var j = 0; j < eventNames.length; j++) {
            if (this.addEventListener) {
                this.addEventListener(eventNames[j], fcn, blnVal);
            } else {//IE不支持事件捕获
                this.attachEvent("on" + eventNames[j], fcn);
            }
        }

    });
};
var removeEvent = function(eventName, tag, fcn, bln) {
    var blnVal = (typeof arguments[3] == "boolean") ? bln : true;
    var $tag = (tag instanceof jQuery) ? tag : $(tag);
    var eventNames = (/,/.test(eventName)) ? eventName.split(",") : [eventName];
    $tag.each(function(i) {
        for (var j = 0; j < eventNames.length; j++) {
            if (this.removeEventListener) {
                this.removeEventListener(eventNames[j], fcn, blnVal);
            }
            else {//IE不支持事件捕获
                this.detachEvent("on" + eventNames[j], fcn);
            }
        }
    });
}



var Tip = {
    tipMission: null,
    tipTag: null,
    tipTxt: "",
    fixTag: null,
    setTipElement: function(expr) {
        if (typeof expr == "string") {
            this.tipTag = $(expr).appendTo("body")[0];
        }
        else if (expr.nodeType == 1) {
            this.tipTag = expr;
        }
    },
    _position: {
        offsetX: "left",
        offsetY: "top +1",
        align: "",
        valign: "bottom"
    },
    Position: function() {
        if (arguments.length == 4) {
            this._position.offsetX = arguments[0];
            this._position.offsetY = arguments[1];
            this._position.align = arguments[2];
            this._position.valign = arguments[3];
        }
        return this;
    },
    display: function(tag, msg, expr) {

        if (arguments.length == 3 && $(expr).length == 1) {
            this.tipTag = $(expr)[0];
        } else if (!this.tipTag) {
            this.tipTag = $("<div id=\"defaultTip\"></div>").appendTo("body")[0];
        }

        if (this.tipMission) {
            clearTimeout(this.tipMission);
            this.tipTag.style.display = "none";
        }
        this.tipTag.innerHTML = (!msg || msg.trim() == "") ? this.tipTxt : msg;
        fixTo(this.tipTag, tag, this._position.offsetX, this._position.offsetY, this._position.align, this._position.valign);
        this.fixTag = tag;

        var currentObj = this;
        $(this.tipTag).stop(true).slideDown("fast", function() {
            var $this = $(this);
            /*currentObj.tipMission = setTimeout(function() {
            $this.fadeOut("normal");
            }, 2000);*/
        });
    },
    hidden: function(fcn) {
        $(this.tipTag).stop(true).slideUp("fast", function() {
            $(this).removeAttr("style");
            this.style.display = "none";
            if (fcn != undefined) {
                fcn();
            }
        });
    }
};


var Validate = {
    validateRegulars: {
        date: /^(?:(?:19|20)\d{2}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|02-(?:0[1-9]|[1]\d|2[0-8]))|(?:19|20)(?:0[48]|[2468][048]|[13579][26])-02-29)$/,
        number: /^[\d]+$/,
        phone: /^((0\d{2,3}-)?\d{7,8}|(861|1)\d{10})$/,
        mobile: /^(861|1)\d{10}$/,
        email: /^(?:\w+\.?)*\w+@(?:\w+\.?)*\w+$/,
        wardENCN: /^[\u4e00-\u9fa5A-Za-z\.\s]+$/,
        ward: /^[A-Za-z\.\s]+$/,
        wardCN: /^[\u4e00-\u9fa5]+$/
    },
    defaultEmptyMsg: "必填项缺省",
    defaultErrMsg: "输入格式错误",
    getValidate: function(rangeExpr) {
        var $tag = $(rangeExpr).filter(":input");
        if ($tag.length != 1) {
            return false;
        }
        var tag = $tag[0];
        if ($tag.attr("necessary") == "true") {
            if (tag.value.trim() == "") {
                var emptyMsg = $tag.attr("emptyMsg");
                Tip.display(tag, ((!emptyMsg || emptyMsg.trim() == "") ? this.defaultEmptyMsg : emptyMsg));
                this.setErrorStyle(tag);
                return false;
            }
        }
        var attrReg = ($tag.attr("reg")) ? $tag.attr("reg").trim() : "";
        if (attrReg != "" && tag.value.trim() != "") {
            var r;
            if (/#(\S+)/.test(attrReg)) {
                r = this.validateRegulars[RegExp["$1"]];
            }
            else {
                var regStrs = attrReg.split(" ");
                r = (regStrs.length == 2) ? new RegExp(regStrs[0], regStrs[1]) : new RegExp(regStrs[0]);
            }

            if (r && r.test(tag.value.trim())) {
            }
            else {
                var errMsg = $tag.attr("errMsg");
                Tip.display(tag, ((!errMsg || errMsg.trim() == "") ? this.defaultErrMsg : errMsg));
                this.setErrorStyle(tag);
                return false;
            }
        }

        $tag.removeClass(this.errorClassName);
        return true;
    },
    getValidates: function(rangeExpr) {
        var returnVal = true;
        var currentObj = this;
        rangeExpr = (arguments.length == 0 || ((typeof rangeExpr == "string") ? rangeExpr.trim() == "" : !rangeExpr)) ? document.forms[0] : ((rangeExpr instanceof jQuery) ? rangeExpr[0] : rangeExpr);
        $(rangeExpr).find(":input[necessary=true],:input[reg]").not(":disabled,:hidden").each(function() {
            returnVal = currentObj.getValidate(this);
            if (!returnVal) {
                this.focus();
                currentObj.bindBlur(this);
                return returnVal;
            }
        });
        return returnVal;
    },
    errorClassName: "inputError",
    setErrorStyle: function(tag) {
        tag = (tag instanceof jQuery) ? tag : $(tag);
        if (!tag.hasClass(this.errorClassName)) {
            tag.addClass(this.errorClassName);
        }
    },
    bindBlur: function(tag) {
        tag = (tag instanceof jQuery) ? tag[0] : tag;
        var currentObj = this;
        var fnBlur = function() {
            setTimeout(function() {
                if (currentObj.getValidate(tag)) {
                    if (tag == Tip.fixTag) {
                        Tip.hidden(function() {
                            $(tag).removeClass(currentObj.errorClassName);
                        });
                    }

                    removeEvent("blur", tag, fnBlur);
                }
            }, 200);

        };
        addEvent("blur", tag, fnBlur);

    }
};

function btnClassChange(target, classDefault, classOver, classClick) {

    if (target == undefined || !target.nodeType || target.nodeType != 1) {
        return;
    }
    var AL = arguments.length;
    if (AL < 2) return;
    var eventNames = ["mouseout", "mouseup,mouseover", "mousedown"];
    var classNames = new Array();
    var regStrs = new Array();
    for (var i = 0; i < eventNames.length; i++) {
        if (i + 1 < AL && arguments[i + 1].trim() != "") {
            classNames.push(arguments[i + 1]);
            regStrs.push("(?:\\s*" + arguments[i + 1] + ")");
            continue;
        }
        classNames.push("");
    }
    var classRegStr = regStrs.join("|");

    for (var i = 0; i < classNames.length; i++) {
        var fcn = function() {
            var o = getTarget();
            o.className = (o.className.trim() == "") ? classNames[i] : (o.className.replace(new RegExp(classRegStr, "g"), "") + " " + classNames[i]).trim();
        };
        eval("addEvent(\"" + eventNames[i] + "\", target," + fcn.toString().replace(/classNames\[i\]/g, "\"" + classNames[i] + "\"") + ");");
    }
}

function getDomainPath() {
    if (getDomainPath.result == null) {
        var returnStr = "";
        //returnStr = ["domain", "=", window.location.hostname, ";path", "=", window.location.pathname.toString().replace(/^(\/[^\/]+).*$/, function(_,p) { return p; })].join("");
        returnStr = ["path", "=", window.location.pathname.toString().replace(/^(\/[^\/]+).*$/, function(_, p) { return p; })].join("");
        getDomainPath.result = returnStr;
    }
    return getDomainPath.result;
}

//function setCookie(name, val) {
//    var cookieSB = new StringBuffer();
//    cookieSB.append([name, "=", escape(val)].join(""));
//    cookieSB.append(getDomainPath());
//    document.cookie = cookieSB.toString("; ");
//}

//function getCookie(name) {
//    var val = null;
//    document.cookie.replace(new RegExp("(?:^|;)\\s*" + name + "=([^;]+)", "g"), function(_, v) {
//        val = v;
//    });
//    return (val == null) ? val : unescape(val);
//}

//function removeCookie(name) {
//    var pastDate = new Date();
//    pastDate.setTime(pastDate.getTime() - 10000);
//    if (getCookie(name) == null) {
//        return;
//    }
//    document.cookie = [name, "=0", "; ", getDomainPath(), "; expires=", pastDate.toGMTString()].join("");
//}

function loadJS(src, callBack) {
    if (arguments.length < 2) {
        callBack = function() { };
    }
    var toCallBack = function(scriptObj, fcn) {
        if (isBrowser("ie")) {
            toCallBack = function(scriptObj, fcn) {
                scriptObj.onreadystatechange = function() {
                    if (!this.readyState || this.readyState == "loaded" || this.readyState == "complete") {
                        fcn();
                    }
                };
            };
        }
        else {
            toCallBack = function(scriptObj, fcn) {
                scriptObj.onload = function() {
                    fcn();
                };
            }
        }
        toCallBack(scriptObj, fcn);
    };
    var loadAJs = function(srcStr, cb) {
        var script = document.createElement("script");
        script.src = srcStr;
        script.type = "text/javascript";
        document.getElementsByTagName("head")[0].appendChild(script);
        toCallBack(script, cb);
        return script;
    };

    var startLoad = function() { 
        if (src instanceof Array) {
            var stepLoad = function(sObjs) {
                var sObj = sObjs.pop();
                if (sObjs.length > 0) {
                    loadAJs(sObj, stepLoad(sObjs));
                }
                else {
                    loadAJs(sObj, callBack);
                }

            };
            stepLoad(src);
        }
        else {
            loadAJs(src, callBack);
        }    
    };

    if (loadJS.windowIsLoaded) {
        startLoad();
    } else {
        addEvent("load", window, function() {
            loadJS.windowIsLoaded = true;
            startLoad();
        });   
    }


}


  


//写cookies函数 作者：翟振凯
function setCookie(name, value)//两个参数，一个是cookie的名子，一个是值
{
    var exp = new Date();    //new Date("December 31, 9998");
    exp.setTime(exp.getTime() + 60 * 60 * 1000);
    document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString();
}
function getCookie(name)//取cookies函数        
{
    var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));
    if (arr != null) return unescape(arr[2]); return null;

}
function removeCookie(name)//删除cookie
{
    var exp = new Date();
    exp.setTime(exp.getTime() - 1);
    var cval = getCookie(name);
    if (cval != null) document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString();
}


