﻿//helper funtions
var _xmlLocalize = null;
var _urlAjax = null; 

function getLocalizedString(xmldoc, culture, key) {
    if (xmldoc != null) {
        //alert(xmldoc.documentElement.selectSingleNode("/cultures/culture[@iso_code='en-US']/string[@key='bib_cardnumber']/@value"));
        return $(xmldoc).find('cultures culture[iso_code="' + culture + '"] string[key="' + key + '"]').attr('value');
    }
    else { return key; }
}

function IsNumeric(input) {
    return (input - 0) == input && input.length > 0;
    }

    function trim(stringToTrim) {
        return stringToTrim.replace(/^\s+|\s+$/g, "");
    }
    
    function ltrim(stringToTrim) {
        return stringToTrim.replace(/^\s+/, "");
    }
    
    function rtrim(stringToTrim) {
        return stringToTrim.replace(/\s+$/, "");
    }


    function parseDotNetDate(myDate) {
        tryLog(myDate);
        var m = myDate.match(/^\/Date\((\d+)([-+]\d\d)(\d\d)\)\/$/);
        var dateStart = new Date(1 * m[1] + 3600000 * m[2] + 60000 * m[3]);
        var returnDate = new Date();
        var month = dateStart.getMonth() + 1;
        var date = dateStart.getDate();

        month = Math.min(Math.max(1, month), 11);
        
        returnDate.setFullYear(dateStart.getFullYear(), month, date);

        return returnDate;
    }
    
    function roundtoNth(number) {
        var returnNumber = number;
        var strNumberString = number.toString();

        if (strNumberString.length >= 6 ) {
            returnNumber = Math.round(number /100000) * 100000;
        }
        else if (strNumberString.length == 5 ) {
            returnNumber = Math.round(number / 10000) * 10000;
        }
        else if (strNumberString.length == 4) {
            returnNumber = Math.round(number / 1000) * 1000;
        }
        else if (strNumberString.length == 3) {
            returnNumber = Math.round(number / 100) * 100;
        }
        else if (strNumberString.length == 2) {
            returnNumber = Math.round(number / 10) * 10;
        }

        return returnNumber;
    }

    function formatParticipantLabel(firstName, lastName, bibNumber) {
        var strRetunLabel = 'Bib: ' + bibNumber;
        if ((firstName.length > 0) && (lastName.length > 0)) { strRetunLabel = lastName + ', ' + firstName + ' [' + bibNumber + ']'; }
        return strRetunLabel;
    }


    function formatNumber(numberString) {
        var returnString = '';
        
        numberString = trim(numberString + '').replace(',', '');
        aryNumbers = numberString.split('').reverse();

        for (var i = 0; i <= (aryNumbers.length - 1); i++) {
            returnString += aryNumbers[i];
            if ((((i + 1) % 3) == 0) && (i != (aryNumbers.length - 1))) { returnString += ','; }
        }

        return returnString.split("").reverse().join("");
    }

    Array.prototype.unique = function() {
        var r = new Array();
        o: for (var i = 0, n = this.length; i < n; i++) {
            for (var x = 0, y = r.length; x < y; x++) {
                if (r[x] == this[i]) {
                    continue o;
                }
            }
            r[r.length] = this[i];
        }
        return r;
    }

    function tryLog(obj, doAlert) {
        try { console.log(obj); }
        catch (err) {if (doAlert) { (obj); }  }
    }

    function AddLeadingZero(Number) {
        if (Number < 10) {
            return '0' + Number;
        }
        else {
            return '' + Number;
        }
    }

    function CleanString(str) {
        regEx = /\$|,|@|#|~|`|\%|\*|\^|\&|\(|\)|\+|\=|\[|\-|\_|\]|\[|\}|\{|\;|\:|\'|\"|\<|\>|\?|\||\\|\!|\$|\./g;

        return str.replace(regEx, "");
    }
    
    function getUrlVars() {
        var vars = [], hash;
        var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
        for (var i = 0; i < hashes.length; i++) {
            hash = hashes[i].split('=');
            vars.push(hash[0]);
            vars[hash[0]] = hash[1];
        }
        return vars;
    }


