addLoadListener(loadItinerary);

	var loadingImg = "<img src=\"/site/images/loading.gif\" alt=\"Loading, please wait\" />";
	var cruiseDataFeedCode = 0;
	var cruiseDataHasLoaded = false;
	
//	function loadItinerary () {
//		var initString=loadingImg + " <strong>Loading itinerary...</strong>";
//		var o=document.getElementById("itineraryinfo");
//		if((o)&&((o.innerHTML=="")||(o.innerHTML==initString))){
//			//alert(o.innerHTML);
//			o.innerHTML=initString;
//			if ( cruiseDataFeedCode != 0 ) {
//				if (cruiseDataFeedCode.indexOf(",") == 0 )
//					cruiseDataFeedCode = cruiseDataFeedCode.substring(1,cruiseDataFeedCode.length);
//				ids = cruiseDataFeedCode.split(",");
//				if ( document.getElementById("sel_availableDates") ) {
//					if ( document.getElementById("sel_availableDates").selectedIndex > 0 )
//						a = document.getElementById("sel_availableDates").selectedIndex -1;
//					else
//						a = 0;
//				} else {
//					a = 0;
//				}
//				if ( ids[a] ) {
//					var url="/webservices/elleipsisSearch.cgi?action=xmlPackageItineraryAction&packageId="+ids[a];
//					//alert(url);
//					sendAjaxRequest("get", url, "", displayItinerary);
//				//sendAjaxRequest("get", "http://www.cruising.com.au/webservices/elleipsisSearch.cgi?action=xmlPackageItineraryAction&packageId="+id, "", displayItinerary);
//				} else {
//					o.innerHTML = "";
//				}
//			} else {
//				document.getElementById("itineraryinfo").innerHTML = "No itinerary information available";
//			}
//		}
//	}
	function loadItinerary () {
		var initString=loadingImg + " <strong>Loading itinerary...</strong>";
		var o=document.getElementById("itineraryinfo");
		if((o)&&((o.innerHTML=="")||(o.innerHTML==initString))){
			//alert(o.innerHTML);
			o.innerHTML=initString;
			if ( cruiseDataFeedCode != 0 ) {
				if (cruiseDataFeedCode.indexOf(",") == 0 )
					cruiseDataFeedCode = cruiseDataFeedCode.substring(1,cruiseDataFeedCode.length);
				//alert(cruiseDataFeedCode);
				ids = cruiseDataFeedCode.split(",");
				a = 0;
				if ( document.getElementById("sel_availableDates") ) {
					if ( document.getElementById("sel_availableDates").selectedIndex > 0 )
						a = document.getElementById("sel_availableDates").selectedIndex -1;
					else
						a = 0;
				} else if ( document.getElementById("availableDates") ) {
						// this is where we select the ids ordinal that matches the date supplied
						var d = document.getElementById("availableDates").value;
						var dateregex = new RegExp(d, "gi");
						for ( var i = 0; i < ids.length; i++ ) {
							 if ( dateregex.test(ids[i]) ) {
								 a = i; // Pattern found
							 }
						}
				} else {
					// this is where we select the ids ordinal that matches the date supplied
					var d = thisDate;
					var dateregex = new RegExp(d, "gi");
					for ( var i = 0; i < ids.length; i++ ) {
						 if ( dateregex.test(ids[i]) ) {
							 a = i; // Pattern found
						 }
					 }
				}
				if ( ids[a] ) {
					var url="/webservices/elleipsisSearch.cgi?action=xmlPackageItineraryAction&packageId="+ids[a];
					//alert(url);
					sendAjaxRequest("get", url, "", displayItinerary);
				//sendAjaxRequest("get", "http://www.cruising.com.au/webservices/elleipsisSearch.cgi?action=xmlPackageItineraryAction&packageId="+id, "", displayItinerary);
				} else {
					o.innerHTML = "";
				}
			} else {
				document.getElementById("itineraryinfo").innerHTML = "No itinerary information available";
			}
		}
	}
	
	function displayItinerary ( success, xml ) {
		if (success) {
			var displayStr = "";
			var packageId = xml.getElementsByTagName("packageId");
			var packnode = packageId[0].firstChild.nodeValue;
			var packageIdarr = packnode.split("|");
			var cruisedepdate = packageIdarr[2].split("-");
			cruisedepdate = (cruisedepdate[2]-0) + "/" + cruisedepdate[1] + "/" + cruisedepdate[0];
			var nodes = xml.getElementsByTagName("node");
			if ( nodes.length > 0 ) {
				displayStr += "<table cellpadding=\"0\" cellspacing=\"1\" border=\"0\" class=\"tableformat\">" + 
					"<tr valign=\"top\">" + 
						"<th>Day</th>" + 
						"<th>Destination</th>" + 
						"<th colspan=\"2\">Arrival Date/Time</th>" + 
						"<th colspan=\"2\">Departure Date/Time</th>" + 
					"</tr>";
			}
			var lastarrive = "";
			var lastdepart = "";
			var daycnt = 1;
			for ( var i=0; i<nodes.length; i++ ) {
				//var day = "";
				var city = "";
				var arriveTime = "";
				
				var departDate = "";
				var departTime = "";
				
				var dateValue1 = "";
				var dateValue2 = "";
				//if ( nodes[i].getElementsByTagName("nodeId")[0] && nodes[i].getElementsByTagName("nodeId")[0].firstChild ) 
				//	day = nodes[i].getElementsByTagName("nodeId")[0].firstChild.nodeValue;
				var nodeDescription = "";
				try { nodeDescription = nodes[i].getElementsByTagName("nodeDescription")[0].firstChild.nodeValue; } 
				catch(e) {}

				var arrivalCityName = "";
				try { arrivalCityName = nodes[i].getElementsByTagName("arrivalCityName")[0].firstChild.nodeValue; } 
				catch(e) {}

				if (nodeDescription != "") {
					if (city != "") { city += " / "; }
					city += nodeDescription;
				}
//				if (arrivalCityName != "") {
//					if (city != "") { city += " / "; }
//					city += arrivalCityName;
//				}

				if ( nodes[i].getElementsByTagName("arrivalDate")[0] && nodes[i].getElementsByTagName("arrivalDate")[0].firstChild ) {
					arriveDate = nodes[i].getElementsByTagName("arrivalDate")[0].firstChild.nodeValue;
					dates = arriveDate.split("-");
					arriveDate = (dates[2]-0) + "/" + dates[1] + "/" + dates[0];
				}
				if ( nodes[i].getElementsByTagName("arrivalTime")[0] && nodes[i].getElementsByTagName("arrivalTime")[0].firstChild ) 
					arriveTime = nodes[i].getElementsByTagName("arrivalTime")[0].firstChild.nodeValue;
				if ( nodes[i].getElementsByTagName("departureDate")[0] && nodes[i].getElementsByTagName("departureDate")[0].firstChild ) {
					departDate = nodes[i].getElementsByTagName("departureDate")[0].firstChild.nodeValue;
					dates = departDate.split("-");
					departDate = (dates[2]-0) + "/" + dates[1] + "/" + dates[0];
					//if ( i==1) alert(departDate);
				}
				if ( nodes[i].getElementsByTagName("departureTime")[0] && nodes[i].getElementsByTagName("departureTime")[0].firstChild ) 
					departTime = nodes[i].getElementsByTagName("departureTime")[0].firstChild.nodeValue;
				if ( arriveDate == "1/01/0001" ) {
					arriveDate = "-";
					arriveTime = "-";
				}
				if ( departDate == "1/01/0001" || city == "" ) { 
					departDate = "-";
					departTime = "-";
				}
				//if ( i==1) alert(departDate);
				// Scott Swabey - 31/03/07
				// Determine day number from change in arrive/departure dates
				if ( nodes[i].getElementsByTagName("departureDate")[0] && nodes[i].getElementsByTagName("departureDate")[0].firstChild && i==0) {
					if ( nodes[i].getElementsByTagName("departureDate")[0].firstChild.nodeValue== "0001-01-01" ) {
						departDate = cruisedepdate;
						departTime = "-";
					}
				}
				
				if ( arriveDate!=="-" && departDate=="-" ) {
					dateValue1 = arriveDate;
					dateValue2 = lastdepart;
					
					diffdays = daysDiff(dateValue1, dateValue2);
					daycnt += diffdays;
				} else if ( arriveDate!=="-" && lastdepart=="" ) {
					dateValue1 = arriveDate;
					dateValue2 = departDate;
					
					diffdays = daysDiff(dateValue1, dateValue2);
					daycnt += diffdays;
				} else if ( arriveDate!=="-" && lastdepart!=="" && lastdepart!=="-" ) {
					dateValue1 = arriveDate;
					dateValue2 = lastdepart;
					
					diffdays = daysDiff(dateValue1, dateValue2);
					daycnt += diffdays;
				} else if ( arriveDate=="-" && departDate!=="-" ) {
					dateValue1 = departDate;
					dateValue2 = lastdepart;
					
					diffdays = daysDiff(dateValue1, dateValue2);
					daycnt += diffdays;
				}  else if ( arriveDate=="-" && departDate=="-" ) {
					daycnt = daycnt;
				}
				
				if ( arriveDate == "-" && arriveTime == "-" && departDate == "-" && departTime == "-" && city.length ==0 ) {
						displayStr += "<tr valign=\"top\">" + 
						"<td style=\"text-align: right;\"></td>" + 
						"<td style=\"text-align: left;\" colspan=\"5\">At Sea</td>" + 
					"</tr>";//" + day + "("+daycnt+")
				
				} else {
					displayStr += "<tr valign=\"top\">" + 
							"<td style=\"text-align: right;\">";// + day;
					if ( ( arriveDate !== "-" || departDate !== "-" ) || ( i==nodes.length-1 ) ) {
						if ( i==nodes.length-1 && (arriveDate == "-" && departDate == "-" && daycnt>1) )
							daycnt ++;
						displayStr += daycnt;
					}				
					displayStr += "</td>" + 
							"<td>" + properCase(city) + "</td>" + 
							"<td style=\"text-align: right;\">" + arriveDate + "</td>" + 
							"<td style=\"text-align: right;\">" + arriveTime + "</td>" + 
							"<td style=\"text-align: right;\">" + departDate + "</td>" + 
							"<td style=\"text-align: right;\">" + departTime + "</td>" + 
						"</tr>";
				}
				if ( arriveDate!=="-" ) {
					lastarrive = arriveDate;
				} else if ( arriveDate=="-" && departDate!=="-" ) {
					lastarrive = departDate;
				} else if ( arriveDate=="-" && departDate=="-" && lastdepart!=="" ) {
					lastarrive = lastdepart;
				} else if ( arriveDate=="-" && departDate=="-" && lastdepart=="" && lastarrive!=="" ) {
					lastarrive = lastarrive;
				}
				
				if ( departDate!=="-" ) {
					lastdepart = departDate;
				} else if ( departDate=="-" && arriveDate!=="-" ) {
					lastdepart = arriveDate;
				} else if ( departDate=="-" && arriveDate=="-" && lastarrive!=="-" ) {
					lastdepart = lastarrive;
				} else if ( departDate=="-" && arriveDate=="-" && lastarrive=="-" && lastdepart!=="-" ) {
					lastdepart = lastdepart;
				}
				
				if ( arriveDate=="-" && departDate=="-" && daycnt==1 ) {
					lastarrive = cruisedepdate;
					lastdepart = cruisedepdate;
				}
				//alert("lastarrive : "+lastarrive+"\nlastdepart : "+lastdepart);
				// end day change
			}
			if ( nodes.length > 0 ) 
				displayStr += "</table>";
			//if (!cruiseDataHasLoaded) document.getElementById("itineraryinfo").innerHTML = "";
			document.getElementById("itineraryinfo").innerHTML = "";
			document.getElementById("itineraryinfo").innerHTML += displayStr;
			cruiseDataHasLoaded = true;
		} else {
			document.getElementById("itineraryinfo").innerHTML += "No itinerary information available";
			setTimeout("loadItinerary()",10000);
		} 
	}

