
// Functions required by Fusion
// Mostly by Javascript kung-fu master Richard Smith
// (c) Copyright Traveltek 2007-2008

// CHANGE THE DAY DROPDONW TO THE RIGHT NUMBER OF DAYS FOR THE SELECTED MONTH
function changedays() {
	var days = new Array("","31","28","31","30","31","30","31","31","30","31","30","31");

	var monthyear = document.getElementById("monthyear").value;
	var datearray = monthyear.split("_");

	if (datearray[0].substr(0,1) == "0") {
		datearray[0] = datearray[0].substr(1,1);
	}

	if (datearray[1] == "2008") {
		days[2]++;
	}

	box = document.getElementById("day");
	var remember = box.value;
	var size = box.options.length;
	for (i = size; i >= 1; i--) {
		box.options[i] = null;
	}

	var padnum;
	for ( i = 1; i <= days[datearray[0]]; i++ ) {
		if (i < 10) { padnum = '0' + i; } else { padnum = i; }
		option = new Option( padnum, padnum );
		box.options[box.length] = option;

		if (padnum == remember) {
			box.options[box.length-1].selected = true;
		}
	}

}

// EMPTY A DROPDOWN
function emptyList( box, start ) {

	if (box) {
		if (box.options) {
			var size = box.options.length;
			var current = box.value;

			for (i = size; i >= start; i--) {
				box.options[i] = null;
			}

			return current;
		}
	}

}

// FILL A DROPDOWN
function fillList( box, arr, selecteditem ) {
	for ( i = 0; i < arr[0].length; i++ ) {
		option = new Option( arr[0][i], arr[1][i] );
		box.options[box.length] = option;
	}
	if (selecteditem) {
		box.value = selecteditem;
	} else {
		box.value = "";
	}
}

// UPDATE THE SHIPS LIST
function updateships( box, selecteditem ) {

	var selectedindex;
	if (!selecteditem) {
		if (document.all) {
			selectedindex = document.getElementById("shipid").selectedIndex;
		} else {
			selecteditem = document.getElementById("shipid").value;
		}
	}

	if (box.value == "") {
		list = allships[0];
		emptyList( document.getElementById("shipid"), 1 );
		fillList( document.getElementById("shipid"), list, selecteditem );
	} else {
		list = ships[box.options[box.selectedIndex].value];
		emptyList( document.getElementById("shipid"), 1 );
		fillList( document.getElementById("shipid"), list, selecteditem );
	}

	if (!selecteditem) {
		document.getElementById("shipid").selectedIndex = selectedindex;
	}

	if (document.getElementById("regionid")) {
		updateregions(box, document.getElementById("regionid").value);
	}
}

// UPDATE THE CRUISE LIST (USED IN EXTRANET UGC SYSTEM)
function updatecruises( box, selecteditem ) {
	if (box.value != "") {
		list = cruises[box.options[box.selectedIndex].value];
		emptyList( document.getElementById("cruiseid"), 1 );
		fillList( document.getElementById("cruiseid"), list, selecteditem );
	}
}

// UPDATE THE REGIONS LIST
function updateregions(box, selecteditem ) {
	if (!selecteditem) {
		selecteditem = '';
	}

	if (box.value == "") {
		list = allregions[0];
		emptyList( document.getElementById("regionid"), 1 );
		fillList( document.getElementById("regionid"), list, selecteditem );
	} else {
		if (box.id == "lineid") {
			list = lineregions[box.options[box.selectedIndex].value];
			emptyList( document.getElementById("regionid"), 1 );
			if (list) {
				fillList( document.getElementById("regionid"), list, selecteditem );
			}
		} else {
			list = shipregions[box.options[box.selectedIndex].value];
			emptyList( document.getElementById("regionid"), 1 );
			if (list) {
				fillList( document.getElementById("regionid"), list, selecteditem );
			}
		}
	}
}

function showhide(item) {

	if (document.getElementById(item).checked == true) {
		document.getElementById(item + 'div').style.display = 'block';
	} else {
		document.getElementById(item + 'div').style.display = 'none';
	}

}

// HIDE SOME CRUISE ADD ON EXTRAS DEPENDING ON WHAT WAS CHOSEN
function hideflightdates() {

	var prehotelchecked;
	var posthotelchecked;

	if (document.getElementById('prehotel')) {
		prehotelchecked = document.getElementById('prehotel').checked;
	} else {
		prehotelchecked = document.getElementById('prehotelholder').value;
		if (prehotelchecked == 1) {
			prehotelchecked = true;
		} else {
			prehotelchecked = false;
		}
	}
	if (document.getElementById('posthotel')) {
		posthotelchecked = document.getElementById('posthotel').checked;
	} else {
		posthotelchecked = document.getElementById('posthotelholder').value;
		if (posthotelchecked == 1) {
			posthotelchecked = true;
		} else {
			posthotelchecked = false;
		}
	}

	if (prehotelchecked == true && posthotelchecked == false) {
		document.getElementById('flightdepdivout').style.display = 'none';
		document.getElementById('flightdepdivouttext').style.display = 'block';
		document.getElementById('flightdepdivin').style.display = 'block';
		document.getElementById('flightdepdivintext').style.display = 'none';

	} else if (prehotelchecked == false && posthotelchecked == true) {
		document.getElementById('flightdepdivout').style.display = 'block';
		document.getElementById('flightdepdivouttext').style.display = 'none';
		document.getElementById('flightdepdivin').style.display = 'none';
		document.getElementById('flightdepdivintext').style.display = 'block';

	} else if (prehotelchecked == false && posthotelchecked == false) {
		document.getElementById('flightdepdivout').style.display = 'block';
		document.getElementById('flightdepdivouttext').style.display = 'none';
		document.getElementById('flightdepdivin').style.display = 'block';
		document.getElementById('flightdepdivintext').style.display = 'none';

	} else if (prehotelchecked == true && posthotelchecked == true) {
		document.getElementById('flightdepdivout').style.display = 'none';
		document.getElementById('flightdepdivouttext').style.display = 'block';
		document.getElementById('flightdepdivin').style.display = 'none';
		document.getElementById('flightdepdivintext').style.display = 'block';

	}

}


// IMAGE BROWSER
var currentimage = 0;
function initimagebrowser() {

	if (images) {
		document.getElementById("image").src = images[currentimage];
		document.getElementById("imagelink").href = bigimages[currentimage];
		document.getElementById("currentimage").innerHTML = currentimage + 1;
		document.getElementById("totalimages").innerHTML = images.length;

		if (captions) {
			document.getElementById("caption").innerHTML = captions[currentimage];
			document.getElementById("imagelink").title = captions[currentimage];
		}
	}

}

function nextimage() {

	if (images) {
		currentimage++;

		if (currentimage > images.length - 1) {
			currentimage = 0;
		}

		document.getElementById("image").src = images[currentimage];
		document.getElementById("imagelink").href = bigimages[currentimage];
		document.getElementById("currentimage").innerHTML = currentimage + 1;
		document.getElementById("totalimages").innerHTML = images.length;

		if (captions) {
			document.getElementById("caption").innerHTML = captions[currentimage];
			document.getElementById("imagelink").title = captions[currentimage];
		}
	}

}

function previmage() {

	if (images) {
		currentimage--;

		if (currentimage < 0) {
			currentimage = images.length - 1;
		}

		document.getElementById("image").src = images[currentimage];
		document.getElementById("imagelink").href = bigimages[currentimage];
		document.getElementById("currentimage").innerHTML = currentimage + 1;
		document.getElementById("totalimages").innerHTML = images.length;

		if (captions) {
			document.getElementById("caption").innerHTML = captions[currentimage];
			document.getElementById("imagelink").title = captions[currentimage];
		}
	}

}

// SWITCH DECK PLAN
function changeplan(sessionkey, imagename, caption) {
	document.getElementById("deckplan").src = '/fusion/displaydeckplan.pl?sessionkey=' + sessionkey + '&image=' + imagename + '&caption=' + caption;
}

// SWITCH TAB INTERFACE
function switchtab(tab) {

	if (tab == 'cabingrades') {
		document.getElementById("cabingrades").style.display = 'block';
		document.getElementById("descrip").style.display = 'none';
		document.getElementById("itinerary").style.display = 'none';
		document.getElementById("shipreviews").style.display = 'none';
		document.getElementById("userimages").style.display = 'none';

		document.getElementById("cabingradesli").className = 'tabon';
		document.getElementById("descripli").className = '';
		document.getElementById("itineraryli").className = '';
		document.getElementById("shipreviewsli").className = '';
		document.getElementById("userimagesli").className = '';

	} else if (tab == 'descrip') {
		document.getElementById("cabingrades").style.display = 'none';
		document.getElementById("descrip").style.display = 'block';
		document.getElementById("itinerary").style.display = 'none';
		document.getElementById("shipreviews").style.display = 'none';
		document.getElementById("userimages").style.display = 'none';

		document.getElementById("cabingradesli").className = '';
		document.getElementById("descripli").className = 'tabon';
		document.getElementById("itineraryli").className = '';
		document.getElementById("shipreviewsli").className = '';
		document.getElementById("userimagesli").className = '';

	} else if (tab == 'itinerary') {
		document.getElementById("cabingrades").style.display = 'none';
		document.getElementById("descrip").style.display = 'none';
		document.getElementById("itinerary").style.display = 'block';
		document.getElementById("shipreviews").style.display = 'none';
		document.getElementById("userimages").style.display = 'none';

		document.getElementById("cabingradesli").className = '';
		document.getElementById("descripli").className = '';
		document.getElementById("itineraryli").className = 'tabon';
		document.getElementById("shipreviewsli").className = '';
		document.getElementById("userimagesli").className = '';

	} else if (tab == 'shipreviews') {
		document.getElementById("cabingrades").style.display = 'none';
		document.getElementById("descrip").style.display = 'none';
		document.getElementById("itinerary").style.display = 'none';
		document.getElementById("shipreviews").style.display = 'block';
		document.getElementById("userimages").style.display = 'none';

		document.getElementById("cabingradesli").className = '';
		document.getElementById("descripli").className = '';
		document.getElementById("itineraryli").className = '';
		document.getElementById("shipreviewsli").className = 'tabon';
		document.getElementById("userimagesli").className = '';

	} else if (tab == 'userimages') {
		document.getElementById("cabingrades").style.display = 'none';
		document.getElementById("descrip").style.display = 'none';
		document.getElementById("itinerary").style.display = 'none';
		document.getElementById("shipreviews").style.display = 'none';
		document.getElementById("userimages").style.display = 'block';

		document.getElementById("cabingradesli").className = '';
		document.getElementById("descripli").className = '';
		document.getElementById("itineraryli").className = '';
		document.getElementById("shipreviewsli").className = '';
		document.getElementById("userimagesli").className = 'tabon';


	}
}

// SWITCH TAB INTERFACE
function switchtab2(tab) {

	if (tab == 'cabingrades') {
		if (document.getElementById("cabingrades")) document.getElementById("cabingrades").style.display = 'block';
		if (document.getElementById("descrip")) document.getElementById("descrip").style.display = 'none';
		if (document.getElementById("itinerary")) document.getElementById("itinerary").style.display = 'none';
		if (document.getElementById("shipreviews")) document.getElementById("shipreviews").style.display = 'none';
		if (document.getElementById("userimages")) document.getElementById("userimages").style.display = 'none';

		if (document.getElementById("cabingradesli")) document.getElementById("cabingradesli").className = 'tabon';
		if (document.getElementById("descripli")) document.getElementById("descripli").className = '';
		if (document.getElementById("itineraryli")) document.getElementById("itineraryli").className = '';
		if (document.getElementById("shipreviewsli")) document.getElementById("shipreviewsli").className = '';
		if (document.getElementById("userimagesli")) document.getElementById("userimagesli").className = '';

		document.location.hash = '#cabingrades-tab';

	} else if (tab == 'descrip') {
		if (document.getElementById("cabingrades")) document.getElementById("cabingrades").style.display = 'none';
		if (document.getElementById("descrip")) document.getElementById("descrip").style.display = 'block';
		if (document.getElementById("itinerary")) document.getElementById("itinerary").style.display = 'none';
		if (document.getElementById("shipreviews")) document.getElementById("shipreviews").style.display = 'none';
		if (document.getElementById("userimages")) document.getElementById("userimages").style.display = 'none';

		if (document.getElementById("cabingradesli")) document.getElementById("cabingradesli").className = '';
		if (document.getElementById("descripli")) document.getElementById("descripli").className = 'tabon';
		if (document.getElementById("itineraryli")) document.getElementById("itineraryli").className = '';
		if (document.getElementById("shipreviewsli")) document.getElementById("shipreviewsli").className = '';
		if (document.getElementById("userimagesli")) document.getElementById("userimagesli").className = '';

		document.location.hash = '#descrip-tab';

	} else if (tab == 'itinerary') {
		if (document.getElementById("cabingrades")) document.getElementById("cabingrades").style.display = 'none';
		if (document.getElementById("descrip")) document.getElementById("descrip").style.display = 'none';
		if (document.getElementById("itinerary")) document.getElementById("itinerary").style.display = 'block';
		if (document.getElementById("shipreviews")) document.getElementById("shipreviews").style.display = 'none';
		if (document.getElementById("userimages")) document.getElementById("userimages").style.display = 'none';

		if (document.getElementById("cabingradesli")) document.getElementById("cabingradesli").className = '';
		if (document.getElementById("descripli")) document.getElementById("descripli").className = '';
		if (document.getElementById("itineraryli")) document.getElementById("itineraryli").className = 'tabon';
		if (document.getElementById("shipreviewsli")) document.getElementById("shipreviewsli").className = '';
		if (document.getElementById("userimagesli")) document.getElementById("userimagesli").className = '';

		document.location.hash = '#itinerary-tab';

	} else if (tab == 'shipreviews') {
		if (document.getElementById("cabingrades")) document.getElementById("cabingrades").style.display = 'none';
		if (document.getElementById("descrip")) document.getElementById("descrip").style.display = 'none';
		if (document.getElementById("itinerary")) document.getElementById("itinerary").style.display = 'none';
		if (document.getElementById("shipreviews")) document.getElementById("shipreviews").style.display = 'block';
		if (document.getElementById("userimages")) document.getElementById("userimages").style.display = 'none';

		if (document.getElementById("cabingradesli")) document.getElementById("cabingradesli").className = '';
		if (document.getElementById("descripli")) document.getElementById("descripli").className = '';
		if (document.getElementById("itineraryli")) document.getElementById("itineraryli").className = '';
		if (document.getElementById("shipreviewsli")) document.getElementById("shipreviewsli").className = 'tabon';
		if (document.getElementById("userimagesli")) document.getElementById("userimagesli").className = '';

		document.location.hash = '#shipreviews-tab';

	} else if (tab == 'userimages') {
		if (document.getElementById("cabingrades")) document.getElementById("cabingrades").style.display = 'none';
		if (document.getElementById("descrip")) document.getElementById("descrip").style.display = 'none';
		if (document.getElementById("itinerary")) document.getElementById("itinerary").style.display = 'none';
		if (document.getElementById("shipreviews")) document.getElementById("shipreviews").style.display = 'none';
		if (document.getElementById("userimages")) document.getElementById("userimages").style.display = 'block';

		if (document.getElementById("cabingradesli")) document.getElementById("cabingradesli").className = '';
		if (document.getElementById("descripli")) document.getElementById("descripli").className = '';
		if (document.getElementById("itineraryli")) document.getElementById("itineraryli").className = '';
		if (document.getElementById("shipreviewsli")) document.getElementById("shipreviewsli").className = '';
		if (document.getElementById("userimagesli")) document.getElementById("userimagesli").className = 'tabon';

		document.location.hash = '#userimages-tab';
	}
}

