
function UpdateAllCosts()
{
	// add delay as form is not reset yet
	setTimeout(function(){updateWrapCost()}, 200);
	setTimeout(function(){updateParcelCost()}, 200);
}

function updateWrapCost()
{
	var elemCheck = document.getElementById('giftwrapping');
	var elemQty   = document.getElementById('giftwrappingqty');	
	var elemHTML  = document.getElementById('ttl_giftwrap');
	var elemHdn   = document.getElementById('giftwrapping_value');	
	var ttlHTML   = document.getElementById('ttl_total');
	var ttlHdn    = document.getElementById('total_value');	
	
	// If check box ticked on
	if (elemCheck.checked)
	{
		// check for numbers
		var valQty = 0;
		var extQty = elemQty.value;
		if (extQty.length == 0)
		{
			valQty = 0;
		}
		else if (parseInt(extQty) != extQty)
		{
			elemQty.value = parseInt(extQty);
			if (elemQty.value == "NaN")
			{
				elemQty.value = '';
				extQty = 0;
				valQty = 0;
			}
			else
				valQty = parseInt(extQty);
		}
		else
		{
			valQty = extQty;
		}
		
		var newHdn = ttlHdn.value - elemHdn.value + (valQty * 5.0);
		ttlHdn.value  = newHdn;
		elemHdn.value = valQty * 5.0;		
	}
	else
	{
		var newHdn = ttlHdn.value - elemHdn.value;
		ttlHdn.value  = newHdn;
		elemHdn.value = 0.0;
	}
	
	// Display
	elemHTML.innerHTML = "AU$" + FormatCurrency(parseFloat(elemHdn.value));
	ttlHTML.innerHTML  = "AU$" + FormatCurrency(parseFloat(ttlHdn.value));
}

function updateParcelCost()
{
	var elemCmb   = document.getElementById('delivery');
	var elemHTML  = document.getElementById('ttl_delivery');
	var elemHdn   = document.getElementById('delivery_value');
	var ttlHTML   = document.getElementById('ttl_total');
	var ttlHdn    = document.getElementById('total_value');
	
	var newParcelVal = parseFloat(elemCmb.options[elemCmb.selectedIndex].value);
	ttlHdn.value = ttlHdn.value - elemHdn.value + newParcelVal;
	elemHdn.value = newParcelVal;
	
	// Display
	elemHTML.innerHTML = "AU$" + FormatCurrency(parseFloat(elemHdn.value));
	ttlHTML.innerHTML  = "AU$" + FormatCurrency(parseFloat(ttlHdn.value));
}

function FormatCurrency(fPrice) 
{ 
	// convert to string, and round up 2 dp 
	var sCurrency = "" + ( fPrice + 0.00500000001 ); 

	// find . 
	var nPos = sCurrency.indexOf ( '.' ); 

	if ( nPos < 0 ) 
	{ 
		sCurrency += '.00'; 
	} 
	else 
	{ 
		// hack off 3rd dp 
		sCurrency = sCurrency.slice ( 0, nPos + 3 ); 

		// add up to 2 trailing zeroes if necessary 
		var nZero = 3 - ( sCurrency.length - nPos ); 

		for ( var i=0; i<nZero; i++ ) 
		sCurrency += '0'; 
	} 

	return sCurrency; 
} 

function ClickSubmit()
{
	UpdateButtonStatus(false);
}

function UpdateButtonStatus(isVisible)
{
	var divVis  = document.getElementById('form_order_visible');
	var divInv  = document.getElementById('form_order_invisible');

	if (!isVisible)
	{
		divVis.style.visibility = 'hidden';
		divInv.style.visibility = 'visible';
	}
	else
	{
		divInv.style.visibility = 'hidden';
		divVis.style.visibility = 'visible';
	}
}

function ValidateFormFields(formItems, formTitles, formTypes, formValues)
{

	var resultBool = true;
	var resultElem = "";
	var emailElem = null;
	var emailConfElem = null;
	
	for (i=formItems.length - 1; i >= 0 ; i--)
	{
		var elem = document.getElementById(formItems[i]);
		var boolText      = (formTypes[i] == 'text') && (elem.value.length != 0 && elem.value.length >= formValues[i]);
		var boolSelect    = (formTypes[i] == 'select') && (elem.options[elem.selectedIndex].value != formValues[i]);
		var boolEmail     = (formTypes[i] == 'email') && (elem.value.length != 0 && elem.value.indexOf('@',1) != -1 && elem.value.indexOf('.',2) != -1);

		if ((formItems[i] == 'email'))
			emailElem = elem;		
		
		if ((formItems[i] == 'email_confirm'))
			emailConfElem = elem;
		
		if (boolText || boolEmail || boolSelect)
		{
			elem.style.backgroundColor="#4C9BD3";
		}
		else
		{
			elem.style.backgroundColor='tomato';
			resultBool = false;
			resultElem = i;
		}
	}
	
	if (!resultBool)
	{
		alert('Please fill in ' + formTitles[resultElem]);
		document.getElementById(formItems[resultElem]).focus();
		UpdateButtonStatus(true);
		return false;
	}

	if (emailElem.value != emailConfElem.value)
	{
		emailElem.style.backgroundColor='tomato';
		emailConfElem.style.backgroundColor='tomato';
		alert('Please enter correct email. Emails are not matching!');
		emailElem.focus();
		UpdateButtonStatus(true);
		return false;
	}
	
	alert("Thank your for your order, please wait for confirmation page to load");
	return true;

}

