﻿/* ============================================================================
FUNCTION:	SetElemValue(sDocElem, sElemValue)
INPUT:		sDocElem - A string with the Document Element Name
            sElemValue - A string with the value to assign to the Element
=============================================================================== */
function SetElemValue(sDocElem, sElemValue)
{
	document.getElementById(sDocElem).value = sElemValue;
}


function ShowBenef(valInsurancePrice)
{	
	var valPrice = String(valInsurancePrice);
	
	if (valPrice == "-1")
	{
		valPrice = "0";
	}
	
	valPrice = Number(valPrice.replace(",", "."));

	var valTotalPrice = Number(document.getElementById("div_TotalPrice").innerHTML.replace(",", "."));
	valTotalPrice -= Number(document.getElementById("fldInsuranceOldPrice").value)
	valTotalPrice += valPrice;
	
	document.getElementById("div_TotalPrice").innerHTML = String(valTotalPrice.toFixed(2)).replace(".", ",");

	if (valInsurancePrice != "-1")
	{
        document.getElementById("fldInsuranceOldPrice").value = valInsurancePrice.replace(",", ".");
		document.getElementById("div_Benef").style.display = "block";
	}
	else
	{
        document.getElementById("fldInsuranceOldPrice").value = "0";	
	    document.getElementById('div_Benef').style.display = "none"; 
	}
}


function BackGatherData()
{
    document.getElementById("State").value = "Payment";
    document.getElementById("Event").value = "AditionalData";
	document.getElementById("Form1").submit();
}


function TestIfRegularYear(year)
{           
	return !(((year % 4) == 0 && (year % 100) != 0) || (year % 400) == 0);
}

function CancelSwitch(state, dataDIV_ID, cancelDIV_ID)
{
	if (state == "cancel")
	{	
		document.getElementById(cancelDIV_ID).zIndex=100;	
		document.getElementById(cancelDIV_ID).style.position='absolute';
		document.getElementById(cancelDIV_ID).style.display='block';
		/*
		document.getElementById(dataDIV_ID).style.width=500;
		document.getElementById(dataDIV_ID).style.height=500;		
		document.getElementById(dataDIV_ID).zIndex=50;	
		*/
		document.getElementById(cancelDIV_ID).style.left="121px";		
	}
	else
	{
		document.getElementById(cancelDIV_ID).style.display='none';		
		
	}
}                                                            

function GetDaysInMonth(month)
{

            var minDaysInMonth = 30;
            var maxDaysInMonth = 31;

            if (month < 8)
                   return (minDaysInMonth + (month % 2));

            return (maxDaysInMonth - (month % 2));

}

 

function CheckDateAux(day, month, year) // determina se a data é ou não válida
{

            var control = (TestIfRegularYear(year) ? 28 : 29);
                                                                      
            if (month == 2)
                        return (day <= control);
            return (day <= GetDaysInMonth(month));

}


function CheckWeekDay(dayIndex)
{
	if (days_flags != "")
	{
		if (days_flags[dayIndex] == "NO")	
			return false;
	}
	 return true;
}

function CheckEndDate(clientID)
{
	var endDate_aux = String(document.getElementById('endDate_AUX'+ clientID).value);
		
	var endDate = endDate_aux.split('/');
		
	var endDate_date = new Date();
	var choosenDate_date = new Date();
	
	endDate_date.setDate(endDate[0]);
	endDate_date.setMonth(endDate[1]);
	endDate_date.setFullYear(endDate[2]);
	
	choosenDate_date.setDate(document.getElementById('day' + clientID).value);
	choosenDate_date.setMonth(document.getElementById('month'+ clientID).value);
	choosenDate_date.setFullYear(document.getElementById('year'+ clientID).value);
	if (endDate_date >= choosenDate_date)
		return true;
	else
		return false;
}
                                                            

function CheckDateShortVacation(day, month, year, clientID)
{

			EndDate(clientID);
			var date = new Date();
			var now = new Date();
			
			date.setFullYear(year);
			date.setMonth(month - 1);
			date.setDate(day);
									
			if (!CheckDateAux(day, month, year) || date - now < 0)
            {
					document.getElementById('validToGo').value = "0";
					alert(javascriptSentences[15]);
					return false;
			}
			else if (!CheckEndDate(clientID))
			{
				  document.getElementById('validToGo').value = "0";
				  alert(javascriptSentences[0]);
				  return false;
			}
			else if (!CheckWeekDay(date.getDay()))
			{
					document.getElementById('validToGo').value = "0";
				   alert(javascriptSentences[1]);
				   return false;
			}
			
			document.getElementById('validToGo').value = "1";							
            return true;
  

}

function ShowHideFF(id)
{

	var obj = document.getElementById(id);
	
	if (obj.style.display == 'none')
		obj.style.display = ''
	else
	{
		obj.style.display = 'none';
		var index = id.split('_')[1];		
		document.getElementById('myFFN_' + index).value = '';
		
	}
}

// *** Funcoes Passageiros de Registo ******
function GetNamesToPutAux(nome, apelido,index,div,passIndex,BDate)
{
	var result = false;
	
	
	var BIandPassPort = "";
	
	if (document.getElementsByName('fldBI') != null && document.getElementsByName('fldBI').length > 0)
	{
		BIandPassPort += "document.getElementsByName(\"fldBI\")["+index+"].value=document.getElementById(\"IDNumber_Pass"+passIndex+"\").value;";
	
		BIandPassPort += "document.getElementsByName(\"fldPassPort\")["+index+"].value=document.getElementById(\"Passport_Pass"+passIndex+"\").value;";
	}
					
	for(var i = 0; i < document.getElementsByName('fldNome').length; i++)
	{
		if (nome == document.getElementsByName('fldNome')[i].value && apelido == document.getElementsByName('fldApelido')[i].value)		
			result = true
	}
	
	if (!result)
		return "<a href='javascript:void(0);' style='cursor:hand' onclick='SetTruePassenger("+(index + 1)+");SetAge("+index+",\""+BDate+"\");document.getElementsByName(\"fldNome\")["+index+"].value=\""+nome+"\";document.getElementsByName(\"fldApelido\")["+index+"].value=\""+apelido+"\";document.getElementById(\""+div+"\").style.display=\"none\";"+BIandPassPort+";GetNamesToPut("+index+",\""+div+"\");' class='normal_text'>&#160;" + nome + " " + apelido + "&#160;</a><br>";
	else
		return "";
}

function SetAge(index,bdate)
{
	var nIndex;
	var nDay, nMonth, nYear;
	var insertedYear = false;
	
	nIndex = Number(index);
	nDay = Number(bdate.split('/')[0]);
	nMonth = Number(bdate.split('/')[1]);
	nYear = Number(bdate.split('/')[2]);
	if (document.getElementsByName('fldNascimentoDia')[index].options != null)
	{
		document.getElementsByName('fldNascimentoDia')[index].options.selectedIndex = (nDay - 1);
		document.getElementsByName('fldNascimentoMes')[index].options.selectedIndex = (nMonth - 1);
		for(var i = 0; i < document.getElementsByName('fldNascimentoAno')[index].options.length; i++)
		{		
			//alert(document.getElementsByName('fldNascimentoAno')[index].options[i].value);
			if (Number(document.getElementsByName('fldNascimentoAno')[index].options[i].value) == nYear)
			{				
				insertedYear = true;
				document.getElementsByName('fldNascimentoAno')[index].options.selectedIndex = i;								
				break;
			}			
		}	
		if (!insertedYear && document.getElementsByName('fldTipo')[index].value == "CH")
		{
			alert(javascriptSentences[50]);
		}
		if (!insertedYear && document.getElementsByName('fldTipo')[index].value == "IN")
		{
			alert(javascriptSentences[51]);
		}		
		//document.getElementsByName('fldNascimentoDia')[index].options.selectedIndex = (nDay - 1);
	}
	
}

function GetNamesToPut(index,div)
{
	var result ="";
	var resultAux ="";

	var nome1 = document.getElementById('FName_Pass1').value;
	var nome2 = document.getElementById('FName_Pass2').value;
	var nome3 = document.getElementById('FName_Pass3').value;
	
	
	var apelido1 = document.getElementById('LName_Pass1').value;
	var apelido2 = document.getElementById('LName_Pass2').value;
	var apelido3 = document.getElementById('LName_Pass3').value;
	
	var BDate1 = document.getElementById('BDate_Pass_1').value;
	var BDate2 = document.getElementById('BDate_Pass_2').value;
	var BDate3 = document.getElementById('BDate_Pass_3').value;
	
	resultAux = result;
	result += GetNamesToPutAux(nome1, apelido1, index, div,1, BDate1);		
	if (result == resultAux)
		SetTruePassenger(1);
	else
		SetFalsePassenger(1);
		
	resultAux = result;
	result += GetNamesToPutAux(nome2, apelido2, index, div,2, BDate2);
	if (result == resultAux)
		SetTruePassenger(2);
	else
		SetFalsePassenger(2);
		
	resultAux = result;
	result += GetNamesToPutAux(nome3, apelido3, index, div,3, BDate3);
	if (result == resultAux)
		SetTruePassenger(3);
	else
		SetFalsePassenger(3);
	
	
	return result;

}