function changedeckplan(deckid) {

	// Show Deckplan...
	document.getElementById("deckplanimage").src = deckplans[deckid];
	document.getElementById("deckplanname").innerHTML = decknames[deckid];

}

// SHIPS PAGE SWITCH TAB
function switchshiptab(tab) {

	if (tab == 'descrip') {
		document.getElementById("descrip").style.display = 'block';
		document.getElementById("cabintypes").style.display = 'none';
		document.getElementById("facilities").style.display = 'none';
		document.getElementById("shipdecks").style.display = 'none';
		document.getElementById("cruises").style.display = 'none';
		document.getElementById("reviews").style.display = 'none';
		document.getElementById("userphotos").style.display = 'none';

		document.getElementById("descripli").className = 'tabon';
		document.getElementById("cabintypesli").className = '';
		document.getElementById("facilitiesli").className = '';
		document.getElementById("shipdecksli").className = '';
		document.getElementById("cruisesli").className = '';
		document.getElementById("userphotosli").className = '';


	} else if (tab == 'cabintypes') {
		document.getElementById("descrip").style.display = 'none';
		document.getElementById("cabintypes").style.display = 'block';
		document.getElementById("facilities").style.display = 'none';
		document.getElementById("shipdecks").style.display = 'none';
		document.getElementById("cruises").style.display = 'none';
		document.getElementById("reviews").style.display = 'none';
		document.getElementById("userphotos").style.display = 'none';

		document.getElementById("descripli").className = '';
		document.getElementById("cabintypesli").className = 'tabon';
		document.getElementById("facilitiesli").className = '';
		document.getElementById("shipdecksli").className = '';
		document.getElementById("cruisesli").className = '';
		document.getElementById("reviewsli").className = '';
		document.getElementById("userphotosli").className = '';

	} else if (tab == 'facilities') {
		document.getElementById("descrip").style.display = 'none';
		document.getElementById("cabintypes").style.display = 'none';
		document.getElementById("facilities").style.display = 'block';
		document.getElementById("shipdecks").style.display = 'none';
		document.getElementById("cruises").style.display = 'none';
		document.getElementById("reviews").style.display = 'none';
		document.getElementById("userphotos").style.display = 'none';

		document.getElementById("descripli").className = '';
		document.getElementById("cabintypesli").className = '';
		document.getElementById("facilitiesli").className = 'tabon';
		document.getElementById("shipdecksli").className = '';
		document.getElementById("cruisesli").className = '';
		document.getElementById("reviewsli").className = '';
		document.getElementById("userphotosli").className = '';

	} else if (tab == 'shipdecks')	{
		document.getElementById("descrip").style.display = 'none';
		document.getElementById("cabintypes").style.display = 'none';
		document.getElementById("facilities").style.display = 'none';
		document.getElementById("shipdecks").style.display = 'block';
		document.getElementById("cruises").style.display = 'none';
		document.getElementById("reviews").style.display = 'none';
		document.getElementById("userphotos").style.display = 'none';

		document.getElementById("descripli").className = '';
		document.getElementById("cabintypesli").className = '';
		document.getElementById("facilitiesli").className = '';
		document.getElementById("shipdecksli").className = 'tabon';
		document.getElementById("cruisesli").className = '';
		document.getElementById("reviewsli").className = '';
		document.getElementById("userphotosli").className = '';

	} else if (tab == 'cruises') {
		document.getElementById("descrip").style.display = 'none';
		document.getElementById("cabintypes").style.display = 'none';
		document.getElementById("facilities").style.display = 'none';
		document.getElementById("shipdecks").style.display = 'none';
		document.getElementById("cruises").style.display = 'block';
		document.getElementById("reviews").style.display = 'none';
		document.getElementById("userphotos").style.display = 'none';

		document.getElementById("descripli").className = '';
		document.getElementById("cabintypesli").className = '';
		document.getElementById("facilitiesli").className = '';
		document.getElementById("shipdecksli").className = '';
		document.getElementById("cruisesli").className = 'tabon';
		document.getElementById("reviewsli").className = '';
		document.getElementById("userphotosli").className = '';

	} else if (tab == 'reviews') {
		document.getElementById("descrip").style.display = 'none';
		document.getElementById("cabintypes").style.display = 'none';
		document.getElementById("facilities").style.display = 'none';
		document.getElementById("shipdecks").style.display = 'none';
		document.getElementById("cruises").style.display = 'none';
		document.getElementById("reviews").style.display = 'block';
		document.getElementById("userphotos").style.display = 'none';

		document.getElementById("descripli").className = '';
		document.getElementById("cabintypesli").className = '';
		document.getElementById("facilitiesli").className = '';
		document.getElementById("shipdecksli").className = '';
		document.getElementById("cruisesli").className = '';
		document.getElementById("reviewsli").className = 'tabon';
		document.getElementById("userphotosli").className = '';
	} else if (tab == 'userphotos') {
		document.getElementById("descrip").style.display = 'none';
		document.getElementById("cabintypes").style.display = 'none';
		document.getElementById("facilities").style.display = 'none';
		document.getElementById("shipdecks").style.display = 'none';
		document.getElementById("cruises").style.display = 'none';
		document.getElementById("reviews").style.display = 'none';
		document.getElementById("userphotos").style.display = 'block';

		document.getElementById("descripli").className = '';
		document.getElementById("cabintypesli").className = '';
		document.getElementById("facilitiesli").className = '';
		document.getElementById("shipdecksli").className = '';
		document.getElementById("cruisesli").className = '';
		document.getElementById("reviewsli").className = '';
		document.getElementById("userphotosli").className = 'tabon';

	}

}

// SHIPS PAGE SWITCH TAB
function switchlinetab(tab) {

	if (tab == 'descrip') {
		document.getElementById("descrip").style.display = 'block';
		document.getElementById("ships").style.display = 'none';
		document.getElementById("furtherinfo").style.display = 'none';
		document.getElementById("cruises").style.display = 'none';

		document.getElementById("descripli").className = 'tabon';
		document.getElementById("shipsli").className = '';
		document.getElementById("furtherinfoli").className = '';
		document.getElementById("cruisesli").className = '';

	} else if (tab == 'ships') {
		document.getElementById("descrip").style.display = 'none';
		document.getElementById("ships").style.display = 'block';
		document.getElementById("furtherinfo").style.display = 'none';
		document.getElementById("cruises").style.display = 'none';

		document.getElementById("descripli").className = '';
		document.getElementById("shipsli").className = 'tabon';
		document.getElementById("furtherinfoli").className = '';
		document.getElementById("cruisesli").className = '';

	} else if (tab == 'furtherinfo') {
		document.getElementById("descrip").style.display = 'none';
		document.getElementById("ships").style.display = 'none';
		document.getElementById("furtherinfo").style.display = 'block';
		document.getElementById("cruises").style.display = 'none';

		document.getElementById("descripli").className = '';
		document.getElementById("shipsli").className = '';
		document.getElementById("furtherinfoli").className = 'tabon';
		document.getElementById("cruisesli").className = '';

	} else if (tab == 'cruises') {
		document.getElementById("descrip").style.display = 'none';
		document.getElementById("ships").style.display = 'none';
		document.getElementById("furtherinfo").style.display = 'none';
		document.getElementById("cruises").style.display = 'block';

		document.getElementById("descripli").className = '';
		document.getElementById("shipsli").className = '';
		document.getElementById("furtherinfoli").className = '';
		document.getElementById("cruisesli").className = 'tabon';

	}

}

// SHOW AGE SELECTIONS FOR CRUISE CHILDREN
function showcruisechildren() {

	var i;

	if (document.getElementById("childline")) {
		document.getElementById("childline").style.display = 'none';
			for (i = 2; i <= 5; i++) {
				document.getElementById("childtext-" + i).style.display = 'none';
				document.getElementById("childdrop-" + i).style.display = 'none';
			}

	}

	if (document.getElementById("children").value > 0) {
		document.getElementById("childline").style.display = 'block';
		document.getElementById("childages").style.display = 'block';
		for (i = 1; i <= document.getElementById("children").value; i++) {
			if (i > 1) {
				document.getElementById("childtext-" + i).style.display = 'block';
				document.getElementById("childdrop-" + i).style.display = 'block';
			}
		}
	}

}

// ITINERARY CONTINUE. NO IDEA WHY.
function itinerarycontinue(checkProfit) {
	//ok let's check that the prices are enough
	//var price = parseFloat( document.getElementById("profit").innerHTML );

	if (checkProfit == '1' && ( parseFloat( document.getElementById("profit").innerHTML ) < 0 )){
		alert("The basket profit is less than 0.");

	} else if (checkProfit == '2' && ( parseFloat( document.getElementById("manualprice").innerHTML )) < ( parseFloat( document.getElementById("totalprice").innerHTML ))) {
		alert("The basket price is less than selling price.");
		//an alternative would be to get all the item-(\d+) elements, sum them and compare them with the profit =Paolo=
	}
	else {
		var form = document.getElementById("itineraryform");
		if ( form.onsubmit == null || form.onsubmit() ) {
			form.submit();
		}
	}

}

// ON STARTUP
function dpinitlists(setcountry, setdestination, setresort, setdepart, setdepartparent, setdestinationparent, setdepartchild, setdestinationchild) {

	var box = document.getElementById("noinitlists");
	if (box) {
		return;
	}

	if (document.getElementById("country")) {
		if (document.getElementById("country").options) {
			dpfillcountry(setcountry);
		}
	}

	if (document.getElementById("destair")) {
		dpfilldestination(setcountry || document.getElementById("country").value, setdestination);
	}

	if (document.getElementById("resort")) {
		dpfillresort(setdestination || document.getElementById("destair").value, setresort);
	}

	if (document.getElementById("depair")) {
		dpfilldepart(setdestination || document.getElementById("destair").value, setdepart);
	}

	if (document.getElementById("departparent")) {
		dpfillparent("departparent", setdepartparent || document.getElementById("departparent").value);
	}

	if (document.getElementById("departchild")) {
		dpfillchild("departchild",setdepartchild || document.getElementById("departparent").value, "departparent", setdepartparent);
	}

	if (document.getElementById("destinationparent")) {
		dpfillparent("destinationparent", setdestinationparent || document.getElementById("destinationparent").value);
	}

	if (document.getElementById("destinationchild")) {
		dpfillchild("destinationchild", setdestinationchild || document.getElementById("destinationchild").value, "destinationparent", setdestinationparent);
	}

//alert('init ' + document.getElementById("country").value);
//	dpchangecountry();

}

function dpfillparent(boxid, setvalue) {

	var list = new Array();
	if (boxid == 'departparent') {
		list = departureparentlist;

	} else {
		list = destinationparentlist;

	}

	var box = document.getElementById(boxid);
	if (box) {
		if (!box.options) {
			return;
		}
	}

	var was = emptyList(box, 0);

	for (var i = 0; i < list.length; i++) {
		var res = list[i].split(":");

		if (res[1]) {
			option = new Option( res[1], res[0] );
		} else {
			option = new Option( res[0], res[0] );
		}
		box.options[box.length] = option;

	}

	setfield(boxid, setvalue || was);

}

