﻿/* ============================================================================
FUNCTION:	SetElemValue(sDocElem, sElemValue)
INPUT:		sDocElem - A string with the Document Element Name
            sElemValue - A string with the value to assign to the Element
=============================================================================== */
var submitForm = false;

function SetElemValue(sDocElem, sElemValue)
{
	document.getElementById(sDocElem).value = sElemValue;
}


function ShowBenef(valInsurancePrice)
{	
	var valPrice = String(valInsurancePrice);
	
	if (valPrice == "-1")
	{
		valPrice = "0";
	}
	
	var nPrice = Math.round(Number(valPrice) * 100) / 100;
	var nTotalPrice = Number(document.getElementById("divReservationDataTotalPrice").innerHTML.replace(',', '.'));
	nTotalPrice -= Number(document.getElementById("fldInsuranceOldPrice").value)
	nTotalPrice += nPrice;
	
	document.getElementById("divReservationDataTotalPrice").innerHTML = String(nTotalPrice.toFixed(2)).replace('.', ',');
    document.getElementById("divTotalPriceValue").innerHTML = String(nTotalPrice.toFixed(2)).replace('.', ',');	        
    document.getElementById("fldPaymentValue").value = String(document.getElementById("divTotalPriceValue").innerHTML).replace(',', '.');
    UpdatePartialPaymentValue();
    document.getElementById("divPartialPriceValue").innerHTML = String(document.getElementById("fldPartialPaymentValue").value).replace('.', ',');

	if (valInsurancePrice != "-1")
	{
        document.getElementById("fldInsuranceOldPrice").value = valInsurancePrice.replace(",", ".");
	}
	else
	{
        document.getElementById("fldInsuranceOldPrice").value = "0";	
	}
}


function BackGatherData()
{
    document.getElementById("State").value = "Payment";
    document.getElementById("Event").value = "Book";
	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 ValidDate(sDate)
{
    var day = parseInt(sDate.split('-')[0], 10);
    var month = parseInt(sDate.split('-')[1], 10);
    var year = parseInt(sDate.split('-')[2], 10);
    
    if (isNaN(day) || isNaN(month) || isNaN(year))
        return false;
    else
        return CheckDateAux(day, month, year);
}

function FormatDateToNumber(sDate)
{
    var day = sDate.split('-')[0]
    var month = sDate.split('-')[1]
    var year = sDate.split('-')[2]
    
    if (day.length == 1)
        day = "0" + day;

    if (month.length == 1)
        month = "0" + month;        
    
    return parseInt("" + year + month + day, 10);
}

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("Data Inválida.");
					return false;
			}
			else if (!CheckEndDate(clientID))
			{
				  document.getElementById('validToGo').value = "0";
				  alert("Dia de partida não pode ultrapassar o intervalo de datas disponível.");
				  return false;
			}
			else if (!CheckWeekDay(date.getDay()))
			{
                document.getElementById('validToGo').value = "0";
                alert("Dia da semana inválido.");
                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("A pessoa que escolheu não está registada como sendo uma criança.");
		}
		if (!insertedYear && document.getElementsByName('fldTipo')[index].value == "IN")
		{
			alert("A pessoa que escolheu não está registada como sendo um bebe.");
		}		
		//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.getElementsById('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'>Fechar</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 CheckUncheckInvoiceUseRegData()
{
    var objchk = document.getElementById("fldChkInvoiceUseRegData");
    
    if (objchk.checked)
    {
        document.getElementById("fldInvoiceNIF").value = document.getElementById("ClientRegDataNIF").value;
        document.getElementById("fldInvoiceFirstName").value = document.getElementById("ClientRegDataFirstName").value;        
        document.getElementById("fldInvoiceLastName").value = document.getElementById("ClientRegDataLastName").value;
        document.getElementById("fldInvoiceCompanyName").value = document.getElementById("ClientRegDataCompanyName").value;
        document.getElementById("fldInvoiceAddress").value = document.getElementById("ClientRegDataAddress").value;
        document.getElementById("fldInvoiceAddressCity").value = document.getElementById("ClientRegDataAddressCity").value;
        document.getElementById("fldInvoicePostalCode").value = document.getElementById("ClientRegDataPostalCode").value;
        document.getElementById("fldInvoicePostalCodeExt").value = document.getElementById("ClientRegDataPostalCodeExt").value;
        document.getElementById("fldInvoicePostalPlace").value = document.getElementById("ClientRegDataPostalPlace").value;
        document.getElementById("fldInvoiceEmail").value = document.getElementById("ClientRegDataEmail").value;
        document.getElementById("fldInvoicePhone").value = document.getElementById("ClientRegDataPhone").value;        
    }        
    else
    {
        document.getElementById("fldInvoiceNIF").value = "";
        document.getElementById("fldInvoiceFirstName").value = "";        
        document.getElementById("fldInvoiceLastName").value = "";   
        document.getElementById("fldInvoiceCompanyName").value = "";
        document.getElementById("fldInvoiceAddress").value = "";
        document.getElementById("fldInvoiceAddressCity").value = "";
        document.getElementById("fldInvoicePostalCode").value = "";
        document.getElementById("fldInvoicePostalCodeExt").value = "";
        document.getElementById("fldInvoicePostalPlace").value = "";
        document.getElementById("fldInvoiceEmail").value = "";
        document.getElementById("fldInvoicePhone").value = "";        
    }        
}

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("fldBirthDate_" + sIndex).value = document.getElementById("ClientRegDataBirthDate").value;
		//document.getElementById("fldPhone_" + sIndex).value = document.getElementById("ClientRegDataPhone").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("fldBirthDate_" + sIndex).value = "";
		//document.getElementById("fldPhone_" + 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(sFldName + "_" + sFldCount).value = sFldValue;
	
	GetAgeBox(sFldValue, sFldCount)
}

