//
//  This script was created
//  by Mircho Mirev
//  mo /mo@momche.net/
//
//	:: feel free to use it BUT
//	:: if you want to use this code PLEASE send me a note
//	:: and please keep this disclaimer intact
//

function getSize( hLayer, sParam )
{
	nPos = 0
	while( ( hLayer != null ) && ( hLayer.tagName ) && !( /(body|html)/i.test( hLayer.tagName ) ) )
	{
		nPos += eval( 'hLayer.' + sParam )
		hLayer = hLayer.offsetParent//
//  This script was created
//  by Mircho Mirev
//  mo /mo@momche.net/
//
//	:: feel free to use it BUT
//	:: if you want to use this code PLEASE send me a note
//	:: and please keep this disclaimer intact
//

function getSize( hLayer, sParam )
{
	nPos = 0
	while( ( hLayer != null ) && ( hLayer.tagName ) && !( /(body|html)/i.test( hLayer.tagName ) ) )
	{
		nPos += eval( 'hLayer.' + sParam )
		hLayer = hLayer.offsetParent
	}
	return nPos
}

//mo form tester
cFormTester =
{
	name : 'FormTester',
	sEmailFormat : "/^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$/",
	sDateFormat : "/^[\s]*[0-9]{2}.[0-9]{2}.[0-9]{4}$/",
	sMoneyFormat : "/^[\s]*[\-+]?[0-9\.\-]/",
	sStrFormat: "/^[\-+]?[A-Za-z АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЮЯабвгдежзийклмнопрстуфхцчшщъьюя]{3,}$/",
	sFromNotValidMessage : "Отговорете на всички въпроси"
}

cFormTester.id = 0

cFormTester.getNewId = function()
{
	return this.name+( cFormTester.id++ )
}

cFormTester.doCheckSubmit = function( hEvent )
{
	if( hEvent == null ) hEvent = window.event
	var hF = ( hEvent.srcElement ) ? hEvent.srcElement : hEvent.originalTarget

	var nEL = hF.elements.length
	for( var nJ = 0; nJ < nEL; nJ ++ )
	{
		var hField = hF.elements.item( nJ )
		var hEVExp = hField.getAttribute( 'movexp' )
		if( hEVExp )
		{
			if( !cFormTester.checkField( hField ) )
			{
				alert( cFormTester.sFromNotValidMessage )
				if( hEvent.preventDefault )
				{
					hEvent.preventDefault()
				}
				hEvent.returnValue=true
				return false
			}
		}
	}
}

cFormTester.doCheck = function( hEvent )
{
	if( hEvent == null ) hEvent = window.event
	var hFE = ( hEvent.srcElement ) ? hEvent.srcElement : hEvent.originalTarget
	if( !cFormTester.checkField( hFE ) )
	{
		cFormTester.markField( hFE )
	}
	else
	{
		cFormTester.removeMark( hFE )
	}
}

cFormTester.doCheck2 = function( hFE )
{
	if( !cFormTester.checkField( hFE ) )
	{
		cFormTester.markField( hFE )
	}
	else
	{
		cFormTester.removeMark( hFE )
	}
}

cFormTester.checkField = function( hField )
{
	var hFVexp = hField.getAttribute( 'movexp' )
	var sFVexp = hFVexp.toString()
	sFVexp = sFVexp.replace( /\$/, "'"+hField.value+"' " )
	sFVexp = sFVexp.replace( '#DIGITS', '/^[\-+]?[0-9]*$/.test( "' + hField.value + '" )' )
	sFVexp = sFVexp.replace( '#NUMBER', '/^[\-+]?[0-9\.]*$/.test( "' + hField.value + '" )' )
	sFVexp = sFVexp.replace( '#EMAIL', cFormTester.sEmailFormat+'.test( "' + hField.value + '" )' )
	sFVexp = sFVexp.replace( '#DATE', cFormTester.sDateFormat+'.test( "' + hField.value + '" )' )
	sFVexp = sFVexp.replace( '#STR', cFormTester.sStrFormat+'.test( "' + hField.value + '" )' )
	
	sFVexp = sFVexp.replace( '#LENGTH', hField.value.length )
	sFVexp = sFVexp.replace( '#EMPTY', '('+hField.value.length+'==0)' )
	sFVexp = sFVexp.replace( 'gte', ' >= ' )
	sFVexp = sFVexp.replace( /[^n]gt/i, '>' )
	sFVexp = sFVexp.replace( 'lte', ' <= ' )
	sFVexp = sFVexp.replace( 'lt', ' < ' )

	if( eval( sFVexp ) )
	{
		return true
	}
	else
	{
		return false
	}
}

cFormTester.markField = function ( hField )
{
	var hMatt = hField.getAttribute( 'movm' )
	if( hMatt == null || hMatt == ''  )
	{
		hField.title = hField.getAttribute( 'movmsg' )
		hField.style.backgroundColor = '#f9acac'
		hField.style.color = '#ffffff'
		hField.setAttribute( 'movm', 'true' )
	}
}

cFormTester.removeMark = function( hField )
{
	var hMatt = hField.getAttribute( 'movm' )
	if( hMatt != null && hMatt.length > 0  )
	{
		hField.title = ''
		hField.style.backgroundColor = '#ffffff'
		hField.style.color = '#000000'
		hField.removeAttribute( 'movm' )
	}
}

cFormTester.removeMarks = function()
{
	var nFL = document.forms.length
	for( var nI = 0; nI < nFL; nI++ )
	{
		hF = document.forms[ nI ]
		var hVAtt = hF.getAttribute( 'validator' )
		if( hVAtt != null )
		{
			var nEL = hF.elements.length
			for( var nJ = 0; nJ < nEL; nJ ++ )
			{
				var hField = hF.elements.item( nJ )
				var hEVExp = hField.getAttribute( 'movexp' )
				if( hEVExp )
				{
					cFormTester.removeMark( hField )
				}
			}
		}
	}
	delete hVAtt
	delete hEVatt
}

cFormTester.checkForms = function()
{
	var nFL = document.forms.length
	for( var nI = 0; nI < nFL; nI++ )
	{
		hF = document.forms[ nI ]
		var hVAtt = hF.getAttribute( 'validator' )
		if( hVAtt != null )
		{
			var nEL = hF.elements.length
			for( var nJ = 0; nJ < nEL; nJ ++ )
			{
				var hField = hF.elements.item( nJ )
				var hEVExp = hField.getAttribute( 'movexp' )
				if( hEVExp )
				{
					if( !cFormTester.checkField( hField ) )
					{
						cFormTester.markField( hField )
					}

					if( hField.attachEvent )
					{
						hField.attachEvent( 'onchange', cFormTester.doCheck )
						hField.attachEvent( 'onkeyup', cFormTester.doCheck )
					}
					else if( hField.addEventListener )
					{
						hField.addEventListener( 'change', cFormTester.doCheck, false )
						hField.addEventListener( 'keyup', cFormTester.doCheck, false )
					}
				}
				delete hField
				delete hEVExp
			}

			if( hVAtt == 'force' )
			{
				if( hF.attachEvent )
				{
					hF.attachEvent( 'onsubmit', cFormTester.doCheckSubmit )
				}
				else if( hF.addEventListener )
				{
					hF.addEventListener( 'submit', cFormTester.doCheckSubmit, false )
				}
			}
		}

	}
	delete hVAtt
	delete hEVatt
}

if( window.attachEvent )
{
	window.attachEvent( 'onload', cFormTester.checkForms )
}
else if( window.addEventListener )
{
	window.addEventListener( 'load', cFormTester.checkForms, false )
}

	}
	return nPos
}

