(function(){
	//window.h={
		//a:document.addEventListener,
		//b:document.attachEvent,
		
		//ae:"attachEvent",
		//rel:"removeEventListener",
		//re:"detachEvent",
		
		
		//e:"DOMContentLoaded",
		//i:"DOMFrameContentLoaded",
		//f:"onreadystatechange",
		//dll:"DOMContentLoaded",
		//dl:"onreadystatechange",
	//},
	y=window._={
		bind:function(o,f)
		{
			return function(){return f.apply(o,arguments)}
		},
		bindE:function(o,f) 
		{
			return function(e) {return f.call(o,(e||event))}
		},
		get:function(s,d)
		{
			var o=d||document;
			if(typeof s==="string")
				s=o.getElementById(s);
			return s
		},
		getN:function(s)
		{
			return document.getElementsByName(s)
		},
		getTN:function(s)
		{
			return document.getElementsByTagName(s)
		},
		to:function(v)
		{
			if(typeof v==="string")
				v=_.get(v);
			return v
		},
		//获取页面可见区域宽度、高度（不包含边框）
		client:function(o)
		{
			o=o||document.documentElement;
			return {w:o.clientWidth,h:o.clientHeight}
		},
		//获取页面正文区域宽度、高度
		scroll:function(o)
		{
			o=o||document.documentElement;
			return {w:o.scrollWidth,h:o.scrollHeight}
		},
		offset:function(o)
		{
			//o=o||document.documentElement;
			return {w:o.offsetWidth,h:o.offsetHeight}
		},
		//获取页面被卷去部分的宽度、高度
		scrollTo:function(o)
		{
			o=o||document.documentElement;
			return {w:o.scrollLeft,h:o.scrollTop} 
		},
		doc:function(o)
		{
			o=o||document.documentElement;
			var a=_.client(o),b=_.scroll(o);
			return {w:Math.max(a.w,b.w),h:Math.max(a.h,b.h)}
		},
		copyP:function(d, s) {
			for (var p in s) {
				d[p] = s[p]
			}
		},
		stopPropagation:function(e,o)//取消冒泡
		{
			o=o||window;
			if(o.event)
				e.cancelBubble=true; //IE取消事件向上冒泡
			else
				e.stopPropagation();//标准DOM取消事件向上冒泡   
		},
		newEle:function(s,d)
		{
			var o=d||document;
			return o.createElement(s)
		},
		append:function(a,b)
		{
			a.appendChild(b)
		},
		attr:function(v,n,s)
		{
			v=_.to(v);
			if(s)
				v.setAttribute(n,s);
			else
				return v.getAttribute(n)
		},
		addClass:function(v,s)
		{
			v=_.to(v);
			var s=v.className;
			if(!s)
				v.className=s;
			else
				v.className+=" "+s
		},
		removeClass:function(v,s)
		{
			var a,l;
			v=_.to(v);
			a=v.className.split(/\s+/);
			l=a.length;
			while(l)
			{
				if(a[--l]==s)
				{
					a.splice(l,1);
					break;
				}
			}
			v.className=a.join(" ")
		},
		addEvent:function(v,s,f)
		{
			v=_.to(v);
			if (v["addEventListener"])//h.a??????优化??????
				v.addEventListener(s, f, false);
			else if (v["attachEvent"])//h.b??????优化??????
				v.attachEvent("on" + s, f)
		},
		removeEvent:function(v,s,f)
		{
			v=_.to(v);
			if (v["removeEventListener"])//h.a??????优化??????
				v.removeEventListener(s, f, false);
			else if (v["detachEvent"])//h.b??????优化??????
				v.detachEvent("on" + s, f)
		},
		
		load:function(a,q)//url  fn        //js同步  css异步
		{
			var c,d,e,f,k,o,r=q?q:function(){};
			c= /.+\/(\w+\.+\w+)(?:\?.+)?/g;
			d=a.length;
			e=_.getTN("script");
			f=e.length;
			k=_.getTN("link");
			o=k.length;
			while(d)
			{
				var p,g,s,i,j,u,v,x,y,z=0;
				g=a[--d].replace(c,'$1');
				s=g.split('.');
				i=s[s.length-1];//后缀
				if(i=="js")
				{
					p="src";
					v="script";
					x=f;
					y=e;
					u={'type':'text/javascript','src':a[d]}
				}
				else if(i=="css")
				{
					p="href";
					v="link";
					x=o;
					y=k;
					u={'type':'text/css','rel':'stylesheet','href':a[d]}
				}
				while(x)
				{
					var m=_.attr(y[--x],p);
					if(m)
						j=m.replace(c,'$1');
					else
						continue;
					
					if(j==g)
					{
						z=1;
						break
					}
				}
				if(z)
					u=null;
				if(u)
				{
					var w=_.newEle(v);
					
					if(v=="script")
					{
						
						
						////Firefox2、Firefox3、Safari3.1+、Opera9.6+ support js.onload 
//						if(!/*@cc_on!@*/0)
//							//w.onload = function ()
////							{
////								r();//??????????优化???????????????
////							};
//							//优化
//							_.addEvent(w,"load",function(){_.removeEvent(w,"load",arguments.callee);r();})
//						//var isIE = !+"\v1";
//	//					var isIE = !-[1,];   
//	//					var isIE = "\v"=="v";
//	//					IE6、IE7、IE8 support js.onreadystatechange 
//						else
//							//w.onreadystatechange = function()
////							{
////								if ((/loaded|complete/).test(w.readyState)) //w.readyState == 'loaded' || w.readyState == 'complete'
////									r()//??????????优化???????????????
////							}
//							//优化
//							_.addEvent(w,h.f,function(){if ((/loaded|complete/).test(w.readyState)){_.removeEvent(w,h.f,arguments.callee);r();}})

						//以上所有优化
						if(typeof w["onreadystatechange"]=="object")//ie
						//w.onreadystatechange = function()
//							{
//								if ((/loaded|complete/).test(w.readyState)) //w.readyState == 'loaded' || w.readyState == 'complete'
//									r()//??????????优化???????????????
//							}
							//优化
							_.addEvent(w,"onreadystatechange",function(){if ((/loaded|complete/).test(w.readyState)){_.removeEvent(w,"onreadystatechange",arguments.callee);r();}})
						else 
						//w.onload = function ()
//							{
//								r();//??????????优化???????????????
//							};
							//优化
							_.addEvent(w,"load",function(){_.removeEvent(w,"load",arguments.callee);r();})
							
					}
					////////////////////
					//w.src="0000";
					//for(var n in u)
					//	_.attr(w,n,u[n]);
					//替换为
					_.copyP(w,u);
					///////////////////
						
					
					_.append(_.getTN("head")[0],w)
				}
				else 
					if(v=="script")
						r()//??????????优化???????????????
			}
		},
		
		r: false,//isReady: false,
		l: [],//readyList: [],
		g:false,//readyBound : false	
		ready: function(fn){
			_.lis();
			if (_.r)
				fn();//fn.call(document,_);
			else
				_.l.push( fn )
			//return this;
		},
		run: function() {
			if ( !_.r ) {
				_.r = true;
				if (_.l) {
					for(var i=0;i<_.l.length;i++)
						_.l[i]();//_.readyList[i].call(document,_); //?????????????????
					_.l = null
				}
			}
		},
		lis:function(){
			if ( _.g ) return;
			_.g = true;
			if ( document["addEventListener"] ) {//h.a
				//document.addEventListener( h.e, function(){
//					document.removeEventListener( h.e, arguments.callee, false );
//					_.run()
//				}, false )
				//优化
				_.addEvent(document,"DOMContentLoaded",function(){_.removeEvent(document,"DOMContentLoaded",arguments.callee);_.run()});
				
			} else if ( document["attachEvent"] ) {//h.b
				//document.attachEvent(h.f, function(){
//					if ( document.readyState === "complete" ) {
//						document.detachEvent(h.f, arguments.callee );
//						_.run()
//					}
//				});
				//优化
				_.addEvent(document,"onreadystatechange",function(){	if ( document.readyState === "complete" ) {_.removeEvent(document,"onreadystatechange",arguments.callee);_.run()}  });
				
				if ( document.documentElement.doScroll) (function(){ //if语句   如果父窗体调用iframe时必须加 && window == window.top 否则会出错
					if ( _.r ) return;
					try {
						document.documentElement.doScroll("left");
					} catch( error ) {
						setTimeout( arguments.callee, 0 );
						return;
					}
					_.run()
				})();
			}
			//_.addEvent(window,"load",_.run)
			//优化load 没删除  window.onload=_.run  
			_.addEvent(window,"load",function(){_.removeEvent(window,"load",arguments.callee);_.run()})
		},
		
		//获取地址栏参数或锚点值 _.getParam("name")
		getUrlParam:function(n){
			var r = new RegExp("(\\?|#|&)"+n+"=([^&#]*)(&|#|$)","i"),
			a = location.href.match(r)||top.location.href.match(r);
			return (!a?null:a[2])
		},
		//伪数组 转换为 数组 Array
		makeArray:function (a){  
			var r = [],i= a.length;
			while( i ) r[--i] = a[i];
			return r
		},
		//获取元素坐标
		elePos:function (o)
		{
			var l=t=0;
			while(o)
			{
				l+=o.offsetLeft;
				t+=o.offsetTop;
				o=o.offsetParent
			}
			return {x:l,y:t}
		}
	};
})();
//以下有用
//ie6中无此方法   indexOf
if (!Array.prototype.indexOf)
{
	Array.prototype.indexOf = function(o)
	{
		var i=0,a=this,l=a.length;
		while(l)
			if(a[--l]==o)
				return l;
		return -1
	}
}
//去除前后空格
String.prototype.trim = function()
{
    return this.replace(/(^\s*)|(\s*$)/g,"")
}
//格式化字符串"http://{0}/{1}/{2}".fnFormat("www.meizz.com", "web", "abc.htm")
String.prototype.format=function()
{
	var l=arguments.length,s=this;
	while(l)
		s=s.replace(new RegExp("\\{"+--l+"\\}","g"),arguments[l]);
	return s
}