function dpfillchild(boxid, setvalue, parentid, parentvalue) {

	var list = new Array();
	if (parentid == 'departparent') {
		list = departurechildlist;

	} else {
		list = destinationchildlist;

	}

	var box = document.getElementById(boxid);
	if (box) {
		if (!box.options) {
			return;
		}
	}

	if (parentvalue == '') {
		parentvalue = document.getElementById(parentid).options[0].value;
	}

	var was = emptyList(box, 0);

	// Hack in an Any Option
	if (parentid == 'departparent') {
		option = new Option( "[Any Airport]", "" );
	} else {
		option = new Option( "[Any Resort]", "" );
	}

	box.options[box.length] = option;

	for (var i = 0; i < list[parentvalue].length; i++) {
		var res = list[parentvalue][i].split(":");

		if (res[1]) {
			option = new Option( res[1], res[0] );
		} else {
			option = new Option( res[0], res[0] );
		}

		box.options[box.length] = option;

	}

	setfield(boxid, setvalue || was);

}

// WHEN SOMEBODY CHANGES COUNTRY
function dpchangecountry(setcountry, updatelist, setresort) {

	if (updatelist == 'resort') {

		// fill resorts of this country
		dpfillcountryresort(setcountry || document.getElementById("country").value, setresort);

	} else {
		// fill dests of this country
		dpfilldestination(setcountry || document.getElementById("country").value);

		// call dest change
		dpchangedestination();
	}

}

function dpchangedestination() {

	// fill resorts of this dest
	dpfillresort(document.getElementById("destair").value);

	// fill departs of this dest
	dpfilldepart(document.getElementById("destair").value);

}

function dpchangedepair() {

	if (document.getElementById("from") && document.getElementById("depair")) {
		document.getElementById("from").value = document.getElementById("depair").value;
	}

}

function dpchangefrom() {

	if (document.getElementById("from") && document.getElementById("depair")) {
		document.getElementById("depair").value = document.getElementById("from").value;
	}

}

function dpfillcountry(setcountry) {

	var box = document.getElementById("country");
	if (box) {
		if (!box.options) {
			return;
		}
	}

	var was = emptyList(box, 0);

	for (var i = 0; i < countrylist.length; i++) {
		option = new Option( countrylist[i], countrylist[i] );
		box.options[box.length] = option;
	}

	setfield("country", setcountry || was);

}

function dpfilldestination(countrysel, setdestination) {

	var box = document.getElementById("destair");
	if (box) {
		if (!box.options) {
			return;
		}
	}

	var was = emptyList(box, 0);

	// Check to see if the country passed in actually exists within the country list, if not, take whatever
	// is in the country list right tnow
	if (!inlist(countrysel, "country")) {
		countrysel = document.getElementById("country").value || document.getElementById("country").options[0].value;
	}

	for (var i = 0; i < destinationlist[countrysel].length; i++) {
		var res = destinationlist[countrysel][i].split(":");

		if (res[1]) {
			option = new Option( res[1], res[0] );
		} else {
			option = new Option( res[0], res[0] );
		}
		box.options[box.length] = option;
	}

	setfield("destair", setdestination || was);

//	box.value = setdestination || was || box.options[0].value;

}

function dpfillresort(destairsel, setresort) {

	var box = document.getElementById("resort");
	if (box) {
		if (!box.options) {
			return;
		}
	}

	// Check to see if the destair passed in actually exists within the destair list, if not, take whatever
	// is in the destair list right tnow
	if (!inlist(destairsel, "destair")) {
		destairsel = document.getElementById("destair").value || document.getElementById("destair").options[0].value;
	}

	if (box) {
		var was = emptyList(box, 0);

		option = new Option( "[Any Resort]", "" );
		box.options[box.length] = option;

		for (var i = 0; i < resortlist[destairsel].length; i++) {
			var res = resortlist[destairsel][i].split(":");

			if (res[1]) {
				option = new Option( res[1], res[0] );
			} else {
				option = new Option( res[0], res[0] );
			}
			box.options[box.length] = option;
		}

		setfield("resort", setresort || was);

	//	box.value = setresort || was || box.options[0].value;
	}
}

function dpfillcountryresort(countrysel, setresort) {

	var box = document.getElementById("resort");
	if (box) {
		if (!box.options) {
			return;
		}
	}

	if (box) {
		var was = emptyList(box, 0);

		option = new Option( "[Any Resort]", "" );
		box.options[box.length] = option;

		if (countryresortlist[countrysel]) {
			for (var i = 0; i < countryresortlist[countrysel].length; i++) {
				var res = countryresortlist[countrysel][i].split(":");

				if (res[1]) {
					option = new Option( res[1], res[0] );
				} else {
					//option = new Option( res[0], res[0] );
				}
				box.options[box.length] = option;
			}

			setfield("resort", setresort || was);
		}
	}
}

function dpfilldepart(destairsel, setdepart) {

	var box = document.getElementById("depair");
	if (box) {
		if (!box.options) {
			return;
		}
	}

	var box2 = document.getElementById("from");
	var was = emptyList(box, 0);

	// Check to see if the destair passed in actually exists within the destair list, if not, take whatever
	// is in the destair list right tnow
	if (!inlist(destairsel, "destair")) {
		destairsel = document.getElementById("destair").value || document.getElementById("destair").options[0].value;
	}

	if (box) {
		for (var i = 0; i < departlist[destairsel].length; i++) {
			var res = departlist[destairsel][i].split(":");

			if (res[1]) {
				option = new Option( res[1], res[0] );
			} else {
				option = new Option( res[0], res[0] );
			}
			box.options[box.length] = option;
		}

		setfield("depair", setdepart || was);
		setfield("from", setdepart || was);
	}

//	box.value = setdepart || was || box.options[0].value;
//	box2.value = setdepart || was || box2.options[0].value;

}

function dpsearchtype(which) {

	var bytext = document.getElementById("bytext");
	var bydest = document.getElementById("bydest");

	if (bytext && bydest) {
		if (which == 'text') {
			if (bydest) {
				bydest.style.display = 'none';
			}
			if (bytext) {
				bytext.style.display = 'block';
			}

			if (document.getElementById("searchby")) {
				document.getElementById("searchby").value = 'text';
			}
		} else if (which == 'dest') {
			if (bydest) {
				bydest.style.display = 'block';
			}
			if (bytext) {
				bytext.style.display = 'none';
			}

			if (document.getElementById("searchby")) {
				document.getElementById("searchby").value = 'dest';
			}
		}
	}

}

function dpshowmoreoptions() {

	document.getElementById("extraoptionslink").style.display = 'none';
	document.getElementById("extraoptions").style.display = 'block';

}

function setfield(field, val) {

	if (document.getElementById(field)) {
		// Is it a dropdown
		if (document.getElementById(field).options) {
			if (val) {
				if (inlist(val, field)) {
					document.getElementById(field).value = val;
				} else {
					if (document.getElementById(field).options[0]) {
						document.getElementById(field).value = document.getElementById(field).options[0].value;
					}
				}
			} else {
				document.getElementById(field).value = document.getElementById(field).options[0].value;
			}
		} else {
			document.getElementById(field).value = val;
		}
	}

}

function inlist(value, list) {

	var box = document.getElementById(list);

	var inlist = 0;

	if (box) {
		for (var i = 0; i < box.length; i++) {
			if (box.options[i].value == value) {
				inlist = 1;
			}
		}
	}

	return inlist;

}

function roomchange() {

	var box = document.getElementById("roomcount");

	if (box) {
		if (document.getElementById("roomcount").value == 1) {
			if (document.getElementById("room2label")) {
				document.getElementById("room2label").style.display = 'none';
			}
			if (document.getElementById("room2select")) {
				document.getElementById("room2select").style.display = 'none';
			}
			if (document.getElementById("room2select2")) {
				document.getElementById("room2select2").style.display = 'none';
			}
			if (document.getElementById("room2select3")) {
				document.getElementById("room2select3").style.display = 'none';
			}

			if (document.getElementById("room3label")) {
				document.getElementById("room3label").style.display = 'none';
			}
			if (document.getElementById("room3select")) {
				document.getElementById("room3select").style.display = 'none';
			}
			if (document.getElementById("room3select2")) {
				document.getElementById("room3select2").style.display = 'none';
			}
			if (document.getElementById("room3select3")) {
				document.getElementById("room3select3").style.display = 'none';
			}

			if (document.getElementById("room4label")) {
				document.getElementById("room4label").style.display = 'none';
			}
			if (document.getElementById("room4select")) {
				document.getElementById("room4select").style.display = 'none';
			}
			if (document.getElementById("room4select2")) {
				document.getElementById("room4select2").style.display = 'none';
			}
			if (document.getElementById("room4select3")) {
				document.getElementById("room4select3").style.display = 'none';
			}

			if (document.getElementById("room5label")) {
				document.getElementById("room5label").style.display = 'none';
			}
			if (document.getElementById("room5select")) {
				document.getElementById("room5select").style.display = 'none';
			}
			if (document.getElementById("room5select2")) {
				document.getElementById("room5select2").style.display = 'none';
			}
			if (document.getElementById("room5select3")) {
				document.getElementById("room5select3").style.display = 'none';
			}

		} else if (document.getElementById("roomcount").value == 2) {
			if (document.getElementById("room2label")) {
				document.getElementById("room2label").style.display = 'block';
			}
			if (document.getElementById("room2select")) {
				document.getElementById("room2select").style.display = 'block';
			}
			if (document.getElementById("room2select2")) {
				document.getElementById("room2select2").style.display = 'block';
			}
			if (document.getElementById("room2select3")) {
				document.getElementById("room2select3").style.display = 'block';
			}

			if (document.getElementById("room3label")) {
				document.getElementById("room3label").style.display = 'none';
			}
			if (document.getElementById("room3select")) {
				document.getElementById("room3select").style.display = 'none';
			}
			if (document.getElementById("room3select2")) {
				document.getElementById("room3select2").style.display = 'none';
			}
			if (document.getElementById("room3select3")) {
				document.getElementById("room3select3").style.display = 'none';
			}

			if (document.getElementById("room4label")) {
				document.getElementById("room4label").style.display = 'none';
			}
			if (document.getElementById("room4select")) {
				document.getElementById("room4select").style.display = 'none';
			}
			if (document.getElementById("room4select2")) {
				document.getElementById("room4select2").style.display = 'none';
			}
			if (document.getElementById("room4select3")) {
				document.getElementById("room4select3").style.display = 'none';
			}

			if (document.getElementById("room5label")) {
				document.getElementById("room5label").style.display = 'none';
			}
			if (document.getElementById("room5select")) {
				document.getElementById("room5select").style.display = 'none';
			}
			if (document.getElementById("room5select2")) {
				document.getElementById("room5select2").style.display = 'none';
			}
			if (document.getElementById("room5select3")) {
				document.getElementById("room5select3").style.display = 'none';
			}

		} else if (document.getElementById("roomcount").value == 3) {
			if (document.getElementById("room2label")) {
				document.getElementById("room2label").style.display = 'block';
			}
			if (document.getElementById("room2select")) {
				document.getElementById("room2select").style.display = 'block';
			}
			if (document.getElementById("room2select2")) {
				document.getElementById("room2select2").style.display = 'block';
			}
			if (document.getElementById("room2select3")) {
				document.getElementById("room2select3").style.display = 'block';
			}

			if (document.getElementById("room3label")) {
				document.getElementById("room3label").style.display = 'block';
			}
			if (document.getElementById("room3select")) {
				document.getElementById("room3select").style.display = 'block';
			}
			if (document.getElementById("room3select2")) {
				document.getElementById("room3select2").style.display = 'block';
			}
			if (document.getElementById("room3select3")) {
				document.getElementById("room3select3").style.display = 'block';
			}
			if (document.getElementById("room4label")) {
				document.getElementById("room4label").style.display = 'none';
			}
			if (document.getElementById("room4select")) {
				document.getElementById("room4select").style.display = 'none';
			}
			if (document.getElementById("room4select2")) {
				document.getElementById("room4select2").style.display = 'none';
			}
			if (document.getElementById("room4select3")) {
				document.getElementById("room4select3").style.display = 'none';
			}

			if (document.getElementById("room5label")) {
				document.getElementById("room5label").style.display = 'none';
			}
			if (document.getElementById("room5select")) {
				document.getElementById("room5select").style.display = 'none';
			}
			if (document.getElementById("room5select2")) {
				document.getElementById("room5select2").style.display = 'none';
			}
			if (document.getElementById("room5select3")) {
				document.getElementById("room5select3").style.display = 'none';
			}

		} else if (document.getElementById("roomcount").value == 4) {
			if (document.getElementById("room2label")) {
				document.getElementById("room2label").style.display = 'block';
			}
			if (document.getElementById("room2select")) {
				document.getElementById("room2select").style.display = 'block';
			}
			if (document.getElementById("room2select2")) {
				document.getElementById("room2select2").style.display = 'block';
			}
			if (document.getElementById("room2select3")) {
				document.getElementById("room2select3").style.display = 'block';
			}

			if (document.getElementById("room3label")) {
				document.getElementById("room3label").style.display = 'block';
			}
			if (document.getElementById("room3select")) {
				document.getElementById("room3select").style.display = 'block';
			}
			if (document.getElementById("room3select2")) {
				document.getElementById("room3select2").style.display = 'block';
			}
			if (document.getElementById("room3select3")) {
				document.getElementById("room3select3").style.display = 'block';
			}

			if (document.getElementById("room4label")) {
				document.getElementById("room4label").style.display = 'block';
			}
			if (document.getElementById("room4select")) {
				document.getElementById("room4select").style.display = 'block';
			}
			if (document.getElementById("room4select2")) {
				document.getElementById("room4select2").style.display = 'block';
			}
			if (document.getElementById("room4select3")) {
				document.getElementById("room4select3").style.display = 'block';
			}

			if (document.getElementById("room5label")) {
				document.getElementById("room5label").style.display = 'none';
			}
			if (document.getElementById("room5select")) {
				document.getElementById("room5select").style.display = 'none';
			}
			if (document.getElementById("room5select2")) {
				document.getElementById("room5select2").style.display = 'none';
			}
			if (document.getElementById("room5select3")) {
				document.getElementById("room5select3").style.display = 'none';
			}

		} else if (document.getElementById("roomcount").value == 5) {
			if (document.getElementById("room2label")) {
				document.getElementById("room2label").style.display = 'block';
			}
			if (document.getElementById("room2select")) {
				document.getElementById("room2select").style.display = 'block';
			}
			if (document.getElementById("room2select2")) {
				document.getElementById("room2select2").style.display = 'block';
			}
			if (document.getElementById("room2select3")) {
				document.getElementById("room2select3").style.display = 'block';
			}

			if (document.getElementById("room3label")) {
				document.getElementById("room3label").style.display = 'block';
			}
			if (document.getElementById("room3select")) {
				document.getElementById("room3select").style.display = 'block';
			}
			if (document.getElementById("room3select2")) {
				document.getElementById("room3select2").style.display = 'block';
			}
			if (document.getElementById("room3select3")) {
				document.getElementById("room3select3").style.display = 'block';
			}

			if (document.getElementById("room4label")) {
				document.getElementById("room4label").style.display = 'block';
			}
			if (document.getElementById("room4select")) {
				document.getElementById("room4select").style.display = 'block';
			}
			if (document.getElementById("room4select2")) {
				document.getElementById("room4select2").style.display = 'block';
			}
			if (document.getElementById("room4select3")) {
				document.getElementById("room4select3").style.display = 'block';
			}

			if (document.getElementById("room5label")) {
				document.getElementById("room5label").style.display = 'block';
			}
			if (document.getElementById("room5select")) {
				document.getElementById("room5select").style.display = 'block';
			}
			if (document.getElementById("room5select2")) {
				document.getElementById("room5select2").style.display = 'block';
			}
			if (document.getElementById("room5select3")) {
				document.getElementById("room5select3").style.display = 'block';
			}
		}
		if (document.getElementById("childline-1")) {
			showchildren();
		}
	}
}

