$(document).ready(function(){
	var sender = new formSender();
})

var formSender = function(){
	var self = this;

	this.config = {
		formId:'#writeUs',
		sendButtonId:'#formSender'	
	}
	
	// ф-я привязки исполняемых ф-й к событию клика по кнопке отправки данных формы
	this.sendButtonClick = function(){
		$(this.config.sendButtonId).bind('click', function(){						
			// отправляем данные
			self.send();
			return false;
		});
	}
	
	// ф-я извлечения данных из полей формы
	this.getData = function(){
		// извлекаем данные формы
		var data = $(this.config.formId).serializeArray();
		
		// обрабатываем данные формы.
		if (!this.checkData(data)){
			//console.log('dfg')
			return false;
		}
		
		return data;
	}
	
	// ф-я проверки данных формы
	this.checkData = function(data){
		// подсчитываем количество полей
		var items = data.length;
		//var check = false;
		
		// проходим массив данных	
		for (var i = 0; i<items; i++){
			if (!this.validData(data[i])){
				return false;
			}
		}
		return data;
	}
	
	// ф-я валидации данных полей формы
	this.validData = function(field){
		var id = field.name;
		var value = field.value;
		
		switch(id){
			// проверяем имя
			/*
			case 'person':
				if (value == '' || !value){
					alert('Контактные данные не указаны.');
					return false;
				}
				break;
			*/	
			//проверяем email	
			case 'email':
				if (value == '' || !value){
					alert('Укажите email');
					return false;
				}else{
					var emailTpl = /^([a-z0-9_\-\.])+\@([a-z0-9_\-\.])+\.([a-z]{2,4})$/i;
					if(emailTpl.test(value) == false){
						alert('Email указан неверно');
						return false;
					}
				}
				break;
			// проверяем текст заявки	
			case 'message':
				if (value == '' || !value){
					alert('Вы не оставили свое сообщение.');
					return false;
				}
				break;	
			// проверяем номер телефона			
			/*
			case 'phone':
				if (value == '' || !value){
					alert('Укажите телефон.');
					return false;
				}else{
					var phoneTpl = /^([0-9\-\(\)\+\s]){7,15}$/;
					if(phoneTpl.test(value) == false){
						alert('Телефон указан неверно.');
						return false;
					}
				}
				break;
			*/		
			default: return true;
		}
		return true;	
	}
	
	// ф-я очистки полей формы
	this.fieldClear = function(){
		$(this.config.formId).find('.data').each(function(){
				$(this).val('');
		});
	}
	
	
	// ф-я отправки данных формы на сервер
	this.send = function(){
		// Анализируем: прошли ли вводимые данные валидацию
		if (!this.getData()) {
			return false;
		}
		$.ajax({
			url: '/assets/components/formsender/connector.php?action=formsender',
			data: this.getData(),
			type: 'post',
			success: function(data){
				var output = $.parseJSON(data);
				//console.log(output.success)
				if (output.success == 0){
					alert('Сообщение не было отправлено. Пожалуйста, повторите попытку');
				}else{
					self.fieldClear();
					alert('Сообщение отправлено.');
				}
			}
		});	
	}
	
	// инициализируем функции
	this.sendButtonClick();	
	// end	
}
