function cancelaReserva(){
         var d = document.cancelar;
         var i = 0;
         var answer;
         for ( i = 0 ; i < d.qtdReservas.value ; i++ ){
             inp = eval("d.reserva"+i);
             if ( inp.checked ){
                answer = confirm("Tem certeza que deseja cancelar a reserva selecionada ?")
                if (answer){
                   alert("Foi enviado ao e-mail do solicitante uma mensagem de confirmação de cancelamento da reserva.");
                   return true;
                }else{
                   return false;
                }
             }
         }
alert("É necessário escolher uma reserva para cancelar.");
return false;
}

function setTarifa(tarifa){
         var d = document.escolheQuarto;
         d.tarQ.value = tarifa;
return true;
}

function setTipoPag(pag){
         var d = document.cadastro;
         d.tipoPag.value = pag;
return true;
}

function fecharJanela(){
         window.close();
}

function abreCartao(){
       var d = document.cadastro;
       var i = 0;

       if ( d.garantida.checked ){
         for ( i = 1 ; i <= 3 ; i++ ){
             inp = eval("d.descricao"+i);
             inp.disabled = 0;
         }
         }else{
         for ( i = 1 ; i <= 3 ; i++ ){
             inp = eval("d.descricao"+i);
             inp.disabled = 1;
         }
         }
         d.cartao.disabled = inp.disabled;
         d.codseg.disabled = inp.disabled;
         d.validade.disabled = inp.disabled;
         
}

function validaQuarto(){
         var d = document.escolheQuarto;
         var i;
         var ret = false;
         var rettar = false;

         if ( d.tarChecked1.value == "0" ){

           for ( i = 1 ; i <= d.nq.value ; i++ ){
              inp = eval("d.qx"+i);
              if ( inp.checked ){
                 ret = true;

              inp = eval("d.tar"+i);
              if ( inp.checked ){
                 rettar = true;
              }

              }
           }
           }else if ( d.tarChecked1.value == "1" ){
         
           for ( i = 1 ; i <= d.nq.value ; i++ ){
              inp = eval("d.qx"+i);
              if ( inp.checked ){
                 ret = true;

              /*inp = eval("d.tar"+i);
              if ( inp.checked ){
                 rettar = true;
              }*/

              if ( d.grupo.value == "EG" ){
              inp = eval("d.tar"+i+"E");
              if ( inp.checked ){
                 rettar = true;
              }

              inp = eval("d.tar"+i+"G");
              if ( inp.checked ){
                 rettar = true;
              }
              }else if ( d.grupo.value == "H" ){
              inp = eval("d.tar"+i+"H");
              if ( inp.checked ){
                 rettar = true;
              }
              }

              }
           }

         }

if ( !ret ){
   alert("Escolha o quarto!");
   return false;
   }
else if ( !rettar ){
   alert("Escolha o valor da tarifa!");
   return false;
   }
   
return true;
}

function maskDate(){
var d = document.cadastro;
var data = d.nasc.value;

if (data.length == 2 ){
   if ( data[1] == '/' )
      d.nasc.value = '0'+ data[0];

   d.nasc.value += "/";
}else if (data.length == 5 ){
      if ( data[4] == '/' ){
         dAux = data[0] + data[1] + data[2];
         d.nasc.value = dAux + '0' + data[3];
         }
      d.nasc.value += "/";
}
}

