var Yanimation = YUI( {
	base:'/scripts/yui/',
	timeout :10000
});
Yanimation.namespace("dior");
Yanimation.use("base", "anim","json" , function(Y) {

	var anim;
	var _item;
	var map;

	function AnimController(item, params) {
		_item = item;
		this.map = mapInstance;
		var id = "#" + item.get("htmlItem").getAttribute("id");
		AnimController.superclass.constructor.apply(this, arguments);
		this.anim = new Y.Anim( {
			node :id,
			to : {},
			from : {},
			duration :params.duration,
			easing:Y.Easing.easeOut
		});
		switch (params.effect) {
			case "EffectPos":
			this.fadepos(item, id, {
				from:this.map.getPosition(params.from.x, params.from.y), 
				to:this.map.getPosition(params.to.x, params.to.y)
				    });
			break;
			case "EffectFadeOut":
				this.fadeout(item, id);
				break;
			case "EffectFadeOutPos":
				this.fadeout(item, id);
				this.fadepos(item, id, {
					from:this.map.getPosition(params.from.x, params.from.y), 
					to:this.map.getPosition(params.to.x, params.to.y)
					    });
				break;
			case "EffectFadePos":
				this.fadein(item, id, params.to.opacity);
				this.fadepos(item, id, {
					from:this.map.getPosition(params.from.x, params.from.y), 
					to:this.map.getPosition(params.to.x, params.to.y)
					    });
				break;
			case "EffectFade":
				this.fadein(item, id, params.to.opacity);
				break;
			case "EffectFadeInPos":
				this.fadein(item, id, 1);
				this.fadepos(item, id, {
					from:this.map.getPosition(params.from.x, params.from.y), 
					to:this.map.getPosition(params.to.x, params.to.y)
					    });
				break;
			case "EffectFadeIn":
			default:
				this.fadein(item, id, '1');
				break;
		}
	}

	AnimController.NAME = "animcontroller";

	Y.extend(AnimController, Y.Base, {
		run:function(){
			this.anim.run();
		},
		fadeout : function(item, id) {
			this.anim.set("to.opacity", 0);
			if (!Y.UA.ie) {
				this.anim.on("start", function() {
					if (this.get('node').hasClass("container_S_Bg")) {
						this.get('node').replaceClass("container_S_Bg",
								"container_S_Bg_Anim");
					} else {
						this.get('node').replaceClass("container_L_Bg",
								"container_L_Bg_Anim");
					}
				});
			}
			this.anim.on("end", function() {
				this.fire("animcontroller:deleteInDom");
			}, this);
			this.anim.on("start", function() {
				this.fire("animcontroller:startRel")
			}, this);
		},
		fadein : function(item, id, opacityValue) {
			this.opaBlock(item);
			this.anim.set("to.opacity", opacityValue);
			if (!Y.UA.ie) {
				this.anim.on("end", function() {
					if (this.get('node').hasClass("container_S_Bg_Anim")) {
						this.get('node').replaceClass("container_S_Bg_Anim",
								"container_S_Bg");
					} else {
						this.get('node').replaceClass("container_L_Bg_Anim",
								"container_L_Bg");
					}
				});
			}
		},
		fadepos : function(item, id, params) {

			if(!isNaN(params.from[0])){
				this.anim.set("from.xy", params.from);
			}
			if(!isNaN(params.to[0])){
				this.anim.set("to.xy", params.to);
			}
		},
		opaBlock : function(item) {
			item.get("htmlItem").setStyle("opacity", "0");
			item.get("htmlItem").setStyle("display", "block");
		}

	});

	Yanimation.dior = {
		init :AnimController
	};

});