var validationResults = new Array();
var validationResultNames = new Array();
var vRFilled = false;

function trim( str )
{
	var trimStr = str;
		while(( trimStr.substr( 0,1 ) == ' ' ) || ( trimStr.charCodeAt( 0 ) == 160 ))
			trimStr = trimStr.substr( 1 );
	while(( trimStr.substr( trimStr.length - 1, 1 ) == ' ' ) || ( trimStr.charCodeAt( trimStr.length - 1 ) == 160 ))
		trimStr = trimStr.substr( 0,trimStr.length-1 );
	return( trimStr );
}

function catchReturn( e, formName, controlName, validationProcPtr, onSuccessProcPtr, onFailProcPtr, requiredFlag )
{
	if((( e.which ) && ( e.which == 13 )) || (( e.keyCode ) && ( e.keyCode == 13 )))
	{
		var valRes = validate( formName, controlName, validationProcPtr, onSuccessProcPtr, onFailProcPtr, requiredFlag );
		var f = document.forms[ formName ];
		for( var i = 0; i < f.elements.length; i++ )
			if(( f.elements[ i ].name == controlName ) && valRes )
			{
				if( i < f.elements.length - 1 )
					f.elements[ i + 1 ].focus()
				else
					f.elements[ i ].blur();
				break;
			}
	}
}

function validate( formName, controlName, validationProcPtr, onSuccessProcPtr, onFailProcPtr, requiredFlag )
{
	if( !vRFilled )
	{
		vRFilled = true;
		var f = document.forms[ formName ];
		for( var i = 0; i < f.elements.length; i++ )
			if( document.images[ f.elements[ i ].name + 'validFlag' ])
			{
				validationResultNames.push( f.elements[ i ].name );
				validationResults[ f.elements[ i ].name ] = ( document.images[ f.elements[ i ].name + 'validFlag' ].style.visibility == 'hidden' );
			}
	}
	//var o = document.getElementsByName( controlName )[ 0 ];
	var retVal;
	var o = document.forms[ formName ].elements[ controlName ];
	if( o )
		if( requiredFlag )
			if( trim( o.value ) != '' )
				if( validationProcPtr( o.value ))
				{
					retVal = true;
					onSuccessProcPtr( controlName )
				}
				else
				{
					retVal = false;
					onFailProcPtr( controlName )
				}
			else
			{	
				retVal = false;
				onFailProcPtr( controlName )
			}
		else
			if( trim( o.value ) != '' )
				if( validationProcPtr( o.value ))
				{
					retVal = true;
					onSuccessProcPtr( controlName )
				}
				else
				{
					retVal = false;
					onFailProcPtr( controlName )
				}
			else
			{
				retVal = true;
				onSuccessProcPtr( controlName );
			}
	var submitButton = document.getElementById( 'submitButton' );
	if( allValid())
	{
		//alert( 'YES' );
		submitButton.style.visibility = 'visible';
	}
	else
	{
		//alert( 'NO' );
		submitButton.style.visibility = 'hidden';
	}
	return retVal;
}

function validatePositiveInt( v )
{
	var retVal = false;
	var intV = parseInt( v );
	var fltV = parseFloat( v );
	if( !isNaN( intV ) && ( intV > 0 ) && ( intV == fltV ))
		retVal = true;
	return retVal;
}

function onSuccessVoid( controlName )
{
	validationResults[ controlName ] = true;
}

function onFailVoid( controlName )
{
	validationResults[ controlName ] = false;
}

function onFailMarkFlag( controlName )
{
	validationResults[ controlName ] = false;
	var o = document.getElementById( controlName + 'validFlag' );
	if( o )
		o.style.visibility = 'visible';
}

function onSuccessMarkFlag( controlName )
{
	validationResults[ controlName ] = true;
	var o = document.getElementById( controlName + 'validFlag' );
	if( o )
		o.style.visibility = 'hidden';
}

function validateString( v )
{
	return( v != '' ? true : false );
}

function validateEMailAddr( v )
{
	return( v.match( /^([\w-]+(\.[\w-]+)*)+@([\w-]+\.[\w-]+)+$/ ) ? true : false );
}

function allValid()
{
//	var msg = '';
//	for( var v in validationResults )
//		msg = msg + v + ': ' + validationResults[ v ] + '\n';
//	alert( msg );
//	for( var v in validationResults )
//		if( !validationResults[ v ])
//			return false;
	for( var i = 0; i < validationResultNames.length; i++ )
		if( !validationResults[ validationResultNames[ i ]])
			return false;
	return true;
}

function submitOrderForm( formName )
{
	var queryString = document.forms[ formName ].action;
	var delimiter = '?';
	for( var i = 0; i < document.forms[ formName ].elements.length; i++ )
	{
		var el = document.forms[ formName ].elements[ i ];
		queryString = queryString + delimiter + el.name + '=' + escape( el.value );
		delimiter = '&';
	}
	try {
			// for Mozilla
			xmlhttp = new XMLHttpRequest();
		} catch (e) {
			// for IE5+
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
	xmlhttp.open( 'GET', queryString, false );
	xmlhttp.send( null );
	var ret = document.getElementById( 'returnDiv' );
	ret.innerHTML = '<pre>' + xmlhttp.responseText + '</pre>';
}