// Invalid/missing elements are highlighted using // this background colour: var MJS_COLOUR_ERROR = '#ffdddd'; // Indexes into validation param hash for each validated element, // first general ones, then those specifi to type: var MJS_TYPE = 0; var MJS_NAME = 1; // display name var MJS_REQUIRED = 2; var MJS_REGEXP = 3; var MJS_name = 4; // 'real' name var MJS_TEXT_MIN = 4; var MJS_TEXT_MAX = 5; var MJS_TEXT_REQ_IF = 6; var MJS_TEXTAREA_REQ_IF = 4; var MJS_SEL_IGNORE_FIRST = 3; // Select element has hint as first option - // ignore when looking for value var MJS_SEL_REQ_IF = 4; var MJS_DATE_REQ_IF = 3; var MJS_DATE_RANGE_START = 4; var MJS_DEFAULT_REQ_IF = 3; var MOCA_REGEXP_all = ''; var MOCA_REGEXP_words = /^[a-z 0-9]+$/i; var MOCA_REGEXP_alphanumeric = /^[a-z0-9_]+$/i; var MOCA_REGEXP_alphanumericplusspace = /^[a-z0-9_ -]+$/i; var MOCA_REGEXP_filename = /^[a-z0-9_.-]+$/i; var MOCA_REGEXP_email = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/; var MOCA_REGEXP_phone = /^[0-9 +\(\)-]{6,}$/; var MOCA_REGEXP_integer = /^[0-9]+$/; var MOCA_REGEXP_hex = /^[0-9a-f]+$/i; var MOCA_REGEXP_number = /^[0-9.,-]+$/; var MOCA_REGEXP_float = /^[0-9.]+$/; var MOCA_REGEXP_cc = /^\d{4}(-| )?\d{4}(-| )?\d{4}(-| )?\d{4}$/; var MOCA_REGEXP_cc_exp = /^\d{2}\/\d{2}$/; var MOCA_REGEXP_date = /^(\d{2})-(\d{2})-(\d{4})$/; var MOCA_REGEXP_time = /^[0-9]+:[0-9]+$/; var MOCA_REGEXP_expiry = /^\d+\s+(week|day|month|year)s?$/i; var MOCA_REGEXP_names = /^[ $a-z0-9_&@()'.,";~-]{0,255}$/i; var MOCA_REGEXP_simple_names = /^[ a-z,0-9"'.-]{0,255}$/i; var MOCA_REGEXP_labels = /^[ $#a-z0-9_&%\/@()'."+!,:;~?>-]{0,255}$/i; var MOCA_REGEXP_data = /^[a-z#?0-9_&%@()-;:,'~".!+\n\r ]{0,1024}$/i; var MOCA_REGEXP_password = /^[a-z#?0-9_&%@$^*()-;:,'~".!+]{1,255}$/i; var MOCA_REGEXP_url = /^[a-z=0-9_&@%-:\/;,'".~!+?+]{0,255}$/i; var MOCA_REGEXP_keywords = /^[a-z0-9, '-]+$/i; function MocaForm(fields){ this.fields = fields; // All MocaFields {name:[prop,prop,prop,etc],...} this.values = {}; // Cache of processed element values this.els = {}; // Cache of element refs this.name = ''; // current actual name value this.field = []; // Current MocaField (being validated) this.element = null; // Currently element this.value = ''; // Current element value } MocaForm.prototype = { MJS_T: 'text', // == EL_ID_TEXT MJS_TA: 'textarea', MJS_S: 'select', MJS_RG: 'radio', MJS_C: 'checkbox', MJS_CG: 'checkboxgroup', MJS_D: 'date', MJS_TI: 'time', MJS_P: 'password', MJS_H: 'hidden', MJS_L: 'label', MJS_DS: 'dateselector', MJS_PH: 'phone', MJS_U: 'upload', required_if: {}, require:function(fields,preserve){ var flds = fields.splice ? fields : [fields]; if(!preserve){ for(var f in this.fields){ f[MJS_REQUIRED] = false; } } for(var i=0; i