function GetAgeBox(val, id)
{
	
	if (val == "AD")
	{
		document.getElementById('div_SupAgeCH_' + id).style.display = 'none';
		document.getElementById('div_SupAgeIN_' + id).style.display = 'none';
	}
	if (val == "CH")
	{
		document.getElementById('div_SupAgeCH_' + id).style.display = 'block';
		document.getElementById('div_SupAgeIN_' + id).style.display = 'none';
		
	}
	if (val == "IN")
	{
		document.getElementById('div_SupAgeCH_' + id).style.display = 'none';
		document.getElementById('div_SupAgeIN_' + id).style.display = 'block';
	}
}

function UpdatePrice(valPrice, sOperation, sFlagPrices)
{
	var nPrice = Math.round(Number(valPrice) * 100) / 100;
	var nTotalPrice = Number(document.getElementById("divReservationDataTotalPrice").innerHTML.replace(',', '.'));
		
	if (sOperation == "PLUS")
		nTotalPrice += nPrice;	
	else
		nTotalPrice -= nPrice;
		
    document.getElementById("divReservationDataTotalPrice").innerHTML = String(nTotalPrice.toFixed(2)).replace('.', ',');
    if (sFlagPrices == "all")
    {            
	    document.getElementById("divTotalPriceValue").innerHTML = String(nTotalPrice.toFixed(2)).replace('.', ',');	        
	    document.getElementById("fldPaymentValue").value = String(document.getElementById("divTotalPriceValue").innerHTML).replace(',', '.');
	    UpdatePartialPaymentValue();
        document.getElementById("divPartialPriceValue").innerHTML = String(document.getElementById("fldPartialPaymentValue").value).replace('.', ',');
    }	    
}

function UpdatePartialPaymentValue()
{
    var objPaymentValue = document.getElementById("fldPaymentValue");
    var objPartialPaymentValue = document.getElementById("fldPartialPaymentValue");

    objPartialPaymentValue.value = Number(Number(objPaymentValue.value) * 0.25).toFixed(2);
}

function UpdateSuplementsPrice(valPrice, sOperation)
{
	var nPrice = Math.round(Number(valPrice) * 100) / 100;
	var nTotalPrice = Number(document.getElementById("divReservationDataSuplementsPrice").innerHTML.replace(',', '.'));
		
	if (sOperation == "PLUS")
		nTotalPrice += nPrice;
	else
		nTotalPrice -= nPrice;
		
    document.getElementById("divReservationDataSuplementsPrice").innerHTML = String(nTotalPrice.toFixed(2)).replace('.', ',');
}

function UpdateNumPassengers(sOperation)
{
	var nPassengers = Number(document.getElementById("div_NumPassengers").innerHTML);
		
	if (sOperation == "PLUS")
		nPassengers += 1;
	else
		nPassengers -= 1;
		
    document.getElementById("div_NumPassengers").innerHTML = String(nPassengers);
}

