// Main Javascript for quote_step1.wcs

var strPetType = "";
var strBreedType = "";

function showBreeds(ctl)
{
	var objBreedtype = document.forms[0].elements.breed_type;
	var objBreed = document.getElementById("breed");
	objBreedtype.disabled = false;
	objBreed.disabled = false;
	if (ctl.value.toLowerCase() == "cat" || ctl.value.toLowerCase() == "dog")
	{
		for(var i=0;i<objBreedtype.length;i++)
		{
			objBreedtype[i].disabled = false;
		}
		objBreed.disabled = false;
	}
	else
	{
		for(var i=0;i<objBreedtype.length;i++)
		{
			objBreedtype[i].disabled = true;
		}
		objBreed.disabled = true;
	}

}

function showBreedsOnType()
{
	var animaltypes = document.forms[0].elements.animal_type;
	var objBreedtype = document.forms[0].elements.breed_type;
	var objBreed = document.getElementById("breed");
	for(i=0;i<document.forms[0].elements.animal_type.length;i++)
	{
		if (document.forms[0].elements.animal_type[i].checked && document.forms[0].elements.animal_type[i].value.toLowerCase() == "cat")
		{
			if(objBreedtype[0].checked) {
				objBreed.className = "dropdownDisabled";
				objBreed.disabled = true;
			} else {
				objBreed.disabled = false;
				objBreed.className = "dropdown";
			}
		}
	}

}



function getBreeds(ctl)
{
	if(ctl.value.toLowerCase() == "cat" || ctl.value.toLowerCase() == "dog") {
		showBreeds(ctl);
	}
	var requestUrl = "/getaquote/getBreed.asp?";

	if (ctl.name == "animal_type") {
		strPetType = ctl.value.toLowerCase();

	} else if (ctl.name == "breed_type") {
		strBreedType = ctl.value.toLowerCase();
	}

	if (strPetType == "cat") {
		requestUrl = requestUrl + "PetType=" + strPetType + "&BreedType=all";

	} else if (strPetType != "" && strBreedType != "") {
		requestUrl = requestUrl + "PetType=" + strPetType + "&BreedType=" + strBreedType;
	}

	sendRequest(requestUrl,"GET",HandleResponse,null);
}

function HandleResponse() {
	if(xmlHttp.readyState == 4)	{
		if(xmlHttp.status == 200) {
			populateBreeds(xmlHttp.responseText);

		} else {
			alert("There was a problem retrieving data from the server." );
		}
	}
}

function populateBreeds(breedsNode) {
	var breedList = document.getElementById("breed");
	for (var count = breedList.options.length-1; count >-1; count--) {
		breedList.options[count] = null;
	}
	var breedNodes = breedsNode.split(",");
	var list;
	var optionItem;

	optionItem = new Option("--Choose Breed","--Choose Breed", false, false);
	breedList.options[0] = optionItem;

	for (var count = 0; count < breedNodes.length-1; count++) {
		list = breedNodes[count].split(" ");
		outTxt = "";
		for(var x=1;x<list.length;x++)
			outTxt += list[x]+((x==list.length)?"":" ");
			
		if (list[0] == sBreed) {
			optionItem = new Option( outTxt, list[0],  false, true);
		} else {
			optionItem = new Option( outTxt, list[0],  false, false);
		}
		if (list[0] == "--") {
			optionItem.disabled = true ;
		}

		breedList.options[breedList.length] = optionItem;

	}
}

function checkOther()
{
	var title = document.getElementById("Title");
	if (title.selectedIndex == 5)
	{
		document.getElementById("Other_title").style.display = "block";
	}
	else
	{
		document.getElementById("Other_title").style.display = "none";
	}
}

function checkForm( msgType ) {

	if (msgType != "alert") {
		msgType = "text";
	}

	var errorInfo = new Array("<li>Pet's Name is required.</li>",
							"<li>Type of Pet is required.</li>",
							"<li>Age is required.</li>",
							"<li>We are unable to quote on Cats under 6 weeks old.</li>",
							"<li>We are unable to quote on Dogs under 8 weeks old.</li>",
							"<li>Breed Type is required.</li>",
							"<li>Breed is required.</li>",
							"<li>Postcode is required.</li>",
							"<li>Full postcode is required.</li>",
							"<li>Email address is required.</li>");
	var invalidIndex = [false,false,false,false,false,false,false,false,false,false];
	var isValid = false, invalidType = 1;   //-1:reqiured; 0:invalid format; 1:valid;

	var txtArray = new Array("aname","postcode","email");
	var txtIndex = new Array(0,7,9);
	for (var i=0;i<txtArray.length ;i++ ) {
		isValid = requireTextbox(txtArray[i]);
		if (!isValid) {
			invalidIndex[txtIndex[i]] = true;
			invalidType = -1;
		}
	}

	var animal_type = document.forms[0].elements.animal_type;
	isValid = requireRadioGroup(animal_type);
	if (!isValid) {
		invalidIndex[1] = true;
		invalidType = -1;
	}

	var animalSelectedIndex;
	for (var i = 0;i<animal_type.length;i++) {
		if (animal_type [i].checked) {
			animalSelectedIndex	= i;
			break;
		}
	}

	if (animalSelectedIndex == 0 || animalSelectedIndex == 1) {
		var breed_type = document.forms[0].elements.breed_type;
		isValid = requireRadioGroup(breed_type);
		if (!isValid) {
			invalidIndex[5] = true;
			invalidType = -1;
		}

		if (!(animalSelectedIndex == 0 && document.form1.breed_type[0].checked)) {
			isValid = checkDropdown("breed");
			if (!isValid) {
				invalidIndex[6] = true;
				invalidType = -1;
			} else if (document.forms[0].elements.breed.value == "--") {
				invalidIndex[6] = true;
				invalidType = -1;
			}
		}
	}

	isValid = checkDropdown("years") || checkDropdown("months");
	if (!isValid) {
		invalidIndex[2] = true;
		invalidType = -1;
	}

	isValid = checkAge(false);
	if (!isValid) {
		if (document.form1.animal_type[0].checked) {
			invalidIndex[3] = true;
		}
		if (document.form1.animal_type[1].checked) {
			invalidIndex[4] = true;
		}
		invalidType = 0;
	}

	if (invalidType != 1) {
		if (msgType == "text") {
			writeValidationMessage(invalidType, invalidIndex, errorInfo);
		} else {
			var msgText = "";
			if (invalidType == -1) {
				msgText = "Please enter the following details:\n\n" ;
			} else {
				msgText = "Sorry, you seem to have entered some details incorrectly. Please check and try again.\n\n";
			}
			for (var i=0; i<invalidIndex.length; i++)
			{
				if (invalidIndex[i])
				{
					msgText += errorInfo[i];
				}
			}
			while (msgText.indexOf( "<li>" ) > 0) {
				msgText = msgText.replace( "<li>", "" );
				msgText = msgText.replace( "</li>", "\n" );
			}
			
			alert( msgText );
		}

		return false;
	}

	document.getElementById("errorMessage").style.display = "none";
	document.getElementById("errorDetails").style.display = "none";
	return true;
}


