function copyLockNumbers()
{
	var lockNumber = prompt("Please enter the lock number to be copied to all locks on this order:","");
	var digitexp = /^\d{5}$/;

	if(lockNumber != null && digitexp.test(lockNumber))
	{
		var formElements = document.locationandkeys.elements;
		for (i=0; i<formElements.length; i++)
		{
			var pos=formElements[i].name.indexOf("samelock");
			if(pos>=0)
			{
				formElements[i].value = lockNumber;
			}
		
		}
	}
	else
	{
		alert("Please enter a valid lock/key number.");
	}
}


function toggleOtherLocation(rownumber)
{
	//alert(document.getElementById(element).style.visibility);
	element = "otherlocation" + rownumber;
	element2 = "location" + rownumber;
	if(document.getElementById(element2).value=="other")
	{
		document.getElementById(element).style.visibility="visible";
		document.getElementById(element).focus();
	}

	else
	{
		document.getElementById(element).style.visibility="hidden";
		document.getElementById(element).value="";
		
	}
}

function toggleOtherLocation2(closediv)
{

	element = "popupother";
	element2 = "popup";
	

	if(document.getElementById(element2).value=="other" && closediv != "closediv")
	{
		document.getElementById(element).style.visibility="visible";
		document.getElementById(element).focus();
	}

	else if(closediv == "closediv")
	{
		document.copylocation.popup.value="";
		document.getElementById(element).style.visibility="hidden";
		document.getElementById(element).value="";
	}
	
	
	else
	{
		document.getElementById(element).style.visibility="hidden";
		document.getElementById(element).value="";
	} 
	
	
	
}

function copyLocation()
{

	var formElements = document.locationandkeys.elements;
	
	for (i=0; i<formElements.length; i++)
	{
		var pos=formElements[i].name.indexOf("location");
		if(pos==0)
		{
			formElements[i].value = document.copylocation.popup.value;
		}
	}

	for (i=0; i<formElements.length; i++)
	{
		var pos=formElements[i].name.indexOf("otherlocation");
		if(pos>=0)
		{
			if(document.copylocation.popup.value == "other")
			{
				var row = formElements[i].name.substring(13);
				toggleOtherLocation(row);
				document.getElementById("otherlocation" + row).value = document.copylocation.popupother.value;
			}
			else
			{
				var row = formElements[i].name.substring(13);
				toggleOtherLocation(row);
			}
		}
	}
	toggleLocation();
	toggleOtherLocation2("closediv");
}

function validateLocation(onlyextrakeys)
{
	var formElements = document.locationandkeys.elements;
	var submitOK = true;
	var digitexp = /^\d{5}$/;
	var countSameLockOnceElements = 0;
	var samelockonce = false;
	
	for (i=0; i<formElements.length; i++)
	{
		var pos=formElements[i].name.indexOf("samelockonce");
		if(pos==0)
		{
			samelockonce = true;		
		}
	}

	for (i=0; i<formElements.length; i++)
	{
		var pos=formElements[i].name.indexOf("location");
		if(pos==0)
		{
			if(formElements[i].value == "")
			{	
				submitOk = false;
				alert("You must enter a location for each item. If you want all the locations to be the same, click on the arrow and follow the prompt");
				return submitOk;
			}
			else
			{
				submitOk = true;
			}
		}
			
		
		var pos=formElements[i].name.indexOf("samelockonce");

		
		if(pos==0)
		{
			countSameLockOnceElements++;	
			if(!digitexp.test(formElements[i].value))
			{	

				if(formElements[i].value == "")
				{
					if(countSameLockOnceElements == 1)
					{
						submitOk = false;
						alert("Please enter a lock/key number.");
						return submitOk;
					}
					else
					{
						submitOk = true;
					}
				}
		
				else
				{
				submitOk = false;
				alert("The lock/key number must only be 5 digits, starting from 10000.");
				return submitOk;
				}
			}
			
			else if(formElements[i].value.charAt(0) == "0" && formElements[i].value != "")
			{
				submitOk = false;
				alert("The lock/key number must only be 5 digits, starting from 10000.");					
				return submitOk;					
			}
			else
			{
				submitOk = true;
			}
		}
		
		var pos=formElements[i].name.indexOf("samelock");
		if(pos==0)
		{
			if(!digitexp.test(formElements[i].value) && samelockonce != true)
			{	

				if(formElements[i].value == "")
				{
					submitOk = false;
					alert("Please enter a lock/key number.");
					return submitOk;
				}
		
				else
				{
				submitOk = false;
				alert("The lock/key number must only be 5 digits, starting from 10000.");
				return submitOk;
				}
			}
			
			else if(formElements[i].value.charAt(0) == "0" && formElements[i].value != "")
			{
				submitOk = false;
				alert("The lock/key number must only be 5 digits, starting from 10000.");					
				return submitOk;					
			}
			else
			{
				submitOk = true;
			}
		}
	}
}




