/*
 * JavaScript Components Beta
 * http://www.dewenir.es
 *
 * Copyright 2010, Dewenir
 * Dual licensed under the MIT or GPL Version 2 licenses.
 * http://www.tuestagroup/license
 *
 * Date: Sat Feb 13 22:33:48 2010 -0500
 */
jQuery.fn.navegacion = function(options){
	var defaults = {
			color:'orangeRed',
			movimiento: 'horizontal',
			automatico: true,
			demora: 1000,
			iconos: 'numeros',
			limite: 6,
			cssCapaCategoriasSegundoNivel: 'opcionesSegundoNivel',
			cssMoreSubCategories: 'nav_masCategorias',
			cssNavegacion: 'nav_navegacion',
			cssLiActivo: 'nav_liActivo',
			alto: 16
	};

	var options = $.extend(defaults, options);
	
	$(this).each(function(i){
		var enlace = $(this); 
		var li = enlace.parents('li');
		var ul = li.find('ul');
		var capaSegundoNivel;
		var tieneCategoriasSegungoNivel = (ul.size() > 0); 
		// private behaviours
		var behaviours = {
			init : function(){
				behaviours.findSecondLevelCategories();
				capaSegundoNivel = $('.' + options.cssCapaCategoriasSegundoNivel);
				if(capaSegundoNivel.size() <= 0) behaviours.crearCapaSegundoNivel(); 
			},
			crearCapaSegundoNivel: function(){
				$('.wrapperPageMaster').append('<div class=\"' + options.cssCapaCategoriasSegundoNivel + '\"><p>capa subcategorías<\/p><\/div>');
				capaSegundoNivel = $('.' + options.cssCapaCategoriasSegundoNivel);
				capaSegundoNivel.hide();
				return;
			},
			findSecondLevelCategories: function(){
				if(tieneCategoriasSegungoNivel) li.addClass(options.cssMoreSubCategories);
				return;
			},
			ocultarCapaDesdeCapa: function(){
				behaviours.desmarcarLiActivos();
				capaSegundoNivel.html('');
				capaSegundoNivel.hide();				
			},
			desmarcarLiActivos: function(){
				$('.' + options.cssLiActivo).removeClass(options.cssLiActivo);
				return;
			},
			desplegarCapa: function(){
				behaviours.desmarcarLiActivos();
				var posicionX = li.position().left;
				var posicionY = li.offset().top + options.alto;
				var listado = ul.html();
				capaSegundoNivel.html('<ul>' + listado + '<\/ul>');
				capaSegundoNivel.css({'top': posicionY + 'px', 'left': posicionX + 'px'});
				capaSegundoNivel.show();	
				li.addClass(options.cssLiActivo);
				return;
			},
			ocultarCapa: function(){
				capaSegundoNivel.html('');
				capaSegundoNivel.hide();	
				li.removeClass(options.cssLiActivo);
				return;
			},
			marcarActivo: function(){},
			customClick: function(){
				if(li.hasClass(options.cssLiActivo)){
					behaviours.ocultarCapa();
				}else{
					behaviours.desplegarCapa();
				}
				return false;
			}
		};
		
		// inicio
		behaviours.init();	
		// enganche de comportamientos

		if(tieneCategoriasSegungoNivel) enlace.bind('click', behaviours.customClick);	
		capaSegundoNivel.hover(
				function(){},
				function(){
					behaviours.ocultarCapaDesdeCapa();
				});
	});
};
