var current_browser = navigator.appName;  // Browser sniffer

/* Image path */
var imagePath = '/wp-content/themes/motionsoft1/_images/';

/* Validation for the form fields */
var colorOffField = '#999999'; // Color of font when not in focus
var colorOnField = '#000000'; // Color of font when in focus

// Validation RegExp
var vals = new Array(
	/^(?!.*<.*>)/, // Text & no HTML!
	/^(\(\d{3}\)|\d{3})(\d{7}|(\s|\W)\d{3}(\s|\W)\d{4})$/, // Full Phone
	/^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$/, // Email
	/^yes$/i // Agreement checkbox
);

// Validation RegExp
var valRegEx = new Array();
valRegEx[ "text" ] = /^(?!.*<.*>)/, // Text & no HTML!
valRegEx[ "phone" ] = /^(\(\d{3}\)|\d{3})(\d{7}|(\s|\W)\d{3}(\s|\W)\d{4})$/, // Full Phone
valRegEx[ "email" ] = /^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$/, // Email
valRegEx[ "agree" ] = /^yes$/i // Agreement checkbox

function makeSubmitBtn( formID )
{
	var inputBtn = document.createElement( "INPUT" );
	inputBtn.type = "text";
	inputBtn.className = "submit_btn";
	inputBtn.name = "submitForm";
	inputBtn.id = formID + "-btn";
	inputBtn.value = " ";
	inputBtn.onclick = function () { submitData( formID ); }
	inputBtn.style.cursor = "pointer";
	var btnContainer = document.getElementById( formID + "-btn-container" );
	btnContainer.appendChild( inputBtn );
}

var validField = new Array();
var valids = new Array();

function setUpValidField( formID )
{
	var formLength = document.getElementById( formID ).getElementsByTagName( "INPUT" ).length;
	for ( var element_cnt = 0; element_cnt < formLength; element_cnt++ )
	{
		var thisField = document.getElementById( formID ).getElementsByTagName( "INPUT" )[ element_cnt ];
		//if ( thisField.name == 'field[]' )
		//{
			////alert( thisField.id );
			validField[ thisField.id ] = false;
		//}
		if ( thisField.name == 'val[]' )
		{
			//alert( thisField.id + ', ' + thisField.value );
			if ( thisField.value == 'nr' )
			{
				validField[ thisField.id ] = true;
			}
			else
			{
				//valids[ thisField.id ] = thisField.value;
				validField[ thisField.id ] = false;
			}
		}
	}
	// alert( validField[ "header-form-name" ] );
	// alert( valids[ "header-form-name-rg" ] );
}

// The submit button var
function disableSubmitBtn( btnID )
{
	var submitBtn = document.getElementById( btnID );
	submitBtn.disabled = true;
}

