
function ActivarDireccionEnvio ()
{
	var Desactivado = ! document.DatosDeEnvio.DireccionDeEnvio.checked;
	
	document.DatosDeEnvio.EnvioNombre.disabled       = Desactivado;
	document.DatosDeEnvio.EnvioDireccion.disabled    = Desactivado;
	document.DatosDeEnvio.EnvioDireccion2.disabled   = Desactivado;
	document.DatosDeEnvio.EnvioPais.disabled         = Desactivado;
	document.DatosDeEnvio.EnvioCodigoPostal.disabled = Desactivado;
	document.DatosDeEnvio.EnvioMunicipio.disabled    = Desactivado;
	document.DatosDeEnvio.EnvioProvincia.disabled    = Desactivado;
	document.DatosDeEnvio.EnvioProvincias.disabled   = Desactivado;
	document.DatosDeEnvio.EnvioTelefono.disabled     = Desactivado;
}


function ActivarSubMenu (iIdent, iPadre)
{
	var Aux = document.getElementById ('idSubMenu-' + iIdent);

	if (Aux)
	{	Aux.className = 'Seleccionado';
		Display ('idMenu-' + iPadre, 'block');
	}
}


function AvisoLegal ()
{
	var Ventana = new TVentana ();

	Ventana.Ancho       = 550;
	Ventana.Alto        = 400;
	Ventana.Nombre      = 'AvisoLegal';
	Ventana.URL         = '/fuentes/avisolegal.php';
	Ventana.Open (true);
}


function Buscar (Opcion)
{
	var Buscar = Trim (document.Buscador.Buscar.value);
	
	if (Buscar)
	{	LimpiarParametros ();
		Opc  = Opcion;
		Par4 = Buscar;
		CargarPagina ();
	}
}


function CambiarPais (Pais)
{
	Display ('idProvincia',  Pais.value == 'ES' ? 'none'  : 'block');
	Display ('idProvincias', Pais.value == 'ES' ? 'block' : 'none');	
}



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 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, Opcion)
{
	var	Ajax = new TAjax ();
	
	Ajax.OnCompletar (onComprar);	
	Ajax.Opcion = Opcion;
	Ajax.AddParametro ('Id', Articulo);
	Ajax.AddParametro ('Cantidad', 1);
	Ajax.Open ('/fuentes/comprar.php');
}


