﻿(function(){

//ADS命名空间
if(!window.ads){window['ads'] = {}}

//检查js是否能正确运行
function runCheck(other){
	if(other===false 
	   || !Array.prototype.push
	   || !Object.hasOwnProperty
	   || !document.createElement
	   || !document.getElementsByTagName
	   ){
		return false;
		}
	return true;
	}
window['ads']['runCheck'] = runCheck;

//根据ID获取元素，可同时获取多个
function $(){
	var elements = new Array();
	
	for(var i = 0; i<arguments.length; i++){
		var element=arguments[i];
		if(typeof arguments[i] == 'string'){
			element = document.getElementById(element);
			}
		if(arguments.length == 1){
			return element;
			}
		elements.push(element);		
		}
	return elements;
	}
window['ads']['$'] = $;

//根据Class获取元素
function $c(className,tag,parent){
	parent = parent || document;
	tag = tag || '*';
	if(!(parent = $(parent))){return false;}
	
	//查找匹配标签
	var allTags = (tag == "*" && parent.all) ? parent.all : parent.getElementsByTagName(tag);
	
	var elements = new Array();
	
	//正则表达式，判断className是否正确
	className = className.replace(/\-/g,"\\-");
	var regex = new RegExp("(^|\\s)" + className + "(\\s|$)");
	
	var element;
	for(var i=0;i<allTags.length;i++){
		element = allTags[i];
		if(regex.test(element.className)){
			elements.push(element);
			}
		}
	if(elements.length == 1) return elements[0];
	return elements;
	}
window['ads']['$c'] = $c;

//根据html标签获取元素
function $t(tag,parent){
	parent = parent || document;
	tag = tag || '*';
	if(!(parent = $(parent))){return false;}
	
	//查找匹配标签
	var allTags = (tag == "*" && parent.all) ? parent.all : parent.getElementsByTagName(tag);
	
	var elements = new Array();
	
	for(var i=0;i<allTags.length;i++){
		elements.push(allTags[i]);
		}
	return elements;
	}
window['ads']['$t'] = $t;

//更改函数执行环境
function bindFunction(obj,func){
    return function(){
        func.apply(obj,arguments);
        };
    }
window['ads']['bindFunc'] = bindFunction;

function getBrowserSize() {
    var de = document.documentElement;
	
    return {
        'width':(
            window.innerWidth 
            || (de && de.clientWidth ) 
            || document.body.clientWidth),
        'height':(
            window.innerHeight 
            || (de && de.clientHeight ) 
            || document.body.clientHeight)
    }
};
window['ads']['getBrowserSize'] = getBrowserSize;

//添加、移除事件
function addEvent(node,type,listener){
	if(!runCheck()){return false;}
	if(!(node = $(node))){return false;}
	
	//W3C添加事件方法
	if(node.addEventListener){
		node.addEventListener(type,listener,false);
		return true;
		}
	//MSIE添加事件方法
	else if(node.attachEvent){
		node['e'+type+listener] = listener;
		node[type+listener] = function(){
			node['e'+type+listener](window.event);
			}
		node.attachEvent('on'+type,node[type+listener]);
		return true;
		}
	return false;
	}
window['ads']['addEvent'] = addEvent;

function removeEvent(node,type,listener){
	if(!runCheck()){return false;}
	if(!(node = $(node))){return false;}
	
	//W3C添加事件方法
	if(node.removeEventListener){
		node.removeEventListener(type,listener,false);
		return true;
		}
	//MSIE添加事件方法
	else if(node.detachEvent){
		node.detachEvent('on'+type,node[type+listener]);
		node[type+listener] = null;	
		return true;
		}
	return false;
	}
window['ads']['removeEvent'] = removeEvent;

//取消默认动作
function preventDefault(eventObject){
	eventObject = eventObject || getEventObject(eventObject);
	if(eventObject.preventDefault){
		eventObject.preventDefault();
		}
	else{
		eventObject.returnValue = false;
		}
	}
window['ads']['preventDefault'] = preventDefault;

//AJAX
function parseJSON(s,filter) { 
    var j;

    function walk(k, v) {
        var i;
        if (v && typeof v === 'object') {
            for (i in v) {
                if (v.hasOwnProperty(i)) {
                    v[i] = walk(i, v[i]);
                }
            }
        }
        return filter(k, v);
    }

 if (/^("(\\.|[^"\\\n\r])*?"|[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t])+?$/.
            test(s)) {

        try {
            j = eval('(' + s + ')');
        } catch (e) {
            throw new SyntaxError("parseJSON");
        }
    } else {
        throw new SyntaxError("parseJSON");
    }

    if (typeof filter === 'function') {
        j = walk('', j);
    }    
    return j;
};
    
	
function getRequestObject(url,options) {
    // Initialize the request object
    var req = false;
    if(window.XMLHttpRequest) {
        var req = new window.XMLHttpRequest();
    	}
	else if (window.ActiveXObject) {
        var req = new window.ActiveXObject('Microsoft.XMLHTTP');
    	}
    if(!req) return false;

    options = options || {};
    options.method = options.method || 'GET';
    options.send = options.send || null;

    req.onreadystatechange = function() {
        switch (req.readyState) {
            case 1:
                // 载入中                
                if(options.loadListener) {
                    options.loadListener.apply(req,arguments);
                }
                break;
            case 2:            
                // 载入完成
                if(options.loadedListener) {
                    options.loadedListener.apply(req,arguments);
                }
                break;
            case 3:
                // 交互
                if(options.ineractiveListener) {
                    options.ineractiveListener.apply(req,arguments);
                }
                break;
            case 4:
				//载入完成，如果失败抛出异常				
                try { 
                if (req.status && req.status == 200) {
                    var contentType = req.getResponseHeader('Content-Type');
					//通过正则提供Content-Type(contentType可能存在其它字符，如charset=utf-8)
                    var mimeType = contentType.match(/\s*([^;]+)\s*(;|$)/i)[1];
                                        
                    switch(mimeType) {
                        case 'text/javascript':
                        case 'application/javascript':
 
                            if(options.jsResponseListener) {
                                options.jsResponseListener.call(
                                    req,
                                    req.responseText
                                );
                            }
                            break;
                        case 'application/json':

                            if(options.jsonResponseListener) {
                                try {
                                    var json = parseJSON(
                                        req.responseText
                                    );
                                } catch(e) {
                                    var json = false;
                                }
                                options.jsonResponseListener.call(
                                    req,
                                    json
                                );
                            }
                            break;
                        case 'text/xml':
                        case 'application/xml':
                        case 'application/xhtml+xml':
						
                            if(options.xmlResponseListener) {
                                options.xmlResponseListener.call(
                                    req,
                                    req.responseXML
                                );
                            }
                            break;
                        case 'text/html':                            
                            if(options.htmlResponseListener) {                                
                                options.htmlResponseListener.call(
                                    req,
                                    req.responseText
                                );
                            }
                            break;
                    }
                
                    if(options.completeListener) {
                        options.completeListener.apply(req,arguments);
                    }

                } else {
                    if(options.errorListener) {
                        options.errorListener.apply(req,arguments);
                    }
                }
                

                } catch(e) {
                    alert('Response Error: ' + e);
                }
                break;
        }
    };
    req.open(options.method, url, true);

    req.setRequestHeader('X-ADS-Ajax-Request','AjaxRequest');
    return req;
}
window['ads']['getRequestObject'] = getRequestObject;


function ajaxRequest(url,options) {
    var req = getRequestObject(url,options);
    return req.send(options.send);
}
window['ads']['ajaxRequest'] = ajaxRequest;
//END

})();


ads.addEvent(window,'load',function(){
		ads.ajaxRequest("/aspx/UserAjax.aspx?rand="+rand(),{
			htmlResponseListener:function(req){
			try{
				if(req == "false"){
					ads.$("UserBox").style.display = "none";
					ads.$("loginInfo").style.display = "block";
					}
				else{
					ads.$("loginInfo").style.display = "none";
				    ads.$("UserBox").style.display = "block";
					ads.$("BoxName").innerHTML = req;
					}
				}
				catch(e){}
				}
			});

	})
	
function rand(){
var now=new Date(); 
var number = now.getSeconds();
return number;
    }
	