﻿Ext.namespace('CodeSmith.JavaScript');

CodeSmith.JavaScript.Utils = function() {

    return {

        filterDigitsTextBox: function(e) {
            var event = Ext.EventObject.setEvent(e);
            switch (event.getKey()) {
                case Ext.EventObject.BACKSPACE:
                case Ext.EventObject.TAB:
                case Ext.EventObject.ENTER:
                case Ext.EventObject.ESC:
                case Ext.EventObject.SPACE:
                case Ext.EventObject.PAGEUP:
                case Ext.EventObject.PAGEDOWN:
                case Ext.EventObject.END:
                case Ext.EventObject.HOME:
                case Ext.EventObject.LEFT:
                case Ext.EventObject.RIGHT:
                case Ext.EventObject.UP:
                case Ext.EventObject.DOWN:
                case Ext.EventObject.DELETE:
                case 0:
                    return;
            }
            reg = /\d/;
            return reg.test(String.fromCharCode(event.getCharCode()));
        }
    }
}

function CustomSerialNumberValidator(val, args) {
    var myregexp = /^\s*((?:[a-zA-Z0-9]{5}-){4,6}[a-zA-Z0-9]{5})[ \t]*(?:(?:\r?\n)+[ \t]*((?:[a-zA-Z0-9]{5}-){4,6}[a-zA-Z0-9]{5})[ \t]*)*\s*$/
    args.IsValid = true;
    var resultString = '';
    var isFirst = true;

    var serialNumbers = Ext.get(val.controltovalidate.toString()).getValue().split('\n');
    for (var i = 0; i < serialNumbers.length; i++) {
        if (serialNumbers[i].trim().length > 0 && !serialNumbers[i].trim().match(myregexp)) {
            args.IsValid = false;

            if (isFirst) {
                isFirst = false;
            }
            else {
                resultString = resultString + "<br>";
            }

            resultString = resultString + "Invalid Serial Number: " + serialNumbers[i];
        }
    }

    if (!args.IsValid) {
        Ext.get(val.id.toString()).update(resultString);
    }
}