/* currency.js */

// page must implement:-
//  a getCurrencyBlocks() function
//  cmdGBP[], chkGBP[], cmdUSD[], chkUSD[], divPurchaseGBP[], divPurchase[]


// **********************************************
// methods called by directly web page

// called by BODY onload
function loadCurrency() {
    var currencyCode = getCookie("currencyCode");
    var lang;

    // if no cookie, set a default
    if (currencyCode == null) {

        lang = getCurrencyLang();

        if (lang == 'en-us') {
            currencyCode = 'USD';
        }
        else {
            currencyCode = 'GBP';
        }
        saveCurrency(currencyCode);
    }

    selectCurrency(currencyCode); // needs to exist in page
}


// called by currency selector elements (cmds and chks)
function selectCurrency(currencyCode) {
    var id;
    var cmdGBP;
    var cmdUSD;
    var chkGBP;
    var chkUSD;


    i = 1;
    while (i <= getCurrencyBlocks()) {
        chkGBP = document.getElementById('chkGBP' + i);
        chkUSD = document.getElementById('chkUSD' + i);

        chkGBP.checked = false;
        chkUSD.checked = false;


        cmdGBP = document.getElementById('cmdGBP' + i);
        cmdUSD = document.getElementById('cmdUSD' + i);

        cmdGBP.style.backgroundColor = 'white';
        cmdUSD.style.backgroundColor = 'white';

        if (currencyCode == 'GBP') {
            chkGBP.checked = true;
            cmdGBP.style.backgroundColor = 'LightSteelBlue';

        }
        else if (currencyCode == 'USD') {
            chkUSD.checked = true;
            cmdUSD.style.backgroundColor = 'LightSteelBlue';
        }

        ++i;
    }

    saveCurrency(currencyCode);
    switchCurrency(currencyCode);
}


// **********************************************
// helper functions


// get browser language
function getCurrencyLang() {
    var lang;
    if (typeof navigator.userLanguage != "undefined") {
        lang = navigator.userLanguage.toLowerCase();
    }
    else if (typeof navigator.language != "undefined") {
        lange = navigator.language.toLowerCase();
    }
    return lang;
}


// save currency code as cookie
function saveCurrency(currencyCode) {
    setCookie("currencyCode", currencyCode, getExpDate(1000, 0, 0));
}


// make selected currency groups visible, hide all others
function switchCurrency(currencyCode) {
    var divGBP;
    var divUSD;
    var i;

    i = 1;
    while (i <= getCurrencyBlocks()) {
        divGBP = document.getElementById('divPurchaseGBP' + i);
        divUSD = document.getElementById('divPurchaseUSD' + i);
    
        switchCurrencyDivs(currencyCode, divGBP, divUSD);
        ++i;        
    }
}


// make a currency block visible, hide others
function switchCurrencyDivs(currencyCode, divGBP, divUSD) {
    switch (currencyCode) {
        case 'USD':
            divGBP.style.display = "none";
            divUSD.style.display = "block";
            break;

        default:
            divGBP.style.display = "block";
            divUSD.style.display = "none";
    }
}
