﻿/*
This file contains methods specifically for the language flyer drop down in the header
*/

/* BEGIN --- MLS Header Menu Change Request */
var crn_BL = new Image();
var crn_RL = new Image();
var crn_BL_g = new Image();
var crn_BR_g = new Image();
var crn_BL_y = new Image();
var crn_BR_y = new Image();
var drop_BR_g = new Image();
var drop_BL_g = new Image();
var crn_TL = new Image();
var crn_TR = new Image();
var drop_bg_g = new Image();
var drop_bg_y = new Image();
var drop_BR_y = new Image();
var drop_BL_y = new Image();
var greyImg = new Image();
var yellowImg = new Image();
var toggle_C = new Image();

function preLoadImages(imgServerName) 
{
    crn_BL.src = imgServerName + "/images/DropDown/crn_BL.gif";   
    crn_RL.src = imgServerName + "/images/DropDown/crn_RL.gif";
    crn_BL_g.src = imgServerName + "/images/DropDown/crn_BL_g.gif";
    crn_BR_g.src = imgServerName + "/images/DropDown/crn_BR_g.gif";
    crn_BL_y.src = imgServerName + "/images/DropDown/crn_BL_y.gif";
    crn_BR_y.src = imgServerName + "/images/DropDown/crn_BR_y.gif";
    drop_BR_g.src = imgServerName + "/images/DropDown/drop_BR_g.gif";
    drop_BL_g.src = imgServerName + "/images/DropDown/drop_BL_g.gif";
    crn_TL.src = imgServerName + "/images/DropDown/crn_TL.gif";
    crn_TR.src = imgServerName + "/images/DropDown/crn_TR.gif";
    drop_bg_g.src = imgServerName + "/images/DropDown/drop_bg_g.gif";
    drop_bg_y.src = imgServerName + "/images/DropDown/drop_bg_y.gif";
    drop_BR_y.src = imgServerName + "/images/DropDown/drop_BR_y.gif";
    drop_BL_y.src = imgServerName + "/images/DropDown/drop_BL_y.gif";
    greyImg.src = imgServerName + "/images/DropDown/grey.gif";
    yellowImg.src = imgServerName + "/images/DropDown/yellow.gif";
    toggle_C.src = imgServerName + "/images/DropDown/toggle_C.gif";
}

$(document).click(function() {
    if ($("#SupportedLanguagesDiv").length) {
        $('#languageDropdown').hide();
        var langSelectorBottomLeftArc = document.getElementById("langSelector_BottomLeftArc");
        var langSelectorBottomRightArc = document.getElementById("langSelector_BottomRightArc");
        langSelectorBottomLeftArc.style.backgroundImage = "url(" +crn_BL.src+")";
        langSelectorBottomRightArc.style.backgroundImage = "url(" +crn_RL.src+")";
        
    }
});

