var W=W||{};

(function(){W.Dom={isSafari:/webkit/i.test(navigator.userAgent),isIE:/msie/i.test(navigator.userAgent)&&!/opera/.test(navigator.userAgent),isMozilla:/mozilla/i.test(navigator.userAgent)&&!/(compatible|webkit)/i.test(navigator.userAgent),isOpera:/opera/i.test(navigator.userAgent),$:function(id){if(typeof id=='string'){id=document.getElementById(id);}
return id;},loaded:false,load_timer:null,load_funcs:null,load:function(func)
{if(this.loaded){return func();}
if(this.load_timer){this.load_funcs.push(func);}else{var obj=this;W.Event.add(window,'load',function(){obj.isLoaded();});this.load_funcs=[func];this.load_timer=setInterval(function(){obj.isLoaded();},13);}},isLoaded:function()
{if(this.loaded){return true;}
if(document&&document.getElementsByTagName&&document.getElementById&&document.body){clearInterval(this.load_timer);this.load_timer=null;for(var i=0,max=this.load_funcs.length;i<max;++i){var temp=this.load_funcs[i];this.load_funcs[i]=null;if(temp){temp();}}
this.loaded=true;}},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(className,node,tag){if(document.getElementsByClassName){node=this.$(node)||document.body;return node.getElementsByClassName(className);}else{var classElements=[];node=this.$(node)||document.body;tag=tag||'*';var els=node.getElementsByTagName(tag);var elsLen=els.length;var pattern=new RegExp('(^|\\s)'+className+'(\\s|$)');if(tag=='*'&&!elsLen&&document.all){els=document.all;elsLen=els.length;}
for(var i=0,j=0;i<elsLen;i++){if(pattern.test(els[i].className)){classElements[j]=els[i];j++;}}
return classElements;}},preload:function()
{var tmp;for(var i=0,l=arguments.length;i<l;++i){tmp=new Image().src=arguments[i];}},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};var rect=null;if(elem.getBoundingClientRect){var scroll=this.getScroll();rect=elem.getBoundingClientRect();offsets.left=rect.left+scroll.x;offsets.top=rect.top+scroll.y;}else{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;},isArray:function(obj)
{var result=Object.prototype.toString.apply(obj);return result=='[object Array]'||result=='[object HTMLCollection]'||result=='[object NodeList]';},addClassName:function(node,className)
{if(!node||!className){return false;}
node=this.$(node);if(node.className.indexOf(className)==-1){node.className=node.className+' '+className;}},removeClassName:function(nodes,className)
{if(!nodes||!className){return false;}
if(!this.isArray(nodes)){nodes=[nodes];}
if(!nodes.length){return;}
var node,regex=new RegExp('\\b ?'+className+'\\b');for(var i=nodes.length;--i>=0;){node=W.$(nodes[i]);if(node){node.className=node.className.replace(regex,'');}}},hasClassName:function(node,className)
{if(!node||!className){return false;}
node=this.$(node);var regex=new RegExp('\\b ?'+className+'\\b');return(node.className.search(regex)!=-1);},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;}},find:function(tag,node)
{tag=tag.toUpperCase();while(node.tagName.toUpperCase()!=tag&&node.tagName.toUpperCase()!='HTML'){node=node.parentNode;}
return(node.tagName.toUpperCase()=='HTML')?null:node;},make:function(elem,param)
{var node;node=document.createElement(elem);
for(var attr in param){switch(attr){case'text':case'innerHTML':node.innerHTML=param[attr];break;case'class':case'className':node.className=param[attr];break;default:node.setAttribute(attr,param[attr]);break;}}
return node;},text:function(elem)
{elem=W.$(elem);if(!elem){return false;}
return elem.innerText||elem.textContent;},append:function(parent,child,before)
{if(!before){before=null;}else{before=this.$(before);}
if(!parent){parent=before.parentNode;}
return parent.insertBefore(child,before);},remove:function(node)
{node=W.$(node);if(!node){return false;}
return node.parentNode.removeChild(node);},empty:function(node)
{node.innerHTML='';},hide:function(nodes)
{if(!nodes){return;}
if(nodes.length){for(var i=nodes.length;--i>=0;){nodes[i].style.display='none';}}else{nodes.style.display='none';}}};})();W.$=W.Dom.$;

