
// Function to check input to text field
function textfieldcheck(someelement,humanname)
{
	if(someelement.value.length == 0)
	{
		if(humanname && humanname.length)alert('Please enter a value for ' + humanname);
		else alert('Please enter a value for ' + someelement.name);
		someelement.focus();
		return false;
	}
	
	return true;
}

function radiobuttoncheck(someelement,humanname)
{
	// set var radio_choice to false
	var radio_choice = false;

	// Loop from zero to the one minus the number of radio button selections
	for (counter = 0; counter < someelement.length; counter++)
	{
		// If a radio button has been selected it will return true
		// (If not it will return false)
		if (someelement[counter].checked)
			radio_choice = true; 
	}

	if(!radio_choice)
	{
		if(humanname && humanname.length)alert('Please enter a value for ' + humanname);
		else alert('Please enter a value for ' + someelement.name);
		someelement[0].focus();
		return false;
	}
	
	return (radio_choice);
}

function radiobuttongetselected(someelement)
{
	var somevalue = "";

	// Loop from zero to the one minus the number of radio button selections
	for (counter = 0; counter < someelement.length; counter++)
	{
		// If a radio button has been selected it will return true
		// (If not it will return false)
		if (someelement[counter].checked)
			somevalue = someelement[counter].value; 
	}
	
	return (somevalue);
}

// Function to check select menu
function selectboxcheck(someelement,humanname)
{
	if(someelement.options[someelement.selectedIndex].value == 0)
	{
		if(humanname && humanname.length)alert('Please select a ' + humanname);
		else alert('Please select a ' + someelement.name);
		someelement.focus();
		return false;
	}
	
	return true;
}


// Function to check input to text area
function textareacheck(someelement,humanname,somelength)
{

	if(someelement.value.length > somelength)
	{
		if(humanname && humanname.length)alert('The value you have entered for ' + humanname + ' has been truncated to ' + somelength + ' characters');
		else alert('The value you have entered for ' + someelement.name + ' has been truncated to ' + somelength + ' characters');
		someelement.value = someelement.value.slice(0,somelength);
		someelement.focus();
		return false;
	}
	
	return true;
}

