/*================================================== GLOBAL JAVASCRIPT */
/*
Javascript Document for Land Securities
Build: Pete Robelou on behalf of SAS - 11/05/2010
*/

$('html').addClass('js');

//Global variable
var header_nav_open_timer;
var header_nav_open_timer_duration = 200;
var header_nav_timer;
var header_nav_timer_duration = 200; /* was 500 */
var anchor_top_default = 195;

var expand_speed = 250;

var property_open = false;

//Shadowbox setup
Shadowbox.loadSkin('landsecurities', '/scripts/shadowbox/skin/'); // use the "landsecurities" skin
Shadowbox.loadLanguage('en', '/scripts/shadowbox/lang/'); // use the English language
Shadowbox.loadPlayer(['img', 'iframe'], '/scripts/shadowbox/player/'); // use iframe player

//------------------------ ANIMATE DRAW
// Using simple literal objects to encapsulate new functionality and avoid name clashes.
var LS = new Object();

LS.animateLinks = {
    container: "",
    containerBody: "",
    containerCloser: "",
    active: false, // controller to avoid multiple clicks before last finishes.

    init: function (elements, links) {
        var t = LS.animateLinks;

        // Set the container, body, and closer element from IDs.
        if (elements) {
            for (var el in elements) {
                t[el] = $("#" + elements[el]);
                // Check existence of elements
                if (t[el].length < 1) {
                    throw "Unable to find element with id: " + el;
                }
            }
            // Add the close event.
            t.containerCloser.click(t.closeLink);
        }
        else {
            throw "You need to specify your container, body, and closer elements.";
        }

        if (links) {
            // Add open events to links.                
            links.click(LS.animateLinks.openLink);
        }
        else {
            throw "You need to pass in a jQuery object for links.";
        }
    },

    openLink: function () {
        var t = LS.animateLinks;
        var linkUrl = this.href;

        if (!t.active) {
            t.active = true;
                        t.containerBody.load(linkUrl, null, function () {
                            $(t.container).animate({
                                left: "-2px"
                            }, 1200, "easeOutQuint",
                                  function () {
                                      t.active = false;
                                  });

                            initCeoDrawer();
                            initHighlightPopup();
                        });
        }
        return false;
    },

    closeLink: function () {
        var t = LS.animateLinks;
        t.active = false;
        $(t.container).animate({ left: "-822px" }, 1000, "easeOutQuint");
    }
}


$(document).ready(function () {
    /*////////////////////////////////////// INITILISE FUNCTIONS */


    //------------------------ FIX IE6 BACKGROUND IMAGE CACHING PROBLEM
    if (jQuery.browser.msie) {
        try {
            document.execCommand("BackgroundImageCache", false, true);
        } catch (err) { }
    }

    //------------------------ SHADOWBOX
    Shadowbox.init({ overlayOpacity: 0.9 });

    //------------------------  VIDEO CENTRE SHADOWBOX 
    $(".right_hand_media_centre a").click(function () {
        Shadowbox.open({
            content: this.href,
            player: "iframe",
            // title:      "Title goes here",
            height: 410,
            width: 820
        });
        return false;
    });

    //------------------------ HEADER NAVIGATION DROPDOWN
    headerNavigation();

    //------------------------ HOMEPAGE DRAWERS
    // Initiate AJAX links
    if ($("#draw_content").length > 0) {
        LS.animateLinks.init({
            // Set the element IDs...
            container: "draw",
            containerBody: "draw_content",
            containerCloser: "draw_close"
        }, $(".landing_link, .landing_link_image"));
    }

    drawerLinkAppend('.landing_module a.landing_link');
    drawerLinkAppend('.landing_module a.landing_link_image');

    //------------------------ REMOVE LINK FROM BUTTON FOR JS ENABLED BROWSERS
    $('.nonjs_link').click(function () { return false });

    //------------------------ FORMS         
    InitInputDefaultValue(".searchterms", ".searchbutton", "Search");

    //------------------------ GLOSSARY EXPANDER
    initGlossary();

    //------------------------ EXPANDER CONTENT
    initExpander();

    //------------------------ TABS NAVIGATION
    initTabsNavigation();

    //------------------------ HIGHLIGHT POPUP CONTENT
    initHighlightPopup();

    //------------------------ POPUP FOR TOP PROPERTIES 
    $('.property_container').hover(function () {
        $(this).find('p').addClass('hover');
    }, function () {
        $(this).find('p').removeClass('hover');
    });

    // hide all profiles	
    $('div[id^=container_]').hide();

    // open profile function	
    $('div[id^=property_]').click(function () {
        var property_number = $(this).attr('id').split('property_')[1];
        $('#container_' + property_number).fadeIn('fast');
        property_open = true;
        return false;
    });

    // close profile functions	
    $(document).click(function (event) {
        var target = $(event.target);
        if (property_open && !target.is('div[class^=highlight_]') && !target.parents('div[id^=container_]').length) {
            $('div[id^=container_]').fadeOut('fast');
            property_open = false;
            return false;
        }
    });
    $('a.close_popup').click(function (event) {
        $(this).parents('div[id^=container_]').fadeOut('fast');
        property_open = false;
        return false;
    });


    //------------------------ SMOOTH SCROLL
    $('#master_container').localScroll();

    //------------------------ TABLE HIGHLIGHTING
    $("table.datatable").find("tbody tr").hover(function () {
        $(this).addClass("hover");
    }, function () {
        $(this).removeClass("hover");
    });

    $("table.download_table").find("tbody tr").hover(function () {
        $(this).addClass("hover");
    }, function () {
        $(this).removeClass("hover");
    });
   

    //------------------------ CYOR CHECK ALL LINKS
    $('.report_section_container a.link_check_all').click(function () {
        $(this).parent('.report_section_container').find('input[type=checkbox]').attr('checked', 'checked');
        return false;
    });

    //------------------------ CREATE REPORT EVENTS
    $('.report_section_container li img').click(function () {
        var relCheckbox = $(this).find('+ input')
        if (relCheckbox.fieldValue() != '') {
            relCheckbox.attr('checked', '');
        } else {
            relCheckbox.attr('checked', 'checked');
        }
        return false;
    });
});

