//////////////////////////////////////////////////////////////////////////////
// Arquivo:  pedido-produtos.js
// Autor:    Star Sistemas e Projetos Graficos Ltda.
// Data:     10-12/09/2004
// Conteudo: Funcoes de suporte `a montagem e processamento da pagina
//				 do formulario de pedido de produtos.
//////////////////////////////////////////////////////////////////////////////

//============================================================================
// Variaveis relativas as alternativas de envio e pagamento dos
// volumes avulsos.

var formValueDispatchMode = "";
var formValuePaymentMode = "";
var formValueBoletoPorEmail = false;

gFormName = "productsOrderForm";

//============================================================================
// Variaveis referentes aos produtos disponiveis para compra.

var numAvailableProducts = 7;

var productTitles = new Array();
productTitles[0] = "";
//productTitles[1] = "Caneta Perry Rhodan";
productTitles[1] = "";
//productTitles[2] = "Caneta com Sensor";
productTitles[2] = "";
//productTitles[3] = "Isqueiro Perry Rhodan";
productTitles[3] = "";
//productTitles[4] = "Pôster Stardust";
productTitles[4] = "";
productTitles[5] = "Cartões Postais Perry Rhodan";
//productTitles[6] = "Boneco - Gucky";
productTitles[6] = "";
//productTitles[7] = "Boneco - Jumpy";
productTitles[7] = "";

var productCodes = new Array();
var index;
for (index = 1; index <= numAvailableProducts; index++)
   productCodes[index] = 100000 + index*2;

var productPrices = new Array();
productPrices[0] = 0.00;
productPrices[1] = 3.90;
productPrices[2] = 99.00;
productPrices[3] = 7.90;
productPrices[4] = 39.90;
productPrices[5] = 8.90;
productPrices[6] = 49.90;
productPrices[7] = 44.90;

var productWeights = new Array();
productWeights[0] = 0;
productWeights[1] = 6;
productWeights[2] = 60;
productWeights[3] = 20;
productWeights[4] = 75;
productWeights[5] = 15;
productWeights[6] = 385;
productWeights[7] = 230;

var gPesoTotalProdutosPorEmbalagem = 0;
for (index = 1; index <= numAvailableProducts; index++)
   gPesoTotalProdutosPorEmbalagem += productWeights[index];
// Desconta o peso do poster.
//gPesoTotalProdutosPorEmbalagem -= productWeights[4];

var quantidades = new Array();
for (index = 1; index <= numAvailableProducts; index++)
   quantidades[index] = 0;

//============================================================================
// Calcula o valor total do pedido de acordo com opcoes escolhidas pelo
// assinante.

