
function ActivarDireccionEnvio ()
{
	var Desactivado = ! document.DatosEnvio.DireccionEnvio.checked;
	
	document.DatosEnvio.Nombre.disabled       = Desactivado;
	document.DatosEnvio.Domicilio.disabled    = Desactivado;
	document.DatosEnvio.Localidad.disabled    = Desactivado;
	document.DatosEnvio.CodigoPostal.disabled = Desactivado;
	document.DatosEnvio.Provincia.disabled    = Desactivado;
	document.DatosEnvio.Pais.disabled         = Desactivado;
	document.DatosEnvio.Telefono.disabled     = Desactivado;
	document.DatosEnvio.selProvincia.disabled = Desactivado;
}


function AvanzarTicket (Avanzar)
{
	if (Avanzar)
	{	if (LineaTicket < LineasTicket.NumRegistros () - MAXIMO_LINEASTICKET + 1)
		{	LineaTicket++;
			PintarTicket ();
		}
	} else 
	{	
		if (LineaTicket > 1)
		{	LineaTicket--;
			PintarTicket ();
		}
	}
	if ((LineaTicket < LineasTicket.NumRegistros () - MAXIMO_LINEASTICKET + 1)) 
		ImageSrc ('RtTicket', '/imagenes/ticket_bajar.gif');
	else ImageSrc ('RtTicket', '/imagenes/ticket_bajar_off.gif');
	if (LineaTicket > 1) ImageSrc ('AvTicket', '/imagenes/ticket_subir.gif');
	else ImageSrc ('AvTicket', '/imagenes/ticket_subir_off.gif');
}


function AvisoLegal ()
{	
	var Ventana = new TVentana ();

	Ventana.Ancho       = 550;
	Ventana.Alto        = 400;
	Ventana.Nombre      = 'AvisoLegal';
	Ventana.URL         = '/fuentes/avisolegal.php';
	Ventana.Open (true);
}


function BuscarProductos ()
{   
	var Buscar = Trim (document.frmBuscar.Buscar.value);

	if (Buscar == '') 
	{	alert ('Tiene que indicar un texto a buscar.');
		document.frmBuscar.focus ();
	} else
	{	
		LimpiarParametros ();
		Par4 = escape (Buscar);
		Opc = OPC_BUSCAR;
		CargarPagina ();
	}
}   


function CambiarPais ()
{
	var Valor 		 = document.getElementById ('Pais');
	var Provincia  = document.getElementById ('selProvincia');
	
	Display ('idTRProvincia1', (Valor.value == 'ES') ? 'none' : DisplayTR ());
	Display ('idTRProvincia2', (Valor.value == 'ES') ? DisplayTR () : 'none');	
	
	if (Valor.value != 'ES') Provincia.value = '';
	document.getElementById ('Provincia').value = '';
}


function CantidadArticulo (Incrementar)
{
	var Cantidad = CadenaAEntero (document.Comprar.edtCantidad.value);
	
	if (Incrementar) document.Comprar.edtCantidad.value = Cantidad + 1;
	else if (Cantidad > 0) document.Comprar.edtCantidad.value = Cantidad - 1;
}


function CantidadCesta (Item, Cantidad)
{
	var	Ajax     = new TAjax ();

	Ajax.OnCompletar (onCantidadCesta);	
	Ajax.AddParametro ('Item',     Item);
	Ajax.AddParametro ('Cantidad', Cantidad);
	Ajax.Open ('/fuentes/actualizarpedido.php', 'Cargando');
}


function CargarFormasDePago ()
{
	var Ajax         = new TAjax ();
	var FormaDeEnvio = CadenaAEntero (document.FormasDePago.FormaDeEnvio.value);
	var Pagos        = document.getElementById ('slcFormasDePago');

	EliminarHijos (Pagos);
	InHTML ('lblAnotacion1', '&nbsp;');
	InHTML ('lblAnotacion2', '&nbsp;');
	
	if (FormaDeEnvio)
	{	Ajax.OnCompletar (onCargarFormasDePago);
		Ajax.AddParametro ('FormaDeEnvio', FormaDeEnvio);
		Ajax.Open ('/fuentes/formasdepago.php');
	} else TotalPedido.GastosDeEnvio (0);
}