function showchildren(maxchildren) {
	// added 14/07/08 M.A. needed more than 5 in a room - sometimes
	if (maxchildren == null){
		maxchildren = 5;
	}
	if (document.getElementById("childline-1")) {

		var n;
		var shown = 0;
		for (n = 1; n <= maxchildren; n++) {
			if (document.getElementById("childline-" + n)) {
				document.getElementById("childline-" + n).style.display = 'none';
				for (i = 2; i <= maxchildren; i++) {
					document.getElementById("childtext-" + n + "-" + i).style.display = 'none';
					document.getElementById("childdrop-" + n + "-" + i).style.display = 'none';
				}
			}
		}
		for(n = 1; n <= document.getElementById("roomcount").value; n++) {
			if (document.getElementById("children-" + n).value > 0) {
				document.getElementById("childline-" + n).style.display = 'block';
				document.getElementById("childages").style.display = 'block';
				for (i = 1; i <= document.getElementById("children-" + n).value; i++) {
					if (i > 1) {
						document.getElementById("childtext-" + n + "-" + i).style.display = 'block';
						document.getElementById("childdrop-" + n + "-" + i).style.display = 'block';
					}
				}
				shown = 1;
			}
		}
		if (shown == 0) {
			document.getElementById("childages").style.display = 'none';
		}

	}

	if (document.getElementById("childline")) {

		for (i = 2; i <= maxchildren; i++) {
			document.getElementById("childtext-" + i).style.display = 'none';
			document.getElementById("childdrop-" + i).style.display = 'none';
		}

		for (i = 1; i <= document.getElementById("children").value; i++) {
			if (i > 1) {
				document.getElementById("childtext-" + i).style.display = 'block';
				document.getElementById("childdrop-" + i).style.display = 'block';
			}
		}

		if (document.getElementById("children").value > 0) {
			document.getElementById("childages").style.display = 'block';
		} else {
			document.getElementById("childages").style.display = 'none';
		}

	}

}

function displayflights(sortby) {

	if (!sortby) {
		sortby = 'price';
	}

	if (document.getElementById("flightresults")) {

		var flightresults = "";
		var n;
		for (n = 0; n < flightlist[sortby].length; n++) {
			if (document.getElementById('flight' + flightlist[sortby][n])) {
				flightresults += document.getElementById('flight' + flightlist[sortby][n]).innerHTML;
			}
		}

		document.getElementById('flightresults').innerHTML = flightresults;
	}

	if (document.getElementById("altflightresults")) {
		var altflightresults = "";
		var n;
		for (n = 0; n < altflightlist[sortby].length; n++) {
			if (document.getElementById('flight' + altflightlist[sortby][n])) {
				altflightresults += document.getElementById('flight' + altflightlist[sortby][n]).innerHTML;
			}
		}

		document.getElementById('altflightresults').innerHTML = altflightresults;
	}
}

function changeflightsort(sortby) {

	if (!sortby) {
		sortby = 'price';
	}

	if (document.getElementById("flightsortlist")) {
		var flightsort = "";
		if (sortby == 'price') {
			flightsort += document.getElementById("sortpricehigh").innerHTML;
		} else {
			flightsort += document.getElementById("sortprice").innerHTML;
		}

		if (sortby == 'stops') {
			flightsort += document.getElementById("sortstopshigh").innerHTML;
		} else {
			flightsort += document.getElementById("sortstops").innerHTML;
		}

		if (sortby == 'journeytime') {
			flightsort += document.getElementById("sortjourneytimehigh").innerHTML;
		} else {
			flightsort += document.getElementById("sortjourneytime").innerHTML;
		}

		displayflights(sortby);
		document.getElementById("flightsortlist").innerHTML = flightsort;

	}

//	document.getElementById('sortform').submit();
}

function showsmallimages() {
	document.getElementById("smallimages").style.display = 'block';
	document.getElementById("largeimages").style.display = 'none';
}
function showlargeimages() {
	document.getElementById("smallimages").style.display = 'none';
	document.getElementById("largeimages").style.display = 'block';
}

var bookingstarted = 0;

function submitbooking() {

	var box = document.getElementById("bookbutton");

	if (box) {
		if (bookingstarted) {
			alert("You've already clicked the Make Booking button. Please be patient as we complete the process.");
			return false;
		} else {
			bookingstarted = 1;
			return true;
		}
	}

	return true;

}

function format (expr, decplaces) {

	var str = "" + Math.round(eval(expr) * Math.pow(10, decplaces));

	while (str.length <= decplaces) {
		str = "0" + str;
	}

	var decpoint = str.length - decplaces;

	return str.substring(0, decpoint) + "." + str.substring(decpoint, str.length);

}

function updateprice(cardtype, totalprice, creditcard, debitcard, deposit, creditchargetype, debitchargetype) {
	var chargevalue = 0;
	var depositchargevalue = 0;

	if ((cardtype.value == 'AMX' || cardtype.value == 'VIS' || cardtype.value == 'MSC') && creditcard != 0) {
		if (creditchargetype == 'addition') {
			chargevalue = creditcard;
			displaytotal = parseFloat(totalprice) + +chargevalue;

			if (deposit != 0) {
				displaydeposit = parseFloat(deposit) + +chargevalue;

			}

		} else {
			chargevalue = ((totalprice / 100) * creditcard);
			displaytotal = parseFloat(totalprice) + chargevalue;

			if (deposit != 0) {
				chargevaluedeposit = ((deposit / 100) * creditcard);
				displaydeposit = parseFloat(deposit) + chargevaluedeposit;

			}

		}

	} else if ((cardtype.value == 'DEL' || cardtype.value == 'MAE' || cardtype.value == 'SOL' || cardtype.value == 'ELC') && debitcard != 0) {
		if (debitchargetype == 'addition') {
			chargevalue = debitcard;
			displaytotal = parseFloat(totalprice) + +chargevalue;

			if (deposit != 0) {
				displaydeposit = parseFloat(deposit) + +chargevalue;

			}

		} else {
			chargevalue = ((totalprice / 100) * debitcard);
			displaytotal = parseFloat(totalprice) + chargevalue;

			if (deposit != 0) {
				chargevaluedeposit = ((deposit / 100) * debitcard);
				displaydeposit = parseFloat(deposit) + chargevaluedeposit;

			}

		}

	} else {
		displaytotal = totalprice;
		if (deposit != 0) {
			displaydeposit = deposit;
		}

	}

	document.getElementById("totalprice").innerHTML = format(displaytotal, 2);
	if (document.getElementById("depositprice")) {
		document.getElementById("depositprice").innerHTML = format(displaydeposit, 2);
	}

	if (document.getElementById("cardcharge") && chargevalue != 0) {
		document.getElementById("cardcharge").innerHTML = format(chargevalue, 2);
	}

	if (document.getElementById("depositcardcharge") && depositchargevalue != 0) {
		document.getElementById("depositcardcharge").innerHTML = format(chargevaluedeposit, 2);
	}

}

function updateoneway(option) {

	var one;
	var ret;

	var box = document.getElementById("onewayyes");

	if (!option) {
		if (document.getElementById("onewayyes")) {
			if (document.getElementById("onewayyes").checked) {
				option = "Y";
			} else {
				option = "N";
			}
		}
	}

	if (box) {

		if (!ret && !one) {
			if (option == "Y") {
				document.getElementById("onewayyes").checked = true;
				document.getElementById("onewayno").checked = false;
				ret = 0;
				one = 1;

			} else if (option == "N") {
				document.getElementById("onewayyes").checked = false;
				document.getElementById("onewayno").checked = true;
				ret = 1;
				one = 0;

			} else {
				if (document.getElementById("onewayno")) {
					document.getElementById("onewayno").checked = true;
				}

				if (document.getElementById("onewayyes")) {
					document.getElementById("onewayyes").checked = false;
				}

				ret = 1;
				one = 0;
			}
		}

		if (ret) {
			document.getElementById("returndate").style.display = 'block';
			document.getElementById("returndatetext").style.display = 'none';
		} else {
			document.getElementById("returndate").style.display = 'none';
			document.getElementById("returndatetext").style.display = 'block';
		}

	}

}

function updatejourneyoption(option) {

	if (!option) {
		option = "return";
		if (document.getElementById("journeyoneway")) {
			if (document.getElementById("journeyoneway").checked) {
				option = "oneway";
			
			} 
		}

		if (document.getElementById("journeymulti")) {
			if (document.getElementById("journeymulti").checked) {
				option = "multi";
			
			} 
		}

	}

	if (document.getElementById("journeyoneway")) {
		if (option == "multi") {
			if (document.getElementById("journeymulti")) {
				document.getElementById("journeymulti").checked = true;
			}

			if (document.getElementById("journeyreturn")) {
				document.getElementById("journeyreturn").checked = false;
			}

			if (document.getElementById("journeyoneway")) {
				document.getElementById("journeyoneway").checked = false;
			}

			if (document.getElementById("outdepartlabel")) {
				document.getElementById("outdepartlabel").style.display = 'inline';
			}

			if (document.getElementById("outarrivelabel")) {
				document.getElementById("outarrivelabel").style.display = 'inline';
			}

		} else if (option == "oneway") {
			if (document.getElementById("journeymulti")) {
				document.getElementById("journeymulti").checked = false;
			}

			if (document.getElementById("journeyreturn")) {
				document.getElementById("journeyreturn").checked = false;
			}

			if (document.getElementById("journeyoneway")) {
				document.getElementById("journeyoneway").checked = true;
			}

			if (document.getElementById("outdepartlabel")) {
				document.getElementById("outdepartlabel").style.display = 'none';
			}

			if (document.getElementById("outarrivelabel")) {
				document.getElementById("outarrivelabel").style.display = 'none';
			}

		} else {
			if (document.getElementById("journeymulti")) {
				document.getElementById("journeymulti").checked = false;
			}

			if (document.getElementById("journeyreturn")) {
				document.getElementById("journeyreturn").checked = true;
			}

			if (document.getElementById("journeyoneway")) {
				document.getElementById("journeyoneway").checked = false;
			}

			if (document.getElementById("outdepartlabel")) {
				document.getElementById("outdepartlabel").style.display = 'none';
			}

			if (document.getElementById("outarrivelabel")) {
				document.getElementById("outarrivelabel").style.display = 'none';
			}

		}

		if (option == "oneway") {
			document.getElementById("returndate").style.display = 'none';
			document.getElementById("returndatetext").style.display = 'block';

		} else {	
			document.getElementById("returndate").style.display = 'block';
			document.getElementById("returndatetext").style.display = 'none';		

		}

		if (document.getElementById("openjawjourney")) {
			if (option == "multi") {
				document.getElementById("openjawjourney").style.display = 'block';	

			} else {
				document.getElementById("openjawjourney").style.display = 'none';	

			}	

		}

	}

}

