// Author:    Serge I. Zolotukhin ( serge@design.ru )
var AlgFE_RequiredClassName = 'AlgFERequired'
var AlgFE_AlertMessage = 'Внимание!\nЗаполните пожалуйста  все поля.\nМы никогда никому не разглашаем персональные данные наших клиентов.\n Информация строго конфиденциальна и используется только для услуг предоставляемого сервиса.'
if ( document.getElementById ) SetupEventHandler(window, 'load', AlgFE_Initialize )
function AlgFE_FormEventHandler( oEvent )
{
	var oEvent = window.event ? window.event : oEvent
	var oForm = window.event ? window.event.srcElement : oEvent.currentTarget

	for ( var i=0; i<oForm.elements.length; i++ )
		if ( oForm.elements[i].getAttribute('algfe:required') == 'true' && !AlgFE_CheckValuePresence(oForm.elements[i]) )
		{
			oForm.elements[i].focus()
			alert( AlgFE_AlertMessage )
			if ( oEvent.preventDefault ) oEvent.preventDefault(); return false;
		}
}

function AlgFE_InputEventHandler( oEvent )
{
	var oElement = window.event ? window.event.srcElement : oEvent.currentTarget
	AlgFE_CheckValuePresence(oElement) ? AlgFE_RemoveCssClass(oElement, AlgFE_RequiredClassName) : AlgFE_ApplyCssClass(oElement, AlgFE_RequiredClassName)
}
function AlgFE_Initialize()
{
	var oForm
	for ( var i=0; i<document.forms.length; i++ )
		for ( var j=0; j<document.forms[i].elements.length; j++ )
			if ( document.forms[i].elements[j].getAttribute('algfe:required') == 'true' )
			{
				if ( oForm != document.forms[i] )
				{
					oForm = document.forms[i]
					SetupEventHandler(document.forms[i], 'submit', AlgFE_FormEventHandler)
				}
				SetupEventHandler(document.forms[i].elements[j], 'change', AlgFE_InputEventHandler)
				SetupEventHandler(document.forms[i].elements[j], 'keyup', AlgFE_InputEventHandler)
				SetupEventHandler(document.forms[i].elements[j], 'keydown', AlgFE_InputEventHandler)
				AlgFE_CheckValuePresence(document.forms[i].elements[j]) ? AlgFE_RemoveCssClass(document.forms[i].elements[j], AlgFE_RequiredClassName) : AlgFE_ApplyCssClass(document.forms[i].elements[j], AlgFE_RequiredClassName)
			}
}
function AlgFE_CheckValuePresence( oElement )
{
	return !
	(
		( oElement && oElement.type && oElement.type == 'select-one'      && !oElement.selectedIndex ) ||
		( oElement && oElement.type && oElement.type == 'select-multiple' && !oElement.selectedIndex ) ||
		( oElement && oElement.type && oElement.type == 'text'            && !oElement.value )
	)
}
function SetupEventHandler( oElement, sEventType, pHandler )
{
	if ( oElement.attachEvent ) oElement.attachEvent('on'+sEventType, pHandler)
	if ( oElement.addEventListener ) oElement.addEventListener(sEventType, pHandler, false)
}
function AlgFE_ApplyCssClass( oElement, sClassName )
{
	if ( oElement ) oElement.className += ' ' + sClassName
}
function AlgFE_RemoveCssClass( oElement, sClassName )
{
	if ( oElement ) oElement.className = oElement.className.replace( new RegExp(sClassName, 'g'), '' )
}