function CargarFormasDeEnvio ()
{
	var Ajax  = new TAjax ();

	Ajax.OnCompletar (onCargarFormasDeEnvio);
	Ajax.Open ('/fuentes/formasdeenvio.php', 'idCargandoRejilla');
}


function CargarPagina ()
{
	var Pars = '?Opc=' + Opc;
	
	if (Par1) Pars += '&Par1=' + Par1;
	if (Par2) Pars += '&Par2=' + Par2;
	if (Par3) Pars += '&Par3=' + Par3;
	if (Par4) Pars += '&Par4=' + Par4;
	
	window.location = '/index.php' + Pars;
}


function Comprar (Articulo, Cantidad)
{
	var	Ajax = new TAjax ();
	
	if (Cantidad == 0) Cantidad = CadenaAEntero (document.Comprar.edtCantidad.value);
	
	if (Cantidad <= 0)
	{	alert ('Tiene que indicar una cantidad.');
		document.Comprar.edtCantidad.focus ();
	} else 
	{	Ajax.OnCompletar (onComprar);	
		Ajax.AddParametro ('Id', Articulo);
		Ajax.AddParametro ('Cantidad', Cantidad);
		Ajax.Open ('/fuentes/comprar.php');
	}
}


function ContinuarCompra ()
{
	Opc = OPC_CATALOGO;
	CargarPagina ();
}


function DatosCliente ()
{
	Opc = OPC_DATOSCLIENTE;
	LimpiarParametros ();
	CargarPagina ();
}


function DatosDeEnvio ()
{
	Opc  = OPC_DATOSDEENVIO;
	LimpiarParametros ();
	
	CargarPagina ();
}


function DesconectarCliente ()
{
	var	Ajax = new TAjax ();

	Ajax.OnCompletar (CargarPagina);	
	Ajax.Open ('/fuentes/desconectar.php');
}


function EliminarProducto (Item)
{
	var	Ajax     = new TAjax ();

	Ajax.OnCompletar (onCantidadCesta);	
	Ajax.AddParametro ('Item',     Item);
	Ajax.Open ('/fuentes/eliminarproducto.php', 'Cargando');
}


function EnviarFormulario ()
{
	var Ajax = new TAjax ();
	
	if (ValidarFormularioContacto ())
	{	Ajax.OnCompletar (onEnviarFormulario);
		Ajax.AddFormulario (document.Contacto);
		Ajax.Open ('/fuentes/enviarformulario.php');
	}
}


function FinalizarPedido ()
{
	var	Ajax         = new TAjax ();
	var FormaDeEnvio = CadenaAEntero (document.FormasDePago.FormaDeEnvio.value);
	var FormaDePago  = CadenaAEntero (document.FormasDePago.FormaDePago.value);

	if (FormaDeEnvio)
	{	if (FormaDePago)
		{	Ajax.FormaDePago = FormaDePago;
			Ajax.AddParametro ('FormaDeEnvio',  FormaDeEnvio);
			Ajax.AddParametro ('FormaDePago',   FormaDePago);
			Ajax.AddParametro ('GastosDeEnvio', TotalPedido.GastosDeEnvio ());
			Ajax.AddParametro ('GastosDePago',  TotalPedido.GastosDePago ());
			Ajax.AddParametro ('Total',         TotalPedido.Total ());
			Ajax.OnCompletar (onFinalizarPedido);	
			Ajax.Open ('/fuentes/finalizarpedido.php', 'Cargando');
		} else alert ('Tiene que indicar una forma de pago.');
	} else alert ('Tiene que indicar una forma de envío.');
}


function IdentificarCliente ()
{
	var Codigo = Trim (document.DatosCliente.Codigo.value);
	var Clave  = Trim (document.DatosCliente.Clave.value);

	if (Codigo == '')
	{	alert ("Tiene que indicar un código de usuario.");
		document.DatosCliente.Codigo.focus ();
	} else if (Clave == '')
	{	alert ("Tiene que indicar una clave de usuario.");
		document.DatosCliente.Clave.focus ();
	} else ValidarCliente ();
}