//	function displayItinerary ( success, xml ) {
//		if (success) {
//			var displayStr = "";
//			var packageId = xml.getElementsByTagName("packageId");
//			var packnode = packageId[0].firstChild.nodeValue;
//			var packageIdarr = packnode.split("|");
//			var cruisedepdate = packageIdarr[2].split("-");
//			cruisedepdate = (cruisedepdate[2]-0) + "/" + cruisedepdate[1] + "/" + cruisedepdate[0];
//			var nodes = xml.getElementsByTagName("node");
//			if ( nodes.length > 0 ) {
//				displayStr += "<table cellpadding=\"0\" cellspacing=\"1\" border=\"0\" class=\"tableformat\">" + 
//					"<tr valign=\"top\">" + 
//						"<th>Day</th>" + 
//						"<th></th>" + 
//						"<th>Arrival</th>" + 
//						"<th>Departure</th>" + 
//					"</tr>";
//			}
//			var lastarrive = "";
//			var lastdepart = "";
//			var daycnt = 1;
//			for ( var i=0; i<nodes.length; i++ ) {
//				//var day = "";
//				var city = "";
//				var arriveDate = "";
//				var arriveTime = "";
//				
//				var departDate = "";
//				var departTime = "";
//				
//				var dateValue1 = "";
//				var dateValue2 = "";
//				//if ( nodes[i].getElementsByTagName("nodeId")[0] && nodes[i].getElementsByTagName("nodeId")[0].firstChild ) 
//				//	day = nodes[i].getElementsByTagName("nodeId")[0].firstChild.nodeValue;
//				if ( nodes[i].getElementsByTagName("nodeDescription")[0] && nodes[i].getElementsByTagName("nodeDescription")[0].firstChild ) 
//					city = nodes[i].getElementsByTagName("nodeDescription")[0].firstChild.nodeValue;
//				if ( nodes[i].getElementsByTagName("arrivalCityName")[0] && nodes[i].getElementsByTagName("arrivalCityName")[0].firstChild ) 
//					//city = nodes[i].getElementsByTagName("arrivalCityName")[0].firstChild.nodeValue + " / " + city;
//					city = nodes[i].getElementsByTagName("arrivalCityName")[0].firstChild.nodeValue + city;
//				if ( nodes[i].getElementsByTagName("arrivalDate")[0] && nodes[i].getElementsByTagName("arrivalDate")[0].firstChild ) {
//					arriveDate = nodes[i].getElementsByTagName("arrivalDate")[0].firstChild.nodeValue;
//					dates = arriveDate.split("-");
//					arriveDate = (dates[2]-0) + "/" + dates[1] + "/" + dates[0];
//				}
//				if ( nodes[i].getElementsByTagName("arrivalTime")[0] && nodes[i].getElementsByTagName("arrivalTime")[0].firstChild ) 
//					arriveTime = nodes[i].getElementsByTagName("arrivalTime")[0].firstChild.nodeValue;
//				if ( nodes[i].getElementsByTagName("departureDate")[0] && nodes[i].getElementsByTagName("departureDate")[0].firstChild ) {
//					departDate = nodes[i].getElementsByTagName("departureDate")[0].firstChild.nodeValue;
//					dates = departDate.split("-");
//					departDate = (dates[2]-0) + "/" + dates[1] + "/" + dates[0];
//					//if ( i==1) alert(departDate);
//				}
//				if ( nodes[i].getElementsByTagName("departureTime")[0] && nodes[i].getElementsByTagName("departureTime")[0].firstChild ) 
//					departTime = nodes[i].getElementsByTagName("departureTime")[0].firstChild.nodeValue;
//				if ( arriveDate == "1/01/0001" ) {
//					arriveDate = "-";
//					arriveTime = "-";
//				}
//				if ( departDate == "1/01/0001" || city == "" ) { 
//					departDate = "-";
//					departTime = "-";
//				}
//				//if ( i==1) alert(departDate);
//				// Scott Swabey - 31/03/07
//				// Determine day number from change in arrive/departure dates
//				if ( nodes[i].getElementsByTagName("departureDate")[0] && nodes[i].getElementsByTagName("departureDate")[0].firstChild && i==0) {
//					if ( nodes[i].getElementsByTagName("departureDate")[0].firstChild.nodeValue== "0001-01-01" ) {
//						departDate = cruisedepdate;
//						departTime = "-";
//					}
//				}
//				
//				if ( arriveDate!=="-" && departDate=="-" ) {
//					dateValue1 = arriveDate;
//					dateValue2 = lastdepart;
//					
//					diffdays = daysDiff(dateValue1, dateValue2);
//					daycnt += diffdays;
//				} else if ( arriveDate!=="-" && lastdepart=="" ) {
//					dateValue1 = arriveDate;
//					dateValue2 = departDate;
//					
//					diffdays = daysDiff(dateValue1, dateValue2);
//					daycnt += diffdays;
//				} else if ( arriveDate!=="-" && lastdepart!=="" && lastdepart!=="-" ) {
//					dateValue1 = arriveDate;
//					dateValue2 = lastdepart;
//					
//					diffdays = daysDiff(dateValue1, dateValue2);
//					daycnt += diffdays;
//				} else if ( arriveDate=="-" && departDate!=="-" ) {
//					dateValue1 = departDate;
//					dateValue2 = lastdepart;
//					
//					diffdays = daysDiff(dateValue1, dateValue2);
//					daycnt += diffdays;
//				}  else if ( arriveDate=="-" && departDate=="-" ) {
//					daycnt = daycnt;
//				}
//				
//				if ( arriveDate == "-" && arriveTime == "-" && departDate == "-" && departTime == "-" && city.length ==0 ) {
//						displayStr += "<tr valign=\"top\">" + 
//						"<td style=\"text-align: right;\"></td>" + 
//						"<td style=\"text-align: left;\" colspan=\"3\">At Sea</td>" + 
//					"</tr>";//" + day + "("+daycnt+")
//				
//				} else {
//					displayStr += "<tr valign=\"top\">" + 
//							"<td style=\"text-align: right;\">";// + day;
//					if ( ( arriveDate !== "-" || departDate !== "-" ) || ( i==nodes.length-1 ) ) {
//						if ( i==nodes.length-1 && (arriveDate == "-" && departDate == "-" && daycnt>1) )
//							daycnt ++;
//						displayStr += daycnt;
//					}				
//					displayStr += "</td>" + 
//							"<td>" + properCase(city) + "</td>" + 
//							//"<td style=\"text-align: right;\">" + arriveDate + "</td>" + 
//							"<td style=\"text-align: right;\">" + arriveTime + "</td>" + 
//							//"<td style=\"text-align: right;\">" + departDate + "</td>" + 
//							"<td style=\"text-align: right;\">" + departTime + "</td>" + 
//						"</tr>";
//				}
//				if ( arriveDate!=="-" ) {
//					lastarrive = arriveDate;
//				} else if ( arriveDate=="-" && departDate!=="-" ) {
//					lastarrive = departDate;
//				} else if ( arriveDate=="-" && departDate=="-" && lastdepart!=="" ) {
//					lastarrive = lastdepart;
//				} else if ( arriveDate=="-" && departDate=="-" && lastdepart=="" && lastarrive!=="" ) {
//					lastarrive = lastarrive;
//				}
//				
//				if ( departDate!=="-" ) {
//					lastdepart = departDate;
//				} else if ( departDate=="-" && arriveDate!=="-" ) {
//					lastdepart = arriveDate;
//				} else if ( departDate=="-" && arriveDate=="-" && lastarrive!=="-" ) {
//					lastdepart = lastarrive;
//				} else if ( departDate=="-" && arriveDate=="-" && lastarrive=="-" && lastdepart!=="-" ) {
//					lastdepart = lastdepart;
//				}
//				
//				if ( arriveDate=="-" && departDate=="-" && daycnt==1 ) {
//					lastarrive = cruisedepdate;
//					lastdepart = cruisedepdate;
//				}
//				//alert("lastarrive : "+lastarrive+"\nlastdepart : "+lastdepart);
//				// end day change
//			}
//			if ( nodes.length > 0 ) 
//				displayStr += "</table>";
//			//if (!cruiseDataHasLoaded) document.getElementById("itineraryinfo").innerHTML = "";
//			document.getElementById("itineraryinfo").innerHTML = "";
//			document.getElementById("itineraryinfo").innerHTML += displayStr;
//			cruiseDataHasLoaded = true;
//		} else {
//			document.getElementById("itineraryinfo").innerHTML += "No itinerary information available";
//			setTimeout("loadItinerary()",10000);
//		} 
//	}
	
	function parseDate( strDate ) {
	  // Parse the string in DD/MM/YYYY format
	  re = /(\d{1,2})\/(\d{1,2})\/(\d{4})/
	  var arr = re.exec( strDate );
	  var curDate = new Date();
	  return new Date( parseInt(arr[3]), parseInt(arr[2], 10) - 1, parseInt(arr[1], 10) );
	}
	
	function daysDiff(dateValue1, dateValue2) {
	  // Return the number of days difference
	  // between two dates
	  
	  // no difference if both dates are the same
	  // or if none or 1 date is supplied
	  if ( (dateValue1 == dateValue2) || !dateValue1 || !dateValue2 ) return 0;
	  
	  //Set 1 day in milliseconds
	  var one_day = 1000*60*60*24;
	  
	  var date1 = parseDate(dateValue1);
	  var date2 = parseDate(dateValue2);
	  
	  var daysdiff = Math.ceil((date1.getTime()-date2.getTime())/(one_day));
	  
	  return daysdiff;
	}

	function loadingMsg(tab) {
		objInfo = document.getElementById(tab + "info");
		objImg = document.getElementById(tab + "img");
		if ( objInfo )
			objInfo.innerHTML = loadingImg + " Loading...";
		if ( objImg )
			objImg.innerHTML = "";
	}
	
	function properCase(a) {
		var b="";
		var notyet=true;
		for (i=0;i<=a.length;i++) {
			m = a.substr(i,1);
			b += (notyet)?m.toUpperCase():m.toLowerCase();
			notyet = (m.toUpperCase() == m.toLowerCase());
		}
		b = b.replace("Uk","UK");
		b = b.replace("Usa","USA");
		return b
	}