//mo form tester
cFormTester =
{
	name : 'FormTester',
	sEmailFormat : "/^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$/",
	sDateFormat : "/^[\s]*[0-9]{2}.[0-9]{2}.[0-9]{4}$/",
	sMoneyFormat : "/^[\s]*[\-+]?[0-9\.\-]/",
	sStrFormat: "/^[\-+]?[A-Za-z АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЮЯабвгдежзийклмнопрстуфхцчшщъьюя]{3,}$/",
	sFromNotValidMessage : "Отговорете на всички въпроси"
}

cFormTester.id = 0

cFormTester.getNewId = function()
{
	return this.name+( cFormTester.id++ )
}

cFormTester.doCheckSubmit = function( hEvent )
{
	if( hEvent == null ) hEvent = window.event
	var hF = ( hEvent.srcElement ) ? hEvent.srcElement : hEvent.originalTarget

	var nEL = hF.elements.length
	for( var nJ = 0; nJ < nEL; nJ ++ )
	{
		var hField = hF.elements.item( nJ )
		var hEVExp = hField.getAttribute( 'movexp' )
		if( hEVExp )
		{
			if( !cFormTester.checkField( hField ) )
			{
				alert( cFormTester.sFromNotValidMessage )
				if( hEvent.preventDefault )
				{
					hEvent.preventDefault()
				}
				hEvent.returnValue=true
				return false
			}
		}
	}
}

cFormTester.doCheck = function( hEvent )
{
	if( hEvent == null ) hEvent = window.event
	var hFE = ( hEvent.srcElement ) ? hEvent.srcElement : hEvent.originalTarget
	if( !cFormTester.checkField( hFE ) )
	{
		cFormTester.markField( hFE )
	}
	else
	{
		cFormTester.removeMark( hFE )
	}
}