function InicializarPais (Control, Pais)
{
	var i = Control.length - 1;
	
	while (i >= 0 && Control.options [i].value != Pais) i--;
	if (i >= 0) Control.selectedIndex = i;
}


function InicializarProvincia (Control, Provincia)
{
	var i = Control.length - 1;
	
	while (i >= 0 && Control.options [i].value != Provincia) i--;
	if (i >= 0) Control.selectedIndex = i;
}


function LimpiarParametros ()
{
	Par1 = 0;
	Par2 = 0;
	Par3 = 0;
	Par4 = '';
}


function Main (Opcion)
{
	LimpiarParametros ();
	Opc = Opcion;
	CargarPagina ();
}


function onCantidadCesta (Peticion)
{
	var Stock = new TDataSet (Peticion.AsXML (), 'STOCK');
	
	if (Stock.NumRegistros ())
	{	if (Stock.FieldAsInteger ('Items') == 0) ContinuarCompra ();
		else if (Stock.FieldAsInteger ('Unidades') > 0)
			alert ('Solo quedan disponibles ' + Stock.FieldByName ('Unidades') + ' unidades.');
		else alert ('No quedan unidades disponibles de este producto.');
	} else InHTML ('idCesta', Peticion.AsText ());
}	


function onCargarFormasDeEnvio (Peticion)
{
	var FormasDeEnvio = DataSet = new TDataSet (Peticion.AsXML (), 'FORMADEENVIO');
	var Formas        = document.getElementById ('slcFormasDeEnvio');

	OptionSelect (Formas, 0, '');
	while (! FormasDeEnvio.Eof ())
	{	OptionSelect (Formas, FormasDeEnvio.FieldAsInteger ('Id'), FormasDeEnvio.FieldByName ('Descripcion'));
		FormasDeEnvio.Next ();
	}
}


function onCargarFormasDePago (Peticion)
{
	var Pagos         = document.getElementById ('slcFormasDePago');
	var GastosDeEnvio = new TDataSet (Peticion.AsXML (), 'GASTOSDEENVIO');
	FormasDePago      = new TDataSet (Peticion.AsXML (), 'FORMADEPAGO');

	OptionSelect (Pagos, 0, '');
	while (! FormasDePago.Eof ())
	{	OptionSelect (Pagos, FormasDePago.FieldAsInteger ('Id'), FormasDePago.FieldByName ('Descripcion'));
		FormasDePago.Next ();
	}
	if (GastosDeEnvio.NumRegistros ())
		TotalPedido.GastosDeEnvio (GastosDeEnvio.FieldAsFloat ('Importe'));
	else TotalPedido.GatosDeEnvio (0);
}


function onComprar (Peticion)
{
	var Stock = new TDataSet (Peticion.AsXML (), 'STOCK');
	
	if (Stock.NumRegistros ())
	{	if (Stock.FieldAsInteger ('Unidades') > 0)
			alert ('Solo quedan disponibles ' + Stock.FieldByName ('Unidades') + ' unidades.');
		else alert ('No quedan unidades disponibles de este producto.');
	} else VerCesta ();
}


function onEnviarFormulario (Peticion)
{
	Display ('idFormularioContacto', 'none');
	Display ('idEnvioOK', 'block');
}


function onFinalizarPedido (Peticion)
{
	var Result = Peticion.AsText ();
	
	Opc  = OPC_CATALOGO;
	LimpiarParametros ()

	if (Result == 'OK') Opc = OPC_FINPEDIDO;
	else if (Result == 'PAGOELECTRONICO')
	{ Opc  = OPC_PAGOELECTRONICO;
		Par1 = Peticion.FormaDePago;
	}
	else alert ('No se ha podido registrar el pedido.\nPor favor vuelva a intentarlo.');

	CargarPagina ();
}


function onPedirClave (Peticion)
{
	if (Peticion.AsText () == 'OK')
	{	alert ('Su código y clave de acceso han sido enviados\na su dirección de correo electrónico.\nGracias.');
		document.Recordar.Email.value = '';
		window.close ();
	} else alert ('No tenemos registrado ningún cliente con ese email.');
}


