// JSDeferred 0.2.2 Copyright (c) 2007 cho45 ( www.lowreal.net )
// See http://coderepos.org/share/wiki/JSDeferred
function Deferred(){return(this instanceof Deferred)? this.init():new Deferred()}
Deferred.ok=function(x){return x};Deferred.ng=function(x){throw x};Deferred.prototype={
init:function(){
this._next=null;this.callback={
ok:Deferred.ok,
ng:Deferred.ng
};return this;},
next:function(fun){return this._post("ok",fun)},
error:function(fun){return this._post("ng",fun)},
call:function(val){return this._fire("ok",val)},
fail:function(err){return this._fire("ng",err)},
cancel:function(){
(this.canceller || function(){})();return this.init();},
_post:function(okng,fun){
this._next=new Deferred();this._next.callback[okng]=fun;return this._next;},
_fire:function(okng,value){
var next="ok";try{
value=this.callback[okng].call(this,value);}catch(e){
next="ng";value=e;}
if(value instanceof Deferred){
value._next=this._next;}else{
if(this._next)this._next._fire(next,value);}
return this;}
};Deferred.next_default=function(fun){
var d=new Deferred();var id=setTimeout(function(){d.call()},0);d.canceller=function(){clearTimeout(id)};if(fun)d.callback.ok=fun;return d;};Deferred.next_faster_way_readystatechange=(!window.opera &&/\bMSIE\b/.test(navigator.userAgent))&& function(fun){
var d=new Deferred();var t=new Date().getTime();if(t-arguments.callee._prev_timeout_called<150){
var cancel=false;var script=document.createElement("script");script.type="text/javascript";script.src="javascript:";script.onreadystatechange=function(){
if(!cancel){
d.canceller();d.call();}
};d.canceller=function(){
if(!cancel){
cancel=true;script.onreadystatechange=null;document.body.removeChild(script);}
};document.body.appendChild(script);}else{
arguments.callee._prev_timeout_called=t;var id=setTimeout(function(){d.call()},0);d.canceller=function(){clearTimeout(id)};}
if(fun)d.callback.ok=fun;return d;};Deferred.next_faster_way_Image=((typeof(Image)!="undefined")&& document.addEventListener)&& function(fun){
var d=new Deferred();var img=new Image();var handler=function(){
d.canceller();d.call();};img.addEventListener("load",handler,false);img.addEventListener("error",handler,false);d.canceller=function(){
img.removeEventListener("load",handler,false);img.removeEventListener("error",handler,false);};img.src="data:,/_/X";if(fun)d.callback.ok=fun;return d;};Deferred.next=Deferred.next_faster_way_readystatechange ||
Deferred.next_faster_way_Image ||
Deferred.next_default;Deferred.wait=function(n){
var d=new Deferred(),t=new Date();var id=setTimeout(function(){
d.call((new Date).getTime()-t.getTime());},n*1000);d.canceller=function(){clearTimeout(id)};return d;};Deferred.call=function(f){
var args=Array.prototype.slice.call(arguments,1);return Deferred.next(function(){
return f.apply(this,args);});};Deferred.parallel=function(dl){
var ret=new Deferred(),values={},num=0;for(var i in dl)if(dl.hasOwnProperty(i))(function(d,i){
d.next(function(v){
values[i]=v;if(--num<=0){
if(dl instanceof Array){
values.length=dl.length;values=Array.prototype.slice.call(values,0);}
ret.call(values);}
}).error(function(e){
ret.fail(e);});num++;})(dl[i],i);if(!num)Deferred.next(function(){ret.call()});ret.canceller=function(){
for(var i in dl)if(dl.hasOwnProperty(i)){
dl[i].cancel();}
};return ret;};Deferred.loop=function(n,fun){
var o={
begin:n.begin || 0,
end:(typeof n.end=="number")? n.end:n-1,
step:n.step || 1,
last:false,
prev:null
};var ret,step=o.step;return Deferred.next(function(){
function _loop(i){
if(i<=o.end){
if((i+step)>o.end){
o.last=true;o.step=o.end-i+1;}
o.prev=ret;ret=fun.call(this,i,o);if(ret instanceof Deferred){
return ret.next(function(r){
ret=r;return Deferred.call(_loop,i+step);});}else{
return Deferred.call(_loop,i+step);}
}else{
return ret;}
}
return(o.begin<=o.end)? Deferred.call(_loop,o.begin):null;});};Deferred.register=function(name,fun){
this.prototype[name]=function(){
var a=arguments;return this.next(function(){
return fun.apply(this,a);});};};Deferred.register("loop",Deferred.loop);Deferred.register("wait",Deferred.wait);Deferred.define=function(obj,list){
if(!list)list=["parallel","wait","next","call","loop"];if(!obj)obj=(function getGlobal(){return this})();for(var i=0;i<list.length;i++){
var n=list[i];obj[n]=Deferred[n];}
return Deferred;};(function($){
$.deferred=Deferred;var orig_ajax=$.ajax;$.ajax=function(opts){
var d=$.deferred(),orig={};$.extend(orig,opts);opts.success=function(){
if(orig.success)orig.success.apply(this,arguments);d.call.apply(d,arguments);};opts.error=function(){
if(orig.error)orig.error.apply(this,arguments);d.fail.apply(d,arguments);};orig_ajax(opts);return d;};})(jQuery);

