(function($) {
$.fn.jMenuSwitcher = function(_settings) {
	var settings = $.extend({
        activeClass: 'active',
        disableClass: 'disable',
        whichMenu: null,
        openMenu: null,
        activeElement: 0
    }, _settings || {});

    return this.each(function() {
        var div = $(this);

        if (settings.whichMenu)
        	ul = $(settings.whichMenu, div);
        else
	        ul = div.find("ul").eq(0);

        var li = $("li", ul), itemLength = li.size();
        var fragmentId = /^#.+/;
        var ids = new Array();
        var objs = new Array();
        var values = new Array();
        var aktivovano = false;

        for (i = 0; i < itemLength; i++) {
        	a = $("a", li[i]);
        	href = a.attr('href');

        	if (fragmentId.test(href)) {
        		ids.push(href);
        		objs.push(a);
        		values.push($(href, div));

        		if ((settings.openMenu && settings.openMenu == href) || (!settings.openMenu && i == settings.activeElement)) {
        			a.addClass(settings.activeClass);
        			settings.activeElement = i;
        			aktivovano = true;
        		} else {
        			$(href, div).addClass(settings.disableClass);
        		}

        		/*if (i == settings.activeElement) {
        			a.addClass(settings.activeClass);
        		} else {
        			$(href, div).addClass(settings.disableClass);
        		}*/

        		a.bind('click', function(event) {
	        		event.preventDefault();

					var index = inArray(ids, $(this).attr('href'));

					if (index > -1 && settings.activeElement != index) {
						objs[settings.activeElement].removeClass(settings.activeClass);
						values[settings.activeElement].addClass(settings.disableClass);

						$(this).addClass(settings.activeClass);
						values[index].removeClass(settings.disableClass);

						settings.activeElement = index;
					}
	        	});
        	}
        }

        if (!aktivovano) {
        	objs[settings.activeElement].addClass(settings.activeClass);
			values[settings.activeElement].removeClass(settings.disableClass);
        }
    });
};

inArray = function(_o, _value) {
	var delka = _o.length;

	for (var i = 0; i < delka; i++) {
		if (_o[i] == _value)
			return i;
	}

	return -1;
}

})(jQuery);
