﻿// Fichero con funciones necesarias para el calculo de moxqum mediante javascript

//Ruta del servidor de moxqum

// URL_MOXQUM - Desarrollo
//var serMoxqum =	"http://moxqum.yelldes.intrayell.com/paol/images/logo.gif?"
//var serMoxqum =	"http://moxqum.yelldes.intrayell.com/paol/images/logo.gif?"
// URL_MOXQUM - Aceptación
//var serMoxqum = "http://10.30.0.198/paol/images/logo.gif?"
// URL_MOXQUM - Producción
var serMoxqum = "http://wwv.paginasamarillas.es/paol/images/logo.gif?"


//Variable que indica si está activa la insercción de moscas.
// 1 activado
// 0 desactivado
var estadoMoxqum="1";

// Estado y parametros de mosca OJD
// 1 activado
// 0 desactivado
var estadoMoscaOJD='0';
var siteMoscaOJD="pamarillas";

// Estado y parametros de mosca Nielsen
var estadoMoscaNielsen = "0";
var _rsCI="es-yell";
var _rsCG="0";
var _rsDN="//secure-uk.imrworldwide.com/";
var _rsCC=0;

if ( (document.location.pathname == '/default.asp') || 
     (document.location.pathname == '/') )
{
	var sectionnameMoscaOJD="www.paginasamarillas.es/home";
}
else
{
	var sectionnameMoscaOJD="www.paginasamarillas.es";
}

var optionalsectiondescriptionMoscaOJD="";


function pintaMosca(document)
{                   

	//Para añadir idAnuncioPGanuncio en la query de mosqum
	anunQuery = getAnunQuery();

	//Comprobamos si está activa la inserccion de moscas
	document.write("<div style='display:none'>");
	if (estadoMoxqum == "1")
	{

		var param = document.location.search;
		// Llamamos a la funcion que modifica el id busqueda que viene en la url por el que lee de la cookie
		param = fnModifyIdBusq(param);
		param = param.replace("?","");
		var queryMoxqum="id_maq=" + document.location.hostname;
		queryMoxqum+="&referer=" + escape(document.referrer);
		//Para añadir idAnuncioPGanuncio en la query de mosqum
		//queryMoxqum+="&urlv=" + escape("NW=1&" + param);
		queryMoxqum+="&urlv=" + escape("NW=1&" + param+anunQuery);
		queryMoxqum+="&urlf=" + escape(document.location.hostname + document.location.pathname); //document.location.href;
		queryMoxqum+="&serv=" + escape(document.location.hostname);
		//Testing pourpouses
		//alert (queryMoxqum);
		//queryMoxqum+="&NW=1";
		
		//var queryMoxqum = getQueryMoxcum();
		//document.write("<iframe id='pilotoMoxqum' name='pilotoMoxqum' src='" + serMoxqum + queryMoxqum + "' style='display:none'></iframe>");
		document.write("<IMG id='pilotoMoxqum' name='pilotoMoxqum' SRC=\""+ serMoxqum + queryMoxqum +"\" WIDTH=\"1\" HEIGHT=\"1\" >");
	}
	if (estadoMoscaOJD == "1")
	{
		//var IVW ="http://" + siteMoscaOJD + ".ojdinteractiva.com/cgi-bin/ivw/CP/" + sectionnameMoscaOJD + ";" + optionalsectiondescriptionMoscaOJD;
		//document.write("<IMG id='mojd' name='mojd' SRC=\""+IVW+"?p="+Math.random()+"&r="+escape(document.referrer)+"\" WIDTH=\"1\" HEIGHT=\"1\" >");

		var queryOJD = getQueryOJD();
		document.write("<IMG id='mojd' name='mojd' SRC=\""+ queryOJD +"\" WIDTH=\"1\" HEIGHT=\"1\" >");
	}
	
	if (estadoMoscaNielsen == "1")
		document.write("<script type='text/javascript' src='http://secure-uk.imrworldwide.com/v53.js'></script>");
	document.write("</div>");
}







