﻿var RatesArray0 = new Array()
var RatesArray3 = new Array()
var RatesArray4 = new Array()
var RatesArray5 = new Array()
var RatesArraySub = new Array()
var arrCurrRates = new Array()
var _GlobalCurrencyCode
var _GlobalSelectedCurrencyCode
var _FirstLoad = true
var DisplaySelectedCode
var _GlobalTableCount
var ExchangeRate
var _GlobalType
var CurLoaded = false
var _GlobalOnRequest
var ddStyle = ""
var imgStyle = ""
var _ClinetCurrencyCode = ''
var varCurrSign;
function prepare(bCur, Type, Onreq, CurrencySign) {
    if (navigator.userAgent == "sitegen") {
        return 0
    }
    _GlobalOnRequest = Onreq
    _GlobalType = Type
    _GlobalCurrencyCode = bCur
    getClinetCurr()
    varCurrSign = CurrencySign;
    WriteDropDown(_GlobalCurrencyCode)
    rates()
}
function rates() {
    if (_FirstLoad == true) {
        if (_GlobalType == 'cityrates') {
            if (document.getElementById("ratestable3") != null) {
                FillRatesArray(document.getElementById("ratestable3"), RatesArray3)
            }
            if (document.getElementById("ratestable4") != null) {
                FillRatesArray(document.getElementById("ratestable4"), RatesArray4)
            }
            if (document.getElementById("ratestable5") != null) {
                FillRatesArray(document.getElementById("ratestable5"), RatesArray5)
            }
        } else if (_GlobalType == 'all') {
            if (document.getElementById("ratestable0") != null) {
                FillRatesArray(document.getElementById("ratestable0"), RatesArray0)
            }
            if (document.getElementById("ratestableSub") != null) {
                FillRatesArray(document.getElementById("ratestableSub"), RatesArraySub)
            }
        } else {
            if (document.getElementById("hotrates") != null) {
                FillRatesArray(document.getElementById("hotrates"), RatesArray3)
            }
            if (document.getElementById("hotelmeal") != null) {
                FillRatesArray(document.getElementById("hotelmeal"), RatesArray4)
            }
            if (document.getElementById("hotelextra") != null) {
                FillRatesArray(document.getElementById("hotelextra"), RatesArray5)
            } 
        }
        ExchangeRate = 1
        _GlobalSelectedCurrencyCode = _GlobalCurrencyCode
        CurLoaded = true
        _FirstLoad = false
    } else {
        if (http_request.readyState == 4) {
            if (http_request.status == 200) {
                response = http_request.responseXML.documentElement
                ManageDropDown(false)
                if (CheckCache(_GlobalSelectedCurrencyCode)) {
                    ExchangeRate = GetCurrCache(_GlobalSelectedCurrencyCode)
                    varCurrSign = GetCurrSignCache(_GlobalSelectedCurrencyCode);
                } else {
                    ExchangeRate = response.getElementsByTagName('ExchangeRate')[0].firstChild.data
                    varCurrSign = response.getElementsByTagName('DisplayCurrencySign')[0].firstChild.data;
                    addRateToCache(ExchangeRate, varCurrSign);
                }
                CurLoaded = true
            } 
        } 
    }
    if (CurLoaded == true) {
        if (_GlobalType == 'cityrates') {
            if (document.getElementById("ratestable3") != null) {
                ApplyRates(document.getElementById("ratestable3"), ExchangeRate, RatesArray3)
            }
            if (document.getElementById("ratestable4") != null) {
                ApplyRates(document.getElementById("ratestable4"), ExchangeRate, RatesArray4)
            }
            if (document.getElementById("ratestable5") != null) {
                ApplyRates(document.getElementById("ratestable5"), ExchangeRate, RatesArray5)
            }
        } else if (_GlobalType == 'all') {
            if (document.getElementById("ratestable0") != null) {
                ApplyRates(document.getElementById("ratestable0"), ExchangeRate, RatesArray0)
            }
            if (document.getElementById("ratestableSub") != null) {
                ApplyRates(document.getElementById("ratestableSub"), ExchangeRate, RatesArraySub)
            }
        } else {
            if (document.getElementById("hotrates") != null) {
                ApplyRates(document.getElementById("hotrates"), ExchangeRate, RatesArray3)
            }
            if (document.getElementById("hotelmeal") != null) {
                ApplyRates(document.getElementById("hotelmeal"), ExchangeRate, RatesArray4)
            }
            if (document.getElementById("hotelextra") != null) {
                ApplyRates(document.getElementById("hotelextra"), ExchangeRate, RatesArray5)
            } 
        }
        CurLoaded = false
    }
    ManageDropDown(false)
    LoadingImage('none', 'loadingimg')
}
function FillRatesArray(RatesTable, ArrayName) {
    var CellNum = 3
    var varTableRows = RatesTable.rows.length - 1
    var Price
    z = 0
    try {
        for (j = 1; j <= varTableRows; j++) {
            if ((_GlobalType == 'cityrates') || (_GlobalType == 'all')) {
                if (RatesTable.attributes['id'].value == 'ratestableSub') {
                    CellNum = 1
                }
                else {
                    CellNum = 3
                } 
            }
            else {
                CellNum = RatesTable.rows[j].cells.length - 1
            }
            Price = RatesTable.rows[j].cells[CellNum].innerHTML.replace(',', '')
            if ((Price.length <= 0) || Price == '&nbsp;' || Price == 0) {
                Price = 0
            }
            ArrayName[z] = Price
            z = z + 1
        }
    } catch (e) { onError(e); NoRates = true; } 
}
function ApplyRates(RatesTable, ExchangeRate, ArrayName) {
    var z = 0
    var CellNum = 3
    var varRate
    var CalcOnRequest = 0
    var varTableRows = RatesTable.rows.length - 1
    for (j = 1; j <= varTableRows; j++) {
        if ((_GlobalType == 'cityrates') || (_GlobalType == 'all')) {
            varRate = ArrayName[_GlobalTableCount]
            if (RatesTable.attributes['id'].value == 'ratestableSub') {
                CellNum = 1
            }
            else {
                CellNum = 3
            } 
        }
        else {
            CellNum = RatesTable.rows[j].cells.length - 1
        }
        var CurrRate = ApplyRateMultiplier(ArrayName[z], ExchangeRate)
        if (CurrRate == 0) {
            RatesTable.rows[j].cells[CellNum].innerHTML = _GlobalOnRequest
        } else {
            var ccode
            RatesTable.rows[j].cells[CellNum].innerHTML = unescape(varCurrSign) + ' ' + CurrencyFormatLocaleSEO(CurrRate, _GlobalSelectedCurrencyCode);
        }
        z++
    }
}
function CurrencyFormatLocaleSEO(number, currcode) {
    var result
    var commaReplacement;
    var decimalReplacement;
    var decimals
    x = new Array();
    switch (currcode) {
        case "NOK":
            commaReplacement = " ";
            decimalReplacement = ",";
            decimals = 2;
            break;
        case "DKK":
        case "EUR":
        case "SEK":
            commaReplacement = ".";
            decimalReplacement = ",";
            decimals = 2;
            break;
        case "CHF":
            commaReplacement = "'";
            decimalReplacement = ".";
            decimals = 2;
            break;
        case "JPY":
        case "TWD":
            commaReplacement = ",";
            decimalReplacement = ".";
            decimals = 0;
            break;
        default: //AUD CAD GBP HKD NZD SGD USD ZAR
            commaReplacement = ",";
            decimalReplacement = ".";
            decimals = 2;
    }
    result = parseFloat(number).toFixed(decimals);
    if (decimals == null) { decimals = 2 }
    x = result.split('.');
    result = addCommas(x[0]);
    if (x[1] != null) { result = result + "." + x[1]; }
    //Replace with symbols that are never used for thousand placeholder or decimal place holder
    result = result.replace(",", "~");
    result = result.replace(".", "@");
    result = result.replace("~", commaReplacement);
    result = result.replace("@", decimalReplacement);
    return result;
}
var arrTmpNo, tmpInd;
arrTmpNo = new Array();  //
tmpInd = 0; //
function addCommas(val) {
    var isNegative;
    isNegative = (val < 0);
    if (isNegative)
        val = val.substring(1, val.length);
    while (val.indexOf(',') != -1)
        val = val.replace(',', '');
    arrTmpNo.length = 0;
    tmpInd = parseInt((val.length - 1) / 3);
    while (tmpInd > 0) {
        arrTmpNo[tmpInd--] = val.substring(val.length - 3, val.length);
        val = val.substring(0, val.length - 3);
    }
    if (val > 0 && arrTmpNo.length > 0)
        val = val + arrTmpNo;
    if (isNegative)
        val = '-' + val;
    return val;
}
function ApplyRateMultiplier(dblRate, dblMultiplier) {
    if (dblRate == null) {
        return null
    }
    else {
        var Value
        Value = dblRate * dblMultiplier
        return Value.toFixed(2)
    } 
}
function FormatK(num) {
    var b, p1, p2, r, k
    r = null
    k = 3
    if (num.indexOf('.') != -1) {
        var NumSplit = num.split('.')
        b = NumSplit[0]
        r = NumSplit[1]
    } else {
        b = num
    }
    if (b.length > k) {
        p1 = num.substring(0, b.length - k)
        p2 = num.substring(b.length - k, b.length)
        if (r != null) {
            r = '.' + r
        }
        return p1 + ',' + p2 + r
    } else {
        return num
    } 
}
function ChangeCurrency(obj) {
    SyncDD(obj)
    _GlobalSelectedCurrencyCode = obj.value
    makeRequest('/sitegen/ExchangeRate.asp', _GlobalCurrencyCode, obj.value)
}
function ManageDropDown(varValue) {
    varDropDownObj = getElementsByClassName('currdrop', '')
    for (DropDownItem in varDropDownObj) {
        varDropDownObj[DropDownItem].disabled = varValue
    } 
}
function SyncDD(obj) {
    var varSyncDrop = getElementsByClassName('currdrop', '')
    for (SyncDropItem in varSyncDrop) {
        varSyncDrop[SyncDropItem].selectedIndex = obj.selectedIndex
    } 
}
function ShowLoadingImage(SourceCode) {
    var varDropDownDiv = getElementsByClassName('dd', '')
    for (DropDownItem in varDropDownDiv) {
        varDropDownDiv[DropDownItem].innerHTML = SourceCode
    } 
}
function LoadingImage(varDisplay, varClassName) {
    varImgLoadObj = getElementsByClassName(varClassName, '')
    for (ImgLoadItem in varImgLoadObj) {
        varImgLoadObj[ImgLoadItem].style.display = varDisplay
    } 
}
function makeRequest(url, basecurr, reqcurr) {
    http_request = false
    if (window.XMLHttpRequest) {
        http_request = new XMLHttpRequest()
        if (http_request.overrideMimeType) {
            http_request.overrideMimeType('text/xml')
        } 
    }
    else if (window.ActiveXObject) {
        try {
            if (IeVersion()['Version'] > 6) {
                http_request = new ActiveXObject("MSXML2.DOMDocument")
            } else {
                http_request = new ActiveXObject("MSXML2.XMLHTTP.3.0")
            } 
        }
        catch (e) {
            onError(e)
            try {
                if (IeVersion()['Version'] > 6) {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP")
                } else {
                    http_request = new ActiveXObject("MSXML2.XMLHTTP.3.0")
                } 
            }
            catch (e)
{ onError(e) } 
        } 
    }
    if (!http_request) {
        onError()
        return false
    }
    if (http_request.readyState != 4) {
        ManageDropDown(true)
    }
    var parameters
    if (CheckCache(reqcurr)) {
        parameters = ''
        url = '/sitegen/ranks_blanks.htm'
    } else {
        parameters = '?curr2=' + basecurr + '&curr=' + reqcurr
    }
    http_request.onreadystatechange = rates
    http_request.open('GET', url + parameters, true)
    http_request.send(null)
}
function CheckCache(currency) {
    try {
        for (i = 0; i <= arrCurrRates.length - 1; i++) {
            if (arrCurrRates[i][0] == currency) {
                return true
            } 
        }
    } catch (e) { alert(e) }
    return false
}
function GetCurrCache(currency) {
    for (i = 0; i <= arrCurrRates.length - 1; i++) {
        if (arrCurrRates[i][0] == currency) {
            return arrCurrRates[i][1]
        } 
    }
    return 0
}
function GetCurrSignCache(currency) {
    for (i = 0; i <= arrCurrRates.length - 1; i++) {
        if (arrCurrRates[i][0] == currency) {
            return arrCurrRates[i][2];
        }
    }
    return 0;
}
function addRateToCache(ExRate,CurrSign) {
    arrCurrRates[arrCurrRates.length] = new Array(2)
    arrCurrRates[arrCurrRates.length - 1][0] = _GlobalSelectedCurrencyCode
    arrCurrRates[arrCurrRates.length - 1][1] = ExRate
    arrCurrRates[arrCurrRates.length - 1][2] = CurrSign;
}
var Currency = new Array('AUD', 'CAD', 'CHF', 'DKK', 'EUR', 'GBP', 'HKD', 'JPY', 'NOK', 'NZD', 'SEK', 'SGD', 'TWD', 'USD', 'ZAR')
function WriteDropDown(Selected) {
    var DropDown = '<select class=currdrop onchange=ChangeCurrency(this) ' + ddStyle + '>'
    var Sel
    for (z in Currency) {
        if (Selected == Currency[z]) {
            Sel = ' selected'
        } else {
            Sel = ""
        }
        DropDown = DropDown + '<option value=' + Currency[z] + Sel + '>' + Currency[z] + '</option>'
    }
    DropDown = DropDown + '</select>'
    ShowLoadingImage(DropDown + '&nbsp;<img class=loadingimg src="/advantage/images/loading.gif" alt="Loading..." style="position: absolute;" ' + imgStyle + '" />', 'dd')
    ManageDropDown(true)
}
function getElementsByClassName(classname, node) {
    if (!node) node = document.getElementsByTagName("body")[0]
    var a = []
    var re = new RegExp('\\b' + classname + '\\b')
    var els = node.getElementsByTagName("*")
    for (var i = 0, j = els.length; i < j; i++)
        if (re.test(els[i].className)) a.push(els[i])
    return a
}
function IeVersion() {
    var browser = navigator.userAgent.toLowerCase()
    var ba = new Array()
    if (browser.indexOf('msie') != -1) {
        var splie, splietoname
        splie = browser.split(';')
        splietoname = splie[1].split(' ')
        return parseFloat(splietoname[2])
    } 
}
function onError(e) { alert(e) }
var http_Rates = ''
function getClinetCurr() {
    http_Rates = false
    if (window.XMLHttpRequest) {
        http_Rates = new XMLHttpRequest()
        if (http_Rates.overrideMimeType) {
            http_Rates.overrideMimeType('text/xml')
        } 
    }
    else if (window.ActiveXObject) {
        try {
            if (IeVersion()['Version'] > 6) {
                http_Rates = new ActiveXObject("MSXML2.DOMDocument")
            } else {
                http_Rates = new ActiveXObject("MSXML2.XMLHTTP.3.0")
            } 
        }
        catch (e) {
            onError(e)
            try {
                if (IeVersion()['Version'] > 6) {
                    http_Rates = new ActiveXObject("Microsoft.XMLHTTP")
                } else {
                    http_Rates = new ActiveXObject("MSXML2.XMLHTTP.3.0")
                } 
            }
            catch (e)
{ onError(e) } 
        } 
    }
    if (!http_Rates) {
        onError()
        return false
    }
    http_Rates.onreadystatechange = CheckCurrency
    http_Rates.open('GET', '/sitegen/currencycheck.asp', true)
    http_Rates.send(null)
}
function CheckCurrency() {
    if (http_Rates.readyState == 4) {
        if (http_Rates.status == 200) {
            _ClinetCurrencyCode = http_Rates.responseText
            var CurInd = 0
            var NewInd = ''
            for (ss in Currency) {
                if (_ClinetCurrencyCode == Currency[ss]) {
                    NewInd = CurInd
                }
                CurInd = CurInd + 1
            }
            var varSyncDrop = getElementsByClassName('currdrop', '')
            for (SyncDropItem in varSyncDrop) {
                varSyncDrop[SyncDropItem].selectedIndex = NewInd
            }
            _GlobalSelectedCurrencyCode = _ClinetCurrencyCode
            if (_GlobalCurrencyCode == "undefined") {
                _GlobalCurrencyCode = _ClinetCurrencyCode
            } else if (_GlobalCurrencyCode == "undefined") {
                _ClinetCurrencyCode = "USD"
            }
            makeRequest('/sitegen/ExchangeRate.asp', _GlobalCurrencyCode, _ClinetCurrencyCode)
        } 
    } 
}

