function delete_contact(name){
	var isDelete = window.confirm("Are you sure you want to delete contact '" + name +"'");
	return isDelete;
}

function form_login(frm) {
	if(!ValidateField(frm.username,"text","Please enter your username.")) return false;
	if(!ValidateField(frm.password,"text","Please enter your password.")) return false;
	return true;
}

function form_contact(frm) {
	if(!ValidateField(frm.Title,"select","Please select your title.")) return false;
	if(!ValidateField(frm.FirstName,"text","Please enter your first name.")) return false;
	if(!ValidateField(frm.LastName,"text","Please enter your surname.")) return false;
	if(!ValidateField(frm.Email,"email","Please enter your email address.")) return false;
	if(!ValidateField(frm.Phone,"text","Please enter your phone number.")) return false;
	if(!ValidateField(frm.Subject,"text","Please enter your subject.")) return false;
	if(!ValidateField(frm.Message,"text","Please enter your message.")) return false;
	return true;
}

function form_controlpanel_account_contact(frm) {
	if (!ValidateField(frm.firstname, "text", "Please enter a firstname.")) return false;
	if (!ValidateField(frm.lastname, "text", "Please enter a lastname.")) return false;
	if (!ValidateField(frm.email, "email", "Please enter an email address.")) return false;
	if (!ValidateField(frm.contacttype, "multiselect", "Please select a contact type.")) return false;
}

function form_order_account(frm) {
	if (!ValidateField(frm.username, "username", "Your username must be longer than 8 characters.")) return false;
	if (!ValidateField(frm.password, "password", "Your password must be longer than 8 characters.")) return false;
	if(frm.password.value != frm.passwordconfirm.value){
		alert("Your password confirmation does not match.");
		return false;
	}
	if (!ValidateField(frm.firstname, "text", "Please enter a firstname.")) return false;
	if (!ValidateField(frm.lastname, "text", "Please enter a lastname.")) return false;
	if (!ValidateField(frm.userAccountTypeId, "select", "Please select a user type.")) return false;
	if (!ValidateField(frm.address, "text", "Please enter an address.")) return false;
	if (!ValidateField(frm.suburb, "text", "Please enter a suburb.")) return false;
	if (!ValidateField(frm.postcode, "text", "Please enter a postcode.")) return false;
	if (!ValidateField(frm.countryId, "select", "Please select a country.")) return false;
	if (!ValidateField(frm.phone, "text", "Please enter a phone.")) return false;
	if (!ValidateField(frm.email, "email", "Please enter an email address.")) return false;
	return true;
}

function form_controlpanel_account(frm) {
	if (!ValidateField(frm.firstname, "text", "Please enter a firstname.")) return false;
	if (!ValidateField(frm.lastname, "text", "Please enter a lastname.")) return false;
	if (!ValidateField(frm.userAccountTypeId, "select", "Please select a user type.")) return false;
	if (!ValidateField(frm.address, "text", "Please enter an address.")) return false;
	if (!ValidateField(frm.suburb, "text", "Please enter a suburb.")) return false;
	if (!ValidateField(frm.postcode, "text", "Please enter a postcode.")) return false;
	if (!ValidateField(frm.countryId, "select", "Please select a country.")) return false;
	if (!ValidateField(frm.phone, "text", "Please enter a phone.")) return false;
	if (!ValidateField(frm.email, "email", "Please enter an email address.")) return false;
	return true;
}

function form_controlpanel_updatens(frm) {
	if (!ValidateField(frm.ns_name_0, "text", "Please enter a Name for Primary Name Server.")) return false;
	if (!ValidateField(frm.ns_ip_0, "text", "Please enter an IP for Primary Name Server.")) return false;
	if (!ValidateField(frm.ns_name_1, "text", "Please enter a Name for Secondary Name Server.")) return false;
	if (!ValidateField(frm.ns_ip_1, "text", "Please enter an IP for Secondary Name Server.")) return false;
	if (!frm.ns_name_2.value.length) {
		if (!ValidateField(frm.ns_ip_2, "text", "Please enter an IP for Additional Name Server 1."))
			return false;
	}
	if (!frm.ns_name_3.value.length) {
		if (!ValidateField(frm.ns_ip_3, "text", "Please enter an IP for Additional Name Server 2."))
			return false;
	}
	if (!frm.ns_name_4.value.length) {
		if (!ValidateField(frm.ns_ip_4, "text", "Please enter an IP for Additional Name Server 3."))
			return false;
	}
	return true;
}