function updatescheduled(option) {

	var box = document.getElementById("scheduledon");

	if (!option) {
		if (document.getElementById("scheduledon")) {
			if (document.getElementById("scheduledon").checked) {
				option = "Y";
			} else {
				option = "N";
			}
		}
	}

	if (box) {
		if (option == "Y") {
			document.getElementById("scheduledon").checked = true;
			document.getElementById("scheduledoff").checked = false;

			document.getElementById("onewayoptions").style.display = 'block';
			document.getElementById("scheduledoptions").style.display = 'block';
			document.getElementById("includescheduledoption").style.display = 'none';

			if (document.getElementById("openjawradio")) {
				document.getElementById("openjawradio").style.display = 'inline';

			}

		} else if (option == "N") {
			document.getElementById("scheduledon").checked = false;
			document.getElementById("scheduledoff").checked = true;

			updatejourneyoption("return");

			document.getElementById("onewayoptions").style.display = 'none';
			document.getElementById("scheduledoptions").style.display = 'none';
			document.getElementById("includescheduledoption").style.display = 'block';

			if (document.getElementById("openjawradio")) {
				document.getElementById("openjawradio").style.display = 'none';

			}

		}

	}

}

function updatescheduled2(option) {

	var box = document.getElementById("scheduledon");

	if (!option) {
		if (document.getElementById("scheduledon")) {
			if (document.getElementById("scheduledon").checked) {
				option = "Y";
			} else {
				option = "N";
			}
		}
	}

	if (box) {
		if (option == "Y") {
			document.getElementById("scheduledon").checked = true;
			document.getElementById("scheduledoff").checked = false;

			document.getElementById("onewayoptions").style.display = 'block';
			document.getElementById("scheduledoptions").style.display = 'block';
			document.getElementById("includescheduledoption").style.display = 'none';

			if (document.getElementById("openjawradio")) {
				document.getElementById("openjawradio").style.display = 'inline';

			}

		} else if (option == "N") {
			document.getElementById("scheduledon").checked = false;
			document.getElementById("scheduledoff").checked = true;

			updatejourneyoption("return");

			document.getElementById("onewayoptions").style.display = 'block';
			document.getElementById("scheduledoptions").style.display = 'none';
			document.getElementById("includescheduledoption").style.display = 'block';

			if (document.getElementById("openjawradio")) {
				document.getElementById("openjawradio").style.display = 'none';

			}

		}

	}

}

function updatemanualprice() {

	var box = document.getElementById("manualprice");

	if (box) {
		var manualprice = 0;
		var manualprofit = 0;
		var n;
		var itinitems = document.getElementById("itinitems").value;
		var somechange = 0;
		var commission = 0;

		for (n = 0; n < itinitems; n++) {
			if (document.getElementById("item-" + n)) {
				var change = parseFloat(document.getElementById("change-" + n).value);
				var originalprice = parseFloat(document.getElementById("originalprice-" + n).value);

				if (isNaN(change) || !change) {
					change = 0;
				}

				manualprice += change + originalprice;

				if (document.getElementById("profitprice-" + n)) {
					profitprice = parseFloat(document.getElementById("profitprice-" + n).value);	
					manualprofit += change + profitprice;
				
				}				

				document.getElementById("item-" + n).value = change + originalprice;

				if ($('nettprice-' + n)) {
					var thisprice = change + originalprice;
					var thisprofit = change + profitprice;

					var profit = formatnumber(thisprofit - parseFloat(document.getElementById("nettprice-" + n).innerHTML), 2);
					var percentage = formatnumber((profit / parseFloat(document.getElementById("nettprice-" + n).innerHTML)) * 100, 2);

					if ($('profit-' + n)) {
						document.getElementById("profit-" + n).innerHTML = profit + " (" + percentage + "%)";
					}

				}

				somechange = 1;

			}

		}

		if (somechange) {
			box.innerHTML = formatnumber(manualprice, 2);

			// Manual Price PP
			document.getElementById("manualpricepp").innerHTML = formatnumber(manualprice / parseInt(document.getElementById("totalguests").value), 2);

			// Profit
			if ($('nettprice')) {
				if (document.getElementById("commissionprice")) {
					commission = parseFloat(document.getElementById("commissionprice").innerHTML);
				}

				var profit = 0;
				if (document.getElementById("totalprofit")) {
					profit = formatnumber(manualprofit - parseFloat(document.getElementById("nettprice").innerHTML) - commission, 2);
				} else {
					profit = formatnumber(manualprice - parseFloat(document.getElementById("nettprice").innerHTML) - commission, 2);
				}

				var percentage = formatnumber((profit / parseFloat(document.getElementById("nettprice").innerHTML)) * 100, 2);

				if ($('profit')) {
					document.getElementById("profit").innerHTML = profit + " (" + percentage + "%)";
				}

				if ($('manualprice')) {
					document.getElementById("manualprice").title = "Profit: " + profit + " (" + percentage + "%)";
				}
			}

			// Manual Price Diff
			var totalprice = parseFloat(document.getElementById("totalprice").innerHTML);
			if (document.getElementById("totalprofit")) {
				totalprice = parseFloat(document.getElementById("totalprofit").innerHTML);
			}
			
			document.getElementById("manualdiff").innerHTML = formatnumber(manualprice - totalprice, 2);
		}

	}

}

function formatnumber(expr, decplaces) {

	var str = "" + Math.round(eval(expr) * Math.pow(10, decplaces));

	while (str.length <= decplaces) {
		str = "0" + str;
	}

	var decpoint = str.length - decplaces;

	return str.substring(0, decpoint) + "." + str.substring(decpoint, str.length);

}

function popupwindow(file,key,widt,heit) {
	var popup;
	popup = window.open(file,key,'status=yes,scrollbars=yes,resizable=yes,width=' + widt + ',height=' + heit);
	popup.focus();

}

// ON STARTUP
var transfers = null;

function transferinitlists( settransfertype, setpickupcountry, setpickup, setdropoffcountry, setdropoff ) {
	if ( document.getElementById("noinitlists") ) { return }
	if ( transfers == null ) { return}

	transferfilltransfertypes(settransfertype);

	var types = (settransfertype || document.getElementById("transfertype").value).split(":");
	transferfillpickupcountry(types[0], types[1], setpickupcountry  );
	transferfillpickup( types[0], types[1],  setpickup);
	transferfilldropoffcountry( types[0], types[1], setdropoffcountry );
	transferfilldropoff( types[0], types[1], setdropoffcountry );

}

function updatetransfers() {
	var types = document.getElementById("transfertype").value.split(":");

	transferfillpickupcountry(types[0], types[1] );
    transferfillpickup( types[0], types[1] );
	transferfilldropoffcountry( types[0], types[1] );
	transferfilldropoff( types[0], types[1] );
}

changetransfertype = updatetransfers;
transferchangepickupcountry = updatetransfers;
transferchangepickup = updatetransfers;
transferchangedropoffcountry = updatetransfers;

function transferfilldropoff( pickuptype, dropofftype, setdropoff ) {

	var box = document.getElementById("dropoff");
	if ( ! ( box && box.options ) ) { return; }

	var was = emptyList(box, 0);

	// Get currently selected country.
	var pickup = document.getElementById("pickup").value;
	var countrysel = document.getElementById("dropoffcountry").value;
	var journeytype = pickuptype + ':' + dropofftype;

	var list = transfers.c.d;

	for ( var i = 0; i < list.length; i++ ) {
		if ( transfers.cid[list[i].n] == countrysel ) {
			list = list[i].v[journeytype];
			for ( var x = 0; x < list.length; x++ ) {
				if ( transfers.journey[pickuptype] && transfers.journey[pickuptype][pickup]
				  && transfers.journey[pickuptype][pickup][dropofftype] && transfers.journey[pickuptype][pickup][dropofftype][list[x]] ) {
					box[box.length] = new Option( transfers.cid[transfers.journey[pickuptype][pickup][dropofftype][list[x]].n],
												  transfers.journey[pickuptype][pickup][dropofftype][list[x]].c );
				}
			}
			break;
		}
	}

	setfield("dropoff", setdropoff || was || box.options[0].value);


}

function transferfilldropoffcountry(pickuptype, dropofftype, setcountry  ) {

	var box = document.getElementById("dropoffcountry");
	if (! ( box && box.options ) ) { return }

	var was = emptyList(box, 0);

	var check = pickuptype + ':' + dropofftype;

	var pickupsel = document.getElementById("pickup").value;
	var journeytype = pickuptype + ':' + dropofftype;

	var list = transfers.c.d;

	for ( var x = 0; x < list.length; x++ ) {
		if ( list[x].v[check] && transfers.journey[pickuptype] && transfers.journey[pickuptype][pickupsel].d[list[x].n] ) {
			box.options[box.length] = new Option( transfers.cid[list[x].n], transfers.cid[list[x].n] );
		}
	}

	setfield("dropoffcountry", setcountry || was);

}

function transferfillpickup( pickuptype, dropofftype, setpickup ) {

	var box = document.getElementById("pickup");
	if ( ! ( box && box.options ) ) { return; }

	var was = emptyList(box, 0);

	// Get currently selected country.
	var countrysel = document.getElementById("pickupcountry").value;
	var journeytype = pickuptype + ':' + dropofftype;

	var list = transfers.c.p;

	for ( var i = 0; i < list.length; i++ ) {
		if ( transfers.cid[list[i].n] == countrysel ) {
			list = list[i].v[journeytype];
			for ( var x = 0; x < list.length; x++ ) {
				if ( transfers.journey[pickuptype] && transfers.journey[pickuptype][list[x]] ) {
					box[box.length] = new Option( transfers.cid[transfers.journey[pickuptype][list[x]].n],
												  transfers.journey[pickuptype][list[x]].c );
				}
			}
			break;
		}
	}

	setfield("pickup", setpickup || was || box.options[0].value);


}

function transferfillpickupcountry(pickuptype, dropofftype, setcountry  ) {

	var box = document.getElementById("pickupcountry");
	if (! ( box && box.options ) ) { return }

	var was = emptyList(box, 0);

	var check = pickuptype + ':' + dropofftype;

	var list = transfers.c.p;

	for ( var x = 0; x < list.length; x++ ) {
		if ( list[x].v[check] ) {
			box.options[box.length] = new Option( transfers.cid[list[x].n], transfers.cid[list[x].n] );
		}
	}

	setfield("pickupcountry", setcountry || was);

}

function transferfilltransfertypes (settransfertype) {

	var box = document.getElementById("transfertype");
	if (! ( box && box.options ) ) { return }

	var was = emptyList(box, 0);

	for ( var x = 0; x < transfers.routes.length; x++ ) {
		box.options[box.length] = new Option( transfers.routes[x][0], transfers.routes[x][1] );
	}

	setfield("transfertype", settransfertype || was || box.options[0].value);

}


function updatefaretype (option) {

	var sin;
	var ret;

	var box = document.getElementById("returndate");

	if (!option) {
		if (document.getElementById("faretypesingle")) {
			if (document.getElementById("faretypesingle").checked) {
				option = "single";
			} else {
				option = "return";
			}
		}
	}

	if (box) {

		if (!ret && !sin) {
			if (option == "single") {
				document.getElementById("faretypesingle").checked = true;
				document.getElementById("faretypereturn").checked = false;
				ret = 0;
				sin = 1;

			} else if (option == "return") {
				document.getElementById("faretypesingle").checked = false;
				document.getElementById("faretypereturn").checked = true;
				ret = 1;
				sin = 0;

			} else {
				if (document.getElementById("faretypereturn")) {
					document.getElementById("faretypereturn").checked = true;
				}

				if (document.getElementById("faretypesingle")) {
					document.getElementById("faretypesingle").checked = false;
				}

				ret = 1;
				sin = 0;
			}
		}

		if (ret) {
			document.getElementById("returndate").style.display = 'block';
			document.getElementById("returndatetext").style.display = 'none';
		} else {
			document.getElementById("returndate").style.display = 'none';
			document.getElementById("returndatetext").style.display = 'block';
		}

	}

}

function readcookie(name) {

	var nameEQ = name + "=";

	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}

	return null;
}

function escapeiframe(frame) {

	if (parent.location.href != document.location.href) {
		parent.location.href = document.location.href;
	}

}

var numb = '0123456789-.';
var lwr = 'abcdefghijklmnopqrstuvwxyz';
var upr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';

function isValid(parm,val) {

	if (parm == "") return true;

	for (i = 0; i < parm.length; i++) {
		if (val.indexOf(parm.charAt(i),0) == -1) {
			return false;
		}
	}

	return true;
}

function isNum(parm) {
	return isValid(parm,numb);
}

