
Cesta.oFormasDeEnvio = null;
Cesta.oFormasDePago  = null;
Cesta.iTicketLinea   = 0;
Cesta.iTicketLineas  = 0;
Cesta.fTotal         = 0;


Cesta.ActivarDirEnvio = function (oFormulario)
{
	var Desactivado = ! oFormulario.DireccionDeEnvio.checked;

	oFormulario.EnvioNombre.disabled       = Desactivado;
	oFormulario.EnvioDireccion.disabled    = Desactivado;
	oFormulario.EnvioDireccion2.disabled   = Desactivado;
	oFormulario.EnvioPais.disabled         = Desactivado;
	oFormulario.EnvioCodigoPostal.disabled = Desactivado;
	oFormulario.EnvioMunicipio.disabled    = Desactivado;
	oFormulario.EnvioProvincia.disabled    = Desactivado;
	oFormulario.EnvioTelefono.disabled     = Desactivado;
}


Cesta.Cantidad = function (sItem, iCantidad)
{
	var	Ajax = new TAjax ();

	$ ('idCantidad-' + sItem, 'style.display', 'none');
	$ ('idCargando-' + sItem, 'style.display', '');

	Ajax.onCargar      = function (oPeticion)
	                     { $ ('idCatalogo', 'innerHTML', oPeticion.asText ());
											 }
	Ajax.Vars.Item     = sItem;
	Ajax.Vars.Cantidad = iCantidad;
	Ajax.Cargar ('/fuentes/actualizarpedido.php');
}


Cesta.CantidadArticulo = function (oControl, Incrementar)
{
	var Cantidad = oControl.value.asInteger ();

	if (Incrementar) oControl.value = Cantidad + 1;
	else if (Cantidad > 0) oControl.value = Cantidad - 1;
}


Cesta.Comprar = function (bReferencias)
{
	
	var	Ajax       = new TAjax ();
	var Cantidades = new Array ();
	var i          = 1;
	var Cantidad   = document.Comprar ['Cantidad' + i];
		
	while (Cantidad)
	{	if (Cantidad.value.asInteger ())
			Cantidades.push (new Array (Cantidad.value.asInteger (), Cantidad.getAttribute ('Ident')));
		i++;
		Cantidad = document.Comprar ['Cantidad' + i];
	}

	if (! Cantidades.length)
	{	alert ('Tiene que indicar una cantidad.');
		document.Comprar.Cantidad1.focus ();
	} else
	{	Ajax.onCargar = function (oPeticion)
										{
											var Result = oPeticion.asText ();

											if (Result.substr (0, 5) == 'STOCK')
											{	Result = Result.substr (5).asInteger ();
												if (Result > 0) alert ('Solo quedan disponibles ' + Result + ' unidades.');
												else alert ('No quedan unidades disponibles de este producto.');
											} else window.location = '/Nuestros-Productos/Cesta';
										}
		Ajax.Vars.Cantidades  = Serialize (Cantidades);
		Ajax.Vars.URL         = location.href;
		Ajax.Vars.Referencias = bReferencias;
		Ajax.Cargar ('/fuentes/comprar.php');
	}
}


Cesta.DatosClienteOK = function (oFormulario)
{
	if (Formulario.Validar (oFormulario))
	{	if (oFormulario.FS_Clave.value != oFormulario.Repetir.value) alert ('La clave y su confirmación son distintas.');
		else if (!oFormulario.Lopd.checked) alert ('Tiene que aceptar la política de privacidad y Confidencialidad.');
		else
		{	var Ajax = new TAjax ();
			
			Ajax.onCargar = function (oPeticion) { if (Cesta.Mensaje (oPeticion.asText ())) window.location = '/Nuestros-Productos/Datos-De-Envio'; }
			Ajax.Formulario (oFormulario);
			Ajax.Cargar ('/fuentes/datoscliente.php');
		}
	}
}


Cesta.DatosDeEnvioOK = function (oFormulario)
{
	var	Ajax     = new TAjax ();

	if (Formulario.Validar (oFormulario))
	{	Ajax.onCargar = function (oPeticion) { if (Cesta.Mensaje (oPeticion.asText ())) window.location = '/Nuestros-Productos/Formas-de-pago'; }
		Ajax.Formulario (oFormulario);
		Ajax.Cargar ('/fuentes/datosdeenvio.php');
	}
}


Cesta.EnviarClave = function (oFormulario)
{
	if (Formulario.Validar (oFormulario))
	{	var Ajax = new TAjax ();
		
		Ajax.onCargar = function (oPeticion) 
										{ if (Cesta.Mensaje (oPeticion.asText ()))
											{	alert ('Su clave de acceso ha sido enviada.');
												TWindow.Cerrar ();
											}
										}
		Ajax.Vars.Email = oFormulario.Email.value;
		Ajax.Cargar ('/fuentes/recordarclave.php');
	}
}