function ShowHideDivSup(idSup, valSupPrice, sFlagPassenger, sFlagPrices)
{
	var divSupData = "div_SupData_" + idSup;
	var objCountSuplements = document.getElementById("fldCountSuplements");
    
    valSupPrice = Number(String(valSupPrice).replace(",", "."));
    //valSupPrice += Number(document.getElementById("reservationTaxPerson").value.replace(",", "."));

	if (document.getElementById("fldSuplements_" + idSup).checked)
	{
		if (document.getElementById(divSupData) != null)
		{
			document.getElementById(divSupData).style.display = "block";
			document.getElementById("fldSupTreatment_" + idSup).setAttribute("name", "fldSupTreatment_sel");
			document.getElementById("fldSupFirstName_" + idSup).setAttribute("name", "fldSupFirstName_sel");
			document.getElementById("fldSupLastName_" + idSup).setAttribute("name", "fldSupLastName_sel");
			document.getElementById("fldSupGender_" + idSup).setAttribute("name", "fldSupGender_sel");
            document.getElementById("fldChkSupPassengerType_" + idSup).setAttribute("name", "fldSupPassengerType_sel");
            document.getElementById("fldSupAgeCH_" + idSup).setAttribute("name", "fldSupAgeCH_sel");
            document.getElementById("fldSupAgeIN_" + idSup).setAttribute("name", "fldSupAgeIN_sel");
		}
		
		objCountSuplements.value = Number(objCountSuplements.value) + 1;
		UpdatePrice(valSupPrice, "PLUS", sFlagPrices);
		UpdateSuplementsPrice(valSupPrice, "PLUS");
		
		if (sFlagPassenger == "YES")
            UpdateNumPassengers("PLUS");
	}
	else
	{
		if (document.getElementById(divSupData) != null)
		{
			document.getElementById(divSupData).style.display = "none";
			document.getElementById("fldSupTreatment_" + idSup).setAttribute("name", "fldSupTreatment");
			document.getElementById("fldSupFirstName_" + idSup).setAttribute("name", "fldSupFirstName");
			document.getElementById("fldSupLastName_" + idSup).setAttribute("name", "fldSupLastName");
			document.getElementById("fldSupGender_" + idSup).setAttribute("name", "fldSupGender");
            document.getElementById("fldChkSupPassengerType_" + idSup).setAttribute("name", "fldSupPassengerType");
            document.getElementById("fldSupAgeCH_" + idSup).setAttribute("name", "fldSupAgeCH");
            document.getElementById("fldSupAgeIN_" + idSup).setAttribute("name", "fldSupAgeIN");
		}
	
		objCountSuplements.value = Number(objCountSuplements.value) - 1;
		UpdatePrice(valSupPrice, "MINUS", sFlagPrices);
		UpdateSuplementsPrice(valSupPrice, "MINUS");
		
        if (sFlagPassenger == "YES")
            UpdateNumPassengers("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 SubmitForm()
{
    var objForm = document.getElementById("Form1");
    objForm.submit();
}

function ValidateServices()
{
    document.getElementById("State").value = "Services";
    document.getElementById("Event").value = "Services";
    
    SubmitForm();
}        

function Validation_Login()
{
    var flag_login = "";
    
    if (document.getElementById("hidFlagLogin") != null)
        flag_login = document.getElementById("hidFlagLogin").value;

    if (flag_login == "login")
    {
        document.getElementById("State").value = "Login";
        document.getElementById("Event").value = "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 ValidationSimpleLoginNoPass()
{
	var minPassLength = 4;
	var objEmail = document.getElementsByName("fldEmail")[0];	
			
	if (!ValidateEmail(objEmail.value))
	{
		alert("O E-mail nao corresponde a um formato valido.");
        objEmail.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 == 0 || month == 0)
        return false;

	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("O Serviço ");
	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("Nome do Beneficiário Inválido");
					oBenefName[i].focus()
					false;
				}
			}
		}
	}
	
	if (document.getElementById("totalSpecial") != null && document.getElementById("totalSpecial").value != "0")
	{
		submitForm = ValidateAllSpecial();
		return submitForm;
	}

    submitForm = true;
	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("Data de nascimento do passageiro " + (i + 1) + " incorrecta.");									
				return false;
			}
			else if (date.getTime() <= depart.getTime())
			{				
				alert("O passageiro " + (i + 1) + " possui mais de 2 anos no dia de partida.");
				return false;
			}
			else if (date.getTime() > today.getTime())
			{				
				alert("Data de nascimento do passageiro " + (i + 1) + " maior que a data de hoje.");												
				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("Data de nascimento do passageiro " + (i + 1) + " incorrecta.");
				return false;
			}
			else if (date.getTime() <= depart.getTime())
			{
				alert("O passageiro " (i + 1) + " possui mais de 11 anos no dia de partida.");							
				return false;
			}
			else if (date.getTime() > dateAux.getTime())
			{	
				//alert(date.getFullYear() +" > "+ dateAux.getFullYear());		
				alert("O passageiro " + (i+1) + " tem menos de 2 anos.");
				return false;
			}
				
		}			
	}
	return true;
	
}

