function showmenu(elmnt)
{
	browser = navigator.appName;
	browserNum = parseInt(navigator.appVersion);
	if ((browser == "Netscape" && browserNum < 5))
		{
		document.layers[elmnt].visibility="visible";
		}
	else if ((browser == "Netscape" && browserNum >=5 ))
		{
		document.getElementById(elmnt).style.visibility="visible";
		}
	else
		{
		document.all(elmnt).style.visibility="visible";
		}
}

function hidemenu(elmnt)
{
	browser = navigator.appName;
	browserNum = parseInt(navigator.appVersion);
	if ((browser == "Netscape" && browserNum < 5))
		{
		document.layers[elmnt].visibility="hidden";
		}
	else if ((browser == "Netscape" && browserNum >=5 ))
		{
		document.getElementById(elmnt).style.visibility="hidden";
		}
	else
		{
		document.all(elmnt).style.visibility="hidden";
		}
}

function validateRegisterForm()
{
	var x, loginName, loginPW, conPW, fName, lName, phone, fax, email, postCode, dPostCode, message, validate;
	x=document.formRegister;
	loginName = x.loginName.value;
	loginPW=x.loginPW.value;
	conPW=x.conPW.value;
	fName = x.firstName.value;
	lName = x.lastName.value;
	phone = x.phone.value;
	fax = x.fax.value;
	email = x.email.value
	street = x.street.value;
	suburb = x.suburb.value;
	state = x.state.value;
	postCode = x.postCode.value;
	dStreet = x.dStreet.value;
	dSuburb = x.dSuburb.value;
	dState = x.dState.value;
	dPostCode = x.dPostCode.value;

	message = "";
	var checkPhone = true;
	var checkFax = true;
	var checkPostCode = true;
	var checkDPostCode = true;
	var checkAddress = true;
	var checkDAddress = true;

	if (phone.length != 10)
		checkPhone = false;
	else
		checkPhone = isNumeric(phone);

	//if (fax.length != 10)
	//	checkFax = false;
	//else
	//	checkFax = isNumeric(fax);

	if (street != "" || suburb != "" || state != "" || postCode != "")
	{
		if (street != "" && suburb != "" && state != "" && postCode != "")
		{
			checkAddress = true;
		}
		else
		{
			checkAddress = false;
		}
	}

	if (dStreet != "" || dSuburb != "" || dState != "" || dPostCode != "")
	{
		if (dStreet != "" && dSuburb != "" && dState != "" && dPostCode != "")
		{
			checkDAddress = true;
		}
		else
		{
			checkDAddress = false;
		}
	}

	if (postCode != "")
	{
		if (postCode.length != 4)
			checkPostCode = false;
		else if (postCode.charAt(0) == 0)
			checkPostCode = false;
		else
			checkPostCode = isNumeric(postCode);
	}

	if (dPostCode != "")
	{
		if (dPostCode.length != 4)
			checkDPostCode = false;
		else if (dPostCode.charAt(0) == 0)
			checkDPostCode = false;
		else
			checkDPostCode = isNumeric(dPostCode);
	}
		

	if (loginName == "")
		message = message + "Login name can not be empty!\n";
	else if (loginName.length < 3)
		message = message + "Login name too short!\n";

	if ( (loginPW == "") || (conPW == "") )
		message = message + "Both password and confirmed password cannot be empty!\n";
	else if (loginPW.length < 4 || loginPW.length > 10)
		message = message + "The length of the password must be between 4 to 10 digits inclusive!\n";
	else if (loginPW != conPW)
		message = message + "Both password and confirmed password must be the same!\n";

	if (fName == "")
		message = message + "First name cannot be empty!\n";
	
	if (lName == "")
		message = message + "Last name cannot be empty!\n";

	if (phone == "")
		message = message + "Contact number cannot be empty!\n";
	else if (checkPhone == false)
		message = message + "Invalid contact number!\n";
	
	if (email == "")
		message = message + "Email cannot be empty!\n";
	else if (validateEmail(email) == false)
		message = message + "Invalid email address!\n";

	if (checkFax == false)
		message = message + "Invalid fax number!\n";

	if (checkAddress == false)
		message = message + "Incomplete postal address!\n";

	if (checkDAddress == false)
		message = message + "Incomplete delivery address!\n";	

	if (checkPostCode == false)
		message = message + "Invalid post code!\n";

	if (checkDPostCode == false)
		message = message + "Invalid delivery post code!\n";
	
	if (message != "")
	{
		alert("The following information is invalid:\n\n" + message);
		return false
	}
	else
		return true
}

