// ************************************* //
//            Form Validation            //
// ************************************* //

function OrderProduct(frm){
	if(!ValidateField(frm.Title,true,"select","Please select your title.")) return false;
	if(!ValidateField(frm.FirstName,true,"text","Please enter your first name.")) return false;
	if(!ValidateField(frm.LastName,true,"text","Please enter your last name.")) return false;
	if(!ValidateField(frm.Email,true,"email","Please enter your email address.")) return false;
	if(!ValidateField(frm.Phone,true,"text","Please enter your phone number.")) return false;
	if(!ValidateField(frm.Address,true,"text","Please enter your Address.")) return false;
	if(!ValidateField(frm.Products,true,"check","Please Select a product.")) return false;
	return true;
}

function ContactUs(frm){
	if(!ValidateField(frm.Title,true,"select","Please select your title.")) return false;
	if(!ValidateField(frm.FirstName,true,"text","Please enter your first name.")) return false;
	if(!ValidateField(frm.LastName,true,"text","Please enter your last name.")) return false;
	if(!ValidateField(frm.Email,true,"email","Please enter your email address.")) return false;
	if(!ValidateField(frm.Phone,true,"text","Please enter your phone number.")) return false;
	if(!ValidateField(frm.Subject,true,"text","Please enter your subject.")) return false;
	if(!ValidateField(frm.Message,true,"text","Please enter your message.")) return false;
	return true;
}

function Feedback(frm){
	if(!ValidateField(frm.Title,true,"select","Please select your title.")) return false;
	if(!ValidateField(frm.FirstName,true,"text","Please enter your first name.")) return false;
	if(!ValidateField(frm.LastName,true,"text","Please enter your last name.")) return false;
	if(!ValidateField(frm.Email,true,"email","Please enter your email address.")) return false;
	if(!ValidateField(frm.Phone,true,"text","Please enter your phone number.")) return false;
	if(!ValidateField(frm.Subject,true,"text","Please enter your subject.")) return false;
	if(!ValidateField(frm.Message,true,"text","Please enter your message.")) return false;
	return true;
}

function FaultReport(frm){
	if(!ValidateField(frm.Title,true,"select","Please select your title.")) return false;
	if(!ValidateField(frm.FirstName,true,"text","Please enter your first name.")) return false;
	if(!ValidateField(frm.LastName,true,"text","Please enter your last name.")) return false;
	if(!ValidateField(frm.Email,true,"email","Please enter your email address.")) return false;
	if(!ValidateField(frm.Phone,true,"text","Please enter your phone number.")) return false;
	if(!ValidateField(frm.Description,true,"text","Please enter your fault description.")) return false;
	if(!ValidateField(frm.Type,true,"select","Please a fault type.")) return false;
	return true;
}

function FaultStatus(frm){
	if(!ValidateField(frm.Title,true,"select","Please select your title.")) return false;
	if(!ValidateField(frm.FirstName,true,"text","Please enter your first name.")) return false;
	if(!ValidateField(frm.LastName,true,"text","Please enter your last name.")) return false;
	if(!ValidateField(frm.Email,true,"email","Please enter your email address.")) return false;
	if(!ValidateField(frm.Phone,true,"text","Please enter your phone number.")) return false;
	if(!ValidateField(frm.Comments,true,"text","Please enter your Comments.")) return false;
	return true;
}

