(jQuery.noConflict())(function($) {
	
	/**********************************/
	/** Menu Position Right           */
	/**********************************/
    //Verify position of each sub-menus
    $("ul.menu ul").each(function(){

    	//get container position and width to calculate maximum value from left of the screen
    	var containerWidth = $("#nav-mainmenu").width();
    	var containerLeft = $("#nav-mainmenu").offset().left + parseInt($("#nav-mainmenu").css("padding-left"), 10) + 
    		parseInt($("#nav-mainmenu").css("margin-left"), 10) + parseInt($("#nav-mainmenu").css("borderLeftWidth"), 10); 
    	var max_left = parseInt(containerWidth + containerLeft, 10);
    	
    	//element must be visible to get position and size
    	var parent = $(this).parent().parent(); //get ul parent
    	var parent_visible = parent.is(':visible');
    	if(!parent_visible) //third level
    	{
    		parent.show();
    	}
    	var is_visible = $(this).is(':visible');
    	if(!is_visible)
    	{
    		$(this).show();
    	}
    	
    	/************************/
    	/* Reposition Sub menu  */
    	/************************/
    	var new_pos = parseInt(($(this).outerWidth() - $(this).parent().outerWidth())/2);
    	//alert($(this).outerWidth()+"\n"+$(this).parent().outerWidth()+"\n"+new_pos);
    	if(parent_visible) //only for second level
    	{
	    	if(new_pos > parseInt($("#nav-mainmenu").css("padding-left"), 10))
	    	{
	    		//new_pos = parseInt($(this).offset().left) - new_pos;
	    		if(($(this).offset().left - new_pos) > containerLeft)
	    		{
	    			$(this).css({'left': -new_pos+'px'});
	    		}
	    	}
	    	else
	    	{
	    		//new_pos += parseInt($(this).offset().left);
	    		new_pos += parseInt($("#nav-mainmenu").css("padding-left"), 10);
	    		if(($(this).offset().left + new_pos + $(this).outerWidth()) < max_left)
	    		{
	    			$(this).css({'left': new_pos+'px'});
	    		}
	    	}
    	}
    	/************************/
    	/*/Reposition Sub menu */
    	/************************/

    	var elemEndPos = $(this).width() + $(this).offset().left;
    	var newLeft = parseInt($("#nav-mainmenu").css("padding-left"), 10);
    	if((elemEndPos > max_left) || parent.hasClass("revertedDisplay"))
    	{
        	var totalWidth = $(this).width();
    		totalWidth += parseInt($(this).css("padding-left"), 10) + parseInt($(this).css("padding-right"), 10); //Total Padding Width
    		totalWidth += parseInt($(this).css("margin-left"), 10) + parseInt($(this).css("margin-right"), 10); //Total Margin Width
    		totalWidth += parseInt($(this).css("borderLeftWidth"), 10) + parseInt($(this).css("borderRightWidth"), 10); //Total Border Width
    		
    		//calculate and set new left value
    		if(!parent_visible) //third level
    		{
    			//revertedDisplay is only used on second level.
    			if(!parent.hasClass("revertedDisplay")) //if parent not already reverted
    			{
    				//revert parent
    				parent.addClass("revertedDisplay");
    				
    				var parentTotalWidth = parent.width();
    				parentTotalWidth += parseInt(parent.css("padding-left"), 10) + parseInt(parent.css("padding-right"), 10); //Total Padding Width
    				parentTotalWidth += parseInt(parent.css("margin-left"), 10) + parseInt(parent.css("margin-right"), 10); //Total Margin Width
    				parentTotalWidth += parseInt(parent.css("borderLeftWidth"), 10) + parseInt(parent.css("borderRightWidth"), 10); //Total Border Width
        			var parentNewLeft = -parentTotalWidth + parent.parent().width();
        			
    				parent.css("left", parentNewLeft);
    			}
    			$(this).addClass("revertedDisplay");
    			
    			newLeft = -totalWidth;
    		}
    		else //second level
    		{
    			$(this).addClass("revertedDisplay");
    			newLeft = -totalWidth + $(this).parent().width(); 
    		}
    		
    		$(this).css("left", newLeft);
    	}

    	if(!is_visible)
    	{
    		$(this).hide();
    	}
    	if(!parent_visible)
    	{
    		parent.hide();
    	}
    });
    
});
