﻿
function isInteger(s) {
    var i;

    if (isEmpty(s))
        if (isInteger.arguments.length == 1) return 0;
    else return (IsInteger.arguments[1] == true);

    for (i = 0; i < s.length; i++) {
        var c = s.charAt(i);

        if (((c < "0") || (c > "9"))) {
            return false;
        }
    }

    return true;
}

function isFloat(s) {
    var i;
    var seenDecimalPoint = false;

    if (isEmpty(s))
        if (isFloat.arguments.length == 1) return defaultEmptyOK;
    else return (isFloat.arguments[1] == true);

    if (s == decimalPointDelimiter) return false;

    // Search through string's characters one by one
    // until we find a non-numeric character.
    // When we do, return false; if we don't, return true.

    for (i = 0; i < s.length; i++) {
        // Check that current character is number.
        var c = s.charAt(i);

        if ((c == decimalPointDelimiter) && !seenDecimalPoint) seenDecimalPoint = true;
        else if (!isDigit(c)) return false;
    }

    // All characters are numbers.
    return true;
}

function isEmpty(s) {
    return ((s == null) || (s.length == 0))
}

function isDigit(c) {
    return ((c >= "0") && (c <= "9"))
}

function CheckPattern(str, ptn) {
    var re = new RegExp(ptn, "g");    
    return !(re.test(str));
}

function returnObjById(id) {
    if (document.getElementById) {
        var returnVar = document.getElementById(id);
    }
    else if (document.all) {
        var returnVar = document.all[id];
    }
    else if (document.layers) {
        var returnVar = document.layers[id];
    }
    return returnVar;
}

function getDateFromString(dateString) {

    if (isValidDate(dateString) === false) {
        return null;
    }
    var dateBits = dateString.split('/');
    if (!isNaN(parseInt(dateBits[0])) && !isNaN(parseInt(dateBits[1])) && !isNaN(parseInt(dateBits[2]))) {
        return new Date(dateBits[2], dateBits[1] - 1, dateBits[0]);
    }

    return null;
}

function isValidDate(dateStr) {

    // Checks for the following valid date formats:
    // DD/MM/YY   DD/MM/YYYY   DD-MM-YY   DD-MM-YYYY

    var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/; // requires 4 digit year

    var matchArray = dateStr.match(datePat); // is the format ok?
    if (matchArray == null) {
        return false;
    }

    day = matchArray[1]; // parse date into variables
    month = matchArray[3];
    year = matchArray[4];

    if (day < 1 || day > 31) {
        return false;
    }
    if (month < 1 || month > 12) { // check month range
        return false;
    }
    if ((month == 4 || month == 6 || month == 9 || month == 11) && day == 31) {
        return false;
    }
    if (month == 2) { // check for february 29th
        var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
        if (day > 29 || (day == 29 && !isleap)) {
            return false;
        }
    }
    return true;
}

function ShowIE6Droplists(show, sender) {

    //(sender)

    // if running IE6 
    if ((Sys.Browser.agent === Sys.Browser.InternetExplorer) && (Sys.Browser.version < 7)) {
        var commonScripts = new AjaxControlToolkit._CommonToolkitScripts();
        var visibilityStyle = 'inherit';
        var visiblePopups = new Array();

        var divs = document.getElementsByTagName('div');
        if (divs && divs.length > 0) {
            for (var i = 0; i < divs.length; i++) {
                if (divs[i].className == 'modalPopup' || divs[i].id.indexOf(_nestedPopupParentId) >= 0) {
                    if (commonScripts.getCurrentStyle(divs[i], 'display') != 'none') {
                        // add this visible popup to the array
                        visiblePopups[visiblePopups.length] = divs[i];
                        //alert('show = ' + show + '; visible popup = ' + divs[i].id);
                    }
                }
            }
        }

        // if it's an appropriate time to hide droplists
        if (!show || _nestedPopupParentId) {
            if (visiblePopups && visiblePopups.length > 0) {
                // at least one modal popup is on display
                visibilityStyle = 'hidden';
            }
        }

        // show/hide all the droplists on the page
        var selects = document.getElementsByTagName('SELECT');
        for (var k = 0; k < selects.length; k++) {
            selects[k].style.visibility = visibilityStyle;
        }

        // show all the droplists on the _nestedPopupParent if there is one
        if (_nestedPopupParentId && visiblePopups && visiblePopups.length > 0) {
            for (var i = 0; i < visiblePopups.length; i++) {
                if (visiblePopups[i].id.indexOf(_nestedPopupParentId) >= 0) {
                    var selects = visiblePopups[i].getElementsByTagName('SELECT');
                    for (var k = 0; k < selects.length; k++) {
                        selects[k].style.visibility = 'inherit';
                    }
                }
            }
        }
    }
}

var _nestedPopupParentId;
function SetNestedPopupParentId(value) {
    _nestedPopupParentId = value;
}