function ValidateGuestAux()
{	
	var objTreatment, objFirstName, objLastName, objGender;
	var objBirthdateDay, objBirthdateMonth, objBirthdateYear;

	
	for (var i = 0; i < document.getElementsByName("fldFirstName").length; i++)
	{
		if(!document.getElementsByName("fldFirstName")[i].disabled == true)
		{
		    objPassengerType = document.getElementsByName("fldPassengerType")[i];
			objFirstName = document.getElementsByName("fldFirstName")[i];
			objLastName = document.getElementsByName("fldLastName")[i];
			objGender = document.getElementById("fldGender_" + i);
			objBirthdateDay = document.getElementsByName("fldBirthdateDay")[i];
			objBirthdateMonth = document.getElementsByName("fldBirthdateMonth")[i];
			objBirthdateYear = document.getElementsByName("fldBirthdateYear")[i];
			objLimitBirthdateCH =  document.getElementById("fldLimitBirthdateCH");
			objLimitBirthdateIN =  document.getElementById("fldLimitBirthdateIN");
			
			objFirstName.value = CorrectTrim(objFirstName.value);
			objLastName.value = CorrectTrim(objLastName.value);					
			
			objFirstName.value = RetiraAcentos(objFirstName.value);
			objLastName.value = RetiraAcentos(objLastName.value);
			
			if (!ValidValue(Trim(String(objFirstName.value))))
			{	
				objFirstName.focus();
				alert("Por favor, preencha o Nome do passageiro.");
				return false;
			}			

			if (!VerifyChar(String(objFirstName.value)))
			{	
				objFirstName.focus();
				alert("O Nome do passageiro possui caracteres inválidos.\n\nPor favor reescreva o seu nome.");
				return false;
			}
			
			if (!ValidValue(Trim(String(objLastName.value))))
			{	
				objLastName.focus();
				alert("Por favor, preencha o Apelido do passageiro.");
				return false;
			}	
					
			if (!VerifyChar(String(objLastName.value)))
			{	
				objLastName.focus();
				alert("O Apelido do passageiro possui caracteres inválidos.\n\nPor favor reescreva o seu nome.");
				return false;
			}
			
			if (!ValidValue(Trim(String(objGender.value))))
			{	
				alert("Por favor escolha o sexo do passageiro.");
				return false;
			}
			
			if (objBirthdateDay.value != "" && objBirthdateMonth.value != "" && objBirthdateYear.value != "")
			{	
			    var valBirthdate = objBirthdateDay.value + "-" + objBirthdateMonth.value + "-" + objBirthdateYear.value;
			    
			    if (!ValidDate(String(valBirthdate)))
			    {	
				    alert("A Data de Nascimento do Passageiro não é válida.");
				    return false;
			    }
			    
			    if (objPassengerType.value == "CH" && objLimitBirthdateCH != null)
                {
                    if (FormatDateToNumber(valBirthdate) < FormatDateToNumber(objLimitBirthdateCH.value))
                    {
                        alert("A Idade do Passageiro (Criança) é posterior a 12 anos.\nA idade da Criança tem que ser entre 2 e 12 anos");
                        return false;
                    }

                    if (FormatDateToNumber(valBirthdate) >= FormatDateToNumber(objLimitBirthdateIN.value))
                    {
                        alert("A Idade do Passageiro (Criança) é igual ou inferior a 2 anos.\nA idade da Criança tem que ser entre 2 e 12 anos");
                        return false;
                    }                    
                }                			    
                
			    if (objPassengerType.value == "IN" && objLimitBirthdateIN != null)
                {
                    if (FormatDateToNumber(valBirthdate) < FormatDateToNumber(objLimitBirthdateIN.value))
                    {
                        alert("A Idade do Passageiro (Bébé) é igual ou posterior a 2 anos.\nA idade do Bébé tem que ser inferior a 2 anos (24 meses).");
                        return false;
                    }                    
                }                
            }			    
		}
	}
	
	for (var i = 0; i < document.getElementsByName("fldSupFirstName").length; i++)
	{

        if(document.getElementById('fldSuplements_' + i).checked == true)
		{

		    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("Por favor, preencha o NOME do passageiro do suplemento.");
				    return false;
			    }
    			
			    if (!VerifyChar(String(objFirstName.value)))
			    {	
				    objFirstName.focus();
				    alert("O NOME dos passageiros possui caracteres inválidos.\n\nPor favor reescreva o seu nome.");
				    return false;
			    }		
    			
			    if (!ValidValue(Trim(String(objLastName.value))))
			    {	
				    objLastName.focus();
				    alert("Por favor, preencha o APELIDO do passageiro.");
				    return false;
			    }	
    					
			    if (!VerifyChar(String(objLastName.value)))
			    {	
				    objLastName.focus();
				    alert("O APELIDO dos passageiros  possui caracteres inválidos.\n\nPor favor reescreva o seu nome.");
				    return false;
			    }
		    }
		 }
		 else
		 {
		    return true;
		 }   
	}
	
	return true;
}