function greypage(vis, options) {
	// Pass true to gray out screen, false to ungray
	// options are optional.  This is a JSON object with the following (optional) properties
	// opacity:0-100         // Lower number = less grayout higher = more of a blackout
	// zindex: #             // HTML elements with a higher zindex appear on top of the gray out
	// bgcolor: (#xxxxxx)    // Standard RGB Hex color code
	// grayOut(true, {'zindex':'50', 'bgcolor':'#0000FF', 'opacity':'70'});
	// Because options is JSON opacity/zindex/bgcolor are all optional and can appear
	// in any order.  Pass only the properties you need to set.
	var options = options || {};
	var zindex = options.zindex || 50;
	var opacity = options.opacity || 70;
	var opaque = (opacity / 100);
	var bgcolor = options.bgcolor || '#000000';
	var dark = document.getElementById('greyfilter');

	if (!dark) {
		// The dark layer doesn't exist, it's never been created.  So we'll
		// create it here and apply some basic styles.
		// If you are getting errors in IE see: http://support.microsoft.com/default.aspx/kb/927917
		var tbody = document.getElementsByTagName("body")[0];
		var tnode = document.createElement('div');           // Create the layer.
			tnode.style.position='absolute';                 // Position absolutely
			tnode.style.top='0px';                           // In the top
			tnode.style.left='0px';                          // Left corner of the page
			tnode.style.overflow='hidden';                   // Try to avoid making scroll bars
			tnode.style.display='none';                      // Start out Hidden
			tnode.id='greyfilter';              		     // Name it so we can find it later
		tbody.appendChild(tnode);                            // Add it to the web page
		dark=document.getElementById('greyfilter');			  // Get the object.
	}
	if (vis) {
		// Calculate the page width and height
		if( document.body && ( document.body.scrollWidth || document.body.scrollHeight ) ) {
			var pageWidth = document.body.scrollWidth+'px';
			var pageHeight = document.body.scrollHeight+'px';
		} else if( document.body.offsetWidth ) {
			var pageWidth = document.body.offsetWidth+'px';
			var pageHeight = document.body.offsetHeight+'px';
		} else {
			var pageWidth='100%';
			var pageHeight='100%';
		}
		//set the shader to cover the entire page and make it visible.
		dark.style.opacity=opaque;
		dark.style.MozOpacity=opaque;
		dark.style.filter='alpha(opacity='+opacity+')';
		dark.style.zIndex=zindex;
		dark.style.backgroundColor=bgcolor;
		dark.style.width= pageWidth;
		dark.style.height= pageHeight;
		dark.style.display='block';
	} else {
		dark.style.display='none';
	}
}

var gPopupContainer = null;
var gPopupIsShown = false;
function showpackageflights(resultno) {

//	greypage(true);
//	document.getElementById("fromhotel").value = resultno;
//	document.getElementById("changeflightbox").style.display = 'block';
//	gPopupContainer = document.getElementById("changeflightbox");
//	gPopupIsShown = true;
//
//	centerPopWin(620, 370);

	$('changeflightbox').select('a.flightchoicelink').each(function(item) {
		var url = $H(item.href.toQueryParams());
		url.set('chosenhotel', resultno);
		item.href = '?' + url.toQueryString();
	});

	document.getElementById("changeflightarea_" + resultno).appendChild(document.getElementById("changeflightbox"));

	changepage();

	// Make it show
	document.getElementById("flightlist").style.display = 'block';

	Effect.ScrollTo('hotelid-' + resultno);

}

function hidepackageflights() {

	greypage(false);
	document.getElementById("changeflightbox").style.display = 'none';
	gPopupIsShown = false;

}

var gi = 0;
function centerPopWin(width, height) {
	if (gPopupIsShown == true) {
		if (width == null || isNaN(width)) {
			width = gPopupContainer.offsetWidth;
		}
		if (height == null) {
			height = gPopupContainer.offsetHeight;
		}
		var fullHeight = getViewportHeight();
		var fullWidth = getViewportWidth();
		// scLeft and scTop changes by Thomas Risberg
		var scLeft,scTop;
		if (self.pageYOffset) {
			scLeft = self.pageXOffset;
			scTop = self.pageYOffset;
		} else if (document.documentElement && document.documentElement.scrollTop) {
			scLeft = document.documentElement.scrollLeft;
			scTop = document.documentElement.scrollTop;
		} else if (document.body) {
			scLeft = document.body.scrollLeft;
			scTop = document.body.scrollTop;
		}
//		gPopupMask.style.height = fullHeight + "px";
//		gPopupMask.style.width = fullWidth + "px";
//		gPopupMask.style.top = scTop + "px";
//		gPopupMask.style.left = scLeft + "px";
//		window.status = gPopupMask.style.top + " " + gPopupMask.style.left + " " + gi++;
//		var titleBarHeight = parseInt(document.getElementById("popupTitleBar").offsetHeight, 10);
		var topMargin = scTop + ((fullHeight - height) / 2);
		if (topMargin < 0) { topMargin = 0; }
		gPopupContainer.style.top = topMargin + "px";
		gPopupContainer.style.left =  (scLeft + ((fullWidth - width) / 2)) + "px";
	}
}

//addEvent(window, "resize", centerPopWin);
//window.onscroll = centerPopWin;

/**
 * X-browser event handler attachment and detachment
 * @argument obj - the object to attach event to
 * @argument evType - name of the event - DONT ADD "on", pass only "mouseover", etc
 * @argument fn - function to call
 */
function addEvent(obj, evType, fn){
 if (obj.addEventListener){
    obj.addEventListener(evType, fn, false);
    return true;
 } else if (obj.attachEvent){
    var r = obj.attachEvent("on"+evType, fn);
    return r;
 } else {
    return false;
 }
}

/**
 * Code below taken from - http://www.evolt.org/article/document_body_doctype_switching_and_more/17/30655/ *
 * Modified 4/22/04 to work with Opera/Moz (by webmaster at subimage dot com)
 * Gets the full width/height because it's different for most browsers.
 */
function getViewportHeight() {
	if (window.innerHeight!=window.undefined) return window.innerHeight;
	if (document.compatMode=='CSS1Compat') return document.documentElement.clientHeight;
	if (document.body) return document.body.clientHeight;
	return window.undefined;
}

function getViewportWidth() {
	if (window.innerWidth!=window.undefined) return window.innerWidth;
	if (document.compatMode=='CSS1Compat') return document.documentElement.clientWidth;
	if (document.body) return document.body.clientWidth;
	return window.undefined;
}

function selectpackageflight(url) {

	var fromhotel = document.getElementById("fromhotel").value;

	url = url + "#hotel-" + fromhotel;

	document.location.href = url;

}

function changeuserimage(imageid) {

	if (imageid) {

		var image		= document.getElementById("userimage-" + imageid);

		if (image) {
			if (document.getElementById("userimage-caption")) {
				document.getElementById("userimage-caption").innerHTML	= image.title;
			}

			if (document.getElementById("userimage-author")) {
				document.getElementById("userimage-author").innerHTML	= image.name;
			}

			document.getElementById("userimage-large").src		= image.src;
			document.getElementById("userimage-large").title	= image.title;
		}

		if (currentimage <= 1 && currentpage == 1) {
			document.getElementById("prevuserimage").className	= "userphotonavoff";
		} else {
			document.getElementById("prevuserimage").className	= "userphotonavon";
		}

		if ((totalimages - ((currentpage - 1) * imagesperpage) <= 1) || (currentimage >= totalimages)) {
			document.getElementById("nextuserimage").className	= "userphotonavoff";
		} else {
			document.getElementById("nextuserimage").className	= "userphotonavon";
		}

		if (currentpage <= 1) {
			document.getElementById("prevphotopage").className	= "userphotonavoff";
		} else {
			document.getElementById("prevphotopage").className	= "userphotonavon";
		}

		if ((imagesperpage * currentpage) > totalimages) {
			document.getElementById("nextphotopage").className	= "userphotonavoff";
		} else {
			document.getElementById("nextphotopage").className	= "userphotonavon";
		}
	}

}

function prevuserimage() {

	if (currentimage - 1 >= 1) {
		currentimage = currentimage - 1;
		changeuserimage(currentimage);
	} else {
		if (currentpage > 1) {
			prevphotopage();
		}
	}
}


function nextuserimage() {

	var leftovers = (totalimages % imagesperpage);
	var pagecount = 0;

	if (currentimage + 1 <= imagesperpage) {
		currentimage = currentimage + 1;
		changeuserimage(currentimage);
	} else {
		if (leftovers > 0) {
			pagecount = (totalimages / imagesperpage) + 1;
		} else {
			pagecount = (totalimages / imagesperpage);
		}

		if (currentpage < pagecount) {
			nextphotopage();
		}
	}
}

function prevphotopage() {

	if (currentpage - 1 >= 1) {
		currentpage = currentpage -1;
		changephotopage();
	}

}

function nextphotopage() {

	var leftovers = (totalimages % imagesperpage);
	var pagecount = 0;

	if (leftovers > 0) {
		pagecount = (totalimages / imagesperpage) + 1;
	} else {
		pagecount = (totalimages / imagesperpage);
	}

	if (currentpage + 1 <= pagecount) {
		currentpage = currentpage + 1;
		changephotopage();
	}

}

function changephotopage() {

	var url = document.location.href;

	if (url.match("start")) {
		url = url.replace(/start\=\d+/, "start=" + ((currentpage * imagesperpage) - imagesperpage));
	} else {
		if (url.match("/\?/")) {
			url = url + "&start=" + ((currentpage * imagesperpage) - imagesperpage);
		} else {
			url = url + "?start=" + ((currentpage * imagesperpage) - imagesperpage);
		}
	}

	if (url.match("detailship")) {
		if (url.match("userphotos") == null) {
			url = url + "&tab=userphotos";
		}
	}

	document.location.href = url;
}

function showhotelflights() {

	changepage();

	// Make it show
	document.getElementById("flightlist").style.display = 'block';
	document.getElementById("flightless").style.display = 'block';
	document.getElementById("flightmore").style.display = 'none';

}

function hidehotelflights() {

	// Make it hide
	document.getElementById("flightlist").style.display = 'none';
	document.getElementById("flightless").style.display = 'none';
	document.getElementById("flightmore").style.display = 'block';

}

var flightpageno = 1;
var prevlink = "";
var nextlink = "";
function changepage(direction) {

	var content = "";
	var n;
	var flight;

	if (!prevlink) {
		if (document.getElementById("prevflightpage")) {
			prevlink = document.getElementById("prevflightpage").innerHTML;
		} else {
			prevlink = "";
		}
	}
	if (!nextlink) {
		if (document.getElementById("nextflightpage")) {
			nextlink = document.getElementById("nextflightpage").innerHTML;
		} else {
			nextlink = "";
		}
	}

	if (direction == 'next') {
		flightpageno = flightpageno + 1;
	} else if (direction == 'prev') {
		flightpageno = flightpageno - 1;
	}

	var results = document.getElementById("totalresults").value;

	var pages;
	if ((results / 5) == parseInt(results / 5)) {
		pages = results / 5;
	} else {
		pages = parseInt(results / 5) + 1;
	}

	// We only draw the page numbers if we have more than one page
	if (pages > 1) {
		if (document.getElementById("pageflights")) {
			document.getElementById("pageflights").innerHTML = 'Page ' + flightpageno + ' of ' + pages;
		}

		if (flightpageno > 1) {
			document.getElementById("prevflightpage").innerHTML = '<a href="#" onclick="changepage(\'prev\');return false">' + prevlink + '</a>';
		} else {
			document.getElementById("prevflightpage").innerHTML = prevlink;
		}
		if (flightpageno < pages) {
			document.getElementById("nextflightpage").innerHTML = '<a href="#" onclick="changepage(\'next\');return false">' + nextlink + '</a>';
		} else {
			document.getElementById("nextflightpage").innerHTML = nextlink;
		}

		var start = (flightpageno - 1) * 5;
	} else {
		var start = 0;
	}

	// Draw the first 5
	for (n = start; n <= start + 4; n++) {
		if (document.getElementById("flightchoice_" + n)) {
			flight = document.getElementById("flightchoice_" + n).innerHTML;
			content = content + flight;
		}
	}

	document.getElementById("flightlistchoices").innerHTML = content;

}

function bfsetfield(fieldlist, val) {

	var fields = fieldlist.split(":");
	for (i = 0; i <= fields.length; i++) {
		if (fields[i] == 'address') {
			if (document.getElementById(fields[i])) {
				document.getElementById(fields[i]).innerHTML = val;
			}

		} else {
			setfield(fields[i], val);
		}

	}

}

/*
Usage.

For a table with and ID of 'offertable' to have clases "row_1" and "row_2":
Place the following in the code just after the end fo the table.
<script>stripetable( 'offertable' )</script>

For a table id "offertable" to have classes "bob1" and "bob2":
Place the following in the code just after the end fo the table.
<script>stripetable( 'offertable', 'bob' )</script>
*/
function stripetable( id , prefix ) {
	prefix = prefix ? prefix : 'row_';
	var table = document.getElementById( id );
	if ( table && table.nodeName == 'TABLE' ) {
		var list = table.getElementsByTagName( 'TR' );
		for ( var i = 0, j; j = list[i]; i++ ) {
			var c = j.className ? j.classname + " " + prefix : prefix;
			j.className = c + ( i % 2 ? 2 : 1 );
		}

	}

}

function expandallhotelrows() {

	var tables = $$('img[alt="Expand/Collapse"]');

	for (var index = 0; index < tables.length; index++) {
		var item = tables[index];

		expandhotelrow(item.name);
	}

}

function expandhotelrow(resultno, supplier, accommcode) {

	var short = $('shortrow_' + resultno);
	var long = $('longrow_' + resultno);

	if (short && long) {
		if (long.style.display == 'none') {
			$('hotelid-' + resultno).addClassName('hoteldesctableon');
			$('expandimage_' + resultno).src = '/images/extranet/list-remove.png';
			//$('expandimage_' + resultno).hide();
			//Effect.SlideDown(long, { afterFinish: function() { $('expandimage_' + resultno).show(); } });
			long.show();
		} else {
			//$('expandimage_' + resultno).hide();
			//Effect.Fade(long, { afterFinish: function() { $('hotelid-' + resultno).removeClassName('hoteldesctableon'); $('expandimage_' + resultno).src = '/images/extranet/list-add.png'; $('expandimage_' + resultno).show(); } })

			$('hotelid-' + resultno).removeClassName('hoteldesctableon');
			$('expandimage_' + resultno).src = '/images/extranet/list-add.png';
			long.hide();
		}
	}

	// Content Request
	if ($('description_' + resultno)) {
		if ($('description_' + resultno).innerHTML == "") {
			new Ajax.Request('/fusion/contentlookup.pl?supplier=' + escape(supplier) + '&accommcode=' + escape(accommcode), { method: 'get', onSuccess: function(t) { var json = t.responseText.evalJSON(true); $('description_' + resultno).update(json.description); $('image_' + resultno).src = json.image; } });
		}
	}

}

