﻿// Validating Textbox

function validateDateTextBox(textbox) {
    var text = textbox.value;
    if (checkDateNL(text)) {
        var parsedDate=parseDateNL(text);
        textbox.value=convertDateToStringNL(parsedDate);
        return true;
        
    }
    return false;
}
function validateNumericTextBox(textbox) {
    var text = textbox.value;
    if (checkNumericNL(text)) {
        var parsedNumeric=parseNumericNL(text);
        textbox.value=convertNumericToStringNL(parsedNumeric);
        return true;
    }
    return false;
}

//--- Regex testing

function testRegExDate(text) {
    var regexLong=/\b\d{1,2}[\/-]\d{1,2}[\/-]\d{4}\b/
    var regexShort=/\b\d{1,2}[\/-]\d{1,2}[\/-]\d{2}\b/
    var valid=((regexLong.test(text)) || (regexShort.test(text)));
    return valid;
}
function testRegExNumericNL(text) {
    //var numericformat="/(^-*\d+$)|(^-*\d+\.\d+$)|(^\+*\d+$)|(^\+*\d+\.\d+$)/"
    var numericformat=/^(((\d{1,3})(\.\d{3})*)|(\d+))(\,\d+)?$/
    return numericformat.test(text);
}
function testRegExInteger(text) {
    var integerformat=/(^-*\d+$)|(^\+*\d+$)/
    return integerformat.test(text);
}
function testRegExNumericUS(text) {
    //var numericformat=/(^-*\d+$)|(^-*\d+\.\d+$)|(^\+*\d+$)|(^\+*\d+\.\d+$)/
    var numericformat=/^(((\d{1,3})(\,\d{3})*)|(\d+))(\.\d+)?$/
    return numericformat.test(text);
}

// Checking text

function checkDateNL(text) {
    if (testRegExDate(text) && isDateStringNL(text)) {
        return true;
    }
    return false;
}
function checkNumericNL(text) {
    if (testRegExNumericNL(text) && isNumericStringNL(text)) {
        return true;
    }
    return false;
}
function checkNumericUS(text) {
    if (testRegExNumericUS(text) && isNumericStringUS(text)) {
        return true;
    }
    return false;
}
function checkInteger(text) {
    if (testRegExInteger(text) && isIntegerString(text)) {
        return true;
    }
    return false;
}

//--- Boolean validation

function isDateStringNL(text) {
    var delimChar = (text.indexOf("/") != -1) ? "/" : "-";
    var delim1 = text.indexOf(delimChar);
    var delim2 = text.lastIndexOf(delimChar);
    var day=parseInt(text.substring(0,delim1),10);
    var month=parseInt(text.substring(delim1+1,delim2),10);
    var year=parseInt(text.substring(delim2+1),10);
    
    return isValidDate(day,month,year);
}
function isValidDate(day,month,year) {
    year = adjustCentury(year);
    var testDate = new Date(year, month-1, day);
    if (testDate.getDate() == day) {
        if (testDate.getMonth()+1 == month) {
            if (testDate.getFullYear() == year) {
                return true;
            }
        }
    }
}
function isNumericStringNL(text) {
    var numeric = parseNumericNL(text);
    return isValidNumeric(numeric);
}
function isIntegerString(text) {
    var posint = parseInteger(text);
    return isValidInteger(posint);
}
function isNumericStringUS(text) {
    var numeric = parseNumericUS(text);
    return isValidNumeric(numeric);
}
function isValidNumeric(numeric) {
    return !isNaN(numeric);
}
function isValidInteger(posint) {
    return !isNaN(posint);
}
function isEmpty(object) {
    if (typeof object==null)
        return true;
        
    switch (typeof object) {
    case "undefined":
        return true;
        break;
    case "number":
        return isNaN(object);
        break;	
    case "date":
        return isNaN(object);
        break;	
    case "string":
        return (object=="");
        break;	
    case "boolean":
        return false;
        break;	
    case "object":
        return (object==null) || (isNaN(object));
        break;	
    default:
        return true;
        break;		
    }	
return false;
}

function isFutureDate(dateToCheck) {
    var today=convertToDateOnly(new Date());
    var tocheck=convertToDateOnly(dateToCheck);
    if ( isEmpty(tocheck) ) {
        return false;
    } else if (tocheck<today) {
        return false;
    }
    return true;
}

function convertToDateOnly(dateToConvert) {
    var convertedDate=new Date(dateToConvert.getYear(),dateToConvert.getMonth(),dateToConvert.getDate());
    return convertedDate;
}

function isValidAntiDate(dateToCheck, offsetDays) {
    var antiday=convertToDateOnly(new Date());
    antiday.setDate(antiday.getDate()-offsetDays);
    var tocheck=convertToDateOnly(dateToCheck);
    if ( isEmpty(tocheck) ) {
        return false;
    } else if (tocheck<antiday) {
        return false;
    }
    return true;
}
