/*
 
 */

/* ----------------------------------------------------------------------------------------- CONSTRUTOR */
/**
 * Um objeto da classe Pedido é parecido com um Envio, mas tem um balão de agradecimento.
 * Mais tarde temos de reorganizar isto, para que um pedido extenda a class Envio,
 * que respresenta um formulário (html:form) com campos (html:input) simples
 * (sem um balão de agradecimento).
 * @param destinatário
 * @param agradecimento
 * @param botão
 */
function Pedido(destinatário, agradecimento, botão) { // carta tem de ser um elemento <form/>; destinatário é agradecimento são <img/>
   this.destinatário = destinatário;
   this.agradecimento = agradecimento;
   this.botão = botão; // poderá ser manipulado por objetos que tenham referência a este envio

   this.textos = new Array();
   this.emPreparação = false;
   this.aviso; //  = "A sua mensagem vai ser enviada dentro de momentos.";
}

/* ---------------------------- Preparação do envio · adiantamento com 2 segundos para mostrar o balão. */
Pedido.prototype.verificar = function() {
   if (this.estáPronto() == false) {
      return false;
   }
   if (this.emPreparação == true) {
      ecrã.reagir(this.aviso, 10000); // para os impacientes; antes de os 10 segundos acabarem, a mensagem será já enviada!
      return false;
   }
   this.emPreparação = true;
   /* <!-- calcular a sobreposição do agradecimento sobre a fotografia --> */
   var posição = Ecrã.calcularPosição(this.destinatário);
   var esquerda = posição[0];
   var topo = posição[1];
   var altura = this.destinatário.offsetHeight;
   var largura = this.destinatário.offsetWidth;
   with (this.agradecimento.style) {
      display = "block";
      top = topo - altura * 1 / 3; // conta-se de cima para baixo (!!) e da esquerda para direita
      left = esquerda + largura * 4 / 5;
   }
   window.setTimeout(this.enviar, 2000);
   return false; // o envio é posposto com 2 segundos para podermos mostrar o balão :-)
}

Pedido.prototype.estáPronto = function () {
   var está = true;
   for (var i = 0; i < this.textos.length; i++) {
      está = está && this.textos[i].pronto;
      if (!está) break;
   }
   return está;
}

/* ----------------------------------------------------------------------------------------- Os textos. */
Pedido.prototype.guardarTextos = function(textos) {
   this.aviso = textos[0];
}

/* ------------------------------------------------------------------------------------------- O envio. */
Pedido.prototype.enviar = function () { // chamado por window.setTimeout (com this==window)
   document.forms['carta'].submit();
}

Pedido.prototype.registar = function (texto) {
   this.textos.push(texto);
}

Pedido.prototype.desativar = function() {
   this.botão.desativar();
}

Pedido.prototype.ativar = function() {
   if (this.estáPronto()) this.botão.ativar();
   else this.botão.desativar();
}