function expandflightrow(resultno) {

	var moreoptions = $('flightoptions_' + resultno);

	if (moreoptions) {
		if (moreoptions.style.display == 'none') {
			//$('flightid-' + resultno).addClassName('flightdesctableon');
			$('expandimage_' + resultno).src = '/images/extranet/list-remove.png';
			moreoptions.show();
		} else {
			//$('flightid-' + resultno).removeClassName('flightdesctableon');
			$('expandimage_' + resultno).src = '/images/extranet/list-add.png';
			moreoptions.hide();
		}
	}

}

function expandcruiserow(resultno) {

	var leadrow = $('leadrow_' + resultno);
	var gradedesc = $('gradedesc_' + resultno);

	if (leadrow && gradedesc) {
		if (gradedesc.style.display == 'none') {
			$('cruiseid-' + resultno).addClassName('cruisedesctableon');
			$('expandimage_' + resultno).src = '/images/extranet/list-remove.png';
			gradedesc.show();
		} else {
			$('cruiseid-' + resultno).removeClassName('cruisedesctableon');
			$('expandimage_' + resultno).src = '/images/extranet/list-add.png';
			gradedesc.hide();
		}
	}

}

function alternatetablerows(alttag, classname) {

	if (!classname) {
		classname = "hoteldesctablealt";
	}

	var n = 0;
	var tables = $$('table[alt="' + alttag + '"]');
	var values = new Array();

	for (var index = 0; index < tables.length; index++) {
		var item = tables[index];

		values = $(item).id.split(/-/);
		if ($('shortrow_' + values[1])) {
			if ($('shortrow_' + values[1]).visible() == false) {
				continue;
			}
		}

		if (n == 1) {
			item.addClassName(classname);
		} else {
			item.removeClassName(classname);
		}
		n++;
		if (n == 2) {
			n = 0;
		}
	}

}

function cruisealternaterows(alttag, classname) {

	if (!classname) {
		classname = "cruisedesctablealt";
	}

	var n = 0;
	var tables = $$('table[alt="' + alttag + '"]');
	var values = new Array();

	for (var index = 0; index < tables.length; index++) {
		var item = tables[index];

		values = $(item).id.split(/-/);
		if ($('leadrow_' + values[1])) {
			if ($('leadrow_' + values[1]).visible() == false) {
				continue;
			}
		}

		if (n == 1) {
			item.addClassName(classname);
		} else {
			item.removeClassName(classname);
		}
		n++;
		if (n == 2) {
			n = 0;
		}
	}

}

function togglefilter(id) {

	$(id).toggle();

	if ($(id + 'togglers')) {
		$(id + 'togglers').toggle();
	}

	if ($(id).visible()) {
		$(id + 'image').src = '/images/extranet/threadcollapse.png';
	} else {
		$(id + 'image').src = '/images/extranet/threadexpand.png';
		if ($('filterbuttonarea')) {
			$('filterbuttonarea').appendChild($('filterbutton'));
		}
	}


}

function filtercheck(which, id) {

	if (which == 'all') {
		$$('#' + id + ' input').each(function(ele) { ele.checked = true; });
	} else {
		$$('#' + id + ' input').each(function(ele) { ele.checked = false; });
	}


}

function togglecompare(check, type, sessionkey) {

	var url = '/fusion/compare.pl?resultno=' + escape($(check).id) + '&type=' + escape(type) + '&sessionkey=' + escape(sessionkey);

	if ($(check).checked) {
		url += '&action=addcompare';
	} else {
		url += '&action=removecompare';
	}

	var thispage = document.location.href;
	var params = new Hash(thispage.toQueryParams());

	if (params.get("compare") == '1') {
		var values = $(check).id.split(/-/);
		Effect.Fade($('shortrow_' + values[1]), { afterFinish: function() { alternatetablerows('tablerow'); } });
		Effect.Fade($('longrow_' + values[1]));
	}

	var newpage = thispage.replace('&compare=1', '');
	new Ajax.Request(url, { method: 'get', onSuccess:	function(transport) {
															if (transport.responseText == '1') {
																$('compareavailable').show();
															} else {
																if ($('compareavailable')) {
																	$('compareavailable').hide();
																}
																if (params.get("compare") == '1') {
																	document.location.href = newpage;
																}
															}
														}
							});

}

function flexigroupchange(direction) {

	if ($(direction + 'group')) {
		if ($F(direction + 'group') != '') {
			$(direction).disable();
		} else {
			$(direction).enable();
		}
	}
}

function removeresortdest(dest, ele) {

	if ($('resortfilters_' + dest)) {
		if ($(ele).checked) {
			$('resortfilters_' + dest).show();
		} else {
			$('resortfilters_' + dest).hide();
		}
	}

}

function settransferhotel(itemkey, hotelname) {

	// Hide The Manual Entry
	document.getElementById("manualhotel-" + itemkey).style.display = 'none';

	// Set The Value
	document.getElementById("hotelname-" + itemkey).value = hotelname;

}

function settransferflight(itemkey, outflightno, outdepartcode, outdepartdate, outdeparttime, outarrivedate, outarrivetime, inflightno, indepartdate, indeparttime, inarrivedate, inarrivetime) {

	// Hide The Manual Entry
	document.getElementById("manualflight-" + itemkey).style.display = 'none';

	// Set The Values
	document.getElementById("outdepartcode-" + itemkey).value = outdepartcode;
	document.getElementById("outflightno-" + itemkey).value = outflightno;
	document.getElementById("inflightno-" + itemkey).value = inflightno;

	// Outbound Date
	var departdate = outdepartdate.split(/-/);
	document.getElementById("outdepartyear-" + itemkey).value = departdate[0];
	document.getElementById("outdepartmonth-" + itemkey).value = departdate[1];
	document.getElementById("outdepartday-" + itemkey).value = departdate[2];

	var departtime = outdeparttime.split(/:/);
	document.getElementById("outdeparthour-" + itemkey).value = departtime[0];
	document.getElementById("outdepartminute-" + itemkey).value = departtime[1];

	var arrivedate = outarrivedate.split(/-/);
	document.getElementById("outarriveyear-" + itemkey).value = arrivedate[0];
	document.getElementById("outarrivemonth-" + itemkey).value = arrivedate[1];
	document.getElementById("outarriveday-" + itemkey).value = arrivedate[2];

	var arrivetime = outarrivetime.split(/:/);
	document.getElementById("outarrivehour-" + itemkey).value = arrivetime[0];
	document.getElementById("outarriveminute-" + itemkey).value = arrivetime[1];

	// Inbound Date
	var departdate = indepartdate.split(/-/);
	document.getElementById("indepartyear-" + itemkey).value = departdate[0];
	document.getElementById("indepartmonth-" + itemkey).value = departdate[1];
	document.getElementById("indepartday-" + itemkey).value = departdate[2];

	var departtime = indeparttime.split(/:/);
	document.getElementById("indeparthour-" + itemkey).value = departtime[0];
	document.getElementById("indepartminute-" + itemkey).value = departtime[1];

	var arrivedate = inarrivedate.split(/-/);
	document.getElementById("inarriveyear-" + itemkey).value = arrivedate[0];
	document.getElementById("inarrivemonth-" + itemkey).value = arrivedate[1];
	document.getElementById("inarriveday-" + itemkey).value = arrivedate[2];

	var arrivetime = inarrivetime.split(/:/);
	document.getElementById("inarrivehour-" + itemkey).value = arrivetime[0];
	document.getElementById("inarriveminute-" + itemkey).value = arrivetime[1];

}

function hoverfilteron(event) {

	var area = event.element();
	var divarea = $(area).up('div');
	if (!divarea.id) {
		divarea = area;
	}

	if (divarea.id.match(/ticks/)) {
		$(divarea).appendChild($('filterbutton'));
	}

}

function enablehovers() {

	$$('div').each(function(ele) { if (ele.id.match(/ticks/)) { ele.observe('mouseover', hoverfilteron); } });

}

function redirect(codetocruiseid) {
	document.location.href = "/fusion/gotocruise.pl?cid=" + codetocruiseid;
}

function updatedatefromnights() {

	// Let's start with this being the current depdate object
	var depdate = new Date();
	depdate.setFullYear($F('depdate-year'), $F('depdate-month') - 1, $F('depdate-day'));

	// Get it's UNIX time and modify it
	var depunix = depdate.getTime() / 1000;
	depunix += parseInt(($F('helpernights') || 0)) * 86400;
	depdate.setTime(depunix * 1000);

	// And finally set retdate to that
	$('retdate-year').value = depdate.getFullYear();
	$('retdate-month').value = depdate.getMonth() + 1;
	$('retdate-day').value = depdate.getDate();

}

function updatenightsfromdate() {

	// Let's start with this being the current depdate object
	var depdate = new Date();
	depdate.setFullYear($F('depdate-year'), $F('depdate-month') - 1, $F('depdate-day'));

	// And retdate
	var retdate = new Date();
	retdate.setFullYear($F('retdate-year'), $F('retdate-month') - 1, $F('retdate-day'));

	var depunix = depdate.getTime() / 1000;
	var retunix = retdate.getTime() / 1000;

	var nights = parseInt((retunix - depunix) / 86400);

	$('helpernights').value = nights;

}

function disablecreditcard() {
	// If Someone Knows How To Do This Better Then Please Change It :)
	var regexp = /creditcard/;

	if ($F('disablecc') == 1) {
		for (i = 0; i < document.bookingform.elements.length; i++) {
			var fieldname = document.bookingform.elements[i].name;
			if (fieldname.match(regexp) && fieldname != 'creditcard-disablecc') {
				document.bookingform.elements[i].disabled = true;

			}

		}

	} else {
		for (i = 0; i < document.bookingform.elements.length; i++) {
			var fieldname = document.bookingform.elements[i].name;
			if (fieldname.match(regexp) && fieldname != 'creditcard-disablecc') {
				document.bookingform.elements[i].disabled = false;

			}

		}

	}

}

function switchaltdiv(divid, boxid) {
	
	if (document.getElementById(divid)) {
		if (document.getElementById(boxid).checked == true) {
			document.getElementById(divid).style.display = 'block';	
		} else {
			document.getElementById(divid).style.display = 'none';				
		}
		
	}
	
}

function clearcruisedepair() {

	// Function used to clear the value of the cruise departure flight
	// hidden field when using the autocomplete functionality instead of
	// the standard drop downs

	if ($('cruisedepair')) {
		$('cruisedepair').value = '';
	}
}

function setcruisedepair(text, li) {

	// Function used to pull out the id value from an li and set this
	// as the cruise departure airport. Part of the autocomplete functionality

	if ($('cruisedepair')) {
		$('cruisedepair').value = li.id;
	}
}

var rotatebanners = {
	'banners' : [],
	'interval' : null,
	'speed'    : 3,
	'add' : function(id, list ) {
		var t = rotatebanners;

		var target = document.getElementById( id );
		if ( ! target ) { return }
		for ( var i = 0; i < list.length; i++ ) {
			var html = list[i];
			if ( ! html ) { continue }
			var div = document.createElement( 'DIV' );
			div.style.position = 'absolute';
			div.style.top = '0px';
			div.style.left = '0px';
			div.style.display = 'none';
			div.innerHTML = html;
			target.appendChild(div);
		}
		t.banners.push( { 'target' : target, 'current' : 0, 'length' : target.childNodes.length } );
		target.childNodes[0].style.display = 'block';
	},
	'update' : function() {
		var t = rotatebanners;
		for ( var i = 0, obj; obj = t.banners[i]; i++ ) {
			if ( obj.target.childNodes.length < 2 ) { continue }
			$(obj.target.childNodes[obj.current]).fade( t.speed );
			obj.current = obj.current + 1 >= obj.length ? 0 : obj.current+1;
			$(obj.target.childNodes[obj.current]).appear( t.speed );
		}
	},
	'start' : function(seconds,speed) {
		var t = rotatebanners;
		t.stop();
		t.speed = speed ? speed : t.speed;
		t.interval = setInterval( rotatebanners.update, seconds * 1000 );
	},
	'stop' : function() {
		var t = rotatebanners;
		if ( t.interval ) { clearInterval(t.interval) }
		t.interval = null;
	}
};

function updateBasketTimer() {
	var now = new Date().getTime();
	var minutes = Math.floor( ( now - sessionTimer ) / 1000 / 60 );
	$$(timerMatch)[0].innerHTML = minutes + ' minute' + ( minutes != 1 ? 's' : '' );
}

function setupBasketTimer( match ) {
	if ( ! match ) { match = '.sessiontimer b' }

	if ( $$(match) ) {
		window.timerMatch = match;
		var $time = $$(match)[0].innerHTML;
		$time = $time.replace( /[^0-9]+/, '' );

		window.sessionTimer = new Date().getTime() - ( $time * 1000 * 60 );

		updateBasketTimer();

		setInterval( updateBasketTimer, 3000 );
	}
}