function focusOnField( field, fieldCase, fieldType )
{
	fieldType = fieldType || 0; // The default field type is 'text'
	//var target_field = document.getElementById(fieldID);
	var fieldID = field.id;
	var a = fieldID.lastIndexOf('-');
	var b = fieldID.substr(a+1);
	var fieldValue = b.substr(0,1).toUpperCase() + b.substr(1);
	var fieldValueRegEx = new RegExp( '\^' + fieldValue + '\$', 'i');
	switch (fieldCase)
	{
		case 'On':
			if ( field.type != 'checkbox' )
			{
				if (fieldValueRegEx.test(field.value))
				{
					field.value = '';
					field.style.color = colorOnField;
				}
			}
		break;
		case 'Off':
			// Checkbox
			if ( fieldType == 4 )
			{
				//if ( field.checked == true )
				if ( field.checked )
				{
					val_image = 'valid.png';
					//alert( field.checked );
					validField[ fieldID + '-rg' ] = true;
				}
				else
				{
					val_image = 'invalid.png';
					//alert( field.checked );
					validField[ fieldID + '-rg' ] = false;
				}
			}
			// Not required
			else if ( fieldType == 3 )
			{
				// Field can be empty, but if there is text verify against text regex
				if ( vals[ 0 ].test( field.value ) )
				{
					val_image = 'valid.png';
					validField[ fieldID + '-rg' ] = true;
				}
				else
				{
					val_image = 'invalid.png';
					validField[ fieldID + '-rg' ] = false;
				}
				//val_image = 'valid.png';
				//validField[ fieldID + '-rg' ] = true;
			}
			else
			{
				// validateField( fieldID, fieldType );
				var val_image;
				// Field cannot be empty
				// Field cannot have default value, e.g. "Name" or "Facility"
				if (field.value == '' || fieldValueRegEx.test(field.value))
				{
					field.style.color = colorOffField;
					field.value = fieldValue;
					val_image = 'invalid.png';
					validField[ fieldID + '-rg' ] = false;
				}
				else
				{
					if ( vals[ fieldType ].test( field.value ) )
					{
						val_image = 'valid.png';
						validField[ fieldID + '-rg' ] = true;
					}
					else
					{
						val_image = 'invalid.png';
						validField[ fieldID + '-rg' ] = false;
					}	
				}
			}
			var valid_img = document.getElementById( fieldID + '-val' );
			valid_img.setAttribute( 'src', imagePath + val_image );
			valid_img.style.visibility = 'visible';
			var formName = fieldID.substr(0,a);
			//submitData( formName );
		break;
	}
}

function submitData( formID )
{	
	// Grab the submit button
	//submit_btn = document.getElementById( formID + '-btn' );
	// By default make the button disabled
	//submit_btn.disabled = true;

	var formLength = document.getElementById( formID ).getElementsByTagName( "INPUT" ).length;
	var this_fields = new Array(); // Container for all the fields
	for ( var element_cnt = 0; element_cnt < formLength; element_cnt++ )
	{
		var thisField = document.getElementById( formID ).getElementsByTagName( "INPUT" )[ element_cnt ];
		if ( thisField.name == 'field[]' )
		{
			this_fields.push( thisField.id + '-rg' );
		}
	}
	//alert( this_fields.length );
	
	var is_valid = 0;
	for ( var cnt = 0; cnt < this_fields.length; cnt++ )
	{
		// Valid
		if ( validField[ this_fields[ cnt ] ] == true ) 
		{ 
			is_valid++; 
			document.getElementById( this_fields[ cnt ].replace( '-rg', '' ) + '-val' ).src = imagePath + 'valid.png';
			// document.getElementById( this_fields[ cnt ].replace( '-rg', '' ) + '-val' ).style.visibility = 'visible';
			document.getElementById( this_fields[ cnt ].replace( '-rg', '' ) + '-val' ).style.visibility = 'hidden';
		}
		// Invalid
		else
		{
			//alert( focusField );
			document.getElementById( this_fields[ cnt ].replace( '-rg', '' ) + '-val' ).src = imagePath + 'invalid.png';
			document.getElementById( this_fields[ cnt ].replace( '-rg', '' ) + '-val' ).style.visibility = 'visible';
		}
	}
	
	if ( is_valid == this_fields.length )
	{
		document.getElementById( formID + '-load-img' ).style.visibility = 'visible';
		document.getElementById( formID ).submit();
	}
	else
	{
		alert( "Please fill out all required fields." );
		
	}
	
	/*
	for ( var element_cnt = 0; element_cnt < formLength; element_cnt++ )
	{
		var thisField = document.getElementById( formID ).getElementsByTagName( "INPUT" )[ element_cnt ];
		if ( thisField.name == 'field[]' )
		{
			//alert( thisField.id );
			var fieldRegEx = thisField.id + "-rg";
			//alert( fieldRegEx );
			//alert( valRegEx[ valids[ fieldRegEx ] ] );
			//alert( validField[ thisField.id ] );
			if ( validField[ thisField.id ] == true ) {  }
		}
	}
	*/
	
	/*
	var imgSrcs = getImgSrc( formID )
	var validCnt = 0;
	for ( var imgCnt = 0; imgCnt < imgSrcs.length; imgCnt++ )
	{
		if ( imgSrcs[ imgCnt ] == 'valid.png' ) { validCnt++; }
	}
	if ( validCnt == imgSrcs.length ) 
	{
		alert( "Yes!" );
		// Enable the submit button
		//submit_btn.disabled = false;
		//document.getElementById( formID + '-load-img' ).style.visibility = 'visible';
	}
	else
	{
		alert( "No!" );
		// Disable the submit button
		submit_btn.disabled = true;
	}
	*/
}