function onRegistrarCliente (Peticion)
{
	var Result = Peticion.AsText ();
	
	if (Result == 'OK') DatosDeEnvio ();
	else if (Result == 'NOLOGIN') alert ('El código no es correcto.');
	else if (Result == 'NOCLAVE') alert ('La clave no es correcta.');
	else if (Result == 'NOEMAIL') alert ('El email no es correcto.');
	else if (Result == 'LOGINDUPLICADO') alert ('Ya existe un cliente con ese código.');
	else if (Result == 'EMAILDUPLICADO') alert ('Ya existe un cliente con ese email.');
	else alert ('No se ha podido actualizar o registrar los datos del cliente.');
}


function onValidarCliente (Peticion)
{
	var Resultado = Peticion.AsText ();
	
	if (Resultado == 'OK') CargarPagina ();
	else alert ("Código de cliente o clave incorrectos.\nRecuerde que la clave es sensible\na mayúsculas y minúsculas");
}


function OnVerTicket (Peticion)
{
	LineasTicket = new TDataSet (Peticion.AsXML (), 'LINEAS');
	var Etiqueta = document.getElementById ('idLineasTicket');
	var Lineas   = LineasTicket.NumRegistros ();

	if (Etiqueta && Lineas)
	{	LineaTicket = 0;
		if (Lineas > MAXIMO_LINEASTICKET) LineaTicket = Lineas - MAXIMO_LINEASTICKET + 1;
		PintarTicket ();
	}
}


function PedirClave ()
{
	var Ajax = new TAjax ();

	if (Trim (document.Recordar.Email.value) == '') alert ('Tiene que indicar un email.');
	else if (! EmailCorrecto (document.Recordar.Email.value)) alert ('El email indicado no es correcto.');
	else
	{	Ajax.SetOnCompletar (onPedirClave);
		Ajax.AddParametro ('Email', document.Recordar.Email.value);
		Ajax.Open ('/fuentes/recordarclave.php', 'Cargando');
	}
}


function PintarTicket ()
{
	var f        = 0;
	var i        = -1;
	var Fila     = '';
	var Div      = null;
	var Importe  = null;
	var Etiqueta = document.getElementById ('idLineasTicket');

	Etiqueta.innerHTML = '';
	LineasTicket.Registro (LineaTicket);
	while (! LineasTicket.Eof () && f++ < MAXIMO_LINEASTICKET)
	{	Fila = (i > 0 ? 'FilaPar' : 'FilaImpar');
		Div = document.createElement ('div');
		Div.className = Fila;
		Div.style.paddingTop = '5px';
		Div.innerHTML = LineasTicket.FieldByName ('Cantidad') + ', ' + LineasTicket.FieldByName ('Descripcion');
		Etiqueta.appendChild (Div);
		Div = document.createElement ('div');
		Div.className = Fila;
		Div.style.paddingBottom = '5px';
		Importe = document.createElement ('div');
		Importe.className = 'Importe';
		Importe.innerHTML = LineasTicket.FieldByName ('Importe') + ' &euro;';
		Div.appendChild (Importe);
		Div.innerHTML += '&nbsp;';
		Etiqueta.appendChild (Div);
		LineasTicket.Next ();
		i *= -1;
	}
}


function RecalcularFormaDePago ()
{
	if (FormasDePago.Locate ('Id', document.FormasDePago.FormaDePago.value))
	{	TotalPedido.GastosDePago (FormasDePago.FieldAsFloat ('Incremento'));
		InHTML ('lblAnotacion1', '<b>' + FormasDePago.FieldByName ('Anotacion1') + '</b>&nbsp;');
		InHTML ('lblAnotacion2', '<b>' + FormasDePago.FieldByName ('Anotacion2') + '</b>&nbsp;');
	}
	else
	{ TotalPedido.GastosDePago (0);
		InHTML ('lblAnotacion1', '&nbsp;');
		InHTML ('lblAnotacion2', '&nbsp;');
	}		
}