// Function to check date format in text field
function datefieldcheck(someelement,humanname,isCompulsory)
{
	var retval = true;
	var monthDays = new Array( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
		
	if(!isCompulsory && someelement.value.length == 0)return true;

	if(someelement.value.length != 10)retval = false;
	if(someelement.value.charAt(2) != '/')retval = false;
	if(someelement.value.charAt(5) != '/')retval = false;
	if(isNaN(parseInt( someelement.value.substring(0,2), 10 )))retval = false;
	if(isNaN(parseInt( someelement.value.substring(3,5), 10 )))retval = false;
	if(isNaN(parseInt( someelement.value.substring(6,10), 10 )))retval = false;
	
	var thisDay = parseInt( someelement.value.substring(0,2), 10 );
	var thisMonth = parseInt( someelement.value.substring(3,5), 10 );
	var thisYear = parseInt( someelement.value.substring(6,10), 10 );
	
	if(((thisYear % 4 == 0) && (thisYear % 100 != 0)) || (thisYear % 400 == 0))monthDays[1] = 29;
	
	if(thisDay <= 0 || thisDay > 31)retval = false;
	if(thisMonth <= 0 || thisMonth > 12)retval = false;
	if(thisYear < 1900 || thisYear > 2100)retval = false;
	if(thisDay > monthDays[thisMonth - 1])retval = false;
	
	if(!retval)
	{
		if(humanname && humanname.length)alert('Please enter the date for ' + humanname + ' in DD/MM/YYYY format ');
		else alert('Please enter the date for ' + someelement.name + ' in DD/MM/YYYY format ');
		someelement.focus();
		return false;
	}
	
	return true;
}

// Function to check for a number
function floatcheck(someelement,humanname,isCompulsory)	
{
	var absvalue='';

	if(someelement.value.charAt(0) == '-')absvalue = someelement.value.slice(1);
	else absvalue = someelement.value;

	if(isCompulsory && absvalue.length == 0)
	{
		if(humanname && humanname.length)alert('Please enter a value for ' + humanname);
		else alert('Please enter a value for ' + someelement.name);
		someelement.focus();
		return false;	
	}

	for(var c=0;c<absvalue.length;c++)
	{
		if( (absvalue.charAt(c) < '0' || absvalue.charAt(c) > '9') && absvalue.charAt(c) != '.' && absvalue.charAt(c) != ',')
		{
			if(humanname && humanname.length)alert('Please enter a floating point value for ' + humanname );
			else alert('Please enter a floating point value for ' + someelement.name);
			someelement.focus();
			return false;
		}
	}
	
	var adot = absvalue.indexOf(".");
	
	if(adot != -1)
	{
		for(var c=adot + 1;c<absvalue.length;c++)
		{
			if( absvalue.charAt(c) == '.' || absvalue.charAt(c) == ',')
			{
				if(humanname && humanname.length)alert('Please enter a floating point value for ' + humanname );
				else alert('Please enter a floating point value for ' + someelement.name);
				someelement.focus();
				return false;
			}
		}			
	}
	
	return true;
}

// Function to check for integer
function intcheck(someelement,humanname,isCompulsory)	
{
	var absvalue='';

	if(someelement.value.charAt(0) == '-')absvalue = someelement.value.slice(1);
	else absvalue = someelement.value;

	if(isCompulsory && absvalue.length == 0)
	{
		if(humanname && humanname.length)alert('Please enter a value for ' + humanname);
		else alert('Please enter a value for ' + someelement.name);
		someelement.focus();
		return false;	
	}

	for(var c=0;c<absvalue.length;c++)
	{
		if( (absvalue.charAt(c) < '0' || absvalue.charAt(c) > '9') && absvalue.charAt(c) != ',')
		{
			if(humanname && humanname.length)alert('Please enter an integer value for ' + humanname );
			else alert('Please enter an integer value for ' + someelement.name);
			someelement.focus();
			return false;
		}
	}
	
	
	return true;
}

function myEndsWith(someString, someEnding)
{	
	if(someString.length < someEnding.length)
	{
		return false;
	}
	
	if(someString.substring(someString.length - someEnding.length,someString.length) == someEnding)
	{
		return true;
	}
	
	return false;
}

function checkEmail(email) 
{

	var str = new String(email);
	var isOK = true;

	rExp = /[!\"£$%\^&*()-+=<>,\'#?\\|¬`\/\[\]]/

	if( rExp.test(str) )
		isOK = false;
	if( str.indexOf('.') == -1 || str.indexOf('@') == -1 )
		isOK = false;
	if( str.slice(str.lastIndexOf('.')+1,str.length).length < 2 )
		isOK = false;
	if( str.slice(0,str.indexOf('@')).length < 1 )
		isOK = false;
	if( str.slice(str.indexOf('@')+1,str.lastIndexOf('.')).length < 1 )
		isOK = false;

	return isOK;
}

// Function to check verify form input
function checkform(someform)
{
	var action = someform.action.value;
		
	if(action == 'screening')
	{
		if(!textfieldcheck(someform.CustomerName,'Customer Name'))return;		
		if(!textfieldcheck(someform.ContactName,'Contact Name'))return;		
		if(!textfieldcheck(someform.Email,'Email'))return;		
		
		if(!checkEmail(someform.Email.value))
		{
			alert('Please enter a valid email');
			someform.Email.focus();			
			return;
		}
		
		if(!radiobuttoncheck(someform.MaterialType,'Material Type'))return;	

		if(radiobuttongetselected(someform.MaterialType) == 'Solution'
			|| radiobuttongetselected(someform.MaterialType) == 'Slurry'
			)
		{
			if(!textfieldcheck(someform.TotalSolids,'Volume of Total Solids'))return;	
		}				
		
		if(!textfieldcheck(someform.RequiresRecovery,'Which metal(s) require(s) recovery'))return;		
		if(!textfieldcheck(someform.Concentration,'Concentration'))return;		
		if(!textfieldcheck(someform.OtherMetals,'Other Metals'))return;		
		if(!radiobuttoncheck(someform.StreamType,'Stream Type'))return;	
		
		if(radiobuttongetselected(someform.StreamType) == 'Aqueous')
		{
			if(!textfieldcheck(someform.AqueousPH,'Aqueous PH'))return;	
		}
		
		if(!textfieldcheck(someform.BiologicallyActive,'Biologically Active Materials'))return;		
		if(!radiobuttoncheck(someform.SolublePlatinum,'Soluble Platinum'))return;		
		if(!radiobuttoncheck(someform.Halogens,'Halogens'))return;		
		if(!radiobuttoncheck(someform.Organics,'Organics'))return;		
		if(!radiobuttoncheck(someform.Halogens,'Halogens'))return;		
		if(!radiobuttoncheck(someform.SOxNOx,'SOxNOx'))return;		
		if(!radiobuttoncheck(someform.OtherComponents,'OtherComponents'))return;		
		if(!radiobuttoncheck(someform.CanBeHeated,'Can Be Heated'))return;		
		if(!radiobuttoncheck(someform.ThermalStabilityIssues,'Thermal Stability Issues'))return;		
		if(!radiobuttoncheck(someform.OperatesUnderInertAtmos,'Operates Under Inert Atmosphere'))return;		
		
		if(!radiobuttoncheck(someform.MetalRecovery,'Metal Recovery'))return;		
		
		if(radiobuttongetselected(someform.CanBeHeated) == 'Yes')
		{
			if(!textfieldcheck(someform.CanBeHeatedTemp,'up to what temperature'))return;	
		}
		if(radiobuttongetselected(someform.ThermalStabilityIssues) == 'Yes')
		{
			if(!textfieldcheck(someform.ThermalStabilityTemp,'up to what temperature'))return;	
		}
		if(radiobuttongetselected(someform.OperatesUnderInertAtmos) == 'Yes')
		{
			if(!radiobuttoncheck(someform.CanBeExposedToAir,'Can Be Exposed To Air'))return;	
		}	
		if(radiobuttongetselected(someform.MetalRecovery) == 'Yes')
		{
			if(!textfieldcheck(someform.LevelMetalRecovery,'Level of Metal Recovery'))return;	
		}	
		
		if(!textfieldcheck(someform.file,'MSDS'))return;	

		var file = someform.file.value.toLowerCase();
		
		if(!myEndsWith(file,'.pdf') && !myEndsWith(file,'.doc') && !myEndsWith(file,'.rtf'))
		{
			alert('Please upload only .pdf, .doc or .rtf extention file');
			return
		}
		
/*		
		if(radiobuttongetselected(someform.MetalRecoverySystems) == 'Yes')
		{
			if(!someform.Recrystallisation.selected
				&& !someform.['Carbon bed'].selected
				&& !someform.['Ion exchange'].selected
			)
			{
				alert('please enter a value for metal recovery/removal system');
				return;	
			}
		}		
*/
	}
	else if(action == 'quotation')
	{
		if(!textfieldcheck(someform.CompanyName,'Company Name'))return;		
		if(!textfieldcheck(someform.Address,'Address'))return;		
		if(!textfieldcheck(someform.Email,'Email'))return;		
		
		if(!checkEmail(someform.Email.value))
		{
			alert('Please enter a valid email');
			someform.Email.focus();						
			return;
		}
		
		if(!textfieldcheck(someform.Description,'Description'))return;		
		if(!textfieldcheck(someform.EstimatedWeight,'Estimated Weight'))return;		
		if(!textfieldcheck(someform.PercentGold,'Percent Gold'))return;		
		if(!textfieldcheck(someform.PercentIridium,'Percent Iridium'))return;		
		if(!textfieldcheck(someform.PercentOsmium,'Percent Osmium'))return;		
		if(!textfieldcheck(someform.PercentGold,'Percent Gold'))return;		
		if(!textfieldcheck(someform.PercentPalladium,'Percent Palladium'))return;		
		if(!textfieldcheck(someform.PercentPlatinum,'Percent Platinum'))return;		
		if(!textfieldcheck(someform.PercentRhodium,'Percent Rhodium'))return;		
		if(!textfieldcheck(someform.PercentRuthenium,'Percent Ruthenium'))return;		
		if(!textfieldcheck(someform.PercentSilver,'Percent Silver'))return;		
		if(!textfieldcheck(someform.NonPMcontent,'Non PM content'))return;		
		if(!textfieldcheck(someform.ShippingFrom,'Shipping From'))return;		
		if(!textfieldcheck(someform.WhenAvailable,'When Available'))return;		
	
	}
	else if(action == 'mailinglist')
	{
		if(!textfieldcheck(someform.Lastname,'Last Name'))return;		
		if(!textfieldcheck(someform.Company,'Company'))return;		
		if(!textfieldcheck(someform.Country,'Country'))return;		
		if(!textfieldcheck(someform.Email,'Email'))return;		
		
		if(!checkEmail(someform.Email.value))
		{
			alert('Please enter a valid email');
			someform.Email.focus();						
			return;
		}
	}
	else if(action == 'register')
	{
		if(!textfieldcheck(someform.Lastname,'Last Name'))return;		
		if(!textfieldcheck(someform.Company,'Company'))return;		
		if(!textfieldcheck(someform.Country,'Country'))return;		
		if(!textfieldcheck(someform.Email,'Email'))return;		
		
		if(!checkEmail(someform.Email.value))
		{
			alert('Please enter a valid email');
			someform.Email.focus();						
			return;
		}
		
		if(!textfieldcheck(someform.Password,'Password'))return;		
		if(someform.Password.value.length < 6)
		{
			alert('Password must be minimum 6 characters');			
			return;		
		}

		if(!textfieldcheck(someform.ConfirmPassword,'ConfirmPassword'))return;	
		if(someform.Password.value != someform.ConfirmPassword.value)
		{
			alert('Passwords do not match');			
			return;		
		}		
		
	}
	else if(action == 'contactus')
	{
		if(!textfieldcheck(someform.Lastname,'Last Name'))return;		
		if(!textfieldcheck(someform.Company,'Company'))return;		
		if(!textfieldcheck(someform.Country,'Country'))return;		
		if(!textfieldcheck(someform.Email,'Email'))return;		
		
		if(!checkEmail(someform.Email.value))
		{
			alert('Please enter a valid email');
			someform.Email.focus();						
			return;
		}
		
		if(!textfieldcheck(someform.Comments,'Comments'))return;		
		
	}	
	
	//if(!intcheck(someform.parent_page_id,'Parent Page ID',true))return;
	//if(!selectboxcheck(someform.templategroup_id,'Template Group'))return;
	
	someform.submit();
}
