
var url = window.location.pathname;
var mostrarTooltip      = true;
var colorSinDatos       = 'ebebeb';
var colorSinAsignar     = 'c2c2c2';
var colorOtros          = '444444';

var etiquetaSinDatos    = 'Sin Datos';
var etiquetaSinAsignar  = 'Sin Asignar';
if (url.indexOf("DMU61") > -1 && url.indexOf("_L2") > -1) {
  etiquetaSinDatos    = 'Ez dago daturik';
  etiquetaSinAsignar  = 'Esleitu gabe';
}
if (url.indexOf("DCC") > -1 && url.indexOf("_L2") > -1) {
  etiquetaSinDatos    = 'Sense dades';
  etiquetaSinAsignar  = 'Sense assignar';
}

var datoEnLabel         = true;
var colorSin            = colorSinAsignar;
var etiquetaSin         = etiquetaSinAsignar; //En algun caso se sustituirá por 'Sin Datos'

// Color de la línea de los gráficos
strokeGraphColor        = '#CCC';
strokeGraphAntColor     = '#CCC';


function trim(str)
{
  return str.replace(/^(\s|\&nbsp;)*|(\s|\&nbsp;)*$/g,"")
}

var previousPoint = null;
function showTooltip(x, y, contents,ant)
{
	
    if (ant)
    {
    	
        $('<div id="tooltip">' + contents + '</div>').css( {
            position: 'absolute',
            display: 'none',
            'font-weight':'bold',
            'font-size':'.7em',
            top: y -15,
            left: x + 5,
            border: '1px solid #DEDFDE',
            padding: '0px',
            'background-color': '#D6D7DE',
            opacity: 0.8
        }).appendTo("body").fadeIn(0); //El parámetro del fadeIn a 0 para que sea inmediato poner/quitar el tooltip


    }
    else
    {
    	
        $('<div id="tooltip">' + contents + '</div>').css( {
            position: 'absolute',
            display: 'none',
            'font-weight':'bold',
            'font-size':'.7em',
            top: y -15,
            left: x + 5,
            border: '1px solid #DEDFDE',
            padding: '0px',
            'background-color': '#D6D7DE',
            opacity: 0.8
        }).appendTo("body").fadeIn(0); //El parámetro del fadeIn a 0 para que sea inmediato poner/quitar el tooltip

    }

}

function encima(event, pos, item,ant)
{
	
	if (!item)  //Paso por encima del canvas pero no dentro de un sector de la tarta
    {
		
        $("#tooltip").remove();
        previousPoint = null;
        return;
    }
    if (previousPoint != item.datapoint)
    {    	
        previousPoint = item.datapoint;        
        
        $("#tooltip").remove();        
        
          if (item.series.data[0][1]>0.001) //Para que el tooltip no salga por la corrección del bug
          {
            // Para la tarta de la convocatoria anterior siempre mostramos el tooltip, para la de la convocatoria actual
            // depende del valor del boolean mostrarTooltip (por ejemplo, la tarta en previos, sin datos asignados)
        	
        	  
        	
            if (mostrarTooltip || ant == true)
            	
              if (datoEnLabel || ant)
            	  showTooltip(pos.pageX, pos.pageY,item.series.label+": "+item.series.data[0][1],ant);
              else showTooltip(pos.pageX, pos.pageY,item.series.label,ant);
              
          }
              
              
    }
}
function encimaActual(event, pos, item)
{	
	
    encima(event, pos, item,false);
}
function encimaAnt(event, pos, item)
{	
	
    encima(event, pos, item,true);
}

/*
 * Esta función compara (de forma DESCENDENTE) dos diccionarios de los que se pasan al $.plot según su valor data.
 *
 * @param associativeArray a : Array asociativo para comparar 
 * @param associativeArray b : Array asociativo para comparar
 * @return boolean :            Devuelve <0 si a < b; 0 si a==b; >0 si a>b
 */
function sortDictDesc(a, b){
  return (b.data - a.data);
}

/*
 * Esta función compara (de forma ASCENDENTE) dos diccionarios de los que se pasan al $.plot según su valor data.
 *
 * @param associativeArray a : Array asociativo para comparar 
 * @param associativeArray b : Array asociativo para comparar
 * @return boolean :            Devuelve <0 si a < b; 0 si a==b; >0 si a>b
 */
