{"size": 15875, "ext": "js", "max_stars_repo_path": "asset/font_asset/js/jsval.js", "max_stars_repo_name": "MHRONY96/ecomarch_project", "max_stars_repo_stars_event_min_datetime": null, "max_stars_repo_stars_event_max_datetime": null, "max_issues_repo_path": "asset/font_asset/js/jsval.js", "max_issues_repo_name": "MHRONY96/ecomarch_project", "max_issues_repo_issues_event_min_datetime": null, "max_issues_repo_issues_event_max_datetime": null, "max_forks_repo_path": "asset/font_asset/js/jsval.js", "max_forks_repo_name": "MHRONY96/ecomarch_project", "max_forks_repo_forks_event_min_datetime": null, "max_forks_repo_forks_event_max_datetime": null}
{"max_stars_count": null, "max_issues_count": null, "max_forks_count": null, "avg_line_length": 32.6646090535, "max_line_length": 293, "alphanum_fraction": 0.5023622047}

function validateCompleteForm(objForm, strErrorClass) {
    return _validateInternal(objForm, strErrorClass, 0);
}
;

function validateStandard(objForm, strErrorClass) {
    return _validateInternal(objForm, strErrorClass, 1);
}
;
function _validateInternal(form, strErrorClass, nErrorThrowType) {
    var strErrorMessage = "";
    var objFirstError = null;
    if (nErrorThrowType == 0) {
        strErrorMessage = (form.err) ? form.err : _getLanguageText("err_form");
    }
    ;
    var fields = _GenerateFormFields(form);
    for (var i = 0; i < fields.length; ++i) {
        var field = fields[i];
        if (!field.IsValid(fields)) {
            field.SetClass(strErrorClass);
            if (nErrorThrowType == 1) {
                _throwError(field);
                return false;
            } else {
                if (objFirstError == null) {
                    objFirstError = field;
                }
                strErrorMessage = _handleError(field, strErrorMessage);
                bError = true;
            }
        } else {
            field.ResetClass();
        }
    }
    ;
    if (objFirstError != null) {
        alert(strErrorMessage);
        objFirstError.element.focus();
        return false;
    }
    ;
    return true;
}
;
function _getLanguageText(id) {
    objTextsInternal = new _jsVal_Language();
    objTexts = null;
    try {
        objTexts = new jsVal_Language();
    } catch (ignored) {
    }
    ;
    switch (id) {
        case "err_form":
            strResult = (!objTexts || !objTexts.err_form) ? objTextsInternal.err_form : objTexts.err_form;
            break;
        case "err_enter":
            strResult = (!objTexts || !objTexts.err_enter) ? objTextsInternal.err_enter : objTexts.err_enter;
            break;
        case "err_select":
            strResult = (!objTexts || !objTexts.err_select) ? objTextsInternal.err_select : objTexts.err_select;
            break;
    }
    ;
    return strResult;
}
;
function _GenerateFormFields(form) {
    var arr = new Array();
    for (var i = 0; i < form.length; ++i) {
        var element = form.elements[i];
        var index = _getElementIndex(arr, element);
        if (index == -1) {
            arr[arr.length] = new Field(element, form);
        } else {
            arr[index].Merge(element)
        }
        ;
    }
    ;
    return arr;
}
;
function _getElementIndex(arr, element) {
    if (element.name) {
        var elementName = element.name.toLowerCase();
        for (var i = 0; i < arr.length; ++i) {
            if (arr[i].element.name) {
                if (arr[i].element.name.toLowerCase() == elementName) {
                    return i;
                }
            }
            ;
        }
        ;
    }
    return -1;
}
;
function _jsVal_Language() {
    this.err_form = "Please enter/select values for the following fields:\n\n";
    this.err_select = "Please select a valid \"%FIELDNAME%\"";
    this.err_enter = "Please enter a valid \"%FIELDNAME%\"";
}
;
function Field(element, form) {
    this.type = element.type;
    this.element = element;
    this.exclude = element.exclude || element.getAttribute('exclude');
    this.err = element.err || element.getAttribute('err');
    this.required = _parseBoolean(element.required || element.getAttribute('required'));
    this.realname = element.realname || element.getAttribute('realname');
    this.elements = new Array();
    switch (this.type) {
        case "textarea":
        case "password":
        case "text":
        case "file":
            this.value = element.value;
            this.minLength = element.minlength || element.getAttribute('minlength');
            this.maxLength = element.maxlength || element.getAttribute('maxlength');
            this.regexp = this._getRegEx(element);
            this.minValue = element.minvalue || element.getAttribute('minvalue');
            this.maxValue = element.maxvalue || element.getAttribute('maxvalue');
            this.equals = element.equals || element.getAttribute('equals');
            this.callback = element.callback || element.getAttribute('callback');
            break;
        case "select-one":
        case "select-multiple":
            this.values = new Array();
            for (var i = 0; i < element.options.length; ++i) {
                if (element.options[i].selected && (!this.exclude || element.options[i].value != this.exclude)) {
                    this.values[this.values.length] = element.options[i].value;
                }
            }
            this.min = element.min || element.getAttribute('min');
            this.max = element.max || element.getAttribute('max');
            this.equals = element.equals || element.getAttribute('equals');
            break;
        case "checkbox":
            this.min = element.min || element.getAttribute('min');
            this.max = element.max || element.getAttribute('max');
        case "radio":
            this.required = _parseBoolean(this.required || element.getAttribute('required'));
            this.values = new Array();
            if (element.checked) {
                this.values[0] = element.value;
            }
            this.elements[0] = element;
            break;
    }
    ;
}
;
Field.prototype.Merge = function (element) {
    var required = _parseBoolean(element.getAttribute('required'));
    if (required) {
        this.required = true;
    }
    ;
    if (!this.err) {
        this.err = element.getAttribute('err');
    }
    ;
    if (!this.equals) {
        this.equals = element.getAttribute('equals');
    }
    ;
    if (!this.callback) {
        this.callback = element.getAttribute('callback');
    }
    ;
    if (!this.realname) {
        this.realname = element.getAttribute('realname');
    }
    ;
    if (!this.max) {
        this.max = element.getAttribute('max');
    }
    ;
    if (!this.min) {
        this.min = element.getAttribute('min');
    }
    ;
    if (!this.regexp) {
        this.regexp = this._getRegEx(element);
    }
    ;
    if (element.checked) {
        this.values[this.values.length] = element.value;
    }
    ;
    this.elements[this.elements.length] = element;
};
Field.prototype.IsValid = function (arrFields) {
    switch (this.type) {
        case "textarea":
        case "password":
        case "text":
        case "file":
            return this._ValidateText(arrFields);
        case "select-one":
        case "select-multiple":
        case "radio":
        case "checkbox":
            return this._ValidateGroup(arrFields);
        default:
            return true;
    }
    ;
};
Field.prototype.SetClass = function (newClassName) {
    if ((newClassName) && (newClassName != "")) {
        if ((this.elements) && (this.elements.length > 0)) {
            for (var i = 0; i < this.elements.length; ++i) {
                if (this.elements[i].className != newClassName) {
                    this.elements[i].oldClassName = this.elements[i].className;
                    this.elements[i].className = newClassName;
                }
            }
        } else {
            if (this.element.className != newClassName) {
                this.element.oldClassName = this.element.className;
                this.element.className = newClassName;
            }
        }
        ;
    }
};
Field.prototype.ResetClass = function () {
    if ((this.type != "button") && (this.type != "submit") && (this.type != "reset")) {
        if ((this.elements) && (this.elements.length > 0)) {
            for (var i = 0; i < this.elements.length; ++i) {
                if (this.elements[i].oldClassName) {
                    this.elements[i].className = this.elements[i].oldClassName;
                } else {
                    this.element.className = "";
                }
            }
        } else {
            if (this.elements.oldClassName) {
                this.element.className = this.element.oldClassName;
            } else {
                this.element.className = "";
            }
        }
        ;
    }
    ;
};
Field.prototype._getRegEx = function (element) {
    regex = element.regexp || element.getAttribute('regexp')
    if (regex == null)
        return null;
    retype = typeof (regex);

    if (retype.toUpperCase() == "FUNCTION")
        return regex;
    else if ((retype.toUpperCase() == "STRING") && !(regex == "JSVAL_RX_EMAIL") && !(regex == "JSVAL_RX_TEL")
            && !(regex == "JSVAL_RX_PC") && !(regex == "JSVAL_RX_ZIP") && !(regex == "JSVAL_RX_MONEY") && !(regex == "JSVAL_RX_DATE")
            && !(regex == "JSVAL_RX_COLOR_CODE") && !(regex == "JSVAL_RX_CREDITCARD") && !(regex == "JSVAL_RX_POSTALZIP") && !(regex == "JSVAL_RX_ALPHA")
            && !(regex == "JSVAL_RX_ALPHA_NUMERIC") && !(regex == "JSVAL_RX_ALPHA_NUMERIC_WITHOUT_HIFANE") && !(regex == "JSVAL_RX_NUMERIC") && !(regex == "JSVAL_RX_IPADDRESS") && !(regex == "JSVAL_RX_RESTRICT_CHARACTER")
            && !(regex == "JSVAL_RX_FLOAT") && !(regex == "JSVAL_RX_PERCENT"))
    {
        nBegin = 0;
        nEnd = 0;
        if (regex.charAt(0) == "/")
            nBegin = 1;
        if (regex.charAt(regex.length - 1) == "/")
            nEnd = regex.length - 1;
        return new RegExp(regex.slice(nBegin, nEnd));
    } else {
        return regex;
    }
    ;
};
Field.prototype._ValidateText = function (arrFields) {
    if ((this.required) && (this.callback)) {
        nCurId = this.element.id ? this.element.id : "";
        nCurName = this.element.name ? this.element.name : "";
        nCurValue = this.value.replace("'", "\\'");
        eval("bResult = " + this.callback);
        if (bResult == false) {
            return false;
        }
        ;
    } else {
        if (this.required && !this.value) {
            return false;
        }
        ;
        if (this.value && (this.minLength && this.value.length < this.minLength)) {
            return false;
        }
        ;
        if (this.value && (this.maxLength && this.value.length > this.maxLength)) {
            return false;
        }
        ;
        if (this.regexp) {
            if (!_checkRegExp(this.regexp, this.value))
            {
                if (!this.required && this.value) {
                    return false;
                }
                if (this.required) {
                    return false;
                }
            } else
            {
                return true;
            }
            ;
        }
        ;
        if (this.equals) {
            for (var i = 0; i < arrFields.length; ++i) {
                var field = arrFields[i];
                if ((field.element.name == this.equals) || (field.element.id == this.equals)) {
                    if (field.element.value != this.value) {
                        return false;
                    }
                    ;
                    break;
                }
                ;
            }
            ;
        }
        ;
        if (this.required) {
            var fValue = parseFloat(this.value);
            if ((this.minValue || this.maxValue) && isNaN(fValue)) {
                return false;
            }
            ;
            if ((this.minValue) && (fValue < this.minValue)) {
                return false;
            }
            ;
            if ((this.maxValue) && (fValue > this.maxValue)) {
                return false
            }
            ;
        }
        ;
    }
    return true;
};
Field.prototype._ValidateGroup = function (arrFields) {
    if (this.required && this.values.length == 0) {
        return false;
    }
    ;
    if (this.required && this.min && this.min > this.values.length) {
        return false;
    }
    ;
    if (this.required && this.max && this.max < this.values.length) {
        return false;
    }
    ;
    return true;
};
function _handleError(field, strErrorMessage) {
    var obj = field.element;
    strNewMessage = strErrorMessage + ((field.realname) ? field.realname : ((obj.id) ? obj.id : obj.name)) + "\n";
    return strNewMessage;
}
;
function _throwError(field) {
    var obj = field.element;
    switch (field.type) {
        case "text":
        case "password":
        case "textarea":
        case "file":
            alert(_getError(field, "err_enter"));
            try {
                obj.focus();
            } catch (ignore) {
            }
            break;
        case "select-one":
        case "select-multiple":
        case "radio":
        case "checkbox":
            alert(_getError(field, "err_select"));
            break;
    }
    ;
}
;
function _getError(field, str) {
    var obj = field.element;
    strErrorTemp = (field.err) ? field.err : _getLanguageText(str);
    idx = strErrorTemp.indexOf("\\n");
    while (idx > -1) {
        strErrorTemp = strErrorTemp.replace("\\n", "\n");
        idx = strErrorTemp.indexOf("\\n");
    }
    ;
    return strErrorTemp.replace("%FIELDNAME%", (field.realname) ? field.realname : ((obj.id) ? obj.id : obj.name));
}
;
function _parseBoolean(value) {
    return !(!value || value == 0 || value == "0" || value == "false");
}
;
function _checkRegExp(regx, value)
{
    switch (regx)
    {
        case "JSVAL_RX_EMAIL":
            return((/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i).test(value));

        case "JSVAL_RX_TEL":
            return((/^1?[\-]?\(?\d{3}\)?[\-]?\d{3}[\-]?\d{4}$/).test(value));

        case "JSVAL_RX_DATE":
            return((/^(0[1-9]|[1,2][0-9]|3[0-1])-(0[1-9]|1[0,1,2])-\d{4}$/).test(value));

        case "JSVAL_RX_COLOR_CODE":
            return((/^#{1}?([a-f]|[A-F]|[0-9]){3}(([a-f]|[A-F]|[0-9]){3})?$/).test(value));

        case "JSVAL_RX_PC":
            return((/^[a-z]\d[a-z]?\d[a-z]\d$/i).test(value));

        case "JSVAL_RX_ZIP":
            return((/^\d{4}$/).test(value));

        case "JSVAL_RX_MONEY":
            //return((/^\d+([\.]\d{1,2})?$/).test(value));
            return /^\d+(?:\.\d{0,2})?$/.test(value);
        case "JSVAL_RX_CREDITCARD":
            return(!isNaN(value));

        case "JSVAL_RX_NUMERIC":
            return ((/^\d+$/).test(value));

        case "JSVAL_RX_ALPHA":
            return ((/^[a-zA-Z_.\- ]+$/).test(value));

        case "JSVAL_RX_ALPHA_NUMERIC":
            return ((/^[a-zA-Z0-9_.\- &@!* ]+$/).test(value));

        case "JSVAL_RX_ALPHA_NUMERIC_WITHOUT_HIFANE":
            return ((/^[a-zA-Z0-9_.\ &@!* ]+$/).test(value));

        case "JSVAL_RX_RESTRICT_CHARACTER":
            return ((/^[a-zA-Z0-9_.\-\/ &@!*,'# \s]+$/).test(value));

        case "JSVAL_RX_IPADDRESS":
            return((/^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$/).test(value));

        case "JSVAL_RX_POSTALZIP":
            if (value.length == 6 || value.length == 7)
                return((/^[a-zA-Z]\d[a-zA-Z] ?\d[a-zA-Z]\d$/).test(value));
            if (value.length == 5 || value.length == 10)
                return((/^\d{5}(\-\d{4})?$/).test(value));
            break;

        case "JSVAL_RX_FLOAT": 				// upto 4 digit after decimal point
            //return /^\$?[1-9][0-9]{0,2}(,[0-9]{3})*(\.[0-9]{4})?$/.test(value);
            //return /(?!^0*$)(?!^0*\.0*$)^\d{1,5}(\.\d{1,4})?$/.test(value);
            return /^\d+(?:\.\d{0,4})?$/.test(value);
            break;

        case "JSVAL_RX_PERCENT":
            return ((/^-?[0-9]{0,2}(\.[0-9]{1,2})?$|^-?(100)(\.[0]{1,2})?$/).test(value));
            break;

        case "JSVAL_RX_DISCOUNT_AMNT":
            //return ((/[^-]\d+(\.\d+)?$/).test(value));
            return (/(?!^0*$)(?!^0*\.0*$)^\[0-9]d{1,5}(\.\d{1,4})?$/).test(value);
            break;

        default:
            return(regx.test(value));
    }
    ;
}
;