function SuplementPerson(i)
{

	var div = document.getElementById("div_SupData_" + i);
	
	if (div == null)
	    return false;
    else
        if (div.style.display == "none")
            return false;
        else
            return true;                        
}

	
function ValidatePaymentsAux()
{	
	var strPaymentMethod = document.getElementById('fldPaymentMethod').value;	

    var objForm = document.getElementById("Form1");
	var objCCType = objForm.fldCCType;
	var strCCType = "";
	
	for (var i = 0; i < objCCType.length; i++)
    {
        if (objCCType[i].checked)
            strCCType = objCCType[i].value
    }
   
	var objCCNumber = document.getElementById('fldCCNumber');
	var objCCFirstName = document.getElementById('fldCCFirstName');
	var objCCLastName = document.getElementById('fldCCLastName');
	var objCCExpDateMonth = document.getElementById('fldCCExpDateMonth');
	var objCCExpDateYear = document.getElementById('fldCCExpDateYear');
	var objCCSecurityCode = document.getElementById('fldCCSecurityCode');
	var objPaymentAuthorization = document.getElementById('fldPaymentAuthorization');
	
	if (strPaymentMethod == "CCRED")
	{	  
		objCCFirstName.value = RetiraAcentos(objCCFirstName.value);
		if (Trim(objCCFirstName.value)== "" || !VerifyChar(removeSpace(String(objCCFirstName.value))))
		{		
			objCCFirstName.focus();
			alert("Nome Constante no Cartão Inválido");
			return false;
		}	
		
		objCCLastName.value = RetiraAcentos(objCCLastName.value);
		if (Trim(objCCLastName.value)== "" || !VerifyChar(removeSpace(String(objCCLastName.value))))
		{		
			objCCLastName.focus();
			alert("Apelido Constante no Cartão Inválido");
			return false;
		}		
		
		/*if (!isCreditCardValid(objCCNumber.value, strCCType))
		{		    
			objCCNumber.select();
			alert("Número do Cartão Inválido");
			return false;
		}*/
		
		if (strCCType != "AMEX")
		{
			if (objCCSecurityCode.value == '' || !VerifyNumber(objCCSecurityCode.value) || objCCSecurityCode.value.length != 3)
			{
				objCCSecurityCode.focus();
				alert("Código de Segurança Inválido");
				return false;
			}
		}
		else
		{
			if (objCCSecurityCode.value != '000')
			{
				objCCSecurityCode.focus();
				alert("Código de Segurança Inválido\nEste tipo de cartão não tem código de seguranca");
				return false;
			}		
		}
		
		if (!VerifyDate(objCCExpDateYear.value, objCCExpDateMonth.value, 1))
		{	
			objCCExpDateYear.focus();
			alert("Data de Validade Incorrecta");
			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("Data de Validade Incorrecta");
			return false;
		}		
		
		/*if (objPaymentAuthorization.value == "NO")	
		{
			alert("Tem que assinalar que autoriza o pagamento com cartão de crédito.");
			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 SetGender(sFldValue, sFldName, sFldCount)
{
    if(document.getElementById("fld" + sFldName + "_" + sFldCount) != null)
    {    
        if (sFldValue.toUpperCase() == "M" || sFldValue.toUpperCase() == "F")
            document.getElementById("fld" + sFldName + "_" + sFldCount).value = sFldValue;
        else
            document.getElementById("fld" + sFldName + "_" + sFldCount).value = "";
    }
    
	if(String(sFldName).toLowerCase().indexOf("supgender") == -1)
	{
	    if (sFldValue == "M")
	    {	
		    document.getElementById("fldChkGender_M_" + sFldCount).checked = true;
		    document.getElementById("fldChkGender_F_" + sFldCount).checked = false;
	    }
	    else if (sFldValue == "F")
	    {
		    document.getElementById("fldChkGender_M_" + sFldCount).checked = false;
		    document.getElementById("fldChkGender_F_" + sFldCount).checked = true;	
	    }
	    else
	    {
		    document.getElementById("fldChkGender_M_" + sFldCount).checked = false;
		    document.getElementById("fldChkGender_F_" + sFldCount).checked = false;	
	    }
	}	
	else
	{
	    if (sFldValue == "M")
	    {	
		    document.getElementById("fldChkSupGender_M_" + sFldCount).checked = true;
		    document.getElementById("fldChkSupGender_F_" + sFldCount).checked = false;
	    }
	    else if (sFldValue == "F")
	    {
		    document.getElementById("fldChkSupGender_M_" + sFldCount).checked = false;
		    document.getElementById("fldChkSupGender_F_" + sFldCount).checked = true;	
	    }
	    else
	    {
		    document.getElementById("fldChkSupGender_M_" + sFldCount).checked = false;
		    document.getElementById("fldChkSupGender_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 ValidateReservation()
{
    var bResult = ValidateGuestAux() && ValidatePaymentsAux() && ValidateInvoiceAux();
    
    if (bResult)
    {    
        document.getElementById("State").value = "Reservation";
        document.getElementById("Event").value = "Book";
    
        SubmitForm();
    }
}

function ValidateReservationPayment()
{
    var bResult = ValidatePaymentsAux() && ValidateInvoiceAux();
    
    if (bResult)
    {    
        document.getElementById("State").value = "Reservation";
        document.getElementById("Event").value = "Payment";
    
        SubmitForm();
    }
}

function ValidatePassengers()
{
    document.getElementById("State").value = "Passengers";
    document.getElementById("Event").value = "Book";

    if (Validate_Guests())
        SubmitForm();
}


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("Data Inválida.");
			return false;
		}

		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("No Número de Telefone não use espaços entre os dígitos");
				return false;
			}
				
			if (String(document.getElementsByName('fldMyContactPhone')[0].value).indexOf('+') != -1)
			{
				alert("No Número de Telefone use o prefixo 00 em vez de +");
				return false;
			}
				
			if (Trim(str) == "" || str.length < 9 || str.length > 15)
			{
				document.getElementsByName('fldMyContactPhone')[0].focus()
				alert("Número de Telefone tem que ter entre 9 a 15 Dígitos");
				return false;
			}
			else
			{
			    
			    if(document.getElementById("fldContactPhone") != null)
			    {
			        document.getElementById("fldContactPhone").value = document.getElementsByName('fldMyContactPhone')[0].value;
			    }        			
		    	
			}
					
			for (var i = 0; i < str.length; i++)
			{
				ch = str.charAt(i);
				if (ch < "0" || "9" < ch)
				{
					document.getElementsByName('fldMyContactPhone')[0].focus()
					alert("Número de Telefone Inválido");
					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("No Número de Telefone não use espaços entre os dígitos");
					return false;
				}
				
				if (String(document.getElementsByName('fldContactPhone')[0].value).indexOf('+') != -1)
				{
					alert("No Número de Telefone use o prefixo 00 em vez de +");
					return false;
				}
					
				if (Trim(str) == "" || str.length < 9 || str.length > 15)
				{
					document.getElementsByName('fldContactPhone')[0].focus()
					alert("Número de Telefone de Contacto tem entre 9 a 14 Dígitos");
					return false;
				}
					
				NumberAux(str);
			}
			
			if(document.getElementById("fldContactFirstName") != null && document.getElementById("fldContactFirstName").value == "")
			{
			    alert("Tem de introduzir o nome de contacto em viagem");
			    document.getElementById("fldContactFirstName").focus();
			    return false;			    
			}
			
			if(document.getElementById("fldContactLastName") != null && document.getElementById("fldContactLastName").value == "")
			{
			    alert("Tem de introduzir o ultimo nome de contacto em viagem");
			    document.getElementById("fldContactLastName").focus();
			    return false;			    
			}
			
			if(document.getElementById("fldContactLastName") != null && document.getElementById("fldContactFirstName") != null)
			{
			    document.getElementById("fldContactName").value = document.getElementById("fldContactFirstName").value + " " + document.getElementById("fldContactLastName").value;
			}			
			
		}
			
		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("O NOME dos passageiros possui caracteres inválidos.\n\nPor favor reescreva o seu nome.");
				return false;
			} */			
			
		}
			
		if (control == false)
			alert("Número de Telefone Inválido");
		
		submitForm = pass && control;
		var retVal = pass && control;
		
		if(!retVal)
		    return false;
		else
		    SubmitForm();
	}	
	else
	{
		if (Trim(document.getElementsByName('fldEmailCheque')[0].value) == 0 || !ValidateEmail(Trim(document.getElementsByName('fldEmailCheque')[0].value)))
		{			
			alert("O E-mail não corresponde a um formato válido.");			
			return false;
		}
		if (Trim(document.getElementsByName('fldPhone')[0].value) == 0 || !NumberAux(Trim(document.getElementsByName('fldPhone')[0].value)))
		{
			alert("Número de Telefone Inválido");
			return false;
		}
		if (Trim(document.getElementsByName('fldFirstName')[0].value) == 0 || !VerifyChar(Trim(document.getElementsByName('fldFirstName')[0].value)))
		{
			alert("O NOME dos passageiros possui caracteres inválidos.\n\nPor favor reescreva o seu nome.");
			return false;
		}
		if (Trim(document.getElementsByName('fldLastName')[0].value) == 0 || !VerifyChar(Trim(document.getElementsByName('fldLastName')[0].value)))
		{
			alert("O APELIDO dos passageiros  possui caracteres inválidos.\n\nPor favor reescreva o seu nome.");
			return false;
		}
	}
	
    return true;			
}


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 ValidateCancelReservation()
{
    document.getElementById("State").value = "Reservation";
    document.getElementById("Event").value = "Cancel";

    SubmitForm();
}