function PassengerIsTheSameThatRegistry(index)
{
	var nome = "";
	var apelido = "";

	if (index != 0)
	{
		if (document.getElementById('FName_Pass'+index) != null)
		{
			//alert(document.getElementById('FName_Pass'+index).value);
			nome = document.getElementById('FName_Pass'+index).value;
			apelido = document.getElementById('LName_Pass'+index).value
		}
	}
	else // caso especial do primeiro passageiro
	{
		nome = document.getElementById('ClientName').value;
		apelido = document.getElementById('ClientLastName').value;
	}

	for(var i = 0; i < document.getElementsByName('fldNome').length; i++)
	{
		//alert(nome + "::" +document.getElementsByName('fldNome')[i].value + " // "+ apelido +  "::" + document.getElementsByName('fldApelido')[i].value + "|||||" + (nome == document.getElementsByName('fldNome')[i].value && apelido == document.getElementsByName('fldApelido')[i].value));
		if (RetiraAcentos(nome) == RetiraAcentos(document.getElementsByName('fldNome')[i].value) && RetiraAcentos(apelido) == RetiraAcentos(document.getElementsByName('fldApelido')[i].value))		
			return true;
	}
	
	return false;
	
}


// Verifica se o nome do passgeiro corresponde ainda ao registo no acto da submissao do form
function CheckPassengersAndRegistry()
{
	var passengerRegistry = document.getElementById('RegistryPassengers').value.split(',');
	var result = "";
	
	for (i = 0; i < passengerRegistry.length; i++)
		if (passengerRegistry[i] == "true")
		{
			// O cliente alterou a mao.
			if(!PassengerIsTheSameThatRegistry(i))
				passengerRegistry[i] = "false";
		}
		
	for (i = 0; i < passengerRegistry.length; i++)
	{
		if (result != "")
			result += ",";
		
		result += passengerRegistry[i];
		
	}
	
	document.getElementById('RegistryPassengers').value = result;
	
}

// true caso o passageiro pertence ao registo, false caso contrario
function SetTruePassenger(index)
{
	var passengerRegistry = document.getElementById('RegistryPassengers').value.split(',');
	
	SetPassengerRegistry(passengerRegistry, "true", index);
}


function SetFalsePassenger(index)
{
	var passengerRegistry = document.getElementById('RegistryPassengers').value.split(',');
		
	SetPassengerRegistry(passengerRegistry, "false", index);
}


function SetPassengerRegistry(passengerRegistry,value, index)
{
	var result = "";
	
	passengerRegistry[index] = value;
	
	for (i = 0; i < passengerRegistry.length; i++)
	{
		if (result != "")
			result += ",";
		
		result += passengerRegistry[i];
	}
	
	document.getElementById('RegistryPassengers').value = result;
}

function AddPassToDiv(div_id,index)
{

	var obj = document.getElementById(div_id);
	var newdiv = document.createElement('div');	
	var result = GetNamesToPut(index, div_id);
	

	if (obj.style.display == 'none')
	{
		obj.style.display='block';
	}
	else
	{
		obj.style.display='none';
	}
	
	
	if (result != "")
		newdiv.innerHTML = result;
	else
		obj.style.display='none';
	newdiv.setAttribute('align','center');
	newdiv.setAttribute('style','padding-bottom:2px;');
	obj.innerHTML = '';		
	obj.appendChild(newdiv);
	obj.backgroundcolor='#FFFFFF';
	newdiv.innerHTML += "<div style='cursor:hand;border-top:solid 1px;' width='100%' onclick='document.getElementById(\""+div_id+"\").style.display=\"none\";'><font class='normal_text'>"+javascriptSentences[41]+"</font></div>";
	
	
	
}


function ChangeIdType(idType, index, clean)
{
	if (clean)
		document.getElementById('passNumber' + index).value = '';

	var ids = document.getElementById('passengerRegistryIds' + index).value.split(',');
	if (ids != "")
	{		
		if (idType == 'BI' && ids[0] != "")
			document.getElementById('passNumber' + index).value = ids[0];
		else if (idType == 'Passport' && ids[1] != "")
			document.getElementById('passNumber' + index).value = ids[1];
	}
		
}
// *** END Funcoes Passageiros de Registo ******


function CheckUncheckUseRegData(sIndex)
{
	if (document.getElementById("fldUseRegData_" + sIndex).value == "1")
	{	
		document.getElementById("fldUseRegData_" + sIndex).value = "0";
	}
	else
	{
		document.getElementById("fldUseRegData_" + sIndex).value = "1";
	}
	
	GetRegisterData(sIndex)
}


function CheckUncheckFF(sIndex)
{
	if (document.getElementById("fldFF_" + sIndex).value == "1")
	{	
		document.getElementById("fldCheckboxFF_" + sIndex).checked = false;
		document.getElementById("divFFData_" + sIndex).style.display = "none";
		document.getElementById("fldFF_" + sIndex).value = "0";
	}
	else
	{
	    document.getElementById("fldCheckboxFF_" + sIndex).checked = true;
		document.getElementById("divFFData_" + sIndex).style.display = "block";
		document.getElementById("fldFF_" + sIndex).value = "1";
	}	
}

function CheckUncheckSuplements(sIndex, sValue)
{
	if (document.getElementById("fldSuplements_" + sIndex).value == "")
	{	
		document.getElementById("fldSupCheckbox_" + sIndex).src = "CheckoutImages/checkbox_on.gif";
		document.getElementById("fldSuplements_" + sIndex).value = sValue;
	}
	else
	{
		document.getElementById("fldSupCheckbox_" + sIndex).src = "CheckoutImages/checkbox_off.gif";
		document.getElementById("fldSuplements_" + sIndex).value = "";
	}	
}

function SelectInsurance(sValue, sIndex)
{
	document.getElementById("fldInsurance").value = sValue;
	
	for (var i = 0; i < document.getElementsByName("fldChkInsurance").length ; i++)
	{
		document.getElementsByName("fldChkInsurance")[i].checked = false;
	}
	
	document.getElementById("fldChkInsurance_" + sIndex).checked = true;
}


function GetRegisterData(sIndex)
{
	if (document.getElementById("fldUseRegData_" + sIndex).value == "1")
	{
		// Caso especial do primeiro passageiro;
		SetTruePassenger(0);
		SetComboBoxOption(document.getElementById("fldTreatment_" + sIndex), document.getElementById("ClientRegDataTreatment").value);
		document.getElementById("fldFirstName_" + sIndex).value = document.getElementById("ClientRegDataFirstName").value;
		document.getElementById("fldLastName_" + sIndex).value = document.getElementById("ClientRegDataLastName").value;
		document.getElementById("fldAge_" + sIndex).value = document.getElementById("ClientRegDataAge").value;
		SetGender(document.getElementById("ClientRegDataGender").value, "Gender", sIndex);
		if (document.getElementById("fldDocType_" + sIndex) != null)
		{
		    SetComboBoxOption(document.getElementById("fldDocType_" + sIndex), document.getElementById("ClientRegDataDocType").value);
		    document.getElementById("fldDocNumber_" + sIndex).value = document.getElementById("ClientRegDataDocNumber").value;
		    document.getElementById("fldDocExpDate_" + sIndex).value = document.getElementById("ClientRegDataDocExpDate").value;		
        }		    
		
		if (document.getElementById('clientFFNComp') != null)
		{
			if (document.getElementById('fldCompanhia0') != null)
			{				
				var codes = document.getElementById('clientFFNComp').value.split(',');				
				var has = false;
				var myCode = document.getElementById('fldCompanhia0').value;
				var index;
				
				// ver se algum dos codigos de companhias do cliente é o da reserva
				for (var a = 0; a < codes.length; a++)
				{
					if (myCode == codes[a])
					{
						index = a;
						has = true;
						break;
					}
				}
				
				if (has)
				{																
					if (document.getElementById('checkFFN_0').checked != true)
					{
						document.getElementById('checkFFN_0').checked = true;
						ShowHideFF('FF_0');
					}
					document.getElementById('myFFN_0').value=document.getElementById('clientFFN').value.split(',')[index];
				}
			}			
		}
	}
	else
	{
		// Caso especial do primeiro passageiro;
		SetFalsePassenger(0);
		document.getElementById("fldTreatment_" + sIndex).value = "";
		document.getElementById("fldFirstName_" + sIndex).value = "";
		document.getElementById("fldLastName_" + sIndex).value = "";
		document.getElementById("fldAge_" + sIndex).value = "";
		SetGender("", "Gender", sIndex);
		if (document.getElementById("fldDocType_" + sIndex) != null)
		{
		    document.getElementById("fldDocType_" + sIndex).value = "";
		    document.getElementById("fldDocNumber_" + sIndex).value = "";
		    document.getElementById("fldDocExpDate_" + sIndex).value = "";
        }		    
		
		if (document.getElementById("fldFFAirVendor_" + sIndex) != null)
		{
			document.getElementById("fldFFNumber_" + sIndex).value = "";
			if (document.getElementById("fldFF_" + sIndex).value == "1")
			{
				CheckUncheckFF(sIndex);
			}
		}
	}
}

