/*
 * mootools navAnimated v1.0.0 
 *
 * Copyright (c) 2008 Taranets Aleksey
 * www: markup-javascript.com
 * Licensed under the MIT License:
 * http://www.opensource.org/licenses/mit-license.php
 */

var navAnimated = new Class({
	options: {
		defClassName:'default',
		animatedClassName:'animate',
		animatedClassNameActive:'animateActive',
		element:'a',
		duration: 300,
		parentActiveClass:'active'
	},

	// create class
	initialize: function(element,options){
		this.setOptions(options);
		var _this = this;
		//set default parametrs
		$$(element).each(function(el, i){
			this.holder = $$(element)[i];
			this.elements = this.holder.getElements(options.element);
			_this.fxInit(this.elements);
			_this.elMouseover(this.elements);
			_this.elMouseout(this.elements);
		})
		
	},
	elMouseover: function(_els) {
		var _this = this;
		_els.each(function(el, i){
			el.addEvent('mouseover', function(){
				if (el.parentNode.className.indexOf(_this.options.parentActiveClass) == -1) {
					el.fx.start('.'+_this.options.animatedClassName);
				} else if (_this.options.animatedClassNameActive) {
					el.fx.start('.'+_this.options.animatedClassNameActive);
				}
			});
		});
	},
	elMouseout: function(_els) {
		var _this = this;
		_els.each(function(el, i){
			el.addEvent('mouseout', function(){
				if (el.parentNode.className.indexOf(_this.options.parentActiveClass) == -1) {
					el.fx.start('.'+_this.options.defClassName);
				} else if (_this.options.animatedClassNameActive) {
					el.fx.start('.'+_this.options.animatedClassName);
				}
			});
		});
	},
	fxInit: function(_els) {
		var _this = this;
		_els.each(function(el, i){
			el.fx = new Fx.Morph(el, {
				duration: _this.options.duration,
				link:'cancel'
			}).set('.'+_this.options.defClassName);
			if (el.parentNode.className.indexOf(_this.options.parentActiveClass) != -1) {
				el.fx.start('.'+_this.options.animatedClassName);
			}
		});
	},
	// add options and events
	Implements : [Options, Events]
});