// JavaScript Document
var BX={
	    version: '1.0.10.A',
	    encoding: 'utf-8',
	    author: 'bigtreexu'
	  };
	  function $(el) {
	    if(!el) {
	      return null;
	    } else if(typeof el=='string') {
	      return document.getElementById(el);
	    } else if(typeof el=='object') {
	      return el;
	    }
	  }
	  function $A(els) {
	    var _els=[];
	    if(els instanceof Array) {
	      for(var i=0;i!=els.length;i++) {
	        _els[_els.length]=$(els[i]);
	      }
	    } else if(typeof els=='object'&&typeof els['length']!='undefined'&&els['length']>0) {
	      for(var i=0;i!=els.length;i++) {
	        _els[_els.length]=$(els[i]);
	      }
	    } else {
	      _els[0]=$(els);
	    }
	    return _els;
	  }
	  function Dictionary() {
	    this.buffer=[];
	  }
	  Dictionary.prototype={
	    get: function (key) {
	      if(this.contain(key)) {
	        return this.buffer[key];
	      } else {
	        return null;
	      }
	    },
	    add: function (key,value) {
	      if(!this.contain(key)) {
	        this.buffer[key]=value;
	      }
	    },
	    remove: function (key) {
	      if(this.contain(key)) {
	        this.buffer[key]=undefined;
	      }
	    },
	    getKeys: function () {
	      var r=[];
	      for(var k in this.buffer) {
	        r.push(k);
	      }
	      return r;
	    },

	    getValues: function () {
	      var r=[];
	      for(var k in this.buffer) {
	        r.push(this.get(k));
	      }
	      return r;
	    },
	    contain: function (key) {
	      return (typeof this.buffer[key]!='undefined');
	    }
	  }
	  BX.Event={
	    _cache: [],
	    _batch: function (els,func) {
	      try {
	        els=$A(els);
	        for(var i=0;i<els.length;i++) {
	          func(els[i]);
	        }
	      } catch(e) {
	      }
	    },
	    addListener: function (els,eventName,func,range) {
	      var _run=function (el) {
	        var _scope=el;
	        var _fn=function (e) {
	          var _ev=e||window.event;
	          if(range) {
	            func.apply(range,[_ev,_scope])
	          } else {
	            func(_ev,_scope);
	          }
	        };
	        if(!BX.Event._cache[el]) {
	          BX.Event._cache[el]=[];
	        }
	        if(BX.Event._cache[el][func]) {
	        }
	        BX.Event._cache[el][func]=_fn;
	        if(el.attachEvent) {
	          el.attachEvent('on'+eventName,_fn);
	        } else if(el.addEventListener) {
	          el.addEventListener(eventName,_fn,false);
	        } else {
	          el['on'+eventName]=_fn;
	        }
	      };
	      this._batch(els,_run);
	    },
	    removeListener: function (els,eventName,func) {
	      var _run=function (el) {
	        if(el.detachEvent) {
	          el.detachEvent('on'+eventName,BX.Event._cache[el][func]);
	        } else if(el.removeEventListener) {
	          el.removeEventListener(eventName,BX.Event._cache[el][func],false);
	        } else {
	          el['on'+eventName]=null;
	        }
	        BX.Event._cache[el][func]=null;
	      }
	      this._batch(els,_run);
	    }
	  }
	  BX.Dom={
	    _batch: function (el,func) {
	      var _el=$A(el);
	      for(var i=0;i!=_el.length;i++) {
	        if(_el[i]) {
	          func(_el[i]);
	        }
	      }
	    },
	    getMouseXY: function (e) {
	      var _x=_y=0;
	      _x=document.documentElement.scrollLeft;
	      _y=document.documentElement.scrollTop;
	      if(e.clientX||e.clientY) {
	        _x+=e.clientX;
	        _y+=e.clientY;
	      } else if(e.pageX||e.pageY) {
	        _x+=e.pageX;
	        _y+=e.pageY;
	      }
	      return [_x,_y];
	    },
	    getXY: function (el) {
	      var _x=_y=0;
	      while(el) {
	        _x+=el.offsetLeft;
	        _y+=el.offsetTop;
	        el=el.parentElement;
	      }
	      return [_x,_y];
	    },
	    getWH: function (el) {
	      return [el.offsetWidth,el.offsetHeight];
	    },
	    setOpacity: function (els,val) {
	      var _run=function (el) {
	        el.style.MozOpacity=''+val/100;
	        el.style.filter='Alpha(Opacity='+val+')';
	      }
	      this._batch(els,_run);
	    },
	    hide: function (els) {
	      var _run=function (el) {
	        el.style.display='none';
	      }
	      this._batch(els,_run);
	    },
	    show: function (els) {
	      var _run=function (el) {
	        el.style.display='block';
	      }
	      this._batch(els,_run);
	    },
	    getClass: function (el) {
	      if($(el)) {
	        return $(el).className;
	      } else {
	        return;
	      }
	    },
	    setClass: function (els,val) {
	      var _run=function (el) {
	        el.className=val;
	      }
	      this._batch(els,_run);
	    },
	    addClass: function (els,val) {
	      if(!val) {
	        return;
	      }
	      var _run=function (el) {
	        var _cln=el.className.split(' ');
	        for(var i=0;i!=_cln.length;i++) {
	          if(_cln[i]==val) {
	            return;
	          }
	        }
	        if(el.className.length>0) {
	          el.className=el.className+' '+val;
	        } else {
	          el.className=val;
	        }
	      }
	      this._batch(els,_run);
	    },
	    hasClass: function (el,val) {
	      var _bl=false;
	      if($(el)) {
	        if(!el.className) {
	          return;
	        }
	        var _cln=el.className.split(' ');
	        for(var i=0;i!=_cln.length;i++) {
	          if(_cln[i]==val) {
	            _bl=true;
	            break;
	          }
	        }
	      }
	      return _bl;
	    },
	    removeClass: function (els,val) {
	      if(!val) {
	        return;
	      }
	      var _run=function (el) {
	        var _cln=el.className.split(' ');
	        var _s='';
	        for(var i=0;i!=_cln.length;i++) {
	          if(_cln[i]!=val) {
	            _s+=_cln[i]+' ';
	          }
	        }
	        if(_s==' ') {
	          _s='';
	        }
	        if(_s.length!=0) {
	          _s=_s.substr(0,_s.length-1);
	        }
	        el.className=_s;
	      }
	      this._batch(els,_run);
	    },
	    replaceClass: function (els,vala,valb) {
	      if(!vala||!valb) {
	        return;
	      }
	      var _run=function (el) {
	        var _cln=el.className.split(' ');
	        for(var i=0;i!=_cln.length;i++) {
	          if(_cln[i]==vala) {
	            _cln[i]=valb;
	          }
	        }
	        el.className=_cln.join(' ');
	      }
	      this._batch(els,_run);
	    },
	    setStyle: function (els,styleName,styleValue) {
	      var _run=function (el) {
	        el.style[styleName]=styleValue;
	      }
	      this._batch(els,_run);
	    },
	    getStyle: function (el,styleName) {
	      return el.style[styleName];
	    },
	    getElementsByClassName: function (parentEl,className,tagName) {
	      if(!parentEl||!className) {
	        return null;
	      }
	      var els=cds=[];
	      cds=$(parentEl).childNodes;
	      className=className.toUpperCase();
	      for(var i=0;i<cds.length;i++) {
	        var _type=cds[i].nodeType;
	        if(_type!=3&&_type!=8&&cds[i].className.toUpperCase()==className) {
	          if(!tagName||cds[i].nodeName.toUpperCase()==tagName.toUpperCase()) {
	            els[els.length]=cds[i];
	          }
	        }
	      }
	      return els;
	    }
	  }
	  BX.Cookie={
	    getExpDate: function (days,hours,minutes) {
	      var expDate=new Date();
	      if(typeof days=="number"&&typeof hours=="number"&&typeof hours=="number") {
	        expDate.setDate(expDate.getDate()+parseInt(days));
	        expDate.setHours(expDate.getHours()+parseInt(hours));
	        expDate.setMinutes(expDate.getMinutes()+parseInt(minutes));
	        return expDate.toGMTString();
	      }
	    },
	    getCookieVal: function (offset) {
	      var endstr=document.cookie.indexOf(";",offset);
	      if(endstr== -1) {
	        endstr=document.cookie.length;
	      }
	      return unescape(document.cookie.substring(offset,endstr));
	    },
	    getCookie: function (name) {
	      var arg=name+"=";
	      var alen=arg.length;
	      var clen=document.cookie.length;
	      var i=0;
	      while(i<clen) {
	        var j=i+alen;
	        if(document.cookie.substring(i,j)==arg) {
	          return this.getCookieVal(j);
	        }
	        i=document.cookie.indexOf(" ",i)+1;
	        if(i==0) break;
	      }
	      return "";
	    },
	    getCookies: function () {
	      _Cookie=new Array();
	      if(document.cookie.indexOf(";")!= -1) {
	        var _sp,_name,_tp,_tars,_tarslength;
	        var _item=document.cookie.split("; ");
	        var _itemlength=_item.length;
	        for(i=0;i<_itemlength;i++) {
	          _sp=_item[i].split("=");
	          _name=_sp[0];
	          _value=_sp[1];
	          _coo=new Array();
	          _coo['name']=_name;
	          _coo['value']=_value;
	          _Cookie.push(_coo);
	        }
	      }
	      return _Cookie;
	    },
	    setCookie: function (name,value,expires,path,domain,secure) {
	      document.cookie=name+"="+escape(value)+((expires)?"; expires="+expires:"")+((path)?"; path="+path:"")+((domain)?"; domain="+domain:"")+((secure)?"; secure":"");
	    },
	    deleteCookie: function (name,path,domain) {
	      if(this.getCookie(name)) {
	        document.cookie=name+"="+((path)?"; path="+path:"")+((domain)?"; domain="+domain:"")+"; expires=Thu, 01-Jan-70 00:00:01 GMT";
	      }
	    },
	    clearCookie: function () {
	      cookies=this.getCookies();
	      for(i=0;i<cookies.length;i++) {
	        this.deleteCookie(cookies[i]['name']);
	      }
	    },
	    getCookieString: function () {
	      return document.cookie;
	    }
	  }
	  var O=BX.Dom;
	  var V=BX.Event;
	  var C=BX.Cookie;
	  function Collection() {
	    this.items=[];
	  }
	  Collection.prototype={
	    add: function (col) {
	      this.items.push(col);
	    },
	    clear: function () {
	      this.items=[];
	    },
	    getCount: function () {
	      return this.items.length;
	    },
	    each: function (func) {
	      for(var i=0;i<this.getCount();i++) {
	        func(this.items[i]);
	      }
	    },
	    indexOf: function (item) {
	      var r= -1;
	      for(i=0;i<this.getCount();i++) {
	        if(item==this.items[i]) {
	          r=i;
	          break;
	        }
	      }
	      return r;
	    },
	    find: function (func) {
	      var r=null;
	      for(var i=0;i<this.getCount();i++) {
	        if(func(this.items[i])==true) {
	          r=this.items[i];
	          break;
	        }
	      }
	      return r;
	    },
	    findAll: function (func) {
	      var r=new Collection();
	      this.each(function (item) {
	        if(func(item)==true) {
	          r.add(item);
	        }
	      });
	      return r;
	    }
	  }
	  function TabPage(triggerId,sheetId) {
	    this.trigger=$(triggerId);
	    this.sheet=$(sheetId);
	  }
	  function TabControl() {
	    this.styleName=null;
	    this.tabPages=new Collection();
	    this.currentTabPage=null;
	    this.triggerType='click';
	    this.defaultPage=0;
	    this.enableSlide=false;
	    this.slideInterval=3000;
	    this.onChanging=new Collection();
	    this.onChanging.add(this.defaultChangingHandler);
	    this.onInit=new Collection();
	    this.onInit.add(this.defaultInitHandler);
	    this.onInit.add(this.autoSlideInitHandler);
	    this.onAdding=new Collection();
	    this.onAdding.add(this.defaultAddingHandler);
	    this._autoSlideEv=null;
	    this._preButton=null;
	    this._nextButton=null;
	  }
	  TabControl.prototype={
	    add: function (tabPage) {
	      this.tabPages.add(tabPage);
	      var handler=function (func) {
	        func(tabPage);
	      };
	      this.onAdding.each(handler);
	    },
	    addRange: function (triggers,sheets) {
	      if(triggers.length==0||triggers.length!=sheets.length) {
	        return;
	      }
	      for(var i=0;i<triggers.length;i++) {
	        var tabPage=new TabPage(triggers[i],sheets[i]);
	        this.add(tabPage);
	      }
	    },
	    preButton: function (id) {
	      this._preButton=$(id);
	    },

	    nextButton: function (id) {
	      this._nextButton=$(id);
	    },
	    pre: function (id) {
	      this.select(this.currentTabPage-1);
	    },
	    next: function (id) {
	      this.select(this.currentTabPage+1);
	    },
	    defaultAddingHandler: function (tabPage) {
	    },
	    init: function () {
	      var _=this;
	      var handler=function (func) {
	        func(_);
	      }
	      if(this.tabPages.getCount()==0) {
	        return;
	      }
	      if(this.currentTabPage==null) {
	        this.currentTabPage=this.tabPages.items[this.defaultPage];
	      }
	      this.onInit.each(handler);
	      if(this._preButton) this._preButton.onclick=this.pre;
	      if(this._nextButton) this._nextButton.onclick=this.next;
	    },
	    defaultInitHandler: function (obj) {
	      var handler=function (item) {
	        V.addListener(item.trigger,obj.triggerType,obj.selectHanlder,obj);
	        O.hide(item.sheet);
	      };
	      obj.tabPages.each(handler);
	      obj.select(obj.defaultPage);
	    },
	    autoSlideInitHandler: function (o) {
	      if(!o.enableSlide) {
	        return;
	      }
	      var delayStartEv=null;
	      var delayStartHandler=function () {
	        delayStartEv=setTimeout(function () {
	          o.autoSlideHandler(o);
	        },300);
	      };
	      var clearHandler=function () {
	        clearTimeout(delayStartEv);
	        clearInterval(o._autoSlideEv);
	      };

	      var handler=function (item) {
	        V.addListener(item.trigger,o.triggerType,clearHandler,o);
	        V.addListener(item.sheet,'mouseover',clearHandler,o);
	        V.addListener([item.trigger,item.sheet],'mouseout',delayStartHandler,o);
	      };
	      o.tabPages.each(handler);
	      o.autoSlideHandler(o);
	    },
	    autoSlideHandler: function (o) {
	      var count=o.tabPages.getCount();
	      clearInterval(o._autoSlideEv);
	      o._autoSlideEv=setInterval(function () {
	        var i=o.indexOf(o.currentTabPage.trigger);
	        if(i== -1) {
	          return;
	        }
	        i++;
	        if(i>=count) {
	          i=0;
	        }
	        o.select(i);
	      },o.slideInterval);
	    },
	    selectHanlder: function (e,o) {
	      var i=this.indexOf(o);
	      this.select(i);
	    },
	    select: function (i) {
	      if(i<0||i>=this.tabPages.getCount()) {
	        return;
	      }
	      var _=this;
	      var page=this.tabPages.items[i];
	      var handler=function (func) {
	        func(_.currentTabPage,page);
	      };
	      this.onChanging.each(handler);
	      this.currentTabPage=page;
	    },
	    defaultChangingHandler: function (oldTabPage,newTabPage) {
	      if(oldTabPage.sheet) {
	        O.hide(oldTabPage.sheet);
	      }
	      if(newTabPage.sheet) {
	        O.show(newTabPage.sheet);
	      }
	      O.removeClass(oldTabPage.trigger,'current');
	      O.addClass(newTabPage.trigger,'current');
	    },
	    indexOf: function (trigger) {
	      var r= -1;
	      var handler=function (item) {
	        return item.trigger==trigger;
	      };
	      var item=this.tabPages.find(handler);
	      if(item!=null) {
	        r=this.tabPages.indexOf(item);
	      }
	      return r;
	    }
	  }
