//////////////////////////////////////////////////////////////////////////////
// Arquivo:  pedido-pacotes-ciclos.js
// Autor:    Star Sistemas e Projetos Graficos Ltda.
// Data:     19/05/2006
// Conteudo: Funcoes de suporte `a montagem e processamento da pagina
//				 do formulario de pedido de volumes avulsos.
//////////////////////////////////////////////////////////////////////////////

//============================================================================
// Variaveis relativas as alternativas de envio e pagamento dos
// volumes avulsos.

var formValueDispatchMode = "";
var formValuePaymentMode = "";
// Insercao - 20/12/2005
var formValuePaymentCondition = "";
// Fim Insercao - 20/12/2005
var formValueState = "";
var formValueBoletoPorEmail = false;

gFormName = "cyclePackagesOrderForm";

//============================================================================
// Variaveis referentes aos pacotes disponiveis para compra.

var numPackages = 6;
var packageEpisodeNumbers = new Array();
packageEpisodeNumbers[0] = "650 a 699";
packageEpisodeNumbers[1] = "700 a 749";
packageEpisodeNumbers[2] = "750 a 799";
packageEpisodeNumbers[3] = "700 a 799";
packageEpisodeNumbers[4] = "800 a 847";
packageEpisodeNumbers[5] = "650 a 847";

var packageCycleNumbers = new Array();
packageCycleNumbers[0] = "11&ordm;";
packageCycleNumbers[1] = "12&ordm;";
packageCycleNumbers[2] = "12&ordm;";
packageCycleNumbers[3] = "12&ordm;";
packageCycleNumbers[4] = "13&ordm;";
packageCycleNumbers[5] = "-";

var packageCycleNames = new Array();
packageCycleNames[0] = "\"O Concílio\"";
packageCycleNames[1] = "\"Afilia\" - Primeira Parte";
packageCycleNames[2] = "\"Afilia\" - Segunda Parte";
packageCycleNames[3] = "\"Afilia\"";
packageCycleNames[4] = "\"Bardioc\"";
packageCycleNames[5] = "Série Completa";

var packageNames = new Array();
packageNames[0] = "650_698";
packageNames[1] = "700_748";
packageNames[2] = "750_798";
packageNames[3] = "700_798";
packageNames[4] = "800_846";
packageNames[5] = "650_846";

var packagePrices = new Array();
// Modificacao - 22/11/2010
//packagePrices[0] = 393.00;
packagePrices[0] = 354.00;
packagePrices[1] = 439.00;
packagePrices[2] = 439.00;
packagePrices[3] = 855.00;
packagePrices[4] = 424.00;
//packagePrices[5] = 1699.00;
packagePrices[5] = 1589.00;

var packageNumIssues = new Array();
// Modificacao - 22/11/2010
//packageNumIssues[0] = 22;
packageNumIssues[0] = 20;
packageNumIssues[1] = 25;
packageNumIssues[2] = 25;
packageNumIssues[3] = 50;
packageNumIssues[4] = 24;
//packageNumIssues[5] = 99;
packageNumIssues[5] = 94;

var exemplares = new Array();
exemplares[0] = 0;

//============================================================================
// Calcula o valor total do pedido de acordo com opcoes escolhidas pelo
// assinante.