function SignupResidential(frm){	

	// Customer Details
	if(!ValidateField(frm.FirstName,true,"text","Please enter your first name.")) return false;
	if(!ValidateField(frm.LastName,true,"text","Please enter your last name.")) return false;
	if(!ValidateField(frm.Email,true,"email","Please enter your email address.")) return false;
	
	// Billing Address
	if(!ValidateField(frm.BillingStreetAddress,true,"text","Please select your billing street address.")) return false;
	if(!ValidateField(frm.BillingCitySuburb,true,"text","Please select your billing city/suburb.")) return false;
	if(!ValidateField(frm.BillingState,true,"select","Please select your billing state.")) return false;
	if(!ValidateField(frm.BillingPostcode,true,"text","Please enter your billing postcode.")) return false;
	if(!ValidateField(frm.BillingPhone,true,"text","Please enter your billing phone.")) return false;
		
	// Email Accounts
	if(frm.Email1.checked && frm.EmailAddress1.value == ''){ alert('Please enter a account name for email address 1.'); return false; }
	
	// Site Address
	if(!ValidateField(frm.SiteStreetAddress,true,"text","Please select your site street address.")) return false;
	if(!ValidateField(frm.SiteCitySuburb,true,"text","Please select your site city/suburb.")) return false;
	if(!ValidateField(frm.SiteState,true,"select","Please select your site state.")) return false;
	if(!ValidateField(frm.SitePostcode,true,"text","Please enter your site postcode.")) return false;
	if(!ValidateField(frm.SiteContact,true,"text","Please enter your site contact.")) return false;
	if(!ValidateField(frm.SitePhone,true,"text","Please enter your site phone.")) return false;

	// T&C's
	if(!frm.TCAgree.checked) { alert('You must agree to the terms and conditions to continue.'); return false; }
	
	// Credit Card
	if(!cardval(frm.CardNumber.value)){
		alert('Please enter a valid credit card number (no spaces).')
		return false;
	}
	if(!ValidateField(frm.CardName,true,"text","Please enter the name on the credit card.")) return false;
	if(!ValidateField(frm.CardVerification,true,"text","Please enter your credit card verification number.")) return false;
	
	return true;
}

function SignupBusiness(frm){
	
	// Company Details
	if(!ValidateField(frm.CompanyName,true,"text","Please enter your company name.")) return false;
	if(!ValidateField(frm.ABN,true,"text","Please enter your ABN.")) return false;	
	
	// Contact Person
	if(!ValidateField(frm.FirstName,true,"text","Please enter your first name.")) return false;
	if(!ValidateField(frm.LastName,true,"text","Please enter your last name.")) return false;
	if(!ValidateField(frm.Email,true,"email","Please enter your email address.")) return false;
	
	// Billing Address
	if(!ValidateField(frm.BillingStreetAddress,true,"text","Please enter your billing street address.")) return false;
	if(!ValidateField(frm.BillingCitySuburb,true,"text","Please enter your billing city/suburb.")) return false;
	if(!ValidateField(frm.BillingState,true,"select","Please select your billing state.")) return false;
	if(!ValidateField(frm.BillingPostcode,true,"text","Please enter your billing postcode.")) return false;
	if(!ValidateField(frm.BillingPhone,true,"text","Please enter your billing phone.")) return false;
	
	// Email Accounts
	if(frm.Email1.checked && frm.EmailAddress1.value == ''){ alert('Please enter a account name for email address 1.'); return false; }

	// Site Address
	if(!ValidateField(frm.SiteStreetAddress,true,"text","Please enter your site street address.")) return false;
	if(!ValidateField(frm.SiteCitySuburb,true,"text","Please enter your site city/suburb.")) return false;
	if(!ValidateField(frm.SiteState,true,"select","Please select your site state.")) return false;
	if(!ValidateField(frm.SitePostcode,true,"text","Please enter your site postcode.")) return false;
	if(!ValidateField(frm.SiteContact,true,"text","Please enter your site contact.")) return false;
	if(!ValidateField(frm.SitePhone,true,"text","Please enter your site phone.")) return false;
	if(!ValidateField(frm.SitePhoneMobile,true,"text","Please enter your site mobile phone.")) return false;

	// Credit Card	
	if(!cardval(frm.CardNumber.value)){
		alert('Please enter a valid credit card number (no spaces).')
		return false;
	}
	
	if(!ValidateField(frm.CardName,true,"text","Please enter the name on the credit card.")) return false;
	if(!ValidateField(frm.CardVerification,true,"text","Please enter your credit card verification number.")) return false;
	
	// T&C's
	if(!frm.TCAgree.checked) { alert('You must agree to the terms and conditions to continue.'); return false; }
	
	return true;

}

// ************************************* //
//          Validation Functions         //
// ************************************* //

function validateMessage(fld, name, msg) {
	if (!msg) msg = 'enter a';
	alert('Please ' + msg + ' value for the ' + name + ' field.');
	fld.focus();
}

