var $J = function(query) {
	if(typeof query == 'function')
		$J.onLoad(query);
	else
		return new $Jobject(query);
}

$J.onLoad = function(closure)
{
	if(typeof window.addEventListener != 'undefined') //.. gecko, safari, konqueror and standard
	    window.addEventListener('load', closure, false);
	else if(typeof document.addEventListener != 'undefined')  //.. opera 
	    document.addEventListener('load', closure, false);
	else if(typeof window.attachEvent != 'undefined') //.. win/ie
	    window.attachEvent('onload', closure);
	else
	{
	    if(typeof window.onload == 'function')
	    {
	        var existing = onload;
	        window.onload = function()
	        {
	            existing();
	            closure();
	        };
	    }
	    else
	        window.onload = closure;
	}
}


var $Jobject = function(query)
{
	this.query = query;
	var sz = Sizzle(query);
	this.length = sz.length;
	
	for(var i = 0; i < this.length; i++)
		this[i] = sz[i];
		
	this.get = function(i) {
		if(typeof this[i] != 'undefined') return this[i];
		return {};
	};
	
	this.each = function(func) {
		for(var i = 0; i < this.length; i++)
			func.call(this[i], i);
	};
	
	this.html = function(html) {
		if(typeof html != 'undefined') this.each(function() { this.innerHTML = html });
		return this.get(0).innerHTML;
	}
	
	this.hide = function() {
		this.each(function() { 
			this.displayType = this.style.display;
			this.style.display = 'none';
		});
	}
	
	this.show = function() {
		this.each(function() {
			this.style.display = this.displayType ? this.displayType : 'block';
		});
	}
};

eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(8(){6 k=/((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^[\\]]*\\]|[\'"][^\'"]*[\'"]|[^[\\]\'"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?/g,1G=0,1H=31.1I.1H,1f=E;6 n=8(a,b,c,d){c=c||[];6 e=b=b||H;5(b.C!==1&&b.C!==9){7[]}5(!a||M a!=="1s"){7 c}6 f=[],m,J,F,N,32,1J,23=z,1t=u(b);k.33=0;T((m=k.1g(a))!==I){f.O(m[1]);5(m[2]){1J=24.34;X}}5(f.y>1&&p.1g(a)){5(f.y===2&&o.18[f[0]]){J=v(f[0]+f[1],b)}A{J=o.18[f[0]]?[b]:n(f.1K(),b);T(f.y){a=f.1K();5(o.18[a])a+=f.1K();J=v(a,J)}}}A{5(!d&&f.y>1&&b.C===9&&!1t&&o.x.Y.P(f[0])&&!o.x.Y.P(f[f.y-1])){6 g=n.12(f.1K(),b,1t);b=g.1h?n.G(g.1h,g.J)[0]:g.J[0]}5(b){6 g=d?{1h:f.Z(),J:r(d)}:n.12(f.Z(),f.y===1&&(f[0]==="~"||f[0]==="+")&&b.13?b.13:b,1t);J=g.1h?n.G(g.1h,g.J):g.J;5(f.y>0){F=r(J)}A{23=E}T(f.y){6 h=f.Z(),Z=h;5(!o.18[h]){h=""}A{Z=f.Z()}5(Z==I){Z=b}o.18[h](F,Z,1t)}}A{F=f=[]}}5(!F){F=J}5(!F){2o"2p 2q, 2r 2s: "+(h||a);}5(1H.1L(F)==="[2t 1u]"){5(!23){c.O.1M(c,F)}A 5(b&&b.C===1){B(6 i=0;F[i]!=I;i++){5(F[i]&&(F[i]===z||F[i].C===1&&t(b,F[i]))){c.O(J[i])}}}A{B(6 i=0;F[i]!=I;i++){5(F[i]&&F[i].C===1){c.O(J[i])}}}}A{r(F,c)}5(1J){n(1J,e,c,d);n.2u(c)}7 c};n.2u=8(a){5(s){1f=E;a.35(s);5(1f){B(6 i=1;i<a.y;i++){5(a[i]===a[i-1]){a.2v(i--,1)}}}}};n.36=8(a,b){7 n(a,I,I,b)};n.12=8(a,b,c){6 d,x;5(!a){7[]}B(6 i=0,l=o.1N.y;i<l;i++){6 e=o.1N[i],x;5((x=o.x[e].1g(a))){6 f=24.37;5(f.25(f.y-1)!=="\\\\"){x[1]=(x[1]||"").19(/\\\\/g,"");d=o.12[e](x,b,c);5(d!=I){a=a.19(o.x[e],"");X}}}}5(!d){d=b.1O("*")}7{J:d,1h:a}};n.G=8(a,b,c,d){6 e=a,U=[],14=b,x,1a,2w=b&&b[0]&&u(b[0]);T(a&&b.y){B(6 f 1P o.G){5((x=o.x[f].1g(a))!=I){6 g=o.G[f],1i,1v;1a=E;5(14==U){U=[]}5(o.26[f]){x=o.26[f](x,14,c,U,d,2w);5(!x){1a=1i=z}A 5(x===z){38}}5(x){B(6 i=0;(1v=14[i])!=I;i++){5(1v){1i=g(1v,x,i,14);6 h=d^!!1i;5(c&&1i!=I){5(h){1a=z}A{14[i]=E}}A 5(h){U.O(1v);1a=z}}}}5(1i!==10){5(!c){14=U}a=a.19(o.x[f],"");5(!1a){7[]}X}}}5(a==e){5(1a==I){2o"2p 2q, 2r 2s: "+a;}A{X}}e=a}7 14};6 o=n.39={1N:["Y","27","1j"],x:{Y:/#((?:[\\w\\1k-\\1w-]|\\\\.)+)/,1x:/\\.((?:[\\w\\1k-\\1w-]|\\\\.)+)/,27:/\\[28=[\'"]*((?:[\\w\\1k-\\1w-]|\\\\.)+)[\'"]*\\]/,29:/\\[\\s*((?:[\\w\\1k-\\1w-]|\\\\.)+)\\s*(?:(\\S?=)\\s*([\'"]*)(.*?)\\3|)\\s*\\]/,1j:/^((?:[\\w\\1k-\\3a\\*3b-]|\\\\.)+)/,1Q:/:(2x|1y|1b|1z)-3c(?:\\((1R|1S|[\\3d+-]*)\\))?/,1A:/:(1y|2y|2z|2A|1z|1b|1R|1S)(?:\\((\\d*)\\))?(?=[^-]|$)/,1B:/:((?:[\\w\\1k-\\1w-]|\\\\.)+)(?:\\(([\'"]*)((?:\\([^\\)]+\\)|[^\\2\\(\\)]*)+)\\2\\))?/},2a:{"1C":"1D","B":"3e"},1T:{1l:8(a){7 a.15("1l")}},18:{"+":8(a,b,c){6 d=M b==="1s",2b=d&&!/\\W/.P(b),2c=d&&!2b;5(2b&&!c){b=b.1m()}B(6 i=0,l=a.y,K;i<l;i++){5((K=a[i])){T((K=K.1E)&&K.C!==1){}a[i]=2c||K&&K.11===b?K||E:K===b}}5(2c){n.G(b,a,z)}},">":8(a,b,c){6 d=M b==="1s";5(d&&!/\\W/.P(b)){b=c?b:b.1m();B(6 i=0,l=a.y;i<l;i++){6 e=a[i];5(e){6 f=e.13;a[i]=f.11===b?f:E}}}A{B(6 i=0,l=a.y;i<l;i++){6 e=a[i];5(e){a[i]=d?e.13:e.13===b}}5(d){n.G(b,a,z)}}},"":8(a,b,c){6 d=1G++,1n=2d;5(!b.x(/\\W/)){6 e=b=c?b:b.1m();1n=2e}1n("13",b,d,a,e,c)},"~":8(a,b,c){6 d=1G++,1n=2d;5(M b==="1s"&&!b.x(/\\W/)){6 e=b=c?b:b.1m();1n=2e}1n("1E",b,d,a,e,c)}},12:{Y:8(a,b,c){5(M b.1F!=="10"&&!c){6 m=b.1F(a[1]);7 m?[m]:[]}},27:8(a,b,c){5(M b.2B!=="10"){6 d=[],1U=b.2B(a[1]);B(6 i=0,l=1U.y;i<l;i++){5(1U[i].15("28")===a[1]){d.O(1U[i])}}7 d.y===0?I:d}},1j:8(a,b){7 b.1O(a[1])}},26:{1x:8(a,b,c,d,e,f){a=" "+a[1].19(/\\\\/g,"")+" ";5(f){7 a}B(6 i=0,K;(K=b[i])!=I;i++){5(K){5(e^(K.1D&&(" "+K.1D+" ").1o(a)>=0)){5(!c)d.O(K)}A 5(c){b[i]=E}}}7 E},Y:8(a){7 a[1].19(/\\\\/g,"")},1j:8(a,b){B(6 i=0;b[i]===E;i++){}7 b[i]&&u(b[i])?a[1]:a[1].1m()},1Q:8(a){5(a[1]=="1y"){6 b=/(-?)(\\d*)n((?:\\+|-)?\\d*)/.1g(a[2]=="1R"&&"2n"||a[2]=="1S"&&"2n+1"||!/\\D/.P(a[2])&&"3f+"+a[2]||a[2]);a[2]=(b[1]+(b[2]||1))-0;a[3]=b[3]-0}a[0]=1G++;7 a},29:8(a,b,c,d,e,f){6 g=a[1].19(/\\\\/g,"");5(!f&&o.2a[g]){a[1]=o.2a[g]}5(a[2]==="~="){a[4]=" "+a[4]+" "}7 a},1B:8(a,b,c,d,e){5(a[1]==="2C"){5(a[3].x(k).y>1||/^\\w/.P(a[3])){a[3]=n(a[3],I,I,b)}A{6 f=n.G(a[3],b,c,z^e);5(!c){d.O.1M(d,f)}7 E}}A 5(o.x.1A.P(a[0])||o.x.1Q.P(a[0])){7 z}7 a},1A:8(a){a.3g(z);7 a}},2D:{3h:8(a){7 a.2f===E&&a.V!=="3i"},2f:8(a){7 a.2f===z},2E:8(a){7 a.2E===z},2F:8(a){a.13.3j;7 a.2F===z},1p:8(a){7!!a.1c},3k:8(a){7!a.1c},3l:8(a,i,b){7!!n(b[3],a).y},3m:8(a){7/h\\d/i.P(a.11)},2G:8(a){7"2G"===a.V},2H:8(a){7"2H"===a.V},2I:8(a){7"2I"===a.V},2J:8(a){7"2J"===a.V},2K:8(a){7"2K"===a.V},2L:8(a){7"2L"===a.V},2M:8(a){7"2M"===a.V},2N:8(a){7"2N"===a.V},2g:8(a){7"2g"===a.V||a.11.1m()==="3n"},2O:8(a){7/2O|3o|3p|2g/i.P(a.11)}},2P:{1z:8(a,i){7 i===0},1b:8(a,i,b,c){7 i===c.y-1},1R:8(a,i){7 i%2===0},1S:8(a,i){7 i%2===1},2A:8(a,i,b){7 i<b[3]-0},2z:8(a,i,b){7 i>b[3]-0},1y:8(a,i,b){7 b[3]-0==i},2y:8(a,i,b){7 b[3]-0==i}},G:{1B:8(a,b,i,c){6 d=b[1],G=o.2D[d];5(G){7 G(a,i,b,c)}A 5(d==="2h"){7(a.3q||a.3r||"").1o(b[3])>=0}A 5(d==="2C"){6 e=b[3];B(6 i=0,l=e.y;i<l;i++){5(e[i]===a){7 E}}7 z}},1Q:8(a,b){6 c=b[1],L=a;3s(c){1V\'2x\':1V\'1z\':T(L=L.1E){5(L.C===1)7 E}5(c==\'1z\')7 z;L=a;1V\'1b\':T(L=L.2Q){5(L.C===1)7 E}7 z;1V\'1y\':6 d=b[2],1b=b[3];5(d==1&&1b==0){7 z}6 e=b[0],1p=a.13;5(1p&&(1p.17!==e||!a.2i)){6 f=0;B(L=1p.1c;L;L=L.2Q){5(L.C===1){L.2i=++f}}1p.17=e}6 g=a.2i-1b;5(d==0){7 g==0}A{7(g%d==0&&g/d>=0)}}},Y:8(a,b){7 a.C===1&&a.15("1d")===b},1j:8(a,b){7(b==="*"&&a.C===1)||a.11===b},1x:8(a,b){7(" "+(a.1D||a.15("1C"))+" ").1o(b)>-1},29:8(a,b){6 c=b[1],U=o.1T[c]?o.1T[c](a):a[c]!=I?a[c]:a.15(c),R=U+"",q=b[2],N=b[4];7 U==I?q==="!=":q==="="?R===N:q==="*="?R.1o(N)>=0:q==="~="?(" "+R+" ").1o(N)>=0:!N?R&&U!==E:q==="!="?R!=N:q==="^="?R.1o(N)===0:q==="$="?R.25(R.y-N.y)===N:q==="|="?R===N||R.25(0,N.y+1)===N+"-":E},1A:8(a,b,i,c){6 d=b[2],G=o.2P[d];5(G){7 G(a,i,b,c)}}}};6 p=o.x.1A;B(6 q 1P o.x){o.x[q]=2R 24(o.x[q].2S+/(?![^\\[]*\\])(?![^\\(]*\\))/.2S)}6 r=8(a,b){a=1u.1I.2T.1L(a);5(b){b.O.1M(b,a);7 b}7 a};2U{1u.1I.2T.1L(H.1e.3t)}2V(e){r=8(a,b){6 c=b||[];5(1H.1L(a)==="[2t 1u]"){1u.1I.O.1M(c,a)}A{5(M a.y==="3u"){B(6 i=0,l=a.y;i<l;i++){c.O(a[i])}}A{B(6 i=0;a[i];i++){c.O(a[i])}}}7 c}}6 s;5(H.1e.1W){s=8(a,b){6 c=a.1W(b)&4?-1:a===b?0:1;5(c===0){1f=z}7 c}}A 5("2j"1P H.1e){s=8(a,b){6 c=a.2j-b.2j;5(c===0){1f=z}7 c}}A 5(H.2k){s=8(a,b){6 c=a.1X.2k(),1Y=b.1X.2k();c.2W(a);c.2X(z);1Y.2W(b);1Y.2X(z);6 d=c.3v(3w.3x,1Y);5(d===0){1f=z}7 d}}(8(){6 d=H.1Z("Q"),1d="3y"+(2R 3z).3A();d.20="<a 28=\'"+1d+"\'/>";6 e=H.1e;e.3B(d,e.1c);5(!!H.1F(1d)){o.12.Y=8(a,b,c){5(M b.1F!=="10"&&!c){6 m=b.1F(a[1]);7 m?m.1d===a[1]||M m.21!=="10"&&m.21("1d").2Y===a[1]?[m]:10:[]}};o.G.Y=8(a,b){6 c=M a.21!=="10"&&a.21("1d");7 a.C===1&&c&&c.2Y===b}}e.3C(d)})();(8(){6 e=H.1Z("Q");e.3D(H.3E(""));5(e.1O("*").y>0){o.12.1j=8(a,b){6 c=b.1O(a[1]);5(a[1]==="*"){6 d=[];B(6 i=0;c[i];i++){5(c[i].C===1){d.O(c[i])}}c=d}7 c}}e.20="<a 1l=\'#\'></a>";5(e.1c&&M e.1c.15!=="10"&&e.1c.15("1l")!=="#"){o.1T.1l=8(a){7 a.15("1l",2)}}})();5(H.22)(8(){6 f=n,Q=H.1Z("Q");Q.20="<p 1C=\'2Z\'></p>";5(Q.22&&Q.22(".2Z").y===0){7}n=8(a,b,c,d){b=b||H;5(!d&&b.C===9&&!u(b)){2U{7 r(b.22(a),c)}2V(e){}}7 f(a,b,c,d)};B(6 g 1P f){n[g]=f[g]}})();5(H.1q&&H.1e.1q)(8(){6 d=H.1Z("Q");d.20="<Q 1C=\'P e\'></Q><Q 1C=\'P\'></Q>";5(d.1q("e").y===0)7;d.3F.1D="e";5(d.1q("e").y===1)7;o.1N.2v(1,0,"1x");o.12.1x=8(a,b,c){5(M b.1q!=="10"&&!c){7 b.1q(a[1])}}})();8 2e(a,b,c,d,e,f){6 g=a=="1E"&&!f;B(6 i=0,l=d.y;i<l;i++){6 h=d[i];5(h){5(g&&h.C===1){h.17=c;h.1r=i}h=h[a];6 j=E;T(h){5(h.17===c){j=d[h.1r];X}5(h.C===1&&!f){h.17=c;h.1r=i}5(h.11===b){j=h;X}h=h[a]}d[i]=j}}}8 2d(a,b,c,d,e,f){6 g=a=="1E"&&!f;B(6 i=0,l=d.y;i<l;i++){6 h=d[i];5(h){5(g&&h.C===1){h.17=c;h.1r=i}h=h[a];6 j=E;T(h){5(h.17===c){j=d[h.1r];X}5(h.C===1){5(!f){h.17=c;h.1r=i}5(M b!=="1s"){5(h===b){j=z;X}}A 5(n.G(b,[h]).y>0){j=h;X}}h=h[a]}d[i]=j}}}6 t=H.1W?8(a,b){7 a.1W(b)&16}:8(a,b){7 a!==b&&(a.2h?a.2h(b):z)};6 u=8(a){7 a.C===9&&a.1e.11!=="30"||!!a.1X&&a.1X.1e.11!=="30"};6 v=8(a,b){6 c=[],2l="",x,2m=b.C?[b]:b;T((x=o.x.1B.1g(a))){2l+=x[0];a=a.19(o.x.1B,"")}a=o.18[a]?a+"*":a;B(6 i=0,l=2m.y;i<l;i++){n(a,2m[i],c)}7 n.G(2l,c)};3G.3H=n})();',62,230,'|||||if|var|return|function|||||||||||||||||||||||||match|length|true|else|for|nodeType||false|checkSet|filter|document|null|set|elem|node|typeof|check|push|test|div|value||while|result|type||break|ID|pop|undefined|nodeName|find|parentNode|curLoop|getAttribute||sizcache|relative|replace|anyFound|last|firstChild|id|documentElement|hasDuplicate|exec|expr|found|TAG|u00c0|href|toUpperCase|checkFn|indexOf|parent|getElementsByClassName|sizset|string|contextXML|Array|item|uFFFF_|CLASS|nth|first|POS|PSEUDO|class|className|previousSibling|getElementById|done|toString|prototype|extra|shift|call|apply|order|getElementsByTagName|in|CHILD|even|odd|attrHandle|results|case|compareDocumentPosition|ownerDocument|bRange|createElement|innerHTML|getAttributeNode|querySelectorAll|prune|RegExp|substr|preFilter|NAME|name|ATTR|attrMap|isTag|isPartStrNotTag|dirCheck|dirNodeCheck|disabled|button|contains|nodeIndex|sourceIndex|createRange|later|root||throw|Syntax|error|unrecognized|expression|object|uniqueSort|splice|isXMLFilter|only|eq|gt|lt|getElementsByName|not|filters|checked|selected|text|radio|checkbox|file|password|submit|image|reset|input|setFilters|nextSibling|new|source|slice|try|catch|selectNode|collapse|nodeValue|TEST|HTML|Object|mode|lastIndex|rightContext|sort|matches|leftContext|continue|selectors|uFFFF|_|child|dn|htmlFor|0n|unshift|enabled|hidden|selectedIndex|empty|has|header|BUTTON|select|textarea|textContent|innerText|switch|childNodes|number|compareBoundaryPoints|Range|START_TO_END|script|Date|getTime|insertBefore|removeChild|appendChild|createComment|lastChild|window|Sizzle'.split('|'),0,{}))

$Ajax = function(url, options) 
{	
	if(typeof ActiveXObject != 'undefined') {
		try { this.http = new ActiveXObject("Msxml2.XMLHTTP"); }
		catch (e) {
			try { this.http = new ActiveXObject("Microsoft.XMLHTTP"); }
			catch (E) { this.http = false; }
		}
	} else if (window.XMLHttpRequest) {
		try { this.http = new XMLHttpRequest(); }
		catch (e) { this.http = false; }
	}
	
	if(!this.http || !url) return;
	
	if(!options) options = {};
		
	this.url = url;
	this.options = options;
	
	if (this.http.overrideMimeType) this.http.overrideMimeType('text/xml');

	options.method = options.method ? options.method.toUpperCase() : 'GET';
	options.format = options.format ? options.format.toLowerCase() : 'text';
	
	url += (url.indexOf('?')!=-1 ? '&' : '?') + 'uid=' + new Date().getTime();
	
	this.http.open(options.method, url, true);
	
	this.http.setRequestHeader("X-Requested-With", "XMLHttpRequest");
	
	if(options.method == 'POST') {
		options.post = options.post ? options.post : '';
		this.http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		this.http.setRequestHeader("Content-length", options.post.length);
		this.http.setRequestHeader("Connection", "close");
	}
	
	if(options.headers) {
		for(var i in options.headers) {
			this.http.setRequestHeader(i, options.headers[i]);
		}
	}
	
	var $this = this;
	
	this.http.onreadystatechange = function() {
		if(this.readyState == 4) {
			if(options['on'+this.status]) options['on'+this.status].call(this);
			else {
				if(this.status == 200) {
					$this.text = this.responseText;
					if($this.options.type=='json' || this.getResponseHeader('content-type') == 'application/json')
						$this.json = eval(this.responseText);
					if(options.onReceive) options.onReceive.call($this);
					if(options.update && typeof options.update == 'string') options.update = $J(options.update).get(0);
					if(options.update) options.update.innerHTML = this.responseText;
					if(options.onComplete) options.onComplete.call($this);
					if(options.evalJs || typeof options.evalJs == 'undefined') {
						var js = this.responseText.match(new RegExp('<script.*type="text/javascript"[^>]*>(?!<)(.|\n)*?</script>', 'gi'));
						for(i in js) {
							if(isNaN(parseInt(i))) continue;
							js[i] = js[i].replace(new RegExp('<script.*type="text/javascript"[^>]*>', 'i'), '').replace('</script>', '');
							eval(js[i]);
						}
					}
				} else if(options.onError) options.onError.call($this);
			}
		}
	}.bind(this.http);
	
	this.http.send(options.post);
	
	if(this.options.onStart)
		this.options.onStart.call(this);
		
	this.tick = function() {
		this.timeout = setTimeout(this.timer, this.options.timer);
	}
	
	this.pause = function() {
		clearTimeout(this.timeout);
	}
		
	if(options.timer) {
		if(!$Ajax.tickers)
			$Ajax.tickers = [];
		$Ajax.tickers.push(this);
		this.timer = function() {
			var options = {};
			for(var i in this.options)
				options[i] = this.options[i];
			options.timer = 0;
			new $Ajax(this.url, options);
			this.timeout = setTimeout(this.timer, this.options.timer);
		}.bind(this);
		this.tick();
	}
}

$Ajax.prototype.getHeader = function(name) {
	return this.http.getResponseHeader(name);
}

$Ajax.pauseAll = function() {
	for(var i = 0; i < $Ajax.tickers.length; i++)
		$Ajax.tickers[i].pause();
}

$Ajax.tickAll = function() {
	for(var i = 0; i < $Ajax.tickers.length; i++)
		$Ajax.tickers[i].tick();
}

if(!Function.prototype.bind)
	Function.prototype.bind = function(obj) {
		var func = this;
		return function() { return func.call(obj); }
	}
	
	
	
	
/**
 * options = {
 *	 object,
 *	 property,
 *	 func,
 *	 start,
 *	 end,
 *	 duration,
 *	 suffix
 * }
 */
Tween = function(options) {
	options.suffix = options.suffix ? options.suffix : '';
	this.options = options;
	this.start = new Date().getTime();
	this.timer = null;
	
	this._step = function() {
		clearTimeout(this.timer);
		var elapsed = new Date().getTime() - this.start;
		var ratio = Math.max(0, Math.min(1, parseFloat(elapsed) / parseFloat(this.options.duration)));
		
		var round = ((this.options.start+'').indexOf('.')!=-1 || (this.options.end+'').indexOf('.')!=-1) ? parseFloat : parseInt;
		var value = round(options.start + ((options.end - options.start) * options.func(ratio)) );
		
		this.options.object[options.property] = value + '' + options.suffix;
		
		if(elapsed < this.options.duration)
			this.timer = setTimeout(this._step, 10);
	}.bind(this);
	
	this.options.object[options.property] = options.start + options.suffix;	
	this._step();
	
	this.stop = function() {
		clearTimeout(this.timer);
	}
}

Tween.transition = {

	linear: function(ratio) {
		return ratio;
	},

	regular: {
		easeIn: function(ratio) {
			return Math.pow(ratio, 2);
		},
		easeOut: function(ratio) {
			return 1 - Math.pow(ratio - 1, 2);
		},
		easeInOut: function(ratio) {
			return -Math.cos(ratio*Math.PI)/2 + 0.5
		}
	},

	strong: {
		easeIn: function(ratio) {
			return Math.pow(ratio, 3);
		},
		easeOut: function(ratio) {
			return 1 + Math.pow(ratio - 1, 5);
		},
		easeInOut: function(ratio) {
			return -Math.cos(ratio*Math.PI)/2 + 0.5
		}
	},
	
	back: {
		easeOut: function(ratio) {
			var s = 1.70158;
			ratio = ratio - 1;
			return Math.pow(ratio, 2) * ((s+1) * ratio + s) + 1;
		},
		easeIn: function(ratio) {
			var s = 1.70158;
			return Math.pow(ratio, 2) * ((s+1) * ratio - s);
		}
	}
	
};