/*================================================== JAVASCRIPT */
/*
    Javascript Document for Diageo Annual Report 2009
    Build: Pete Robelou on behalf of SAS - 24/08/2009
*/

//Apply the Javascript-enabled styles (hidding expandable boxes for instance)
$('html').addClass('js'); 

//Global variables
var var_timer;
var header_supportnav_timer;
var header_supportnav_timer_duration = 500;
var anchor_top_default = 185;

$(document).ready(function() {     

    // Fix IE6 background image caching problem
    if (jQuery.browser.msie) {
        try { 
            document.execCommand("BackgroundImageCache", false, true); 
        } catch(err) {}
    }
    
    //BANNER QUOTE POSITION    
    $('#banner_quote').addClass($('#background_banner').attr('class'));    
    
    //SEARCH BOX
    InitInputDefaultValue(".defaultvalue_input");
    InitSubmitDefaultValue(".defaultvalue_submit", ".defaultvalue_input");
    
    // INITIALISE HEADER SUPPORT NAVIGATION DROPDOWN
    $('#header_support_nav > li').hover(
	function() { 
	    window.clearTimeout(header_supportnav_timer);
	    hideSupportNav();
	    
	    $('ul', this).css('display', 'block');
	    $(this).addClass('current');	    	 
	    },
    function() {
        if($(this).hasClass('drop_link')){
            header_supportnav_timer = window.setTimeout('hideSupportNav("li.drop_link")', header_supportnav_timer_duration);
        }else{
            hideSupportNav();
        }    
	});	
	
	// ANCHOR SMOOTH SCROLL
    $('#page').localScroll();
	
	// ANCHOR NAVIGATION POSITION
	PositionAnchorNav();
	$(window).resize(function(){
        PositionAnchorNav();
	});
	
	$(window).scroll(function(){
        PositionAnchorNav();
	});
	
	// TABLE HIGHLIGHTING
    $("table.datatable, table.glossary_terms").find("tbody tr").hover(function(){                                 
        $(this).addClass("hover");
    },function(){
        $(this).removeClass("hover");
    });
    
    $("table.generaltable").find("tbody tr").hover(function(){                                         
        if($(this).find('td:eq(0)').not('[class=row_header]').length){
            $(this).addClass("hover");
        }
    },function(){
        if($(this).find('td:eq(0)').not('[class=row_header]').length){
            $(this).removeClass("hover");
        }
    });
    
    // INITIALISE EXPANDABLE MODULES 
    InitExpandableModules();
    
    //CREATE REPORT EVENTS
    $('#create_report li a').click(function(){
        var relCheckbox = $(this).find('+ input')                
        if(relCheckbox.fieldValue() != ''){
            relCheckbox.attr('checked', '');
        }else{
            relCheckbox.attr('checked', 'checked');
        }
        return false;
    });

    $('#create_report ul').css('opacity', 0);
    
    
    // DROPSHADOW FOR BANNER QUOTE
    $("#banner_quote p").dropShadow();
	
});

function PositionAnchorNav(){
    var anchor_width = $('#anchor_nav_container').width();
    var anchor_left = $('#page').offset().left + $('#page').width() - anchor_width - 18;        
    var anchor_top_distance = anchor_top_default - window.pageYOffset;
    
    if (jQuery.browser.msie) {
        anchor_top_distance = anchor_top_default - document.documentElement.scrollTop;
    }
    
    var anchor_top = anchor_top_default;
    
    if(anchor_top_distance > 10){
        anchor_top = anchor_top_distance;
    }else{
        anchor_top = 10;
    }
    
    $('#anchor_nav_container').css('top', anchor_top);
    $('#anchor_nav_container').css('left', anchor_left);
        
    //console.log(anchor_top_distance);
}

//--------------------------------------------- HIDE HEADER SUPPORT NAVIGATION DROPDOWN
function hideSupportNav(current_id) { 
    if(arguments.length > 0){
        $(current_id).find('ul').hide();           
        $(current_id).removeClass('current');
    }else{
        $('#header_support_nav li ul').hide();        
        $('#header_support_nav > li').removeClass('current');
    } 
};


//--------------------------------------------- EXPANDABLE MODULES
function InitExpandableModules() {
    //$('div.default_open').find('a.expanding_link').addClass("open");

    $("a.expanding_link").click(function() {
        var opening = false;
        var link = $(this);
        var module_holder = $(this).parent().find('div.expand');
        
        if(module_holder.is(':hidden')) opening = true;

        if(!opening){            
            $('#create_report ul').animate({
                    opacity: 0
                }, 'fast');
        }

        module_holder.slideToggle("slow", function() {
            link.toggleClass('open');
            
            if(opening){
                $('#create_report ul').animate({
                    opacity: 1
                }, 'normal');
            }
        });
        return false;
    });
}


//--------------------------------------------- Forms
/* initialize the inputs which requires a 'default value' system */
function InitInputDefaultValue(input_class) {

    $(input_class).each(function(i) {
        var current_input_id = $(this).attr("id");
        var default_value = GetInputDefaultValue(current_input_id);
        if ($(this).val() == "") {
            $(this).val(default_value);
        }
        InitInputDefaultValueEvents("#" + current_input_id, default_value)
    });
}

/* set the focus and blur events for the 'default value' inputs */
function InitInputDefaultValueEvents(input_id, default_value) {

    $(input_id).click(function() {
        if ($(this).val() == default_value)
            $(this).val("");
    });

    $(input_id).blur(function() {
        if ($(this).val() == "")
            $(this).val(default_value);
    });
}

/* return the value of the label associated to the input */
function GetInputDefaultValue(input_id) {

    var input_default_value = "";
    $("label").each(function(j) {
        if ($(this).attr("for") == input_id) {
            input_default_value = $.trim($(this).text());
        }
    });
    return input_default_value;
}

/* clear the value of the input still using their 'default value' when the form is submitted */
function InitSubmitDefaultValue(submit_class, defaultvalue_class) {

    $(submit_class).click(function() {
        $(this).parent().find(defaultvalue_class).each(function(i) {
            var default_value = GetInputDefaultValue($(this).attr("id"));
            if ($(this).val() == default_value) {
                $(this).val("");
            }
        });
    });
}