﻿function FormValidator(){
    return this.initialize.apply(this, arguments);
}

FormValidator.prototype = {

	initialize: function () {
	},

	fields: [], // массив хешей полей формы [ { name => , value => , pattern => , message => } ]

    validate: function(form) {
        this.fields = [];
        this.collectRequiredFields(form);

        // валидация полей формы
        for (var i = 0; i < this.fields.length; i++) {
            var field = this.fields[i];
            if (field.pattern) {
                eval('var match = field.value.match('+field.pattern+');');
                if (!match) {
                    alert(this.unEscapeHtml(field.message));
                    return false;
                }
            }
        }

		return true;
    },

    collectRequiredFields: function(form) {
        // заполняем структуру fields
        for (var i = 0; i < form.elements.length; i++) {
            var element = form.elements[i];
            if (element.getAttribute('_pattern') && element.getAttribute('_message')) {
                this.addField(element.name, element.value, element.getAttribute('_pattern'), element.getAttribute('_message'));
            }
        }
    },

    addField: function(name, value, pattern, message) {
        this.fields.push({ name: name, value: value, pattern: pattern, message: message });
    },
    
    
    unEscapeHtml: function(val){
      var str = new String(val);
      str = str.replace(/&amp;/gi,'&');
      str = str.replace(/&lt;/gi, '<');
      str = str.replace(/&gt;/gi,'>');
      str = str.replace(/&quot;/gi,'"');
      str = str.replace(/&#39;/gi,'\'');
      return str;
    }
}
