﻿function ScrollToSelectedNode(selectedNode) 
{   
    if (selectedNode != null) 
    {  
        document.getElementById(selectedNode).scrollIntoView(); 
    }
}

function ContainerRequestStart(sender, args) {
    // Move the ajax loading panel to right location
    var scrollY = 0;
    
    switch (navigator.appName) {
        case 'Microsoft Internet Explorer':
            var myregex = /MSIE 7\.0/i;
            var myArray = navigator.appVersion.match(myregex);

            if (myArray.length > 0) 
                scrollY = document.documentElement.scrollTop;
            else 
                scrollY = document.body.scrollTop;
            break;
        default:
            scrollY = window.pageYOffset;
    }

    var ajaxLoader = document.getElementById("AjaxLoader");

    ajaxLoader.style.top = scrollY + "px";
    ajaxLoader.style.left = ((screen.width - 500) / 2) + "px"; 

    // Set custom text loading message
//    var target = args.EventTarget.toString();
//    var targetArgs = args.EventArgument.toString();

//    var loading = document.getElementById('ctl00_SecureClientPlaceHolder_BgdNewRequestContainer1_lblLoading');
//    var loadingImage = document.getElementById('ctl00_SecureClientPlaceHolder_BgdNewRequestContainer1_imgLogo');

//    if (target.match("ddlCountry")) {
//        if (loading != null) {
//            loading.innerHTML = "Updating Required Fields...";
//            loadingImage.style.display = 'Inline';
//        }
//    }
//    else {
//        if (loading != null) {
//            loading.innerHTML = "Processing Request...";
//        }
//    }
}

function ContainerResponseEnd(sender, args) {
//    var target = args.EventTarget;

//    //Reset the scroll position for the mainBox
//    if (target.match("cmdContinue") || target.match("cmdAdd")) {
//        setTimeout("resetScrollPositionForMainBox()", 100);

//    }
}

function extractNumber(obj, decimalPlaces, allowNegative) {
    var temp = obj.value;

    // avoid changing things if already formatted correctly
    var reg0Str = '[0-9]*';
    if (decimalPlaces > 0) {
        reg0Str += '\\.?[0-9]{0,' + decimalPlaces + '}';
    } else if (decimalPlaces < 0) {
        reg0Str += '\\.?[0-9]*';
    }
    reg0Str = allowNegative ? '^-?' + reg0Str : '^' + reg0Str;
    reg0Str = reg0Str + '$';
    var reg0 = new RegExp(reg0Str);
    if (reg0.test(temp)) return true;

    // first replace all non numbers
    var reg1Str = '[^0-9' + (decimalPlaces != 0 ? '.' : '') + (allowNegative ? '-' : '') + ']';
    var reg1 = new RegExp(reg1Str, 'g');
    temp = temp.replace(reg1, '');

    if (allowNegative) {
        // replace extra negative
        var hasNegative = temp.length > 0 && temp.charAt(0) == '-';
        var reg2 = /-/g;
        temp = temp.replace(reg2, '');
        if (hasNegative) temp = '-' + temp;
    }

    if (decimalPlaces != 0) {
        var reg3 = /\./g;
        var reg3Array = reg3.exec(temp);
        if (reg3Array != null) {
            // keep only first occurrence of .
            //  and the number of places specified by decimalPlaces or the entire string if decimalPlaces < 0
            var reg3Right = temp.substring(reg3Array.index + reg3Array[0].length);
            reg3Right = reg3Right.replace(reg3, '');
            reg3Right = decimalPlaces > 0 ? reg3Right.substring(0, decimalPlaces) : reg3Right;
            temp = temp.substring(0, reg3Array.index) + '.' + reg3Right;
        }
    }

    obj.value = temp;
}

function blockNonNumbers(obj, e, allowDecimal, allowNegative) {
    var key;
    var isCtrl = false;
    var keychar;
    var reg;

    if (window.event) {
        key = e.keyCode;
        isCtrl = window.event.ctrlKey
    }
    else if (e.which) {
        key = e.which;
        isCtrl = e.ctrlKey;
    }

    if (isNaN(key)) return true;

    keychar = String.fromCharCode(key);

    // check for backspace or delete, or if Ctrl was pressed
    if (key == 8 || isCtrl) {
        return true;
    }

    reg = /\d/;
    var isFirstN = allowNegative ? keychar == '-' && obj.value.indexOf('-') == -1 : false;
    var isFirstD = allowDecimal ? keychar == '.' && obj.value.indexOf('.') == -1 : false;

    return isFirstN || isFirstD || reg.test(keychar);
}