// vim:enc=utf-8

function ControlMensajes(id) {
  this._elem = function () { return document.getElementById(id); };
  this.limpiar = function () {
    this._elem().innerHTML = '';
  };
  this._mensaje = function (txt, clase) {
    var elem = this._elem();
    elem.innerHTML =
      '<span class="' + clase + '">' + txt + '</span>';
  };
  this.mensaje_error = function (txt) {
    this._mensaje(txt, 'err_msg');
  };
  this.mensaje_info = function (txt) {
    this._mensaje(txt, 'info_msg');
  };
}

function copiar_dic(d1, d2) {
  for (k in d2) {
    d1[k] = d2[k];
  }
}

function ControlModelo() {
  this._method_params = {};
  this.method_params = function (x) {
    copiar_dic(this._method_params, x);
  }
  this.add_item = function (itm, cant, como_muestra, cont) {
    request('rm_add_item.php', this._method_params,
            {'id_item': itm,
             'como_muestra': como_muestra,
             'cantidad': cant}, cont);
  };
  this.borrar_item = function (itm, como_muestra, cont) {
    request('rm_change_item.php', this._method_params,
            {'id_item': itm,
             'como_muestra': como_muestra,
             'cantidad': '0'}, cont);
  };
  this.cambiar_item = function (itm, cant, como_muestra, cont) {
    request('rm_change_item.php', this._method_params,
            {'id_item': itm,
             'como_muestra': como_muestra,
             'cantidad': cant}, cont);
  };
  this.realizar_pedido = function (cont) {
    request('rm_realizar_pedido.php', this._method_params, {}, cont);
  };
  this.vaciar_pedido = function (cont) {
    request('rm_vaciar_pedido.php', this._method_params, {}, cont);
  };
  this.cancelar_pedido = function (id_orden, cont) {
    request('rm_cancelar_pedido.php',
            this._method_params, {'ordr_id': id_orden},
            cont);
  };

}

/*** CARRITO ***/
function ControlCarrito() {
  this._control = new ControlModelo();
  this._carrito_contenido = function() {
    return document.getElementById('carrito_contenido');
  };
  this._lista_productos_contenido = function() {
    return document.getElementById('lista_productos_contenido');
  };
  this._mensajes = new ControlMensajes('carrito_mensajes'); 

  this._method_params = {};
  this.method_params = function (x) {
    copiar_dic(this._method_params, x);
    this._control.method_params(x);
  }

  this.get_productos_por_categoria = function (id_categoria, p_first) {
    var elem = this._lista_productos_contenido();
    request("rv_productos_lista.php",
            this._method_params, {'ctgr_id': id_categoria,
                                  'ctgr_p_first': p_first},
      function (resp) {
        elem.innerHTML = resp;
    });
  };
  this.get_muestras = function (p_first) {
    var elem = this._lista_productos_contenido();
    request("rv_muestras_lista.php",
            this._method_params, {'smpl_p_first': p_first},
      function (resp) {
        elem.innerHTML = resp;
    });
  };

  this.get_productos_en_carrito = function (p_first, realizar) {
    var elem = this._carrito_contenido();
    this._mensajes.limpiar();
    request("rv_carrito_get_productos.php",
            this._method_params, {'cart_prods_p_first': p_first,
                                  'cart_realizar': realizar},
      function (resp) {
        elem.innerHTML = resp;
    });
  };

  this.add_item = function (itm, cant, como_muestra) {
    var cart = this;
    cart._mensajes.limpiar();
    cart._control.add_item(itm, cant, como_muestra, function (ok) {
      if (ok == 'mezcla') {
        window.alert("Seu pedido não pode misturar produtos e amostras");
        //cart._mensajes.mensaje_error( "No se pueden mezclar productos y muestras.");
      }
      cart.get_productos_en_carrito(0);
    });
  };
  this.borrar_item = function (itm, como_muestra) {
    var cart = this;
    cart._mensajes.limpiar();
    cart._control.borrar_item(itm, como_muestra, function (ok) {
      cart.get_productos_en_carrito(0);
    });
  };
  this.cambiar_item = function (itm, cant, como_muestra) {
    var cart = this;
    cart._mensajes.limpiar();
    cart._control.cambiar_item(itm, cant, como_muestra, function (ok) {
      cart.get_productos_en_carrito(0);
    });
  };
  this.cambiar_producto = function (itm, cant) {
    this.cambiar_item(itm, cant, 0);
  };
  this.realizar_pedido = function (id_orden) {
    var cart = this;
    cart._mensajes.limpiar();
    cart._control.realizar_pedido(function (ok) {
      if (ok == "no") {
        cart._mensajes.mensaje_error("No se puede realizar el pedido.");
      } else {
        document.location = 'h_checkout_ok.php?ordr_id=' + ok;
      }
    });
  };
  this.vaciar_pedido = function (id_orden) {
    var cart = this;
    cart._mensajes.limpiar();
    cart._control.vaciar_pedido(function (ok) {
      if (ok == "no") {
        cart._mensajes.mensaje_error("No se puede vaciar el pedido.");
      }
      cart.get_productos_en_carrito(0);
    });
  };
}

