// JavaScript 文件
var IAnimator = new Class({
		
	
	 getMooTransition : function (css3_timing_function) {
		var ret;
		switch (css3_timing_function) {
			default :
			case 'linear' :
				ret = Fx.Transitions.linear;
				break;
			case 'ease-in' :
				ret =Fx.Transitions.linear.easeIn;
				break;
			case 'ease-out' :
				ret =Fx.Transitions.linear.easeOut;
				break;				
		}
		return ret;
	}	
	
	, translateX : function(element, option) {		
		var opt = {x:0,ms:500,transition:'linear',callback:null}
		Object.merge(opt,option);			
		opt.s = opt.ms * 0.001;				
		if (Browser.Engine.webkit) {			
			if(opt.ms==0) {
				element.set('styles', {'-webkit-transition':'none', '-webkit-transform':'translate('+opt.x+'px)'});	
			} else {
				element.set('styles', {'-webkit-transition':'-webkit-transform '+opt.s+'s '+opt.transition, '-webkit-transform':'translateX('+opt.x+'px)'});	
			}			
		} else {					
			if(opt.ms==0) {
				element.set("styles", {"left" : opt.x+"px"} );
			} else {
				element.set('tween', {duration: opt.ms , transition:this.getMooTransition(opt.transition)  });
				element.tween('left', opt.x + 'px');	 
			}					
		}		
		if (typeOf(opt.callback)=='function') { opt.callback.delay(opt.ms + 100); }
		return element;		
	}
	
	
	
	, translateY : function(element, option) {		
		var opt = {y:0,ms:500,transition:'linear',callback:null}	
		Object.merge(opt,option);			
		opt.s = opt.ms * 0.001;		
		if (Browser.Engine.webkit) {			
			if(opt.ms==0) {
				element.set('styles', {'-webkit-transition':'none', '-webkit-transform':'translate('+opt.y+'px)'});	
			} else {
				element.set('styles', {'-webkit-transition':'-webkit-transform '+opt.s+'s '+opt.transition, '-webkit-transform':'translateY('+opt.y+'px)'});	
			}		
		} else {		
			if(opt.ms==0) {
				element.set("styles", {"top" : opt.y+"px"} );
			} else {
				element.set('tween', {duration: opt.ms , transition:this.getMooTransition(opt.transition)  });
				element.tween('top', opt.y + 'px');	 
			}
		}	
		if (typeOf(opt.callback)=='function') { opt.callback.delay(opt.ms + 100); }
		return element;		
	}
	
	
			
	
		
	, translate : function(element, option) {			
		var opt = {x:0,y:0,ms:500,transition:'linear',callback:null}	
		Object.merge(opt,option);			
		opt.s = opt.ms * 0.001;			
		if (Browser.Engine.webkit) {			
			if(opt.ms==0) {
				element.set('styles', {'-webkit-transition':'none', '-webkit-transform':'translate('+opt.x+'px,'+opt.y+'px)'});	
			} else {
				element.set('styles', {'-webkit-transition':'-webkit-transform '+opt.s+'s '+opt.transition, '-webkit-transform':'translate('+opt.x+'px,'+opt.y+'px)'});	
			}				
		} else {		
			if(opt.ms==0) {
				element.set("styles", {"top":opt.y+"px","left":opt.x+"px"} );
			} else {				
				var fx = new Fx.Morph(element, {duration:opt.ms , transition:this.getMooTransition(opt.transition) });			 
				fx.start({ 'left': opt.x+"px", 'top':  opt.y+"px"});			 
			}					
		}		
		if (typeOf(opt.callback)=='function') { opt.callback.delay(opt.ms + 100); }
		return element;		
	}
	
	
	,css : function(element,prop,option) {
		var opt = {ms:500,transition:'linear',callback:null}	
		Object.merge(opt,option);
		opt.s = opt.ms * 0.001;
		if (Browser.Engine.webkit) {		
			var key = Object.keys(prop)[0].toString();
			var value = Object.values(prop)[0].toString();			
			var o = (opt.ms==0) ? {'-webkit-transition':'none'} : {'-webkit-transition':key+' '+opt.s+'s '+opt.transition }			
			o[key] = value;			
			element.set('styles',o);			
		} else {
			if(opt.ms==0) {
				element.set("styles", prop );
			} else {	
				var fx = new Fx.Morph(element, {duration:opt.ms , transition:this.getMooTransition(opt.transition) });			 
				fx.start(prop);	
			}				
		}
		if (typeOf(opt.callback)=='function') { opt.callback.delay(opt.ms + 100); }
		return element;	
	}
	
	
 });

//end of IAnimator ------------------------------------------------------------------------------------------------------