// Función que pinta un mosca desde un evento (por ejemplo al pulsar un boton->onClick='pintaMoscaEnEvento(window.document)')
// El parámetro filtro, indica que mosca pintar:
//	- MOXQUM: para pintar solamente la mosca de Moxqum.
//	- OJD: para pintar solamente la mosca de OJD.
//	- "": para pintar todas las moscas.
//	- Si no se especifica se toma por defecto "", indicando que se pintaran todas las moscas.
function pintaMoscaEnEvento(document, filtro)
{
	var idMoxqum = "MOXQUM";
	var idOJD = "OJD";
	var idNielsen = "NIELSEN";
	var id = "";

	if (filtro != null)
	{
		id = filtro.toUpperCase();
	}

	//Comprobamos si está activa la inserccion de moscas
	if ( (estadoMoxqum == "1") && ((id == "") || (id == idMoxqum)) )
	{
		var queryMoxqum = getQueryMoxcum();

		var docfrag = document.createDocumentFragment();
		var mydiv = document.createElement("div");
		var myiframe = document.createElement("iframe");

		myiframe.src = serMoxqum + queryMoxqum;
		myiframe.style.display = "none";

		mydiv.appendChild(myiframe);
		docfrag.appendChild(mydiv);

		// Añadimos el fragmento al body de la página
		var objBody = document.getElementsByTagName("body");
		objBody[objBody.length-1].appendChild(docfrag);
	}

	if ( (estadoMoscaOJD == "1") && (((id == "") || (id == idOJD))) )
	{
		var queryOJD = getQueryOJD();

		var docfrag = document.createDocumentFragment();
		var myImage = document.createElement("img");

		docfrag.appendChild(myImage);

		// Añadimos el fragmento al body de la página
		var objBody = document.getElementsByTagName("body");	
		
		objBody[objBody.length-1].appendChild(docfrag);				

		myImage.src = queryOJD;
		myImage.width = 1;
		myImage.height = 1;
	}
	
	if ( (estadoMoscaNielsen == "1") && (((id == "") || (id == idNielsen))) )
	{
		var queryNielsen = getQueryNielsen();

		var docfrag = document.createDocumentFragment();
		var myScript = document.createElement("script");
		
		myScript.type = 'text/javascript'
		myScript.src = queryNielsen;
		docfrag.appendChild(myScript);

		// Añadimos el fragmento al body de la página
		var objBody = document.getElementsByTagName("body");	
		objBody[objBody.length-1].appendChild(docfrag);				
		
	}
}


// Devuelve la ruta para la mosca MOXCUM
function getQueryMoxcum()
{

		var param = document.location.search;
		param = param.replace("?","");
		var queryMoxqum="id_maq=" + document.location.hostname;
		queryMoxqum+="&referer=" + escape(document.referrer);
		queryMoxqum+="&urlv=" + escape("NW=1&" + param);
		queryMoxqum+="&urlf=" + document.location.hostname + document.location.pathname; //document.location.href;
		queryMoxqum+="&serv=" + document.location.hostname;

	return queryMoxqum;
	}


// Devuelve la ruta para la mosca OJD
function getQueryOJD()
	{
		var IVW ="http://" + siteMoscaOJD + ".ojdinteractiva.com/cgi-bin/ivw/CP/" + sectionnameMoscaOJD + ";" + optionalsectiondescriptionMoscaOJD;
	var SRC = IVW+"?p="+Math.random()+"&r="+escape(document.referrer);

	return SRC;
}

//Devuelve la ruta para la mosca NIELSEN
function getQueryNielsen()
{
	var SRCN = "//secure-uk.imrworldwide.com/v53.js'"
	return SRCN;
}