function SetComboBoxOption(objComboBox, strOptionValue)
{
	for (var i = 0; i < objComboBox.options.length; i++)
		if (objComboBox.options[i].value == strOptionValue)
			objComboBox.options.selectedIndex = i;
}

function FillContacto(tlm)
{
		
	if (document.getElementById('FillContact').checked == true)
	{
		
		document.getElementsByName('fldNomeCont')[0].value = document.getElementById('ClientFirstName').value + ' ' + document.getElementById('ClientLastName').value;
		document.getElementsByName('fldPhoneContact')[0].value = tlm;
		
	}
	else
	{
		document.getElementsByName('fldNomeCont')[0].value='';
		document.getElementsByName('fldPhoneContact')[0].value='';
	}
	

}

function SetPassengerType(sFldValue, sFldName, sFldCount)
{
	document.getElementById("fld" + sFldName + "_" + sFldCount).value = sFldValue;
	
	if (sFldValue == "CH")
	{	
		document.getElementById("fldChk" + sFldName + "_AD_" + sFldCount).checked = false;
		document.getElementById("fldChk" + sFldName + "_CH_" + sFldCount).checked = true;
		document.getElementById("fldChk" + sFldName + "_IN_" + sFldCount).checked = false;		
	}
	else if (sFldValue == "IN")
	{
		document.getElementById("fldChk" + sFldName + "_AD_" + sFldCount).checked = false;
		document.getElementById("fldChk" + sFldName + "_CH_" + sFldCount).checked = false;
		document.getElementById("fldChk" + sFldName + "_IN_" + sFldCount).checked = true;
	}
	else
	{
		document.getElementById("fldChk" + sFldName + "_AD_" + sFldCount).checked = true;
		document.getElementById("fldChk" + sFldName + "_CH_" + sFldCount).checked = false;
		document.getElementById("fldChk" + sFldName + "_IN_" + sFldCount).checked = false;
	}	
	
	GetAgeBox(sFldValue, sFldCount)
}

function GetAgeBox(val, id)
{
	if (val == "AD")
	{
		document.getElementById("div_AgeCH_" + id).style.display = "none";
		document.getElementById("div_AgeIN_" + id).style.display = "none";
	}
	if (val == "CH")
	{
		document.getElementById("div_AgeCH_" + id).style.display = "block";
		document.getElementById("div_AgeIN_" + id).style.display = "none";
	}
	if (val == "IN")
	{
		document.getElementById("div_AgeCH_" + id).style.display = "none";
		document.getElementById("div_AgeIN_" + id).style.display = "block";
	}
}

function UpdatePrice(valPrice, sOperation)
{
	var valTotalPrice = Number(String(document.getElementById("div_TotalPrice").innerHTML).replace(",", "."));
		
	if (sOperation == "PLUS")
		valTotalPrice += valPrice;	
	else
		valTotalPrice -= valPrice;
		
	document.getElementById('div_TotalPrice').innerHTML = String(valTotalPrice.toFixed(2)).replace(".", ",");
		
	// Vai alterar as taxas de seguranca e aeroporto dinamicamente
	if (document.getElementById('variableTax') != null)
	{
		var aux = Number(document.getElementById('variableTax').innerHTML.replace(",", "."));
		
		if (sOperation == "PLUS")
			document.getElementById('variableTax').innerHTML = (aux + Number(document.getElementById('reservationTaxPerson').value.replace(",","."))).toFixed(2);
		else
			document.getElementById('variableTax').innerHTML = (aux - Number(document.getElementById('reservationTaxPerson').value.replace(",","."))).toFixed(2);
	}
}

function ShowHideDivSup(idSup, idSupPass, valSup, valSupPrice)
{
	var divSupPrice = "div_SupPrice_" + idSup;
	var divSupData = "div_SupData_" + idSupPass;
	var valSupTotal = Number(document.getElementById("fldSupTotal").value);
    
    valSupPrice = Number(String(valSupPrice).replace(",", "."));
    valSupPrice += Number(document.getElementById("reservationTaxPerson").value.replace(",", "."));

	if (document.getElementById(divSupPrice).style.display == "none")
	{
		document.getElementById(divSupPrice).style.display = "block";

		document.getElementById("fldSuplements_" + idSup).value = valSup;
		document.getElementById("fldChkSuplements_" + idSup).checked = true;

		if (document.getElementById(divSupData) != null)
		{
			document.getElementById(divSupData).style.display = "block";
			document.getElementById("fldSupFirstName_" + idSupPass).setAttribute("name", "fldSupFirstName_sup");
			document.getElementById("fldSupLastName_" + idSupPass).setAttribute("name", "fldSupLastName_sup");
			document.getElementById("fldSupGender_" + idSupPass).setAttribute("name", "fldSupGender_sup");
		}
		
		document.getElementById("fldSupTotal").value = valSupTotal + 1;
		UpdatePrice(valSupPrice, "PLUS");
	}
	else
	{
		document.getElementById(divSupPrice).style.display = "none";

		document.getElementById("fldSuplements_" + idSup).value = "";		
		document.getElementById("fldChkSuplements_" + idSup).checked = false;
		
		if (document.getElementById(divSupData) != null)
		{
			document.getElementById(divSupData).style.display = "none";
			document.getElementById("fldSupFirstName_" + idSupPass).setAttribute("name", "fldSupFirstName");
			document.getElementById("fldSupLastName_" + idSupPass).setAttribute("name", "fldSupLastName");
			document.getElementById("fldSupGender_" + idSupPass).setAttribute("name", "fldSupGender");			
		}
	
		document.getElementById("fldSupTotal").value = valSupTotal - 1;
		UpdatePrice(valSupPrice, "MINUS");
	}
}


function GetReservationInfo(field_reservationDesc, text_reservationDesc, field_reservationTypeDesc, text_reservationTypeDesc, field_reservationIcon, text_reservationIcon)
{

	if (field_reservationDesc != null)
	{
		if (document.getElementById(field_reservationDesc) != null)
		{
			document.getElementById(field_reservationDesc).innerHTML = 
			text_reservationDesc ;
		}
	}
	if (field_reservationTypeDesc != null)
	{
		if (document.getElementById(field_reservationDesc) != null)
		{
			document.getElementById(field_reservationTypeDesc).innerHTML = 
			text_reservationTypeDesc ;
		}
	}
	
	if(field_reservationIcon != null)
	{
		document.getElementById(field_reservationIcon).src = 
		text_reservationIcon ;
	}
		

}

function GetComposedReservationInfo(field_reservationDesc2, text_reservationDesc2, field_reservationDesc, text_reservationDesc, field_reservationTypeDesc, text_reservationTypeDesc, field_reservationIcon, text_reservationIcon, field_reservationIcon2, text_reservationIcon2)
{

	if (field_reservationDesc != null)
	{
		if (document.getElementById(field_reservationDesc) != null)
		{
			document.getElementById(field_reservationDesc).innerHTML = 
			text_reservationDesc ;
		}
	}
	if (field_reservationDesc2 != null)
	{
		if (document.getElementById(field_reservationDesc2) != null)
		{
			document.getElementById(field_reservationDesc2).innerHTML = 
			text_reservationDesc2 ;
		}
	}
	if (field_reservationTypeDesc != null)
	{
		if (document.getElementById(field_reservationDesc) != null)
		{
			document.getElementById(field_reservationTypeDesc).innerHTML = 
			text_reservationTypeDesc ;
		}
	}
	
	if(field_reservationIcon != null)
	{
		document.getElementById(field_reservationIcon).src = 
		text_reservationIcon ;
	}
	/*
	if(field_reservationIcon2 != null)
	{
		document.getElementById(field_reservationIcon2).src = 
		text_reservationIcon2 ;
	}
		*/

}