(function(){W.Event={guid:1,listeners:[],handlers:[],add:function(obj,type,fn)
{if(!type&&!fn){if(obj===undefined){return false;}
return this.add_listener(obj);}
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,function(){fn.call(obj);});result=r;}
else{old=obj['on'+type];if(typeof obj['on'+type]!='function'){obj['on'+type]=fn;}else{obj['on'+type]=function()
{old();fn();};}}
if(!obj.guid){obj.guid=this.handlers.length;}
this.handlers[obj.guid]={type:type,fn:fn};return result;},add_listener:function(obj)
{if(!obj.guid){obj.guid=this.guid++;}
if(!this.listeners.length){this.listeners.push(obj);}else{for(var i=this.listeners.length;--i>=0;){if(this.listeners[i].guid==obj.guid){return false;}}
this.listeners.push(obj);}
return true;},remove:function(obj,type,fn)
{if(!type&&!fn){if(obj===undefined){return false;}
for(var i=this.listeners.length;--i>=0;){if(this.listeners[i]==obj){this.listeners.splice(i,1);return true;}}
return false;}
if(obj.guid){var guid=obj.guid;if(this.handlers[guid]&&this.handlers[guid].type==type){if(obj.removeEventListener){obj.removeEventListener(type,this.handlers[guid].fn,false);}else if(obj.detachEvent){obj.detachEvent('on'+type,this.handlers[guid].fn);}else{obj['on'+type]=null;}
this.handlers.splice(guid,1);obj.guid=null;}}},fire:function(elem,type)
{if(document.createEvent){var event=document.createEvent('MouseEvents');event.initMouseEvent(type,true,true,window,0,0,0,0,0,false,false,false,false,0,null);elem.dispatchEvent(event);}else{elem.fireEvent('on'+type);}},broadcast:function(fn)
{if(fn===undefined){return false;}
var args=Array.prototype.slice.call(arguments,1);for(var i=this.listeners.length;--i>=0;){if(this.listeners[i][fn]){this.listeners[i][fn].apply(this.listeners[i],args);}}},preventDefault:function(e)
{if(e.preventDefault){e.preventDefault();}else{e.returnValue=false;}},cancelBubble:function(e)
{if(e.stopPropagation){e.stopPropagation();}else{e.cancelBubble=true;}},stop:function(e)
{e=e||window.event;if(e){this.cancelBubble(e);this.preventDefault(e);}},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;},findTarget:function(e,target)
{target=target.toUpperCase();while(e.nodeName.toUpperCase()!=target&&e.nodeName.toUpperCase()!='HTML'){e=e.parentNode;}
return(e.nodeName.toUpperCase()=='HTML')?null:e;},keyCode:function(e)
{e=e||window.event;var keycode=e.keyCode;if(keycode===8){return'DELETE';}
if(keycode===16){return'SHIFT';}
if(keycode===9){return'TAB';}
if(keycode===91){return'CMD';}
if(keycode===224){return'CMD';}
if(keycode===18){return'ALT';}
if(keycode===17){return'CTL';}
if(keycode===20){return'CAPS';}
return keycode;},isAscii:function(e)
{e=e||window.event;var keycode=e.keyCode;if((keycode>=65&&keycode<=90)||(keycode>=48&&keycode<=57)){return true;}
return false;},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,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);},pause:function()
{clearInterval(this.timer);},resume:function()
{var obj=this;this.timer=setInterval(function(){obj.tween();},this.interval);},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));}};
