var W={};
(function(){W.Dom={isSafari:/Safari/.test(navigator.userAgent),isIE:/msie/.test(navigator.userAgent)&&!/opera/.test(navigator.userAgent),$:function(id){if(typeof id=='string'){id=document.getElementById(id);}
return id;},getStyle:function(element,property)
{element=this.$(element);if(element.style[property]){return element.style[property];}else if(element.currentStyle){return element.currentStyle[property];}else if(document.defaultView&&document.defaultView.getComputedStyle){var style=document.defaultView.getComputedStyle(element,null);if(!style){return null;}
return style[property];}else{return null;}},getElementsByClassName:function(searchClass,tag,node){var classElements=[];node=this.$(node)||document.body;tag=tag||'*';var els=node.getElementsByTagName(tag);var elsLen=els.length;var pattern=new RegExp('(^|\\s)'+searchClass+'(\\s|$)');for(var i=0,j=0;i<elsLen;i++){if(pattern.test(els[i].className)){classElements[j]=els[i];j++;}}
return classElements;},preload:function(img)
{new Image().src=img;},getWindowSize:function()
{var size={x:0,y:0};if(document.documentElement&&document.documentElement.clientHeight){size.x=document.documentElement.clientWidth;size.y=document.documentElement.clientHeight;}else if(document.body){size.x=document.body.clientWidth;size.y=document.body.clientHeight;}
return size;},getOffsets:function(elem)
{var offsets={left:0,top:0};while(elem){offsets.left+=elem.offsetLeft;offsets.top+=elem.offsetTop;elem=elem.offsetParent;}
return offsets;},getScroll:function()
{var scroll={x:0,y:0};if(window.scrollY!==undefined){return function()
{scroll.y=window.scrollY;scroll.x=window.scrollX;return scroll;};}else if(document.documentElement&&document.compatMode){return function()
{scroll.y=document.documentElement.scrollTop;scroll.x=document.documentElement.scrollLeft;return scroll;};}else{return function()
{scroll.y=document.body.scrollTop;scroll.x=document.body.scrollLeft;return scroll;};}}(),getContentSize:function()
{var size={x:0,y:0};var size_ie={x:0,y:0};if(document.documentElement&&document.documentElement.scrollWidth){size.x=document.documentElement.scrollWidth;size.y=document.documentElement.scrollHeight;}
size_ie.x=document.body.scrollWidth;size_ie.y=document.body.scrollHeight;if(size_ie.x>size.x){size.x=size_ie.x;}
if(size_ie.y>size.y){size.y=size_ie.y;}
var win=this.getWindowSize();if(win.y>size.y){size.y=win.y;}
if(win.x>size.x){size.x=win.x;}
return size;},addClassname:function(node,className)
{node=this.$(node);if(node.className.indexOf(className)==-1){node.className=node.className+' '+className;}},removeClassname:function(node,className)
{node=this.$(node);var regex=new RegExp('\\b ?'+className+'\\b');node.className=node.className.replace(regex,'');},changeClassname:function(node,className)
{if(!node){return;}
var elements=[];if(typeof node=='string'){node=this.$(node);elements.push(node);}else{elements=node;}
for(var obj in elements){elements[obj].className=className;}}};})();W.$=W.Dom.$;
(function(){W.Event={add:function(obj,type,fn)
{var result,r,old;if(obj.addEventListener){if(type=='mousewheel')obj.addEventListener('DOMMouseScroll',fn,false);obj.addEventListener(type,fn,false);result=true;}
else if(obj.attachEvent){r=obj.attachEvent('on'+type,fn);result=r;}
else{old=obj['on'+type];if(typeof obj['on'+type]!='function'){obj['on'+type]=fn;}else{obj['on'+type]=function()
{old();fn();};}}
return result;},remove:function(obj,type,fn)
{if(obj.removeEventListener){obj.removeEventListener(type,fn,false);}else if(obj.detachEvent){obj.detachEvent('on'+type,fn);}else{obj['on'+type]=null;}},preventDefault:function(e)
{e.returnValue=false;if(e.preventDefault){e.preventDefault();}
return false;},cancelBubble:function(e)
{e.cancelBubble=true;if(e.stopPropagation){e.stopPropagation();}},stop:function(e)
{if(window.event){window.event.cancelBubble=true;window.event.returnValue=false;}
if(e&&e.stopPropagation&&e.preventDefault){e.stopPropagation();e.preventDefault();}},source:function(e)
{return window.event?window.event.srcElement:e?e.target:null;},target:function(e,targetElement)
{return window.event?targetElement:e?e.currentTarget:null;},getTarget:function(e)
{var targetElement=null;targetElement=this.source(e);while(targetElement.nodeType==3&&targetElement.parentNode!==null){targetElement=targetElement.parentNode;}
return targetElement;},Cache:function()
{var listEvents=[];return{listEvents:listEvents,add:function(node,sEventName,fHandler){listEvents.push(arguments);},flush:function(){var i,item;for(i=listEvents.length-1;i>=0;i=i-1){item=listEvents[i];if(item[0].removeEventListener){item[0].removeEventListener(item[1],item[2],item[3]);}
if(item[1].substring(0,2)!="on"){item[1]="on"+item[1];}
if(item[0].detachEvent){item[0].detachEvent(item[1],item[2]);}
item[0][item[1]]=null;}}};}()};})();Function.prototype.bind=function(object,args)
{var method=this;return function(event){return method.call(object,event||window.event,args);};};if(Array.prototype.push===null){Array.prototype.push=function(){for(var i=0;i<arguments.length;++i){this[this.length]=arguments[i];}
return this.length;};}
W.Event.add(window,'unload',W.Event.Cache.flush);
W.Tween=function(param)
{this.init(param);};W.Tween.prototype={interval:30,b:0,c:0,d:0,e:0,t:0,a:0,p:0,s:0,o:null,om:'',f:null,cb:null,args:null,timer:null,event:null,init:function(param)
{var obj=this;this.b=param.start;this.c=param.change;this.d=param.duration;this.e=param.end;this.a=param.amplitude;this.p=param.period;this.s=param.overshoot;this.o=param.obj;this.om=param.bind;this.f=param.method;this.cb=param.callback;this.args=param.args;if(this.c===undefined&&this.e!==undefined){this.c=this.e-this.b;}
this.timer=setInterval(function(){obj.tween();},this.interval);},tween:function()
{++this.t;if(this.t<=this.d){this.o[this.om](this[this.f](),this.args);}else{clearInterval(this.timer);if(this.cb){this.o[this.cb](this.args);}}},stop:function()
{clearInterval(this.timer);},linear:function()
{var t=this.t;var b=this.b;var c=this.c;var d=this.d;return c*t/d+b;},easeInOutQuad:function()
{var t=this.t;var b=this.b;var c=this.c;var d=this.d;if((t/=d/2)<1){return Math.floor((c/2*t*t+b));}
return Math.floor((-c/2*((--t)*(t-2)-1)+b));},easeOutQuart:function()
{var t=this.t;var b=this.b;var c=this.c;var d=this.d;return-c*((t=t/d-1)*t*t*t-1)+b;},easeInOutQuart:function()
{var t=this.t;var b=this.b;var c=this.c;var d=this.d;if((t/=d/2)<1){return Math.floor(c/2*t*t*t*t+b);}
return Math.floor((-c/2*((t-=2)*t*t*t-2)+b));},easeInOutSine:function()
{var t=this.t;var b=this.b;var c=this.c;var d=this.d;return Math.floor((-c/2*(Math.cos(Math.PI*t/d)-1)+b));}};