// Fichero con funciones necesarias para el calculo de moxqum mediante javascript


//Ruta del servidor de moxqum

var serMoxqum="http://moxqum.yelldes.intrayell.com/pbol/images/logo.gif?";

//Variable que indica si estï¿½ activa la insercciï¿½n de moscas.
// 1 activado
// 0 desactivado
var estadoMoxqum="1";

//BEGIN MOSCA NIELSEN
var _rsCI="es-yell";   //Identificador de cliente para Yell
var _rsCG="0";					//Grupo de canales, para agrupar estadisticas
var _rsDN="//secure-uk.imrworldwide.com/";  //Servidor para el envio de las estadisticas
var _rsSE="1";   //Activa desactiva la mosca  0=desactivada    1=activada 
//END MOSCA NIELSEN

function pintaMosca(document)
{                    
	//Comprobamos si estï¿½ activa la inserccion de moscas

	if (estadoMoxqum == "1")
	{
		var queryMoxqum="id_maq=" + document.location.hostname;
		queryMoxqum+="&referer=" + document.referrer;
		queryMoxqum+="&urlv=";
		queryMoxqum+="&urlf=" + document.location.href;
		queryMoxqum+="&serv=" + document.location.hostname;
		
		document.write("<iframe id='pilotoMoxqum' name='pilotoMoxqum' src='" + serMoxqum + queryMoxqum + "' style='display:none'></iframe>");

	}
		
	//BEGIN MOSCA NIELSEN
	if (_rsSE == "1") //Si esta activada la mosca Nielsen
	{
		document.write("<script type=\"text/javascript\">");
		document.write("    var _rsCI=\"" + _rsCI + "\";")
		document.write("    var _rsCG=\"" + _rsCG + "\";")
		document.write("    var _rsDN=\"" + _rsDN + "\";")
		document.write("    var _rsSE=\"" + _rsSE + "\";")
		document.write("</script>");
		document.write("<script type=\"text/javascript\" src=\""+ _rsDN +"v53.js\"></script>");
	  document.write("<noscript>");
		document.write("<div><img src=\"" + _rsDN + "cgi-bin/m?ci=" + _rsCI + "&amp;cg=" + _rsCG + "\" alt=\"\"/></div>");
		document.write("</noscript>");
	}
	//END MOSCA NIELSEN
}