function ValidateContinueReservation()
{
    document.getElementById("State").value = "Reservation";
    document.getElementById("Event").value = "Continue";

    if (ValidateContinueReservationAux())
        SubmitForm();
}

function ValidateContinueReservationAux()
{
    var objEmail = document.getElementById("fldMyEmail");
    var objPhone = document.getElementById("fldMyPhone");
	
	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 valido");
		objEmail.focus();		
		return false;
	}
	
	if (objPhone.value == "")
	{
		alert("Por favor, insira o telefone");
        objPhone.focus();		
		return false;
	}	

	return true;
}

function ValidateDocumentation()
{
    document.getElementById("State").value = "Documentation";
    document.getElementById("Event").value = "AditionalData";

    if (ValidateDocumentationAux())
        SubmitForm();
}


function ValidateInvoiceAux()
{
    var objInvoiceData = document.getElementById("fldInvoiceData");
    var objInvoiceNIF = document.getElementById("fldInvoiceNIF");
    var objInvoiceFirstName = document.getElementById("fldInvoiceFirstName");
    var objInvoiceLastName = document.getElementById("fldInvoiceLastName");
    var objInvoiceCompanyName = document.getElementById("fldInvoiceCompanyName");
    var objInvoiceAddress = document.getElementById("fldInvoiceAddress");
    var objInvoiceAddressCity = document.getElementById("fldInvoiceAddressCity");
    var objInvoicePostalCode = document.getElementById("fldInvoicePostalCode");
    var objInvoicePostalCodeExt = document.getElementById("fldInvoicePostalCodeExt");
    var objInvoicePostalPlace = document.getElementById("fldInvoicePostalPlace");
    var objInvoiceEmail = document.getElementById("fldInvoiceEmail");
    var objInvoicePhone = document.getElementById("fldInvoicePhone");    

    if (objInvoiceData.value == "YES")
    {    
        if (objInvoiceNIF.value == "")
        {
            alert("O Nº de Contribuinte é obrigatório.");
            objInvoiceNIF.focus();
            return false;
        }    
    
        if (objInvoiceCompanyName.value == "")
        {
            alert("A Empresa é obrigatório.");
            objInvoiceCompanyName.focus();
            return false;
        }    
    
        if (objInvoiceAddress.value == "")
        {
            alert("A Morada é obrigatória.");
            objInvoiceAddress.focus();
            return false;
        }            
        
        if (objInvoicePostalCode.value == "")
        {
            alert("O Código Postal é obrigatório.");
            objInvoicePostalCode.focus();
            return false;
        }               
    
        if (objInvoiceEmail.value == "")
        {
	        alert("O E-mail é obrigatório.");
            objInvoiceEmail.focus();
	        return false;        
        }
        else
        {
    	    if (!ValidateEmail(objInvoiceEmail.value))
	        {
		        alert("O E-mail não corresponde a um formato válido.");
                objInvoiceEmail.focus();
		        return false;
	        }
        }                    
    }

    return true;
}

