// JavaScript functions for feedback form

// Checks email address format
//  IN: email (string)
// OUT: true|false 
function checkEmailFormat(sEmail)
{
    sEmail = sEmail.replace( new RegExp('/\(.*?\)/'), '' );
    var oRegExp = /^[A-Za-z0-9][-\w]*(\.[A-Za-z0-9][-\w]*)*@[A-Za-z0-9][-\w]*(\.[A-Za-z0-9][-\w]*)*\.[a-zA-Z]{2,4}$/;
    return oRegExp.test(sEmail);
}

// ONKEYDOWN checks user input & allows to input only 0-9 numbers
// Button codes used:
// 8='backspace'; 9='TAB'; 13='Enter'; 35-40='End','Home',arrows; 45='Insert'; 46='Delete'; 48-57='0-9'; 96-105='NumPads 0-9'; 144='NumLock'
// Additional info: 109 = 'NumPad -'; 189 = '-'; 112-123 = F1-F12;
// '(' and')' keyCodes can be found only in OnKeyPress keycodes table
//  IN: none (event)
// OUT: true|false
function NumOnlyWithMinus()
{
    if ((event.keyCode != 8) && (event.keyCode != 9) && (event.keyCode != 13) && (event.keyCode < 35)
	 || (event.keyCode > 40) && (event.keyCode < 45)
	 || (event.keyCode == 47)
	 || (event.keyCode > 58) && (event.keyCode < 96 )
	 || (event.keyCode > 105) && (event.keyCode != 109) && (event.keyCode != 144) && (event.keyCode != 189))
        event.returnValue = false;
    return true;
}

// Checks string for emptiness (even if string is full of spaces)
//  IN: string
// OUT: true|false
function isEmpty(str)
{
    if (str.value.replace(/ +/,"").length == 0)
		return true;
    return false;
}

// Checks user input in main fields of feedback form
//  IN: none (event)
// OUT: true|false
function checkFeedBack()
{
    var p = eval("document.feedback");
	if (isEmpty(p.fio)) {
	    alert("Пожалуйста, введите свои фамилию, имя и отчество");
		p.fio.focus();
		return false;
	}
	if (!checkEmailFormat(p.email.value)) {
	    alert("Адрес e-mail не введён или введён неверно");
		p.email.focus();
		return false;
	}
	if (isEmpty(p.msg)) {
	    alert("Невозможно послать пустое сообщение!");
		p.msg.focus();
		return false;
	}
	return true;
}