//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function checkYears(lAlert) {
	// cat and over 10 (over age)
	if (document.form1.animal_type[0].checked && document.form1.years.value=='10'){
		if (lAlert==true) {
			alert( "Sorry, your pet exceeds the maximum age limit for new cat policies (9 years 11 months)");
		}
		return false;
	}

	// dogs
	if (document.form1.animal_type[1].checked){

		// specified cross breeds
		if (document.form1.breed_type[0].checked && parseInt(document.form1.breed.value)!=106) {
			if (parseInt(document.form1.years.value,10)>5) {
				if (lAlert==true) {
					alert( "Sorry, your pet exceeds the maximum age limit for new specified breed dog policies (5 years 11 months)" );
				}
				return false;
			}
		}

		// specified breeds
		if (document.form1.breed_type[1].checked) {
			var b = parseInt(document.form1.breed.value,10);

			// American Bulldog, Bernese Mountain Dog, Bullmastiff, Bull Terrier (Miniature), Clumber Spaniel,
			// Deerhound, Dogue de Bordeaux, English Bulldog, English Bull Terrier, Estrela Mountain Dog
			// Giant Schnauzer, Grand Basset Griffon Vendeen, Great Dane, Irish Wolfhound, Mastiff,
			// Miniature English Bull Terrier, Neapolitian Mastiff, Newfoundland, Old English Mastiff,
			// Rottweiler, Scottish Deerhound, Shar Pei, St Bernard
		if (b==314 || b==73 || b==299 || b==89 || b==301
				|| b==121 || b==124 || b==372 || b==126 || b==132 || b==153 || b==157 || b==159 || b==176
				|| b==208 || b==216 || b==224 || b==225 || b==249
				|| b==250 || b==256 || b==259 || b==273 ) {
				if (parseInt(document.form1.years.value,10) > 5) {
					if (lAlert==true) {
						alert( "Sorry, your pet exceeds the maximum age limit for new specified breed dog policies (5 years 11 months)" );
					}
					return false;
				}
			}
		}

		// other dogs
		if (parseInt(document.form1.years.value,10)>7) {
			if (lAlert==true) {
				alert( "Sorry, your pet exceeds the maximum age limit for new dog policies (7 years 11 months).");
			}
			return false;
		}
	}

	return true;
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function checkAge( lAlert ) {
	if (document.form1.years.value=='0' || document.form1.years.value==''){
		// if cat and under 1 month
		if (document.form1.animal_type[0].checked && document.form1.months.value=='0') {
			if (lAlert==true) {
				alert( "We are unable to provide a quote for cats under 6 weeks old.");
			}
			return false;
		}
		// if cat and 1 - 2 months old
		if (document.form1.animal_type[0].checked && document.form1.months.value=='1') {
			if (lAlert==true) {
				alert( "Please note that we are unable to provide a quote for cats under 6 weeks old.");
			}
			return true;
		}
		if (document.form1.animal_type[1].checked && (document.form1.months.value=='0' || document.form1.months.value=='1')) {
			if (lAlert==true) {
				alert( "We are unable to provide a quote for dogs under 8 weeks old.");
			}
			return false;
		}
	}
	return true;
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function fillForm() {
//	document.form1.aname.value = sAname;
	if ( sAnimalType == "CAT" ) {
		document.form1.animal_type[0].checked = true;
		getBreeds(document.form1.animal_type[0]);

	} else if ( sAnimalType == "DOG" ) {
		document.form1.animal_type[1].checked = true;
		getBreeds(document.form1.animal_type[1]);
	}

	if ( sBreedType == "CROSS" ) {
		document.form1.breed_type[0].checked = true;
		getBreeds(document.form1.breed_type[0]);showBreedsOnType();	
	
	} else if ( sBreedType == "PEDIG" ) {
		document.form1.breed_type[1].checked = true;
		getBreeds(document.form1.breed_type[1]);showBreedsOnType();	
	}

	document.form1.years.value = sYears;
	document.form1.months.value = sMonths;

	document.form1.breed.value = sBreed;
//	alert( sBreed );
//	alert( document.form1.breed.length );
//	for (var i=0;i<document.form1.breed.length;i++) {
//		if (document.form1.breed.option[0].value == sBreed){
//			alert("Hi");
//		}
//	}
	
}