/*
function SubmitForm(formId)
{
	document.getElementById(formId).submit();
}
*/

// Div
/*
function ShowDiv(divID, divControl)
{
	var obj = document.getElementById(divID);	
	document.getElementById(divID).style.display = "block";
	document.getElementById(divControl).value = "1";
}

function HideDiv(formID, divID, divControl)
{
	var obj = document.getElementById(divID);	
	document.getElementById(divID).style.display = "none";
	document.getElementById(divControl).value = "0";
}
*/

// Funções Auxiliares
function ValidValue(value)	
{
	//var value = String(value);
	return value != null && value != "" && value != "undefined";
}

function Error(id, desc)
{
	this.id = id;
	this.desc = desc;
	
	return this;
}

function Trim(str)
{
     return str.replace(/^\s+|\s+$/, ''); 

}


function ValidateEmail(email)
{
	var reg = /^(\w+(?:(\.|\-)\w+)*)@((?:\w+(?:(\.|\-)\w+)*\.)+)([a-z\d]{2,})$/i;			  
	return reg.test(email);
}

function ValidatePassword(pass, minLength)
{
	return String(pass).length >= minLength;
}

function Validation_Login()
{
    return ValidationSimpleLogin();
}

function ValidationSimpleLogin()
{
	var minPassLength = 4;
	var objEmail = document.getElementById("fldEmail");
	var objPassword = document.getElementById("fldPassword");
			
	if (!ValidateEmail(objEmail.value))
	{
		alert("O E-mail não corresponde a um formato válido.");
        objEmail.focus();
		return false;
	}
	
	if (!ValidatePassword(objPassword.value, minPassLength))
	{
		alert("A password deve ter, no mínimo, " + minPassLength + " caracteres.");
		objPassword.focus();
		return false;
	}
		
	return true;
}

function Validation_RecoverPassword()
{
	var objEmail = document.getElementById("fldEmail");
	
	if (objEmail.value == "")
	{
		alert("Por favor, insira o e-mail");
        objEmail.focus();		
		return false;
	}

	if (!ValidateEmail(objEmail.value))
	{
		alert("Por favor, insira um e-mail válido");
		objEmail.focus();		
		return false;
	}

	return true;
}

function RetiraAcentos(Campo) 
{
   //Campo = escape(Campo);
   //var Acentos =  "áàãââÁÀÃÂéêÉÊíÍóõôÓÔÕúÚÜacedilhas";
   var Acentos = "%E1%E0%E3%E2%E2%C1%C0%C3%C2%E9%EA%C9%CA%ED%CD%F3%F5%F4%D3%D4%D5%FA%DA%DC%E7%C7"
   //var Traducao = "AaaaaAAAAeeEEiIoooOOOuUU";
   var Traducao = "aaaaaAAAAeeEEiIoooOOOuUUcC";
   var Posic, Carac;
   var TempLog = "";
   for (var i=0; i < Campo.length; i++)
   {      
	Carac = Campo.charAt(i);
	Posic  = Acentos.indexOf(escape(Carac));
	if (Posic > -1 && escape(Carac).length > 1)
	{
		TempLog += Traducao.charAt(Posic / 3);
		//alert("sim" + Posic);
	}
	else
	{
		TempLog += Campo.charAt(i);
		//alert("nao" + Posic);
	}
   }
      return (TempLog);
}

// Funções Auxiliares de validação de PASSAGEIROS 
function VerifyChar(str)
{
	str = RetiraAcentos(Trim(str));
	
	str = String(str);	
	str = str.replace(" ", "");
	str = str.toUpperCase(); 
	//alert(str);
	var ch;
	if (str == "")	
		return false;
	for (var i = 0; i < str.length; i++)
	{
		ch = str.charAt(i);		
		if ((ch < "A" || "Z" < ch))			 
			return false;
			
	}
	return true;
}

function VerifyNumber(str)
{
	var control = true;
	var ch;
	
	for (var i = 0; i < str.length; i++)
	{
		ch = str.charAt(i);
		if (ch < "0" || "9" < ch) 
			control = false;
	}
	
	return control;
}

function GetDaysInMonth(month)
{
	var minDaysInMonth = 30;
	var maxDaysInMonth = 31;
										
	if (month < 8)
		return (minDaysInMonth + (month % 2));
	return (maxDaysInMonth - (month % 2));
}

function TestIfRegularYear(year)
{	
	return !(((year % 4) == 0 && (year % 100) != 0) || (year % 400) == 0);
}
			
function CheckDateAux(day, month, year) // determina se a data é ou não válida
{
	var control = (TestIfRegularYear(year) ? 28 : 29);
	
	if (day == 0 || month == 0 || year == 0)
		return false;	
	if (month == 2)
		return (day <= control);
	return (day <= GetDaysInMonth(month));
}

function VerifyDate(year, month, day)
{
	if (year != -1 && month != -1 && day != -1) 
		return CheckDateAux(day, month, year);
	return true;
}

function ValidatePassengersAux()
{	
	for (var i = 0; i < document.getElementsByName("fldFirstName").length; i++)
	{
		var currentNameObj = document.getElementsByName("fldFirstName")[i];
		var currentSurnameObj = document.getElementsByName("fldLastName")[i];
		var currentDayObj = document.getElementsByName("fldNascimentoDia")[i];
		var currentMonthObj = document.getElementsByName("fldNascimentoMes")[i];
		var currentYearObj = document.getElementsByName("fldNascimentoAno")[i];
		
		currentNameObj.value = RetiraAcentos(currentNameObj.value);
		currentSurnameObj.value = RetiraAcentos(currentSurnameObj.value);
		
		if (!ValidValue(Trim(String(currentNameObj.value))))
		{	
			currentNameObj.focus();
			
			throw new Error("Passengers", "Por favor, preencha o NOME do passageiro.");
		}
		
		if (!VerifyChar(String(currentNameObj.value)))
		{	
			currentNameObj.focus();
			throw new Error("Passengers", "O NOME dos passageiros apenas aceita letras (exclui acentua%C3%A7%C3%B5es, cedilhas e espa%C3%A7os).\n\nPor favor reescreva o seu nome.");
		}		
		
		if (!ValidValue(Trim(String(currentSurnameObj.value))))
		{	
			currentSurnameObj.focus();
			throw new Error("Passengers", "Por favor, preencha o APELIDO do passageiro.");
		}	
				
		if (!VerifyChar(String(currentSurnameObj.value)))
		{		
			currentSurnameObj.focus();
			throw new Error("Passengers", "O APELIDO dos passageiros apenas aceita letras (exclui acentua%C3%A7%C3%B5es, cedilhas e espa%C3%A7os).\n\nPor favor reescreva o seu nome.");
		}
		
		if (!VerifyDate(currentYearObj.value, currentMonthObj.value, currentDayObj.value))
		{	
			currentDayObj.focus();
			throw new Error("Passengers", "DATA de NASCIMENTO invv%C3%A1lida.");
		}
	}
}

function CorrectTrim(str_var)
{
	var str = String(str_var);
	var result = "";
		
	for (var i = 0; i < str.length; i++)
	{
		if (str.charAt(i) != ' ')
			result += str.charAt(i);
	}
	
	return result;

}

/*
function ValidateSpecialAgreement()
{
	
	var total = 0;
	
	var flag = false;
	
	if (document.getElementsByName('adults_select') != null)
	{
		total = document.getElementsByName('adults_select').length;
		for(i = 0; i < total; i++)
		{
			if (document.getElementsByName('adults_select')[i].options.selectedIndex != 0)
				flag = true;
		}
		
	}

	if (document.getElementsByName('childs_select') != null)
	{
		total = document.getElementsByName('childs_select').length;
		for(i = 0; i < total; i++)
		{
			if (document.getElementsByName('childs_select')[i].display = 'block' && document.getElementsByName('childs_select')[i].options.selectedIndex != 0)
				flag = true;
		}
		
	}


	if (document.getElementsByName('infants_select') != null)
	{
		total = document.getElementsByName('infants_select').length;
		for(i = 0; i < total; i++)
		{
			if (document.getElementsByName('infants_select')[i].options.selectedIndex != 0)
				flag = true;
		}
		
	}

	if (!flag)
		alert(javascriptSentences[37]);
	return true;	

}
*/