function fnModifyIdBusq(strParam){
	var IdBusqQuery	= fngetURLParam(strParam,"id_busq");
	var IdBusqCookie = getCookieRE("idBusq");
	var strReturn;
		
	if (IdBusqCookie != "" && IdBusqCookie != "undefined" && IdBusqCookie != null){
		if (IdBusqQuery != "" && IdBusqQuery != "undefined" && IdBusqQuery != null){
			strReturn = strParam.replace(IdBusqQuery,IdBusqCookie); 
		} else {
			strReturn = strParam + "&id_busq=" + IdBusqCookie;
		}	
	}else{
		strReturn = strParam;
	}
	return strReturn;	
}

function fngetURLParam(strHref,strParamName){
	var strReturn = "";
	if ( strHref.indexOf("?") > -1 ){
		var strQueryString = strHref.substr(strHref.indexOf("?"));
		var aQueryString = strQueryString.split("&");
		for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){
			if (aQueryString[iParam].indexOf(strParamName + "=") > -1 ){
				var aParam = aQueryString[iParam].split("=");
				strReturn = aParam[1];
				break;
			}
		}
	}
	return unescape(strReturn);
} 
/**
 * Recoge el valor de una cookie.
 * Si no existe devuelve la cadena vacía.
 */
function getCookieRE( /*String*/ cookieName ) {
	var re = new RegExp( cookieName + "\\s*=\\s*([^;]+)(;|^)" );
	var m = re.exec(document.cookie + ";");
	var result = "";
	if ( m != null ) {
		result  = m[1];
	}
	
	return result;
} 



//Nuevo código para la mosca
//Se le pasa un texto y te extrae la parte relevante que indica si contiene texto del cual se puede extraer un Id Anuncio
function extractRawAnunId(url){

	//para que sea valido tiene que cumplir con el patron xxx/xxx/xxx/xxx/languages/
	//URL = '/375/468/02R/002/languages/';
	return url.match (/\/\w\w\w\/\w\w\w\/\w\w\w\/\d\d\d\/languages/);
}

//Le pasas los anclas del documento html. Te devuelve la primera coincidencia que concuerde con el patrón xxx/xxx/xxx/xxx/languages/ (o null si no encuentra)
function getRawAnunIdFromAnclas(anclas){

	for (i in anclas){
		
		ancla = anclas[i];

		//Si la url del ancla contiene un anuncio, se devuelve en rawAnunId
		anclaUrl = ancla.toString();
		rawAnunId = extractRawAnunId(anclaUrl);
		if (rawAnunId != null){
			return rawAnunId.toString();
		}
		//Si no se puede extraer el anuncio de la url, mira en el evento onClik
		try{
			onClickFunction = ancla.onclick.toString();
			rawAnunId = extractRawAnunId(onClickFunction);
			if (rawAnunId != null){
				return rawAnunId.toString();
			}
		}catch(err){
		
		}
	}
	return null;
}

function cleanAnunString(rawAnunId){

	stringFormed = '';
	anunID = '';
	anunPG = '';

	//Si ha encontrado un patrón válido en alguna ancla
	if (rawAnunId!=null){

		//esto es para eliminar los caracteres que no nos valen y quedarnos con la parte relevante	
		relevantPath = rawAnunId.substring(0,16);
		stringId = relevantPath.replace(/\//g, "");
		
		//troceamos el numero en idanuncio y pganuncio
		anunID = stringId.substring(0,9);
		anunPG = stringId.substring(9,12);
	}
	
	//Componemos la cadena con los datos
	stringFormed = '&c='+anunID+'&a='+anunPG;
	return stringFormed;

}

//Te devuelve un string con la query get conteniendo idanuncio y pganuncio para pasarle a moxqum,
function getAnunQuery(){

	//Pilla las anclas de que hay en el documento
	anclas = document.getElementsByTagName("a");

	//Las anclas son pasadas a esta funcion. En el caso de que encuentre un patrón de número de anunncio, lo devuelve en un string 
	rawAnunId = getRawAnunIdFromAnclas(anclas);

	//Se le pasa el texto que contiene el anunId y te devuelve la query limpita
	queryAnunId=cleanAnunString(rawAnunId)

	return queryAnunId;
}