function validateCustomiseForm()
{
	var x, motherboard, cpu, ram, hd, cdr, build0, build1, message;
	x = document.formCustomise;
	build0 = x.build[0].checked;
	build1 = x.build[1].checked;
	motherboard = x.motherboard.value;
	cpu = x.cpu.value;
	ram = x.ram.value;
	hd = x.hd.value;
	cdr = x.cdr.value;

	message = "";
	if ((build0 == false) && (build1 == false))
		message = "Please choose who will assemble the system!\n";
	if (motherboard == "")
		message = message + "Please select a motherboard!\n";
	if (cpu == "")
		message = message + "Please select a CPU!\n";
	if (ram == "")
		message = message + "Please select a Ram!\n";
	if (hd == "")
		message = message + "Please select a Hard Disk!\n";
	if (cdr == "")
		message = message + "Please select a Optical Drive!\n";

	if (message != "")
	{
		alert("The following information is invalid:\n\n" + message);
		return false
	}
	else
		return true
}

function validateLoginForm()
{
	var x, loginName, loginPW, message;
	x = document.formLogin;
	loginName = x.loginName.value;
	loginPW = x.loginPW.value;

	message = "";
	if (loginName == "")
		message = "Login name cannot be empty!\n";
	
	if (loginPW == "")
		message = message + "Login password cannot be empty!\n";

	if (message != "")
	{
		alert("The following information is invalid:\n\n" + message);
		return false
	}
	else
		return true
}

function validateAdvSearchForm()
{
	var x, code, name, brand, model, minPrice, maxPrice, message;
	x = document.formAdvSearch;
	code = x.code.value;
	name = x.name.value;
	brand = x.brand.value;
	model = x.model.value;
	minPrice = x.minPrice.value;
	maxPrice = x.maxPrice.value;
	

	message = "";
	if (code == "")
	{
		if (name == "" && brand ==  "" && model == "")
		{
			if (minPrice == "" || maxPrice == "")
			{
				message = "Cannot perform an empty search!\n";
			}
		}
	}

	if (code != "" && code.length < 3)
	{
		message = "Product Code too short!\n";
	}
	
	if (name != "" && name.length < 3)
	{
		message = message + "Product Name too short!\n";
	}
	
	if (minPrice != "" || maxPrice != "")
	{	
		minPrice = parseInt(minPrice);
		maxPrice = parseInt(maxPrice);
		if (minPrice == "" || maxPrice == "")
		{
			message = message + "Invalid price range!\n";
		}
		else if (minPrice > maxPrice)
		{
			message = message + "Invalid price range!\n";
		}
	}
	
	if (message != "")
	{
		alert(message);
		return false
	}
	else
		return true
}

function validateSearchForm()
{
	var x, search, message;
	x = document.formSearch;
	search = x.search.value;

	if (search == "")
	{
		alert("Please enter term(s) to search!");
		return false
	}
	else if (search.length < 3)
	{
		alert("Input too short!");
		return false
	}
	else
		return true
}

