/*------НАСТРАИВАЕМЫЕ ФУНКЦИИ------*/

//Обработчик успешной отправки письма
function sendFormSuccess() {
	$(".resultMessage").text("Ваше сообщение отправлено. Мы свяжемся с Вами в ближайшее время.");
	cursorNormal();
}

//Обработчик ошибки
function sendFormFail(clickedObj){
	$(".resultMessage").text("Приносим извинения, но произошла ошибка при отправке Вашего сообщения.");
	cursorNormal();
}

function errorValidation(){
	$(".resultMessage").text("Заполните, пожалуйста, все обязательные поля.");
	cursorNormal();
}


/*------СИСТЕМНЫЕ ФУНКЦИИ------*/
params = new Object();

function checkTextInput(obj) { 
	if(obj=="checkAll")
		obj = $("input.input4Send");
		
	obj.each(function() {
		params[$(this).attr("fieldName")] = new Array($(this).attr("inputName"),$(this).val());

		if(typeof $(this).attr("requiredField")!="undefined")
			if(($(this).val()==""||$(this).val()==$(this).attr("originalValue"))) {
				showValidationError = true;
				$(this).addClass("empty");
				}
			else
				$(this).removeClass("empty");

		if($(this).attr("requiredEmail")) {
			adr_pattern=/^([a-zA-Z0-9_-]+\.)*[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)*\.[a-zA-Z]{2,4}$/; 
			prov=adr_pattern.test($(this).val()); 
			if($(this).val()==""||$(this).val()==$(this).attr("originalValue")||!prov) {
				showValidationError = true;
				$(this).addClass("empty");
				}
			else
				$(this).removeClass("empty");
			}
		});
}

function checkTextarea(obj) { 
	if(obj=="checkAll")
		obj = $("textarea.text4Send");
		
	obj.each(function() {
		params[$(this).attr("fieldName")] = new Array($(this).attr("inputName"),$(this).val());

		if(($(this).val()==""||$(this).val()==$(this).attr("originalValue"))&&(typeof $(this).attr("requiredField")!="undefined")) {
			showValidationError = true;
			$(this).addClass("empty");
			}
		else
			$(this).removeClass("empty");
		});
}

function checkRadioBlock(obj) { 
	if(obj=="checkAll")
		obj = $("div.radio4Send");
				
	obj.each(function() {
		params[$(this).attr("fieldName")] = new Array($(this).attr("inputName"),$(this).find("input:checked").val());
		radioIsSetFlag = false;
		if(typeof $(this).attr("requiredField")!="undefined") {
			$(this).find("input:checked").each(function() {  
				radioIsSetFlag = true;
			});
			if(!radioIsSetFlag) {
				showValidationError = true;
				$(this).addClass("emptyBlock");
			}
			else
				$(this).removeClass("emptyBlock");
		}
	});
}

function checkCheckbox(obj) { 
	if(obj=="checkAll")
		obj = $("input.checkbox4Send");

	
	obj.each(function() {
		if($(this).prop("checked"))
			params[$(this).attr("fieldName")] = new Array($(this).attr("inputName"),$(this).val());
		else
			delete params[$(this).attr("fieldName")];
		
		if((typeof $(this).attr("requiredField")!="undefined")&&!$(this).prop("checked")) {
			showValidationError = true;
			$(this).addClass("empty");
		}
		else
			$(this).removeClass("empty");
	});
}	
	
function checkCheckboxBlock(obj) { 
	if(obj=="checkAll")
		obj = $("div.checkbox4Send");

		
	obj.each(function() {
		checkboxValues = "";
		checkboxListAmount = $(this).find("input:checked").length;
		curCheckboxNum = 0;
		$(this).find("input:checked").each(function() {
			curCheckboxNum++;
			checkboxValues+=$(this).val();
			if(curCheckboxNum<checkboxListAmount)
				checkboxValues+=", ";
		});
		
		params[$(this).attr("fieldName")] = new Array($(this).attr("inputName"),checkboxValues);

		checkSetFlag = false;
		if(typeof $(this).attr("requiredField")!="undefined") { 
			$(this).find("input:checked").each(function() { 
				checkSetFlag = true;
			});
			if(!checkSetFlag) { 
				showValidationError = true;
				$(this).addClass("emptyBlock");
			}
			else
				$(this).removeClass("emptyBlock");
		}
	});
}

function checkSelect(obj) { 
	if(obj=="checkAll")
		obj = $("select.select4Send");
		
	obj.each(function() {
		params[$(this).attr("fieldName")] = new Array($(this).attr("inputName"),$(this).val());
		if($(this).val()==$(this).find("option").first().text()) {
			showValidationError = true;
			$(this).addClass("empty");
		}
		else
			$(this).removeClass("empty");
	});
}
	
	
	
var autoCheckFormFlag = false;

function checkForm() {  
	showValidationError = false;
	
	checkTextInput("checkAll");
	checkTextarea("checkAll");
	checkRadioBlock("checkAll");
	checkCheckboxBlock("checkAll");
	checkCheckbox("checkAll");
	checkSelect("checkAll");

	if(!autoCheckFormFlag)
		autoCheckForm();

	if(showValidationError) { 
		errorValidation();
		return false;
	}

	return true;
}


//Функция автоматически обработку событий и запуск функции валидации
function autoCheckForm() {
	autoCheckFormFlag = true;

	$(".sendForm input.input4Send")
		.keyup(function() {
			checkTextInput($(this));
			})
		.click(function() {
			checkTextInput($(this));
			})
		.blur(function() {
			checkTextInput($(this));
			});

	$(".sendForm textarea")
		.keyup(function() {
			checkTextarea($(this));
			})
		.blur(function() {
			checkTextarea($(this));
			});

	$(".sendForm div.radio4Send")
		.click(function() {
			checkRadioBlock($(this));
			});

	$(".sendForm div.checkbox4Send")
		.click(function() {
			checkCheckboxBlock($(this));
			});

	$(".sendForm input.checkbox4Send")
		.click(function() {
			checkCheckbox($(this));
			});


	$(".sendForm select.select4Send")
		.change(function() {
			checkSelec($(this));
			})
		.click(function() {
			checkSelec($(this));
			})
		.blur(function() {
			checkSelect($(this));
			});

}


$(document).ready(function() {
	$("input.input4Send").each(function(){
			if($(this).attr("inputName")==""||typeof $(this).attr("inputName") == "undefined")
			$(this).attr("inputName",$(this).val());
		});					   

	$("textarea.text4Send").each(function(){
		if($(this).attr("inputName")==""||typeof $(this).attr("inputName") == "undefined")
			$(this).attr("inputName",$(this).val());
		});					   

	inputAutoHide();
	inputAutoHide("textarea");
	params = new Object();
	
	$(".sendFormButton").click(function() {
		if(!checkForm()) {
				//	alert(print_r(params,true));
		return false;
		}
		
		
		cursorWait(); 
		params.action = "sendForm";
		$.get("/sendForm/formFunctions.php", params, 
			function(data){ 
				if(data==1) {
					sendFormSuccess();
					cursorNormal();
				}
					else {
						sendFormFail();
						cursorNormal();
					}

	   });
		return false;
	})
});	