function fnHandleLanguagesDropDown() {
    if ($("#SupportedLanguagesDiv").length > 0) {
        // Get the position of the placeholder element
        var pos = $("#langSelector_BottomLeftArc").offset();
        var width = $("#SupportedLanguagesDiv").width();
        width += 10;
        var langSelectorBottomLeftArc = document.getElementById("langSelector_BottomLeftArc");
        var langSelectorBottomRightArc = document.getElementById("langSelector_BottomRightArc");
        $('#languageDropdown').width(width);
        // Position the drop down below the placeholder
        $("#languageDropdown").css({ "left": (pos.left) + "px" }); 
             
        
        $("#rightShadow").css({ "left":  73 + "px", "top":  3 + "px" });       
        $("#bottomShadow").css({ "left": 3 + "px", "top": 37 + "px" });
        
        $(window).bind('resize', function() {
            //$('#languageOptions').hide();
        // Position the drop down below the placeholder
        pos = $("#langSelector_BottomLeftArc").offset();

            $("#languageDropdown").css({ "left": (pos.left) + "px" });           
              
                $("#rightShadow").css({ "left": 73 + "px", "top": 3 + "px" });              
                $("#bottomShadow").css({ "left": 3 + "px", "top": 37 + "px" });

        });
        $('#SupportedLanguagesDiv').toggle(function() {

        if ($('#languageDropdown').css('display') == 'none') {
            langSelectorBottomLeftArc.style.backgroundImage = "url(" +crn_BL_g.src+")";
            langSelectorBottomRightArc.style.backgroundImage = "url(" +crn_BR_g.src+")";
                $('#languageDropdown').show();                
            }
            else {
                $('#languageDropdown').hide();
                langSelectorBottomLeftArc.style.backgroundImage = "url(" +crn_BL.src+")";
                langSelectorBottomRightArc.style.backgroundImage = "url(" +crn_RL.src+")";
            }

        }, function() {
            if ($('#languageDropdown').css('display') == 'block') {
                $('#languageDropdown').hide();
                langSelectorBottomLeftArc.style.backgroundImage = "url(" +crn_BL.src+")";
                langSelectorBottomRightArc.style.backgroundImage = "url(" +crn_RL.src+")";
            }
            else {
                $('#languageDropdown').show();
                langSelectorBottomLeftArc.style.backgroundImage = "url(" +crn_BL_g.src+")";
                langSelectorBottomRightArc.style.backgroundImage = "url(" +crn_BR_g.src+")";
            }
        });
     

     
    }
}


function fnApplyYellowImgHover(linkElem) {
    var newImage = "url(" +drop_bg_y.src+")";
    linkElem.style.backgroundImage = newImage;
    var SelectorBottomLeftArc = document.getElementById("langSelector_BottomLeftArc");
    var SelectorBottomRightArc = document.getElementById("langSelector_BottomRightArc");
    SelectorBottomLeftArc.style.backgroundImage = "url(" +crn_BL_y.src+")";
    SelectorBottomRightArc.style.backgroundImage = "url(" +crn_BR_y.src+")";
}

function fnApplyBackgroundImageLastItem() {
    var rightImage = document.getElementById("BRRoundCorner");
    var leftImage = document.getElementById("BLRoundCorner");
    var TopLeftImage = document.getElementById("TLRoundCorner");
    var TopRightImage = document.getElementById("TRRoundCorner");

    var centerImage = document.getElementById("RoundCornerLink");

    rightImage.style.backgroundImage = "url(" +drop_BR_y.src+")";
    leftImage.style.backgroundImage = "url(" +drop_BL_y.src+")";
    centerImage.style.backgroundImage = "url(" +drop_bg_y.src+")";
    TopLeftImage.style.backgroundImage = "url(" +yellowImg.src+")";
    TopRightImage.style.backgroundImage = "url(" +yellowImg.src+")";
}

function fnRemoveBackgroundImageLastItem() {
    var rightImage = document.getElementById("BRRoundCorner");
    var leftImage = document.getElementById("BLRoundCorner");
    var centerImage = document.getElementById("RoundCornerLink");
    var TopLeftImage = document.getElementById("TLRoundCorner");
    var TopRightImage = document.getElementById("TRRoundCorner");

    rightImage.style.backgroundImage = "url(" +drop_BR_g.src+")";
    leftImage.style.backgroundImage = "url(" +drop_BL_g.src+")";
    centerImage.style.backgroundImage = "url(" +drop_bg_g.src+")";
    TopLeftImage.style.backgroundImage = "url(" +greyImg.src+")";
    TopRightImage.style.backgroundImage = "url(" +greyImg.src+")";
}

function fnRemoveYellowImgHover(linkElem) {
    linkElem.style.backgroundImage = "url(" +drop_bg_g.src+")";
    var SelectorBottomLeftArc = document.getElementById("langSelector_BottomLeftArc");
    var SelectorBottomRightArc = document.getElementById("langSelector_BottomRightArc");
    SelectorBottomLeftArc.style.backgroundImage = "url(" +crn_BL_g.src+")";
    SelectorBottomRightArc.style.backgroundImage = "url(" +crn_BR_g.src +")";
}

