(function(jQuery){
   var TabbedAccordion = function(element, options)
   {
       var elem = $(element);
       var obj = this;
       var pathArray = null;
       var pathParts = '';
       var settings = $.extend({
           stato: 'nuovo',
           categoria: '',
           marca: ''
       }, options || {});
       
       // Public method
       this.render = function(){
    	   _parseUrl();
    	   _initTabs();
    	   _initMenus();
    	   //alert(pathParts);
       };
       
       // Private methods
       var _parseUrl = function() {
    	   	pathArray = window.location.pathname.split( '/' );
    		for ( i = 0; i < pathArray.length; i++ ) {
    			pathParts += pathArray[i] + '\n';
    		}
       }
       
       var _initTabs = function() {
    	   	var tabContainers = $('div.tabs > div');
    		tabContainers.hide().filter(':first').show();
    		
    		$('div.tabs ul.tabNavigation a').click(function () {
    			tabContainers.hide();
    			tabContainers.filter(this.hash).show();
    			$('div.tabs ul.tabNavigation a').removeClass('selected');
    			$(this).addClass('selected');
    			return false;
    		}).filter(':first').click();
    		
       }
       
       var _initMenus = function() {
    	   	$('ul.menu ul').hide();
    		$.each($('ul.menu'), function(){
    			$('#' + this.id + '.expandfirst ul:first').show();
    		});
    		$('ul.menu li a').click(
    			function() {
    				var checkElement = $(this).next();
    				var parent = this.parentNode.parentNode.id;

    				if($('#' + parent).hasClass('noaccordion')) {
    					$(this).next().slideToggle('normal');
    					return false;
    				}
    				if((checkElement.is('ul')) && (checkElement.is(':visible'))) {
    					$('#' + parent + ' ul:visible').slideUp('normal');
    					return false;
    				}
    				if((checkElement.is('ul')) && (!checkElement.is(':visible'))) {
    					$('#' + parent + ' ul:visible').slideUp('normal');
    					checkElement.slideDown('normal');
    					return false;
    				}
    			}
    		);
    		
    		$('.tabDiv').hide();
    		$('.tabLink').removeClass('selected');
    		
    		if(settings.stato) {
    			$('#tab-' + settings.stato).addClass('selected');
    			$('#' + settings.stato).show();
    		} 
    		if(settings.categoria) {
    			$('#' + settings.stato + '-' + settings.categoria + '-sub').show();
    		}
       }
       
   };

   jQuery.fn.tabbedaccordion = function(options) {
	   return this.each(function() {
		   var element = jQuery(this);
           // Return early if this element already has a plugin instance
           if (element.data('tabbedaccordion')) return;
           // pass options to plugin constructor
           var tabbedaccordion = new TabbedAccordion(this, options);
           // Store plugin object in this element's data
           element.data('tabbedaccordion', tabbedaccordion);
           // init plugin
           tabbedaccordion.render();
       });
   };
})(jQuery);