function ValidateBenef()
{
    document.getElementById("State").value = "MoreServices";
    document.getElementById("Event").value = "Book";

	if (document.getElementById("div_Benef") != null)
	{
		if (document.getElementById("div_Benef").style.display != "none")
		{
			var sBenefName = "";
			var oBenefName = document.getElementsByName("fldBenefName");
			for (var i = 0; i < oBenefName.length; i++)
			{
				sBenefName = CorrectTrim(String(oBenefName[i].value));
				if (!VerifyChar(sBenefName))
				{						
					alert(javascriptSentences[5]);
					oBenefName[i].focus()
					return false;
				}
			}
		}
	}
	
	if (document.getElementById("totalSpecial") != null && document.getElementById("totalSpecial").value != "0")
	{
		return ValidateAllSpecial();
	}

	return true;
}

function ValidateAges()
{
	var types = document.getElementsByName('fldTipo');
	var days = document.getElementsByName('fldNascimentoDia');
	var months = document.getElementsByName('fldNascimentoMes');
	var years = document.getElementsByName('fldNascimentoAno');
	var dep = document.getElementById('departuredate').value;
	
	var date = new Date();
	var dateAux;
	var today;	
	
	
	var depart = new Date();
	
	
	
	var isleap;
	var feb ;

	
	for (var i=0; i < types.length; i++)
	{		
			
		
		if (types[i].value == "IN")
		{
			isleap = (years[i].value % 4 == 0 && (years[i].value % 100 != 0 || years[i].value % 400 == 0));
			feb = (Number(months[i].value) == 2 && (Number(days[i].value) > 29 || (Number(days[i].value) == 29 && !isleap)));
			date.setFullYear(Number(years[i].value),Number(months[i].value) - 1,Number(days[i].value));	

			depart.setFullYear(Number(dep.split('/')[0]),Number(dep.split('/')[1]) -1 ,Number(dep.split('/')[2]) );
			
			today = new Date();				
			
						
			depart.setYear(depart.getFullYear() - 3);												
			if ( feb || ((Number(months[i].value)==4 || Number(months[i].value)==6 || Number(months[i].value)==9 || Number(months[i].value)==11) && Number(days[i].value)==31))
			{				
				alert(javascriptSentences[43]+(i + 1) +javascriptSentences[44]);									
				return false;
			}
			else if (date.getTime() <= depart.getTime())
			{				
				alert(javascriptSentences[49]+ (i + 1) +javascriptSentences[47]);
				return false;
			}
			else if (date.getTime() > today.getTime())
			{				
				alert(javascriptSentences[43]+ (i + 1) +javascriptSentences[46]);												
				return false;
			}
				
												
			
		}
		
		if (types[i].value == "CH")
		{
		
			dateAux = new Date();
			isleap = (years[i].value % 4 == 0 && (years[i].value % 100 != 0 || years[i].value % 400 == 0));
			feb = (Number(months[i].value) == 2 && (Number(days[i].value) > 29 || (Number(days[i].value) == 29 && !isleap)));
			date.setFullYear(Number(years[i].value),Number(months[i].value) - 1,Number(days[i].value));	
			
			depart.setFullYear(Number(dep.split('/')[0]),Number(dep.split('/')[1]) - 1,Number(dep.split('/')[2]) );
			//date = new Date();
							
			//date.setFullYear(Number(years[i].value),Number(months[i].value) - 1,Number(days[i].value));
			depart.setYear(depart.getFullYear() - 12);
			//alert(date.getDate() + "/" + date.getMonth()  + "/" + date.getYear() + ">" + depart.getDate() + "/" + depart.getMonth() + "/" + depart.getFullYear());		
			//alert(date.getTime() +">"+ depart.getTime());
			dateAux.setFullYear(Number(dep.split('/')[0]),Number(dep.split('/')[1]) -1 ,Number(dep.split('/')[2]) );
			//alert(dateAux.getFullYear());
			dateAux.setYear((Number(dateAux.getFullYear()) - 3));
			//alert(dateAux.getFullYear());			
			
			
					
			if ( feb || ((Number(months[i].value)==4 || Number(months[i].value)==6 || Number(months[i].value)==9 || Number(months[i].value)==11) && Number(days[i].value)==31))
			{				
				alert(javascriptSentences[43]+(i + 1) +javascriptSentences[44]);
				return false;
			}
			else if (date.getTime() <= depart.getTime())
			{
				alert(javascriptSentences[49]+ (i + 1) + javascriptSentences[48]);							
				return false;
			}
			else if (date.getTime() > dateAux.getTime())
			{	
				//alert(date.getFullYear() +" > "+ dateAux.getFullYear());		
				alert(javascriptSentences[49]+ (i+1) +javascriptSentences[45]);
				return false;
			}
				
		}			
	}
	return true;
	
}

function ValidateGuestAux()
{	
	var objTreatment, objFirstName, objLastName, objAge, objGender;
	var objDocType, objDocNumber, objDocExpDate;
	
	for (var i = 0; i < document.getElementsByName("fldFirstName").length; i++)
	{
		if(!document.getElementsByName("fldFirstName")[i].disabled == true)
		{
			objFirstName = document.getElementsByName("fldFirstName")[i];
			objLastName = document.getElementsByName("fldLastName")[i];
			objGender = document.getElementById("fldGender_" + i);
			
			objFirstName.value = CorrectTrim(objFirstName.value);
			objLastName.value = CorrectTrim(objLastName.value);		
			
			if (document.getElementById('fldNascimentoDia') != null)
			{
				if (!ValidateAges())
					return false;
			}
			
			if (document.getElementsByName("fldDocType") != null)
			{
				objDocType = document.getElementsByName("fldDocType")[i];
				objDocNumber = document.getElementsByName("fldDocNumber")[i];
				objDocExpdate = document.getElementsByName("fldDocExpDate")[i];
			}

			// BI e passport obrigatorios se fora da europa
			/*if(document.getElementsByName("fldBI").length != 0 && document.getElementById("passportMandatory").value == "False")
			{
				if (!ValidValue(Trim(String(currentPassportObj.value))))
				{	
					currentPassportObj.focus();
					alert(javascriptSentences[42]);
					return false;
				}
			}*/
			
			objFirstName.value = RetiraAcentos(objFirstName.value);
			objLastName.value = RetiraAcentos(objLastName.value);
			
			if (!ValidValue(Trim(String(objFirstName.value))))
			{	
				objFirstName.focus();
				alert(javascriptSentences[6]);
				return false;
			}

			if (!VerifyChar(String(objFirstName.value)))
			{	
				objFirstName.focus();
				alert(javascriptSentences[7]);
				return false;
			}		
			
			if (!ValidValue(Trim(String(objLastName.value))))
			{	
				objLastName.focus();
				alert(javascriptSentences[8]);
				return false;
			}	
					
			if (!VerifyChar(String(objLastName.value)))
			{	
				objLastName.focus();
				alert(javascriptSentences[9]);
				return false;
			}
			
			if (!ValidValue(Trim(String(objGender.value))))
			{	
				alert(javascriptSentences[53]);
				return false;
			}				
		}
	}
	
	for (var i = 0; i < document.getElementsByName("fldSupFirstName").length; i++)
	{
		if(!SuplementPerson(i))
		{
			objFirstName = document.getElementsByName("fldSupFirstName")[i];
			objLastName = document.getElementsByName("fldSupLastName")[i];
			
			objFirstName.value = RetiraAcentos(objFirstName.value);
			objLastName.value = RetiraAcentos(objLastName.value);
			
			if (!ValidValue(Trim(String(objFirstName.value))))
			{	
				objFirstName.focus();
				alert(javascriptSentences[6]);
				return false;
			}
			
			if (!VerifyChar(String(objFirstName.value)))
			{	
				objFirstName.focus();
				alert(javascriptSentences[7]);
				return false;
			}		
			
			if (!ValidValue(Trim(String(objLastName.value))))
			{	
				objLastName.focus();
				alert(javascriptSentences[8]);
				return false;
			}	
					
			if (!VerifyChar(String(objLastName.value)))
			{	
				objLastName.focus();
				alert(javascriptSentences[9]);
				return false;
			}
		}
	}
	
	if(document.getElementById('totalSpecial')!= null && document.getElementById('totalSpecial').value != "0")
	{		
		return ValidateAllSpecial();
	}
	
	// Coerencia entre nomes vindos do registo
	CheckPassengersAndRegistry();
	
	return true;
}