/*** DETALLE ORDEN ***/
function ControlMisOrdenes() {
  this._control = new ControlModelo();
  this._detalle_orden_contenido = function() {
    return document.getElementById('detalle_orden_contenido');
  };
  this._lista_ordenes_contenido = function() {
    return document.getElementById('lista_ordenes_contenido');
  };
  this._mensajes = new ControlMensajes('detalle_orden_mensajes');

  this._method_params = {};
  this.method_params = function (x) {
    copiar_dic(this._method_params, x);
    this._control.method_params(x);
  }

  this._resaltada = null;
  this._resaltada_fila = function (row_id) {
    return document.getElementById('ordr_row_' + row_id);
  }
  this._resaltar = function(row_id) {
    /*
    var ord = this;
    var elem;
    if (ord._resaltada != null) {
      // Anteriormente resaltada a su estado original.
      elem = ord._resaltada_fila(ord._resaltada);
      elem.className = 'fila_no_resaltada';
    }
    elem = ord._resaltada_fila(row_id);
    ord._resaltada = row_id;
    elem.className = "fila_resaltada";
    */
  };

  this._cargar_lista_ordenes = function (filtro_estado, cont) {
    var ord = this;
    request('rv_ordenes_lista.php', this._method_params,
            {'ordr_f_est': filtro_estado},
            function (resp) {
               var elem = ord._lista_ordenes_contenido();
               elem.innerHTML = resp;
               cont();
            });
  };
  this._cargar_detalle_orden = function (id_orden, p_first, cont) {
    var ord = this;
    ord._mensajes.limpiar();
    ord._resaltar(id_orden);
    request('rv_ordenes_detalle.php', this._method_params,
            {'ordr_id': id_orden, 'ordr_det_p_first': p_first},
            function (resp) {
               var elem = ord._detalle_orden_contenido();
               elem.innerHTML = resp;
               cont();
            });
  };

  this.cargar_detalle_orden = function (id_orden, p_first) {
    this._cargar_detalle_orden(id_orden, p_first, function () {});
  };
  this.cargar_lista_ordenes = function (filtro_estado, id_orden, p_first) {
    var ord = this;
    ord._cargar_lista_ordenes(filtro_estado, function () {
      //ord.cargar_detalle_orden(id_orden, p_first);
    });
  };

  this.cancelar_pedido = function (id_orden) {
    var ord = this;
    ord._mensajes.limpiar();
    ord._control.cancelar_pedido(id_orden, function (ok) {
      if (ok == 'no') {
        ord._mensajes.mensaje_error("No se puede cancelar el pedido.");
      }
      ord.cargar_lista_ordenes(-1, id_orden, 0);
    });
  };

  this.realizar_pedido = function (id_orden) {
    var ord = this;
    ord._mensajes.limpiar();
    ord._control.realizar_pedido(function (ok) {
      if (ok == "no") {
        ord._mensajes.mensaje_error("No se puede realizar el pedido.");
      } else if (ok == "ok") {
        ord._mensajes.mensaje_info("Su pedido ha sido realizado.");
      }
      ord.cargar_lista_ordenes(-1, id_orden, 0);
    });
  };
}

var control_carrito = new ControlCarrito();
var control_ordenes = new ControlMisOrdenes();