function ValidateLowFareInvoice()
{
    if(String(Number(document.getElementById("fldInvoiceRegNIF").value)) == "NaN" || String(document.getElementById("fldInvoiceRegNIF").value) == "")
    {
        alert("Tem de introduzir o NIF para a factura");
        document.getElementById("fldInvoiceRegNIF").focus();
        return false;
    }
    
    if(String(document.getElementById("fldInvoiceRegFirstName").value) == "")
    {
        alert("Tem de introduzir o nome da factura");
        document.getElementById("fldInvoiceRegFirstName").focus();
        return false;
        
    }
    
    if(String(document.getElementById("fldInvoiceRegAddress").value) == "")
    {
        alert("Tem de introduzir a morada da factura");
        document.getElementById("fldInvoiceRegAddress").focus();
        return false;
    }
    
   if(String(Number(document.getElementById("fldInvoiceRegPostalCode1").value)) == "NaN" || String(document.getElementById("fldInvoiceRegPostalCode1").value) == "")
    {
        alert("Codigo postal invalido");
        document.getElementById("fldInvoiceRegPostalCode1").focus();
        return false;
    }
    
    if(String(Number(document.getElementById("fldInvoiceRegPostalCode2").value)) == "NaN" || String(document.getElementById("fldInvoiceRegPostalCode2").value) == "")
    {
        alert("Codigo postal invalido");
        document.getElementById("fldInvoiceRegPostalCode2").focus();
        return false;
    }
    
    if(String(document.getElementById("fldInvoiceRegPostalPlace").value) == "")
    {
        alert("Tem de introduzir a localidade");
        document.getElementById("fldInvoiceRegPostalPlace").focus();
        return false;
    }
    
     if(String(document.getElementById("fldInvoiceRegCountry").value) == "")
    {
        alert("Tem de introduzir o pais");
        document.getElementById("fldInvoiceRegCountry").focus();
        return false;
    }
    
    if(String(Number(document.getElementById("fldInvoiceRegPhone").value)) == "NaN" || String(document.getElementById("fldInvoiceRegPhone").value) == "")
    {
        alert("Telefone invalido");
        document.getElementById("fldInvoiceRegPhone").focus();
        return false;
    }
    
    if(!ValidateEmail(document.getElementById("fldInvoiceRegEmail").value))
    {
        alert("Tem de introduzir um email valido");
        document.getElementById("fldInvoiceRegEmail").focus();
        return false;
    }
    
    return true;
   
    
}

