// funciones de animacion de botones, activacion de botones...
function activeTiposButton(buttonId) {
    if (buttonId == 0) {
        $('.btn_tiposmovil').removeClass("btn_activebuscador");
    } else {
        $('#btn_tipos' + buttonId).toggleClass("btn_activebuscador");
    }
    return false;
}

function textTiposButton(buttonId) {
	if (buttonId == 0) {
		$('.text_tipos') .html('&nbsp;');
		}
	else {	
	$('.text_tipos') .html($('#btn_tipos'+buttonId) .attr('title'));
	}
	return false;
};

function activeDisenoButton(buttonId) {
    if (buttonId == 0) {
        $('.btn_disenomovil').removeClass("btn_activebuscador");
    } else {
        $('.btn_disenomovil').removeClass("btn_activebuscador");
        $('#btn_diseno' + buttonId).toggleClass("btn_activebuscador");
    }
    return false;
};

function textDisenoButton(buttonId) {
	if (buttonId == 0) {
		$('.text_diseno') .html('&nbsp;');
		}
	else {	
	$('.text_diseno') .html($('#btn_diseno'+buttonId) .attr('title'));
	}
	return false;
};

function selectMovilComparador(BoxNum) {
	srcImgMovil = $('.active_drag img').attr('src');
	idImgMovil  = $('.active_drag img').attr('id');
	altImgMovil = $('.active_drag').attr('title');

	$('#drop' + BoxNum + ' .img_movilselected img').attr({
		  src:   srcImgMovil
		, id:    idImgMovil
		, alt:   altImgMovil
		, title: altImgMovil
	});

	if ($('#drop'+BoxNum+' .img_movilselected span').length > 0) {
		var elm = $('#drop'+BoxNum+' .img_movilselected span')[0];
		elm.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + srcImgMovil + "', sizingMethod='scale')";
	}

	$('#drop' + BoxNum + ' p.txt_movilselected span').text(altImgMovil);
};

// Funciones de comunicacion con servidor y acciones resultantes