//--------------------------------------------- FUNCTIONS -------------------------------------------------


//--------------------------------------------- CEO MEDIA CENTRE DRAWER 
function reloadSwfObject() {
    var flashVars = { xmlpath: "/flash/media_centre/data/", imagepath: "/flash/media_centre/images/", videopath: "/flash/media_centre/video/", initstate: "1" };
    var flashParams = { wmode: "opaque" };
    swfobject.embedSWF("/media/124435/video_console.swf", "flash_container_media", "800", "360", "9", "", flashVars, flashParams);
};

function initCeoDrawer() {
    $('#master_container').localScroll();
    $('.ceo_video').click(
    function () {        
        reloadSwfObject();        
        return false;
    });
}

//--------------------------------------------- DROPDOWN NAVIGATION HEADER
function headerNavigation() {
    $('.dropdown_navigation > li').hover(
	function () {
	    var current_id = this.id;

	    window.clearTimeout(header_nav_timer);
	    header_nav_timer = null;
	    hideDropNav();
	    showDropNav($(this));
	}, function () {
	    window.clearTimeout(header_nav_open_timer);
	    if ($(this).hasClass('droplink')) {
	        header_nav_timer = window.setTimeout('hideDropNav(".dropdown_navigation li.droplink")', header_nav_timer_duration);
	    } else {
	        hideDropNav();
	    }
	});
}

//--------------------------------------------- SHOW / HIDE DROPDOWN NAVIGATION
function showDropNav(current_id) {
    $('ul', $(current_id)).css('display', 'block');
    $('div.droplink_navigation_container', $(current_id)).css('display', 'block');

    if ($(current_id).hasClass('droplink')) {
        $(current_id).addClass('current');
    }
};

function hideDropNav(current_id) {
    if (arguments.length > 0) {
        $(current_id).find('ul').hide();
        $(current_id).find('div.droplink_navigation_container').hide();
        $(current_id).removeClass('current');
    } else {
        $('#support_navigation li ul').hide();
        $('#main_navigation li div.droplink_navigation_container').hide();
        $('.dropdown_navigation > li').removeClass('current');
    }
};


//--------------------------------------------- TABS NAVIGATION
function initTabsNavigation() {
    var tabToLoad = getURLParam('tab');
    if (tabToLoad != "") {
        loadTab(tabToLoad);
    }

    $('#tab_links a').click(function () {
        var tab_id = $(this).attr('id').split('tab_link_')[1];
        loadTab(tab_id);
        return false;
    });
}

function loadTab(tab_id) {
    var closePopupContent = $("div.highlight_link_content");

    $('#tab_links a.current').removeClass('current');
    $('#tab_links a#tab_link_' + tab_id).addClass('current');
    $('.tab_content.current').removeClass('current');
    $('#tab_content_container_' + tab_id).addClass('current');
    closePopupContent.hide();
}