function SuplementPerson(i)
{
	
	var id;
	id = String(document.getElementsByName("fldNomeSup")[i].id).split('_');
	
	var div = document.getElementById("supl_div_" + id[1] + "_" + id[2] + "_" + id[3]+ "_1");
	
	return div.style.display == 'none';
}

	
function ValidatePaymentsAux()
{	
	var strPaymentMethod = document.getElementById('fldPaymentMethod').value;	
	var strCCType = document.getElementById('fldCCType').value;		
	var objCCNumber = document.getElementById('fldCCNumber');
	var objCCName = document.getElementById('fldCCName');
	var objCCExpDateMonth = document.getElementById('fldCCExpDateMonth');
	var objCCExpDateYear = document.getElementById('fldCCExpDateYear');
	var objCCSecurityCode = document.getElementById('fldCCSecurityCode');
	var objPaymentAuthorization = document.getElementById('fldPaymentAuthorization');
	
	if (strPaymentMethod == "CCRED")
	{
		if (objPaymentAuthorization.value == "NO")	
		{
			alert(javascriptSentences[40]);
			return false;
		}
	
		objCCName.value = RetiraAcentos(objCCName.value);
		if (Trim(objCCName.value)== "" || !VerifyChar(removeSpace(String(objCCName.value))))
		{		
			objCCName.focus();
			alert(javascriptSentences[10]);
			return false;
		}
		
		if (!isCreditCardValid(objCCNumber.value, strCCType))
		{
			objCCNumber.select();
			alert(javascriptSentences[11]);
			return false;
		}

		if (strCCType != "AMEX")
		{
			if (objCCSecurityCode.value == '' || !VerifyNumber(objCCSecurityCode.value) || objCCSecurityCode.value.length != 3)
			{
				objCCSecurityCode.focus();
				alert(javascriptSentences[12]);
				return false;
			}
		} 
		else
		{
			if (objCCSecurityCode.value != '000')
			{
				objCCSecurityCode.focus();
				alert(javascriptSentences[12] + "\nEste tipo de cartão não tem código de segurança");
				return false;
			}		
		}
		
		if (!VerifyDate(objCCExpDateYear.value, objCCExpDateMonth.value, 1))
		{	
			objCCExpDateYear.focus();
			alert(javascriptSentences[13]);
			return false;
		}
				
		var currDate = new Date();
		var currYear = currDate.getFullYear();
		var currMonth = currDate.getMonth()+1;
		var strCurrYear = String(currYear);
		var strCurrMonth = String(currMonth);
		
		if (strCurrMonth.length == 1) strCurrMonth = "0" + strCurrMonth;
	
		if ((String(objCCExpDateYear.value) + String(objCCExpDateMonth.value)) < (strCurrYear + strCurrMonth))
		{
			objCCExpDateYear.focus();
			alert(javascriptSentences[13]);
			return false;
		}		
	}
	
	return true;
}


function ValidateInvoiceData()
{	
    var strInvoiceData = document.getElementById("fldPaymentMethod").value;	
	
	var objAddress = document.getElementById("fldInvoice" + strInvoiceData + "Address");
	var objPostalCode1 = document.getElementById("fldInvoice" + strInvoiceData + "PostalCode1");
	var objPostalCode2 = document.getElementById("fldInvoice" + strInvoiceData + "PostalCode2");
	var objPlace = document.getElementById("fldInvoice" + strInvoiceData + "Place");
	var objCountry = document.getElementById("fldInvoice" + strInvoiceData + "Country");

	if (strInvoiceData == "Comp")
	{
		var objCompany = document.getElementById("fldInvoiceCompany");
	    var objCompNIF = document.getElementById("fldInvoiceCompNIF");
	    
	    if (removeSpace(String(objCompany.value)))
	    {
	        objCompany.focus();
	        alert("O campo da Companhia é obrigatório.");
	        return false;
	    }
	    
	    if (removeSpace(String(objCompNIF.value)))
	    {
	        objCompNIF.focus();
	        alert("O campo do Nº Contribuinte é obrigatório.");
	        return false;
	    }	    
	}
	else
    {        	
	    var objFirstName = document.getElementById("fldInvoice" + strInvoiceData + "FirstName");
	    var objLastName = document.getElementById("fldInvoice" + strInvoiceData + "LastName");
	    
        if (removeSpace(String(objFirstName.value)))
        {
            objFirstName.focus();
            alert("O campo do Nome é obrigatório.");
            return false;
        }
        	    
        if (removeSpace(String(objLastName.value)))
        {
            objLastName.focus();
            alert("O campo do Apelido é obrigatório.");
            return false;
        }        
    }
    
    if (removeSpace(String(objAddress.value)))
    {
        objAddress.focus();
        alert("O campo da Morada é obrigatório.");
        return false;
    }    
    
    if (removeSpace(String(objPostalCode1.value)))
    {
        objobjPostalCode1.focus();
        alert("O campo do Código Postal é obrigatório.");
        return false;
    }    
    
    if (removeSpace(String(objPlace.value)))
    {
        objobjPlace.focus();
        alert("O campo da Localidade é obrigatório.");
        return false;
    }    
	
	return true;
}


function SetGenderValue(idForm, idElem)
{	
	var currentValue = "";
	var count = 0;

	for (var i = 0; i < document.getElementsByTagName("input").length; i++)
	{
		if (document.getElementsByTagName("input").item(i).id == idElem && document.getElementsByTagName("input").item(i).checked)
			currentValue = currentValue + ((count++ > 0) ? "," : "") + document.getElementsByTagName("input").item(i).value;

	}
	document.getElementsByName(idElem)[0].value = currentValue;
}



function SetGenderValue(idForm, idElem)
{	
	var currentValue = "";
	var count = 0;

	for (var i = 0; i < document.getElementsByTagName("input").length; i++)
	{
		if (document.getElementsByTagName("input").item(i).id == idElem && document.getElementsByTagName("input").item(i).checked)
			currentValue = currentValue + ((count++ > 0) ? "," : "") + document.getElementsByTagName("input").item(i).value;

	}
	document.getElementsByName(idElem)[0].value = currentValue;
}


function SetGender(sFldValue, sFldName, sFldCount)
{
	document.getElementById("fld" + sFldName + "_" + sFldCount).value = sFldValue;
	
	if (sFldValue == "M")
	{	
		document.getElementById("fldChk" + sFldName + "_M_" + sFldCount).checked = true;
		document.getElementById("fldChk" + sFldName + "_F_" + sFldCount).checked = false;
	}
	else if (sFldValue == "F")
	{
		document.getElementById("fldChk" + sFldName + "_M_" + sFldCount).checked = false;
		document.getElementById("fldChk" + sFldName + "_F_" + sFldCount).checked = true;	
	}
	else
	{
		document.getElementById("fldChk" + sFldName + "_M_" + sFldCount).checked = false;
		document.getElementById("fldChk" + sFldName + "_F_" + sFldCount).checked = false;	
	}	
}


function BirthDate(total, type)
{
	var today;
	var id;
	var minus;
	var obj;
	var value = 0; 
	var day;
	var month;
	var year;
	
	day = document.getElementById('departuredate').value.split('/')[2];
	month = document.getElementById('departuredate').value.split('/')[1];
	year = document.getElementById('departuredate').value.split('/')[0];
	
	
	for(i=0; i < total; i++)
	{
		if (type == "")		
		{
			
				document.getElementById('fldNascimentoMes').value += ",";
				document.getElementById('fldNascimentoDia').value += ",";
				document.getElementById('fldNascimentoAno').value += ",";								
	
		}
		else
		{
		
			today  = new Date();
			
			today.setFullYear(year,month,day); 
			id = "idade_"+ type + i;
			
			obj = document.getElementById(id);
			
			minus = obj.options[obj.selectedIndex].value;		
			
			if (type == "bebe_")
			{			
				today.setMonth(today.getMonth() - minus);
			}
			else
			{		
				today.setFullYear(today.getFullYear() - minus);
			}
			
			
				value = today.getMonth() + 1;
				document.getElementById('fldNascimentoMes').value += "," + value;
				document.getElementById('fldNascimentoDia').value += "," + today.getDate();
				document.getElementById('fldNascimentoAno').value += "," + today.getFullYear();
		  }
		
			
		
		today = null;			
	}
	
	
}

