/*
	Kaleva Travel - Amadeus eRetail integration functions
*/

var packageFormId = "amadeusPackageForm";
var packageForm = null;

var createdElements = new Array();

function setELocation2(selectEmt){
	if(packageForm == null){
		packageForm = document.getElementById(packageFormId);
	}
	
	packageForm.E_LOCATION_2.value = selectEmt.options[selectEmt.selectedIndex].value;
}




function changeELocation1Country(selectEmt){
	var optionEmts = document.getElementById("selectedAmadeusDestinations").getElementsByTagName('OPTION');
	for(var i = optionEmts.length - 1; i > 0 ; i--){
		document.getElementById("selectedAmadeusDestinations").removeChild(optionEmts[i]);
	}
	
	if(selectEmt.options[selectEmt.selectedIndex].value != ''){
		optionEmts = document.getElementById("amadeusDestinations").getElementsByTagName('OPTION');
		for(var i = 1; i < optionEmts.length; i++){
			if(optionEmts[i].title == selectEmt.options[selectEmt.selectedIndex].value){
				document.getElementById("selectedAmadeusDestinations").appendChild(optionEmts[i].cloneNode(true));
			}
		}
		document.getElementById("amadeusDestinations").style.display = "none";
		document.getElementById("selectedAmadeusDestinations").style.display = "inline";
	}
	else{
		optionEmts = document.getElementById("amadeusDestinations").getElementsByTagName('OPTION');
		document.getElementById("selectedAmadeusDestinations").style.display = "none";
		document.getElementById("amadeusDestinations").style.display = "inline";
	}
}




function setBLocation2(selectEmt){
	if(packageForm == null){
		packageForm = document.getElementById(packageFormId);
	}
	
	packageForm.E_LOCATION_1.value = selectEmt.options[selectEmt.selectedIndex].value;
	packageForm.B_LOCATION_2.value = selectEmt.options[selectEmt.selectedIndex].value;
}





function setBDate1(formId){
	if(packageForm == null){
		packageForm = document.getElementById(packageFormId);
	}
	
	var lkk = packageForm.L_KK.options[packageForm.L_KK.selectedIndex].value;
	var lpv = packageForm.L_PV.options[packageForm.L_PV.selectedIndex].value;
	
	var strDate = (parseInt(lpv) < 10) ? '0' + lpv : '' + lpv;
	var strMonth = (lkk.charAt(4) == '0') ? '' + parseInt(lkk.substr(5,1)) - 1 : parseInt(lkk.substr(4,2)) - 1;
	
	packageForm.B_DATE_1.value = lkk + '' + strDate + '0000';
	
	var bDate2 = new Date();
	
	bDate2.setYear(parseInt(lkk.substring(0, 4)));
	bDate2.setMonth(parseInt(strMonth));
	bDate2.setDate(parseInt(lpv) + 2);
	bDate2.setHours(0);
	bDate2.setMinutes(0);
	
	for(var i = 0; i < packageForm.T_PV.options.length; i++){
		if(packageForm.T_PV.options[i].value == bDate2.getDate()){
			packageForm.T_PV.options[i].selected = true;
		}
		else{
			packageForm.T_PV.options[i].selected = false;
		}
	}
	
	//strMonth = ((bDate2.getMonth() + 1) < 10) ? '0' + (bDate2.getMonth() + 1) : (bDate2.getMonth() + 1);
	strMonth = ((bDate2.getMonth() + 1) < 10) ? '0' + (bDate2.getMonth() + 1) : '' + (bDate2.getMonth() + 1);
	
	for(var i = 0; i < packageForm.T_KK.options.length; i++){
		if(packageForm.T_KK.options[i].value == getFixedYear(bDate2) + '' + strMonth){
			packageForm.T_KK.options[i].selected = true;
		}
		else{
			packageForm.T_KK.options[i].selected = false;
		}
	}
	
	strDate = (bDate2.getDate() < 10) ? '0' + bDate2.getDate() : '' + bDate2.getDate();
	
	packageForm.B_DATE_2.value = getFixedYear(bDate2) + '' + strMonth + '' + strDate + '0000';
	
	//alert(packageForm.B_DATE_1.value + '\n' + packageForm.B_DATE_2.value);
}