function validateOrderDetailsForm()
{
	var x, dStreet, dSuburb, dState, dPostCode, paymentMethod1, paymentMethod2, paymentMethod3, message;
	var cardNo, cardType, holderName, expMonth, expYear, thisMonth, thisYear, objDate;
	//paymentMethod1=money order;paymentMethod2=credit card;paymentmethod3=Bank Direct Deposit

	x=document.formOrderDetails;
	dStreet = x.dStreet.value;
	dSuburb = x.dSuburb.value;
	dState = x.dState.value;
	paymentMethod1 = x.payment[0].checked;
	paymentMethod2 = x.payment[1].checked;
	paymentMethod3 = x.payment[2].checked;
	dPostCode = x.dPostCode.value;
	cardNo = x.cardNo.value;
	cardType = x.cardType.value;
	holderName = x.holderName.value;
	expMonth = x.expMonth.value;
	expYear = x.expYear.value;

	objDate = new Date();
	thisMonth = objDate.getMonth() + 1;
	thisYear = objDate.getFullYear();

	message = "";
	var checkPostCode = true;
	var checkCardNumber = true;

	if (dPostCode.length != 4)
		checkPostCode = false;
	else
		checkPostCode = isNumeric(dPostCode);

	if (cardNo.length != 16)
		checkCardNumber = false;
	else
		checkCardNumber = isNumeric(cardNo);

	if (dPostCode.charAt(0) == 0)
		checkPostCode = false;

	if (dStreet == "")
		message = message + "Street cannot be empty!\n";

	if (dSuburb == "")
		message = message + "Suburb cannot be empty!\n";

	if (dState == "")
		message = message + "Please select a state!\n";

	if (dPostCode == "")
		message = message + "Post code cannot be empty!\n";

	else if (checkPostCode == false)
		message = message + "Invalid post code!\n";

	if ((paymentMethod1 == false) && (paymentMethod2 == false) && (paymentMethod3 == false))
		message = message + "Please choose a payment method!\n";
	else if (paymentMethod2 == true)
	{
		if (cardType == "")
			message = message + "Please select your card type!\n";
		if (cardNo == "")
			message = message + "Credit card number cannot be empty!\n";
		else if (checkCardNumber == false)
				message = message + "Invalid credit card number!\n";
		if (holderName == "")
			message = message + "Holder name cannot be empty!\n";
		if ((expMonth < thisMonth) && (expYear == thisYear))
			message = message + "Expiry date is invalid!\n";
	}
	else if (paymentMethod3 == true)
		//End PaymentMehod Checking

	if (message != "")
	{
		alert("The following information is invalid:\n\n" + message);
		return false
	}
	else
		return true
}


function validateWarrantyForm()
{
	var x, dStreet, dSuburb, dState, dPostCode, message;

	x=document.formWarranty;
	dStreet = x.dStreet.value;
	dSuburb = x.dSuburb.value;
	dState = x.dState.value;
	dPostCode = x.dPostCode.value;

	message = "";
	var checkPostCode = true;

	if (dPostCode.length != 4)
		checkPostCode = false;
	else
		checkPostCode = isNumeric(dPostCode);

	if (dPostCode.charAt(0) == 0)
		checkPostCode = false;

	if (dStreet == "")
		message = message + "Street cannot be empty!\n";

	if (dSuburb == "")
		message = message + "Suburb cannot be empty!\n";

	if (dState == "")
		message = message + "Please choose a state!\n";

	if (dPostCode == "")
		message = message + "Post code cannot be empty!\n";

	else if (checkPostCode == false)
		message = message + "Invalid post code!\n";

	if (message != "")
	{
		alert("The following information is invalid:\n\n" + message);
		return false
	}
	else
		return true
}


function validateWarrantyAddForm()
{
	var x, productName, faultDesc, fullSet1, fullSet2, invoiceNo, qty, day, month, year, message;

	x=document.formWarrantyAdd;
	productName = x.productName.value;
	faultDesc = x.faultDesc.value;
	fullSet1 = x.fullSet[0].checked;
	fullSet2 = x.fullSet[1].checked;
	invoiceNo = x.invoiceNo.value;
	qty = x.qty.value;
	day = x.day.value;
	month = x.month.value;
	year = x.year.value;

	objDate = new Date();
	thisDay = objDate.getDate();
	thisMonth = objDate.getMonth() + 1;
	thisYear = objDate.getFullYear();

	checkQty = true;

	if (qty != "")
	{
		if (qty <= 0)
		{
			checkQty = false;
		}
		else
		{
			checkQty = isNumeric(qty);
		}
	}

	message = "";

	if (productName == "")
		message = message + "Product Name cannot be empty!\n";

	if (faultDesc == "")
		message = message + "Fault Description cannot be empty!\n";

	if ((fullSet1 == false) && (fullSet2 == false))
		message = message + "Please choose whether it is fullset!\n";

	if (qty == "")
		message = message + "Quantity cannot be empty!\n";
	else if (checkQty == false)
		message = message + "Invalid Quantity!\n";
	
	if (invoiceNo == "")
		message = message + "Invoice Number cannot be empty!\n";

	if (year == thisYear)
	{
		if (month > thisMonth)
		{
			message = message + "Invalid invoice date!\n";
		}
		else if (month == thisMonth && day > thisDay)
		{
			message = message + "Invalid invoice date!\n";
		}
	}

	if (message != "")
	{
		alert("The following information is invalid:\n\n" + message);
		return false
	}
	else
		return true
}