Cesta.FormasDeEnvio = function (fTotal)
{
	Cesta.fTotal = fTotal;

	var Ajax  = new TAjax ();

	Ajax.onCargar = function (oPeticion)
									{	
										var Formas = $('idFormasDeEnvio');
										Cesta.oFormasDeEnvio = DataSet (oPeticion.asText (), 'FORMASDEENVIO');
										OptionSelect (Formas, 0, '');

										while (! Cesta.oFormasDeEnvio.Eof ())
										{	OptionSelect (Formas, Cesta.oFormasDeEnvio.asInteger ('Id'), Cesta.oFormasDeEnvio.ByName ('Descripcion'));
											Cesta.oFormasDeEnvio.Next ();
										}
									}
	Ajax.Cargando = 'idCargEnvio|visible';
	Ajax.Cargar ('/fuentes/formasdeenvio.php');
}


Cesta.FormasDePago = function ()
{
	var Ajax         = new TAjax ();
	var FormaDeEnvio = document.FormasDePago.FormaDeEnvio.value.asInteger ();
	var Pagos        = $ ('idFormasDePago');

	EliminarHijos (Pagos);
	$ ('idAnotacion', 'innerHTML', '');
	Cesta.GastosDeEnvio (Cesta.fTotal, 0, 0, '');

	if (FormaDeEnvio)
	{	Cesta.oFormasDeEnvio.Locate ('Id', FormaDeEnvio);
		if (Cesta.oFormasDeEnvio.asBoolean ('Limite'))
		{	alert ('Está forma de envío excede el límite de peso.\nPor favor elija otra forma de envío o divida el pedido.');
			document.FormasDePago.FormaDeEnvio.value = 0;
		} else
		{	Cesta.GastosDeEnvio (Cesta.oFormasDeEnvio.asFloat ('Total'), Cesta.oFormasDeEnvio.asFloat ('Gastos'),
			                     Cesta.oFormasDeEnvio.asFloat ('Descuento'), '');
			Ajax.onCargar = function (oPeticion)
											{	
												Cesta.oFormasDePago = DataSet (oPeticion.asText (), 'FORMASDEPAGO');
												OptionSelect (Pagos, 0, '');
												while (! Cesta.oFormasDePago.Eof ())
												{	OptionSelect (Pagos, Cesta.oFormasDePago.asInteger ('Id'), Cesta.oFormasDePago.ByName ('Descripcion'));
													Cesta.oFormasDePago.Next ();
												}
											}
			Ajax.Vars.FormaDeEnvio = FormaDeEnvio;
			Ajax.Cargando = 'idCargPago|visible';
			Ajax.Cargar ('/fuentes/formasdepago.php');
		}
	}
}


Cesta.GastosDeEnvio = function (fTotal, fGastos, fDescuento, sTexto)
{
	$ ('idTotalAPagar', 'innerHTML', FlotanteACadena (fTotal, 2));
	$ ('idGastosDeEnvio', 'innerHTML', FlotanteACadena (fGastos, 2));
	$ ('idDtoGastos', 'innerHTML', '-' + FlotanteACadena (fDescuento, 2));
	$ ('idTRDescuento', 'style.visibility', fDescuento > 0.01 ? '' : 'hidden');
	$ ('idAnotacion', 'innerHTML', sTexto + '&nbsp;');
	document.FormasDePago.Total.value     = fTotal;
	document.FormasDePago.Gastos.value    = fGastos;
	document.FormasDePago.Descuento.value = fDescuento;
}


Cesta.GastosFormaDePago = function ()
{
	Cesta.GastosDeEnvio (Cesta.fTotal, 0, 0, '');

	if (Cesta.oFormasDePago.Locate ('Id', document.FormasDePago.FormaDePago.value))
		Cesta.GastosDeEnvio (Cesta.oFormasDePago.asFloat ('Total'), Cesta.oFormasDePago.asFloat ('Gastos'),
		                     Cesta.oFormasDePago.asFloat ('Descuento'), Cesta.oFormasDePago.ByName ('Texto'));
	else if (Cesta.oFormasDeEnvio.Locate ('Id', document.FormasDePago.FormaDeEnvio.value))
		Cesta.GastosDeEnvio (Cesta.oFormasDeEnvio.asFloat ('Total'), Cesta.oFormasDeEnvio.asFloat ('Gastos'),
		                     Cesta.oFormasDeEnvio.asFloat ('Descuento'), '');
}


