function checkEMailValidation( addressField ) {
    if ( stringEmpty ( addressField.value ) )
        alert ( "Ошибка! E-Mail не введен" );
    else if ( noAtSign ( addressField.value ) )
        alert ( "Ошибка! E-Mail адрес не содержит символа @" );
    else if ( nothingBeforeAt ( addressField.value ) )
        alert ( "Ошибка! E-Mail адрес должен содержать один символ @" );
    else if ( noLeftBracket ( addressField.value ) )
        alert ( "Ошибка! E-Mail address contains a right square bracket ']',\nbut no corresponding left square bracket '['" );
    else if ( noRightBracket ( addressField.value ) )
        alert ( "Ошибка! The E-Mail address contains a left square bracket '[',\nbut no corresponding right square bracket ']'" );
    else if ( noValidPeriod ( addressField.value ) )
        alert ( "Ошибка! E-Mail адрес не содержит символа '.'" );
    else if ( noValidSuffix ( addressField.value ) )
        alert ( "Ошибка! An E-Mail address must contain a two or three character suffix" );
    else
        return (true);
    addressField.focus();
    return ( false );
}

function linkCheckValidation ( formField ) {
    if ( checkValidation ( formField ) == true ) {
        alert ( 'E-Mail Address Validates OK' );
    }

    return ( false );
}

function stringEmpty ( address ) {
    // CHECK THAT THE STRING IS NOT EMPTY
    if ( address.length < 1 ) {
        return ( true );
    } else {
        return ( false );
    }
}

function noAtSign ( address ) {
    // CHECK THAT THERE IS AN '@' CHARACTER IN THE STRING
    if ( address.indexOf ( '@', 0 ) == -1 ) {
        return ( true )
    } else {
        return ( false );
    }
}

function nothingBeforeAt ( address ) {
    // CHECK THERE IS AT LEAST ONE CHARACTER BEFORE THE '@' CHARACTER
    if ( address.indexOf ( '@', 0 ) < 1 ) {
        return ( true )
    } else {
        return ( false );
    }
}

function noLeftBracket ( address ) {
    // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN CHECK FOR LEFT BRACKET
    if ( address.indexOf ( '[', 0 ) == -1 && address.charAt ( address.length - 1 ) == ']' ) {
        return ( true )
    } else {
        return ( false );
    }
}

function noRightBracket ( address ) {
    // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN CHECK FOR RIGHT BRACKET
    if ( address.indexOf ( '[', 0 ) > -1 && address.charAt ( address.length - 1 ) != ']' ) {
        return ( true );
    } else {
        return ( false );
    }
}

function noValidPeriod ( address ) {
    // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN WE ARE NOT INTERESTED
    if ( address.indexOf ( '@', 0 ) > 1 && address.charAt ( address.length - 1 ) == ']' )
        return ( false );

    // CHECK THAT THERE IS AT LEAST ONE PERIOD IN THE STRING
    if ( address.indexOf ( '.', 0 ) == -1 )
        return ( true );

    return ( false );
}

function noValidSuffix ( address ) {
    // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN WE ARE NOT INTERESTED
    if ( address.indexOf ( '@', 0 ) > 1 && address.charAt ( address.length - 1 ) == ']' )
        return ( false );

    // CHECK THAT THERE IS A TWO OR THREE CHARACTER SUFFIX AFTER THE LAST PERIOD
    var len = address.length;
    var pos = address.lastIndexOf ( '.', len - 1 ) + 1;
    if ( ( len - pos ) < 2 || ( len - pos ) > 3 ) {
        return ( true );
    } else {
        return ( false );
    }
}

function ShowHiddenDiv(id){
	if(sel_div = document.getElementById(id)){
		sel_div.style.visibility = 'visible';
		sel_div.style.display = 'block';
	}
} 

HideDiv = function(id){
	if(sel_div = document.getElementById(id)){
		sel_div.style.visibility = 'hidden';
		sel_div.style.display = 'none';
	}
}

function isEmpty(str) {
   for (var i = 0; i < str.length; i++)
      if (" " != str.charAt(i))
          return false;
      return true;
}

function CheckRequiredFieldsForm(f) {
  var errMSG = "";
	var element2sel = null;
  // цикл ниже перебирает все элементы в объекте f, 
  // переданном в качестве параметра
  // функции, в данном случае - наша форма.            
  for (var i = 0; i<f.elements.length; i++) 
    // если текущий элемент имеет атрибут required
    // т.е. обязательный для заполнения
    if ((''!=f.elements[i].getAttribute("required")) && (null!=f.elements[i].getAttribute("required"))) 
       // проверяем, заполнен ли он в форме
        if (isEmpty(f.elements[i].value)) { // пустой
						if (element2sel == null) element2sel = f.elements[i];
            errMSG += "  " + f.elements[i].name + "\n"; // формируем сообщение
                                                       // об ошибке, перечисляя 
                                                       // незаполненные поля
				}
        // если сообщение об ошибке не пусто,
        // выводим его, и возвращаем false     
        if ("" != errMSG) {
            	alert("Не заполнены обязательные поля:\n" + errMSG);
		if (element2sel != null) element2sel.focus();
		return false;
        }
}

