﻿(function ($) {
    var _container = null;
    var _j3LeftStartIndex = 2;
    var _currentMenu = '';
    var _currentMenuIndex = 0;
    var _data = new Array();

    var event = {
        mouseon: function (dom, index, hasMenu) {
            if (hasMenu)
                $(dom).css('height', '65px');
            else
                $(dom).css('height', '33px');

            var li = $(dom).children().eq(0).children().eq(index);
            li.css('background-image', 'url(/menu/images/menu.jpg)');
            li.css('background-repeat', 'repeat-x');
            li.css('background-position', '0 0');
            li.css('color', '#990000');
            $('.j3Left').show();
            $('.j3Right').show();
            $('.menu > ul > li:eq(' + index + ')').children('ul').show();
        },
        mouseleave: function (dom, index, hasMenu) {
            $(dom).css('height', '33px');
            var li = $(dom).children().eq(0).children().eq(index);
            li.css('background-image', '');
            li.css('background-repeat', 'repeat-x');
            li.css('background-position', '0 0');
            li.css('color', '');
            $('.j3Left').hide();
            $('.j3Right').hide();
            $('.menu > ul > li:eq(' + index + ')').children('ul').hide();
        },
        changeContent: function (a) {
            var text = $(a).text();
            var content = '';
            for (var d in _data) {
                if (_data[d].key == text) {
                    content = _data[d].value;
                    break;
                }
            }
            $(a).parent().parent().parent().next().html(content);
        }
    };

    var loader = {
        loadData: function (data) {
            _data.push(data);
        },
        loadLeaf: function (menu, parentDom, css) {
            var ul = $('<ul></ul>');
           $(parentDom).append(ul);
            var nodeList = $(menu).children('leaf');
            var nodeCount = nodeList.length;

            var li = $('<li></li>');
            var mainDiv = $('<div></div>');
            var slideDiv = $('<div></div>');
            var contentDiv = $('<div></div>');
            mainDiv.attr('class', css);
            slideDiv.attr('class', 'sidebar');

            mainDiv.append(slideDiv).append(contentDiv);
            li.append(mainDiv);

            if (nodeCount == 0) {
                var html = $(menu).find('html').text().replace(/\[/g, '<').replace(/]/g, '>');
                contentDiv.attr('class', 'content_right');
                contentDiv.append(html);
            } else {
                contentDiv.attr('class', 'content_left');
                var ol = $('<ol></ol>');
                $(nodeList).each(function (index) {
		var isHide = $(this).attr('isHide');
		if(isHide != 'true'){
                    var menuLi = $('<li></li>');
                    var link = $(this).attr('url');
                    var text = $(this).attr('text');
		    var target = $(this).attr('target');
                    var a = $('<a href="' + link + '">' + text + '</a>');
		    if(target != undefined)
			a.attr('target', target);
                    
                    menuLi.append(a);
                    menuLi.append('<img src="/menu/images/line.gif" />');
                    ol.append(menuLi);

                    var html = $(this).children('html').text().replace(/\[/g, '<').replace(/]/g, '>');
                    var data = { key: text, value: html };
                    loader.loadData(data);
                    if (index == 0) {
                        contentDiv.html(html);
                    }

                    a.mouseover(function () {
                        event.changeContent($(this));
                    });
		}
            });
            slideDiv.append(ol);
	}

            li.append(mainDiv);
            ul.append(li);
	},
        loadMenu: function (nodeList, parentDom) {
            var ul = $('<ul></ul>');
            $(nodeList).each(function (index) {
                var css = 'j3Right';
                if (index >= _j3LeftStartIndex)
                    css = 'j3Left';

                var li = $('<li></li>');
                var link = $(this).attr('url');
                var text = $(this).attr('text');
		var target = $(this).attr('target');

                if ($(this).children().length > 0) {		
                    li.append('<a href="' + link + '"> ' + text + ' <img src="/menu/images/pub_01.gif" width="10" height="6" /></a>');
                    loader.loadLeaf($(this), li, css);
                }
                else {
                    li.append('<a href="' + link + '"> ' + text + '</a>');
                }
		if(target != undefined)
		    li.find('a').attr('target', target);

                ul.append(li);
                if (index != nodeList.length - 1) {
                    ul.append('<li class="split">&nbsp;</li>');
                }
            });
            $(parentDom).append(ul);
        },
        loadRoot: function (nodeList) {
            $(nodeList).each(function (index) {
                var childList = $(this).children('menu');
                var ul = _container.children('ul');
                var link = $(this).attr('url');
                var text = $(this).attr('text');
                var li = $('<li></li>');
		var target = $(this).attr('target');
                var a = $('<a href="' + link + '">' + text + '</a>');
		if(target != undefined)
		    a.attr('target', target);

                var hasMenu = childList.length > 0;
                if (hasMenu)
                    loader.loadMenu(childList, li);

                li.hover(function () {
                    event.mouseleave(li.parent().parent(), _currentMenuIndex, hasMenu);
                    event.mouseon(li.parent().parent(), index, hasMenu);
                });
                li.mouseleave(function () {
                    event.mouseleave(li.parent().parent(), index, hasMenu);
                    $('.menu > ul > li:eq(' + _currentMenuIndex + ')').mouseover();
                });

                li.prepend(a);
                ul.append(li);

                if ($.trim(link).toLocaleLowerCase() == $.trim(_currentMenu).toLocaleLowerCase()) {
                    _currentMenuIndex = index;
                }
            });
        },
        load: function (data) {
            var nodeList = $(data).find('root');
            if (nodeList.length == 0 || nodeList == undefined)
                return;

            loader.loadRoot(nodeList);
        }
    };

    function getRootUrl(data, currentPage) {
        if (currentPage == '') return;
        currentPage = $.trim(currentPage).toLocaleLowerCase();

        var nodeList = $(data).find('root');
        var rootIndex = 0;
        var url = '';

        $(nodeList).each(function (index) {
            url = $.trim($(this).attr('url')).toLocaleLowerCase();
            if (url == currentPage) {
                rootIndex = index;
            }

            var menuList = $(this).find('menu');
            $(menuList).each(function (index_menu) {
                url = $.trim($(this).attr('url')).toLocaleLowerCase();
                if (url == currentPage) {
                    rootIndex = index;
                }

                var leafList = $(this).find('leaf');
                $(leafList).each(function (index_leaf) {
                    url = $.trim($(this).attr('url')).toLocaleLowerCase();
                    if (url == currentPage) {
                        rootIndex = index;
                    }
                });
            });
        });

        _currentMenuIndex = rootIndex;
    }

    function init(container, xmlPath, j3LeftStartIndex) {
        _container = $(container);
        _container.empty();
        _container.append('<ul></ul>');
        var url = window.location.href;
        var page = '';

        try {
            page = '/'+url.substr(url.lastIndexOf('/') + 1);
            var index = page.lastIndexOf('#');
            if (index > 0) {
                page = page.substr(0, index);
            }

            var url_split = url.split('/');
            var isFolder = url_split[3].toLocaleLowerCase().indexOf('.', 0) == -1;

            if (isFolder) {
                page = '/'+(url_split[3] + page).toLocaleLowerCase();
            }
        } catch (e) { }

        if (j3LeftStartIndex)
            _j3LeftStartIndex = j3LeftStartIndex;

        $.ajax({
            url: xmlPath,
            type: 'get',
            dataType: 'xml',
            success: function (data) {
                _currentMenu = getRootUrl(data, page);
                loader.load(data);
                $('.menu > ul > li:eq(' + _currentMenuIndex + ')').mouseover();
            }
        });
    }

    $(document).ready(function () {
        init($('.menu'), '/menu/menu.xml', 2);
    });
})(jQuery);