function CalcOrderPrice (showAlert)
{
   var retval;
   var theForm = GetDocumentElement (gFormName);
   var i;
   var numProdutos = 0;
   var quantidadeProdutoCorrente = 0;
   var precoParcialProdutos = 0.0;
   var pesoTotalProdutos = 0;

   for (i = 1; i <= numAvailableProducts; i++)
   {
		if (productTitles[i] != "")
		{
		  quantidadeProdutoCorrente = eval ("parseInt (theForm.QuantidadeProduto" + productCodes[i] + ".value)");
		  precoParcialProdutos += quantidadeProdutoCorrente * productPrices[i];
		  pesoTotalProdutos += quantidadeProdutoCorrente * productWeights[i];
		  numProdutos += quantidadeProdutoCorrente;
	  }
   }

   var dispatchMode = formValueDispatchMode;
   var state = siglasEstados[(theForm.EstadoRemessa.selectedIndex > 0 ? theForm.EstadoRemessa.selectedIndex : 0)];
   var country = countryNames[(theForm.PaisRemessa.selectedIndex > 0 ? theForm.PaisRemessa.selectedIndex : 0)];

   var numProductsIsMissing = (isNaN(numProdutos) || numProdutos <= 0);
   var dispatchModeIsMissing = ((dispatchMode == null) || (dispatchMode == ""));
   var countryIsMissing = ((dispatchMode == "Economico" || dispatchMode == "Prioritario") ?
      ((country == null) || (country == "")) : false);
   var stateIsMissing = ((dispatchMode == "Sedex" || dispatchMode == "Sedex10" || dispatchMode == "PAC") ? 
      ((state == null) || (state == "")) : false);
   if (numProductsIsMissing || dispatchModeIsMissing || countryIsMissing || stateIsMissing)
   {
      if (showAlert)
      {
         var message = "Os seguintes campos devem ser preenchidos corretamente " +
            "para que o valor possa ser calculado:\n\n";
         if (numProductsIsMissing) 	message += "- Quantidade de produtos\n";
         if (dispatchModeIsMissing) message += "- Forma de envio\n";
         if (countryIsMissing)      message += "- País\n";
         if (stateIsMissing)        message += "- Estado\n";
         alert (message);
      }
    	theForm.ValorFinal.value = "";

      retval = false;
   }
   else
   {
      var dispatchFee = CalcTaxaRemessa ("PD", dispatchMode, numProdutos, pesoTotalProdutos, state, country);
      var totalValue = precoParcialProdutos + dispatchFee;

      // Insercao - 25/06/2007 - Promocao de desconto até 31/07/2007
      // Verifica prazo da promocao.
      /*var dataHoje = new Date();
      var dataLimite = new Date (2007, 7-1, 31, 23, 59, 59);
      if (dataHoje <= dataLimite)
      {
			var numPayments = 1;
			if (numPayments == 1)
			{
				if (formValuePaymentMode != "Cartao de Credito")
					totalValue = 0.85 * totalValue; // 15%
				else
					totalValue = 0.90 * totalValue; // 10%
			}
			else
				totalValue = 0.95 * totalValue; // 5%
      }*/
      // Fim Insercao - 25/06/2007 - Promocao de desconto até 31/07/2007

      var totalValueIntegral = Math.floor(totalValue);
      var totalValueRemainder = totalValue - totalValueIntegral;
      var totalValueRemainderInt = Math.round(100*totalValueRemainder);
      var totalValueRemainderStr = (totalValueRemainderInt < 10 ?
         "0" + String(totalValueRemainderInt) : String(totalValueRemainderInt));
      var totalValueStr = "R$ " + (totalValueRemainder != 0.0 ?
      	totalValueIntegral + "," + totalValueRemainderStr :
      	totalValueIntegral + ",00");
      theForm.ValorFinal.value = totalValueStr;

      retval = true;
   }

   return retval;
}

//============================================================================
// Verificacao de validade do formulario preenchido.

