//Javascript File

/*
	This Javascript file contains all the code relating to the site for validation etc...
*/

function checkreguserform(frm)
{
	//When the user registers for the site confirm they have entered all their detilas
	if (frm.FirstName.value == "")
	{
		alert("Please ensure you have entered your first name");
		frm.FirstName.focus();
		return false;
	}
	if (frm.Surname.value == "")
	{
		alert("Please ensure you have entered your Surname");
		frm.Surname.focus();
		return false;
	}
	if (frm.Password.value == "")
	{
		alert("Please ensure you have entered a password");
		frm.Password.focus();
		return false;
	}
	if (frm.Password.value != frm.ConfirmPassword.value)
	{
		alert("Your confirmation password does not match your password\nPlease retype them.")
		frm.ConfirmPassword.focus();
		return false;
	}
	if (frm.Email.value == "")
	{
		alert("Please ensure you have entered your email address");
		frm.Email.focus();
		return false;
	}
	if (frm.Email.value.indexOf ('@', 0) == -1)
	{
		alert("Please ensure you have entered a valid email address");
		frm.Email.focus();
		return false;
	}
	else
	{
		if (frm.Email.value.indexOf ('.', frm.Email.value.indexOf ('@', 0)) == -1)
		{
			alert("Please ensure you have entered a valid email address.");
			frm.Email.focus();
			return false;
		}
	}
	if (frm.MyUsualQuantity.value <= 0)
	{
		if (confirm("You have specified an invalid 'My Usual' amount.\nYou will not be able to order the 'My Usual' function without setting this value\n\nDo you wish to continue with the registration?"))
			return true;
		else
		{
			frm.MyUsualQuantity.focus();
			return false;
		}
	}
}

function checkuserform(frm)
{
	//When the user registers for the site confirm they have entered all their detilas
	if (frm.FirstName.value == "")
	{
		alert("Please ensure you have entered your first name");
		frm.FirstName.focus();
		return false;
	}
	if (frm.Surname.value == "")
	{
		alert("Please ensure you have entered your Surname");
		frm.Surname.focus();
		return false;
	}
	if (frm.Password.value == "")
	{
		alert("Please ensure you have entered a password");
		frm.Password.focus();
		return false;
	}
	if (frm.Password.value != frm.ConfirmPassword.value)
	{
		alert("Your confirmation password does not match your password\nPlease retype them.")
		frm.ConfirmPassword.focus();
		return false;
	}
	if (frm.Email.value == "")
	{
		alert("Please ensure you have entered your email address");
		frm.Email.focus();
		return false;
	}
	if (frm.Email.value.indexOf ('@', 0) == -1)
	{
		alert("Please ensure you have entered a valid email address");
		frm.Email.focus();
		return false;
	}
	else
	{
		if (frm.Email.value.indexOf ('.', frm.Email.value.indexOf ('@', 0)) == -1)
		{
			alert("Please ensure you have entered a valid email address.");
			frm.Email.focus();
			return false;
		}
	}
}

function checkloginform(frm)
{
	//Make sure the user has entered the minimal amount of details to login
	if (frm.Email.value == "")
	{
		alert("You need to enter your email address before you can login");
		frm.Email.focus();
		return false;
	}
	if (frm.Password.value == "")
	{
		alert("Please enter your password");
		frm.Password.focus();
		return false;
	}
}

function UpdatePayment()
{
	if (document.frmOrder.Method.value == 1 || 
			document.frmOrder.Method.value == 2 || 
			document.frmOrder.Method.value == 8)
	{
		if (document.layers)
		{
			//This code should be NC 4.7
			// NS4 doesnt support reading the innerHTML and so would have to be done differently
			//document.CCDetails.document.open();
			//document.CCDetails.document.writeln("&nbsp;");
			//document.CCDetails.document.close();
		}
		else if (document.all)
		{
			// This code should work on IE
			document.all.CCDetails.innerHTML = "&nbsp;";
		}
		else
		{
			//This code should be called in NS 6
			document.getElementById("CCDetails").innerHTML = "&nbsp;";
		}
	}
	else
	{
		if (document.layers)
		{
			// NS 4, this does not work the same and so has been excluded
		}
		else if (document.all)
		{
			// This code should work on IE
			document.all.CCDetails.innerHTML = sOriginal;
		}
		else
		{
			//This code should be called in NS 6
			document.getElementById("CCDetails").innerHTML = sOriginal;
		}
	}
}

function verirypostcode(frm)
{
	if (frm.PostCode.value == "")
	{
		alert("Please ensure you have entered your postcode.");
		return false;
	}
}

function checkvalue(frm)
{
	if (isNaN(frm.OilAmt.value))
	{
		alert("Please enter a numerical value for the amount.");
		frm.OilAmt.focus();
		return false;
	}
}

function checkvalue2(frm)
{
	if (isNaN(frm.Amount.value))
	{
		alert("Please enter a numerical value for the amount.");
		frm.Amount.focus();
		return false;
	}
	if (frm.Amount.value < 500)
	{
		alert ("Please enter a value of more than 500 litres for the amount.")
		frm.Amount.focus();
		return false;
	}
}

function validatecreditcard(frm)
{
	if (frm.Method.value == 1 || 
			frm.Method.value == 2 || 
			frm.Method.value == 8)
		return true;
	else
	{	
		var cardnum = frm.CCNumber.value;
		
		if (isNaN(cardnum) || cardnum < 1)
		{
			alert("Please enter your credit card details.");
			frm.CCNumber.focus();
			return false;
		}
	
		if (!CheckLUHN(cardnum))
		{
			alert("Please ensure that you have entered a valid credit card number");
			return false;
		}
		
		if (isNaN(frm.IssueNumber.value) || frm.IssueNumber.value < 1)
		{
			alert("Please ensure that you have entered a valid issue number.\n\nIf your card does not have an issue number enter 0.");
			frm.IssueNumber.focus();
			return false;
		}
	}
}

/*
* num CheckLUHN(string)
*
* Input: A credit card number
* Output: A boolean (1 or 0) indicating whether this
* 	is a valid credit card number using the LUHN
*	formula
*
*/
function CheckLUHN(cardnum)
{
	var RevNum = new String(cardnum);

	RevNum = Reverse(RevNum);

	var total = new Number(0);

	for ( var i = 0; i < RevNum.length; i += 1 )
	{
		var temp = 0;
		if (i % 2)
		{
			temp = RevNum.substr(i, 1) * 2;
			if (temp >= 10)
			{
				var splitstring = new String(temp);
				temp = parseInt(splitstring.substr(0, 1)) + parseInt(splitstring.substr(1, 1));
			}
		}
		else
			temp = RevNum.substr(i, 1);
	
		total += parseInt(temp); 
	}

	// if there's no remainder, we return 1 (true)
	return (total % 10) ? false : true;
}

/*
* str Reverse(str)
*
* Input: A string
* Output: The string, reversed
*
*/
function Reverse(strToReverse)
{
	var strRev = new String;
	var i = strToReverse.length;

	while (i--)
		strRev += strToReverse.charAt(i);

	return strRev;
}

