var cFormValidator = function()
{
	this.message = '';
	this.error_container_id = '';
	
	//this.http_request = false;
}

/**
*	Возвращает текст сообщения при неудачной валидации элемента.
*/
cFormValidator.prototype.get_message = function()
{
	return this.message;
}
/**
*	Возвращает текст сообщения при неудачной валидации элемента.
*/

cFormValidator.prototype.get_error_container_id = function()
{
	return this.error_container_id;
}

cFormValidator.prototype.get_label_caption = function(elem)
{
    //debugger;
    var elem_id = elem.getAttribute('id');
    var label_elem = document.getElementById(elem_id + '_label');
	if (label_elem)
	{
    caption = label_elem.textContent;
    if (caption == undefined) 
    {
        caption = label_elem.innerHTML;
    }
  
	  return caption;
  }
	else
	{
        var caption = elem.getAttribute('caption');
        if (caption)
            return caption;
	
	}
  
  
}

/**
*	Валидирует заданный DOMElement.
*	@param Object elem DOMElement
*	@return boolean
*/
cFormValidator.prototype.validate = function(elem)
{
	if (!elem)
	{
		return true;
	}

	var not_null = elem.getAttribute('not_null');
	var elem_id = elem.getAttribute('id');

        var pattern = elem.getAttribute('pattern');
        this.error_container_id = elem_id+'_error_container';

	// Обработка not null элементов.
	if (not_null == "true")
	{
            var disabled = elem.getAttribute('disabled');
        
        if (disabled)
        {
            return true;
            
        }

		if (elem.value.length == 0)
		{
			var label_caption = this.get_label_caption(elem);
            
			this.message = error_messages.get_not_null_error_message(label_caption);
			elem.style.border = '1px solid red';
			return false;
		}
        else
            {
                this.message = "";
                elem.style.border = ''
            }

		
	}

    // Проверка шаблона
    if (pattern)
    {
        // Если у нас валидация емейла.
        if (pattern=='email') {
            pattern = /^([A-Za-z0-9_\-\.])+@([A-Za-z0-9_\-\.])+.([A-Za-z]{2,4})/;
        }

        var re = new RegExp(pattern);
        if (!re.test(elem.value))
        {
            var label_caption = this.get_label_caption(elem);
			this.message = error_messages.get_pattern_error_message(label_caption);
            elem.style.border = '1px solid red';
            return false;
        }
        else
            {
                this.message = "";
                elem.style.border = ''
            }

             
    }

	return true;
}

form_validator = new cFormValidator();