function CheckForm()
{
   var retval = false;
   var theForm = GetDocumentElement (gFormName);
   var i;
   var numProdutos = 0;
   var quantidadeProdutoCorrente = 0;
   for (i = 1; i <= numAvailableProducts; i++)
   {
      quantidadeProdutoCorrente = eval ("parseInt (theForm.QuantidadeProduto" + productCodes[i] + ".value)");
      numProdutos += quantidadeProdutoCorrente;
   }

   var dispatchMode = formValueDispatchMode;
   var paymentMode = formValuePaymentMode;
   var state = siglasEstados[(theForm.Estado.selectedIndex > 0 ? theForm.Estado.selectedIndex : 0)];
   var country = countryNames[(theForm.Pais.selectedIndex > 0 ? theForm.Pais.selectedIndex : 0)];

   var numProductsIsMissing = (isNaN(numProdutos) || numProdutos <= 0);
   var dispatchModeIsMissing = ((dispatchMode == null) || (dispatchMode == ""));
   var paymentModeIsMissing = ((paymentMode == null) || (paymentMode == ""));
   var countryIsMissing = ((dispatchMode == "Economico" || dispatchMode == "Prioritario") ?
         ((country == null) || (country == "")) : false);
   var stateIsMissing = ((dispatchMode == "Sedex" || dispatchMode == "Sedex10" || dispatchMode == "PAC") ? 
      ((state == null) || (state == "")) : false);

   var emailIsMissing = ((theForm.AnyFormFrom.value == null) ||
      (theForm.AnyFormFrom.value == ""));
   var clientCodeIsMissing = ((theForm.CodigoCliente.value == null) ||
      (theForm.CodigoCliente.value == ""));
   var nameIsMissing = ((theForm.Nome.value == null) ||
      (theForm.Nome.value == ""));
   var name2IsMissing = ((theForm.Nome2.value == null) ||
      (theForm.Nome2.value == ""));

   var cpfIsMissing, addressIsMissing, districtIsMissing, cityIsMissing, zipCodeIsMissing;

   if (!clientCodeIsMissing)
   {
      nameIsMissing = name2IsMissing = false;
      cpfIsMissing = addressIsMissing = districtIsMissing = cityIsMissing =
         stateIsMissing = zipCodeIsMissing = false;
   }
   else if (!nameIsMissing)
   {
      clientCodeIsMissing = name2IsMissing = false;
      cpfIsMissing = addressIsMissing = districtIsMissing = cityIsMissing =
         stateIsMissing = zipCodeIsMissing = false;
   }
   else if (!name2IsMissing)
   {
      clientCodeIsMissing = nameIsMissing = false;
      cpfIsMissing = ((theForm.CPF.value == null) ||
         (theForm.CPF.value == ""));
      addressIsMissing = ((theForm.Endereco.value == null) ||
         (theForm.Endereco.value == ""));
      districtIsMissing = ((theForm.Bairro.value == null) ||
         (theForm.Bairro.value == ""));
      cityIsMissing = ((theForm.Cidade.value == null) ||
         (theForm.Cidade.value == ""));
      stateIsMissing = (theForm.Estado.selectedIndex <= 0);
      zipCodeIsMissing = ((theForm.CEP.value == null) ||
         (theForm.CEP.value == ""));
      countryIsMissing = (theForm.Pais.selectedIndex <= 0);
   }

   if (numProductsIsMissing || dispatchModeIsMissing || paymentModeIsMissing || countryIsMissing ||
       emailIsMissing || clientCodeIsMissing || (nameIsMissing && name2IsMissing) ||
       cpfIsMissing || addressIsMissing || districtIsMissing || cityIsMissing ||
       stateIsMissing || zipCodeIsMissing)
   {
      var message = "Os seguintes campos devem ser preenchidos corretamente \n" +
         "para que os dados do pedido possam ser enviados:\n\n";
      if (numProductsIsMissing) 				message += "- Quantidade de produtos\n";
      if (dispatchModeIsMissing) message += "- Forma de envio\n";
      if (paymentModeIsMissing) message += "- Forma de pagamento\n";
      if (emailIsMissing) message += "- Endereço de e-mail principal\n";
      if (clientCodeIsMissing) message += "- Código de assinante/cliente\n";
      if (nameIsMissing && name2IsMissing) message += "- Nome\n";
      if (cpfIsMissing) message += "- Número de CPF ou CGC\n";
      if (addressIsMissing) message += "- Endereço\n";
      if (districtIsMissing) message += "- Bairro\n";
      if (cityIsMissing) message += "- Cidade\n";
      if (stateIsMissing) message += "- Estado\n";
      if (zipCodeIsMissing) message += "- CEP\n";
      if (countryIsMissing) message += "- País\n";

      if (emailIsMissing)
         message += "\nCaso você realmente não possua algum " +
      	     "endereço de e-mail, \nescreva \"nenhum\" no campo correspondente.\n";

      alert (message);

      retval = false;
   }
   else
   {
   	// Ajusta endereco da pagina de destino.
      theForm.AnyFormDisplay.value =
         GetSiteBaseDir() + "port/pedido-produtos-concluido.html?FormaPag=" +
         escape (paymentMode);
      retval = true;
   }

   return retval;
}

//============================================================================
// Apresentacao dos elementos principais da pagina.