// Funcion para comunicarse con el servidor
function GetXmlHttpObject() {
	var xmlHttp = null;

	try {
		// Firefox, Opera 8.0+, Safari
		xmlHttp = new XMLHttpRequest();
	} catch (e) {
		// Internet Explorer
		try {
			xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}

	return xmlHttp;
}

// Funcion q se ejecuta al cargar la pagina
	$(document).ready(
		function()
		{
			$('#drop1').Droppable(
				{
					  accept:      'drag'
					, tolerance:   'cursor'
					, hoverclass:  'overespacio'
					, activeclass: 'activeespacio'
					, onHover:
						function () {
							$('#drop1').removeClass("activeespacio");
						}
					, onOut:
						function () {
							$('#drop1').addClass("activeespacio");
						}
					, ondrop:
						function () {
							selectMovilComparador(1);
						}
					, fit: true
				}
			);

			$('#drop2').Droppable(
				{
					  accept:      'drag'
					, tolerance:   'cursor'
					, hoverclass:  'overespacio'
					, activeclass: 'activeespacio'
					, onHover:
						function () {
							$('#drop2').removeClass("activeespacio");
						}
					, onOut:
						function () {
							$('#drop2').addClass("activeespacio");
						}
					, ondrop:
						function () {
							selectMovilComparador(2);
						}
					, fit: true
				}
			);

			$('#drop3').Droppable(
				{
					  accept:      'drag'
					, tolerance:   'cursor'
					, hoverclass:  'overespacio'
					, activeclass: 'activeespacio'
					, onHover:
						function () {
							$('#drop3').removeClass("activeespacio");
						}
					, onOut:
						function () {
							$('#drop3').addClass("activeespacio");
						}
					, ondrop:
						function () {
							selectMovilComparador(3);
						}
					, fit: true
				}
			);


			// Comportamientos de botones
			$("#btn_tipos1").click(
				function() {
					activeTiposButton(1);
					funcionalidad(1);
					return false;
				}
			) .mouseover(function(){
				textTiposButton(1);
				}
				)
				 .mouseout(function(){
				textTiposButton(0);
				}
			);

			$("#btn_tipos2").click(
				function() {
					activeTiposButton(2);
					funcionalidad(2);
					return false;
				}
				) .mouseover(function(){
				textTiposButton(2);
				}
				)
				 .mouseout(function(){
				textTiposButton(0);
				}
			);
		$("#btn_tipos3") .click(function(){
				activeTiposButton(3);
				funcionalidad(3);
				return false;
				}
				) .mouseover(function(){
				textTiposButton(3);
				}
				)
				 .mouseout(function(){
				textTiposButton(0);
				}
			);

			$("#btn_tipos4").click(
				function() {
					activeTiposButton(4);
					funcionalidad(4);
					return false;
				}
				) .mouseover(function(){
				textTiposButton(4);
				}
				)
				 .mouseout(function(){
				textTiposButton(0);
				}
			);

			$("#btn_tipos5").click(
				function() {
					activeTiposButton(5);
					funcionalidad(5);
					return false;
				}
				) .mouseover(function(){
				textTiposButton(5);
				}
				)
				 .mouseout(function(){
				textTiposButton(0);
				}
			);

			$("#btn_tipos6").click(
				function() {
					activeTiposButton(6);
					funcionalidad(6);
					return false;
				}
				) .mouseover(function(){
				textTiposButton(6);
				}
				)
				 .mouseout(function(){
				textTiposButton(0);
				}
			);

			$("#btn_tipos7").click(
				function() {
					activeTiposButton(7);
					funcionalidad(7);
					return false;
				}
				) .mouseover(function(){
				textTiposButton(7);
				}
				)
				 .mouseout(function(){
				textTiposButton(0);
				}
			);

			$("#btn_tipos8").click(
				function() {
					activeTiposButton(8);
					funcionalidad(8);
					return false;
				}
				) .mouseover(function(){
				textTiposButton(8);
				}
				)
				 .mouseout(function(){
				textTiposButton(0);
				}
			);


			$("#btn_diseno1").click(
				function() {
					activeDisenoButton(1);
					disenno(1);
					return false;
				}
				) .mouseover(function(){
				textDisenoButton(1);
				}
				)
				 .mouseout(function(){
				textDisenoButton(0);
				}
			);

			$("#btn_diseno2").click(
				function() {
					activeDisenoButton(2);
					disenno(2);
					return false;
				}
				) .mouseover(function(){
				textDisenoButton(2);
				}
				)
				 .mouseout(function(){
				textDisenoButton(0);
				}
			);

			$("#btn_diseno3").click(
				function() {
					activeDisenoButton(3);
					disenno(3);
					return false;
				}
				) .mouseover(function(){
				textDisenoButton(3);
				}
				)
				 .mouseout(function(){
				textDisenoButton(0);
				}
			);

			$("#btn_diseno4").click(
				function() {
					activeDisenoButton(4);
					disenno(4)
					return false;
				}
				) .mouseover(function(){
				textDisenoButton(4);
				}
				)
				 .mouseout(function(){
				textDisenoButton(0);
				}
			);

			$("#btn_diseno5").click(
				function() {
					activeDisenoButton(5);
					disenno(5);
					return false;
				}
				) .mouseover(function(){
				textDisenoButton(5);
				}
				)
				 .mouseout(function(){
				textDisenoButton(0);
				}
			);


			$("#radio_cliente").click(
				function() {
					caracteristica();
					return true;
				}
			);

			$("#radio_nocliente").click(
				function() {
					caracteristica();
					return true;
				}
			);

			$("#text_precio").change(
				function() {
					caracteristica();
					return false;
				}
			);

			$("#checkbox_bluetooth").click(
				function() {
					caracteristica();
					return true;
				}
			);

			$("#checkbox_mms").click(
				function() {
					caracteristica();
					return true;
				}
			);

			$("#checkbox_vllamada").click(
				function() {
					caracteristica();
					return true;
				}
			);

			$("#checkbox_mem").click(
				function() {
					caracteristica();
					return true;
				}
			);

			$("#checkbox_radio").click(
				function() {
					caracteristica();
					return true;
				}
			);

			$("#checkbox_video").click(
				function() {
					caracteristica();
					return true;
				}
			);

			$("#checkbox_wifi").click(
				function() {
					caracteristica();
					return true;
				}
			);

			$("#checkbox_mp3").click(
				function() {
					caracteristica();
					return true;
				}
			);

			$("#checkbox_tv").click(
				function() {
					caracteristica();
					return true;
				}
			);

			$("#checkbox_3g").click(
				function() {
					caracteristica();
					return true;
				}
			);

			$("#btnComparador").click(
				function() {
					comparar();
					return false;
				}
			);

			$("#btnComparadorReinicio").click(
				function() {
					reiniciarComparacion();
					return false;
				}
			);

			inicializar();
		}
	);

// Se copia la funcion porque AJAX's no lee la funcion JS.
// TODO ¿BORRAR?
function pngfix(id) {
	var arVersion = navigator.appVersion.split("MSIE")
	var version = parseFloat(arVersion[1])

	if	(
			(version < 7) &&
			(document.body.filters)
		)
   {
      for(var i=0; i<document.images.length; i++)
      {
         var img = document.images[i]
         var imgName = img.src.toUpperCase()
         if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
         {
            if (img.className == 'skip') continue;
            var imgID = (img.id) ? "id='" + img.id + "' " : ""
            var imgClass = (img.className) ? "class='" + img.className + "' " : ""
            var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
            var imgStyle = "display:inline-block;" + img.style.cssText
            if (img.align == "left") imgStyle = "float:left;" + imgStyle
            if (img.align == "right") imgStyle = "float:right;" + imgStyle
            if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle
            var strNewHTML = "<span " + imgID + imgClass + imgTitle
            + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
            + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
            + "(src=\'" + img.src + "\', sizingMethod='scale');\"><img src='" + img.src + "' ";
            if (img.id) strNewHTML += 'id="' + img.id + '" ';
            strNewHTML += "class='skip' style='display:none'></span>"
            img.outerHTML = strNewHTML
            i = i-1
         }
      }
   }
}



/*
 * Funcion que iguala la altura de la barra izquierda (de parametros de busqueda) con la parte central (de telefonos).
 */
function igualaralturas() {
	$('#buscador_colizq').css("padding-bottom", "10px");
	$('#buscador_colcentro').css("padding-bottom", "10px");

	var izq = $('#buscador_colizq').height();
	var cen = $('#buscador_colcentro').height();

	if (izq < cen) {
		$('#buscador_colizq').css("padding-bottom", ((cen - izq) + 20) + "px");
		$('#buscador_colcentro').css("padding-bottom", "10px");
	} else {
		$('#buscador_colizq').css("padding-bottom", "10px");
		$('#buscador_colcentro').css("padding-bottom", ((izq - cen)) + "px");
	}
}






/******************************************************************************
 *                              FUNCIONES DEL JSP                             *
 ******************************************************************************/
/*
 * Funcion que abre el comparador con los telefonos seleccionados en la barra del comparador.
 */
function comparar() {
	var id1 = $('#drop1 img').attr('id'); // Identificador del 1º telefono a comparar
	var id2 = $('#drop2 img').attr('id'); // Identificador del 2º telefono a comparar
	var id3 = $('#drop3 img').attr('id'); // Identificador del 3º telefono a comparar
	var frm = document.getElementById('buscadorForm');
	var oldAction = frm.action;
	if ((id1 != null) || (id2 != null) || (id3 != null)) {
		oldAction += '?';
		if (id1 != null) {
			oldAction += 'check=' + id1;
		}
		if (id2 != null) {
			if (id1 != null) {
				oldAction += '&';
			}
			oldAction += 'check2=' + id2;
		}
		if (id3 != null) {
			if ((id1 != null) || (id2 != null)) {
				oldAction += '&';
			}
			oldAction += 'check3=' + id3
		}
	}
	frm.action=oldAction;
	frm.submit();
}

function reiniciarComparacion() {
    for (var i = 1; i <= 3; i++) {
        $('#drop' + i + ' .img_movilselected img').attr({
              src:   "/img/buscador/no_movil.png",
              id:    "",
              alt:   "ningun movil",
              title: ""
        });
        $('#drop' + i + ' p.txt_movilselected span').html("Ningun m&oacute;vil seleccionado");
        if ($('#drop' + i + ' .img_movilselected span').length > 0) {
            var elm = $('#drop' + i + ' .img_movilselected span')[0];
            elm.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/img/buscador/no_movil.png', sizingMethod='scale')";
        }
    }
}


/*
 * Funcion que abre la ficha del telefono consultado.
 */
function abrirFicha(ruta) {
    $("form:eq(1)").attr("action", ruta + "?s=contrato&pid1=buscap001");
	$("form:eq(1)").submit();
}

/*
 * Funcion que abre el comparador con el telefono consultado.
 */
function abrirComparacion(id, name, image) {
    // Find the first box that does not have any phone inside
    var index;
    for (index = 1; index <= 3; index++) {
        if (!$("#drop" + index + " .img_movilselected img").attr("id")) break;
    }
    if (index == 4) index = 1; // Everything is full, put it at the first stop
    // Fill it
    $('#drop' + index + ' .img_movilselected img').attr({
        src:   image,
        id:    id,
        alt:   name,
        title: name
    });
    if ($('#drop' + index + ' .img_movilselected span').length > 0) {
        var elm = $('#drop' + index + ' .img_movilselected span')[0];
        elm.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + image + "', sizingMethod='scale')";
    }
    $('#drop' + index + ' p.txt_movilselected span').text(name);
    // Cerrar popup
    cerrarCaracteristicas();
}

/*
 * Funcion que abre si es o no cliente. TODO PARA BORRAR
 */
function abrirSeccion(open, close) {
	$('#'+close).css('display','none')
	$('#'+open).css('display','block');

	var c = document.getElementById(close);
	var o = document.getElementById(open);

	c.style.display = 'none';
	o.style.display = 'block';
}



/*
 * Funcion que abre el recuadro de caracteristicas del telefono.
 */
function abrirCaracteristicas(id) {
	xmlHttp = GetXmlHttpObject();
	if (xmlHttp == null) {
		alert("Your browser does not support AJAX!");
		return;
	}
	var url = "/do/buscador/caracteristicas?phone=" + id;
	xmlHttp.onreadystatechange =
		function() {
			if (xmlHttp.readyState == 4) {
				var caracts = xmlHttp.responseText;
				$('#seccion_caracteristicas').html(caracts);
				$('.layer_popup_buscador').css({ display: "block", opacity: "0.5" });
				$('.popup_buscador').show('fast');
				efectos2();
			}
		};
	xmlHttp.open("GET", url, true);
	xmlHttp.send(null);
	delete XMLHttpRequestObject;
	XMLHttpRequestObject = null;
}



/*
 * Funcion que cierra el recuadro de caracteristicas del telefono.
 */
function cerrarCaracteristicas() {
	$('.layer_popup_buscador').hide('fast').css("display","none");
	$('.popup_buscador').hide('fast');
}



/*
 * Funcion que envia los parametros de busqueda y actualiza los telefonos.
 */
function enviar(url) {
	var xmlHttp = GetXmlHttpObject();

	if (xmlHttp == null) {
		alert("Your browser does not support AJAX!");
		return;
	}

	xmlHttp.onreadystatechange =
		function() {
			var efectosLoaded = false;
			
			if (xmlHttp.readyState == 1) {
				// Todavia no
				$('#buscador_colcentro').html("<p><img src='/img/buscador/ajax-loader.gif'/>Cargando resultados de la b&uacute;squeda</p>");
				igualaralturas();
			}
			else if (xmlHttp.readyState == 4) {
				var resultados = xmlHttp.responseText;
				$('#buscador_colcentro').html(resultados);
				igualaralturas();
				try{
						efectos();
				} catch(ex) {
						while( !efectosLoaded){
							try{
								setTimeout('efectos()',1)
								efectosLoaded = true;
							} catch(ex) {}
						}
		  	}
				pngfix("buscador_colcentro");
			}
		};

	xmlHttp.open("GET", url, true);
	xmlHttp.send(null);

	// Esto no es necesario pero es para no sobrecargar la memoria y poder enviar varias peticiones (varias pulsaciones de boton)
	delete XMLHttpRequestObject;

	XMLHttpRequestObject = null;
}



/*
 * Funcion que realiza una busqueda completa de los telefonos.
 */
function resetForm() {
	document.buscadorForm.reset();
	activeTiposButton(0);
	activeDisenoButton(0);
    $("#funcionalidadV").attr("value", "");
	$("#disennoV").attr("value", "");
	cargarTelefonos();
}


/*
 * Funcion que realiza una busqueda parametrizada de los telefonos.
 */
function cargarTelefonos() {
    var url =
            "/do/buscador/telefonos" +
            "?3g=" + $("#checkbox_3g").attr("checked") +
            "&bluetooth=" + $("#checkbox_bluetooth").attr("checked") +
            "&mms=" + $("#checkbox_mms").attr("checked") +
            "&mp3=" + $("#checkbox_mp3").attr("checked") +
            "&radioIntegrada=" + $("#checkbox_radio").attr("checked") +
            "&tarjeta_mem=" + $("#checkbox_mem").attr("checked") +
            "&tv=" + $("#checkbox_tv").attr("checked") +
            "&wifi=" + $("#checkbox_wifi").attr("checked") +
            "&video=" + $("#checkbox_video").attr("checked") +
            "&videollamada=" + $("#checkbox_vllamada").attr("checked") +
            "&disenno=" + $("#disennoV").attr("value");
    var func = $("#funcionalidadV").attr("value");
    var funcionalidades;
    if (!func) {
        funcionalidades = new Array();
    } else {
        funcionalidades = func.split(",");
    }
    for (var i = 0; i < funcionalidades.length; i++) {
        url += "&funcionalidad=" + funcionalidades[i];
    }
    url += "&precio=" + $("#text_precio").attr("value");
    enviar(url);
}


/*
 * Funcion que procesa el formulario al pulsar sobre un checkbox o sobre un radiobutton.
 */
function caracteristica() {
	cargarTelefonos();
}

/*
 *
 */
function efectos2() {
	$("#soycliente").click(
		function(){
			$('.price_cliente').addClass("price_activo");
			$('.price_nocliente').removeClass("price_activo");
			return false;
		}
	);

	$("#nocliente") .click(
		function(){
			$('.price_cliente').removeClass("price_activo");
			$('.price_nocliente').addClass("price_activo");
			return false;
		}
	);
}
