// ----------------------------------
// AJAX ROUTINES
// ----------------------------------
var request = false;	// AJAX variable
var objFillArea = "";	// area to fill content from AJAX

function renewRequest()
{
	var request;
	try {
		request = new XMLHttpRequest();
	} catch (trymicrosoft) {
		try {
			request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (othermicrosoft) {
			try {
				request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (failed) {
				request = false;
			}
		}
	}
	if (!request) {alert("Error initializing XMLHttpRequest!");}
	return request;
}



function updateRouteRates(obj)
{
	
	if (document.getElementById('f_OneWayFrom').selectedIndex == 0) {
		document.getElementById('f_OneWayTo').selectedIndex = 0;
	}

	if (document.getElementById('f_OneWayFrom2').selectedIndex == 0) {
		document.getElementById('f_OneWayTo2').selectedIndex = 0;
	}

	if (document.getElementById('f_ReturnFrom2').selectedIndex == 0) {
		document.getElementById('f_ReturnTo2').selectedIndex = 0;
	}

	if (obj.options[obj.selectedIndex].value!=null){
		var strRouteValue = obj.options[obj.selectedIndex].value;
		var strRouteText = obj.options[obj.selectedIndex].text;

		switch(obj.name)
		{
			case 'f_OneWayFrom':
				document.getElementById('f_OutboundDate').value = '';
				break;
		
			case 'f_OneWayTo':
				document.getElementById('f_OutboundDate').value = '';
				break;
				
			case 'f_OneWayFrom2':
				document.getElementById('f_OutboundDate2').value = '';
				break;
				
			case 'f_OneWayTo2':
				document.getElementById('f_OutboundDate2').value = '';
				break;
			
			case 'f_ReturnFrom2':
				document.getElementById('f_InboundDate2').value = '';
				break;
				
			case 'f_ReturnTo2':
				document.getElementById('f_InboundDate2').value = '';
				break;
		}
	}	
}

function BuildRouteRates(obj, value, idFillArea, lang)
{
	var firstport = document.getElementById("f_OneWayFrom2").value;
	var secondport = document.getElementById("f_OneWayTo2").value;
	// assign ajax URL parameters and fill area
	request = renewRequest();
	var url = "/includes/build_route_rates_ws_crs.asp?sLanguage=" + lang + "&objID=" + obj.id + "&value=" + value + "&firstport=" + firstport + "&secondport=" + secondport;
	//alert(url);
	if (document.getElementById("campingDeck").checked){
		url = url + "&CD=true";
	}
	else{
		url = url + "&CD=false";
	}
	url = url + "";
	//alert(url);
	objFillArea = document.getElementById(idFillArea);

	if (value != '0|0')
	{
		request.open("GET", url, true);
		request.onreadystatechange = function() {updateBuildRouteRates(obj.name);}
		request.send(null);	
	}
}

function updateBuildRouteRates(objName)
{
	if (request.readyState == 4)
	{
		if (request.status == 200)
		{
			var response = request.responseText;
			objFillArea.innerHTML = response;
			
			//modify the english text "From..." and "To..." to their equivalent language text
			
			//for One Way selection
			if (objName == "f_OneWayFrom"){
				if (document.getElementById("selectedDest")!=null){
					
					for(i=0;i < document.getElementById('f_OneWayTo').length; i++){
						if(document.getElementById('f_OneWayTo').options[i].value==document.getElementById("selectedDest").value){
							document.getElementById('f_OneWayTo').selectedIndex=i
							
						}
					}
				}
				else{
					
					//document.getElementById("f_OneWayTo").options[0].text = document.getElementById("toText").value;
				}
			}
			
			if (objName == "f_OneWayFrom2"){
				
				if (document.getElementById("selectedDest")!=null){
					//document.getElementById("f_OneWayTo").selected = document.getElementById("selectedDest").value;	
					
					for(i=0;i < document.getElementById('f_OneWayTo2').length; i++){
						if(document.getElementById('f_OneWayTo2').options[i].value==document.getElementById("selectedDest").value){
							document.getElementById('f_OneWayTo2').selectedIndex=i
						}
					}
				}
				else{
					
					//document.getElementById("f_OneWayTo2").options[0].text = document.getElementById("toText").value;
				}
			}
			
			if (objName == "f_OneWayTo2"){
				
				if (document.getElementById("selectedDest")!=null){
					//document.getElementById("f_OneWayTo").selected = document.getElementById("selectedDest").value;	
					
					for(i=0;i < document.getElementById('f_ReturnFrom2').length; i++){
						if(document.getElementById('f_ReturnFrom2').options[i].value==document.getElementById("selectedDest").value){
							document.getElementById('f_ReturnFrom2').selectedIndex=i
						}
					}
				}
				else{
					
					//document.getElementById("f_ReturnFrom2").options[0].text = document.getElementById("toText").value;
				}
			}
			
			if (objName == "f_ReturnFrom2"){
				
				
				if (document.getElementById("selectedArr")!=null){
					//document.getElementById("f_OneWayTo").selected = document.getElementById("selectedDest").value;	
					
					for(i=0;i < document.getElementById('f_ReturnTo2').length; i++){
						if(document.getElementById('f_ReturnTo2').options[i].value==document.getElementById("selectedArr").value){
							document.getElementById('f_ReturnTo2').selectedIndex=i
						}
					}
				}
				else{
					
					//document.getElementById("f_ReturnTo2").options[0].text = document.getElementById("toText").value;
				}
			}
			
		}
		else if (request.status == 404)
		{
			alert("Page Does Not Exist!");
		}
		else
		{
			alert("Error: status code is " + request.status);
		}
	}
}

function formatDate(date){
	var day, month, year
	day = date.split("/")[0];
	
	month = date.split("/")[1];
	year = date.split("/")[2];
	//alert(day);
	if (day.length == 1) {
		date = "0" + day + "/" + month + "/" + year;
	}
	else {
		date = day + "/" + month + "/" + year;
	}
	
	return date;
}

function buildURL(lang){
	var RouteType, From, To, DepDate, Cob
	var parameters  = "";
	
	if (document.getElementById("campingDeck").checked){
		Cob = "true";
	}
	else{
		Cob = "false";
	}

	if (document.getElementById("radioOneWay").checked){
		RouteType = "oneway";
		From = document.getElementById("f_OneWayFrom").value;
		To = document.getElementById("f_OneWayTo").value;
		DepDate = formatDate(document.getElementById("f_OutboundDate").value);
		parameters = "";
	}
	else{
		RouteType = "return";
		From = document.getElementById("f_OneWayFrom2").value;
		To = document.getElementById("f_OneWayTo2").value;
		DepDate = formatDate(document.getElementById("f_OutboundDate2").value);
		From2 = document.getElementById("f_ReturnFrom2").value;
		To2 = document.getElementById("f_ReturnTo2").value;
		DepDate2 = formatDate(document.getElementById("f_InboundDate2").value);
		parameters = "&from2=" + From2 + "&to2=" + To2 + "&departure_date2=" + DepDate2;
	}
	
	var url = "/rates/rate.asp?lang=" + lang + "&webid=2&comp=common&content=crs&route_type=" + RouteType + "&from=" + From + "&to=" + To + "&departure_date=" + DepDate + "&CD=" + Cob + "&expand=true" + parameters;

	window.open(url,'_blank');
}

function crsOptions(){
	if (document.getElementById("radioOneWay").checked){
		clearCrsOneway();
		document.getElementById("crs-main").className = "crs-hidden";
		document.getElementById("crs-oneway").className = "crs-table";
		document.getElementById("crs-return").className = "crs-hidden";
		
		if (document.getElementById("campingDeck").checked){
			CampingPorts();
		}
		else{
			fillPorts();
		}
	}
	else if (document.getElementById("radioReturn").checked){
		clearCrsReturn();
		document.getElementById("crs-main").className = "crs-hidden";
		document.getElementById("crs-oneway").className = "crs-hidden";
		document.getElementById("crs-return").className = "crs-table";

		if (document.getElementById("campingDeck").checked){
			CampingPorts();
		}
		else{
			fillPorts();
		}
	}
	else{
		document.getElementById("crs-main").className = "crs-main";
		document.getElementById("crs-oneway").className = "crs-hidden";
		document.getElementById("crs-return").className = "crs-hidden";
	}
}

function getDateObject(dateString,dateSeperator)
{
	//This function return a date object after accepting 
	//a date string ans dateseparator as arguments
	var curValue=dateString;
	var sepChar=dateSeperator;
	var curPos=0;
	var cDate,cMonth,cYear;

	//extract day portion
	curPos=dateString.indexOf(sepChar);
	cDate=dateString.substring(0,curPos);
	
	//extract month portion				
	endPos=dateString.indexOf(sepChar,curPos+1);
	cMonth=dateString.substring(curPos+1,endPos);
	
	//extract year portion				
	curPos=endPos;
	endPos=curPos+5;			
	cYear=curValue.substring(curPos+1,endPos);
	
	//Create Date Object
	dtObject=new Date(cYear,cMonth-1,cDate);	
	return dtObject;
}