function toggleLocation()
{

	element = "popupdiv";

		if(document.getElementById(element).style.visibility=="visible")
		{
			document.getElementById(element).style.visibility="hidden";
			toggleOtherLocation2("closediv");
		}
		else
		{
			document.getElementById(element).style.visibility="visible";
			document.getElementById(element).focus();
		}
}





function copyAddress()
{
	if(document.customerdetails.sameaddress.checked)
	{

		document.customerdetails.postal_street_address.value = document.customerdetails.premise_street_address.value;
		document.customerdetails.postal_suburb.value = document.customerdetails.premise_suburb.value;
		document.customerdetails.postal_state.value = document.customerdetails.premise_state.value;
		document.customerdetails.postal_post_code.value = document.customerdetails.premise_post_code.value;
		
		document.customerdetails.postal_street_address.disabled = true;
		document.customerdetails.postal_suburb.disabled = true;
		document.customerdetails.postal_state.disabled = true;
		document.customerdetails.postal_post_code.disabled = true;
	}
	else
	{
		document.customerdetails.postal_street_address.disabled = false;
		document.customerdetails.postal_suburb.disabled = false;
		document.customerdetails.postal_state.disabled = false;
		document.customerdetails.postal_post_code.disabled = false;
	}

}


function validatePassword()
{
	var digitexp = /(?=\w*\d)(?=\w*[a-z])(?=\w*[A-Z])/; 
	var checkspecial = /(~|!|#|\$|%|\^|&|\*|\(|\)|-|_|\+|=|<|>)/;

	
	if(!digitexp.test(document.userdetails.password.value) || (userdetails.password.value.length < 8) || (!checkspecial.test(document.userdetails.password.value)) || (document.userdetails.user_name.value == ""))
	{
		alert("Invalid Username or Password.");
		return false;
	}
	
}

function validateDigit(value)
{
	var digitexp = /^\d+$/;
	
	if(!digitexp.test(value))
	{
		notDigit = false;
		return notDigit;
	}
}


function validateBulk()
{
	var formElements = document.quantityForm.elements;
	var quantityCount = 0; 
	var notDigit = true;
	
	for (i=0; i<formElements.length; i++)
	{
		if(formElements[i].type == "text" && formElements[i].value != "" && notDigit == true)
		{
			notDigit = validateDigit(formElements[i].value);
			if(notDigit == false)
			{
		  		alert("Please enter digits only.");
				return false;
			}
		}
	}
	
	
	
	for (i=0; i<formElements.length; i++)
	{
		if(formElements[i].type == "text" && formElements[i].value != "")
		{
			if(formElements[i].value == "0")
			{
				formElements[i].value == "";
			}
			else
			{
				quantityCount = quantityCount + parseInt(formElements[i].value);
			}
		}
	}
	
	if (quantityCount > 200)
	{
		alert("You have ordered over 200 products. Please contact Queensland Locksmiths to make your order.");
		return false;
	}
	else if (quantityCount == 0 )
	{
		alert("Please select at least one product.");
		return false;	
	}
}

function checkNumberAfter(accNo)
{
	var submitOk;	
	if(accNo.indexOf('3') == 0)
	{
		// If three then
		var noThree= /^30[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$/;
		if(accNo.search(noThree)==-1)
		{
			//alert("Please enter a valid NMI Number.");
			//submitOk = false;
			//return false;
		}
		else
		{
			//alert("Ergon Energy Account Number is Valid");
			return true;
		}
	}
	else if(accNo.indexOf('Q') == 0) {
  	// if q tehn 
  	//var noQueue= /^Q[ACDEFG]{3}[ACDEFG0-9]{6}[0-9]$/;
	var noQueue= /^Q[ACDEFG]{3}[A-VX-Z0-9]{1}[A-Z0-9]{5}[0-9]$/;
  	
  	if(accNo.search(noQueue)==-1)
  	{
  		//alert("Please enter a valid NMI Number.");
  		//submitOk = false;
  		//return false;
  	}
  	else
  	{
  		//alert("Ergon Energy Account Number is Valid");
  		return true;
  	}
	}
	else { 
	  //alert("Please enter a valid NMI Number.");
		//submitOk = false;
		//return false;
	}
}

function checkVal()
{
	if(validateCustomerDetails()){
		//document.customerdetails.submit();
		return true;
	}
	return false;
}
function validateCustomerDetails()
{
	
	//check if submit has already been clicked
	if(submit_clicked == true)
	{
		return false;
	}
	//if this is the first time through, set variable to prevent additional form submissions
	submit_clicked = true;

	var alerts = new Array();
	var count = 0;
	submitOk = true;



	if(document.customerdetails.first_name.value == "")
	{
 		alerts[count]=("first name");
		count++;
		submitOk = false;
		
	}


	if(document.customerdetails.last_name.value == "")
	{
		alerts[count]=("last name");
		count++;
		submitOk = false;
	}	
	//alert(submitOk);
	
	var accNo=document.customerdetails.ergon_account_number.value;
	accNo = accNo.toUpperCase();
	var checkAccNo=/^\w{11}$/ //regular expression for matching 11 character
	if (document.customerdetails.ergon_account_number.value.search(checkAccNo)==-1)	//if match  failed
	{ 
		//alert("Please enter a valid NMI Number.");
		//submit_clicked = false;
		//submitOk = false;
	}
	else
	{
		submit_clicked = false;
		if(!checkNumberAfter(accNo))
		{
			submitOk = false;	
		}
	}
		
/*	if(document.customerdetails.ergon_account_number.value == "")
	{
 		alerts[count]=("Ergon Energy account number");
		count++;
		submitOk = false;
	}
*/
	if(document.customerdetails.ergon_account_name != null)			
	{	
		if(document.customerdetails.ergon_account_name.value == "")
		{
			alerts[count]=("Electricity Account Name");
			count++;
			submitOk = false;
		}
	}
	
	if(document.customerdetails.phone.value == "")
	{
 		alerts[count]=("contact phone number");
		count++;
		submitOk = false;
	}
	
	if(document.customerdetails.payment_method.value == "")
	{
 		alerts[count]=("payment method");
		count++;
		submitOk = false;
	}	

	if(document.customerdetails.premise_street_address != null)			
	{	
		if(document.customerdetails.premise_street_address.value == "")
		{
			alerts[count]=("location address street");
			count++;
			submitOk = false;
		}

		//make sure it is not a PO box
		if(poBoxCheck(document.customerdetails.premise_street_address.value) == true)
		{
			alert("The actual address where the lock will be used must not be a PO Box.");
			submitOk = false;
		}
	}

	if(document.customerdetails.premise_suburb != null)			
	{	
		if(document.customerdetails.premise_suburb.value == "")
		{
			alerts[count]=("location address suburb");
			count++;
			submitOk = false;
		}	
	}
	
	if(document.customerdetails.premise_state != null)			
	{	
		if(document.customerdetails.premise_state.value == "")
		{
			alerts[count]=("location address state");
			count++;
			submitOk = false;
		}	
	}	


	var digitexp = /^\d{4}$/;

	if(document.customerdetails.premise_post_code != null)			
	{
		var temp_post_code = document.customerdetails.premise_post_code.value;
		var valid_post_range = true;
		if(temp_post_code >= 4350 && temp_post_code <= 4499)
		{
			valid_post_range = true;
		}
		if(temp_post_code >= 4600 && temp_post_code <= 4899)
		{
			valid_post_range = true;
		}
		if(temp_post_code == 4570 || temp_post_code == 2372 || temp_post_code == 2406 || temp_post_code == 2834 || temp_post_code == 2839 || temp_post_code == 2840)
		{
			valid_post_range = true;
		}
		if(!digitexp.test(temp_post_code) || valid_post_range == false)
		{
			alert("Please enter a valid actual address post code.");
			submitOk = false;
		}
	}


		
	if(document.customerdetails.postal_street_address.value == "")
	{
 		alerts[count]=("delivery address street");
		count++;
		submitOk = false;
	}	

	if(document.customerdetails.postal_suburb.value == "")
	{
 		alerts[count]=("delivery address suburb");
		count++;
		submitOk = false;
	}	

	if(document.customerdetails.postal_state.value == "")
	{
 		alerts[count]=("delivery address state");
		count++;
		submitOk = false;
	}	
	
	var digitexp = /^\d{4}$/;
	if(document.customerdetails.postal_post_code != null)			
	{	
		if(!digitexp.test(document.customerdetails.postal_post_code.value))
		{
			alert("Please enter a valid delivery address post code.");		
			submitOk = false;
		}
	}
	
	//Check that Account Numbers are 8 digits.
	/*
	var digitexp = /^\d{8}$/;
	if(document.customerdetails.ergon_account_number != null)			
	{	
		
		if(!digitexp.test(document.customerdetails.ergon_account_number.value))
		{
			alert("Please enter a valid Ergon Energy Account Number.");		
			submitOk = false;
		}
		else
		{
			//check for check digit
			var check_sum = 0;
			for(var digit_count=0;digit_count <= 6;digit_count++)
			{
				check_sum += (8 - digit_count)*document.customerdetails.ergon_account_number.value.charAt(digit_count);
			}
			var remainder = check_sum%11;
			var check_digit;
			if(remainder==0)
			{
				check_digit=1;
			}
			else if(remainder==1)
			{
				check_digit=0;
			}
			else
			{
				check_digit=11-remainder;
			}
			if(document.customerdetails.ergon_account_number.value.charAt(7)!=check_digit)
			{
				alert("Please enter a valid Ergon Energy Account Number.");		
				submitOk = false;
			}
		}
	}*/

	if(count != 0)
	{
		validationMessage(alerts);

	}
	
	if(submitOk == false)
	{
		submit_clicked = false;
	}
	//alert(submitOk);
	return submitOk;
}

function validateEmailDetails()
{
	var alerts = new Array();
	var count = 0;
	submitOk = true;

	if(document.contactus.name.value == "")
	{
 		alerts[count]=("name");
		count++;
		submitOk = false;
	}	
	
	if(document.contactus.email.value == "")
	{
 		alerts[count]=("email address");
		count++;
		submitOk = false;
	}
	
	if(document.contactus.message.value == "")
	{
 		alerts[count]=("message");
		count++;		
		submitOk = false;
	}	
	
	if(count != 0)
	{
		validationMessage(alerts);
	}
	
	return submitOk;
}

//Outputs validation popup message in one sentence
function validationMessage(alerts)
{
	var alertstring = "Please enter your ";
	
	for (i=0; i<alerts.length; i++)
	{
		
		if (alerts.length == 1)
		{
			alertstring = alertstring + alerts[i];
		}			
		
		else 
		{
			
			if (i != alerts.length - 1 && i != alerts.length - 2)
			{
				alertstring =  alertstring + alerts[i];
				alertstring = alertstring + ", ";
			}
			
			else if (i == alerts.length - 1)		
			{	
				alertstring = alertstring + " and " + alerts[i];
			}
			else 
			{
				alertstring = alertstring + alerts[i];
			}
		}	
	}
	
	alert(alertstring + ".");

}


function paymentdetails()
{
	if (document.customerdetails.payment_method.value == "Credit Card")
	{
		document.getElementById('creditcardtext').innerHTML='Please make your payment on the next page.';
	}
	else if (document.customerdetails.payment_method.value == "Direct Transfer")
	{
		document.getElementById('creditcardtext').innerHTML='<strong>Account Name:</strong> API Services and Solutions Pty Ltd<br /> <strong>Bank:</strong> National Australia Bank<br /> <strong>BSB & Branch Number: </strong>083-646<br /> <strong>Account Number: </strong>18 173 5371 <br /><br /><strong>Important</strong> - You must use your NMI <br /> number as your reference number.';
	}	
	else if (document.customerdetails.payment_method.value == "Cheque/Money Order")
	{
		document.getElementById('creditcardtext').innerHTML=' Made out to API Locksmiths, PO Box 2184 Milton QLD 4064<br /> Please send with note or simply put NMI number on the back of the cheque/money order .';
	}
	else if (document.customerdetails.payment_method.value == "Electricity Account")
	{
		document.getElementById('creditcardtext').innerHTML=' If you choose to add the cost of your locks onto your<br />  Ergon Energy electricity account, the total cost<br /> will be due on your next account.';
	}		
	else
	{
		document.getElementById('creditcardtext').innerHTML=' Please select a payment method for more<br / >detailed instructions.';
	}
	
}

function cancelComment()
{
	var comment = prompt('Please enter a reason for the cancellation of this transaction.','');
	
	if(comment == "" || comment == null)
	{
		alert("You must enter a reason for the cancellation.");
		return false;
	}
	else
	{
		document.customerdetails.deleteTransactionReason.value = comment;
		return true;
	}
}

function changeProduct(rowNumber, originalValue, selectName)
{
	
	if(confirm('Are you sure you want to change this product?'))
	{
		document.customerdetails.product_change.value=rowNumber;
		customerdetails.submit();
	}
	else
	{
		elements = document.getElementsByName(selectName);
		elements[0].value = originalValue;
	}

}

function validateChangeType()
{
	// 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 < document.changesform.changes.length; counter++)
	{
		// If a radio button has been selected it will return true
		// (If not it will return false)
		if (document.changesform.changes[counter].checked)
		{
			radio_choice = true;
		}
	}

	if (!radio_choice)
	{
		// If there were no selections made display an alert box 
		alert("Please make a selection.")
		return (false);
	}
	return (true);
	
}

function poBoxCheck(inputStreetAddress)
{
	//first convert the string we are testing to upper case
	inputStreetAddress = inputStreetAddress.toUpperCase();

	//now replace any fullstops, spaces or dashes
	inputStreetAddress = replaceAll(inputStreetAddress, " ", "");
	inputStreetAddress = replaceAll(inputStreetAddress, ".", "");
	inputStreetAddress = replaceAll(inputStreetAddress, "-", "");

	//now check if the word POBOX exists in the string
	if (inputStreetAddress.indexOf("POBOX") > -1)
	{
		return true;
	}
	else
	{
		return false;
	}

}

function replaceAll( str, from, to ) {

	var idx = str.indexOf( from );

    while ( idx > -1 ) {
        str = str.replace( from, to ); 
        idx = str.indexOf( from );
    }

    return str;
}