function setupdestination( inputid, messagetext ) {

       var target = $(inputid);
       if  (! target ) { return }
       messagetext = messagetext ? messagetext : "Cant find a match for '%SEARCH%'";

       // Get the sid and product from the form
       var sid = target.form.elements.sid.value;
       var product = target.form.elements.product.value;
       if ( ! sid || ! product ) { return }
       // Append locationid element
       var locationid = document.createElement( 'INPUT' );
       locationid.name = 'locationid';
       locationid.type = 'hidden';
       target.form.appendChild( locationid );

       var dim = $(target).getDimensions();
       var pos = $(target).cumulativeOffset();
       var iframe = document.createElement( 'IFRAME' );
       iframe.className = 'autocomplete';
       iframe.style.width = dim.width + 'px';
       iframe.style.top = (pos.top + dim.height) + 'px';
       iframe.style.left = pos.left + 'px';
       iframe.style.border = '0px';
       iframe.tabIndex = -1;
       document.body.appendChild(iframe);
       var list = document.createElement( 'DIV' );
       list.className = 'autocomplete';
       list.style.width = dim.width + 'px';
       list.style.top = (pos.top + dim.height) + 'px';
       list.style.left = pos.left + 'px';
       document.body.appendChild(list);
       target.dest = { sid : sid,
                                       product : product,
                                       locationid : locationid,
                                       options : [],
                                       dropdown : list,
                                       dropdownback : iframe,
                                       cache : {} ,
                                       messagetext : messagetext,
                                       fail : false,
                                       index : 0,
                                       maxlength :6,
                                       clear : false,
                                       set : true,
                                       active : false,
                                       waitingfor : ''
                                        };

       target.setvalue = function() {
                if ( this.dest.active ) {
                    if ( this.dest.options.length > 0 && this.dest.options[this.dest.index] != null ) {
                       this.value = this.dest.options[this.dest.index].name;
                       this.dest.waitingfor = this.value;
                       this.dest.locationid.value = this.dest.options[this.dest.index].id;
                       this.dest.clear = false;
                       this.dest.set = true;
                   } else {
                       if ( this.value ) {
                               message = this.dest.messagetext.replace( /%SEARCH%/, this.value );
                               this.value = message;
                       }
                       this.dest.locationid.value = '';
                       this.dest.clear = true;
                       this.dest.set = false;
                   }
                }

        }

        target.checkvalue = function() {
			if ( this.dest.options.length ) {
				this.value = this.dest.options[this.dest.index].name;
                this.dest.waitingfor = this.value;
                this.dest.locationid.value = this.dest.options[this.dest.index].id;
                this.dest.clear = false;
                this.dest.set = true;
			} else if ( this.dest.cache[this.dest.waitingfor.toUpperCase()] ) {
                var name = '';
                var id = 0;
				for ( var o,i=0; o = this.dest.cache[this.dest.waitingfor.toUpperCase()].results[i]; i++ ) {
					if ( o.name.toUpperCase() == this.dest.waitingfor.toUpperCase() ) {
						name = o.name;
						id = o.id;
						break;
				   }
			   }

               if ( name ) {
                   this.value = name;
                   this.dest.waitingfor = name;
                   this.dest.locationid.value = id;
                   this.dest.clear = false;
                   this.dest.set = true;
               } else {
                   if ( this.dest.waitingfor ) {
                       message = this.dest.messagetext.replace( /%SEARCH%/, this.dest.waitingfor );
                       this.value = message;
                   }
                   this.dest.locationid.value = '';
                   this.dest.clear = true;
                   this.dest.set = false;
              }
           } else if ( ! this.dest.locationid.value ) {
                this.value = "Checking " + this.dest.waitingfor;
                this.dest.locationid.value = '';
           }
       }
       target.setlist = function( results ) {
               if ( results != null && results.search == this.value ) {
                       if ( !! results.fail ) {
                               this.dest.options.length = 0;
                               this.dest.fail = true;
                       } else {
                               this.dest.options = [].concat( results.results );
                               this.dest.fail = false;
                       }
               } else if ( results == null ) {
                       this.dest.options.length = 0;
                       this.dest.fail = false;
               }
       }

       target.drawlist = function() {
       // Draw the list of results.
               if ( this.dest.options.length ) {
                       this.dest.dropdown.innerHTML = '';
                       var height = 0;
                       this.dest.dropdown.style.display = 'block';
                       this.dest.dropdownback.style.display = 'block';
                       for ( var o,i = 0; o = this.dest.options[i]; i++ ) {
                               var div = document.createElement( 'DIV' );
                               div.appendChild( document.createTextNode( o.name ) );
                               this.dest.dropdown.appendChild( div );
                               if ( i < this.dest.maxlength ) {
                                       var dim = $(div).getDimensions();
                                       height += dim.height;
                               }
                               $(div).observe( 'click', function(t,i) { return function(e) {
                               Event.stop(e); t.setindex(i); t.setvalue(); t.setlist();t.drawlist();t.dest.active = false;
                } }(this,i) );
                               $(div).observe( 'mouseover', function(t,i) { return function() { t.setindex(i,false) } }(this,i) );
                       }
                       this.setindex(0);
                       this.dest.dropdown.style.height = height + 'px';
                       this.dest.dropdownback.style.height = height + 'px';
               } else if ( this.dest.fail ) {
                       this.dest.dropdown.innerHTML = '';
                       message = this.dest.messagetext.replace( /%SEARCH%/, target.value );
                       var div = document.createElement( 'DIV' );
                       div.appendChild(document.createTextNode( message ) );
                       this.dest.dropdown.appendChild(div);
                       this.dest.dropdown.style.display = 'block';
                       var dim = $(div).getDimensions();
                       this.dest.dropdown.style.height = dim.height + 'px';
                       this.dest.dropdownback.style.display = 'block';
                       this.dest.dropdownback.style.height = dim.height + 'px';
               } else {
                       this.dest.dropdown.style.display = 'none';
                       this.dest.dropdownback.style.display = 'none';
               }
       }

       target.setindex = function (index,keyboard) {
               if ( this.dest.fail ) { return }
               for ( var div,i =0; div = this.dest.dropdown.childNodes[i]; i++ ) {
                       div.className = i == index ? 'selected' : '';
					   if ( i == index && keyboard ) {
							var dim = $(div).getDimensions();
							div.parentNode.scrollTop = index >= this.dest.maxlength ? ( ( index - this.dest.maxlength + 1 ) * dim.height ) : 0;
					   }
               }
               this.dest.index = index;
       }

       target.changedest = function( ) {
               this.dest.options.length = 0;
               if ( this.dest.clear ) {
                       this.value = '';
                       this.dest.clear = false;
               }
               this.dest.set = false;
               this.drawlist();
               this.dest.waitingfor = this.value;
			   this.dest.locationid.value = '';
               if ( this.dest.cache[this.value.toUpperCase()] ) {
                       this.setlist( { search : this.value, results : this.dest.cache[this.value.toUpperCase()].results,
                                       fail : this.dest.cache[this.value.toUpperCase()].fail } );
                       this.drawlist();
               } else {
                       var url = '/fusion/destinationautocomplete.pl?sid=' + this.dest.sid + '&product=' + this.dest.product + '&search=' + this.value;
                       new Ajax.Request( url, {
                               method : 'get',
                               evalJSON : true,
                               onSuccess : function( target ) {
                                                       return function( transport ) {
                                                               var results = transport.responseJSON;
                                                               if ( results != null && results.search != null && results.results != null ) {
                                                                       target.dest.cache[results.search.toUpperCase()] = results;
                                                                       target.setlist( results );
                                                               } else {
                                                                       target.setlist( );
                                                               }
                                                               if ( ! target.dest.active ) {
                                                                       target.checkvalue( results.search );
                                                               } else {
                                                                       target.drawlist();
                                                               }
                                                       }
                                               }(this),
                               onFailure : function( target ) {
                                                       return function() {
                                                               target.setlist( );
                                                               target.drawlist( );
                                                               }
                                               }(this)
                               }
                       );
               }
       }

       target.checkpress = function(e,up) {
               var keycode = e.keyCode;
               if ( keycode == 38 ) {
                       if ( ( this.dest.index > 0 ) && ! up ) {
                               this.setindex(this.dest.index - 1,true);
                       }
                       Event.stop(e);
                       return false;
               } else if ( keycode == 40 ) {
                       if ( ( this.dest.index < this.dest.dropdown.childNodes.length - 1 ) && ! up ) {
                               this.setindex( this.dest.index + 1,true ) ;
                       }
                       Event.stop(e);
                       return false;
               } else if ( keycode == 13 ) {
                       if ( up ) {
							this.setvalue();
                            this.deactivate();
                       }
                       Event.stop(e);
                       return false;
               } else {
						if ( ! this.dest.active ) {
							this.activate();
						}
                       if ( up ) {
                               this.changedest();
                       }
                       return true;
               }
       }

        target.activate = function( focus ) {
            if ( ! this.active ) {
                this.dest.active = true;
                this.value = this.dest.waitingfor;
                if ( focus ) {
                    this.select();
                }
                this.changedest();
            }
        }

        target.deactivate = function() {
            if ( this.dest.active ) {
                this.dest.active = false;
                this.checkvalue();
                this.setlist();
                this.drawlist()
            }
        }

       $(target).observe( 'keydown', function(t){ return function(e) { return t.checkpress(e,false) } }(target) );
       $(target).observe( 'keyup', function(t){ return function(e) { return t.checkpress(e,true) } }(target) );
       $(target).observe( 'focus', function(t){ return function() { t.activate(true) } }(target) );
       $(target).observe( 'click', function(t){ return function() { t.activate(false) } }(target) );
       $(target).observe( 'blur', function(t) { return function() { setTimeout( function(){ t.deactivate() }, 100 ); } }(target) );

		if ( target.value ) {
			target.changedest();
		} else if ( target.dest.locationsid.value ) {
			target.activate();
			target.deactivate();
		}

}

function updatefield (field, value) {

	if (document.getElementById(field))	{
		if (document.getElementById(field).value == '')	{
			setfield(field, value);
		
		}
	
	}

}

// Sets a search form to be filled in from the details of an enquiry
function setsearchfromenquiry() {

	var cookiestring	= document.cookie;
	var cookies			= cookiestring.split("; ");
	var pairs			= new Array();
	var activeenquiry	= 0;
	var params			= {};

	// Read the active enquiry cookie
	for (var i = 0; i < cookies.length; i++) {
		pairs = cookies[i].split("=");
		if (pairs[0] == 'activeenquiry') {
			activeenquiry = pairs[1];
		}
	}

	// Make an AJAX request to get the details of that enquiry
	params['id'] = activeenquiry;
	new Ajax.Request('/extranet/enquiryjson.pl', {	parameters: params,
													evalJSON: true,		
													onSuccess: function(t) {
														var result = t.responseJSON;
													
														// And set the search form accordingly
														if ($('fromgroup') && result.departure.match(/^\d+$/)) {
															$('fromgroup').value = result.departure;
														} else {
															if ($('from')) {
																$('from').value = result.departure;
															}
														}
														if ($('togroup') && result.destination.match(/^\d+$/)) {
															$('togroup').value = result.destination;
														} else {
															$('to').value = result.destination;
														}
														if ($('nightsfrom') && $('nightsto')) {
															$('nightsfrom').value = result.nights;
															$('nightsto').value = result.nights;
														} else {
															$('nights').value = result.nights;														
														}
														$('depdate-day').value = result.fromdateday;
														$('depdate-month').value = result.fromdatemonth;
														$('depdate-year').value = result.fromdateyear;

														if ($('adults-1')) {
															$('adults-1').value = result.adults;
														} else {
															$('adults').value = result.adults;
														}
														if ($('children-1')) {
															$('children-1').value = result.children;
														} else {
															$('children').value = result.children;
														}
														if ($('infants-1')) {
															$('infants-1').value = result.infants;
														} else {
															$('infants').value = result.infants;
														}
														if ($('roomcount')) {
															$('roomcount').value = 1;
														}
														if ($('plusminus')) {
															$('plusminus').value = result.plusminus;															
														}

														roomchange();
														showchildren();
													} });

}

function setmanualprices(mode) {

	var n;
	var itinitems = document.getElementById("itinitems").value;
	var sessionkey = document.getElementById("sessionkey").value;
	
	var params = {};
	params['sessionkey'] = sessionkey;					
	params['action'] = 'setmanualprice';		
	
	var dosubmit = 0;
	for (n = 0; n < itinitems; n++) {
		if (document.getElementById("change-" + n)) {
			var change = parseFloat(document.getElementById("change-" + n).value);
			if (isNaN(change) || !change) {
				change = 0;
			}				
			
			if (change != 0) {
				params['manualadjust-' + n] = change;		
				dosubmit = 1;

			}
			
		}
		
	}

	if (dosubmit == 1) {
		new Ajax.Request('/fusion/itinerary.pl',	{
														parameters: params,
														method:'get',
														onComplete: function(transport)	{ 
																							if (mode == 'agent') {
																								document.location.href = "/fusion/itinerary.pl?sessionkey=" + sessionkey + "&agentview=1";
																							
																							} else if (mode == 'quote') {
																								document.location.href = "/fusion/addtoquotes.pl?sessionkey=" + sessionkey;																									
																							
																							}

																						},
														evalJS: 'false'
													});		

	} else {
		if (mode == 'agent') {
			document.location.href = "/fusion/itinerary.pl?sessionkey=" + sessionkey + "&agentview=1";
		
		} else if (mode == 'quote') {
			document.location.href = "/fusion/addtoquotes.pl?sessionkey=" + sessionkey;																									
		
		}

	}


}