function setBDate2(formId){
	if(packageForm == null){
		packageForm = document.getElementById(packageFormId);
	}
	
	var tpv = (packageForm.T_PV.options[packageForm.T_PV.selectedIndex].value.length < 2) ? '0' + packageForm.T_PV.options[packageForm.T_PV.selectedIndex].value : packageForm.T_PV.options[packageForm.T_PV.selectedIndex].value;
	var tkk = packageForm.T_KK.options[packageForm.T_KK.selectedIndex].value;
	
	packageForm.B_DATE_2.value = tkk + '' + tpv + '0000';
}




function updateRooms(selectEmt){
	var roomCount = parseInt(selectEmt.options[selectEmt.selectedIndex].value);
	var roomRows = document.getElementById("roomLayout").getElementsByTagName('TR');
	
	for(var i = 1; i < roomRows.length; i++){
		if(i <= roomCount){
			roomRows[i].className = "visibleRoom";
		}
		else{
			roomRows[i].className = "hiddenRoom";
		}
	}
}




function updatePackageParameters(formEmt){
	if(packageForm == null){
		packageForm = document.getElementById(packageFormId);
	}
	
	if(packageForm.B_LOCATION_1.options[packageForm.B_LOCATION_1.selectedIndex].value == '' || packageForm.E_LOCATION_1.value == ''){
		alert("Valitse lähtöpaikkakunta ja matkakohde.");
		return false;
	}
	else{
		updateRoomLayout();
	}
}



function initBDates(formEmtId){
	if(packageForm == null){
		packageForm = document.getElementById(packageFormId);
	}
	
	var lkk = packageForm.L_KK.options[packageForm.L_KK.selectedIndex].value;
	var lpv = packageForm.L_PV.options[packageForm.L_PV.selectedIndex].value;
	
	var strDate = (parseInt(lpv) < 10) ? '0' + lpv : '' + lpv;
	var strMonth = (lkk.charAt(4) == '0') ? '' + parseInt(lkk.substr(5,1)) - 1 : parseInt(lkk.substr(4,2)) - 1;
	
	packageForm.B_DATE_1.value = lkk + '' + strDate + '0000';
	
	var tpv = (packageForm.T_PV.options[packageForm.T_PV.selectedIndex].value.length < 2) ? '0' + packageForm.T_PV.options[packageForm.T_PV.selectedIndex].value : packageForm.T_PV.options[packageForm.T_PV.selectedIndex].value;
	var tkk = packageForm.T_KK.options[packageForm.T_KK.selectedIndex].value;
	
	packageForm.B_DATE_2.value = tkk + '' + tpv + '0000';
	
	updateCountryList();
}




function updateRoomLayout(){
	if(packageForm == null){
		packageForm = document.getElementById(packageFormId);
	}
	
	var roomCount = parseInt(packageForm.roomCount.options[packageForm.roomCount.selectedIndex].value);
	var roomRows = document.getElementById("roomLayout").getElementsByTagName('TR');
	var totalTravellers = 0;
	
	if(createdElements.length > 0){
		for(var i = 0; i < createdElements.length; i++){
			packageForm.removeChild(createdElements[i]);
		}
	}
	
	createdElements = new Array();
	
	for(var i = 1; i <= roomCount; i++){
		var travellerType = "ADT";
		var selectEmts = document.getElementById("roomLayout").getElementsByTagName('SELECT');
		var selectedAdults = parseInt(selectEmts[(i - 1) * 2].options[selectEmts[(i - 1) * 2].selectedIndex].value);
		var selectedChildren = parseInt(selectEmts[(i - 1) * 2 + 1].options[selectEmts[(i - 1) * 2 + 1].selectedIndex].value);
		var roomTraveller = 0;
		
		for(var t = 1; t <= selectedAdults; t++){
			totalTravellers++;
			roomTraveller++;
			addTravellerToRoom(totalTravellers, travellerType, roomTraveller, i);
		}
		
		travellerType = "CHD";
		
		for(var t = 1; t <= selectedChildren; t++){
			totalTravellers++;
			roomTraveller++;
			addTravellerToRoom(totalTravellers, travellerType, roomTraveller, i);
		}
	}
}


