
function fieldValidation( type, name, message ) 
{
    this.type = type;
    this.name = name;
    this.message = message;
    
    this.getInfo = function() {
        return this.color + ' ' + this.type + ' apple';
    };
}

function addFieldToCheck( type, name, message )
{
	var sFunc = 'addFieldToCheck()';

	//talert( sFunc, 'checking name', name, 'type', type, 'message', message ); 

	var bAdd = true;
	for( var x = 0; x < gFieldsToCheck.length; x++ )
	{
		if ( gFieldsToCheck[x].name == name )
		{
			bAdd = false;
			break;
		}
	}

	if ( bAdd )
	{
		//talert( sFunc, 'adding', type, name, message ); 
		gFieldsToCheck[ gFieldsToCheck.length ] = new fieldValidation( type, name, message );
	}
}

function validate( fieldsToCheck )
{
	var sFunc = 'validate()';

	//talert( sFunc, 'here', 'fieldsToCheck.len', fieldsToCheck.length );

	var message = [];
	for( var y = 0; y < fieldsToCheck.length; y++ )
	{
		var elem = document.getElementById( fieldsToCheck[y].name);
		
		if ( elem != undefined )
		{
			//talert( sFunc, 'y', y,  'fieldsToCheck', fieldsToCheck[y].name, 'type', fieldsToCheck[y].type, 'value', elem.value, 'message', message );
			
			if ( fieldsToCheck[y].type == 'number' )
			{
				if ( ( isNaN( elem.value ) ) || ( elem.value * 1 == 0 ) ) 
					message[ message.length ] = fieldsToCheck[y].message;
			}
			else if ( fieldsToCheck[y].type == 'text' )
			{
				if ( elem.value == undefined )
					talert( sFunc, 'y', y,  'VALUE UNDEFINED FOR TEXT CHECK fieldsToCheck', fieldsToCheck[y].name, 'message', message );
				if ( elem.value == '' ) message[ message.length ] = fieldsToCheck[y].message;
			}
			else if ( fieldsToCheck[y].type == 'select' )
			{
				if ( ( elem.value == 'None' ) || ( elem.value == '' ) )
					message[ message.length ] = fieldsToCheck[y].message;
			}
			else if ( fieldsToCheck[y].type == 'selectX' )
			{
				if ( elem.value == '' )
					message[ message.length ] = fieldsToCheck[y].message;
			}
		}
	}

	if ( message.length )
		talert( "Error:  You must input the following required fields.", message );
	else
		document.forms["theForm"].submit();
}


function talert()
{
	var argv = talert.arguments;
	var outStr = '';

	for( var x = 0; x < argv.length; x++ )
	{
		if ( !x )
			outStr += argv[x];
		else if ( isArray( argv[x] ) )
		{
			for( var y = 0; y < argv[x].length; y++ )
				outStr += '\n+[' + argv[x][y] + ']';				
		}
		else
			outStr += '\n+[' + argv[x] + ']';
	}
		
	alert( outStr );
}

function parseScript(_source) 
{
	var source = _source;
	var scripts = new Array();

	//talert( 'inside parseScript', '' );
	
	source = source.replace( /<SCRIPT /g, '<script ' );
	source = source.replace( /\<\/SCRIPT\>/g, '</script>' );
	
	// Strip out tags
	while( source.indexOf("<script") > -1 || source.indexOf("</script") > -1 )
	{
		var s = source.indexOf("<script");
		var s_e = source.indexOf(">", s);
		var e = source.indexOf("</script", s);
		var e_e = source.indexOf(">", e);
		
		// Add to scripts array
		scripts.push(source.substring(s_e+1, e));
		// Strip from source
		source = source.substring(0, s) + source.substring(e_e+1);
	}
	
	// Loop through every script collected and eval it
	for(var i=0; i<scripts.length; i++) {
		try {
			//talert( 'trying' + i, scripts[i] );
			eval(scripts[i]);
		}
		catch(ex) {
			// do what you want here when a script fails
		}
	}
	
	// Return the cleaned source
	return source;
}

function isArray(testObject) {   
    return testObject && !(testObject.propertyIsEnumerable('length')) && typeof testObject === 'object' && typeof testObject.length === 'number';
}