function ValidateForm()
{

	var formItems = new Array();
	formItems[0] = "delivery";
	formItems[1] = "first_name";
	formItems[2] = "last_name";
	formItems[3] = "email";
	formItems[4] = "email_confirm";
	formItems[5] = "address";
	formItems[6] = "suburb";
	formItems[7] = "postcode";
	formItems[8] = "town_city";
	formItems[9] = "country";
	formItems[10] = "telephone";
	formItems[11] = "card_type";
	formItems[12] = "card_name";
	formItems[13] = "card_number";
	formItems[14] = "expiry_date";
	
	var formTitles = new Array(); // should be same size as formItemsSelect
	formTitles[0] = "Delivery";
	formTitles[1] = "First Name";
	formTitles[2] = "Last Name";
	formTitles[3] = "Email";
	formTitles[4] = "Confirm Email";
	formTitles[5] = "Address";
	formTitles[6] = "Suburb";
	formTitles[7] = "Postcode";
	formTitles[8] = "City or Town";
	formTitles[9] = "Country";	
	formTitles[10] = "Telephone";
	formTitles[11] = "Card Type";
	formTitles[12] = "Name on Card";
	formTitles[13] = "Card Number";
	formTitles[14] = "Card Expiry Date";
	
	var formTypes = new Array(); // should be same size as formItemsSelect
	formTypes[0] = "select";
	formTypes[1] = "text";
	formTypes[2] = "text";
	formTypes[3] = "email";
	formTypes[4] = "email";
	formTypes[5] = "text";
	formTypes[6] = "text";
	formTypes[7] = "text";
	formTypes[8] = "text";
	formTypes[9] = "text";	
	formTypes[10] = "text";
	formTypes[11] = "select";
	formTypes[12] = "text";
	formTypes[13] = "text";
	formTypes[14] = "text";
	
	var formValues = new Array(); // should be same size as formItemsSelect
	formValues[0] = "0";
	formValues[1] = "2";
	formValues[2] = "2";
	formValues[3] = "";
	formValues[4] = "";
	formValues[5] = "2";
	formValues[6] = "2";
	formValues[7] = "2";
	formValues[8] = "2";
	formValues[9] = "2";	
	formValues[10] = "2";
	formValues[11] = "-1";
	formValues[12] = "2";
	formValues[13] = "15";
	formValues[14] = "2";
	
	return ValidateFormFields(formItems, formTitles, formTypes, formValues);
}

function ValidateFeedbackForm()
{

	var formItems = new Array();
	formItems[0] = "firstname";
	formItems[1] = "lastname";
	formItems[2] = "email";
	formItems[3] = "telephone";
	formItems[4] = "country";
	formItems[5] = "distributor_enquiry";
	formItems[6] = "found_out_about_site";
	
	var formTitles = new Array(); // should be same size as formItemsSelect
	formTitles[0] = "First Name";
	formTitles[1] = "Last Name";
	formTitles[2] = "Email";
	formTitles[3] = "Telephone";
	formTitles[4] = "Country";
	formTitles[5] = "Are you interested in becoming a Beach Brasil distributor?";
	formTitles[6] = "How did you find out about the Beach Brasil website?";
	
	var formTypes = new Array(); // should be same size as formItemsSelect
	formTypes[0] = "text";
	formTypes[1] = "text";
	formTypes[2] = "email";
	formTypes[3] = "text";
	formTypes[4] = "text";
	formTypes[5] = "select";
	formTypes[6] = "select";
	
	var formValues = new Array(); // should be same size as formItemsSelect
	formValues[0] = "1";
	formValues[1] = "1";
	formValues[2] = "";
	formValues[3] = "1";
	formValues[4] = "1";
	formValues[5] = "-1";
	formValues[6] = "-1";

	
	return ValidateFormFields(formItems, formTitles, formTypes, formValues);
}