/* END --- MLS Header Menu Change Request */
function fnChangePageLanguage(requestedUserLanguage, currentUserLanguage, domainDefaultLanguage) {
    //NOTE: There are two possible paths for this function, SEO and Non-SEO
    //      The SEO path must be handled carefull in Javascript because:
    //          1. The URL is the SEO friendly URL
    //          2. In redirecting, we do not want to use the SEO when in an ALT-Language

    //STEP: First, Determine as a check if the requested language is different than the current language...if so, continue
    if (requestedUserLanguage != currentUserLanguage) {
        //STEP: Record the Language Change...send to record page via AJAX
        $.ajax({
            url: '/includes/RecordLanguageChange.asp?langfrom=' + (currentUserLanguage.length == 0 ? domainDefaultLanguage : currentUserLanguage) + '&langto=' + requestedUserLanguage,
            type: "GET"
        });


        $.get("/tealeaf/notify.asp", { elementID: "LanguageSelector", theAction: "Language Changed" });

        var targetUrl = String(window.location.pathname);
        var categoryOrProductId = new Number();
        var objForm = document.getElementById("languageSelectorForm");
        var hdnLang = document.getElementById("langiso");

        // If the startat parameter in the query string has "/business/", then it is a business landing page
        // For these pages we have to change the value to reflect the changing language in the folder structure
        var qs = window.location.search.toLowerCase();
        var landingPgIdx = 0;
        if (qs.length > 0) {
            qs = unescape(qs);
            landingPgIdx = qs.indexOf("/business/");
            if (landingPgIdx <= 0) {
                landingPgIdx = qs.indexOf("/framing/");
            }
        }

        //STEP: Determine if this is an SEO page
        if (targetUrl.indexOf("/-st") == 0) { //Category SEO
            categoryOrProductId = GetParameterFromSeoUrl(targetUrl, "_c");
            var pageNumber = GetParameterFromSeoUrl(targetUrl, "_p");
            targetUrl = "/" + requestedUserLanguage + "/gallery.asp?startat=/" + requestedUserLanguage + "/getthumb.asp&c=c&search=" + categoryOrProductId + "&langiso=" + requestedUserLanguage;
            //STEP: This will set to the same pagenumber, commenting out because we want to go to page 1 for now
            //if (pageNumber.length > 0) {
            //    targetUrl += "&page=" + pageNumber;
            //}
            window.location = targetUrl;
        }
        else if (targetUrl.indexOf("/-sp") == 0) { //Product SEO
            categoryOrProductId = GetParameterFromSeoUrl(targetUrl, "_i");
            targetUrl = "/" + requestedUserLanguage + "/gallery.asp?startat=/" + requestedUserLanguage + "/getposter.asp&apnum=" + categoryOrProductId + "&langiso=" + requestedUserLanguage;
            window.location = targetUrl;
        }
        else if (isPageCalledDirectly(objForm)) {
            //Page may have been called direct and cached, so handle through client side code...to do this, check the page name
            var redirectLocation = setUrlForMultiLingual(targetUrl, requestedUserLanguage, currentUserLanguage, domainDefaultLanguage);
            if (window.location.search.length > 2)
                redirectLocation += setQueryStringForMultiLingual(window.location.search, requestedUserLanguage, currentUserLanguage, domainDefaultLanguage);
            window.location = redirectLocation;
        }
        else if (landingPgIdx > 0) {
            var changeToLanguage = new String(requestedUserLanguage.length == 0 ? domainDefaultLanguage : requestedUserLanguage);
            var displayingLanguage = new String(currentUserLanguage.length == 0 ? domainDefaultLanguage : currentUserLanguage);

            qs = qs.replace("?", "");
            qs = qs.replace("?langiso=" + displayingLanguage, "");
            qs = qs.replace("&langiso=" + displayingLanguage, "");

            qs = qs.replace(displayingLanguage, changeToLanguage);
            qs += "&langiso=" + changeToLanguage;
            qs = qs.replace("&&", "&");
            var redirectLocation = setUrlForMultiLingual(targetUrl, requestedUserLanguage, currentUserLanguage, domainDefaultLanguage);
            window.location = redirectLocation + "?" + qs;
        }
        else { //All Others
            targetUrl = setUrlForMultiLingual(targetUrl, requestedUserLanguage, currentUserLanguage, domainDefaultLanguage);

            hdnLang.value = requestedUserLanguage;
            objForm.action = targetUrl;
            objForm.submit();
        }
    }
}

