function form_validate(form)
{
    set_values();

    var errors = new Array ();
    for (var i = 0; i < form.elements.length; i++)
    {
        var element = document.getElementById(form.elements[i].id);
		if (!(element))
			continue;
		
		if (isDefined(element, 'properties'))
        {
            for (property in element.properties)
            {
                element.value = element.value.replace(/(^\s+)|(\s+$)/g, "");
            	switch (property)
                {
                    case 'allowBlank':
                        switch (element.properties[property])
                        {
							case 'on':
                                if (element.value.length == 0)
                                {
                                    errors.push('Поле <b>'+ element.properties['label']+'</b> не должно быть пустым');
				    trigger(element, 'errore');									
                                } else {trigger(element, '')}
                                break;
							default:
                                break;
                        }
                        break;
                    case 'regexp':
						
						//Если у улемента нулевая длинна, то его уже точно не надо проверять на то,
						//заполнен он или нет
						if (element.value.length == 0)
						{
							break;
						}
						switch (element.properties[property])
						{
							case 'numeric':
								if (!/[\d\.\-\+]+/.test(element.value))
								{
									errors.push('Поле <b>'+ element.properties['label']+'</b> должно быть цифровым');
									//trigger(element, 'errore');
								} else {trigger(element, '')}
								break;
							case 'email':
								//alert("yes");
								//alert(element.value);
								//alert((!/^[a-zA-Z][a-zA-Z0-9_\.\-]+\@[a-zA-Z][a-zA-Z0-9_\.\-]+[\.][a-zA-Z0-9]{2,4}$/.test(element.value)));

// старый								if (!/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(element.value))
								if (!/^[a-zA-Z][a-zA-Z0-9_\.\-]+\@[a-zA-Z][a-zA-Z0-9_\.\-]+[\.][a-zA-Z0-9]{2,4}$/.test(element.value))
								{
									//alert("yes2");
									errors.push('Поле <b>'+element.properties['label']+'</b> должно быть как email');
									trigger(element,"errore");									
								} else {trigger(element, '')}
								break;
							case 'string':
								if (!/^[\wйцукеёнгшщзхъфывапролджэячсмитьбюЙЦУКЕЁНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ\.\,\-_\+\s]+$/.test(element.value))
								{
									errors.push('Поле <b>'+ element.properties['label']+'</b> должно быть строкой из кирилицы');
									//trigger(element, 'errore');
								} else {trigger(element, '')}                               
								break;
							default:
								if (!element.properties[property].test(element.value))
								{
									errors.push('Поле <b>'+ element.properties['label']+'</b> не соответствует формату');
									//trigger(element, 'errore');
								} else {trigger(element, '')}
								break;
						}
                      break;
                }
            }
        }
    }
    
    if (errors.length == 0)
    {
        return true;
    }
    else
    {
        //document.getElementById('errors').innerHTML = errors.join("<br/>");
        //var myWindow = document.getElementById('error_message');
        //trigger('error_message');
	//alert(errors.length);
			
		
        return false;
    }
}

function isDefined(object, variable)
{
    return (typeof(eval(object)[variable]) != 'undefined');
}

function trigger(element, nr)
{
	//Здесь тригер будет подсвечивать соответсвующий элемент красным фоном
	// var result = "";
    // var i = "";
	//for (var i in element) {result += i + " = " + element[i] + "\n";}
  
	  //return result;
		//alert(result);
	//alert(element.style.border);
	//alert(element.classname);
	//if (element.className <> nr)
	//{
		element.className = nr;
	//}
	//alert(element.classname);
	//alert(element.style.background.color);
    //document.getElementById(nr).style.display = 'block';
    //document.getElementById(nr).style.visibility = 'visible';
    /*
    var submit = document.getElementById('submit');

    var disabled = (submit.disabled == false) ? true : false
    submit.disabled = disabled;

    if (document.layers)
    {
        vista = (document.layers[nr].visibility == 'hide') ? 'show' : 'hide'
        document.layers[nr].visibility = vista;
        current = (document.layers[nr].display == 'none') ? 'block' : 'none';
        document.layers[nr].display = current;
    }
    else if (document.all)
    {
        vista = (document.all[nr].style.visibility == 'hidden') ? 'visible' : 'hidden';
        document.all[nr].style.visibility = vista;
        current = (document.all[nr].style.display == 'none') ? 'block' : 'none';
        document.all[nr].style.display = current;
    }
    else if (document.getElementById)
    {
        vista = (document.getElementById(nr).style.visibility == 'hidden') ? 'visible' : 'hidden';
        document.getElementById(nr).style.visibility = vista;
        vista = (document.getElementById(nr).style.display == 'none') ? 'block' : 'none';
        document.getElementById(nr).style.display = vista;
    }
	*/
}
