﻿function ValidationObject() {
    var objValidate = {
        Integer: function ValidateInteger(strValue) {
            var intPattern = /^[0-9]$/;
            return intPattern.test(strValue);
        },
        Email: function(strValue) {
            var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
            return emailPattern.test(strValue);
        },
        NotEmpty: function(strValue) {
            return (strValue !== "" && strValue !== null);
        },
        Phone: function(strValue) {
            var phonePattern = /^(\(?\d\d\d\)?)?( |-|\.)?\d\d\d( |-|\.)?\d{4,4}(( |-|\.)?[ext\.]+ ?\d+)?$/;
            return phonePattern.test(strValue);
        },
        PhoneEx: function(strValue) {
            if (strValue !== "") {
                var phonePattern = /^(\(?\d\d\d\)?)?( |-|\.)?\d\d\d( |-|\.)?\d{4,4}(( |-|\.)?[ext\.]+ ?\d+)?$/;
                return phonePattern.test(strValue);
            } else { return true; }
        },
        SSN:function(strValue) {
            if (strValue !== "") {
                var SSNPattern = /^(?!000)([0-6]\d{2}|7([0-6]\d|7[012])) ([ -])? (?!00)\d\d([ -|])? (?!0000)\d{4}$/;
                return SSNPattern.test(strValue);
            } else { return true; }
        },
        ZipCode: function(strZip) {
            var zipCodePattern = /(^\d{5}$)|(^\d{5}-\d{4}$)/;
            return zipCodePattern.test(strZip);
        },
        Password: function(strValue) {
            var anPattern = /^[a-z][-a-z0-9_ ]{6,20}$/i;
            return anPattern.test(strValue);
        },
        GetElement: function(strId) {
            if (document.getElementById(strId) === null) { return { className: "" }; }
            else { return document.getElementById(strId); }
        }
    };
    return objValidate;
}
var validate = ValidationObject();
var not = null;
String.prototype.trim = function() {
    if (this != undefined) {
        var strString = new String(this);
        if (strString != null) { return strString.replace(/(^\s*)|(\s*$)/g, ""); } else { return strString; }
    } else { return ""; }
}
function IsEmpty(strObject) {
    var objObject = document.getElementById(strObject);
    var bolReturn = true;
    if (objObject != null) { bolReturn = (GetRealValue(objObject).trim().length == 0); }
    return bolReturn;
}
function CheckRequired(strObject, strErrorObject) {
    var objObject = document.getElementById(strObject);
    var objErrorObject = document.getElementById(strErrorObject);
    var bolReturn = false;
    if ((objObject != null) && (objErrorObject != null)) {
        bolReturn = (GetRealValue(objObject).trim().length > 0);
        objErrorObject.className = (bolReturn == true) ? "Label" : "LabelError";
    }
    return bolReturn;
}
function CheckDate(strObject, strErrorObject) {
    var objObject = document.getElementById(strObject);
    var objErrorObject = document.getElementById(strErrorObject);
    var bolReturn = false;
    if ((objObject != null) && (objErrorObject != null)) {
        bolReturn = IsDate(GetRealValue(objObject).trim());
        objErrorObject.className = (bolReturn == true) ? "Label" : "LabelError";
    }
    return bolReturn;
}
function CheckSSN(strObject, strErrorObject) {
    var objObject = document.getElementById(strObject);
    var objErrorObject = document.getElementById(strErrorObject);
    var bolReturn = false;
    if ((objObject != null) && (objErrorObject != null)) {
        bolReturn = IsSSN(GetRealValue(objObject).trim());
        objErrorObject.className = (bolReturn == true) ? "Label" : "LabelError";
    }
    return bolReturn;
}
function CheckEmailAddress(strObject, strErrorObject) {
    var objObject = document.getElementById(strObject);
    var objErrorObject = document.getElementById(strErrorObject);
    var bolReturn = false;
    if ((objObject != null) && (objErrorObject != null)) {
        bolReturn = IsEmailAddress(GetRealValue(objObject).trim());
        objErrorObject.className = (bolReturn == true) ? "Label" : "LabelError";
    }
    return bolReturn;
}
function CheckEmailAddressNotRequired(strObject, strErrorObject) {
    var objObject = document.getElementById(strObject);
    var objErrorObject = document.getElementById(strErrorObject);
    var bolReturn = false;
    if ((objObject != null) && (objErrorObject != null)) {
        if (GetRealValue(objObject).trim().length > 0) {
            bolReturn = IsEmailAddress(GetRealValue(objObject).trim());
            objErrorObject.className = (bolReturn == true) ? "Label" : "LabelError";
        } else {
            objErrorObject.className = "Label";
            bolReturn = true;
        }
    }
    return bolReturn;
}
function CheckMatch(strObject, strObjectToMatch, strErrorObject) {
    var objObject = document.getElementById(strObject);
    var objObjectToMatch = document.getElementById(strObjectToMatch);
    var objErrorObject = document.getElementById(strErrorObject);
    var bolReturn = false;
    if ((objObject != null) && (objObjectToMatch != null) && (objErrorObject != null)) {
        bolReturn = (GetRealValue(objObject).trim() == objObjectToMatch.value.trim());
        objErrorObject.className = (bolReturn == true) ? "Label" : "LabelError";
    }
    return bolReturn;
}

