/*
 *  Plugin Name : Tabbed Menu
 *  Author      : Ibrahim Guncicekleri (MilSOFT ICT)
 *  Created On  : 12.07.2009
 */
(function($) {
    var $container = null;
    var sliderIntervalId;
    var defaults = {
        menu:-1,
        subMenu:-1,
        language:1,
        url: 'menu.txt'
    };
    $.fn.tabbedMenu = function(options) {
        $container = this;
        if (options.menu) { options.menu -= 1; }
        if (options.subMenu) { options.subMenu -= 1; }
        if (options.language) { options.language -= 1; }
        var opts = $.extend(defaults, options);
        getData();
        if (!$container.ERROR_STATUS) {
            prepareMenu();
        }
    }
    function getData() {
        $.ajax({
            url:defaults.url,
            dataType:'json',
            async:false,
            success:function(json) {
                $container.ERROR_STATUS = false;
                $container.data('jsonData', json);
            },
            error:function() {
                $container.ERROR_STATUS = true;
            }
        });
    }
    function prepareMenu() {
        $container.append('<ul class="menuItem"/>');
        var $menuRoot = $container.find('ul');
        var arrMenuItem = null;
        $.each($container.data('jsonData').menu, function(i) {
            var menuItem = this;
            arrMenuItem = new Array();
            arrMenuItem.push('<li id="menuElement_' + (i + 1) + '" class="menuElement');
            if (i == defaults.menu) {
                arrMenuItem.push(' selected');
            }
            arrMenuItem.push('">' + menuItem.name[defaults.language] + '</li>');
            $menuRoot.append(arrMenuItem.join(''));
            var $menuElement = $menuRoot.find('li#menuElement_' + (i + 1));
            if (i == defaults.menu) {
                $menuElement.append('<ul id="subMenuItem_' + (i + 1) + '" class="subMenuItem visible"/>');
            } else {
                $menuElement.append('<ul id="subMenuItem_' + (i + 1) + '" class="subMenuItem hidden"/>');
            }
            var $subMenuItem = $menuElement.find('ul#subMenuItem_' + (i + 1));
            var totalCharLength = 0;
            var arrSubMenuItem = null;
            $.each(menuItem.subMenu, function(j) {
                totalCharLength += this.name[defaults.language].length;
                arrSubMenuItem = new Array();
                arrSubMenuItem.push('');
                arrSubMenuItem.push('<li class="subMenuElement">');
                if (i == defaults.menu && j == defaults.subMenu) {
                    arrSubMenuItem.push('<a class="selected" href="' + this.url[defaults.language] + '">');
                } else {
                    arrSubMenuItem.push('<a href="' + this.url[defaults.language] + '">');
                }
                
                arrSubMenuItem.push(this.name[defaults.language]);
                arrSubMenuItem.push('</a></li>');
                $subMenuItem.append(arrSubMenuItem.join(''));
                $subMenuItem.mouseover(function() {
                    if ($subMenuItem.hasClass('visible')) {
                        $subMenuItem.removeClass('visible').addClass('hidden');
                        $menuRoot.find('li.selected > ul').removeClass('hidden').addClass('visible');
                    }
                });
            });
            if (totalCharLength > 165) {
                $subMenuItem.css('padding-top', '2px');
            }
            $menuElement.click(function() {
                document.location = $(this).find('a').attr('href');
            }).mouseover(function() {
                if ($subMenuItem.hasClass('hidden')) {
                    $menuRoot.find('ul.visible').removeClass('visible').addClass('hidden');
                    $subMenuItem.removeClass('hidden').addClass('visible');
                }
            }).mouseout(function() {
                if ($subMenuItem.hasClass('visible')) {
                    $subMenuItem.removeClass('visible').addClass('hidden');
                    $menuRoot.find('li.selected > ul').removeClass('hidden').addClass('visible');
                }
            });
        });
    }
})(jQuery);