﻿function onlyNumeric(e, extra, allowNegative) {
    var key;
    var keychar;

    if (window.event)
        key = window.event.keyCode;
    else if (e)
        key = e.which;
    else
        return true;

    // control keys
    if ((key == null) || (key == 0) || (key == 8) || (key == 9) || (key == 13) || (key == 27))
        return true;

    keychar = String.fromCharCode(key);

    if (extra != null && typeof (extra) != "undefined")
        if (keychar == extra)
        return true;

    // numbers
    if ((("0123456789").indexOf(keychar) > -1))
        return true;
    else if (allowNegative == true && keychar == "-")
        return true;
    else
        return false;
}

function onlyAlphaNumeric(e) {
    var key;
    var keychar;

    if (window.event)
        key = window.event.keyCode;
    else if (e)
        key = e.which;
    else
        return true;
    keychar = String.fromCharCode(key);

    // control keys
    if ((key == null) || (key == 0) || (key == 8) || (key == 9) || (key == 13) || (key == 27)) return true;

    // allow by keychar
    else if ((("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ").indexOf(keychar) > -1))
        return true;
    else
        return false;
}



function ctrlKeyUsed() {
    var key;
    if (window.event)
        key = window.event.keyCode;
    else if (e)
        key = e.which;
    else
        return true;

    // control keys
    if (key == null || key == 0 || key == 8 || key == 9 || key == 13 || key == 16 || key == 17 || key == 27 || key == 35 || key == 36 || key == 37 || key == 38 || key == 39 || key == 40 || key == 46 || key == 93)
        return true;
    else
        return false;
}

function enforceMaxLength(textarea, maxLength) {
    if (ctrlKeyUsed())
        return true;

    if (textarea.value.length >= maxLength) {
        textarea.value = textarea.value.substr(0, maxLength);
        return false;
    }
    return true;
}


function makeVisible(elementid) {
    elm = document.getElementById(elementid);
    if (elm)
        elm.style.display = '';
}

function makeHidden(elementid) {
    elm = document.getElementById(elementid);
    if (elm)
        elm.style.display = 'none';
}

function expandCollapse(expandElem, collapseElem) {
    makeVisible(expandElem);
    makeHidden(collapseElem);
}

function radioHasSelection(elemName, formIndex) {
    if (formIndex == null)
        formIndex = 0;
    var elem = eval('document.forms[' + formIndex.toString() + '].' + elemName);
    if (elem) {
        for (var i = 0; i < elem.length; i++) {
            if (elem[i].checked)
                return true;
        }
    }
    return false;
}

function getRadioSelection(elemName, formIndex) {
    if (formIndex == null)
        formIndex = 0;
    var elem = eval('document.forms[' + formIndex.toString() + '].' + elemName);
    if (elem) {
        for (var i = 0; i < elem.length; i++) {
            if (elem[i].checked)
                return elem[i].value;
        }
    }
    return null;
}

function clearRadioSelection(elemName, formIndex) {
    if (formIndex == null)
        formIndex = 0;
    var elem = eval('document.forms[' + formIndex.toString() + '].' + elemName);
    if (elem) {
        for (var i = 0; i < elem.length; i++) {
            elem[i].checked = false;
        }
    }
}

function setSelect(select, value) {
    for (var i = 0; i < select.options.length; i++) {
        if (select.options[i].value == value) {
            select.options[i].selected = true;
            return true;
        }
    }
    return false;
}

function setAllSelected(elem) {
    for (var i = 0; i < elem.options.length; i++) {
        elem.options[i].selected = true;
    }
}

function setMultiSelect(select, values) {
    var arrValues = values.split(',');
    for (var i = 0; i < arrValues.length; i++) {
        setSelect(select, arrValues[i]);
    }
}

function getSelectValue(elem) {
    if (elem && elem.options.length > 0 && elem.selectedIndex > -1) {
        return elem.options[elem.selectedIndex].value;
    }
    return '';
}

function getMultiSelectValue(elem) {
    if (elem == null)
        return '';

    var strVal = '';
    for (var i = 0; i < elem.options.length; i++) {
        if (elem.options[i].selected)
            strVal += elem.options[i].value + ',';
    }
    return strVal.substr(0, strVal.length - 1);
}



function validateMinMax(elem, min, max) {
    if (elem.value == "")
        return true;

    var fltValue = parseFloat(elem.value);
    if (isNaN(fltValue))
        return throwValidationError(elem, "Error: The value you entered is not a number.");
    else {
        if (min == 0 && fltValue < 0)
            return throwValidationError(elem, "Error: This field does not accept negative values.");
        else if (fltValue < min)
            return throwValidationError(elem, "Error: You have entered a value below the minimum value of " + min.toString() + " .");
        else if (fltValue > max)
            return throwValidationError(elem, "Error: You have entered a value above the maximum value of " + max.toString() + " .");
    }
    elem.value = fltValue;
    return true;
}

function throwValidationError(elem, message) {
    elem.createTextRange().select();
    alert(message);
    return false;
}