function CheckPhoneNumber(strObject, strErrorObject) {
    var objObject = document.getElementById(strObject);
    var objErrorObject = document.getElementById(strErrorObject);
    var bolReturn = false;
    if ((objObject != null) && (objErrorObject != null)) {
        bolReturn = IsPhoneNumber(GetRealValue(objObject).trim());
        objErrorObject.className = (bolReturn == true) ? "Label" : "LabelError";
    }
    return bolReturn;
}
function CheckPhoneNumberNotRequired(strObject, strErrorObject) {
    var objObject = document.getElementById(strObject);
    var objErrorObject = document.getElementById(strErrorObject);
    var bolReturn = false;
    if ((objObject != null) && (objErrorObject != null)) {
        if (GetRealValue(objObject).trim().length > 0) {
            bolReturn = IsPhoneNumber(GetRealValue(objObject).trim());
            objErrorObject.className = (bolReturn == true) ? "Label" : "LabelError";
        } else {
            objErrorObject.className = "Label";
            bolReturn = true;
        }
    }
    return bolReturn;
}
function CheckWholeNumberNotRequired(strObject, strErrorObject) {
    var objObject = document.getElementById(strObject);
    var objErrorObject = document.getElementById(strErrorObject);
    var bolReturn = false;
    if ((objObject != null) && (objErrorObject != null)) {
        if (GetRealValue(objObject).trim().length > 0) {
            bolReturn = IsWholeNumber(GetRealValue(objObject).trim());
            objErrorObject.className = (bolReturn == true) ? "Label" : "LabelError";
        } else {
            objErrorObject.className = "Label";
            bolReturn = true;
        }
    }
    return bolReturn;
}
function CheckWholeNumberRange(strObject, strErrorObject, intMinValue, intMaxValue) {
    var objObject = document.getElementById(strObject);
    var objErrorObject = document.getElementById(strErrorObject);
    var bolReturn = false;
    if ((objObject != null) && (objErrorObject != null)) {
        bolReturn = IsWholeNumber(GetRealValue(objObject).trim());
        if (bolReturn == true) {
            var intValue = parseInt(GetRealValue(objObject).trim(), 10);
            if (isNaN(intValue) == true) { intValue = 0; }
            bolReturn = ((intValue >= intMinValue) && (intValue <= intMaxValue));
        }
        objErrorObject.className = (bolReturn == true) ? "Label" : "LabelError";
    }

    return bolReturn;
}
function CheckCurrencyRange(strObject, strErrorObject, dblMinValue, dblMaxValue) {
    var objObject = document.getElementById(strObject);
    var objErrorObject = document.getElementById(strErrorObject);
    var bolReturn = false;
    if ((objObject != null) && (objErrorObject != null)) {
        bolReturn = IsCurrency(GetRealValue(objObject).trim());
        if (bolReturn == true) {
            var dblValue = parseFloat(GetRealValue(objObject).trim().replace(/^\$/gi, ''));
            if (isNaN(dblValue) == true) {dblValue = 0.00;}
            bolReturn = ((dblValue >= dblMinValue) && (dblValue <= dblMaxValue));
        }
        objErrorObject.className = (bolReturn == true) ? "Label" : "LabelError";
    }
    return bolReturn;
}
function CheckWholeNumberRangeNotRequired(strObject, strErrorObject, intMinValue, intMaxValue) {
    var objObject = document.getElementById(strObject);
    var objErrorObject = document.getElementById(strErrorObject);
    var bolReturn = false;
    if ((objObject != null) && (objErrorObject != null)) {
        if (GetRealValue(objObject).trim().length > 0) {
            bolReturn = IsWholeNumber(GetRealValue(objObject).trim());
            if (bolReturn == true) {
                var intValue = parseInt(GetRealValue(objObject).trim(), 10);
                if (isNaN(intValue) == true) {intValue = 0;}
                bolReturn = ((intValue >= intMinValue) && (intValue <= intMaxValue));
            }
        } else {
            bolReturn = true;
        }
        objErrorObject.className = (bolReturn == true) ? "Label" : "LabelError";
    }
    return bolReturn;
}
function IsWholeNumber(strValue) {
    var bolReturn = false;
    if (strValue != null) {
        strValue = RemoveCommas(strValue);
        bolReturn = (strValue.toString().trim().match(/^[0-9]+$/) != null);
    }
    return bolReturn;
}
function IsCurrency(strValue) {
    var bolReturn = false;
    if (strValue != null) {
        strValue = RemoveCommas(strValue);
        bolReturn = (strValue.toString().trim().match(/^\$?[0-9]+\.?[0-9]{0,2}$/) != null);
    }
    return bolReturn;
}
function IsZipCode(strValue) {
    var bolReturn = false;
    if (strValue != null) { bolReturn = (strValue.toString().trim().match(/^[0-9]{5}$/) != null);}
    return bolReturn;
}
function IsPhoneNumber(strValue) {
    var bolReturn = false;
    if (strValue != null) { bolReturn = (strValue.toString().trim().match(/^\(?[0-9]{3}\)?[-. ]?[0-9]{3}[-. ]?[0-9]{4}$/) != null); }

    return bolReturn;
}
function IsEmailAddress(strValue) {
    var bolReturn = false;
    if (strValue != null) { bolReturn = (strValue.toString().trim().match(/^[A-Z0-9._%-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,}$/i) != null); }
    return bolReturn;
}
function IsDate(strValue) {
    var bolReturn = false;
    if (strValue != null) {
        if (strValue.toString().trim().match(/^\b[0-9]{1,2}([\/-]{1})[0-9]{1,2}\1{1}([0-9]{2})?[0-9]{2}\b$/) != null) {
            var strParts = strValue.toString().trim().split(/(\/|-)/);
            var intMonth = 0;
            var intDay = 0;
            var intYear = 0;
            if (strParts.length == 3) {
                intMonth = parseInt(strParts[0].trim(), 10);
                intDay = parseInt(strParts[1].trim(), 10);
                intYear = parseInt(strParts[2].trim(), 10);
            } else if (strParts.length == 5) {
                intMonth = parseInt(strParts[0].trim(), 10);
                intDay = parseInt(strParts[2].trim(), 10);
                intYear = parseInt(strParts[4].trim(), 10);
            }
            intMonth -= 1;
            if ((intMonth < 12) && (intDay < 32)) {
                var intDays = new Array();
                intDays[0] = 31;
                intDays[1] = GetFebruaryDays(intYear);
                intDays[2] = 31;
                intDays[3] = 30;
                intDays[4] = 31;
                intDays[5] = 30;
                intDays[6] = 31;
                intDays[7] = 31;
                intDays[8] = 30;
                intDays[9] = 31;
                intDays[10] = 30;
                intDays[11] = 31;
                if (intDay <= intDays[intMonth]) { bolReturn = true;}
            }
        }
    }
    return bolReturn;
}
function GetFebruaryDays(intYear) {
    var intDays = 28;
    if ((((intYear % 4) == 0) && ((intYear % 100) != 0)) || (intYear % 400) == 0) { intDays = 29;}
    return intDays;
}
function IsSSN(strValue) {
    var bolReturn = false;
    if (strValue != null) { bolReturn = (strValue.toString().trim().match(/^(?:(^[0-9]{3}-[0-9]{2}-[0-9]{4}$)|(\b[0-9]{3}[0-9]{2}[0-9]{4}\b))$/) != null);}
    return bolReturn;
}
function RemoveCommas(strValue) {
    var strReturn = strValue;
    if (strReturn != null) { strReturn = strReturn.toString().replace(/,/g, "");}
    return strReturn;
}