function Vaildate_Driver()
{
     document.getElementById("State").value = "Passengers";
     document.getElementById("Event").value = "Book";
    
    
    if(Trim(document.getElementById("fldFirstName_0").value) == "" )
    {
        alert("Tem de introduzir o nome do condutor");
        document.getElementById("fldFirstName_0").focus();
        return false;
    }
    
    if (Trim(document.getElementById("fldFirstName_0").value)!= "" && 
	    !VerifyChar( removeSpace(String(document.getElementById("fldFirstName_0").value))) )
    {		
	    alert("O nome do condutor contém caracteres inválidos");
        document.getElementById("fldFirstName_0").focus();
        return false;
    }    
    
    if(Trim(document.getElementById("fldLastName_0").value) == "" )
    {
        alert("Tem de introduzir o apelido do condutor");
        document.getElementById("fldLastName_0").focus();
        return false;
    }
    
    if (Trim(document.getElementById("fldLastName_0").value)!= "" && 
	    !VerifyChar( removeSpace(String(document.getElementById("fldLastName_0").value))) )
    {		
	    alert("O apelido do condutor contém caracteres inválidos");
        document.getElementById("fldLastName_0").focus();
        return false;
    } 
    
    if(Trim(document.getElementById("fldGender_0").value) == "" )
    {
        alert("Tem de seleccionar o sexo do condutor");        
        return false;
    }
    
    if(Trim(document.getElementById("fldAge_0").value) == "" )
    {
        alert("Tem de introduzir a idade do condutor");        
        document.getElementById("fldAge_0").focus();
        return false;
    }
    
    if(String(Number(document.getElementById("fldAge_0").value)) == "NaN" )
    {
        alert("A idade do condutor não é válida");  
        document.getElementById("fldAge_0").focus();      
        return false;
    }
    
    if(!CheckDateAux(document.getElementById("DrivingLicenceIssuedDate_1").options[document.getElementById("DrivingLicenceIssuedDate_1").selectedIndex].value,
    document.getElementById("DrivingLicenceIssuedDate_2").options[document.getElementById("DrivingLicenceIssuedDate_2").selectedIndex].value,
    document.getElementById("DrivingLicenceIssuedDate_3").options[document.getElementById("DrivingLicenceIssuedDate_3").selectedIndex].value))
    {
        alert("A data de obtenção da carta de condução não é válida");
        return false;
    }
    
    var today= new Date();
    today = new Date(today.getFullYear(),today.getMonth(),today.getDate());
    
    
    var issueDate = new Date(document.getElementById("DrivingLicenceIssuedDate_3").options[document.getElementById("DrivingLicenceIssuedDate_3").selectedIndex].value,document.getElementById("DrivingLicenceIssuedDate_2").options[document.getElementById("DrivingLicenceIssuedDate_2").selectedIndex].value - 1,document.getElementById("DrivingLicenceIssuedDate_1").options[document.getElementById("DrivingLicenceIssuedDate_1").selectedIndex].value);
    
    if(today.getTime() < issueDate.getTime())
    {
        alert("A data de obtenção da carta de condução não pode ser superior ao dia actual");
        return false;
    }    
    
    
    if(!CheckDateAux(document.getElementById("DrivingLicenceValidDate_1").options[document.getElementById("DrivingLicenceValidDate_1").selectedIndex].value,
    document.getElementById("DrivingLicenceValidDate_2").options[document.getElementById("DrivingLicenceValidDate_2").selectedIndex].value,
    document.getElementById("DrivingLicenceValidDate_3").options[document.getElementById("DrivingLicenceValidDate_3").selectedIndex].value))
    {
        alert("A data de validade da carta de condução não é válida");
        return false;
    }
    
    var validateDate = new Date(document.getElementById("DrivingLicenceValidDate_3").options[document.getElementById("DrivingLicenceValidDate_3").selectedIndex].value,document.getElementById("DrivingLicenceValidDate_2").options[document.getElementById("DrivingLicenceValidDate_2").selectedIndex].value - 1,document.getElementById("DrivingLicenceValidDate_1").options[document.getElementById("DrivingLicenceValidDate_1").selectedIndex].value);
     if(today.getTime() > validateDate.getTime())
    {
        alert("A data de validade da carta de condução não pode ser inferior ao dia actual");
        return false;
    }    
    
    if(Trim(document.getElementById("DrivingLicenceNumber").value) == "" )
    {
        alert("Tem de introduzir o número da carta de condução");        
        document.getElementById("DrivingLicenceNumber").focus();
        return false;
    }
    
    
    return true;
}

function Validate_Guests()
{
	var result;
	
	// Caso nao seja cheque viagem
	if (document.getElementsByName('fldEmailCheque').length == 0)
	{
		// Caso especial de validacao de datas em escadelas.
		// Isto input esta criado na xslt shortvacations
		if (document.getElementById('validToGo') != null && document.getElementById('validToGo').value == '0')
		{
			alert(javascriptSentences[15]);
			return false;
		}

        document.getElementById("State").value = "Passengers";
        document.getElementById("Event").value = "Book";
				
		var pass = ValidateGuestAux();
			
		if (!pass)
			return false;
				
		var control = true;
		var str;
		if (document.getElementsByName('fldMyContactPhone')[0] != null && pass == true)
		{
			str = String(document.getElementsByName('fldMyContactPhone')[0].value);
				
			if(String(document.getElementsByName('fldMyContactPhone')[0].value).indexOf(' ') != -1)
			{
				alert(javascriptSentences[35]);
				return false;
			}
				
			if (String(document.getElementsByName('fldMyContactPhone')[0].value).indexOf('+') != -1)
			{
				alert(javascriptSentences[34]);
				return false;
			}
				
			if (Trim(str) == "" || str.length < 9 || str.length > 15)
			{
				document.getElementsByName('fldMyContactPhone')[0].focus()
				alert(javascriptSentences[32]);
				return false;
			}
					
			for (var i = 0; i < str.length; i++)
			{
				ch = str.charAt(i);
				if (ch < "0" || "9" < ch)
				{
					document.getElementsByName('fldMyContactPhone')[0].focus()
					alert(javascriptSentences[14]);
					return false;
					
				}
			}

			if (Trim(document.getElementsByName('fldContactPhone')[0].value) != "")		
			{
				str = String(document.getElementsByName('fldContactPhone')[0].value);
				
				if(String(document.getElementsByName('fldContactPhone')[0].value).indexOf(' ') != -1)
				{
					alert(javascriptSentences[35]);
					return false;
				}
				
				if (String(document.getElementsByName('fldContactPhone')[0].value).indexOf('+') != -1)
				{
					alert(javascriptSentences[34]);
					return false;
				}
					
				if (Trim(str) == "" || str.length < 9 || str.length > 15)
				{
					document.getElementsByName('fldContactPhone')[0].focus()
					alert(javascriptSentences[33]);
					return false;
				}
					
				NumberAux(str);
			}
		}
			
		if (document.getElementsByName('fldContactName').length > 0)
		{
			document.getElementsByName('fldContactName')[0].value = RetiraAcentos(document.getElementsByName('fldContactName')[0].value);
			
			if (Trim(document.getElementsByName('fldContactName')[0].value)!= "" && 
				!VerifyChar( removeSpace(String(document.getElementsByName('fldNomeCont')[0].value))) )
			{		
				document.getElementsByName('fldContactName')[0].focus();
				alert(javascriptSentences[7]);
				return false;
			}
		}
			
		if (control == false)
			alert(javascriptSentences[14]);
		
		return  pass && control;
	}	
	else
	{
		if (Trim(document.getElementsByName('fldEmailCheque')[0].value) == 0 || !ValidateEmail(Trim(document.getElementsByName('fldEmailCheque')[0].value)))
		{			
			alert(javascriptSentences[2]);			
			return false;
		}
		if (Trim(document.getElementsByName('fldPhone')[0].value) == 0 || !NumberAux(Trim(document.getElementsByName('fldPhone')[0].value)))
		{
			alert(javascriptSentences[14]);
			return false;
		}
		if (Trim(document.getElementsByName('fldFirstName')[0].value) == 0 || !VerifyChar(Trim(document.getElementsByName('fldFirstName')[0].value)))
		{
			alert(javascriptSentences[7]);
			return false;
		}
		if (Trim(document.getElementsByName('fldLastName')[0].value) == 0 || !VerifyChar(Trim(document.getElementsByName('fldLastName')[0].value)))
		{
			alert(javascriptSentences[9]);
			return false;
		}
		
        document.getElementById("State").value = "Passengers";
        document.getElementById("Event").value = "Book";
	}			
}


function NumberAux(str)
{
	str = String(str);
	
	for (var i = 0; i < str.length; i++)
	{
		ch = str.charAt(i);
		if (ch < "0" || "9" < ch)
		{
			return false;
		}												
	}
	
	return true;
}


