// vv_validation.js 20040802 (c) 2004 cmonster .
// depends on previously declared array fieldList_ .
// typical entries:
//
// fieldList_.push( ['Meeting Name',true] );
// fieldList_.push( ['Total Attendees',false,'int'] );
// fieldList_.push( ['Arrival_Date',true,'date'] );
//
// also depends on ts_picker for date validation.
//
var validateMissingFields = true; // set true for debug

function isInt( aField )
{
	if( isNaN( aField.value ) )
	{
		alert( aField.name + ' must be a number.' );
		aField.focus();
		return false;
	}
	return true;
}

function isDate( aField )
{
	if( ! str2dt( aField.value ) ) 
	{
		aField.focus();
		return false;
	}

	return true;
}

function isEmail( aField )
{
	var em = aField.value;
	
	var firstAt = em.indexOf( '@' );
	var lastAt = em.lastIndexOf( '@' );
	var lastDot = em.lastIndexOf( '.' );
	
	if( firstAt != lastAt || firstAt == -1 || lastDot == -1 || lastDot < firstAt || lastDot == em.length - 1 )
	{
		alert( aField.name + ' appears to be incorrectly formatted.' );
		aField.focus();
		return false;
	}

	return true;
}

function isValid( aField, fieldListEntry )
{
	var typ = fieldListEntry[2];
		
	if( typ )
	{
		if( typ == 'int' && ! isInt( aField ) ) return false;
		if( typ == 'date' && ! isDate( aField ) ) return false;
		if( typ == 'email' && ! isEmail( aField ) ) return false;
	}
	
	return true;
}

function validateField( aField )
{
	var fld = aField;
	
	for( var i=0; i < fieldList_.length; i++ )
	{
		var entry = fieldList_[i];
		if( entry[0] != fld.name ) continue;
		if( ! isValid( fld, entry ) ) return;
	}
}

function validateForm( theForm )
{
	var f = theForm;
	var fld;
	
	for( var i=0; i < fieldList_.length; i++ )
	{
		var entry = fieldList_[i];
		fld = f[ entry[0] ];
		
		if( ! fld ) // catch incorrect fieldList entries:
		{
			if( ! validateMissingFields ) continue; // skip if not debug.
			
			alert( entry[0] + ' is missing.' );
			return false;
		}
		
		var isRequired = entry[1];
	
		// 'null' check for unchosen SELECT
		if( isRequired && ( fld.value == '' || fld.value == 'null' ) )
		{
			alert( fld.name + ' is a required field.' );
			fld.focus();
			return false;
		}
		
		if( fld.value != '' )
		{
			if( ! isValid( fld, entry ) ) return false;
		}
	}
	
	return true;
}

function popSetup( fldName )
{
	window.open( 'layouts.html',fldName,'toolbar=no,resizable=yes,scrollbars=yes,width=400,height=500' ).focus();
}

function setSelect( fldName, optionValue )
{
	var aSelect = document.forms[0][ fldName ];
	
	for( var i=0; i < aSelect.length; i++ )
	{
		if( aSelect.options[i].value == optionValue )
		{
			aSelect.selectedIndex = i;
			break;
		}	
	}
}	