/*
 * Yuichi Tateno. <hotchpotch@N0!spam@gmail.com>
 * http://rails2u.com/
 * 
 * The MIT License
 * --------
 * Copyright (c) 2007 Yuichi Tateno.
 * 
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 * 
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 *
 */
var JSTweener={looping:false,frameRate:60,objects:[],defaultOptions:{time:1,transition:"easeoutexpo",delay:0,prefix:{},suffix:{},onStart:undefined,onStartParams:undefined,onUpdate:undefined,onUpdateParams:undefined,onComplete:undefined,onCompleteParams:undefined},inited:false,easingFunctionsLowerCase:{},init:function(){this.inited=true;for(var a in JSTweener.easingFunctions){this.easingFunctionsLowerCase[a.toLowerCase()]=JSTweener.easingFunctions[a];}},toNumber:function(b,a,c){if(!c){c="px";}return b.toString().match(/[0-9]/)?Number(b.toString().replace(new RegExp(c+"$"),"").replace(new RegExp("^"+(a?a:"")),"")):0;},addTween:function(d,b){var a=this;if(!this.inited){this.init();}var f={};f.target=d;f.targetPropeties={};for(var c in this.defaultOptions){if(typeof b[c]!="undefined"){f[c]=b[c];delete b[c];}else{f[c]=this.defaultOptions[c];}}if(typeof f.transition=="function"){f.easing=f.transition;}else{f.easing=this.easingFunctionsLowerCase[f.transition.toLowerCase()];}for(var c in b){if(!f.prefix[c]){f.prefix[c]="";}if(!f.suffix[c]){f.suffix[c]="";}var e=this.toNumber(d[c],f.prefix[c],f.suffix[c]);f.targetPropeties[c]={b:e,c:b[c]-e};}setTimeout(function(){f.startTime=(new Date()-0);f.endTime=f.time*1000+f.startTime;if(typeof f.onStart=="function"){if(f.onStartParams){f.onStart.apply(f,f.onStartParams);}else{f.onStart();}}a.objects.push(f);if(!a.looping){a.looping=true;a.eventLoop.call(a);}},f.delay*1000);},eventLoop:function(){var a=(new Date()-0);for(var g=0;g<this.objects.length;g++){var b=this.objects[g];var m=a-b.startTime;var j=b.endTime-b.startTime;if(m>=j){for(var k in b.targetPropeties){var c=b.targetPropeties[k];try{b.target[k]=b.prefix[k]+(c.b+c.c)+b.suffix[k];}catch(h){}}this.objects.splice(g,1);if(typeof b.onUpdate=="function"){if(b.onUpdateParams){b.onUpdate.apply(b,b.onUpdateParams);}else{b.onUpdate();}}if(typeof b.onComplete=="function"){if(b.onCompleteParams){b.onComplete.apply(b,b.onCompleteParams);}else{b.onComplete();}}}else{for(var k in b.targetPropeties){var c=b.targetPropeties[k];var f=b.easing(m,c.b,c.c,j);try{b.target[k]=b.prefix[k]+f+b.suffix[k];}catch(h){}}if(typeof b.onUpdate=="function"){if(b.onUpdateParams){b.onUpdate.apply(b,b.onUpdateParams);}else{b.onUpdate();}}}}if(this.objects.length>0){var l=this;setTimeout(function(){l.eventLoop();},1000/l.frameRate);}else{this.looping=false;}}};JSTweener.Utils={bezier2:function(a,d,c,b){return(1-a)*(1-a)*d+2*a*(1-a)*c+a*a*b;},bezier3:function(a,e,d,c,b){return Math.pow(1-a,3)*e+3*a*Math.pow(1-a,2)*d+3*a*a*(1-a)*c+a*a*a*b;},allSetStyleProperties:function(c){var b;if(document.defaultView&&document.defaultView.getComputedStyle){b=document.defaultView.getComputedStyle(c,null);}else{b=c.currentStyle;}for(var a in b){if(!a.match(/^\d+$/)){try{c.style[a]=b[a];}catch(d){}}}}};JSTweener.easingFunctions={easeNone:function(e,a,g,f){return g*e/f+a;},easeInQuad:function(e,a,g,f){return g*(e/=f)*e+a;},easeOutQuad:function(e,a,g,f){return -g*(e/=f)*(e-2)+a;},easeInOutQuad:function(e,a,g,f){if((e/=f/2)<1){return g/2*e*e+a;}return -g/2*((--e)*(e-2)-1)+a;},easeInCubic:function(e,a,g,f){return g*(e/=f)*e*e+a;},easeOutCubic:function(e,a,g,f){return g*((e=e/f-1)*e*e+1)+a;},easeInOutCubic:function(e,a,g,f){if((e/=f/2)<1){return g/2*e*e*e+a;}return g/2*((e-=2)*e*e+2)+a;},easeOutInCubic:function(e,a,g,f){if(e<f/2){return JSTweener.easingFunctions.easeOutCubic(e*2,a,g/2,f);}return JSTweener.easingFunctions.easeInCubic((e*2)-f,a+g/2,g/2,f);},easeInQuart:function(e,a,g,f){return g*(e/=f)*e*e*e+a;},easeOutQuart:function(e,a,g,f){return -g*((e=e/f-1)*e*e*e-1)+a;},easeInOutQuart:function(e,a,g,f){if((e/=f/2)<1){return g/2*e*e*e*e+a;}return -g/2*((e-=2)*e*e*e-2)+a;},easeOutInQuart:function(e,a,g,f){if(e<f/2){return JSTweener.easingFunctions.easeOutQuart(e*2,a,g/2,f);}return JSTweener.easingFunctions.easeInQuart((e*2)-f,a+g/2,g/2,f);},easeInQuint:function(e,a,g,f){return g*(e/=f)*e*e*e*e+a;},easeOutQuint:function(e,a,g,f){return g*((e=e/f-1)*e*e*e*e+1)+a;},easeInOutQuint:function(e,a,g,f){if((e/=f/2)<1){return g/2*e*e*e*e*e+a;}return g/2*((e-=2)*e*e*e*e+2)+a;},easeOutInQuint:function(e,a,g,f){if(e<f/2){return JSTweener.easingFunctions.easeOutQuint(e*2,a,g/2,f);}return JSTweener.easingFunctions.easeInQuint((e*2)-f,a+g/2,g/2,f);},easeInSine:function(e,a,g,f){return -g*Math.cos(e/f*(Math.PI/2))+g+a;},easeOutSine:function(e,a,g,f){return g*Math.sin(e/f*(Math.PI/2))+a;},easeInOutSine:function(e,a,g,f){return -g/2*(Math.cos(Math.PI*e/f)-1)+a;},easeOutInSine:function(e,a,g,f){if(e<f/2){return JSTweener.easingFunctions.easeOutSine(e*2,a,g/2,f);}return JSTweener.easingFunctions.easeInSine((e*2)-f,a+g/2,g/2,f);},easeInExpo:function(e,a,g,f){return(e==0)?a:g*Math.pow(2,10*(e/f-1))+a-g*0.001;},easeOutExpo:function(e,a,g,f){return(e==f)?a+g:g*1.001*(-Math.pow(2,-10*e/f)+1)+a;},easeInOutExpo:function(e,a,g,f){if(e==0){return a;}if(e==f){return a+g;}if((e/=f/2)<1){return g/2*Math.pow(2,10*(e-1))+a-g*0.0005;}return g/2*1.0005*(-Math.pow(2,-10*--e)+2)+a;},easeOutInExpo:function(e,a,g,f){if(e<f/2){return JSTweener.easingFunctions.easeOutExpo(e*2,a,g/2,f);}return JSTweener.easingFunctions.easeInExpo((e*2)-f,a+g/2,g/2,f);},easeInCirc:function(e,a,g,f){return -g*(Math.sqrt(1-(e/=f)*e)-1)+a;},easeOutCirc:function(e,a,g,f){return g*Math.sqrt(1-(e=e/f-1)*e)+a;},easeInOutCirc:function(e,a,g,f){if((e/=f/2)<1){return -g/2*(Math.sqrt(1-e*e)-1)+a;}return g/2*(Math.sqrt(1-(e-=2)*e)+1)+a;},easeOutInCirc:function(e,a,g,f){if(e<f/2){return JSTweener.easingFunctions.easeOutCirc(e*2,a,g/2,f);}return JSTweener.easingFunctions.easeInCirc((e*2)-f,a+g/2,g/2,f);},easeInElastic:function(g,e,k,j,f,i){var h;if(g==0){return e;}if((g/=j)==1){return e+k;}if(!i){i=j*0.3;}if(!f||f<Math.abs(k)){f=k;h=i/4;}else{h=i/(2*Math.PI)*Math.asin(k/f);}return -(f*Math.pow(2,10*(g-=1))*Math.sin((g*j-h)*(2*Math.PI)/i))+e;},easeOutElastic:function(g,e,k,j,f,i){var h;if(g==0){return e;}if((g/=j)==1){return e+k;}if(!i){i=j*0.3;}if(!f||f<Math.abs(k)){f=k;h=i/4;}else{h=i/(2*Math.PI)*Math.asin(k/f);}return(f*Math.pow(2,-10*g)*Math.sin((g*j-h)*(2*Math.PI)/i)+k+e);},easeInOutElastic:function(g,e,k,j,f,i){var h;if(g==0){return e;}if((g/=j/2)==2){return e+k;}if(!i){i=j*(0.3*1.5);}if(!f||f<Math.abs(k)){f=k;h=i/4;}else{h=i/(2*Math.PI)*Math.asin(k/f);}if(g<1){return -0.5*(f*Math.pow(2,10*(g-=1))*Math.sin((g*j-h)*(2*Math.PI)/i))+e;}return f*Math.pow(2,-10*(g-=1))*Math.sin((g*j-h)*(2*Math.PI)/i)*0.5+k+e;},easeOutInElastic:function(g,e,j,i,f,h){if(g<i/2){return JSTweener.easingFunctions.easeOutElastic(g*2,e,j/2,i,f,h);}return JSTweener.easingFunctions.easeInElastic((g*2)-i,e+j/2,j/2,i,f,h);},easeInBack:function(e,a,h,g,f){if(f==undefined){f=1.70158;}return h*(e/=g)*e*((f+1)*e-f)+a;},easeOutBack:function(e,a,h,g,f){if(f==undefined){f=1.70158;}return h*((e=e/g-1)*e*((f+1)*e+f)+1)+a;},easeInOutBack:function(e,a,h,g,f){if(f==undefined){f=1.70158;}if((e/=g/2)<1){return h/2*(e*e*(((f*=(1.525))+1)*e-f))+a;}return h/2*((e-=2)*e*(((f*=(1.525))+1)*e+f)+2)+a;},easeOutInBack:function(e,a,h,g,f){if(e<g/2){return JSTweener.easingFunctions.easeOutBack(e*2,a,h/2,g,f);}return JSTweener.easingFunctions.easeInBack((e*2)-g,a+h/2,h/2,g,f);},easeInBounce:function(e,a,g,f){return g-JSTweener.easingFunctions.easeOutBounce(f-e,0,g,f)+a;},easeOutBounce:function(e,a,g,f){if((e/=f)<(1/2.75)){return g*(7.5625*e*e)+a;}else{if(e<(2/2.75)){return g*(7.5625*(e-=(1.5/2.75))*e+0.75)+a;}else{if(e<(2.5/2.75)){return g*(7.5625*(e-=(2.25/2.75))*e+0.9375)+a;}else{return g*(7.5625*(e-=(2.625/2.75))*e+0.984375)+a;}}}},easeInOutBounce:function(e,a,g,f){if(e<f/2){return JSTweener.easingFunctions.easeInBounce(e*2,0,g,f)*0.5+a;}else{return JSTweener.easingFunctions.easeOutBounce(e*2-f,0,g,f)*0.5+g*0.5+a;}},easeOutInBounce:function(e,a,g,f){if(e<f/2){return JSTweener.easingFunctions.easeOutBounce(e*2,a,g/2,f);}return JSTweener.easingFunctions.easeInBounce((e*2)-f,a+g/2,g/2,f);}};JSTweener.easingFunctions.linear=JSTweener.easingFunctions.easeNone;