function CalcOrderPrice (showAlert)
{
   var retval;
   var theForm = GetDocumentElement (gFormName);

   var packageNumber, packageQuantity, packagesPrice = 0.0, numIssues = 0;
   for (packageNumber = 0; packageNumber < numPackages; packageNumber++)
   {
      packageQuantity = eval ("parseInt(String(theForm.QtdePacote_" + packageNames[packageNumber] + ".value))");
      packagesPrice += packagePrices[packageNumber] * packageQuantity;
      numIssues += packageNumIssues[packageNumber] * packageQuantity;
   }

   var dispatchMode = formValueDispatchMode;
   var paymentCondition = formValuePaymentCondition;
   var state = siglasEstados[(theForm.EstadoRemessa.selectedIndex > 0 ? theForm.EstadoRemessa.selectedIndex : 0)];
   var country = countryNames[(theForm.PaisRemessa.selectedIndex > 0 ? theForm.PaisRemessa.selectedIndex : 0)];

   var numIssuesIsMissing = (isNaN(numIssues) || numIssues <= 0);
   var dispatchModeIsMissing = ((dispatchMode == null) || (dispatchMode == ""));
   var paymentConditionIsMissing = ((paymentCondition == null) || (paymentCondition == ""));
   var countryIsMissing = ((dispatchMode == "Economico" || dispatchMode == "Prioritario") ?
      ((country == null) || (country == "")) : false);
   var stateIsMissing = ((dispatchMode == "Sedex" || dispatchMode == "Sedex10" || dispatchMode == "PAC") ? 
      ((state == null) || (state == "")) : false);

   if (numIssuesIsMissing || dispatchModeIsMissing || paymentConditionIsMissing || countryIsMissing || stateIsMissing)
   {
      if (showAlert)
      {
         var message = "Os seguintes campos devem ser preenchidos corretamente " +
            "para que o valor possa ser calculado:\n\n";
         if (numIssuesIsMissing) 			message += "- Número de pacotes\n";
         if (dispatchModeIsMissing)      	message += "- Forma de envio\n";
         if (paymentConditionIsMissing)   message += "- Condição de pagamento\n";
         if (countryIsMissing)            message += "- País\n";
         if (stateIsMissing)        		message += "- Estado\n";
         alert (message);
      }
    	theForm.ValorFinal.value = "";

      retval = false;
   }
   else
   {
      var dispatchFee = CalcTaxaRemessa ("AV", dispatchMode, numIssues, 250*numIssues, state, country);
      var totalValue = packagesPrice + dispatchFee;

      // Insercao - 20/12/2005 - Promocao de desconto até 25/01/2006
      /*if (numIssues >= 5 && numIssues <= 9)
         totalValue = 0.95 * totalValue;
      else if (numIssues >= 10 && numIssues <= 14)
         totalValue = 0.92 * totalValue;
      else if (numIssues >= 15 && numIssues <= 19)
         totalValue = 0.9 * totalValue;
      else if (numIssues >= 20 && numIssues <= 24)
         totalValue = 0.88 * totalValue;
      else if (numIssues >= 25)
         totalValue = 0.85 * totalValue;*/
      // Fim Insercao - 20/12/2005 - Promocao de desconto até 25/01/2006
   
      // Insercao - 20/12/2005
      var totalValueStr = "";
      var numPayments = 1;
      if (paymentCondition == "A vista")
         numPayments = 1;
      else
      {
         numPayments = parseInt (paymentCondition.substr (3,2));
         if (numPayments < 1 || numPayments > 6) numPayments = 1;
      } 

      // 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)
      {
			if (numIssues < 99) // Pacotes individuais
			{
				if (numPayments == 1)
				{
					if (formValuePaymentMode != "Cartao de Credito")
						totalValue = 0.90 * totalValue; // 10%
					else
						totalValue = 0.95 * totalValue; // 5%
				}
			}
			else // Colecao completa
			{
				if (numPayments == 1)
				{
					if (formValuePaymentMode != "Cartao de Credito")
						totalValue = 0.85 * totalValue; // 15%
					else
						totalValue = 0.90 * totalValue; // 10%
				}
				else // Colecao completa
					totalValue = 0.95 * totalValue; // 5%
			}
      }*/
      // Fim Insercao - 25/06/2007 - Promocao de desconto até 31/07/2007

      if (numPayments > 1)
      {
         totalValueStr = String(numPayments) + " x ";
         // Modificacao - 01/08/2006 - Juros no parcelamento
         //totalValue = totalValue/numPayments;
         totalValue = (totalValue/numPayments) * (1.0 + numPayments/100.0);
      }
      // Fim Insercao - 20/12/2005
      var totalValueIntegral = Math.floor(totalValue);
      var totalValueRemainder = totalValue - totalValueIntegral;
      var totalValueRemainderInt = Math.round(100*totalValueRemainder);
      var totalValueRemainderStr = (totalValueRemainderInt < 10 ?
         "0" + String(totalValueRemainderInt) : String(totalValueRemainderInt));
      // Modificacao - 20/12/2005
      //var totalValueStr = "R$ " + (totalValueRemainder != 0.0 ?
      totalValueStr = totalValueStr + "R$ " + (totalValueRemainder != 0.0 ?
      // Fim Modificacao - 20/12/2005
      	totalValueIntegral + "," + totalValueRemainderStr :
      	totalValueIntegral + ",00");

      theForm.ValorFinal.value = totalValueStr;

      retval = true;
   }

   return retval;
}

//============================================================================
// Verificacao de validade do formulario preenchido.

