// JavaScript Document
!function (bool){
	if (bool){
		window.constructor.prototype.__defineGetter__("event", function (){
			var o=arguments.callee;
			do{
				if (o.arguments[0] instanceof Event)return o.arguments[0];
			}while (o=o.caller);
			return null;
		});
		HTMLElement.prototype.__defineGetter__("outerHTML",function() 
		{ 
			var a=this.attributes, str="<"+this.tagName, i=0;for(;i<a.length;i++) 
			if(a[i].specified) 
				str+=" "+a[i].name+'="'+a[i].value+'"'; 
			if(!this.canHaveChildren) 
				return str+" />"; 
			return str+">"+this.innerHTML+"</"+this.tagName+">"; 
		}); 
		HTMLElement.prototype.__defineSetter__("outerHTML",function(s) 
		{ 
			var r = this.ownerDocument.createRange(); 
			r.setStartBefore(this); 
			var df = r.createContextualFragment(s); 
			this.parentNode.replaceChild(df, this); 
			return s; 
		}); 
		HTMLElement.prototype.__defineGetter__("canHaveChildren",function() 
		{ 
			return !/^(area|base|basefont|col|frame|hr|img|br|input|isindex|link|meta|param)$/.test(this.tagName.toLowerCase()); 
		}); 
	}
	
}(/Firefox/.test(window.navigator.userAgent));
if (window.HTMLElement && !HTMLElement.prototype.insertAdjacentHTML)
HTMLElement.prototype.insertAdjacentHTML = function (sWhere, sHTML) {
    var df; var r = this.ownerDocument.createRange();
    switch (String(sWhere).toLowerCase()) {
        case "beforebegin":
            r.setStartBefore(this);
            df = r.createContextualFragment(sHTML);
            this.parentNode.insertBefore(df, this);
            break;
        case "afterbegin":
            r.selectNodeContents(this);
            r.collapse(true);
            df = r.createContextualFragment(sHTML);
            this.insertBefore(df, this.firstChild);
            break;
        case "beforeend":
            r.selectNodeContents(this);
            r.collapse(false);
            df = r.createContextualFragment(sHTML);
            this.appendChild(df);
            break;
        case "afterend":
            r.setStartAfter(this);
            df = r.createContextualFragment(sHTML);
            this.parentNode.insertBefore(df, this.nextSibling);
            break;
    }
};

