$(document).ready(
	function(){
		var onlineForm= new _onlineForm();
	}
);

function _onlineForm() {

	var obj = this;
	var formError = false;
	var formData = new Array;

	init = function(){
		$('.orderForm .send').click(function(){
			checkForm();
			if(!formError){
				$.post(
					'/component/online_form/',
					{
						act: 'send_form',
						id: $('.orderForm').attr('id'),
						data: formData
					},
					function(data){
						alert('Сообщение отправлено.');
						$('.orderForm .fm').val('');
						$('.reset').click();
						formData = new Array;
						formError = false;
					}
				);
			}
			return false;
		});

	}

	var checkForm = function(){
		var edObjs = $(".orderForm .fm");
		formError = false;
		var errors = Array();
		edObjs.each(function(){
			var validation = $(this).attr('validation');
			//console.warn($(this).attr('label') +' = '+ validation);
			if( validation ){
				var funcs = validation.split(' ');
				//console.info(funcs);
				//var error = call_user_func_array(validation);
				for(var i=0; i<funcs.length; i++){
					 //пробуем получить параметры валидации
					var tryFuncArr = funcs[i].split('(');
					if(tryFuncArr.length > 1){
						var param = tryFuncArr[1].replace(')','');
						var error = call_user_func_array(tryFuncArr[0]);
					} else {
						var error = call_user_func_array(funcs[i],[$(this)]);
					}
					if(error){
						formError = true;
						break;
					}
				}
			} else {
			}
			if(error){
				errors.push(error+' '+$(this).attr('label'));
//				$(this).parents('tr').find('.error').html(error);
			} else {
//				formData.push( '{"name":"'+$(this).attr('label')+'","value":"'+$(this).val()+'"}' );
				formData.push({name:$(this).attr('label'),value:$(this).val()});
				$(this).parents('tr').find('.error').html('');
			}
			
		});
		if(!formError){
//			formData = '['+formData.join(',')+']';
			formData = $.toJSON(formData);
		} else {
			var errors_line = errors.join("\n");
			alert(errors_line);
		}
	}

	notEmpty = function(objToCheck){
		var val = trim( objToCheck.val() );
		if(!val){
			return 'Необходимо заполнить поле';
		}
		return false;
	}

	isValidEmail = function(objToCheck){
		var val = trim( objToCheck.val() );
		if( val && !emailValidate(val) ){
			return 'Неправильный формат email';
		}
		return false;
	}

	notNull = function(objToCheck){
		var val =objToCheck.val();
		if(!val || val == 0){
			return 'Выберите значение';
		}
		return false;
	}

	init();
}

function notEmptyrt(objToCheck){
		var val = trim( objToCheck.val() );
		if(!val){
			return 'Необходимо заполнить поле';
		}
		return false;
	}