//FUNCTION: get parameter from SEO URL
function GetParameterFromSeoUrl(pUrl, pParameterName) {
    var retval = "";
    var workingString = "";
    if (pUrl.toString().indexOf(pParameterName) >= 0) {
        //STEP: get string from parameter to end of string
        workingString = String(pUrl.substr(pUrl.indexOf(pParameterName) + pParameterName.length, pUrl.length));

        //STEP: the value of parameter is delimited by "_", get substr to first instance of this
        retval = workingString.substr(0, workingString.indexOf("_"));
    }
    return retval;
}

//FUNCTION: will examine url...certain values will mean that this page was called directly, and therefore it may be cached
function isPageCalledDirectly(pFormObject) {
    var returnValue = false;
    var startatValue = pFormObject.elements["startat"];
    if (startatValue) {

        if (startatValue.value.toLowerCase().indexOf("/fpnavigation.asp") >= 0 || startatValue.value.toLowerCase().indexOf("/st.asp") >= 0)
            returnValue = true;
    }
    return returnValue;
}

function setQueryStringForMultiLingual(pQueryString, pRequestedUserLanguage, pCurrentUserLanguage, pDomainDefaultLanguage) {
    var returnValue = "";
    var domainDefaultLanguage = new String(pDomainDefaultLanguage);
    var requestedUserLanguage = new String(pRequestedUserLanguage.length == 0 ? domainDefaultLanguage : pRequestedUserLanguage);
    var currentUserLanguage = new String(pCurrentUserLanguage.length == 0 ? domainDefaultLanguage : pCurrentUserLanguage);
    if (pQueryString.indexOf("langiso=") >= 0) {
        returnValue = pQueryString.replace("langiso=" + currentUserLanguage, "langiso=" + requestedUserLanguage);
    } else {
        returnValue = pQueryString + (pQueryString.length > 0 ? "&" : "") + "langiso=" + requestedUserLanguage;
    }
    //STEP: remove the page number so that search goes back to page 1
    returnValue = returnValue.replace("page=", "zpagez=");
    return returnValue;
}

function setUrlForMultiLingual(pUrl, pRequestedUserLanguage, pCurrentUserLanguage, pDomainDefaultLanguage) {
    //NOTE: will make certain that the url is formatted correctly for MLS
    //ASSUMES: pUrl is a valid URL, and that language is indeed changing, and that currentUserLanguage is the true and valid
    var url = new String(pUrl);
    var requestedUserLanguage = new String(pRequestedUserLanguage.length == 0 ? pDomainDefaultLanguage : pRequestedUserLanguage);
    var currentUserLanguage = new String(pCurrentUserLanguage.length == 0 ? pDomainDefaultLanguage : pCurrentUserLanguage);
    var domainDefaultLanguage = new String(pDomainDefaultLanguage);

    var bIsChangingToDefault = (domainDefaultLanguage.toString() == requestedUserLanguage.toString());
    var bIsCurrentlyOnDefault = (domainDefaultLanguage.toString() == currentUserLanguage.toString());
    if (bIsChangingToDefault) {
        //STEP: is the Current Lang in the Url?  if so, extract it
        url = url.replace("/" + currentUserLanguage + "/", "/");
    }
    else {
        if (bIsCurrentlyOnDefault) {
            url = "/" + requestedUserLanguage + (url.indexOf("/", 0) == 0 ? "" : "/") + url;
        }
        else {
            url = url.replace("/" + currentUserLanguage + "/", "/" + requestedUserLanguage + "/");
        }
    }
    return url;
}