var bit={};
bit.base={
	$:function(id){return document.getElementById(id)}
	,tagArr:function(o,name){return o.getElementsByTagName(name)}
	,nameArr:function(name){return document.getElementsByName(name)}
	,att:function(o,name,fun){return document.all ? o.attachEvent(name,fun) : o.addEventListener(name.substr(2),fun,false);}
	,style:function(o){
		return o.currentStyle || document.defaultView.getComputedStyle(o,null);
	}
	,innerText:function(obj){
		return obj.innerText || obj.textContent;
	}
	,activeElement:function(){
		return event.explicitOriginalTarget || document.activeElement;
	}
	,onmousewheel:function(o,fun){
		return document.all ? o.attachEvent('onmousewheel', fun) : o.addEventListener('DOMMouseScroll', fun, false);;
	}
	,documentElement:function(type){
		return	document.documentElement[type] || document.body[type];
	}
	,dElement:function(){
		return	document.documentElement || document.body;
	}
	,offset:function(o,type){
		var intVlue=0;
		var ffObj=o[type];
		while(document.body!=o)
		{		
			intVlue+=o[type];
			o=o.parentNode;
		}
		if(document.all){
			return intVlue;
		}else{
			return ffObj;
		}
	}
	,offsetLT:function(o){
        var x = 0, y = 0;
        do { x += o.offsetLeft, y += o.offsetTop; } while (o = o.offsetParent);
        return { 'x' : x, 'y' : y };
    }
	,position:function(){
		return {
		'x':event.pageX || (event.clientX + this.documentElement('scrollLeft'))
		,'y':event.pageY || (event.clientY + this.documentElement('scrollTop'))
		}
	}
	,alpha:function(o,num){	
		o.style.filter='alpha(opacity='+num+')';
		o.style.opacity=num/100;
	}
	,rePreviousSibling:function(o){
		do {
			o = o.previousSibling;
		} while (o && (o.nodeType != 1));
		return o;
	}
	,reNextSibing:function(o){
		do {
			o = o.nextSibling;
		} while (o && (o.nodeType != 1));
		return o;
	}
	,newImage:function(img,url,fun){
		var a=[];
		for(i=0;i<img.length;i++){		
			a[i]=new Image;
			a[i].onload=function (i) {
				return function () {
					if(fun){fun(a[i]),a[i] = null};
				};
			}(i);
			a[i].src=url+img[i];
		}
		return a;
	}
	,buildTag:function(id,tagName,arr,object){
		var obj=document.createElement(tagName);
		if(id){obj.id=id;}
		if(arr){
			for(i=0;i<arr.length;i++){
				obj.style[arr[i][0]]=arr[i][1];
			}
		}
		object.appendChild(obj);
	}
	,selectFun:function(num){
		document.onselectstart=num ? function(){ return true} : function(){ return false};
	}
	,capture:function(obj,num){
		if(document.all){
			num?obj.setCapture():obj.releaseCapture();
		}	
	}
	,cleanOutSelect:function(){
		try {
			document.selection.empty();
		} catch (exp) {
		try {
			window.getSelection().removeAllRanges();
		} catch (exp) {}
		}
	}
	,formatSwitch:function(text,dataArr){
		text=text.replace('yyyy',dataArr[0]);//4位数年
		text=text.replace('yy',dataArr[0].substring(2,4));//2位数年
		text=text.replace('y',dataArr[0].substring(3,4));//1位数年
		text=text.replace('MM',this.renew(dataArr[1]));//2位数月
		text=text.replace('M',dataArr[1]);//1位数月
		text=text.replace('dd',this.renew(dataArr[2]));//2位数日
		text=text.replace('d',dataArr[2]);//1位数日
		if(dataArr[3]){
		text=text.replace('HH',this.renew(dataArr[3]));//时 
		text=text.replace('H',dataArr[3]);//时
		}
		if(dataArr[4]){
		text=text.replace('mm',this.renew(dataArr[4]));//分
		text=text.replace('m',dataArr[4]);//分
		}
		if(dataArr[5]){
		text=text.replace('ss',this.renew(dataArr[5]));//秒
		text=text.replace('s',dataArr[5]);//秒
		}
		return text;
	}
	,renew:function(text){//判断补充 1985-5-1 1985-05-01 
		return ((text.length==1)?('0'+text):text);
	}
	,loadJS:{
		lock : false, ranks : []
		, callback : function (startTime, callback) {
		//载入完成		
			callback && callback(new Date().valueOf() - startTime.valueOf()); //回调	
			this.lock = false, this.read(); //解锁，在次载入
		}
		, read : function () {
		//读取
			if (!this.lock && this.ranks.length) {
				var head = document.getElementsByTagName("head")[0];
				
				if (!head) {
					ranks.length = 0, ranks = null;
					throw new Error('HEAD不存在');
				}
				
				var wc = this, ranks = this.ranks.shift(), startTime = new Date, script = document.createElement('script');
				
				this.lock = true;
				
				script.onload = script.onreadystatechange = function () {
					if (script && script.readyState && script.readyState != 'loaded' && script.readyState != 'complete') return;
					
					script.onload = script.onreadystatechange = script.onerror = null, script.src = ''
						, script.parentNode.removeChild(script), script = null; 
						
					wc.callback(startTime, ranks.callback), startTime = ranks = null;
				};
				
				script.charset = ranks.charset || 'gb2312';
				script.src = ranks.src;
				
				head.appendChild(script);
			}
		}
		, push : function (src, charset, callback) {
			this.ranks.push({ 'src' : src, 'charset' : charset, 'callback' : callback });
			this.read();
		}
	}
}