function sortDictAsc(a, b){
  return (a.data - b.data);
}



$(document).ready(function() {
  var hayTartas = $('#cajaTartas');
  if (hayTartas.length > 0){

	
	$("#tarta").css({height:'160px'});
	$("#tarta").css({width:'160px'});
	
	$("#tartaAnt").css({height:'160px'});
	$("#tartaAnt").css({width:'160px'});
		
	
    numpartidos=($('#TVOTOS tbody tr.r1,#TVOTOS tbody tr.r2').length);
    mostrarTooltip = true;

    //var hayComparativa = false;
    var divsTartaAnt = $('#tartaAnt');
jQuery.fn.exists = function(){return jQuery(this).length>0;}
if ($('#tartaAnt').exists()) {
     var hayComparativa =1
} else{
     var hayComparativa =0
} 

    var data = [];
    var dataAnt = [];
    j=0;
    k=0;
    
    var rutaAbsoluta = document.URL;
        
    //Esto se hace así porque explorer devuelve la barra "\" y firefox y chrome "/"
    var posicionBarra1 = rutaAbsoluta.lastIndexOf("/"); 
    var posicionBarra2 = rutaAbsoluta.lastIndexOf("\\"); 
    if (posicionBarra1>=posicionBarra2)
    {
    	posicionUltimaBarra=posicionBarra1;
    }
    else posicionUltimaBarra=posicionBarra2;
    
    var rutaRelativa = rutaAbsoluta.substring( posicionUltimaBarra + "/".length , rutaAbsoluta.length );       // index.html
    var tipoFichero = rutaRelativa.substring(1,3);
    
    var posicionTd = 3;
    var posicionTdAnt = 4;
    var posicionTr = 1;
    
    var posicionTdVotos = -1;   // Para municipales. Columna donde se pintan los votos a las candidaturas.
    
    var acumulado = 0;
    var sinasignar = 0;
    var aElegir = "";
    var cargosAElegir =  0;
    
    var esMun = false;
      
       
    //Offsets de filas y columnas con los datos a mostrar
    aElegir = $('#idCar').text();
    if(aElegir.length > 0)
    	cargosAElegir = (aElegir.split(":")[1]).substring(1);
    else
    	cargosAElegir = 0;
    //alert(cargosAElegir);
    //cargosAElegir = aElegir.substring(aElegir.length-2,aElegir.length);
    
    if (tipoFichero=="DP")
    {
    	posicionTd = 4;
    	posicionTdAnt = 5;
    	posicionTr = 1;
    	
    	
   	 	
    }
    else if (tipoFichero=="CC")
    {
    	posicionTd = 4;
	    posicionTdAnt = 5;
	    posicionTr = 0;
    }
    else if (tipoFichero=="CA")
    {
    	etiquetaSin = etiquetaSinDatos;
    	colorSin= colorSinDatos;
    	//datoEnLabel=true;
    	
    	hayComparativa = true;
	    posicionTd = 3;
	    posicionTdVotos = 0;
	    posicionTdAnt = 4;
	    posicionTr = 1;
    	
    	
    }
    else if (tipoFichero=="MU")
    {
      if (    rutaRelativa.indexOf("TO") > -1  // Tartas para Total Estatal
          ||  rutaRelativa.indexOf("CM") > -1  // Tartas para Comunidades
          ||  rutaRelativa.indexOf("PR") > -1  // Tartas para Provincias
      ){   
        posicionTd = 7;
        posicionTdAnt = 8;
        posicionTr = 1;
        posicionTdVotos = 4 ;                 // Variable que indica la posición de la columna de los votos de la tabla de la convocatoria actual
      }else{                                  // Tartas para Municipios
        esMun = true                          // es un municipio
        posicionTd      = 3;
        posicionTdAnt   = 4;
        posicionTdVotos = 0 ;                 // Variable que indica la posición de la columna de los votos de la tabla de la convocatoria actual
        if (hayComparativa) posicionTr    = 1;
        else                posicionTr    = 0;
      }
    }
    //alert(tipoFichero); 
    
    
    var NUMPARTIDOS_CON_OTROS = 7;    // Número de partidos contando la 7ª candidatura u OTROS
    var NUMPARTIDOS_SIN_OTROS = 6;    // Número de partidos sin contar la 7ª candidatura u OTROS
    var POS_PRIMER_PARTIDO    = 0;    // Posición en el array del primer partido con datos de verdad (en IE<9) metemos un dato falso (0.00000001) para que pinte un primer sector prácticamente invisible, que será el que pierda el color al imprimir.
    
   
    if ( ($.browser.msie) && ( ($.browser.version.substr(0,1))!="9" )){ // Para el IE<9 tenemos en cuenta el diferencial que utilizamos como ñapa para que pinte correctamente los colores de la tarta
      //alert(($.browser.version.substr(0,1)));
      NUMPARTIDOS_CON_OTROS = 8;
      NUMPARTIDOS_SIN_OTROS = 7; 
      POS_PRIMER_PARTIDO    = 1;
    }
    
    
    for( var i = 0; i<numpartidos; i++)
    {
      //El i+1 controla el desplazamiento vertical para evitar las cabeceras
      dips11=$('#TVOTOS tbody tr:eq('+(i+posicionTr)+') td:eq('+posicionTd+')').text().replace(".","");
      //alert("dips11:*"+dips11+"*");
      color11=$('#TVOTOS tbody tr:eq('+(i+posicionTr)+') th:first').attr('id').substring(1,7);
	  //color11="0194D9C";
      //alert("color11:"+color11);
      part11=$('#TVOTOS tbody tr:eq('+(i+posicionTr)+') th:first').text();
      //alert("part11:"+part11);

      if (!isNaN(parseInt(dips11)))
      {
        acumulado = parseInt(dips11) + parseInt(acumulado);
        //Arreglando bug en explorer
        if ( (k==0) && ( ($.browser.msie) && ( ($.browser.version.substr(0,1))!="9" )) )
        {
          //alert($.browser.version.substr(0,1));
          data[k] = {
            label: "",
            data: 0.000000001,//parseInt(dips11),
            color:'#'+color11
          };
          k++;
        }
        data[k] = {
          label: part11,
          data: parseInt(dips11),
          color: '#'+color11
        };
        k++;
      }

        if (hayComparativa) posicionTr    = 1;
        else                posicionTr    = 0;

      
      if(hayComparativa)
      {
      
	      part07=$('#TVOTOS tbody tr:eq('+(i+posicionTr)+') th:eq(1)').text();
	      //alert("part07:*"+part07+"*");
	      color07=$('#TVOTOS tbody tr:eq('+(i+posicionTr)+') th:last').attr('id').substring(1,7);
	      //alert("color07:*"+trim(color07)+"*");
	      dips07=$('#TVOTOS tbody tr:eq('+(i+posicionTr)+') td:eq('+posicionTdAnt+')').text().replace(".","");
	      //alert("part07:*"+part07+"*"+"dips07:*"+dips07+"*");
	      
	
	      if (!isNaN(parseInt(dips07)))
	      {
	
	        if (trim(color07) == "")
	        {
	          //alert("reasigno a color11");
	          color07=color11;
	        }
	        if ( (j==0) && ( ($.browser.msie) && ( ($.browser.version.substr(0,1))!="9" )) )
	        {
	          //alert($.browser.version.substr(0,1));
	          dataAnt[j] = {
	            label: "",
	            data: 0.000000001,//parseInt(dips11),
	            color:'#'+color07
	          };
	          j++;
	        }
	
	  	    dataAnt[j] = {
	                    label: part07,
	                    data: parseInt(dips07),
	                    color: '#'+color07
	                     };
	        j++;
	
	      }
      }

    }
  
	
    //Si estamos en previos, tenemos el vector datos[] vacío y no pintamos tarta. Tenemos que forzar al $.plot a que nos pinte una tarta en blanco.
    if (data.length == 0){
        //data[0] = {label:'', data:0.1, color:'#ffffff'};
        //mostrarTooltip = false;
    	var etiqueta='';
    	
    	if(aElegir!='')
    	{
    		etiqueta=etiquetaSin;    		
    	}
    	else etiqueta='Asignados';    	
    	data[0] = {label:etiqueta, data:parseInt(cargosAElegir), color:'#' + colorSin};
        mostrarTooltip = true;
        
        
      if (tipoFichero=="MU" || tipoFichero=="CC")
      {
        escrutado   = parseFloat($('#xescrutado').text().split(' ')[1].replace('%', '').replace(',', '.'));
        sVotos0     = $('#TVOTOS tbody tr:eq('+(posicionTr)+') td:eq('+posicionTdVotos+')').text().replace(".","");
        votos0      = parseInt(sVotos0);
        sinasignar  = 1;
        datoEnLabel = false;
        if (escrutado == 0.0 && (votos0 == 0 || isNaN(votos0)) )
             data[0] = {label:etiquetaSinDatos, data: sinasignar, color: '#'+colorSinDatos};
        else data[0] = {label:etiquetaSinAsignar, data: sinasignar, color: '#'+colorSinAsignar};
      }
      else if(tipoFichero=="CA")
      {  
    	  escrutado   = parseFloat($('#xescrutado').text().split(' ')[1].replace('%', '').replace(',', '.'));
          votos0      = parseInt($('#TVOTOS tbody tr:eq('+(posicionTr)+') td:eq('+posicionTdVotos+')').text().replace(".",""));
          sinasignar  = 1;          
         //alert(escrutado + ":" + votos0);           
          if (escrutado == 0.0 && (votos0 == 0 || isNaN(votos0)))
        	  
               data[0] = {label:etiquetaSinDatos, data: sinasignar, color: '#'+colorSinDatos};         
          else                 	  
        	  data[0] = {label:etiquetaSinAsignar, data: sinasignar, color: '#'+colorSinAsignar};
          
          datoEnLabel = false; 
      }
    }
    
    
    if (hayComparativa && dataAnt.length == 0){    	
        dataAnt[0] = {label:'', data:0.1, color:'#' + colorSin};        
        //mostrarTooltip = false;
    }
    
    // Controlamos la 7ª candidatura u OTROS
    if (data.length > NUMPARTIDOS_CON_OTROS){
      var suma = 0;
      for (var i = NUMPARTIDOS_SIN_OTROS; i < data.length; i++){
        suma += data[i].data;
      }
      data.length = NUMPARTIDOS_CON_OTROS;
      data[NUMPARTIDOS_SIN_OTROS] = {label:'Otros', data: suma, color: '#'+colorOtros};
      if (url.indexOf("DMU61") > -1 && url.indexOf("_L2") > -1)
        data[NUMPARTIDOS_SIN_OTROS] = {label:'Gainontzekoak', data: suma, color: '#'+colorOtros};
      if (url.indexOf("DCC09") > -1 && url.indexOf("_L2") > -1)
          data[NUMPARTIDOS_SIN_OTROS] = {label:'Altres', data: suma, color: '#'+colorOtros};
    }
    if (hayComparativa && dataAnt.length > NUMPARTIDOS_CON_OTROS){
      var suma = 0;      
      for (var i = NUMPARTIDOS_SIN_OTROS; i < dataAnt.length; i++){
        suma += dataAnt[i].data;        
      }
      dataAnt.length = NUMPARTIDOS_CON_OTROS;
      dataAnt[NUMPARTIDOS_SIN_OTROS] = {label:'Otros', data: suma, color: '#'+colorOtros};
      if (url.indexOf("DMU61") > -1 && url.indexOf("_L2") > -1)
          data[NUMPARTIDOS_SIN_OTROS] = {label:'Gainontzekoak', data: suma, color: '#'+colorOtros};
        if (url.indexOf("DCC09") > -1 && url.indexOf("_L2") > -1)
          data[NUMPARTIDOS_SIN_OTROS] = {label:'Altres', data: suma, color: '#'+colorOtros};
    }     
    
    if (tipoFichero=="DP")
    {
    	
      sinasignar = parseInt(cargosAElegir)-parseInt(acumulado);
      if(sinasignar>0)
      {
    	  data.length = data.length +1;
    	  //alert(data.length);    	  
    	  data[data.length-1] = {label:etiquetaSin, data: sinasignar, color: '#'+colorSin};
      }
    }
    
    // Ordeno el array de la tarta de la convocatoria anterior para que vaya en el orden correcto, de mayor número de cargos a menos.
    var dataTemp = [];
    
    
    var finRecorrido = NUMPARTIDOS_SIN_OTROS;
    
    //Si hay menos de siete solo recorre hasta los que haya
    
    if(hayComparativa)
    {	
      
      
      if(dataAnt.length < NUMPARTIDOS_CON_OTROS)
      {
    	  finRecorrido =  dataAnt.length;
          
      }
      for (var i = POS_PRIMER_PARTIDO; i < finRecorrido; i++)
      {
    	  dataTemp[i-POS_PRIMER_PARTIDO] = dataAnt[i];
    	  
      }
      dataTemp.sort(sortDictDesc);
      
      for (var i = POS_PRIMER_PARTIDO; i < finRecorrido; i++) dataAnt[i] = dataTemp[i-POS_PRIMER_PARTIDO];
      
      
      
    }
    
    
    
    // Por el arrgeglo del bug de impresión en IE, hemos añadido un sector diferencial. El problema es que este
    // dibuja una línea para separarlo del resto de sectores. No se nota diferencia, pero cuando sólo hay una candidatura
    // reflejada en el gráfico, en lugar de salir una tarta con un mismo color, aparece un radio horizontal del color de
    // las líneas del gráfico que representa dicho sector diferencial. Para solucionarlo, lo que hacemos es que cuando se
    // dé esta situación, cambiamos el color de las líneas del gráfico (stroke) a la de la única candidatura que se debe
    // representar.
    if (data.length == 2    && data[0].data < 0.01)     strokeGraphColor = data[1].color;
    if (dataAnt.length == 2 && dataAnt[0].data < 0.01)  strokeGraphAntColor = dataAnt[1].color;

   
    

    // Construyo tarta
      $.plot($("#tarta"), data,
    {
      series: {
        pie: {
          show: true,
                  radius: 0.9,
                  tilt: 1,
                  startAngle: 1,
                  label: {
                      show: false
                  },
                  offset: {
                    top: 0,
                    left: 0
                  },
                  stroke: {
                    color: strokeGraphColor,
                    width: 1
                  },
                  highlight: {
                    opacity:0   //Para no resalte
                  }
        }
          },
          legend: {
                  show: false
              },
          grid: {
              hoverable: true
          }
      });
    $("#tarta").bind("plothover", encimaActual);

   
    if(hayComparativa)
    {
		// Construyo tarta 2
	    $.plot($("#tartaAnt"), dataAnt,
		{
			series: {
				pie: {
					show: true,
	                radius: 0.9,
	                tilt: 1,
	                startAngle: 1,
	                label: {
	                    show: false
	                },
	                offset: {
	                  top: 0,
	                  left: 0
	                },
	                stroke: {
	                  color: strokeGraphAntColor,
	                  width: 1
	                },
	                highlight: {
	                  opacity:0    //Para no resalte
	                }
				}
	        },
	        legend: {
	                show: false
	            },
	        grid: {
	            hoverable: true
	        }
	    });
		$("#tartaAnt").bind("plothover", encimaAnt);
    }

// -----------------------------------------------------------------------

    // tratando de arreglar la impresion
    var flotcanvas = $('#tarta canvas');
    $(flotcanvas[1]).css({visibility:'hidden'});

    if(hayComparativa)
    {
		// tratando de arreglar la impresion
		var flotcanvas = $('#tartaAnt canvas');
		$(flotcanvas[1]).css({visibility:'hidden'});
    }
	
// -----------------------------------------------------------------------
	
    // Mostrar tartas al ejecutar el javascript
    var tarta1 = $('#tarta');
    $(tarta1[0]).css({display:'block'});
    
    if(hayComparativa)
    {
		// Mostrar tartas al ejecutar el javascript
		var tarta2 = $('#tartaAnt');
		$(tarta2[0]).css({display:'block'});
    }
	
    // Mostrar tartas al ejecutar el javascript
    var cajaTartas = $('#cajaTartas');
    $(cajaTartas[0]).css({display:'block'});
    
    
    if (!mostrarTooltip) $('#tooltip').remove();
  }
});