Cesta.Login = function (oFormulario)
{
	function Botones (bCargando)
	{		
		$ ('idBtnLogin', 'style.display', bCargando ? 'none' : '');
		$ ('idCargando', 'style.display', bCargando ? '' : 'none');
	}
	var	Ajax = new TAjax ();

	Botones (true);	
	if (Formulario.Validar (oFormulario))
	{	Ajax.onCargar    = function (oPeticion)
		                   {	
		                   		if (oPeticion.asText () == 'OK') window.location = '/Nuestros-Productos/Datos-De-Envio';
		                   		else 
		                   	 	{	alert ("Email de cliente o clave incorrectos.\nRecuerde que la clave es sensible\na mayúsculas y minúsculas");
		                   	 		Botones (false);
		                   	 	}
		                   }
		Ajax.Vars.Email = oFormulario.Email.value.Trim ();
		Ajax.Vars.Clave = oFormulario.Clave.value.Trim ();
		Ajax.Cargar ('/fuentes/login.php');
	} else Botones (false);
}


Cesta.Mensaje = function (sMsg)
{
	if (sMsg == 'OK') return true;
	else if (sMsg.substr (0, 4) == 'MSG:') alert (sMsg.substr (4));
	else alert ('No se han podido guardar los cambios.\nPor favor vuelva a intentarlo.');
	return false;
}


Cesta.onRollOutFila = function (oFila)
{
	oFila.style.backgroundColor = '';
}


Cesta.onRollOverFila = function (oFila)
{
	oFila.style.backgroundColor = '#efefef';
}


Cesta.RecordarClave = function ()
{
	var Ventana = new TWindow ();

  	Ventana.Ancho = 600;
  	Ventana.Alto  = 500;
  	Ventana.Cargar ('/fuentes/recordarclave.php');
}


Cesta.Ticket = function (bSiguiente)
{
	if (bSiguiente && Cesta.iTicketLinea + 4 <= Cesta.iTicketLineas)
	{
		Cesta.iTicketLinea++;
		Cesta.TicketVer ();
	} else if (! bSiguiente && Cesta.iTicketLinea > 1)
	{
		Cesta.iTicketLinea--;
		Cesta.TicketVer ();
	}
}


Cesta.TicketInit = function (iNumLineas)
{
	var i = iNumLineas;

	Cesta.iTicketLineas = iNumLineas;
	Cesta.iTicketLinea  = iNumLineas - 4 < 1 ? 1 : iNumLineas - 3;
	Cesta.TicketVer ();
}


Cesta.TicketVer = function ()
{
	for (var i = 1; i <= Cesta.iTicketLineas; i++)
		$ ('idTicket-' + i, 'style.display', i < Cesta.iTicketLinea || i >= Cesta.iTicketLinea + 4 ? 'none' : '');
}


function Cesta ()
{
}


///////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////


Cesta.FinPedido = function ()
{
	var	Ajax         = new TAjax ();
	var FormaDeEnvio = document.FormasDePago.FormaDeEnvio.value.asInteger ();
	var FormaDePago  = document.FormasDePago.FormaDePago.value.asInteger ();
	
	if (FormaDeEnvio)
	{	if (FormaDePago)
		{	$ ('idBotones', 'style.visibility', 'hidden');
			Ajax.Vars.FormaDeEnvio = FormaDeEnvio;
			Ajax.Vars.FormaDePago  = FormaDePago;
			Ajax.Vars.Gastos       = document.FormasDePago.Gastos.value.asFloat ();
			Ajax.Vars.Descuento    = document.FormasDePago.Descuento.value.asFloat ();
			Ajax.Vars.Total        = document.FormasDePago.Total.value.asFloat ();
			Ajax.onCargar          = function (oPeticion)
																{
																	var Result = oPeticion.asText ();
																	if (Result == 'OK') window.location = '/Nuestros-Productos/Fin-Pedido';
																	else if (Result == 'PAGOELECTRONICO') window.location = '/Nuestros-Productos/Pago-Electronico';
																	else alert ('No se ha podido registrar su pedido.\nPor favor vuelva a intentarlo.');
																	CargarPagina ();
																}
			Ajax.Cargando = 'idCargando|visible';
			Ajax.Cargar ('/fuentes/finalizarpedido.php');
		} else alert ('Tiene que indicar una forma de pago.');
	} else alert ('Tiene que indicar una forma de envío.');
}


Cesta.Desconectar = function ()
{
	var	Ajax = new TAjax ();

	Ajax.onCargar = function (oPeticion) { window.location.reload (); }
	Ajax.Cargar ('/fuentes/desconectar.php');
}