function RecordarClave ()
{
	var Ventana        = new TVentana ()
	Ventana.Ancho      = 600;
	Ventana.Alto       = 420;
	Ventana.ScrollBars = false;
	Ventana.Nombre     = 'Recordar';
	Ventana.URL        = '/fuentes/recordarclave.php';
	Ventana.Open (true);
}


function RegistrarCliente ()
{
	var Ajax = new TAjax ();
		
	if (ValidarDatosCliente ())
	{	Ajax.SetOnCompletar (onRegistrarCliente);
		Ajax.AddFormulario (document.DatosCliente);
		Ajax.Open ('/fuentes/datoscliente.php', 'Cargando');
	}
}


function ValidarCliente ()
{
	var	Ajax = new TAjax ();

	Ajax.OnCompletar (onValidarCliente);	
	Ajax.AddParametro ('Codigo', Trim (document.DatosCliente.Codigo.value));
	Ajax.AddParametro ('Clave', Trim (document.DatosCliente.Clave.value));
	Ajax.Open ('/fuentes/identificarcliente.php', 'Cargando');
}


function ValidarDatosCliente ()
{
	var Codigo  = Trim (document.DatosCliente.Codigo.value);
	var Clave   = Trim (document.DatosCliente.Clave.value);
	var Repetir = Trim (document.DatosCliente.Repetir.value);
	
	if (Codigo == '')
	{	alert ("Tiene que indicar un código de cliente.");
		document.DatosCliente.Codigo.focus ();
	}	else if (Codigo.length < 5)
	{ alert ("El código tiene que contener 5 o más carácteres.");
		document.DatosCliente.Codigo.focus ();
	} else if (Clave == '') 
	{	alert ("Tiene que indicar una clave de acceso.");
		document.DatosCliente.Clave.focus ();
	} else if (Clave.length < 5)
	{ alert ("La clave de acceso tiene que contener 5 o más carácteres.");
		document.DatosCliente.Clave.focus ();
	}	else if (Repetir != Clave) 
	{	alert ("La clave de acceso y su confirmación son distintas.");
		document.DatosCliente.Clave.focus ();
	}	else if (Trim (document.DatosCliente.Nombre.value) == '')
	{	alert ("Tiene que indicar un nombre.");
		document.DatosCliente.Nombre.focus ();
	}	else if (Trim (document.DatosCliente.Email.value) == '')
	{	alert ("Tiene que indicar un e-mail.");
		document.DatosCliente.Email.focus ();
	} else if (! EmailCorrecto (document.DatosCliente.Email.value))
	{	alert ('El email indicado no es correcto.');
		document.DatosCliente.Email.focus ();
	}	else if (Trim (document.DatosCliente.Dni.value) == '') 
	{	alert ("Tiene que indicar un DNI/CIF.");
		document.DatosCliente.Dni.focus ();
	}	else if (Trim (document.DatosCliente.Domicilio.value) == '')
	{	alert ("Tiene que indicar una dirección.");
		document.DatosCliente.Domicilio.focus ();
	}	else if (Trim (document.DatosCliente.Pais.value) == '') 
	{	alert ("Tiene que indicar un país.");
		document.DatosCliente.Pais.focus ();
	}	else if ((Trim (document.DatosCliente.Provincia.value) == '') && (Trim (document.DatosCliente.selProvincia.value) == ''))
	{	alert ("Tiene que indicar una provincia.");
		document.DatosCliente.Provincia.focus ();
	} else if (Trim (document.DatosCliente.CodigoPostal.value) == '')
	{	alert ("Tiene que indicar un código postal.");
		document.DatosCliente.CodigoPostal.focus();
	} else if (Trim (document.DatosCliente.Localidad.value) == '')
	{	alert ("Tiene que indicar una localidad.");
		document.DatosCliente.Localidad.focus ();
	}	else if (Trim (document.DatosCliente.Telefono.value) == '')
	{	alert ("Tiene que indicar un teléfono.");
		document.DatosCliente.Telefono.focus ();
	}	else return (true);
	return (false);
}


