
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;
}


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 ()
{
	var Ajax = new TAjax ();
	
	if (Trim (document.Buscar.Busqueda.value) == '')
		alert ('Tiene que indicar un criterio de busqueda.');
	else
	{	Ajax.OnCompletar (OnBuscar);
		Ajax.Opc = OPC_BUSQUEDA;
		Ajax.AddParametro ('Opc', OPC_BUSQUEDA);
		Ajax.AddParametro ('Cadena', document.Buscar.Busqueda.value);
		Ajax.Open ('/fuentes/buscar.php');
	}
}


function BusquedaAvanzada ()
{
	var Ajax    = new TAjax ();
	var Precio1 = document.BAvanzada.Precio1.value;
	var Precio2 = document.BAvanzada.Precio2.value;

	if (document.BAvanzada.Categoria.value != 0 ||
	    document.BAvanzada.Artista.value != 0 ||
	    document.BAvanzada.Estilo.value != 0 ||
	    document.BAvanzada.Tipo.value != 0 ||
	    document.BAvanzada.Medida.value != 0 ||
	    Precio1 != 0 || Precio2 != 0)
	{	if (Precio2 != 0 && Precio1 != 0 && Precio1 > Precio2)
			alert ('El precio mayor tiene que ser menor que el precio menor.');
		else
		{	Ajax.OnCompletar (OnBuscar);
			Ajax.Opc = OPC_BUSQUEDAAVANZADA;
			Ajax.AddParametro ('Opc', OPC_BUSQUEDAAVANZADA);
			Ajax.AddFormulario (document.BAvanzada);
			Ajax.Open ('/fuentes/buscar.php');
		}
	} else alert ('Tiene que indicar algún criterio de busqueda.');
}


function CambiarArticulosPorPagina ()
{
	var Articulos = document.ArticulosPorPagina.ArticulosPorPagina.value;
	
	if (Articulos != Par4)
	{	Par4 = Articulos;
		CargarPagina ();
	}
}


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 CargarFormasDeEnvio ()
{
	var Ajax  = new TAjax ();

	Ajax.OnCompletar (onCargarFormasDeEnvio);
	Ajax.Open ('/fuentes/formasdeenvio.php', 'idCargandoRejilla');
}


