var isIE6 = navigator.userAgent.toLowerCase().indexOf('msie 6') != -1;
(function($){
    $.fn.extend({
        isChildOf: function(filter_string){
            var parents = $(this).parents().get();
            for (j = 0; j < parents.length; j++) {
                if ($(parents[j]).is(filter_string)) 
                    return true;
            }
            return false;
        }
    });
})(jQuery);

jQuery.fn.MainMenu = function(MenuClass, ContentClass, Options){
    var ParentNodeNumber = 0;
	var createNewDiv = true;
    Options = jQuery.extend({
        width: "auto",
        justify: "left",
		contentID: "MainMenuContent",
		linkID : "MainMenuLink",
		marginRight: 0,
		marginLeft: 0,
		position: 'normal',
		createNewDiv : true,
        setWidth: true
    }, Options);
	if ( Options.createNewDiv )
	{
    	$(ContentClass).after(' <div id="' + Options.contentID + '" style="display: none;"></div>');
	}
    $(this).mouseover(function(){
        var MenuContent;
		if ( Options.createNewDiv )
		{
			MenuContent = $(this).next(ContentClass).html();
		}
		else
		{
			Options.contentID = $(this).attr('content');
			MenuContent = null;
		}
        ParentNodeNumber = $('.' + MenuClass).index(this);
        MainMenuMouseOver(ParentNodeNumber, MenuContent, "click", MenuClass, ContentClass, Options);
        //setTimeout('MainMenuMouseOver('+ParentNodeNumber+',"'+escape(MenuContent)+'","hover",\''+MenuClass+'\',\''+ContentClass+'\',\''+Options+'\')', 300);
    });
    $(this).click(function(){
        var MenuContent;
		if ( Options.createNewDiv )
		{
			MenuContent = $(this).next(ContentClass).html();
		}
		else
		{
			Options.contentID = $(this).attr('content');
			MenuContent = null;
		}
        ParentNodeNumber = $('.' + MenuClass).index(this);
        MainMenuMouseOver(ParentNodeNumber, MenuContent, "click", MenuClass, ContentClass, Options);
    });
    $(this).mouseout(function(){
        MainMenuMouseOut(ParentNodeNumber, MenuClass, ContentClass, Options);
    });
    $(document).bind('click', function(e){
        var objClicked = $(e.target);
        if (objClicked.parent("#" + Options.contentID).length > 0 || objClicked.is("#" + Options.contentID) || objClicked.is(MenuClass)) {
        }
        else 
            MainMenuMouseOut(ParentNodeNumber, MenuClass, ContentClass, Options);
    });
};

function MainMenuMouseOver(ParentNodeNumber, MenuContent, state, MenuLinkClass, MenuContentClass, Options){
	
    var MenuLinkClass = (typeof(MenuLinkClass) == 'undefined') ? "." + Options.linkID : MenuLinkClass;
    var MenuContentClass = (typeof(MenuContentClass) == 'undefined') ? "." + Options.contentID : MenuContentClass;
    
    //var Options = eval('(' + Options + ')');
    if (state == "hover") 
	{
        $('.' + MenuLinkClass).removeClass(MenuLinkClass + 'Active');
	}
    $('.' + MenuLinkClass).eq(ParentNodeNumber).addClass(MenuLinkClass + 'Active');
    
    var selfNode = new Array();
    selfNode['width'] = $('.' + MenuLinkClass).eq(ParentNodeNumber).width();
    selfNode['padding-left'] = parseInt($('.' + MenuLinkClass).eq(ParentNodeNumber).css('padding-left').replace(/px/g, ''));
    selfNode['padding-right'] = parseInt($('.' + MenuLinkClass).eq(ParentNodeNumber).css('padding-right').replace(/px/g, ''));
    selfNode['border-left-width'] = parseInt($('.' + MenuLinkClass).eq(ParentNodeNumber).css('border-left-width').replace(/px/g, ''));
    selfNode['border-right-width'] = parseInt($('.' + MenuLinkClass).eq(ParentNodeNumber).css('border-right-width').replace(/px/g, ''));
	
    if (isIE6)
	{
        selfNode['width'] = selfNode['width'] + 10;
	}
	var LeftPos = -1;
	var RightPos = -1;
    if (Options.justify == "left") {		
		LeftPos = 0;
        if ( Options['position'] != "absolute" )
		{
			LeftPos = $('.' + MenuLinkClass).eq(ParentNodeNumber).parent().position().left;
		}
        if (Options['width'] == 'auto') 
            LeftPos = $('.' + MenuLinkClass).eq(ParentNodeNumber).position().left - 10;
		LeftPos += Options.marginLeft;
    }
    else {
        RightPos = $('.' + MenuLinkClass).eq(ParentNodeNumber).parent().position().left;
        if (Options['width'] == 'auto') 
            RightPos = $(document).width() - 10 - $('.' + MenuLinkClass).eq(ParentNodeNumber).position().left - selfNode['width'] - selfNode['padding-left'] - selfNode['padding-right'];		
		RightPos += Options.marginRight;
    }
    var TopPos = $('.' + MenuLinkClass).eq(ParentNodeNumber).height() + $('.' + MenuLinkClass).eq(ParentNodeNumber).position().top + parseInt($('.' + MenuLinkClass).eq(ParentNodeNumber).css("padding-top").replace(/px/g, '')) + parseInt($('.' + MenuLinkClass).eq(ParentNodeNumber).css("padding-bottom").replace(/px/g, ''));
    MenuContent = unescape(MenuContent);
    if (LeftPos >= 0) {
        $("#" + Options.contentID).css('left', LeftPos + 'px');
    }
    else {
        $("#" + Options.contentID).css('right', RightPos + 'px');
    }
    $("#" + Options.contentID).css('top', TopPos + 'px');
    if (Options.width && Options.setWidth) {
        $("#" + Options.contentID).css('width', Options.width);
    }
	if ( Options.createNewDiv )
	{
    	$("#" + Options.contentID).html('' + MenuContent);
	}
    $("#" + Options.contentID).show();
    $("#" + Options.contentID).mouseover(function(){
        $("#" + Options.contentID).show();
        
        $('.' + MenuLinkClass).removeClass('hover');
        $('.' + MenuLinkClass).eq(ParentNodeNumber).addClass('hover');
    });
    $("#" + Options.contentID).mouseout(function(){
        $("#" + Options.contentID).hide()
        $('.' + MenuLinkClass).removeClass('hover');
    });
}

function MainMenuMouseOut(ParentNodeNumber, MenuLinkClass, MenuContentClass, Options){
	
    $("#" + Options.contentID).hide();
    var MenuLinkClass = (typeof(MenuLinkClass) == 'undefined') ? "." + Options.linkID : MenuLinkClass;
    $('.' + MenuLinkClass).eq(ParentNodeNumber).removeClass('hover');
}
