function AddPet()
{
	if (document.getElementById("txtPetName").value == "")
	{
		alert("Please enter the pet name");
		document.getElementById("txtPetName").focus();
		return;
	}
	if (document.getElementById("txtPetName").value.indexOf(";") > -1)
	{
		alert("Please enter a valid pet name");
		document.getElementById("txtPetName").focus();
		return;
	}
	
	//Technically these are optional
	if (document.getElementById("cboPetSex").selectedIndex == 0)
	{
		alert("Please select the pet's sex");
		document.getElementById("cboPetSex").focus();
		return;
	}
	if (document.getElementById("cboPetDesexed").selectedIndex == 0)
	{
		alert("Please select whether or not your pet has been desexed");
		document.getElementById("cboPetDesexed").focus();
		return;
	}
	if (document.getElementById("cboPetBreed").selectedIndex == 0)
	{
		alert("Please select the breed that best represents your pet");
		document.getElementById("cboPetBreed").focus();
		return;
	}
	
	
	if (document.getElementById("cboPetAccomodation").selectedIndex == 0)
	{
		alert("Please select the preferred accomodation for your pet");
		document.getElementById("cboPetAccomodation").focus();
		return;
	}
	if (document.getElementById("cboPetSharedAccom").selectedIndex == 0)
	{
		alert("Please select whether or not your pet will be sharing Accomodation");
		document.getElementById("cboPetSharedAccom").focus();
		return;
	}
	
	
	if (document.getElementById("cboPetMedication").selectedIndex == 0)
	{
		alert("Please select whether or not your pet requires medication during their stay");
		document.getElementById("cboPetMedication").focus();
		return;
	}
	
	
	
	var op = document.createElement("OPTION");
	op.text = document.getElementById("txtPetName").value;
	var petName = document.getElementById("txtPetName").value 
	var petSex = document.getElementById("cboPetSex").options[document.getElementById("cboPetSex").selectedIndex].value 
	var petDesexed = document.getElementById("cboPetDesexed").options[document.getElementById("cboPetDesexed").selectedIndex].value 
	var petBreed = document.getElementById("cboPetBreed").options[document.getElementById("cboPetBreed").selectedIndex].value
	var petAccomodation = document.getElementById("cboPetAccomodation").options[document.getElementById("cboPetAccomodation").selectedIndex].value
	var petSharedAccom = document.getElementById("cboPetSharedAccom").options[document.getElementById("cboPetSharedAccom").selectedIndex].value
	
	
	var petMedication = document.getElementById("cboPetMedication").options[document.getElementById("cboPetMedication").selectedIndex].value;
	var petColour = document.getElementById("cboPetColour").options[document.getElementById("cboPetColour").selectedIndex].value;
	
	strNewValue = petName + ";" + petSex + ";" + petDesexed + ";" + petBreed + ";" + petAccomodation + ";" + petMedication + ";" +  petColour + ";" + petSharedAccom;
	
	op.value = strNewValue;
		
	document.getElementById("lstPets").options.add(op);
	
	document.getElementById("txtPetName").value = "";
	document.getElementById("cboPetSex").selectedIndex = 0;
	document.getElementById("cboPetDesexed").selectedIndex = 0;
	document.getElementById("cboPetBreed").selectedIndex = 0;
	document.getElementById("cboPetAccomodation").selectedIndex = 0;
	document.getElementById("cboPetMedication").selectedIndex = 0;
	document.getElementById("cboPetSharedAccom").selectedIndex = 0;
	document.getElementById("cboPetColour").selectedIndex = 0;
	
	CalculateCost(true);
	
	document.getElementById("txtPetName").focus();
}
function RemovePet()
{
	if (document.getElementById("lstPets").selectedIndex > -1)
	{
		//document.getElementById("lstPets").options.remove(document.getElementById("lstPets").selectedIndex);
		document.getElementById("lstPets").remove(document.getElementById("lstPets").selectedIndex);
		//document.getElementById("lstPets").options[document.getElementById("lstPets").selectedIndex] = null;
		CalculateCost(true);
	}
}
function ValidEmail(str) 
{
	var at   = "@";
	var dot  = ".";
	var lat  = str.indexOf(at);
	var lstr = str.length;
	var ldot = str.indexOf(dot);
	
	if (str.indexOf(at)==-1)
	{
		return false;
	}

	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr)
	{
		return false;
	}

	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr)
	{
		return false;
	}

	if (str.indexOf(at,(lat+1))!=-1)
	{
		return false;
	}

	if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot)
	{
		return false;
	}

	if (str.indexOf(dot,(lat+2))==-1)
	{
		return false;
	}
	
	if (str.indexOf(" ")!=-1)
	{
		return false;
	}

 	return true;
}
function ValidForm()
{
	if (document.getElementById("txtFirstName").value == "")
	{
		alert("Please enter your First Name");
		document.getElementById("txtFirstName").focus();
		return false;
	}
	if (document.getElementById("txtLastName").value == "")
	{
		alert("Please enter your Last Name");
		document.getElementById("txtLastName").focus();
		return false;
	}
	if (document.getElementById("txtAddress1").value == "")
	{
		alert("Please enter your Street/PO Box");
		document.getElementById("txtAddress1").focus();
		return false;
	}
	if (document.getElementById("txtAddress3").value == "")
	{
		alert("Please enter your City");
		document.getElementById("txtAddress3").focus();
		return false;
	}
	if (document.getElementById("txtPhoneHm").value == "" && document.getElementById("txtPhoneWk").value == "" && document.getElementById("txtMobile").value == "")
	{
		alert("Please enter at least one contact phone no");
		document.getElementById("txtPhoneHm").focus();
		return false;
	}
	if (document.getElementById("txtEmail").value == "")
	{
		alert("Please enter your email address");
		document.getElementById("txtEmail").focus();
		return false;
	}
	if (!ValidEmail(document.getElementById("txtEmail").value))
	{
		alert("Please enter a valid email address");
		document.getElementById("txtEmail").focus();
		return false;
	}
	if (document.getElementById("txtFromDate").value == "")
	{
		alert("Please enter a from date");
		document.getElementById("txtFromDate").focus();
		return false;
	}
	if (document.getElementById("txtToDate").value == "")
	{
		alert("Please enter a to date");
		document.getElementById("txtToDate").focus();
		return false;
	}
	if (CalculateNumDays() <= 0)
	{
		alert("The to date must be later than the from date");
		document.getElementById("txtFromDate").focus();
	}
	if (document.getElementById("lstPets").options.length == 0)
	{
		alert("Please add at least one pet");
		document.getElementById("lstPets").focus();
		return false;
	}
	if (document.getElementById("txtCostOfStay").value = "")
	{
		alert("Please calculate the cost of the stay before you continue");
		return false;
	}
	
	return true;
}
function SubmitForm()
{
	if (ValidForm())
	{
		var s = "";
		for (var i = 0; i < document.getElementById("lstPets").options.length; i++)
		{
			s += (s == "" ? "" : "|") + document.getElementById("lstPets").options[i].value;
		}
		document.getElementById("pets").value = s;
		
		document.getElementById("lengthofstay").value = "" + CalculateNumDays();
		CalculateCost(true);
		document.getElementById("costofstay").value = document.getElementById("txtCostOfStay").value;
		document.getElementById("discount").value = document.getElementById("txtDiscount").value;
		document.getElementById("discountedcostofstay").value = document.getElementById("txtDiscountedCostOfStay").value;
		
		document.forms[0].submit();
		return true;
	}
	return false;
}
function CalculateCost(silent)
{
	var total = 0;
	var numdays = CalculateNumDays();
	var numpets = 0;
	var discamount = 0;
	var animaltypearr = {'Cat':0,'Dog':0};
	var discdollarperkennel = 2
	if (numdays <= 0)
	{
		if (!silent) alert("The to date must be later than or the same as the from date");
		document.getElementById("txtCostOfStay").value = "";
		return;
	}

	for (var i = 0; i < document.getElementById("lstPets").options.length; i++)
	{
		var arr = document.getElementById("lstPets").options[i].value.split(";");
		var arr2 = arr[3].split(",");
		total += Number(arr2[2].replace("$", ""));
		if (arr[7] == 'Yes'){
			//increment 
			var species = arr2[0];
			if (animaltypearr[species] != null)
				animaltypearr[species]++;
		}
		
		if (arr[2] == 'No') total += 2 	//not desexed animals incur $2 surcharge
		if (arr[5] == 'Yes') total += 1 //Medication required incur $1 surcharge
			
		numpets++;
	}
	
	discamount = Math.floor(animaltypearr["Cat"] / 2) * discdollarperkennel;
	discamount += Math.floor(animaltypearr["Dog"] / 2) * discdollarperkennel;
	
	
	
	if (total > 0)
	{
		var disc = 0;
		
		t = String(total * numdays);
		dt = String((total - discamount) * numdays);
		disc = String(discamount * numdays);
	
		total *= numdays;
		
		//if (numpets >= 3) disc = 5;
		//if (numdays >= 21) disc += 10;
		
		
		
		document.getElementById("txtCostOfStay").value = "$" + total + ".00";
		//var t = String(((total * disc) / 100));
		//var dt = String((total - ((total * disc) / 100)));
		if (t.indexOf(".") > -1) 
		{
			t += "00";
			t = t.substr(0, t.indexOf(".") + 3);
		}
		else
		{
			t += ".00";
		}
		
		if (dt.indexOf(".") > -1) 
		{
			dt += "00";
			dt = dt.substr(0, dt.indexOf(".") + 3);
		}
		else
		{
			dt += ".00";
		}
		
		if (disc.indexOf(".") > -1) 
		{
			disc += "00";
			disc = disc.substr(0, disc.indexOf(".") + 3);
		}
		else
		{
			disc += ".00";
		}
		
		//document.getElementById("txtDiscount").value = "$" + t + " (" + disc + "%)";
		document.getElementById("txtDiscount").value = "$" + disc;
		document.getElementById("txtDiscountedCostOfStay").value = "$" + dt;
	}
	else
	{
		document.getElementById("txtCostOfStay").value = "";
		document.getElementById("txtDiscount").value = "";
		document.getElementById("txtDiscountedCostOfStay").value = "";
	}
}
function CalculateNumDays()
{
	if (document.getElementById("txtFromDate").value != "" && document.getElementById("txtFromDate").value != "")
	{
		var arr = document.getElementById("txtFromDate").value.split("/");
		if (arr.length != 3) return -1;
		if (isNaN(arr[0])) return -1;
		if (isNaN(arr[1])) return -1;
		if (isNaN(arr[2])) return -1;
		var dd = Number(arr[0]);
		var mm = Number(arr[1]);
		var yyyy = Number(arr[2]);
		
		var d1 = new Date(yyyy, (mm - 1), dd);
		
		arr = document.getElementById("txtToDate").value.split("/");
		if (arr.length != 3) return -1;
		if (isNaN(arr[0])) return -1;
		if (isNaN(arr[1])) return -1;
		if (isNaN(arr[2])) return -1;
		dd = Number(arr[0]);
		mm = Number(arr[1]);
		yyyy = Number(arr[2]);
		
		var d2 = new Date(yyyy, (mm - 1), dd);
		
		if (d2 - d1 < 0) return -1;
		
		return ((d2 - d1) / 1000 / 60 / 60 / 24) + 1;
	}
	else
	{
		return -1;
	}
}