function CargarFormasDePago ()
{
	var Ajax         = new TAjax ();
	var FormaDeEnvio = CadenaAEntero (document.FormasDePago.FormaDeEnvio.value);
	var Pagos        = document.getElementById ('slcFormasDePago');

	EliminarHijos (Pagos);
	InHTML ('lblAnotacion1', '');
	InHTML ('lblAnotacion2', '');
	if (FormaDeEnvio)
	{	Ajax.OnCompletar (onCargarFormasDePago);
		Ajax.AddParametro ('FormaDeEnvio', FormaDeEnvio);
		Ajax.Open ('/fuentes/formasdepago.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 ()
{
	var	Ajax = new TAjax ();

	if (! IdArticulo)	IdArticulo = RadioButtonValue (document.Comprar.Articulos);
	if (! IdArticulo) alert ('Tiene que indicar un tamaño.');		
	else
	{	Ajax.OnCompletar (onComprar);	
		Ajax.AddParametro ('Id', IdArticulo);
		Ajax.AddParametro ('Cantidad', 1);
		Ajax.Open ('/fuentes/comprar.php', 'Cargando');
	}
}


function ContinuarCompra ()
{
	Opc = OPC_CATEGORIAS;
	CargarPagina ();
}


function DatosCliente ()
{
	Opc = OPC_DATOSCLIENTE;
	LimpiarParametros ();
	CargarPagina ();
}


function DatosDeEnvio ()
{
	Opc = OPC_DATOSDEENVIO;
	LimpiarParametros ();
	CargarPagina ();
}


function EnviarFormulario ()
{
	var Ajax = new TAjax ();
	
	if (CadenaVacia (document.Contacto.Nombre.value))
	{	alert ("Tiene que indicar un nombre.");
		document.Contacto.Nombre.focus ();
	}	else if (CadenaVacia (document.Contacto.Telefono.value))
		alert ("Tiene que indicar un telefono.");
	else if (CadenaVacia (document.Contacto.Email.value))
		alert ("Tiene que indicar un e-mail.");
	else if (! EmailCorrecto (document.Contacto.Email.value))
		alert ("E-mail ingresado no es correcto.");
	else if (CadenaVacia (document.Contacto.Consulta.value))
		alert ("Tiene que indicar una consulta.");
	else  
	{	Ajax.AddFormulario (document.Contacto);
		Ajax.OnCompletar (onEnviarFormulario)
		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.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 ()
{
	var	Ajax     = new TAjax ();

	if (ValidarDirEnvio ())
	{	Ajax.OnCompletar (onHayFormasDePago);
		Ajax.AddFormulario (document.DatosEnvio);
		Ajax.Open ('/fuentes/hayformasdepago.php', 'Cargando');
	}
}	


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 cliente.");
		document.DatosCliente.Codigo.focus ();
	} else if (Clave == '')
	{	alert ("Tiene que indicar una clave.");
		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 LimpiarParametros ()
{
	Par1 = 0;
	Par2 = 0;
	Par3 = 0;
	Par4 = 0;
}


function ListarReferencias (Referencias)
{
	var HTML     = '<table width="240" border="0" cellspacing="0" cellpadding="0" class="TablaPrecios">' +
                 '<tr>' +
                 '<td style="height: 1px; width: 5%;"></td>' +
                 '<td style="height: 1px; width: 45%;"></td>' +
                 '<td style="height: 1px; width: 30%;"></td>' +
                 '<td style="height: 1px; width: 20%;"></td>' +
                 '</tr>';

	IdArticulo = 0;
	while (! Referencias.Eof ())
	{	HTML += '<tr>' +
	 	        '<td><input type="radio" name="Articulos" value="' + Referencias.FieldByName ('Id') + '"></td>' +
     	      '<td>' + Referencias.FieldByName ('NomMedida') + '</td>' +
           	'<td>' + Referencias.FieldByName ('Codigo') + '</td>' +
           	'<td class="PrecioTabla">' + Referencias.FieldByName ('Precio') + ' &euro;</td>' +
           	'</tr>';
		Referencias.Next ();
	}
	InHTML ('idCamReferencias', HTML + '</table>');
}


function Main (Caso)
{
	if (Opc != Caso)
	{	Opc  = Caso;
		LimpiarParametros ();
		CargarPagina ();
	}
}


function MasArtistas ()
{
	if (Opc != OPC_MASARTISTAS)
	{	Opc  = OPC_MASARTISTAS;
		Par1 = 0;
		Par2 = 0;
		Par3 = 0;
		CargarPagina ();
	}
}


function OnBuscar (Peticion)
{
	LimpiarParametros ();
	Opc = Peticion.Opc;
	CargarPagina ();
}


function onCantidadCesta (Peticion)
{
	var Etiqueta = document.getElementById ('idCesta');
	
	if (Etiqueta) Etiqueta.innerHTML = Peticion.AsText ();
}	


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 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 onComprar (Peticion)
{
	VerCesta (false);
}



function onEnviarFormulario (Peticion)
{
	Display ('idFormularioContacto', 'none');
	Display ('idEnvioOK', 'block');
}

function onFinalizarPedido (Peticion)
{
	var Result = Peticion.AsText ();
	
	Opc  = OPC_CATEGORIAS;
	LimpiarParametros ()

	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.\nPor favor pongasé en contacto con nosotros.');
	else if (Result == 'OK')
	{	Opc = OPC_FORMASDEPAGO;
		LimpiarParametros ();
		CargarPagina ();
	}
}


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 OnSiguienteArticulo (Peticion)
{
	var DataSet  = new TDataSet (Peticion.AsXML (), 'ARTICULO');
	var Vertical = true;	
	var Sufijo   = 'V';

	if (DataSet.NumRegistros () > 0)
	{	Vertical = DataSet.FieldAsBoolean ('Vertical');
		Sufijo   = Vertical ? 'V' : 'H';
		Par2     = DataSet.FieldByName ('Id');
		Clase ('idDivFotoArticulo', 'divFotoArticulo' + Sufijo);
		ImageSrc ('FotoArticulo', '/contenidos/articulos/' + DataSet.FieldByName ('Id') + '-1.jpg');
		Clase ('idDivDatosArticulo', 'divDatosArticulo' + Sufijo);
		Clase ('idDivTitulo', 'divTitulo' + Sufijo);
		InHTML ('lblTitulo', DataSet.FieldByName ('Nombre'));
		InHTML ('lblArtista', DataSet.FieldByName ('NomArtista'));
		InHTML ('lblTipo', DataSet.FieldByName ('NomTipo'));
		VerReferencias (DataSet.DataSet ('REFERENCIAS', 'REFERENCIA'), Sufijo);
	}
}


function OnVerRecomendado (Peticion)
{
	Par2 = Peticion.AsText ();
	CargarPagina ();
}


function RecalcularFormaDePago ()
{
	if (FormasDePago.Locate ('Id', document.FormasDePago.FormaDePago.value))
	{	TotalPedido.GastosDePago (FormasDePago.FieldAsFloat ('Incremento'));
		InHTML ('lblAnotacion1', '<b>' + FormasDePago.FieldByName ('Anotacion1') + '</b>');
		InHTML ('lblAnotacion2', '<b>' + FormasDePago.FieldByName ('Anotacion2') + '</b>');
	}
	else
	{ TotalPedido.GastosDePago (0);
		InHTML ('lblAnotacion1', '');
		InHTML ('lblAnotacion2', '');
	}		
}


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 SiguienteArticulo (Siguiente)
{
	var Ajax = new TAjax ();
	
	Ajax.AddParametro ('Opc',       Opc);
	Ajax.AddParametro ('Par1',      Par1);
	Ajax.AddParametro ('Par3',      Par3);
	Ajax.AddParametro ('Siguiente', Siguiente ? 1 : 0);
	Ajax.OnCompletar (OnSiguienteArticulo);
	Ajax.Open ('/fuentes/siguientearticulo.php');
}


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 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 == '') 
	{	alert ("Tiene que repetir la clave de acceso.");
		document.DatosCliente.Repetir.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 un domicilio.");
		document.DatosCliente.Domicilio.focus ();
	} else if (Trim (document.DatosCliente.Localidad.value) == '')
	{	alert ("Tiene que indicar una localidad.");
		document.DatosCliente.Localidad.focus ();
	}	else if (Trim (document.DatosCliente.Provincia.value) == '') 
	{	alert ("Tiene que indicar una provincia.");
		document.DatosCliente.Provincia.focus ();
	}	else if (Trim (document.DatosCliente.Pais.value) == '') 
	{	alert ("Tiene que indicar un país.");
		document.DatosCliente.Pais.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 un domicilio \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) == '') 
		{	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 VerArticulo (Posicion)
{
	Par2 = Posicion;
	CargarPagina ();
}


function VerArtista (Artista)
{
	if (Opc != OPC_ARTISTAS || Par1 != Artista || Par2 != 0)
	{	Opc  = OPC_ARTISTAS;
		Par1 = Artista;
		Par2 = 0;
		Par3 = 0;
		CargarPagina ();
	}
}


function VerCategoria (Categoria)
{
	if (Opc != OPC_CATEGORIAS || Par1 != Categoria || Par2)
	{	Opc  = OPC_CATEGORIAS;
		Par3 = Par2 && Par1 == Categoria ? Par3 : 0;
		Par1 = Categoria;
		Par2 = 0;
		CargarPagina ();
	}
}


function VerCesta (Vacia)
{
	if (Vacia) alert ('La cesta está vacia.');
	else
	{	Opc = OPC_CESTA;
		CargarPagina ();
	}
}


function VerRecomendado (Articulo, vPar1)
{
	var Ajax = new TAjax ();
	
	Opc  = OPC_CATEGORIAS;
	Par1 = vPar1;

	Ajax.OnCompletar (OnVerRecomendado);
	Ajax.AddParametro ('Par1', vPar1);
	Ajax.AddParametro ('Articulo', Articulo);
	Ajax.Open ('/fuentes/verrecomendado.php');
}


function VerReferencias (Referencias, Sufijo)
{
	var Registros = Referencias.NumRegistros ();

	Display ('idDivUnaReferencia', Registros == 1 ? 'block' : 'none');	
	Display ('idCabReferencias', Registros > 1 ? 'block' : 'none');
	Display ('idCamReferencias', Registros > 1 ? 'block' : 'none');
	Clase ('idBotonComprar', 'divBotonComprar' + Sufijo);
	Clase ('idBotonCesta', 'divBotonCesta' + Sufijo);
	Display ('idBotonComprar', Registros >= 1 ? 'block' : 'none');
	
	if (Registros > 1) ListarReferencias (Referencias);
	else if (Registros == 1)
	{	InHTML ('idTDReferencia', Registros > 0 ? Referencias.FieldByName ('Codigo') : '');
		InHTML ('idTDTamanyo', Registros > 0 ? Referencias.FieldByName ('NomMedida') : '');
		InHTML ('idTDPrecio', Registros > 0 ? Referencias.FieldByName ('Precio') + ' &euro;' : '');
		IdArticulo = Referencias.FieldByName ('Id');
	}
}


//=================================================================================
//=================================================================================
//=================================================================================
//=================================================================================