function validateModifyForm()
{
	var x, loginPW, same, oldPW, newPW, conNewPW, fName, lName, phone, email, postCode, dPostCode, message, validate;
	x=document.formModify;
	loginPW = x.loginPW.value;
	oldPW = x.oldPW.value;
	newPW=x.newPW.value;
	conNewPW=x.conNewPW.value;
	fName = x.firstName.value;
	lName = x.lastName.value;
	phone = x.phone.value;
	email = x.email.value
	postCode = x.postCode.value;
	dPostCode = x.dPostCode.value;
	same = x.same.checked;

	message = "";
	var checkPhone = true;
	var checkPostCode = true;
	var checkDPostCode = true;

	if (phone.length != 10)
		checkPhone = false;
	else
		checkPhone = isNumeric(phone);

	if (postCode != "")
	{
		if (postCode.length != 4)
			checkPostCode = false;
		else if (postCode.charAt(0) == 0)
			checkPostCode = false;
		else
			checkPostCode = isNumeric(postCode);
	}

	if (dPostCode != "")
	{
		if (dPostCode.length != 4)
			checkDPostCode = false;
		else if (dPostCode.charAt(0) == 0)
			checkDPostCode = false;
		else
			checkDPostCode = isNumeric(dPostCode);
	}
		
	if ((oldPW != "") || (newPW != "") || (conNewPW != ""))
	{
		if (oldPW == "")
			message = message + "Old password can not be empty!\n";
		else if (oldPW != loginPW)
			message = message + "Invalid old password!\n";

		if ( (newPW == "") || (conNewPW == "") )
			message = message + "Both new password and confirm new password cannot be empty!\n";
		else if (newPW != conNewPW)
			message = message + "Both new password and confirm new password must be the same!\n";
	}

	if (fName == "")
		message = message + "First name cannot be empty!\n";
	
	if (lName == "")
		message = message + "Last name cannot be empty!\n";

	if (phone == "")
		message = message + "Contact number cannot be empty!\n";
	
	else if (checkPhone == false)
		message = message + "Invalid contact number!\n";
	
	if (email == "")
		message = message + "Email cannot be empty!\n";

	else if (validateEmail(email) == false)
		message = message + "Invalid email address!\n";

	if (checkPostCode == false)
		message = message + "Invalid post code!\n";

	if (same == false)
	{
		if (checkDPostCode == false)
			message = message + "Invalid delivery post code!\n";
	}
	
	if (message != "")
	{
		alert("The following information is invalid:\n\n" + message);
		return false
	}
	else
		return true
}

function validateQty(qty)
{

	var result = true;

	//alert ("abc "+qty);
	if (qty != "")
	{
		if (qty <= 0)
		{
			alert("Invalid quantity!");
			result = false;
		}
		else
		{
			result = isNumeric(qty);
			if (result == false)
			{
				alert("Invalid quantity!");
			}
		}
	}
	else
	{
		alert("Invalid quantity!");
		result = false;
	}
	return result;
}

//function used to check a string is whether numeric
function isNumeric(strString)
{
	var validChars = "0123456789";
	var singleChar, i;
	var checkResult = true;

		for (i = 0; i < strString.length && checkResult == true; i++)
		{
			singleChar = strString.charAt(i);
			if (validChars.indexOf(singleChar) == -1)
				checkResult = false;
		}
	return checkResult;
}

//function used to validate the email format
function validateEmail(email)
{
	var emailReg = "^[\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+[\\w]$";
	var regex = new RegExp(emailReg);
    return regex.test(email);
}