cFormTester.doCheck2 = function( hFE )
{
	if( !cFormTester.checkField( hFE ) )
	{
		cFormTester.markField( hFE )
	}
	else
	{
		cFormTester.removeMark( hFE )
	}
}

cFormTester.checkField = function( hField )
{
	var hFVexp = hField.getAttribute( 'movexp' )
	var sFVexp = hFVexp.toString()
	sFVexp = sFVexp.replace( /\$/, "'"+hField.value+"' " )
	sFVexp = sFVexp.replace( '#DIGITS', '/^[\-+]?[0-9]*$/.test( "' + hField.value + '" )' )
	sFVexp = sFVexp.replace( '#NUMBER', '/^[\-+]?[0-9\.]*$/.test( "' + hField.value + '" )' )
	sFVexp = sFVexp.replace( '#EMAIL', cFormTester.sEmailFormat+'.test( "' + hField.value + '" )' )
	sFVexp = sFVexp.replace( '#DATE', cFormTester.sDateFormat+'.test( "' + hField.value + '" )' )
	sFVexp = sFVexp.replace( '#STR', cFormTester.sStrFormat+'.test( "' + hField.value + '" )' )
	sFVexp = sFVexp.replace( '#LENGTH', hField.value.length )
	sFVexp = sFVexp.replace( '#EMPTY', '('+hField.value.length+'==0)' )
	sFVexp = sFVexp.replace( 'gte', ' >= ' )
	sFVexp = sFVexp.replace( /[^n]gt/i, '>' )
	sFVexp = sFVexp.replace( 'lte', ' <= ' )
	sFVexp = sFVexp.replace( 'lt', ' < ' )

	if( eval( sFVexp ) )
	{
		return true
	}
	else
	{
		return false
	}
}

cFormTester.markField = function ( hField )
{
	var hMatt = hField.getAttribute( 'movm' )
	if( hMatt == null || hMatt == ''  )
	{
		hField.title = hField.getAttribute( 'movmsg' )
		hField.style.backgroundColor = '#f9acac'
		hField.style.color = '#ffffff'
		hField.setAttribute( 'movm', 'true' )
	}
}

cFormTester.removeMark = function( hField )
{
	var hMatt = hField.getAttribute( 'movm' )
	if( hMatt != null && hMatt.length > 0  )
	{
		hField.title = ''
		hField.style.backgroundColor = '#ffffff'
		hField.style.color = '#000000'
		hField.removeAttribute( 'movm' )
	}
}

cFormTester.removeMarks = function()
{
	var nFL = document.forms.length
	for( var nI = 0; nI < nFL; nI++ )
	{
		hF = document.forms[ nI ]
		var hVAtt = hF.getAttribute( 'validator' )
		if( hVAtt != null )
		{
			var nEL = hF.elements.length
			for( var nJ = 0; nJ < nEL; nJ ++ )
			{
				var hField = hF.elements.item( nJ )
				var hEVExp = hField.getAttribute( 'movexp' )
				if( hEVExp )
				{
					cFormTester.removeMark( hField )
				}
			}
		}
	}
	delete hVAtt
	delete hEVatt
}

cFormTester.checkForms = function()
{
	var nFL = document.forms.length
	for( var nI = 0; nI < nFL; nI++ )
	{
		hF = document.forms[ nI ]
		var hVAtt = hF.getAttribute( 'validator' )
		if( hVAtt != null )
		{
			var nEL = hF.elements.length
			for( var nJ = 0; nJ < nEL; nJ ++ )
			{
				var hField = hF.elements.item( nJ )
				var hEVExp = hField.getAttribute( 'movexp' )
				if( hEVExp )
				{
					if( !cFormTester.checkField( hField ) )
					{
						cFormTester.markField( hField )
					}

					if( hField.attachEvent )
					{
						hField.attachEvent( 'onchange', cFormTester.doCheck )
						hField.attachEvent( 'onkeyup', cFormTester.doCheck )
					}
					else if( hField.addEventListener )
					{
						hField.addEventListener( 'change', cFormTester.doCheck, false )
						hField.addEventListener( 'keyup', cFormTester.doCheck, false )
					}
				}
				delete hField
				delete hEVExp
			}

			if( hVAtt == 'force' )
			{
				if( hF.attachEvent )
				{
					hF.attachEvent( 'onsubmit', cFormTester.doCheckSubmit )
				}
				else if( hF.addEventListener )
				{
					hF.addEventListener( 'submit', cFormTester.doCheckSubmit, false )
				}
			}
		}

	}
	delete hVAtt
	delete hEVatt
}

if( window.attachEvent )
{
	window.attachEvent( 'onload', cFormTester.checkForms )
}
else if( window.addEventListener )
{
	window.addEventListener( 'load', cFormTester.checkForms, false )
}