function ValidateLowFarePaymentAndPassengers()
{
    document.getElementById("State").value = "Passengers";
    document.getElementById("Event").value = "Book";
    
    submitForm = Validate_Guests();
       
    
    if(!submitForm)
        return submitForm;
    
    //submitForm = Validation_Invoicing();
    submitForm = ValidateLowFareInvoice();
    
    if(!submitForm)
        return submitForm;
    
    submitForm = ValidatePaymentsAux();
	return submitForm;
}

function Validation_Payments()
{
    document.getElementById("State").value = "Payment";
    document.getElementById("Event").value = "Book";
    
	submitForm = ValidatePaymentsAux();
	
    if (submitForm)
        SubmitForm();
}

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(NonSSLCheckOutUrl) == "undefined" )
		return;
		
	document.getElementById(aFormId).action = NonSSLCheckOutUrl;
	
}

/*
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) 
{
    //alterado para que passe sempre, independentemente de ser válido ou n...
    return true;
           
	var CCTypeValidation;
	var strCC_Number_len = strCC_Number.length;
	var strCC_Type_Upper = String(removeSpace(strCC_Type.toUpperCase()));
	
	//alert(strCC_Type);
	// 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;
}

function UseSameDataOnContacts(aObj, aPhone)
{   
    var fldFirstName = document.getElementById("fldContactFirstName");
    var fldLastName = document.getElementById("fldContactLastName");    
    var fldContactName = document.getElementById("fldContactName");
    
    if(document.getElementById("fldContactPhone") != null)
        document.getElementById("fldContactPhone").value = aPhone;
    
    if(aObj.checked)
    {
        fldFirstName.value = document.getElementById("ClientRegDataFirstName").value;
        fldLastName.value = document.getElementById("ClientRegDataLastName").value;        
        fldContactName.value = fldFirstName.value + " " + fldLastName.value;
    }
    else
    {
        fldFirstName.value = "";
        fldLastName.value = "";        
        fldContactName.value = "";
        document.getElementById("fldContactPhone").value = "";    
    }
    
}

function BackToSearchResults(page_action)
{
    var objForm = document.getElementById("Form1");
    
    for (var i = 0; i < objForm.elements.length; i++)
    {
        if (objForm.elements[i].name.substring(0,3) == "ES_")
             objForm.elements[i].name = objForm.elements[i].name.substring(3);
    }        
    
    objForm.action = page_action;
    objForm.submit();   
}

function BackToCheckoutServices()
{
    document.getElementById("State").value = "Services";
    document.getElementById("Event").value = "Back";
	document.getElementById("Form1").submit();
}

function BackToCheckoutPassengers()
{
    document.getElementById("State").value = "Passengers";
    document.getElementById("Event").value = "Back";
	document.getElementById("Form1").submit();
}

function BackToCheckoutDocumentation()
{
    document.getElementById("State").value = "Documentation";
    document.getElementById("Event").value = "Back";
	document.getElementById("Form1").submit();
}

/* ==============================================================================
FUNCTION:	OpenPopupWindow(winURL, winName, winFeatures)
- Opens a new browser window with the parameters passed into the function
============================================================================== */
function OpenPopupWindow(winURL, winName, winFeatures) 
{
	var objWin = window.open(winURL, winName, winFeatures);
	objWin.focus();
}
