if (!Array.prototype.push) {
    Array.prototype.push = function() {
        var startLength = this.length;
        for (var i = 0; i < arguments.length; i++) this[startLength + i] = arguments[i];
        return this.length
    }
};
function getTop(){
	var scrollPos;
	if(typeof window.pageYOffset != 'undefined') {
		scrollPos = window.pageYOffset;
	}else if(typeof document.compatMode != 'undefined' && document.compatMode != 'BackCompat') {
		scrollPos = document.documentElement.scrollTop; 
	}else if(typeof document.body != 'undefined') {
		scrollPos = document.body.scrollTop;
	}
	return scrollPos;
};
trim = function(t) {
    var str = /(^\s*)|(\s*Dom)/g;
    return t.replace(str, "");
};
empty = function(t) {
    return t == null || t == undefined || t.length <= 0;
};
Dom = function() {
    return typeof arguments[0] == 'string' ? document.getElementById(arguments[0]) : arguments[0];
};
Dom.Name = function() {
    if (arguments.length == 1) return typeof arguments[0] == 'string' ? document.getElementsByName(arguments[0]) : arguments[0];
    else return typeof arguments[1] == 'string' ? Dom(arguments[0]).getElementsByName(arguments[1]) : arguments[1];
};
Dom.ClassName = function() {
    var ele = [],
    _all = [];
    if (arguments.length == 1) _all = Dom.Tag("*");
    else _all = typeof arguments[1] == 'string' ? Dom.Tag(arguments[1]) : arguments[1];
    for (var i = 0; i < _all.length; i++) if (_all[i].className.match(new RegExp('(\\s|^)' + arguments[0] + '(\\s|Dom)'))) ele[ele.length] = All[i];
    return ele;
};
Dom.Tag = function() {
    if (arguments.length == 1) return typeof arguments[0] == 'string' ? document.getElementsByTagName(arguments[0]) : arguments[0];
    else return typeof arguments[1] == 'string' ? Dom(arguments[0]).getElementsByTagName(arguments[1]) : arguments[1];
};
Dom.Create = function() {
    if (arguments.length == 1) return typeof arguments[0] == 'string' ? document.createElement(arguments[0]) : arguments[0];
    else return typeof arguments[1] == 'string' ? Dom(arguments[0]).createElement(arguments[1]) : arguments[1];
};
Dom.Text = function() {
    if (arguments.length == 1) return typeof arguments[0] == 'string' ? document.createTextNode(arguments[0]) : arguments[0];
    else return typeof arguments[1] == 'string' ? Dom(arguments[0]).createTextNode(arguments[1]) : arguments[1];
};
DomA = {
    isArray: function(obj) {
        return Object.prototype.toString.call(obj) === "[object Array]";
    },
    json: function(array) {
        var tmp = [];
        for (var k in array) {
            if (array[k] == "") continue;
            tmp.push(k + "=" + array[k]);
        }
        return tmp.join("&");
    },
    htmlJSon: function(array, code) {
        var tmp = [];
        for (var k in array) {
            if (array[k] == "") continue;
            if (code == 'urlcode') tmp.push(k + "/" + encodeURI(array[k]));
            else tmp.push(k + "/" + array[k]);
        }
        return tmp.join("/");
    },
    forEach: function(array, callback, thisp) {
        if (array.forEach) {
            array.forEach(callback, thisp);
        } else {
            for (var i = 0, len = array.length; i < len; i++) {
                callback.call(thisp, array[i], i, array);
            }
        }
    },
    in_array: function(array, elt) {
        var res = [];
        for (var i = 0, len = array.length; i < len; i++) {
            if (array[i] == elt) {
                return true;
            }
        }
        return false;
    }
};
DomB = (function(ua) {
    var b = {
        msie: /msie/.test(ua) && !/opera/.test(ua),
        Opera: /opera/.test(ua),
        Safari: /webkit/.test(ua) && !/chrome/.test(ua),
        Firefox: /firefox/.test(ua),
        WebKit: /AppleWebKit/.test(ua),
        Gecko: /Gecko/.test(ua) && !/KHTML/.test(ua),
        Chrome: /chrome/.test(ua)
    };
    var vMark = "";
    for (var i in b) if (b[i]) vMark = i;
    if (b.safari) vMark = "version";
    b.version = parseInt((ua.match(eval("/(?:" + vMark + ")[\\/: ]([\\d.]+)/")) || [])[1]);
    b.IE = b.msie;
    b.IE6 = b.msie && b.version == 6;
    b.IE7 = b.msie && b.version == 7;
    b.IE8 = b.msie && b.version == 8;
    try {
        b.maxthon = b.msie && !!external.max_version;
    } catch(e) {
        b.maxthon = false;
    }
    return b;
})(window.navigator.userAgent.toLowerCase());
DomD = {
    getScrollTop: function(node) {
        var doc = node ? node.ownerDocument: document;
        return Math.max(doc.documentElement.scrollTop, doc.body.scrollTop);
    },
    getScrollLeft: function(node) {
        var doc = node ? node.ownerDocument: document;
        return Math.max(doc.documentElement.scrollLeft, doc.body.scrollLeft);
    },
    insertAfter: function(newElement, obj) {
        var parent = obj.parentNode;
        if (parent.lastChild == obj) parent.appendChild(newElement);
        else parent.insertBefore(newElement, obj.nextSibling);
    },
    delNode: function(obj) {
        try {
            obj.removeNode(true);
        } catch(e) {
            var parents = obj.parentNode;
            parents.removeChild(obj);
        }
    },
    setOption: function(obj, data, ks, info) {
        while (Dom(obj).options.length > 0) Dom(obj).options[0] = null;
        if (empty(info)) {
            tt = 0;
        } else {
            tt = 1;
            Dom(obj).options[0] = new Option(info, "");
        }
        if (!empty(data)) {
            for (i in data) {
                if (data[i] == ks) Dom(obj).options[tt] = new Option(data[i], i, "defaultSelected", "selected");
                else Dom(obj).options[tt] = new Option(data[i], i);
                tt++;
            }
        } else {
            Dom(obj).options[0] = new Option(option_t, "");
        }
    },
    getPos: function(el) {
        var r = {
            x: el.offsetLeft,
            y: el.offsetTop
        };
        if (el.offsetParent) {
            var tmp = this.getPos(el.offsetParent);
            r.x += tmp.x;
            r.y += tmp.y;
        }
        return r;
    },
    rect: function(node) {
        var left = 0,
        top = 0,
        right = 0,
        bottom = 0;
        if (!node.getBoundingClientRect || (DomB.ie && DomB.version == 8)) {
            var n = node;
            while (n) {
                left += n.offsetLeft,
                top += n.offsetTop;
                n = n.offsetParent;
            }
            right = left + node.offsetWidth;
            bottom = top + node.offsetHeight;
        } else {
            var rect = node.getBoundingClientRect();
            left = right = this.getScrollLeft(node);
            top = bottom = this.getScrollTop(node);
            left += rect.left;
            right += rect.right;
            top += rect.top;
            bottom += rect.bottom;
        }
        return {
            "left": left,
            "top": top,
            "right": right,
            "bottom": bottom
        };
    },
    clientRect: function(node) {
        var rect = this.rect(node),
        sLeft = this.getScrollLeft(node),
        sTop = this.getScrollTop(node);
        rect.left -= sLeft;
        rect.right -= sLeft;
        rect.top -= sTop;
        rect.bottom -= sTop;
        return rect;
    },
    getScreen: function() {
        return {
            width: screen.width,
            height: screen.height
        }
    }
};
DomE = (function() {
    var addEvent,
    removeEvent,
    guid = 1;
    if (window.addEventListener) {
        addEvent = function(element, type, handler) {
            element.addEventListener(type, handler, false);
        };
        removeEvent = function(element, type, handler) {
            element.removeEventListener(type, handler, false);
        }
    } else {
        addEvent = function(element, type, handler) {
            if (!handler.Domguid) handler.Domguid = guid++;
            if (!element.events) element.events = {};
            var handlers = element.events[type];
            if (!handlers) {
                handlers = element.events[type] = {};
                if (element["on" + type]) handlers[0] = element["on" + type];
            };
            handlers[handler.Domguid] = handler;
            element["on" + type] = handleEvent;
        };
        removeEvent = function(element, type, handler) {
            if (element.events && element.events[type]) delete element.events[type][handler.Domguid];
        };
        function handleEvent() {
            var returnValue = true,
            event = fixEvent();
            var handlers = this.events[event.type];
            for (var i in handlers) {
                this.DomhandleEvent = handlers[i];
                if (this.DomhandleEvent(event) === false) returnValue = false;
            };
            return returnValue;
        }
    };
    function fixEvent(event) {
        if (event) return event;
        event = window.event;
        event.pageX = event.clientX + DomD.getScrollLeft();
        event.pageY = event.clientY + DomD.getScrollTop();
        event.target = event.srcElement;
        event.stopPropagation = fixEvent.stopPropagation;
        event.preventDefault = fixEvent.preventDefault;
        if (event.type == "mouseout") event.relatedTarget = event.toElement;
        else if (event.type == "mouseover") event.relatedTarget = event.fromElement;
        return event;
    };
    fixEvent.preventDefault = function() {
        this.returnValue = false;
    };
    fixEvent.stopPropagation = function() {
        this.cancelBubble = true;
    };
    return {
        "addEvent": addEvent,
        "removeEvent": removeEvent,
        "fixEvent": fixEvent
    }
})();
function ajax(options) {
    options = {
        type: options.type || "POST",
        url: options.url || "",
		asyn: options.asyn || true,//异步
        timeout: options.timeout || 3000,
		onComplete: options.onComplete || function(){},
        onError: options.onError || function(){},
        onSuccess: options.onSuccess || function(){},
        data: options.data || "",
		tms:null
    };
    var requestDone = false;
	Try={these: function() {returnValue = null;for (var i = 0; i < arguments.length; i++) {try {returnValue = arguments[i]();break;} catch(e) {}}return returnValue}};
    var xmlhttp = Try.these(function(){return new ActiveXObject("Msxml2.XMLHTTP");},
							function(){return new ActiveXObject("Microsoft.XMLHTTP"); },
							function(){return new XMLHttpRequest();}) || false;
    xmlhttp.open(options.type, options.url, options.asyn);
    options.tms=setTimeout(function(){xmlhttp.abort(); requestDone = true;}, options.timeout);
	
    function httpSuccess(r) {
        try {
            return !r.status && location.protocol == "file:" ||( r.status >= 200 && r.status < 300 ) || r.status == 304 || navigator.userAgent.indexOf("Safari") >= 0 && typeof r.status == "undefined";
        } catch(e){}
        return false;
    };
    function httpData(r,type) {
        var ct = r.getResponseHeader("content-type");
        var data = !type && ct && ct.indexOf("xml") >= 0;
        data = type == "xml" || data ? r.responseXML : r.responseText;
		if(ajaxdebug) Dom('ajaxdebug').innerHTML="url:"+options.url+"<br>MSG::"+data;
        if ( type == "script" )
            eval.call( window, data );
        return data;
    };
    xmlhttp.onreadystatechange = function(){
        if ( xmlhttp.readyState == 4 && !requestDone) {
            if(httpSuccess(xmlhttp)) {
				clearTimeout(options.tms);
                options.onSuccess( httpData( xmlhttp, options.type ) );
            }else{
                options.onError(xmlhttp.status);
            }
            options.onComplete();
            xmlhttp = null;
        }
    };
	
	xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');	
    xmlhttp.send(options.data);
};
fmdebug = false;
ajaxdebug=false;
fm_box=true;
form_box = function() {
	if(!fm_box)return;
	if(Dom('submit_box')==null){
		var node = Dom.Create('iframe');
		node.id = 'submit_box';
		node.name = 'submit_box';
		node.src = 'about:blank';
		node.width="100%";
		node.height="300px";
		node.style.display = fmdebug? '': 'none';
		DomD.insertAfter(node, document.body.firstChild);
	}
	var fm=Dom.Tag('form');
	for(i=0;i<fm.length;i++){
		if(fm[i].getAttribute('tag')=='null')continue;
		fm[i].target='submit_box';
	}
	if(ajaxdebug&&Dom('ajaxdebug')==null){
		node = Dom.Create('div');
		node.id = "ajaxdebug";
		node.className = "ajaxdebug";
		DomD.insertAfter(node, document.body.firstChild);
	}
};
loadJS = {
    callBack: function() {},
    scriptContent: [],
    loadedCount: 0,
    load: function(mArr) {
        this.scriptContent = [];
        this.loadedCount = 0;
		callBack=function(data) {
			loadJS.scriptContent.push(data);
			if (++loadJS.loadedCount == mArr.length) {
				try {
					if (DomB.IE) window.execScript(loadJS.scriptContent.join("\n"));
					else if (DomB.WebKit) window.setTimeout(loadJS.scriptContent.join("\n"), 0);
					else window.eval(loadJS.scriptContent.join("\n"));
					loadJS.callBack();
				} catch(e) {}
			} else {
				ajax({url:mArr[loadJS.loadedCount] + ".js",onSuccess:callBack});
			}
			if(ajaxdebug&&Dom('ajaxdebug')!=null)Dom('ajaxdebug').innerHTML=""
		};
		if(mArr.length>0){
			ajax({url:mArr[loadJS.loadedCount] + ".js",onSuccess:callBack});
		}
    }
};
loadCSS = {
    loadedCount: 0,
    load: function(mArr) {
        this.loadedCount = 0;
		DomA.forEach(mArr,function(t){
			var d = document.createElement("link");
			d.rel = "stylesheet";
			d.rev = "stylesheet";
			d.type = "text/css";
			d.media = "screen";
			var t = DomD.getScreen();
			d.href = mArr[loadCSS.loadedCount] + '.css';
			Dom.Tag("head")[0].appendChild(d);
			loadCSS.loadedCount++;
		});
    }
};