function validateData( mytree, imgSrc )
{
	if ( mytree.hasChildNodes() )
	{
		var childLength = mytree.childNodes.length;
		var childCnt = 0;
		while( childCnt < childLength )
		{
			//alert( mytree.childNodes[ childCnt ].nodeName );
			/*
			if( mytree.childNodes[ childCnt ].nodeName == 'IMG' )
			{
				var imgPath = mytree.childNodes[ childCnt ].src;
				var validImg = imgPath.substr( imgPath.lastIndexOf('/')+1 );
				//if ( validImg == 'valid.png' ) { validCnt++; }
				imgSrc.push( validImg );
			}
			*/
			imgSrc = validateData( mytree.childNodes[ childCnt ], imgSrc );
			childCnt++;
		}
	}
	return imgSrc;
}

// Get all of the img srcs
function getImgSrc( formID )
{
	var form = document.getElementById( formID );
	var imgSrc = new Array();
	imgSrc = validateData( form, imgSrc );
	//alert( imgSrc );
	return imgSrc;
}

function loadImg( formDIV )
{
	var loadingForm = document.getElementById( formDIV );	
	loadingForm.innerHTML = '<img src="' + imagePath + 'ajax-loader.gif" />';
}

function checkForm( formID )
{
	var valid_fields = 4;
	var errorStr = 'Please enter a valid ';
	
	// Check name field
	var nameRegEx = /^(name)$/i;
	var nameField = document.getElementById( formID + '-name' );
	var invalidName = '\n- Name';
	if ( nameField.value == '' || nameRegEx.test( nameField.value ) )
	{
		errorStr += invalidName;
	}
	else
	{
		if ( vals[ 0 ].test( nameField.value ) )
		{
			valid_fields--;
		}
		else
		{
			errorStr += invalidName;
		}
	}
	// Check facility field
	var facilityRegEx = /^(facility)$/i;
	var facilityField = document.getElementById( formID + '-facility' ).value;
	var invalidFacility = '\n- Facility';
	if ( facilityField == '' || facilityRegEx.test( facilityField ) )
	{
		errorStr += invalidFacility;
	}
	else
	{
		if ( vals[ 0 ].test( facilityField ) )
		{
			valid_fields--;
		}
		else
		{
			errorStr += invalidFacility;
		}
	}
	// Check phone field
	var phoneRegEx = /^(phone)$/i;
	var phoneField = document.getElementById( formID + '-phone' ).value;
	var invalidPhone = '\n- Phone';
	if ( phoneField == '' || phoneRegEx.test( phoneField ) )
	{
		errorStr += invalidPhone;
	}
	else
	{
		if ( vals[ 1 ].test( phoneField ) )
		{
			valid_fields--;
		}
		else
		{
			errorStr += invalidPhone;
		}
	}
	// Check email field
	var emailRegEx = /^(email)$/i;
	var emailField = document.getElementById( formID + '-email' ).value;
	var invalidEmail = '\n- Email';
	if ( emailField == '' || emailRegEx.test( emailField ) )
	{
		errorStr += invalidEmail;
	}
	else
	{
		if ( vals[ 2 ].test( emailField ) )
		{
			valid_fields--;
		}
		else
		{
			errorStr += invalidEmail;
		}
	}
	if ( valid_fields > 0 )
	{
		document.getElementById( formID + '-btn' ).disabled = true;
		alert( errorStr );
	}
}