function EnviarContacto ()
{
	var Ajax = new TAjax ();
	
	if (ValidarContacto ())
	{	Ajax.OnCompletar (onEnviarContacto);
		Ajax.AddFormulario (document.Contacto);
		Ajax.Open ('/fuentes/enviarcontacto.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.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 HayFormasDePago (Opcion)
{
	var	Ajax     = new TAjax ();

	if (ValidarDireccionDeEnvio ()) 
	{	Ajax.OnCompletar (onHayFormasDePago);
		Ajax.AddFormulario (document.DatosDeEnvio);
		Ajax.Opcion = Opcion;
		Ajax.Open ('/fuentes/hayformasdepago.php', 'Cargando');
	}
}	


function IdentificarCliente ()
{
	var Codigo = Trim (document.Login.Codigo.value);
	var Clave  = Trim (document.Login.Clave.value);

	if (Codigo == '')
	{	alert ("Tiene que indicar un código de usuario.");
		document.Login.Codigo.focus ();
	} else if (Clave == '')
	{	alert ("Tiene que indicar una clave de usuario.");
		document.Login.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 Main (Opcion)
{
	Opc = Opcion;
	LimpiarParametros ();
	CargarPagina ();
}


function MenuCategorias (iMenu, iRevistas, iLibros)
{
	var Aux = document.getElementById ('idMenu-' + iMenu);

	if (iMenu == iRevistas)	Display ('idMenu-' + iLibros,   'none');
	else Display ('idMenu-' + iRevistas, 'none');

	if (Aux.style.display == 'none') Aux.style.display = 'block';
	else Aux.style.display = 'none';
}


function MsgAlert (oMensaje, sMensaje)
{
	alert (sMensaje);
	oMensaje.focus ();
}


function onCantidadCesta (Peticion)
{
	var Datos = DataSet (Peticion.AsText (), 'STOCK', 'CESTA');

	if (Datos [0].RecordCount ())
	{	if (Datos [0].FieldAsInteger ('Items') == 0) Main (OPC_HOME);
		else if (Datos [0].FieldAsInteger ('Unidades') > 0)
			alert ('Solo quedan disponibles ' + Datos [0].FieldByName ('Unidades') + ' unidades.');
		else alert ('No quedan más unidades disponibles de este producto.');
	} else
	{ InHTML ('idCesta', Datos [1].FieldByName ('HTML'));
		InHTML ('idTotalCesta', Datos [1].FieldByName ('TotalCesta'));
	}
}	


function onComprar (Peticion)
{
	var Stock = DataSet (Peticion.AsText (), 'STOCK');

	if (Stock.RecordCount ())
	{	if (Stock.FieldAsInteger ('Unidades') > 0)
			alert ('Solo quedan disponibles ' + Stock.FieldByName ('Unidades') + ' unidades.');
		else alert ('No quedan unidades disponibles de este producto.');
	} else Main (Peticion.Opcion);
}


function onEnviarContacto (Peticion)
{
	Display ('idContacto',   'none');
	Display ('idContactoOK', 'block');
}


function onFinalizarPedido (Peticion)
{
	var Result = Peticion.AsText ();
	
	if (Result == 'OK') Opc = OPC_FINPEDIDO;
	else if (Result == 'PAGOELECTRONICO') Opc = OPC_PAGOELECTRONICO;
	else alert ('No se ha podido registrar el pedido.\nPor favor vuelva a intentarlo.');
	CargarPagina ();
}


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') Main (Peticion.Opcion);
}


function onPedirClave (Peticion)
{
	if (Peticion.AsText () == 'OK')
	{	Display ('idRecordarClave', 'none');
		Display ('idEnvioOK', 'block');
	} else alert ('No tenemos registrado ningún usuario con ese email.');
}


function onRegistrarCliente (Peticion)
{
	var Result = Peticion.AsText ();

	if (Result == 'OK') Main (Peticion.Opcion);
	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 onSuscribir (Peticion)
{
	if (Peticion.AsText () == 'OK')
	{	alert ('El email: ' + Peticion.Email + ' ha sido suscrito al boletin.');
		document.Boletin.Email.value = '';
	} else alert ('No se ha podido realizar la suscripción.');
}


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 PedirClave ()
{
	var Ajax = new TAjax ();

	if (Trim (document.Recordar.Email.value) == '') alert ('Tiene que indicar su 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 RecordarClave ()
{
	var Ventana        = new TVentana ()
	Ventana.Ancho      = 600;
	Ventana.Alto       = 370;
	Ventana.ScrollBars = false;
	Ventana.Nombre     = 'Recordar';
	Ventana.URL        = '/fuentes/recordarclave.php';
	Ventana.Open (true);
}


function RegistrarCliente (Opcion)
{
	var Ajax = new TAjax ();
		
	if (ValidarDatosCliente ())
	{	Ajax.Opcion = Opcion;
		Ajax.SetOnCompletar (onRegistrarCliente);
		Ajax.AddFormulario (document.DatosCliente);
		Ajax.Open ('/fuentes/datoscliente.php', 'Cargando');
	}
}


function Suscribir ()
{
	var Email = Trim (document.Boletin.Email.value);
	var Ajax  = new TAjax ();
	
	if (Email)
	{	if (EmailCorrecto (Email))
		{	Ajax.OnCompletar (onSuscribir);
			Ajax.AddParametro ('Email', Email);
			Ajax.Email = Email;
			Ajax.Open ('/fuentes/suscribir.php');
		} else alert ('El email indicado ' + Email + ' no es correcto.');
	}
}


function ValidarCliente ()
{
	var	Ajax = new TAjax ();

	Ajax.OnCompletar (onValidarCliente);	
	Ajax.AddParametro ('Codigo', Trim (document.Login.Codigo.value));
	Ajax.AddParametro ('Clave', Trim (document.Login.Clave.value));
	Ajax.Open ('/fuentes/identificarcliente.php', 'Cargando');
}


function ValidarContacto ()
{
	if (CadenaVacia (document.Contacto.Nombre.value))
	{	alert ('Tiene que indicar un nombre.');
		document.Contacto.Nombre.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 return (true);
	return (false);
}


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 == '') 
		MsgAlert (document.DatosCliente.Codigo, 'Tiene que indicar un código de cliente.');
	else if (Codigo.length < 5) 
		MsgAlert (document.DatosCliente.Codigo, 'El código tiene que contener 5 o más carácteres.');
	else if (Clave == '') 
		MsgAlert (document.DatosCliente.Clave, 'Tiene que indicar una clave de acceso.');
	else if (Clave.length < 5)
		MsgAlert (document.DatosCliente.Clave, 'La clave de acceso tiene que contener 5 o más carácteres.');
	else if (Repetir == '')
		MsgAlert (document.DatosCliente.Repetir, 'Tiene que repetir la clave de acceso.');
	else if (Repetir != Clave) 
		MsgAlert (document.DatosCliente.Clave, 'La clave de acceso y su confirmación son distintas.');
	else if (Trim (document.DatosCliente.Nombre.value) == '')
		MsgAlert (document.DatosCliente.Nombre, 'Tiene que indicar un nombre.');
	else if (Trim (document.DatosCliente.Email.value) == '')
		MsgAlert (document.DatosCliente.Email, 'Tiene que indicar un e-mail.');
	else if (! EmailCorrecto (document.DatosCliente.Email.value))
		MsgAlert (document.DatosCliente.Email, 'El email indicado no es correcto.');
	else if (Trim (document.DatosCliente.Dni.value) == '') 
		MsgAlert (document.DatosCliente.Dni, 'Tiene que indicar un DNI/CIF.');
	else if (Trim (document.DatosCliente.Direccion.value) == '')
		MsgAlert (document.DatosCliente.Direccion, 'Tiene que indicar una dirección.');
	else if (Trim (document.DatosCliente.Pais.value) == '') 
		MsgAlert (document.DatosCliente.Pais, 'Tiene que indicar un país.');
	else if (Trim (document.DatosCliente.CodigoPostal.value) == '')
		MsgAlert (document.DatosCliente.CodigoPostal, 'Tiene que indicar un código postal.');
	else if (Trim (document.DatosCliente.Municipio.value) == '')
		MsgAlert (document.DatosCliente.Municipio, 'Tiene que indicar un municipio.');
	else if (document.DatosCliente.Pais.value == 'ES' && ! document.DatosCliente.Provincias.value)
		MsgAlert (document.DatosCliente.Provincias, 'Tiene que indicar una provincia.');
	else if (document.DatosCliente.Pais.value != 'ES' && ! document.DatosCliente.Provincia.value)
		MsgAlert (document.DatosCliente.Provincia, 'Tiene que indicar una provincia.');
	else if (Trim (document.DatosCliente.Telefono.value) == '')
		MsgAlert (document.DatosCliente.Telefono, 'Tiene que indicar un teléfono.');
	else return (true);
	return (false);
}


function ValidarDireccionDeEnvio ()
{
	var Result = false;
	
	if (document.DatosDeEnvio.DireccionDeEnvio.checked)
	{	if (Trim (document.DatosDeEnvio.EnvioNombre.value) == '')
			MsgAlert (document.DatosDeEnvio.EnvioNombre, 'Tiene que indicar un nombre en la dirección de envío.');
		else if (Trim (document.DatosDeEnvio.EnvioDireccion.value) == '')
			MsgAlert (document.DatosDeEnvio.EnvioDireccion, 'Tiene que indicar una dirección de envío.');
		else if (Trim (document.DatosDeEnvio.EnvioPais.value) == '') 
			MsgAlert (document.DatosDeEnvio.EnvioPais, 'Tiene que indicar un país de envío.');
		else if (Trim (document.DatosDeEnvio.EnvioCodigoPostal.value) == '')
			MsgAlert (document.DatosDeEnvio.EnvioCodigoPostal, 'Tiene que indicar un código postal de envío.');
		else if (Trim (document.DatosDeEnvio.EnvioMunicipio.value) == '')
			MsgAlert (document.DatosDeEnvio.EnvioMunicipio, 'Tiene que indicar un municipio de envío.');
		else if (document.DatosDeEnvio.EnvioPais.value == 'ES' && ! document.DatosDeEnvio.EnvioProvincias.value)
			MsgAlert (document.DatosDeEnvio.EnvioProvincias, 'Tiene que indicar una provincia de envío.');
		else if (document.DatosDeEnvio.EnvioPais.value != 'ES' && ! document.DatosDeEnvio.EnvioProvincia.value)
			MsgAlert (document.DatosDeEnvio.EnvioProvincia, 'Tiene que indicar una provincia de envío.');
		else if (Trim (document.DatosDeEnvio.EnvioTelefono.value) == '')
			MsgAlert (document.DatosDeEnvio.EnvioTelefono, 'Tiene que indicar un teléfono de envío.');
		else Result = true;
	} else Result = true;
	return (Result);
}


function VerArticulo (Opcion, Para1, Para2)
{
	LimpiarParametros ();
	Opc  = Opcion;
	Par1 = Para1;
	Par2 = Para2;
	CargarPagina ();
}


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

function LimpiarParametros ()
{
	Par1 = 0;
	Par2 = 0;
	Par3 = 0;
	Par4 = '';
}


function CargarFormasDeEnvio ()
{
	var Ajax  = new TAjax ();

	Ajax.OnCompletar (onCargarFormasDeEnvio);
	Ajax.Open ('/fuentes/formasdeenvio.php', 'idCargando');
}


function onCargarFormasDeEnvio (Peticion)
{
	var FormasDeEnvio = DataSet (Peticion.AsText (), 'FORMASDEENVIO');
	var Formas        = document.getElementById ('idFormasDeEnvio');

	OptionSelect (Formas, 0, '');
	while (! FormasDeEnvio.Eof ())
	{	OptionSelect (Formas, FormasDeEnvio.FieldAsInteger ('Id'), FormasDeEnvio.FieldByName ('Descripcion'));
		FormasDeEnvio.Next ();
	}
}


function onCargarFormasDePago (Peticion)
{
	var Pagos     = document.getElementById ('idFormasDePago');
	var Datos     = DataSet (Peticion.AsText (), 'GASTOSDEENVIO', 'FORMASDEPAGO');
	FormasDePago  = Datos [1];	// Es Global

	OptionSelect (Pagos, 0, '');
	while (! FormasDePago.Eof ())
	{	OptionSelect (Pagos, FormasDePago.FieldAsInteger ('Id'), FormasDePago.FieldByName ('Descripcion'));
		FormasDePago.Next ();
	}
	if (Datos [0].RecordCount ())
		TotalPedido.GastosDeEnvio (Datos [0].FieldAsFloat ('Importe'));
	else TotalPedido.GatosDeEnvio (0);
}


function CargarFormasDePago ()
{
	var Ajax         = new TAjax ();
	var FormaDeEnvio = CadenaAEntero (document.FormasDePago.FormaDeEnvio.value);
	var Pagos        = document.getElementById ('idFormasDePago');

	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 RecalcularFormaDePago ()
{
	if (FormasDePago.Locate ('Id', document.FormasDePago.FormaDePago.value))
	{	TotalPedido.GastosDePago (FormasDePago.FieldAsFloat ('Incremento'));
		InHTML ('lblAnotacion1', FormasDePago.FieldByName ('Anotacion1') + '&nbsp;');
		InHTML ('lblAnotacion2', FormasDePago.FieldByName ('Anotacion2') + '&nbsp;');
	}
	else
	{ TotalPedido.GastosDePago (0);
		InHTML ('lblAnotacion1', '&nbsp;');
		InHTML ('lblAnotacion2', '&nbsp;');
	}		
}



