/**
 *
 * 
 * ficheros requeridos:
 *  
 * 'librerias/js/url/querystring.js',
  * 'includes/json/json.js',
 * 
 */

catdetalle={

/* ************************************************************************
 * 	GALERIA DETALLE AJAX
 * ************************************************************************/	
/**
 * Funcion pasada a la peticion ajax para tratar el evento de captura
 * 
 * Captura los datos de la peticion. Si hay algun error lo muestra en la zona
 * ... En caso contrario ...
 * 
 * @param {Object} req peticion XMLHTTP
 */
recarga_detalle_imagen:function (req) {
	var datos;
	var errorTxt;
	
	errorTxt='';
	try { 
		datos= req.responseText;
		if (datos==null || datos=="") 
			throw "NODATA"; 
		datos= JSON.parse(datos);
		
		// errores de ajax
		if (datos.error!="" )
			throw "ERRORAJAX";
			
		jQuery('div#galunico > div.borde > img').attr("src",datos.imagen);
		jQuery('div#galunico > div.borde > img').attr("alt",datos.pie);
		jQuery('div#galunico > div.borde > span').html(datos.pie);
		
		jQuery('div#enlacesdetalle').empty();
		jQuery('div#enlacesdetalle').append(datos.enlacesdetalle);
		
		// Volver a asignar los eventos pq el codigo ha cambiado
		catdetalle.asigna_evento_enlacesdetalle();		
		jQuery("div#errorajax").empty();
	}
	catch (err)
	{
		if (err=="NODATA") 			errorTxt="Datos no proporcionados"
		else if (err=="ERRORAJAX") 	errorTxt=datos.error;
		else 						errorTxt=err.description;
		
		// TODO
		jQuery("div#errorajax").empty();
		jQuery("div#errorajax").append('<p class="e">Error: '+errorTxt+'</p>');
	}
},
/*
 * El unico dato que no podemos conocer a priori es el id del registro de detalle.
 * Debemos pasarlo por parametro
 */
enviar_detalle_peticion: function (enlace){
	var qstring,qs,url;
	
	qstring=enlace.split('?');
	qs=new Querystring(qstring[1]);

	qs.descarta("modulo");
	qstring=qs.construye();
	
	url='indexajax.php?modulo=ajax_detalleimagen&'+qstring;
	
	libxmlhttp.sendRequest(url,catdetalle.recarga_detalle_imagen);
},	
click_detalle : function ()
{
	var enlace;
	
	enlace=jQuery(this).attr('href');
	
	// Le pasamos como query a consultar la del enlace del click
	catdetalle.enviar_detalle_peticion(enlace);
	
	return false;
},
asigna_evento_enlacesdetalle : function () {
	jQuery("div#enlacesdetalle a").click(catdetalle.click_detalle);
},
/* ************************************************************************
 * 	COLORES CAMBIA TALLAS
 * ************************************************************************/	
/**
 * Funcion pasada a la peticion ajax para tratar el evento de captura
 * 
 * Captura los datos de la peticion. Si hay algun error lo muestra en la zona
 * ... En caso contrario ...
 * 
 * @param {Object} req peticion XMLHTTP
 */
recarga_tallas:function (req) {
	var datos;
	var errorTxt;
	
	errorTxt='';
	try { 
		datos= req.responseText;
		if (datos==null || datos=="") 
			throw "NODATA"; 
		datos= JSON.parse(datos);
		
		// errores de ajax
		if (datos.error!="" )
			throw "ERRORAJAX";

		if (datos.imagen!="")
		{
			jQuery('div#galunico > div.borde > img').attr("src",datos.imagen);
			jQuery('div#galunico > div.borde > img').attr("alt","");
			jQuery('div#galunico > div.borde > span').empty();
		}
		
		// Enlaces de tallas
		jQuery('div#ajaxtallas').empty();
		jQuery('div#ajaxtallas').append(datos.enlacestallas);
		// Enlaces de carrito
		jQuery('div#ajaxcarrito').empty();
		jQuery('div#ajaxcarrito').append(datos.enlacescarrito);		
		
		// Volver a asignar los eventos pq el codigo ha cambiado
		catdetalle.asigna_evento_talla_a_carrito();
				
		jQuery("div#errorajax").empty();
	}
	catch (err)
	{
		if (err=="NODATA") 			errorTxt="Datos no proporcionados"
		else if (err=="ERRORAJAX") 	errorTxt=datos.error;
		else 						errorTxt=err.description;
		
		// TODO
		jQuery("div#errorajax").empty();
		jQuery("div#errorajax").append('<p class="e">Error: '+errorTxt+'</p>');
	}
},
/**
 * Envia la peticion de renovar la zona de tallas segun el color que se ha clickado.
 */
enviar_tallas_peticion: function (enlace){
	var qstring,qs,url;
	
	qstring=enlace.split('?');
	qs=new Querystring(qstring[1]);
	qs.descarta("modulo");
	qstring=qs.construye();
	
	url='indexajax.php?modulo=ajax_detalletallas&'+qstring;
	
	libxmlhttp.sendRequest(url,catdetalle.recarga_tallas);
},	
/**
 * Toma la url del enlace y envia la peticion ajax
 */
click_colores_a_talla : function ()
{
	var enlace,clase,elegido;
	
	enlace=jQuery(this).attr('href');
	
	// Clase elegido
	jQuery('div#ajaxcolores a > span > span').removeClass('elegido_bb elegido_nn');
	clase=jQuery(this).attr('class');
	if (clase.indexOf('bbb') >=0)
		elegido='elegido_bb';
	else
		elegido='elegido_nn';
	jQuery('> span > span',this).addClass(elegido);
	
	// Le pasamos como query a consultar la del enlace del click
	catdetalle.enviar_tallas_peticion(enlace);
	
	return false;
},
/**
 * Intercepta el click sobre los enlaces de colores. Estos enlaces
 * nunca se modificaran dentro del mismo producto, por lo que solo
 * es necesario que se carguen al inicio de la página.
 */
asigna_evento_colores_a_talla : function () {
	jQuery("div#ajaxcolores a").click(catdetalle.click_colores_a_talla);
},
/* ************************************************************************
 * TALLAS A ENLACE A CARRITO
 * ************************************************************************/
/**
 * Funcion pasada a la peticion ajax para tratar el evento de captura
 * 
 * Captura los datos de la peticion. Si hay algun error lo muestra en la zona
 * ... En caso contrario ...
 * 
 * @param {Object} req peticion XMLHTTP
 */
recarga_enlace_carrito:function (req) {
	var datos;
	var errorTxt;
	
	errorTxt='';
	try { 
		datos= req.responseText;
		if (datos==null || datos=="") 
			throw "NODATA"; 
		datos= JSON.parse(datos);
		
		// errores de ajax
		if (datos.error!="" )
			throw "ERRORAJAX";

		jQuery('div#ajaxcarrito').empty();
		jQuery('div#ajaxcarrito').append(datos.enlacescarrito);
				
		jQuery("div#errorajax").empty();
	}
	catch (err)
	{
		if (err=="NODATA") 			errorTxt="Datos no proporcionados"
		else if (err=="ERRORAJAX") 	errorTxt=datos.error;
		else 						errorTxt=err.description;
		
		// TODO
		jQuery("div#errorajax").empty();
		jQuery("div#errorajax").append('<p class="e">Error: '+errorTxt+'</p>');
	}
},
/**
 * Envia la peticion de renovar la zona de tallas segun el color que se ha clickado.
 */
enviar_carrito_peticion: function (enlace){
	var qstring,qs,url;
	
	qstring=enlace.split('?');
	qs=new Querystring(qstring[1]);
	qs.descarta("modulo");
	qstring=qs.construye();
	
	url='indexajax.php?modulo=ajax_detallecarrito&'+qstring;
	
	libxmlhttp.sendRequest(url,catdetalle.recarga_enlace_carrito);
},
/*
 * Se aplica sobre elementos de tipo imagen de las tallas.
 * 
 * Se elimina de la parte del nombre del fichero de la imagen
 * 
 */
quitar_img_tallas_elegidas : function()
{
	var src;
	
	src=jQuery(this).attr("src");
	src=src.replace("ac_","");
	jQuery(this).attr("src",src);
},
cambiar_imagenes_tallas : function(enlace)
{
	var src,arrayDir,i,n,fichero;
	
	// quitarselo a todas
	jQuery("div#ajaxtallas a.talla > img").each(catdetalle.quitar_img_tallas_elegidas);
	
	// Cambiar la imagen elegida
	src=jQuery("> img",enlace).attr("src");
	if (src!="" &&  src.search("ac_")==-1)
	{
		arrayDir=src.split('/'); // separamos los directorios. El ultimo es el nombre del fichero
		n=arrayDir.length-1; // como minimo n tomara el valor 0.
		fichero=arrayDir[n];
		src='';
		for (i=0; i < n; i++)
		{
			src=src+arrayDir[i]+'/';
		}
		src=src+"ac_"+fichero;
		jQuery("> img",enlace).attr("src",src);
	}	
},
/**
 * Toma la url del enlace y envia la peticion ajax
 */
click_talla_a_carrito : function ()
{
	var enlace,src;
	
	catdetalle.cambiar_imagenes_tallas(this);
	
	enlace=jQuery(this).attr('href');
	
	// Le pasamos como query a consultar la del enlace del click
	catdetalle.enviar_carrito_peticion(enlace);
	
	return false;
},
/**
 * Intercepta el click sobre las tallas de colores. Estos enlaces deben
 * interceptarse en la carga de la pagina y cada vez que se cambia la
 * zona de tallas, que ocurre cuando se hace click en los colores.
 */
asigna_evento_talla_a_carrito : function () {
	jQuery("div#ajaxtallas a").click(catdetalle.click_talla_a_carrito);
},

/* ************************************************************************
 * ASIGNAR EVENTOS
 * ************************************************************************/

/*
 * Ordenes a realizar cuando se carga la pagina.
 */
onLoad : function()
{
	catdetalle.asigna_evento_enlacesdetalle();
	catdetalle.asigna_evento_colores_a_talla();
	catdetalle.asigna_evento_talla_a_carrito();
}
}

// Asegurarse de que JQuery esta definido con anterioridad
jQuery(document).ready(catdetalle.onLoad);

