﻿function keyIsNum(e) {
    var key = getKeyCode(e);
    if (key < 48 || key > 57) {
        if (navigator.userAgent.toLowerCase().indexOf("gecko") > 0) {
            return true
        }
        return false;
    }
    return true;
}

function keyIsNum2(e) {
    var key = getKeyCode(e);
    if (key < 48 || key > 57) {
        return false;
    }
    return true;
}

function isNumber(value) {
    return (!isNaN(value) && value != '' && value.indexOf(".") == -1);
}

function Trim(str) {
    var startIndex, endIndex;
    for (startIndex = 0; startIndex < str.length; startIndex++)
        if (str.charAt(startIndex) != ' ') break;
    for (endIndex = str.length - 1; endIndex >= startIndex; endIndex--)
        if (str.charAt(endIndex) != ' ') break;
    return ((startIndex > endIndex) ? "" : str.substring(startIndex, endIndex + 1));
}

function isDate(date) {

    var arrDate = date.split('/');

    if (arrDate.length != 3) {
        arrDate = date.split('.');
        if (arrDate.length != 3) {
            arrDate = date.split('-');
            if (arrDate.length != 3) {
                return false;
            } 
        }
    }
    if (!isNumber(arrDate[0]) || !isNumber(arrDate[1]) || !isNumber(arrDate[2])) return false;
    if (1 * arrDate[1] > 12 || 1 * arrDate[1] < 1) return false;
    var m = arrDate[1];
    if ((m == 4) || (m == 6) || (m == 9) || (m == 11))
    { if (1 * arrDate[0] > 30 || 1 * arrDate[0] < 1) return false; }
    else if (m == 2)
    { if (1 * arrDate[0] > 29 || 1 * arrDate[0] < 1) return false; }
    else
        if (1 * arrDate[0] > 31 || 1 * arrDate[0] < 1) return false;
    if (1 * arrDate[2] < 1900 || 1 * arrDate[2] > 9999) return false;
    return true;
}

function isDateTime(dateTime) {
    var arrDateTime = dateTime.split(' ');
    // time isn't mandatory
    if (arrDateTime[1] != null && arrDateTime[1] != "") { if (!isTime(arrDateTime[1])) return false; }
    if (!isDate(arrDateTime[0])) return false;
    return true;
}

function isTime(time) {
    var arrTime = time.split(':');
    if (arrTime.length != 3) return false;
    if (!isNumber(arrTime[0]) || !isNumber(arrTime[1]) || !isNumber(arrTime[2])) return false;
    if (1 * arrTime[0] > 24 || 1 * arrTime[0] < 0) return false;
    if (1 * arrTime[1] > 59 || 1 * arrTime[1] < 0) return false;
    if (1 * arrTime[2] > 59 || 1 * arrTime[2] < 0) return false;
    return true;
}

function phoneValidation(e) {
    var key = getKeyCode(e);

    if (!keyIsNum2(e) && (key != 45) && (key != 43) && (key != 46) && (key != 8)) /* 45(-) 43(+) 8(backspace) 46(delete)*/
    {
        return false;
    }
    return true;
}

function userNameValidChars(e) {
    var key = getKeyCode(e);
    if (!(key >= 65 && key <= 90) && !(key >= 97 && key <= 122) && !(key >= 48 && key <= 57) && !(key == 95) && !(key == 45) && !(key == 46) && !(key == 33) && !(key == 127)) {
        if (navigator.userAgent.toLowerCase().indexOf("gecko") > 0) {
            return true
        }
        return false;
    }
    return true;
}

function emailValidChars(e) {
    var key = getKeyCode(e);
    if (key == 64) { return true; }
    else { return userNameValidChars(e); }
}


//general for input
function validChars(e) {
    var key = getKeyCode(e);
    if ((key == 33 || key == 47 || key == 60 || key == 62 || key == 63 || key == 92 || key == 94 || key == 123 || key == 125) || (key >= 35 && key <= 39)) {
        if (navigator.userAgent.toLowerCase().indexOf("gecko") > 0) {
            return true
        }
        return false;
    }
    return true;
}

// Checking if the the given Payment Detail is valid
function IsValidPaymentDetails() {
    var key = event.keyCode;
    if ((key == 60) || (key == 38) || (key == 34)) // Invalid chars for XML: < & "
    {
        if (navigator.userAgent.toLowerCase().indexOf("gecko") > 0)
            return true

        return false;
    }
    return true;
}

function getKeyCode(e) {
    var code;
    if (!e) var e = window.event;
    if (e.keyCode) code = e.keyCode;
    else if (e.which) code = e.which;
    return code;
}