function form_domainname(frm) {
	if (!ValidateField(frm.existingDomain, "domainname", "Please enter a valid domain name.")) return false;
	return true;
}

function form_domainsearch(frm) {
	if (!ValidateField(frm.domainname, "domainsearch", "Please enter a valid domain name.")) return false;
	return true;
}

function form_domainselect(frm) {
	if (!ValidateField(frm.domains, "checks", "Please select a domain.")) return false;
	return true;
}

function form_paybill(frm) {
	if (!ValidateField(frm.cardTypeId, "select", "Please select a card type.")) return false;
	if (!ValidateField(frm.cardName, "text", "Please enter a card name.")) return false;
	if (!ValidateField(frm.cardNumber, "text", "Please enter a card number.")) return false;
	if (!ValidateCreditCard(frm.cardTypeId.options[frm.cardTypeId.selectedIndex].text, frm.cardNumber.value)) { 
		alert('You must enter a valid credit card number');
		return false;	
	}
	
	// Terms and Conditions check
	if(!frm.terms.checked) { alert('You must agree to the terms and conditions to continue.'); return false; }
	return true;
}



/*******************************************/
/*          Standard Functions             */
/*******************************************/

function validateMessage(fld, msg) {
	if (!msg) msg = 'enter a';
	alert(msg);
	fld.focus();
}

function validateTerms(fld, msg) {
	if (!msg) msg = 'enter a';
	alert(msg);
	fld.focus();
}

function isNumeric(value) {
	value = value.toString();
	if (value.replace(/[0-9]+/, "") == '') {
		return true;
	} else {
		return false;
	}
}

function ValidateCreditCard(type, ccnum) {
   if (type == "Visa") {
      // Visa: length 16, prefix 4, dashes optional.
      var re = /^4\d{3}-?\d{4}-?\d{4}-?\d{4}$/;
   } else if (type == "MasterCard") {
      // Mastercard: length 16, prefix 51-55, dashes optional.
      var re = /^5[1-5]\d{2}-?\d{4}-?\d{4}-?\d{4}$/;
   } else if (type == "American Express") {
      // American Express: length 15, prefix 34 or 37.
      var re = /^3[4,7]\d{13}$/;
   } else if (type == "Diners Club") {
      // Diners: length 14, prefix 30, 36, or 38.
      var re = /^3[0,6,8]\d{12}$/;
   }
   if (!re.test(ccnum)) return false;
   // Remove all dashes for the checksum checks to eliminate negative numbers

   ccnum = ccnum.split("-").join("");
   // Checksum ("Mod 10")
   // Add even digits in even length strings or odd digits in odd length strings.
   var checksum = 0;
   for (var i=(2-(ccnum.length % 2)); i<=ccnum.length; i+=2) {
      checksum += parseInt(ccnum.charAt(i-1));
   }
   // Analyze odd digits in even length strings or even digits in odd length strings.
   for (var i=(ccnum.length % 2) + 1; i<ccnum.length; i+=2) {
      var digit = parseInt(ccnum.charAt(i-1)) * 2;
      if (digit < 10) { checksum += digit; } else { checksum += (digit-9); }
   }
   if ((checksum % 10) == 0) return true; else return false;
}


function ValidateField(fld, 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 "username": case "password":
			if (fieldvalue.length < 8) {	
				fld.focus();
				alert(message);
				return false;
			}
		break;
		case "domainname": 
			if(fieldvalue.replace(/(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})/,"") != '' || fieldvalue == ''){
				fld.focus();
				alert(message);
				return false;
			}
		break;
		case "domainsearch": 
			if(fieldvalue.replace(/[a-zA-Z0-9\-]+/,"") != '' || fieldvalue == ''){
				fld.focus();
				alert(message);
				return false;
			}
		break;
		case "multiselect":
			if (fld.selectedIndex == -1) {
				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.replace(/[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/, '') != '') {
				fld.focus();
				alert(message + "\n- E-mail address needs to be correctly 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 "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;
}