function ValidateField(fld, required, type, message) {
	if (type != "date" && type != "datetime" && type != "time" && type != "lookup" && type != "checks")
		var fieldvalue = fld.value.replace(/ $/);
	switch(type) {
		case "text": case "varchar": case "memo": case "halign": case "color": case "html":
			if (fieldvalue == "") {	
				//fld.focus();
				alert(message);
				return false;
			}
			break;
		case "image" :
			var ret = true;
			if (fieldvalue.length < 5)
				ret = false;
			fieldvalue = fieldvalue.toLowerCase();
			if (fieldvalue.substr(fieldvalue.length-4, 4) != ".gif" && fieldvalue.substr(fieldvalue.length-4, 4) != ".jpg" && fieldvalue.substr(fieldvalue.length-5, 5) != ".jpeg")
				ret = false;
				
			if (fieldvalue.indexOf(":") != -1 && fieldvalue.indexOf("?") != -1 && fieldvalue.indexOf("&") != -1 && fieldvalue.indexOf("+") != -1)
				ret = false;
			
			if (!ret) {
				//fld.focus();
				fld.value = "";
				alert(message + "\n- valid image file types are: (gif,jpg,jpeg)\n- file names can NOT contain an of the following characters: (?,&,+,:)");
			}
			return ret;
			break;
		case "email" :
			if (fieldvalue == "" || fieldvalue.length < 6 || fieldvalue.indexOf("@") < 1 || fieldvalue.indexOf("@") > (fieldvalue.length - 5) || fieldvalue.indexOf("@") != fieldvalue.lastIndexOf("@") || fieldvalue.lastIndexOf(".") > (fieldvalue.length - 3)) {
				//fld.focus();
				alert(message + "\n- valid email addresses are formatted (eg): yourname@domain.com");
				return false;
			}
			break;
		case "currency" :
			if (fld.value == "" || fld.value.replace(/[0-9]*[.]?[0-9]?[0-9]?/, "") != "") {
				//fld.focus();
				alert(message + "\n- must be a valid currency entry (no $ sign, max 2 decimal places).");
				return false;
			}
			break;
		case "int" :
			if (fld.value == "" || fld.value.replace(/[0-9]+/, "") != "") {
				//fld.focus();
				alert(message + "\n- must be a valid integer (non-decimal number).");
				return false;
			}
			break;
		case "phone" :
			fld.value = fld.value.replace(/\D+/g, '');
			if(!required && fld.value != "" || required){
				if (fld.value == "" || fld.value.length != 10) {
					// fld.focus();
					alert(message + "\n- must be a valid phone number (Please prefix with area code)");
					return false;
				}
			}
			break;
		case "mobile" :
			fld.value = fld.value.replace(/\D+/g, '');
			if(!required && fld.value != "" || required){
				if (fld.value == "" || fld.value.length != 10) {
					//fld.focus();
					alert(message + "\n- must be a valid mobile number (Please prefix with area code)");
					return false;
				}
			}	
			break;
		case "dec" :
			if (fld.value == "" || fld.value.replace(/[0-9]*[.]?[0-9]*/, "") != "") {
				//fld.focus();
				alert(message + "\n- must be a valid decimal number.");
				return false;
			}
			break;
		case "lookup": case "select":
			if (fld.options[fld.selectedIndex].value == "" || fld.options[fld.selectedIndex].value == "0") {
				//fld.focus();
				alert(message);
				return false;
			}
			break;
		case "checks":
			checkcheck = false;
			if (fld.length == undefined) {
				if (fld.checked)
					checkcheck = true;
			}				
			else {
				for (var i=0; i < fld.length; i++) {
					if (fld[i].checked) {
						checkcheck = true;
						break;
					}
				}
			}
			if (!checkcheck) {
				alert(message + "\n- select at least one item from the list by clicking the box so that a check appears in it.");
				return false;
			}
			break;
		
	}	
	return true;
}


function cardval(CC) { 

  if (CC.length > 16 || CC.length == 0)
	   return (false);

  sum = 0; mul = 1; l = CC.length;
  for (i = 0; i < l; i++) {
	   digit = CC.substring(l-i-1,l-i);
	   tproduct = parseInt(digit ,10)*mul;

	   if (tproduct >= 10)
			sum += (tproduct % 10) + 1;
	   else
			sum += tproduct;
	   if (mul == 1)
			mul++;
	   else
			mul--;
  }

  if ((sum % 10) == 0)
	   return (true);
  else
	   return (false);
}

function DisableButtons() {
	for(var i=0; i < document.getElementsByTagName('input').length; i++) {
		strType = document.getElementsByTagName('input')[i].type.toLowerCase();
		if(strType == 'button' || strType == 'submit'){
			document.getElementsByTagName('input')[i].disabled = true;
		}
	}
}