function DisplayProductsOrderPageElements()
{
   var proceed = true;

    document.writeln ("<P>Através desta página, você poderá adquirir os produtos " +
        "especiais da série <em>Perry Rhodan</em> pela SSPG Editora." +
        "Para isso, preencha por favor o formulário abaixo confome os <b>5 passos</b> " +
        "listados e remeta-o através do botão no final da página.");
   document.writeln ("<P>Os dados enviados por meio deste formulário serão " +
      "remetidos à SSPG e serão utilizados exclusivamente pela editora para " +
      "a remessa dos volumes. Os dados pessoais aqui informados não serão " +
      "repassados a terceiros.");
   document.writeln ("<P>Para sua conveniência, o valor total a ser pago " +
      "pelos produtos solicitados é <b>calculado automaticamente</b> no final do formulário de acordo com a " +
      "escolha das opções de envio e pagamento nos campos correspondentes abaixo.");

	document.writeln ("<P><b>Importante: antes de enviar seu pedido, leia " +
		"com atenção todas as condições de realização do pedido de produtos definidas " +
		"pela SSPG " + BuildLink ("neste link.", "port/produtos.html", 
		"Instruções para pedido de produtos") + "</b>");

   document.writeln ("<P><form action=\"http://www2.sspg.com.br/perry-rhodan/Engine/form2mail.asp\"\n" +
      "method=\"GET\" onsubmit=\"return(CheckForm());\" name=\"" + gFormName + "\">\n" +
      "<input type=\"hidden\" name=\"AnyFormMode\" value=\"Mail\">\n" +
      "<input type=\"hidden\" name=\"AnyFormDisplay\" " +
      "value=\"" + GetSiteBaseDir() + "port/pedido-produtos-concluido.html\">\n" +
      "<input type=\"hidden\" name=\"AnyFormTo\" value=\"pedidos@sspg.com.br\">\n" +
      "<input type=\"hidden\" name=\"AnyFormSubject\" value=\"PERRY RHODAN - Pedido de Produtos\">");

   document.writeln ("<hr><span class=\"emphasis\">" +
      "1&ordm; Passo: Informe quantas unidades de cada produto você deseja receber:</span><hr><br>");
   document.writeln ("<table border=0 cellspacing=2 cellpadding=4>" +
      "<tr><td><b>Produto</b></td><td><b>Quantidade</b></td></tr>");

   var productNumber;
   for (productNumber = 1; productNumber <= numAvailableProducts; productNumber++)
   {
		quantidades[productNumber] = 0;
		if (productTitles[productNumber] != "")
		{
      document.writeln ("<tr><td>" + productTitles[productNumber] + "</td><td>" +
      	   "<input type=\"text\" name=\"QuantidadeProduto" + productCodes[productNumber] + "\" " +
            "value=\"" + quantidades[productNumber] + "\" maxlength=\"4\" size=\"6\" " +
      	   "onChange=\"CalcOrderPrice(false)\"> </td><td>&nbsp;</td></tr>");
		 }
   }
   document.writeln ("</table>");

   document.writeln ("<br><hr><span class=\"emphasis\">" +
      "2&ordm; Passo: Escolha agora a forma de envio dos produtos selecionados acima:</span><hr>");
   DisplayDispatchOptions (false, true, 0);

   DisplayTotalValueFields (true);

   document.writeln ("<hr><span class=\"emphasis\">" +
      "3&ordm; Passo: Escolha agora a forma de pagamento dos produtos selecionados acima:</span><hr>");
   DisplayPaymentOptions();
   DisplayCreditCardDataFields();

   document.writeln ("<br><hr><span class=\"emphasis\">4&ordm; Passo: Informe agora o seu endereço de e-mail principal:</span><hr><br>");
   document.writeln ("<br>\n" +
      "E-mail: <input type=\"text\" name=\"AnyFormFrom\" size=\"30\"><br>\n");

   document.writeln ("<br><hr><span class=\"emphasis\">5&ordm; Passo: Agora, para concluir o pedido, verifique qual é a sua " +
      "situação dentre as três opções apresentadas em destaque abaixo. Somente uma  " +
      "delas deve ser considerada.</span><hr>");

   document.writeln ("<br><br><span class=\"emphasis\"><em>* 1&ordf; Opção: Caso você já seja assinante ou " +
      "comprador de produtos ou volumes avulsos da série e tenha o seu código de " +
      "assinante/cliente, basta informá-lo abaixo e enviar o formulário:</em></span>");
   document.writeln ("<br>\n" +
      "<input type=\"text\" name=\"CodigoCliente\" value=\"\" maxlength=\"7\" size=\"10\"><br><br>\n");
   DisplaySubmitButtons();

   document.writeln ("<br><br><br><span class=\"emphasis\"><em>* 2&ordf; Opção: Caso já tenha feito algum pedido de " +
      "assinatura ou de volumes há pouco tempo, mas não tenha recebido ainda da SSPG " +
      "o seu código de assinante/cliente, basta informar o seu nome completo e " +
      "enviar o formulário:</em></span>");
   document.writeln ("<br>\n" +
      "<input type=\"text\" name=\"Nome2\" size=\"60\"><br><br>\n");
   DisplaySubmitButtons();

   document.writeln ("<br><br><br><span class=\"emphasis\"><em>* 3&ordf; Opção: Caso você ainda não tenha feito um " +
      "pedido anterior de assinatura, volumes ou produtos da série Perry Rhodan, por favor " +
      "preencha todos os campos abaixo e remeta o formulário para concluir o seu pedido:</em></span><br><br>");
   DisplayPersonalDataFields (false);
   DisplayDiscoveryFields();
   DisplaySubmitButtons();

   document.writeln ("</form>\n<p>&nbsp;</p>");

   return proceed;
}