function substituiChar(objTrocar){
         var xstr = objTrocar.value;
         objTrocar.value = xstr.replace(/'/gi,"`");
         xstr = objTrocar.value;
         objTrocar.value = xstr.replace(/"/gi,"`");
}

function validaCadastro(){
var d = document.cadastro;
var cardType, c;
var ret = false;

if ( d.grupo.value != '' ){
// Clientes Especiais (NET, Comissionada, Agencia)
if ( d.solicitante.value == '' ){
    alert("O campo `Solicitante/Requestor` deve ser preenchido.");
		d.solicitante.focus();
		return false;
}
substituiChar(d.solicitante);

if ( d.email.value == '' ){
    alert("O campo `E-mail` deve ser preenchido.");
		d.email.focus();
		return false;
}

if ( d.nome.value == '' ){
    alert("O campo `Nome Completo/Full Name` deve ser preenchido.");
		d.nome.focus();
		return false;
}
substituiChar(d.nome);

if ( d.nasc.value == '' ){
    alert("O campo `Data de Nasc/Date Born` deve ser preenchido.");
		d.nasc.focus();
		return false;
}

for ( i = 1 ; i <= 3 ; i++ ){
    inp = eval("d.pagamento"+i);
    if ( inp.checked ){
       ret = true;
    }
}
if ( ret == false ){
   alert("O campo `Forma de Pagamento/Payment` deve ser escolhido.");
   return false;
}
return true;
}else{
// Clientes Normais
if ( d.solicitante.value == '' ){
    alert("O campo `Solicitante/Requestor` deve ser preenchido.");
		d.solicitante.focus();
		return false;
}
substituiChar(d.solicitante);

if ( d.nome.value == '' ){
    alert("O campo `Nome Completo/Full Name` deve ser preenchido.");
		d.nome.focus();
		return false;
}
substituiChar(d.nome);

if ( d.nasc.value == '' ){
    alert("O campo `Data de Nasc/Date Born` deve ser preenchido.");
		d.nasc.focus();
		return false;
}
if ( d.profissao.value == '' ){
    alert("O campo `Profissão/Occupation` deve ser preenchido.");
		d.profissao.focus();
		return false;
}
substituiChar(d.profissao);

if ( d.nacionalidade.value == '' ){
    alert("O campo `Nacionalidade/Nationality` deve ser preenchido.");
		d.nacionalidade.focus();
		return false;
}
substituiChar(d.nacionalidade);

if ( d.idade.value == '' ){
    alert("O campo `Idade/Age` deve ser preenchido.");
		d.idade.focus();
		return false;
}
if ( !d.sexo[0].checked && !d.sexo[1].checked ){
    alert("O campo `Sexo/Gender` deve ser preenchido.");
		d.sexo[0].focus();
		return false;
}
if ( d.documento.value == '' ){
    alert("O campo `Documento de Identidade/Passport/Travel Document` deve ser preenchido.");
		d.documento.focus();
		return false;
}
substituiChar(d.documento);

if ( d.endereco.value == '' ){
    alert("O campo `Endereço/Address` deve ser preenchido.");
		d.endereco.focus();
		return false;
}
substituiChar(d.endereco);

if ( d.cep.value == '' ){
    alert("O campo `CEP/Zip Code` deve ser preenchido.");
		d.cep.focus();
		return false;
}
substituiChar(d.cep);

if ( d.estado.value == '' ){
    alert("O campo `Estado/State` deve ser preenchido.");
		d.estado.focus();
		return false;
}
substituiChar(d.estado);

if ( d.cidade.value == '' ){
    alert("O campo `Cidade/City` deve ser preenchido.");
		d.cidade.focus();
		return false;
}
substituiChar(d.cidade);

if ( d.pais.value == '' ){
    alert("O campo `País/Country` deve ser preenchido.");
		d.pais.focus();
		return false;
}
substituiChar(d.pais);

if ( d.garantida.checked ){

for ( i = 1 ; i <= 3 ; i++ ){
    inp = eval("d.descricao"+i);

    if ( inp.checked ){
       cardType = inp.value;
       ret = true;
    }
}
if ( ret == false ){
   alert("É necessário escolher uma bandeira de cartão de crédito.");
   return false;
}


if ( d.cartao.value == '' ){
    alert("O campo `Número/Number` deve ser preenchido.");
		d.cartao.focus();
		return false;
}
substituiChar(d.cartao);

if ( !isValidCreditCardNumber(d.cartao.value, cardType) ){
    alert("Número de cartão de crédito inválido.");
		d.cartao.focus();
		return false;
}

if ( d.codseg.value == '' ){
    alert("O campo `Cod. Segurança/Security Code` deve ser preenchido.");
		d.codseg.focus();
		return false;
}
substituiChar(d.codseg);

if ( d.validade.value == '' ){
    alert("O campo `Validade/Validity` deve ser preenchido.");
		d.validade.focus();
		return false;
}
substituiChar(d.validade);
}

substituiChar(d.placa);
substituiChar(d.cpf);
substituiChar(d.telres);
substituiChar(d.telcom);
substituiChar(d.obs);
return true;
}

}

function isValidCreditCardNumber(cardNumber, cardType){
    var isValid = false;
    var ccCheckRegExp = /[^\d ]/;
    isValid = !ccCheckRegExp.test(cardNumber);
    if (isValid){
        var cardNumbersOnly = cardNumber.replace(/ /g,"");
        var cardNumberLength = cardNumbersOnly.length;
        var lengthIsValid = false;
        var prefixIsValid = false;
        var prefixRegExp;
    switch(cardType){
        case "mastercard":
            lengthIsValid = (cardNumberLength == 16);
            prefixRegExp = /^5[1-5]/;
        break;
        case "visa":
            lengthIsValid = (cardNumberLength == 16 || cardNumberLength == 13);
            prefixRegExp = /^4/;
        break;
        case "amex":
            lengthIsValid = (cardNumberLength == 15);
            prefixRegExp = /^3(4|7)/;
        break;
        default:
            prefixRegExp = /^$/;
            alert("Card type not found");
    }

    prefixIsValid = prefixRegExp.test(cardNumbersOnly);
    isValid = prefixIsValid && lengthIsValid;
    }
    if (isValid){
        var numberProduct;
        var numberProductDigitIndex;
        var checkSumTotal = 0;
        for (digitCounter = cardNumberLength - 1; digitCounter >= 0; digitCounter--){
            checkSumTotal += parseInt (cardNumbersOnly.charAt(digitCounter));
            digitCounter--;
            numberProduct = String((cardNumbersOnly.charAt(digitCounter) * 2));
            for (var productDigitCounter = 0; productDigitCounter < numberProduct.length; productDigitCounter++){
                checkSumTotal += parseInt(numberProduct.charAt(productDigitCounter));
            }
        }
        isValid = (checkSumTotal % 10 == 0);
    }

    return isValid;
}


function continuaCadastrado(){
         var d = document.continuaCadastro;
         var i = 0;
         for ( i = 0 ; i < d.qtdCadastros.value ; i++ ){
             if ( d.codigo[i].checked ){
                   return true;
             }
         }
alert("É necessário escolher um hóspede cadastrado para continuar ou clique em `Novo / New` para um novo cadastro.");
return false;
}

function calculaIdade(){
d = document.cadastro;

hoje = new Date();

ano = hoje.getFullYear();

mes = hoje.getMonth()+1;
if ( mes < 10 )
   mes = "0" + mes;
else
   mes = "" + mes;
   
dia = hoje.getUTCDate();
if ( dia < 10 )
   dia = "0" + dia;
else
   dia = "" + dia;

   	array_data = d.nasc.value.split("/");
   	
    if ( parseInt(ano + mes + dia) <= parseInt(array_data[2] + array_data[1] + array_data[0]) ){
       alert ("Data de nascimento inválida.");
       d.nasc.value = "";
       return false;
   	}
   	
	if ( array_data.length != 3 )
      	 return false;

   	var idade;
   	idade = hoje.getFullYear() - array_data[2];

   	if (hoje.getMonth() + 1 - array_data[1] > 0)
        d.idade.value = idade;
	else if (hoje.getMonth() + 1 - array_data[1] < 0)
        d.idade.value = idade - 1;
	else if (hoje.getMonth() + 1 - array_data[1] == 0){
		 	if (hoje.getUTCDate() - array_data[0] > 0) 
				d.idade.value = idade;
			else if (hoje.getUTCDate() - array_data[0] < 0) 
				d.idade.value = idade - 1;
			else
				d.idade.value = idade;
	}	 
		
/*   	else if (hoje.getUTCDate() - dia >= 0)
        d.idade.value = idade + 1;*/
}

function validaForm(){
           d = document.data;
           
           hoje = new Date();
           anoAtual = hoje.getFullYear();
           mesAtual = hoje.getMonth()+1;
           diaAtual = hoje.getDate();
           
           if ( parseInt(mesAtual) < 10 )
              mesAtual = '0'+parseInt(mesAtual);
           if ( parseInt(diaAtual) < 10 )
              diaAtual = '0'+parseInt(diaAtual);
           
           dh = ''+anoAtual+mesAtual+diaAtual;

           barras = d.datac.value.split("/");
           if (barras.length == 3){
              dc = barras[2] + barras[1] + barras[0];
           }
           barras = d.datas.value.split("/");
           if (barras.length == 3){
              ds = barras[2] + barras[1] + barras[0];
           }
           if (parseInt(dc) >= parseInt(ds)){
                     alert("A data de chegada deve anteceder a de saída");
                     d.datac.focus();
                     return false;
           }
           if (parseInt(dc) < parseInt(dh)){
                     alert("A data de chegada não pode anteceder a data de hoje");
                     d.datac.focus();
                     return false;
           }
           if ( parseInt(d.adultos.value) + parseInt(d.criancas.value) > 4 ){
                     alert("Os apartamentos acomodam até 4 pessoas entre andultos e crianças");
                     d.criancas.focus();
                     return false;
           }
           
return true;
}

function isEmail(){
  var d = document.mail;
	if (d.email.value.search(/^\w+((-\w+)|(\.\w+))*\@\w+((\.|-)\w+)*\.\w+$/) == -1) {
		alert("O email "+d.email.value+" é invalido.");
		d.email.focus();
		return false;
	}
	return true;
}