//Para las url limpias del SEO
var _moscaDis = new function() {
	var DELAY_MILLISECONDS = 1000;
	var SITE = "PBOL";
	this.delayFinished = false;
	this.anchor = null;
	this.url = "";
	this.clickNum = -1;
	this.timeOutId = -1;
	
	/**
	 * Crea la mosca
	 *
	 * @param oAnchor Es el objeto <a> que lanza el evento.
	 * @param lClick Es el número de que identifica el objeto.
	 * @return boolean
	 * Se devuelve true si el enlace está dentro de la propia página (href="#...)
	 * Se devuelve false si el enlace es a otras páginas.
	 * Para enlaces a otras páginas hay que aplicar un retardo en el salto
	 * para que de tiempo a cargar la mosca.
	 * Para ello es imprescindible que el evento esté declarado
	 * de esta manera en el enlace:
	 * <a href="dest_url" onclick="return _moscaDis.click( this, num_click );">....</a>
	 */
	this.click = function( oAnchor, lClick ) {
		var isDelayed = false;
		if( this.clickNum == -1 ) {
				
			// Si el enlace es a otra página, hay que aplicar un retardo.
			var sHref = new String(oAnchor.href);
			this.anchor=oAnchor;
			if( sHref.length > 0 ) {
				isDelayed = sHref.indexOf("#") == -1 && 
				            sHref.indexOf("javascript:") != 1 &&
				            ( 
				              oAnchor.target == 'undefined' || 
				              oAnchor.target == ''
							            );
				if( isDelayed ) {
					this.anchor = oAnchor;
					this.url = sHref;
					this.clickNum = lClick;
				}
			}

			// Insertamos Moxqum
			if ( estadoMoxqum == "1" )
			{	
					
						var oImg = document.createElement("img");
						if( isDelayed ) {
							oImg.onload = function() {_moscaDis.fireEvent();};
						}
						//oImg.setAttribute( "src", serMoxqum + _moscaDis.getQueryMoxqum( lClick ) );
						//oImg.setAttribute("id", "moxq");
						var oDiv = document.createElement("div");
						//alert('primer div');
						oDiv.style.display = "none";
						//oDiv.style.visibility = "hidden";				
						oDiv.appendChild(oImg);
						//alert('appendchild 1');
						var oDocFrag = document.createDocumentFragment();
						oDocFrag.appendChild(oDiv);
						//alert('appendchild 2');
						// Añadimos el fragmento al body de la página
						//var oBody = document.getElementsByTagName("body")[0];
						//oBody[oBody.length-1].appendChild(oDocFrag);
						//oBody.appendChild(oDocFrag);
						//alert('oDocFrag' + oDocFrag.innerHTML);
						document.body.appendChild(oDocFrag);	
						//document.getElementById("moxq").setAttribute("src",);
						oImg.setAttribute( "src", serMoxqum + _moscaDis.getQueryMoxqum( lClick ) );
					
			} 

			if( isDelayed ) {
				this.delayEvent();
			}
		}
		else {
			alert( "click != -1 " );
		}
		
		if( this.delayFinished ) {
			isDelayed = false;
		}
		
		// Si hay retardo devolvemos false para detener el evento.
		return !isDelayed;
	}
	
	/** 
	 * Devuelve la querystring de la mosca de diseño.  
	 *
	 * @param lClick Es el número de que identifica el objeto.
	 * @return Cadena con la querystring
	 */
	this.getQueryMoxqum = function( lClick ) {
		var param = document.location.search;
		param = param.replace("?","");
		var queryMoxqum = "id_maq=" + escape( document.location.hostname );
		queryMoxqum+="&referer=" + escape( document.location.href );
		//queryMoxqum+="&urlv=" + escape( SITE + lClick + ";" + document.location.href );
		queryMoxqum+="&urlv=" + escape( SITE + lClick + ";" + this.anchor.href );
		queryMoxqum+="&urlf=click%2Epaginasamarillas%2Ees";
		queryMoxqum+="&serv=client";
		queryMoxqum+="&rnd=" + this.getMilliseconds() + "" + this.getRnd();

		return queryMoxqum;
	}

	/** 
	 * Establece un timeout para ejecutar ejecutar el enlace.
	 *
	 * @return void
	 */
	this.delayEvent = function() {
		this.timeOutId = setTimeout( "_moscaDis.fireEvent()", DELAY_MILLISECONDS );
	}
	
	/** 
	 * Ejecuta el enlace.
	 *
	 * v3: Simula el evento onclick creando un formulario y enviandolo por GET.
	 * Si la url del enlace lleva parámetros, es necesario añadirlos al formulario.
	 * Crea la siguiente estructura:
	 *  + Document Fragment
	 *  |---+ DIV
	 *      |---+ FORM (method GET)
	 *          |--- INPUT TYPE HIDDEN
	 *          |--- INPUT TYPE HIDDEN
	 *          |--- [...]
	 * 
	 * @return void
	 */
	this.fireEvent = function() {
		// Hasta aquí se puede haber llegado por el evento onload de la imagen o porque ha 
		// transcurrido el tiempo del timeout.
		// En cualquier caso borramos el timeout para evitar una doble llamada al método.
		if( this.timeOutId != -1 ) {
			clearTimeout( this.timeOutId );
		}

		// Se trocea la url en los elementos que nos interesan
		var aHref = this.anchor.href.split("?");
		var sHost = aHref[0];
		var sQS   = "clk=" + SITE + this.clickNum;
		var lDt   = this.getMilliseconds();
		//sQS += "&dt=" + lDt;
		if( aHref.length > 1 ) {
			sQS += "&" + aHref[1];
			// Una url puede trear varios caracteres ?
			for( var i=2; i<aHref.length; i++ ) {
				sQS += "?" + aHref[i];
			}
		}

		var oForm = document.createElement( "form" );
		oForm.setAttribute( "name", lDt );
		oForm.setAttribute( "id", lDt );
		oForm.setAttribute( "method", "GET" );
		oForm.setAttribute( "action", sHost );

		// Se añaden los parámetros de la url como campos ocultos del formulario
		var aQS = sQS.split("&");
		var aParam, sParamName, sParamValue;
		var oInput;
		for( var i=0; i<aQS.length; i++ ) {
			aParam = aQS[i].split("=");
			sParamName = aParam[0];
			aParam.length > 0 ? sParamValue = aParam[1] : sParamValue = "";
			
			oInput = document.createElement( "input" );
			oInput.setAttribute( "type", "hidden" );
			oInput.setAttribute( "name", sParamName );
			oInput.setAttribute( "value", sParamValue );
			oForm.appendChild( oInput );
		}

		var oDiv = document.createElement("div");
		oDiv.style.display = "none";
		oDiv.style.visibility = "hidden";
		oDiv.appendChild(oForm);

		var oDocFrag = document.createDocumentFragment();
		oDocFrag.appendChild(oDiv);

		var oBody = document.getElementsByTagName("body");
		oBody[oBody.length-1].appendChild(oDocFrag);

		// Se inicializa el objeto _moscaDis antes de enviar el formulario.
		// Esto es necesario porque el usuario puede pulsar el botón "atrás" y los enlaces con mosca
		// de diseño no funcionarían.
		this.delayFinished = false;
		this.anchor = null;
		this.url = "";
		this.clickNum = -1;
		oForm.submit();
	}
	
	/**
	 * Devuelve la fecha actual en milisegundos.
	 *
	 * @return Nº de milisegundos (entero largo)
	 */
	this.getMilliseconds = function() {
		var d = new Date();
		return d.getTime();
	}
	
	/**
	 * Devuelve un número aleatorio de hasta 9 cifras.
	 *
	 * @return Nº aleatorio (entero largo)
	 */
	this.getRnd = function() {
		return Math.round(Math.random()*1000000000);
	}
}