if (typeof $ != "undefined") {
    //**** NEW GHOST CONTROL FUNCTIONS
    $.GhostControl = function(strClassName) {
        var _className = (typeof (strClassName) == "string") ? strClassName : "GhostControl";
        _GhostControl = {
            Set: function(strGhostClassName) {
                _className = (typeof (strGhostClassName) == 'string') ? strGhostClassName : _className;
                $("input[type=text], textarea").each(function() {
                    if (this.title) {
                        $(this).focus(function() { if (this.value == this.title) { this.value = ""; $(this).removeClass(_className) } });
                        $(this).blur(function() { if (this.value == "") { this.value = this.title; $(this).addClass(_className) } });
                        if (this.value == "") { this.value = this.title; $(this).addClass(_className); }
                    }
                });
                $.GhostControl.className = _className;
                return _GhostControl;
            },
            Remove: function() {
                $("input[type=text], textarea").each(function() {
                    if (this.title) {
                        $(this).focus(function() { }).blur(function() { });
                        if (this.value == this.title) {
                            this.value = "";
                            $(this).removeClass(_className);
                        }
                    }
                })
                return _GhostControl;
            },
            SetCSSClass: function(strClass) {
                _className = (typeof (strClass) == "string") ? strClass : _className;
                $.GhostControl.className = _className;
                return _GhostControl;
            }
        };
        return _GhostControl;
    }

    $(document).keydown(function(e) {
        e = (e) ? e : (window.event) ? event : null;
        var intCode = (e.charCode) ? e.charCode : ((e.keyCode) ? e.keyCode : ((e.which) ? e.which : 0));
        if ((intCode == 13) && (m_Target != "") && (m_FocusedMultiline == false)) {
            var objObject = document.getElementById(m_Target);
            if (objObject != null) {
                if (objObject.click) { objObject.click(); } else if (objObject.onclick) { objObject.onclick(); }
                try { e.cancelBubble = true; } catch (ex) { }
                try { e.returnValue = false; } catch (ex) { }
                return false;
            }
        }
    });
}
