if (typeof Caidao == 'undefined') Caidao = {};

Caidao.IE = !!window.ActiveXObject;

Caidao.$ = function(i, win) {
	try {
		return ( win || window ).document.getElementById(i);
	}catch( e ) {return null;}
}
Caidao.$C = function(name, doc){
    var doc = doc || document;
    return doc.createElement(name);
};
Caidao.$N = function(name, doc){
    var doc = doc || document;
    return doc.getElementsByName(name);
};
Caidao.$T = function(name, doc){
    var doc = doc || document;
    return doc.getElementsByTagName(name);
};
Caidao.event = {
    add : function(el, event, listener) {
        if (el.addEventListener){
            el.addEventListener(event, listener, false);
        } else if (el.attachEvent){
            el.attachEvent('on' + event, listener);
        }
    },
    remove : function(el, event, listener) {
        if (el.removeEventListener){
            el.removeEventListener(event, listener, false);
        } else if (el.detachEvent){
            el.detachEvent('on' + event, listener);
        }
    }
};
Caidao.XHR = function(){//创建XMLHttpRequest对象
	var xmlhttp = false;
	try{
		xmlhttp=new XMLHttpRequest();
	}catch(e){
    		var a=['MSXML2.XMLHTTP.5.0','MSXML2.XMLHTTP.4.0','MSXML2.XMLHTTP.3.0','MSXML2.XMLHTTP','MICROSOFT.XMLHTTP.1.0','MICROSOFT.XMLHTTP.1','MICROSOFT.XMLHTTP'];
    		for (var i=0;i<a.length;i++){
      			try{
        			xmlhttp = new ActiveXObject(a[i]);
        			break;
      			}catch(e){}
    		}
  	}
	return xmlhttp;
};

Caidao.func = {
    loadStyle : function(val){//加载css
		var link = Caidao.$C('link');
        link.setAttribute('type', 'text/css');
        link.setAttribute('rel', 'stylesheet');
        link.setAttribute('href',val);
        Caidao.$T("head")[0].appendChild(link);
    },
	setStyle : function (o,property,val) {
		switch (property) {
			case "opacity":
				o.style.filter = "alpha(opacity=" + (val * 100) + ")";
				if (!o.currentStyle || !o.currentStyle.hasLayout) o.style.zoom = 1;
			break;
			case "float":
				property = "styleFloat";
			break;
			default: 
				o.style[property] = val;
			break;
		}
	},
	ScrollPos : function(o){// 获取滚动条的位置
		var o = o || document;
		return [
				Math.max(o.documentElement.scrollTop, o.body.scrollTop), 
				Math.max(o.documentElement.scrollLeft, o.body.scrollLeft),
				Math.max(o.documentElement.scrollWidth, o.body.scrollWidth), 
				Math.max(o.documentElement.scrollHeight, o.body.scrollHeight)
				];
	},
	pageSize : function(doc){
		var o = doc || document;
		
		var _rootEl = (o.compatMode=="CSS1Compat"?o.documentElement:o.body);

		var xScroll, yScroll;
		if (window.innerHeight && window.scrollMaxY) {
			xScroll = _rootEl.scrollWidth;
			yScroll = window.innerHeight + window.scrollMaxY;
		}
		else if (_rootEl.scrollHeight > _rootEl.offsetHeight) {
			xScroll = _rootEl.scrollWidth;
			yScroll = _rootEl.scrollHeight;
		}
		else {
			xScroll = _rootEl.offsetWidth;
			yScroll = _rootEl.offsetHeight;
		}
		var win_s = Caidao.func.winSize(doc);

		if(yScroll < win_s.height){
			pageHeight = win_s.height;
		}else { 
			pageHeight = yScroll;
		}
		if(xScroll < win_s.width){
			pageWidth = win_s.width;
		}else {
			pageWidth = xScroll;
		}
		return [pageWidth,pageHeight,win_s.width,win_s.height];
		
	},
	winSize : function(doc){
		var w, h;
		var o = doc || document;
		
		if (self.innerHeight) { // all except Explorer
			if(doc){o = doc.self;}else{o = self;}
			w = o.innerWidth;
			h = o.innerHeight;
		} else if (o.documentElement && o.documentElement.clientHeight) { // Explorer 6 Strict Mode
			w = o.documentElement.clientWidth;
			h = o.documentElement.clientHeight;
		} else if (o.body) { // other Explorers
			w = o.body.clientWidth;
			h = o.body.clientHeight;
		}
		return {width : w, height : h};
	},
	Coordinate : function(w,h){//屏幕视线中心为中心，根据宽高 返回left,top坐标
		var page  = Caidao.func.pageSize();
		var x = (page[3] - h) / 2 + Caidao.func.ScrollPos()[0];
		//var l = (page[2] - w) / 2;//left
		var l = (document.body.clientWidth - w) / 2;//left
		var t = x < 0 ? 0 : x;//top
		return [parseInt(l),parseInt(t)];
	}
}