(jQuery.noConflict())(function($){
	
	//detect IE5 - 6
	var badBrowser = (/MSIE ((5\.5)|6)/.test(navigator.userAgent) && navigator.platform == "Win32");

	$("ul > li:last-child").addClass("last");
	$("ul > li:first-child").addClass("first");
	
	
    /**********************************/
	/** Menu                          */
	/**********************************/
    $("ul.menu").supersubs({ 
        minWidth:    13,                                // minimum width of sub-menus in em units 
        maxWidth:    13,                                // maximum width of sub-menus in em units 
        extraWidth:  0                                  // extra width can ensure lines don't sometimes turn over 
                                                        // due to slight rounding differences and font-family 
    }).superfish({ 
        delay:       400,                               // delay on mouseout 
        animation:   {opacity:'show',height:'show'},    // fade-in and slide-down animation 
        speed:       'fast',                            // faster animation speed 
        autoArrows:  false,                             // disable generation of arrow mark-up 
        dropShadows: false                              // disable drop shadows 
    });
	
    /**********************************/
	/** 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 = $("#header").width();
    	var containerLeft = $("#header").offset().left + parseInt($("#header").css("padding-left"), 10) + 
    		parseInt($("#header").css("margin-left"), 10) + parseInt($("#header").css("borderLeftWidth"), 10); 
    	var max_left = containerWidth + containerLeft;
    	
    	//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();
    	}

    	var elemEndPos = $(this).width() + $(this).offset().left;
    	var newLeft = 0;
    	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();
    	}
    });
    
	/**********************************/
	/** Smooth Scroll                 */
	/**********************************/
	$("a[href*=#]").click(function(){
		var highlight_id = $(this).attr("href").substr($(this).attr("href").indexOf("#")+1);//replace("#", "");
		
		$(".highlight").removeClass("highlight");
		$("#"+highlight_id).addClass("highlight");
		$(this).addClass('highlight');
		
        if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'')
                && location.hostname == this.hostname) {
                    var $target = $(this.hash);
                    $target = $target.length && $target || $('[name=' + this.hash.slice(1) +']');
                    if ($target.length) {
                        var targetOffset = $target.offset().top;
                        $('html,body').animate({scrollTop: targetOffset}, 1000);
                        return false;
                    }
                }		
	});

});

/**
 * Function used to autofill a field with a default value and put back this value whan field is empty
 * 
 * @param id element id
 * @param v element value
 */
function autoFill(id, v){
	jQuery(id).attr({ value: v }).focus(function(){
		if(jQuery(this).val()==v){
			jQuery(this).val("");
		}
	}).blur(function(){
		if(jQuery(this).val()==""){
			jQuery(this).val(v);
		}
	});
}