/* Personalizacion */
function cambiar_estado(){
	window.status="Hola estas leyendo la barra de estado"
}
function personalizacion_popup(ordr_det_id, tam1, tam2, tam3, texto1, separador) {
  var contenido;
  var opciones="width=465,height=215,screenX=200,screenY=200,left=200,top=200, location=no, directories=no, status='n', menubar=no, scrollbars=no, resizable=no";
  var pop = window.open('', '', opciones);
  pop.document.open();
  
  //pop.focus();
 
  
  if(texto1 != "") {
	  texto  = texto1.split([separador]);
	  texto1 = texto[0];
	  texto2 = texto[1];
	  texto3 = texto[2];
  }
  else{
	  texto1 = "";
	  texto2 = "";
	  texto3 = "";
  }
  var frase = " carateres máximo";
  contenido = '<body onload="cambiar_estado()" style="background-image: url(./img/fondo_formu.jpg);"> <div height:200; style="color:888888; font-size:9pt; font-weight: 600; font-family: Verdana, Arial, Helvetica, sans-serif;  width:500px; height=500px; margin:0px; padding:10pt; padding-top: 2pt; line-height:2pt:">';
  contenido += 'Ingresse aqui o texto que quer apareça em seu produto:';
  contenido += '<script type="text/javascript" src="scripts/request.js"></script>';
  contenido += '<script type="text/javascript" src="scripts/control.js"></script><br>';
  if(tam1 == 0) {
  	contenido += '<input type="hidden" id="personalizacion" value="' + texto1 + '" ></input>';
  } else {
	contenido += '<br><input id="personalizacion" type="text" size="64" maxlength="' + tam1 + '" value="' + texto1 + '"></input><br><span style="font-size:7pt;">' + tam1 + frase + '</span></br>';
	}
  if(tam2 == 0) {
  	contenido += '<br><input type="hidden" id="personalizacion2" value="' + texto2 + '" ></input></br>';
  } else {
	contenido += '<br><input id="personalizacion2" type="text" size="64" maxlength="' + tam2 + '" value="' + texto2 + '" ></input><br><span style="font-size:7pt;">' + tam2 + frase + '</span></br>';
  }
  if(tam3 == 0) {
	contenido += '<br><input type="hidden" id="personalizacion3" value="' + texto3 + '" ></input></br>';
  } else {
	contenido += '<br><input id="personalizacion3" type="text" size="64" maxlength="' + tam3 + '" value="' + texto3 + '" ></input><br><span style="font-size:7pt;">' + tam3 + frase + '</span></br>';
  }
  //contenido += '<img src="img/btn_continuar.jpg"></img>';
 // echo "<div class=\"botones_tabla\" style=\"float:right\">{$boton_cancelar}{$boton_do}</div>"
  contenido += '<div style="width:423;"><input type="image" align="right" src="img/btn_finalizar.jpg" onclick="personalizacion_set(\'' + ordr_det_id + '\')"></div> </div></body>';
   
  
  pop.document.write(contenido);
  pop.document.close();
  
}

function personalizacion_set(ordr_det_id) {
	var elem = document.getElementById('personalizacion');
	var elem2 = document.getElementById('personalizacion2');
	var elem3 = document.getElementById('personalizacion3');
	
  request('rm_personalizar.php', {},
		 
            {'ordr_det_id': encodeParam(ordr_det_id),
             'texto': encodeParam(elem.value),
			 'texto2': encodeParam(elem2.value),
			 'texto3': encodeParam(elem3.value)},
			 	function (ok) {
    if (ok == 'ok') {
      // refresh
      window.opener.location = window.opener.location;
      window.close();
    } else {
      window.alert('Texto demasiado largo.');
    }
  });
}

function aparecerUsuario(usuario){
	var email = document.getElementById('cuentas_email');
	email.value = usuario;

//	alert(email);
}


function desaparecerPersonalizacion(){
	var personalizar = document.getElementById('personalizaar');
	var personalizando = document.getElementById('personalizando');
	/*var cant = document.getElementById('cant');
	var codigo = document.getElementById('codigo');
	var desc = document.getElementById('desc');
	var precio_t = document.getElementById('precio_t');*/
	//personalizar.innerhtml = "";
	personalizar.style.display="block";
	texto =document.createTextNode('Personalizar'); 
	personalizando.removeChild(personalizando.lastChild);
	personalizando.appendChild(texto);

}