function removeSpace(s) 
{  
  
  var temp = "";
  
  for(var i=0; i < s.length ;i++)
  {
	if(s.charAt(i) != ' ')
		temp += s.charAt(i);
  }
  
  return temp
  
  
}



function Validate_Vacations_Guests()
{
	try
	{
		ValidateGuestAux();
        document.getElementById("State").value = "Passengers";
        document.getElementById("Event").value = "Book";
	}
	catch(e)
	{
		alert(decodeURIComponent(e.desc));
		return false;
	}
}

function Validation_MoreServices(divID)
{
	try
	{
		ValidateMoreServicesAux(divID)
        document.getElementById("State").value = "MoreServices";
        document.getElementById("Event").value = "Book";
	}
	catch(e)
	{
		alert(decodeURIComponent(e.desc));
		return false;
	}
}

function Validation_Payments()
{
    document.getElementById("State").value = "Payment";
    document.getElementById("Event").value = "AditionalData";
	return (ValidatePaymentsAux() && ValidateInvoiceData());
}

function Validation_Payment_Ok()
{
    document.getElementById("State").value = "Payment";
    document.getElementById("Event").value = "AditionalData";
    return true;
}

function Validation_Payments_Other()
{
    document.getElementById("State").value = "Payment";
    document.getElementById("State").value = "Thanks";
	return ValidatePaymentsAux();
}

function MoreServices_Back()
{
	try
	{
        document.getElementById("State").value = "MoreServices";
        document.getElementById("Event").value = "Back";
	}
	catch(e)
	{
		alert(decodeURIComponent(e.desc));
		return false;
	}		
}

function SetFormActionNonSSLUrl(aFormId) {

	if ( typeof(aFormName) == "undefined" )
		return;
	if ( typeof(NonSSLCheckoutUrlPage) == "undefined" )
		return;
		
	document.getElementById(aFormId).action = NonSSLCheckoutUrlPage;
	
}

/*
function MoreServices_Cancel()
{
	try
	{
        document.getElementById("State").value = "MoreServices";
        document.getElementById("Event").value = "Cancel";	
		SetFormActionNonSSLUrl('Form1');
		SubmitForm('Form1');
		return true;
	}
	catch(e)
	{
		alert(decodeURIComponent(e.desc));
		return false;
	}	
}
*/

function Payments_Back()
{
	try
	{
        document.getElementById("State").value = "MoreServices";
        document.getElementById("Event").value = "Back";	
	}
	catch(e)
	{
		alert(decodeURIComponent(e.desc));
		return false;
	}		
}

/*
function Payments_Cancel()
{
	try
	{
        document.getElementById("State").value = "Payment";
        document.getElementById("Event").value = "Cancel";	
		SetFormActionNonSSLUrl('Form1');
		SubmitForm('Form1');
		//return true;
	}
	catch(e)
	{
		alert(decodeURIComponent(e.desc));
		//return false;
	}	
}
*/

function Validation_Conclusion()
{
    document.getElementById("State").value = "Reservation";
    return true;
}

/*
function Reservation_Cancel()
{
	try
	{
        document.getElementById("State").value = "Reservation";
        document.getElementById("Event").value = "Cancel";	
		SetFormActionNonSSLUrl('Form1');
		SubmitForm('Form1');
		//return true;
	}
	catch(e)
	{
		alert(decodeURIComponent(e.desc));
		//return false;
	}	
}
*/

function Validation_OK()
{
	try
	{
        document.getElementById("State").value = "PrintReservation";
	}
	catch(e)
	{
		alert(decodeURIComponent(e.desc));
		return false;
	}
}

function Confirmation_OK()
{
	try
	{
        document.getElementById("State").value = "Thanks";
	}
	catch(e)
	{
		alert(decodeURIComponent(e.desc));
		return false;
	}
}

function openPopupInfo(popupType)
{
	window.open("/popupInfoCheckout.aspx?popupType="+popupType, "", "width=400px, height=320px");
}


/* ======================================================================
FUNCTION:	isCreditCardValid(strCC_Number, strCC_Type)
INPUT:		strCC_Number - A string representing a credit card number
				strCC_Type - A string representing a credit card type
								(Visa, American Express, Master Card, ...)
RETURNS:		true, if the credit card is valid (number, and type)
				false, otherwise.
====================================================================== */
function isCreditCardValid(strCC_Number, strCC_Type) 
{
	var CCTypeValidation;
	var strCC_Number_len = strCC_Number.length;
	var strCC_Type_Upper = String(removeSpace(strCC_Type.toUpperCase()));

	// O Número precisa de ter pelo menos 4 digitos para se efectuar as validações
	if (strCC_Number_len < 4)
		return false;
		
	var firstDigit = parseInt(strCC_Number.substr(0, 1), 10);
	var secondDigit = parseInt(strCC_Number.substr(1, 1), 10);
	var first4Digits = strCC_Number.substr(0, 4);
	
	switch (strCC_Type_Upper)
	{
		case "VISA":
			// Sample number: 4111 1111 1111 1111 (16 digits)
			if (((strCC_Number_len == 16) || (strCC_Number_len == 13)) 
				&& (firstDigit == 4))
				CCTypeValidation = true;
			else
				CCTypeValidation = false;
			break;
		case "MASTERCARD":
		case "EUROCARD":
			// Sample number: 5500 0000 0000 0004 (16 digits)
			if ((strCC_Number_len == 16) && (firstDigit == 5) 
				&& ((secondDigit >= 1) && (secondDigit <= 5)))
				CCTypeValidation = true;
			else
				CCTypeValidation = false;
			break;
		case "AMEX":
		case "AMERICANEXPRESS":
			// Sample number: 340000000000009 (15 digits)
			if ((strCC_Number_len == 15) && (firstDigit == 3)
				&& ((secondDigit == 4) || (secondDigit == 7)))
				CCTypeValidation = true;
			else
				CCTypeValidation = false;
			break;
		case "DINERSCLUB":
		case "CARTEBLANCHE":
		case "EBLANCHE":
			// Sample number: 30000000000004 (14 digits)
			if ((strCC_Number_len == 14) && (firstDigit == 3)
				&& ((secondDigit == 0) || (secondDigit == 6) || (secondDigit == 8)))
				CCTypeValidation = true;
			else
				CCTypeValidation = false;
			break;
		case "DISCOVER":
			// Sample number: 6011000000000004 (16 digits) 
			if ((strCC_Number_len == 16) && (first4Digits == "6011"))
				CCTypeValidation = true;
			else
				CCTypeValidation = false;
			break;
		case "ENROUTE":
			// Sample number: 201400000000009 (15 digits)
			if ((strCC_Number_len == 15) && 
				((first4Digits == "2014") || (first4Digits == "2149")))
				CCTypeValidation = true;
			else
				CCTypeValidation = false;
			break;
		case "JCB":
			// Sample number:
			if ((strCC_Number_len == 16)
				&& ((first4Digits == "3088")
				|| (first4Digits == "3096")
				|| (first4Digits == "3112")
				|| (first4Digits == "3158")
				|| (first4Digits == "3337")
				|| (first4Digits == "3528")))
				CCTypeValidation = true;
			else
				CCTypeValidation = false;
			break;
		default:
			CCTypeValidation = true;
			break;
	}

	if (CCTypeValidation)
		return isCreditCardNumberValid(strCC_Number);
	else
		return false;
}

/* ======================================================================
FUNCTION:	isCreditCardNumberValid(strCC_Number)
INPUT:		strCC_Number - A string representing a credit card number
RETURNS:		true, if the credit card number passes the Luhn Mod-10 test. 
				false, otherwise.
====================================================================== */
function isCreditCardNumberValid(strCC_Number) 
{
	var auxDigit, i, tproduct, sum, mul, strCC_Number_len;
	
	sum = 0;
	mul = 1;
	strCC_Number_len = strCC_Number.length;

	// Encoding only works on cards with less than 19 digits
	if (strCC_Number_len > 19)
		return false;

	for (i = 0; i < strCC_Number_len; i++) 
	{
		auxDigit = strCC_Number.substr(strCC_Number_len - i - 1, 1);
		tproduct = parseInt(auxDigit, 10) * mul;
		
		if (tproduct >= 10)
			sum += (tproduct % 10) + 1;
		else
			sum += tproduct;

		if (mul == 1)
			mul++;
		else
			mul--;
	}

	if (sum % 10 == 0)
		return true;
	else
		return false;
}