function CheckForm()
{
   var retval;
   var theForm = GetDocumentElement (gFormName);

   var packageNumber, packageQuantity, numIssues = 0;
   for (packageNumber = 0; packageNumber < numPackages; packageNumber++)
   {
      packageQuantity = eval ("parseInt(String(theForm.QtdePacote_" + packageNames[packageNumber] + ".value))");
      numIssues += packageNumIssues[packageNumber] * packageQuantity;
   }

   var dispatchMode = formValueDispatchMode;
   var paymentMode = formValuePaymentMode;
   // Insercao - 20/12/2005
   var paymentCondition = formValuePaymentCondition;
   // Fim Insercao - 20/12/2005
   var state = siglasEstados[(theForm.Estado.selectedIndex > 0 ? theForm.Estado.selectedIndex : 0)];
   var country = countryNames[(theForm.Pais.selectedIndex > 0 ? theForm.Pais.selectedIndex : 0)];

   var numIssuesIsMissing = (isNaN(numIssues) || numIssues <= 0);
   var dispatchModeIsMissing = ((dispatchMode == null) || (dispatchMode == ""));
   var paymentModeIsMissing = ((paymentMode == null) || (paymentMode == ""));
   // Insercao - 20/12/2005
   var paymentConditionIsMissing = ((paymentCondition == null) || (paymentCondition == ""));
   // Fim Insercao - 20/12/2005
   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 subscriberCodeIsMissing = ((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 (!subscriberCodeIsMissing)
   {
      nameIsMissing = name2IsMissing = false;
      cpfIsMissing = addressIsMissing = districtIsMissing = cityIsMissing =
         stateIsMissing = zipCodeIsMissing = false;
   }
   else if (!name2IsMissing)
   {
      subscriberCodeIsMissing = name2IsMissing = false;
      cpfIsMissing = addressIsMissing = districtIsMissing = cityIsMissing =
         stateIsMissing = zipCodeIsMissing = false;
   }
   else if (!nameIsMissing)
   {
      subscriberCodeIsMissing = 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 (numIssuesIsMissing || dispatchModeIsMissing || paymentModeIsMissing || countryIsMissing ||
       emailIsMissing || subscriberCodeIsMissing || (nameIsMissing && name2IsMissing) ||
       cpfIsMissing || addressIsMissing || districtIsMissing || cityIsMissing ||
       // Modificacao - 20/12/2005
       stateIsMissing || zipCodeIsMissing)
       //paymentConditionIsMissing || stateIsMissing || zipCodeIsMissing)
       // Fim Modificacao - 20/12/2005
   {
      var message = "Os seguintes campos devem ser preenchidos corretamente \n" +
         "para que os dados do pedido possam ser enviados:\n\n";
      if (numIssuesIsMissing) message += "- Pacotes pedidos\n";
      if (dispatchModeIsMissing) message += "- Forma de envio\n";
      if (paymentModeIsMissing) message += "- Forma de pagamento\n";
      // Insercao - 20/12/2005
      if (paymentConditionIsMissing) message += "- Condição de pagamento\n";
      // Fim Insercao - 20/12/2005
      if (countryIsMissing) message += "- País\n";
      if (emailIsMissing) message += "- Endereço de e-mail principal\n";
      if (subscriberCodeIsMissing) 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 (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-pacotes-ciclos-concluido.html?FormaPag=" + escape (paymentMode);
      retval = true;
   }

   return retval;
}

//============================================================================
// Apresentacao dos elementos principais da pagina.

function DisplayCyclePackagesOrderPageElements()
{
   var proceed = true;

    document.writeln ("<P>Através desta página, você poderá adquirir pacotes " +
        "fechados dos ciclos da série <em>Perry Rhodan</em> publicados pela " + 
        "SSPG Editora, por um preço especial. 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 pacotes. 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 pacotes 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 pacotes de " +
		"ciclos definidas pela SSPG " + BuildLink ("neste link.", "port/pacotes-de-ciclos.html", 
		"Instruções para pedido de pacotes de ciclos") + "</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-pacotes-ciclos-concluido.html\">\n" +
      "<input type=\"hidden\" name=\"AnyFormTo\" value=\"pedidos@sspg.com.br\">\n" +
      "<input type=\"hidden\" name=\"AnyFormSubject\" value=\"PERRY RHODAN - Pedido de Pacotes de Ciclos\">");

   document.writeln ("<hr><span class=\"emphasis\">1&ordm; Passo: Informe quantos pacotes de cada ciclo você deseja receber:</span><hr><br>");
   document.writeln ("<table border=1 cellspacing=2 cellpadding=4>" +
      "<tr><td><b>Ciclo</b></td><td><b>Episódios</b></td><td><b>Título</b></td><td align=center><b>Quantidade</b></td><td align=center><b>Capa alternativa?</b></td></tr>");

   var packageNumber, cycleTitle;
   for (packageNumber = 0; packageNumber < numPackages; packageNumber++)
   {
		exemplares[packageNumber] = 0;
      /*episodeNumber = parseInt (cycleEpisodeNumbers[cycleNumber-11]);
      if (cycleNumber == 14)
         cycleTitle = "Série Completa";
      else
         cycleTitle = "\"" + GetCycleTitleBrFromIssueNumber ("PR", episodeNumber) + "\"";*/

      document.writeln ("<tr><td align=center>" + packageCycleNumbers[packageNumber] + 
         "</td><td>" + packageEpisodeNumbers[packageNumber] + "</td><td>" + packageCycleNames[packageNumber] + 
         "</td><td align=center>" + "<input type=\"text\" name=\"QtdePacote_" + packageNames[packageNumber] + "\" " +
         "value=\"" + exemplares[packageNumber] + "\" size=\"4\" " +
      	"onchange=\"CalcOrderPrice(false)\"></td><td align=center>");
      
      if (packageNumber == 0)
         document.writeln ("&nbsp;");
      else
      {
         document.writeln ("<input type=\"checkbox\" name=\"CapaAlternativaPacote" + 
            packageNames[packageNumber] + "\" value=\"Sim\">");
      }
      document.writeln ("</td></tr>");
   }
   document.writeln ("</table>");

   document.writeln ("<br><hr><span class=\"emphasis\">" +
      "2&ordm; Passo: Escolha agora a forma de envio dos pacotes selecionados acima:</span><hr>");
   DisplayDispatchOptions (false, true, 0);

   // Modificacao - 15/03/2009 - Retirada do parcelamento
   /*document.writeln ("<span class=\"emphasis\">" +
      "Escolha a condição de pagamento do pedido:</span><br>" +
      "(Atenção: o parcelamento está disponível apenas para pagamento com cartão de crédito)<br><br>");
   document.writeln ("<input type=\"radio\" name=\"CondicaoPagamento\" value=\"A vista\" " +
      "onClick=\"formValuePaymentCondition = 'A vista'; CalcOrderPrice(false)\"> " +
      "À vista<br>\n" +
      "<input type=\"radio\" name=\"CondicaoPagamento\" value=\"Em 2 parcelas iguais\" " +
      "onClick=\"formValuePaymentCondition = 'Em 2 parcelas iguais'; CalcOrderPrice(false)\"> " +
      "Em 2 parcelas iguais<br>" +
      "<input type=\"radio\" name=\"CondicaoPagamento\" value=\"Em 3 parcelas iguais\" " +
      "onClick=\"formValuePaymentCondition = 'Em 3 parcelas iguais'; CalcOrderPrice(false)\"> " +
      "Em 3 parcelas iguais<br>" +
      "<input type=\"radio\" name=\"CondicaoPagamento\" value=\"Em 4 parcelas iguais\" " +
      "onClick=\"formValuePaymentCondition = 'Em 4 parcelas iguais'; CalcOrderPrice(false)\"> " +
      "Em 4 parcelas iguais<br>" +
      "<input type=\"radio\" name=\"CondicaoPagamento\" value=\"Em 5 parcelas iguais\" " +
      "onClick=\"formValuePaymentCondition = 'Em 5 parcelas iguais'; CalcOrderPrice(false)\"> " +
      "Em 5 parcelas iguais<br>" +
      "<input type=\"radio\" name=\"CondicaoPagamento\" value=\"Em 6 parcelas iguais\" " +
      "onClick=\"formValuePaymentCondition = 'Em 6 parcelas iguais'; CalcOrderPrice(false)\"> " +
      "Em 6 parcelas iguais<br><br>"); */
   formValuePaymentCondition = "A vista";
   // Fim Modificacao - 15/03/2009 - Retirada do parcelamento

   DisplayTotalValueFields (true);

   document.writeln ("<hr><span class=\"emphasis\">" +
      "3&ordm; Passo: Escolha agora a forma de pagamento dos pacotes 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\" 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;
}