function ValidarDirEnvio ()
{
	var Result = false;
	
	if (document.DatosEnvio.DireccionEnvio.checked)
	{	if (LTrim (document.DatosEnvio.Nombre.value) == '')
		{	alert ("Tiene que indicar un nombre\nen la dirección de envío.");
			document.DatosEnvio.Nombre.focus ();
		} else if (LTrim (document.DatosEnvio.Domicilio.value) == '')
		{	alert ("Tiene que indicar una dirección \nen la dirección de envío.");
			document.DatosEnvio.Domicilio.focus ();
		} else if (LTrim (document.DatosEnvio.Localidad.value) == '') 
		{	alert ("Tiene que indicar una localidad \nen la dirección de envío.");
			document.DatosEnvio.Localidad.focus ();
		} else if ((LTrim (document.DatosEnvio.Provincia.value) == '') && (LTrim (document.DatosEnvio.selProvincia.value) == ''))
		{	alert ("Tiene que indicar una provincia \nen la dirección de envío.");
			document.DatosEnvio.Provincia.focus ();
		} else if (LTrim (document.DatosEnvio.Pais.value) == '') 
		{	alert ("Tiene que indicar un país \nen la dirección de envío.");
			document.DatosEnvio.Pais.focus ();
		}else Result = true;
	} else Result = true;
	return (Result);
}


function ValidarFormularioContacto ()
{
	var Result = false;
	
	if (CadenaVacia (document.Contacto.Nombre.value))
	{	alert ('Tiene que indicar un nombre de contacto.');
		document.Contacto.Nombre.focus ();
	}	else if (CadenaVacia (document.Contacto.Telefono.value))
	{ alert ('Tiene que indicar un teléfono.');
		document.Contacto.Telefono.focus ();
	} else if (CadenaVacia (document.Contacto.Email.value))
	{ alert ('Tiene que indicar un email.');
		document.Contacto.Email.focus ();
	}	else if (! EmailCorrecto (document.Contacto.Email.value))
	{ alert ('El email indicado no es correcto.');
		document.Contacto.Email.focus ();
	}	else if (CadenaVacia (document.Contacto.Consulta.value))
	{ alert ('Tiene que indicar una consulta.');
		document.Contacto.Consulta.focus ();
	}	else Result = true;

	return (Result);
}


function VerArticulo (Articulo)
{
	Opc  = OPC_CATALOGO;
	Par2 = Articulo;
	Par4 = '';
	CargarPagina ();
}


function VerCategoria (Categoria)
{
	var P3 = Par1 == Categoria && Opc == OPC_CATALOGO ? Par3 : 0;

	if (Par1 != Categoria || Opc != OPC_CATALOGO || Par2)
	{	Opc  = OPC_CATALOGO;
		LimpiarParametros ();
		Par3 = P3;
		Par1 = Categoria;
		CargarPagina ();
	}
}


function VerCesta ()
{
	Opc = OPC_CESTA;
	CargarPagina ();
}


function VerPromocion (Articulo)
{
	Opc  = OPC_CATALOGO;
	LimpiarParametros ();
	Par2 = Articulo;
	CargarPagina ();
}


function VerTicket ()
{
	var Ajax = new TAjax ();
	
	Ajax.OnCompletar (OnVerTicket);
	Ajax.Open ('/fuentes/ticket.php');
}


//================================================================================================
//================================================================================================
//================================================================================================
//================================================================================================
//================================================================================================



function HayFormasDePago ()
{
	var	Ajax     = new TAjax ();

	if (ValidarDirEnvio ()) 
	{	Ajax.OnCompletar (onHayFormasDePago);
		Ajax.AddFormulario (document.DatosEnvio);
		Ajax.Open ('/fuentes/hayformasdepago.php', 'Cargando');
	}
}	

function onHayFormasDePago (Peticion)
{
	var Result = Peticion.AsText ();

	if (Result == 'NOPAGO') 
		alert ('Actualmente no suministramos en ese país/provincia.\nPor favor pongasé en contacto con nosotros.');
	else if (Result == 'OK')
	{	Opc = OPC_FORMASDEPAGO;
		LimpiarParametros ();
		CargarPagina ();
	}
}