//--------------------------------------------- EXPANDER FOR GLOSSARY
function initGlossary() {
    var expander = $("#link_expand_list");
    var phraseLinks = $("#gn_phrases_body");
    var minClass = "minimised";

    expander.click(function () {
        this.href = this.href.replace(/#.*/, ""); // strip out the fragment identifier so Firefox does not ignore return false.
        if (phraseLinks.attr("class") == minClass) {
            phraseLinks.slideDown().removeClass(minClass);
            expander.html("Hide full list").removeClass(minClass);
        }
        else {
            phraseLinks.slideUp().addClass(minClass);
            expander.html("Click to expand full list").addClass(minClass);
        }
        return false;
    });

    // initially set minimised
    expander.addClass(minClass);
    phraseLinks.slideUp().addClass(minClass);
}


//--------------------------------------------- EXPANDER CONTENT
function initExpander() {
    $(".expander_link").click(function () {
        var link = $(this);
        var module_holder = $(this).parents('.expander_container').find(".expander_content");
        var state = "open";

        if (module_holder.css("display") == 'block') {
            module_holder.slideUp();
            if (link.html() != "Related downloads") {
                link.html("Read more");
            }
            link.removeClass(state);
        }
        else {
            module_holder.slideDown();
            if (link.text() != "Related downloads") {
                link.html("Close");
            }
            link.addClass(state);
        }
        return false;
    });
    $(".expander_img").click(function () {
        var link = $(this).parents('.people_profile_container').find(".expander_link");
        var module_holder = $(this).parents('.people_profile_container').find(".expander_content");
        var state = "open";

		if (module_holder.css("display") == 'block') {
            module_holder.slideUp();
                link.html("Read more");
            link.removeClass(state);
        }
        else {
            module_holder.slideDown();
                link.html("Close");
            link.addClass(state);
        }
        return false;
    });

}

//--------------------------------------------- HIGHLIGHT POPUP CONTENT
function initHighlightPopup() {
    $(".highlight_link").click(function () {
        var popupContent = $(this).parents("div.highlight_link_container").find("div.highlight_link_content");

        var linkContainerPositionX = $(this).parents("div.highlight_link_container").offset().left;
        var linkPositionX = $(this).offset().left;
        var linkContainerPositionY = $(this).parents("div.highlight_link_container").offset().top;
        var linkPositionY = $(this).offset().top;
        var linkPositionHeight = $(this).height();
        var popupContentPositionX = linkPositionX - linkContainerPositionX;
        var popupContentPositionY = linkPositionY - linkContainerPositionY + linkPositionHeight;        

        initCloseHighlightPopup();
        if (popupContent.css("display") == 'none') {
            popupContent.css({ "top": (popupContentPositionY) + "px", "left": (popupContentPositionX) + "px" });
            popupContent.slideDown();
        }
        return false;
    });
}

//--------------------------------------------- CLOSE HIGHLIGHT POPUP CONTENT
function initCloseHighlightPopup() {
    var closePopupContent = $("div.highlight_link_content");

    closePopupContent.slideUp();
    return false;
}

//--------------------------------------------- FORMS
/* initialize the inputs which requires a 'default value' system */
function InitInputDefaultValue(input_class, submit_class, default_value) {
    var input_text = $(input_class);

    //Init the input field
    if (input_text.val() == "") {
        input_text.val(default_value);
    }

    //Add input field events
    input_text.click(function () {
        if ($(this).val() == default_value)
            $(this).val("");
    }).blur(function () {
        if ($(this).val() == "")
            $(this).val(default_value);
    });

    //Add form submit event
    $(submit_class).click(function () {
        if (input_text.val() == default_value) {
            input_text.val("");
        }
    });
}

function getURLParam(strParamName) {
    var strReturn = "";
    var strHref = window.location.href;

    if (strHref.indexOf("?") > -1) {
        var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();
        var aQueryString = strQueryString.split("&");
        for (var iParam = 0; iParam < aQueryString.length; iParam++) {
            if (aQueryString[iParam].indexOf(strParamName.toLowerCase() + "=") > -1) {
                var aParam = aQueryString[iParam].split("=");
                strReturn = aParam[1];
                break;
            }
        }
    }
    return strReturn;
}

function toggleDrawer() {
    $('#priorities_link').trigger('click');
}

function openDrawer(link_id) {
    $('#' + link_id).trigger('click');
}

function drawerLinkAppend(target) {
    $(target).each(function () {
        var drawerLink = $(this);
        var drawerLinkUrl = drawerLink.attr('href') + '?alttemplate=hpdrawer';
        $(this).attr('href', drawerLinkUrl);
    });
}