function addTravellerToRoom(travellerId, travellerType, roomTraveller, room){
	if(packageForm == null){
		packageForm = document.getElementById(packageFormId);
	}
	
	var strTravellerType = 'TRAVELLER_TYPE_' + travellerId;
	var strRoomMapping = 'HOTEL_1_ROOM_' + room + '_TRAVELLER_' + roomTraveller + '_ID';
	
	var formInputs = packageForm.getElementsByTagName('INPUT');
	
	var travellerTypeEmt = document.createElement('input');
	travellerTypeEmt.type = "hidden";
	travellerTypeEmt.name = strTravellerType;
	travellerTypeEmt.value = travellerType;
	
	var roomMappingEmt = document.createElement('input');
	roomMappingEmt.type = "hidden";
	roomMappingEmt.name = strRoomMapping;
	roomMappingEmt.value = travellerId;
	
	createdElements.push(travellerTypeEmt);
	createdElements.push(roomMappingEmt);
	
	packageForm.appendChild(travellerTypeEmt);
	packageForm.appendChild(roomMappingEmt);
}




function updateCountryList(){
	var availCountries = new Array();
	var destinations = document.getElementById("amadeusDestinations").getElementsByTagName("OPTION");
	
	for(var i = 1; i < destinations.length; i++){
		if(availCountries.length > 0){
			var found = 0;
			
			for(var c = 0; c < availCountries.length; c++){
				if(availCountries[c] == destinations[i].title){
					found++;
				}
			}
			
			if(found == 0){
				availCountries.push(destinations[i].title);
			}
		}
		else{
			availCountries.push(destinations[i].title);
		}
	}
	
	availCountries.sort();
	
	var countrySelect = document.getElementById("amadeusCountries");
	
	for(var i = 0; i < availCountries.length; i++){
		var newOption = document.createElement("option");
		newOption.value = availCountries[i];
		var optionText = document.createTextNode(availCountries[i]);
		newOption.appendChild(optionText);
		countrySelect.appendChild(newOption);
	}
}








function getFixedYear(paramDate){
	if(!paramDate || paramDate == "undefined")
		paramDate = new Date();
	var retval = paramDate.getYear();
	if(paramDate.getYear() < 1900){
		retval = paramDate.getYear() + 1900;
	}
	
	return retval;
}





function selectGoto(selectEmt){
	var url = selectEmt.options[selectEmt.selectedIndex].value;
	if(url != ''){
		window.location.href = url;
	}
}









function showTooltip(tooltipId, clickSrc, evt){
	evt.cancelBubble = true;
	var jtk = new JoookToolkit();
	var tooltip = jtk.select("#" + tooltipId)[0];
	var srcPos = jtk.getPosition(clickSrc);
	var tweakCoords = {x: 25, y: 25};
	
	tooltip.style.position = "absolute";
	tooltip.style.left = (srcPos.left + tweakCoords.x) + "px";
	tooltip.style.top = (srcPos.top + tweakCoords.y) + "px";
	tooltip.innerHTML = clickSrc.alt;
	jtk.setOpacity(tooltip, 90);
	tooltip.style.display = "block";
}

function hideTooltip(tooltipId){
	var jtk = new JoookToolkit();
	var tooltip = jtk.select("#" + tooltipId)[0];
	tooltip.style.display = "none";
}