﻿var fbNowShowError; // Выводить ли при проверки поля ошибки

function fbIsFormValid() {
	
	var formFeedBack = document.getElementById("FeedBackForm");
	var result = true;
	
	for (var i=0; i < formFeedBack.elements.length; i++) {
		if (typeof formFeedBack.elements[i].valid == "boolean") {
			result = result && formFeedBack.elements[i].valid;
		}
	}
	
	return result;
	
}

function fbValidateField(txtField) {
	
	var fbNameError = document.getElementById("fbNameError");
	var fbEMailError = document.getElementById("fbEMailError");
	var fbTextError = document.getElementById("fbTextError");
	var fbPhoneError = document.getElementById("fbPhoneError");
	
	// Проверка имени
	if (txtField.name == "fbName") {
		if (txtField.value.length < 5) {
			if (fbNowShowError) {
				fbNameError.style.display = "block"; 
				fbNameError.innerHTML = win2unicode("Имя должно содержать не менее 5 символов");
			}
			txtField.valid = false;
		} else {
			if (fbNowShowError) {
				fbNameError.style.display = "none";
			}
			txtField.valid = true;
		}
	}
	

// proverka telefona
	if (txtField.name == "fbPhone") {
		var re = /^[\.\-()\s0-9]{7,15}$/;
		if (!re.test(txtField.value)) {
			if (fbNowShowError) {
				fbPhoneError.style.display = "block"; 
				fbPhoneError.innerHTML = win2unicode("Неправильно ввденый телефонный номер");
			}
			txtField.valid = false;
		} else {
			if (fbNowShowError) {
				fbPhoneError.style.display = "none";
			}
			txtField.valid = true;
		}
	}



	// Проверка email
	if (txtField.name == "fbEMail") {
		var re = /^[\.\-_A-Za-z0-9]+?@[\.\-A-Za-z0-9]+?\.[A-Za-z0-9]{2,6}$/;
		if (!re.test(txtField.value)) {
			if (fbNowShowError) {
				fbEMailError.style.display = "block"; 
				fbEMailError.innerHTML = win2unicode("Некорректный адрес электронной почты");
			}
			txtField.valid = false;
		} else {
			if (fbNowShowError) {
				fbEMailError.style.display = "none";
			}
			txtField.valid = true;
		}
	}




	// Проверка текста сообщения
	if (txtField.name == "fbText") {
		if (txtField.value.length < 15) {
			if (fbNowShowError) {
				fbTextError.style.display = "block"; 
				fbTextError.innerHTML = win2unicode("Текст сообщения должен содержать не менее 15 символов");
			}
			txtField.valid = false;
		} else {
			if (fbNowShowError) {
				fbTextError.style.display = "none"; 
			}
			txtField.valid = true;
		}
	}
	
	var fbSubmit = document.getElementById("fbSubmit");
	
	if (fbIsFormValid()) {
		fbSubmit.disabled = false;
		fbSubmit.style.cursor = 'pointer';
	} else {
		fbSubmit.disabled = true;
		fbSubmit.style.cursor = 'default';
	}
	
}

function fbValidateFieldOnChange(oEvent) {
	
	fbNowShowError = true;
	
	oEvent = oEvent || window.event;
	var txtField = oEvent.target || oEvent.srcElement;
	
	fbValidateField(txtField);
}

function fbValidateFieldOnKeyUp(oEvent) {
	
	fbNowShowError = false;
	
	oEvent = oEvent || window.event;
	var txtField = oEvent.target || oEvent.srcElement;
	
	fbValidateField(txtField);
}

window.onload = function () {
	
	var fbName = document.getElementById("fbName");
	var fbEMail = document.getElementById("fbEMail");
	var fbText = document.getElementById("fbText");
	var fbPhone = document.getElementById("fbPhone");
    var fbVeriCode = document.getElementById("vericode");
	var fbSubmit = document.getElementById("fbSubmit");
	
	fbSubmit.disabled = true;
	fbSubmit.style.cursor = 'default';
	
	fbName.valid = false;
	fbEMail.valid = false;
	fbText.valid = false;
	
	fbName.onchange = fbValidateFieldOnChange;
	fbEMail.onchange = fbValidateFieldOnChange;
	fbText.onchange = fbValidateFieldOnChange;
	fbPhone.onchange = fbValidateFieldOnChange;

	
	fbName.onkeyup = fbValidateFieldOnKeyUp;
	fbEMail.onkeyup = fbValidateFieldOnKeyUp;
	fbText.onkeyup = fbValidateFieldOnKeyUp;
	fbPhone.onkeyup = fbValidateFieldOnKeyUp;



	fbNowShowError = true;
	if (fbName.value != '') fbValidateField(fbName);
	if (fbEMail.value != '') fbValidateField(fbEMail);
	if (fbText.value != '') fbValidateField(fbText);
	if (fbPhone.value != '') fbValidateField(fbPhone);

	fbNowShowError = false;
	
	fbVeriCode.value = '';
	
	fbValidateField;
	
}

function win2unicode (str){
     if (str == null){ return null;}
     var result = "";
     var o_code = "";
     var i_code = "";
     for (var I=0; I < str.length; I++){
        i_code = str.charCodeAt(I);

        if (i_code == 184){
            o_code = 1105;
        } else if (i_code == 168){
            o_code = 1025;
        } else if (i_code > 191 && i_code < 256){
            o_code = i_code + 848;
        } else {
            o_code = i_code;
        }
        result = result + String.fromCharCode(o_code);
     }                                                
      
     return result;


};
