function nuevoAjax ()
{
	var xmlhttp=false;

	try
	{
		// No IE
		xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
	}

	catch(e)
	{
		try
		{
			// IE
			xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
		}

		catch(E)
		{
			xmlhttp=false;
		}
	}

	if (!xmlhttp && typeof XMLHttpRequest!="undefined")
	{
		xmlhttp=new XMLHttpRequest();
	}

	return xmlhttp;
}


function getContenidoUrl (ruta,url,param,nombreCapa,llamadaNetscope)
{
	// El parametro llamadaNetsope identifica si se debe hacer la llamada a control de trafico o no
	// Si no se pasa el parametro se hara la llamada. Si se pasa un 0 no se hara.
	llamadaNetscope = typeof(llamadaNetscope) != 'undefined' ? llamadaNetscope : '0';

	if (document.getElementById(nombreCapa))
	{
		var capa = document.getElementById(nombreCapa);
		//nombreCapa es el id de la capa o elemento html que queremos rellenar con Ajax

		var ajax = nuevoAjax();

		ajax.open("POST", url, true);

		ajax.onreadystatechange = function()
		{
			//console.log(nombreCapa+ ' estado: '+ajax.readyState);

			if (ajax.readyState==4)
			{

				if (ajax.status==200)
				{
					//mostramos los datos dentro de la div
					capa.innerHTML = "";
					//capa.innerHTML = ajax.responseText;

					//Codigo para interpretar el javascript de la parte del Ajax
					var scs=ajax.responseText.extractScript();    //capturamos los scripts
					capa.innerHTML=ajax.responseText
					scs.evalScript();       //ahora si, comenzamos a interpretar todo
					try {
						displayLayers();		//recolocamos las capas de las trazas
						if (llamadaNetscope == '1' ) netscopeWFG();		//llamamos a la funcion para control de trafico
					} catch (err) {
						//
					}
				}
				else
				{
					if (ajax.status==404)
					{
						capa.innerHTML = "No se pueden cargar los datos";
					}
					else
					{
						//mostramos el posible error
						capa.innerHTML = "Error:" + ajax.status;
					}
				}
			}

			if (ajax.readyState==1)
			{
				/*capa.innerHTML = "<img src='"+ ruta +"/images/loader.gif' width='32' height='32'/>";*/
				capa.innerHTML = "<div style='height:100px; width:95%;display:table;'><div style='display:table-cell; vertical-align:middle; text-align:center'><img src='"+ ruta +"/images/loader.gif' width='32' height='32' /></div></div>";
			}
		}

		ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		ajax.setRequestHeader("Content-length", param.length);
		ajax.setRequestHeader("Connection", "close");
		ajax.send(param);
		//ajax.send(null);
	}
}


function setDefaultPorfolio (defaultPorftolio, usuario)
{

	var capa = document.getElementById('plaster');

	//creamos la url de la funcionalidad que hace dinamicamente el cambio de cartera por defecto
	var url = "/funcionalidades/cartera_v2/changeDefaultPortfolio.php";

	//creamos la cadena de parametros que pone la cartera por defecto para ese usuario
	var param = "idCartera=" +  defaultPorftolio + "&idUsuario=" + usuario;

	//creamos el objeto ajax
	var ajax = nuevoAjax();

	ajax.open ("POST", url, true);


	ajax.onreadystatechange = function()
	{
		//console.log(nombreCapa+ ' estado: '+ajax.readyState);
		if (ajax.readyState==4)
		{
			if (ajax.status != 200)
			{
				if (ajax.status==404)
				{
					alert ("No se puede cambiar la cartera por defecto");
					return false;
				}
				else
				{
					//mostramos el posible error

				}
			}
		}
	}

	//hacemos la llamada ajax
	ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	ajax.send(param);
	return true;

}
function netscopeWFG()
{
	var w_counter;
	try{
		if(wreport_ok==1){
			w_counter = new wreport_counter(WRP_SECTION, WRP_SUBSECTION, WRP_ID, WRP_ACC, WRP_CHANNEL, WRP_SECTION_GRP, WRP_SUBSECTION_GRP);
			w_counter.add_content(WRP_CONTENT);
			w_counter.count();
		}
	} catch (err) {

	}
	
	//aqui empieza el c�digo para google analytics	
	var _gaq = _gaq || [];
	  _gaq.push(['_setAccount', 'UA-154015-14']);
	  _gaq.push(['_setDomainName', 'none']);
	  _gaq.push(['_setAllowLinker', true]);
	  _gaq.push(['_trackPageview']);
	  (function() {
		var ga = document.createElement('script');ga.type = 'text/javascript';ga.async = true;
		ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
		var s = document.getElementsByTagName('script')[0];s.parentNode.insertBefore(ga, s);
	  })();
	  
}

/** Funcion para votar en las noticias y en las fichas de las acciones **/
function mandarVoto(voto,id,ruta,tipo)
{
	var url = "/funcionalidades/votacionNoticiasFicha/emitirVoto.php";
	var param = "id=" + id + "&voto="  + voto + "&tipo=" + tipo + "&homeurl=" + ruta;

	if (document.getElementById('barraVotacion'))
	{

		var capa = document.getElementById('barraVotacion');
		//nombreCapa es el id de la capa o elemento html que queremos rellenar con Ajax

		var ajax = nuevoAjax();

		ajax.open("POST", url, true);

		ajax.onreadystatechange = function()
		{

			//console.log(nombreCapa+ ' estado: '+ajax.readyState);

			if (ajax.readyState==4) {

				if (ajax.status==200) {
				//mostramos los datos dentro de la div

					capa.innerHTML = "";
					//capa.innerHTML = ajax.responseText;

					//Codigo para interpretar el javascript de la parte del Ajax
					var scs=ajax.responseText.extractScript();    //capturamos los scripts
					capa.innerHTML=ajax.responseText
					scs.evalScript();       //ahora si, comenzamos a interpretar todo
					//netscopeWFG();	//llamamos a la funcion para control de trafico
				}
				else {
					if (ajax.status==404) {
						capa.innerHTML = "No se pueden cargar los datos";
					}
					else {
					//mostramos el posible error
						capa.innerHTML = "Error:" + ajax.status;
					}
				}
			}

			if (ajax.readyState==1) {
				capa.innerHTML = "<img src='"+ ruta +"/images/loader.gif' width='11' height='11'/>";
			}
		}

		//ajax.send(null);
		ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		ajax.send(param);
	}
}

function cambiaTamano(idCapa, accion)
{
	tamanoMax = 10;
	tamanoMin = 0;
	estiloActual = document.getElementById(idCapa).className;
	longitud = estiloActual.length;
	tamanoActual = estiloActual.substr(longitud-1,longitud);
	tamanoActual=new Number(tamanoActual);

	if (accion == 'increase')
	{
		if (tamanoActual=='0')
		{
			dosDigitos = estiloActual.substr(longitud-2,longitud);
			if (dosDigitos == tamanoMax)
			{
				alert("Tamanho de fonte m\u00E1ximo permitido");
				return;
			}
		}
		tamanoNuevo = tamanoActual +1;
		document.getElementById(idCapa).className = 'com_shownews_fontsize_'+tamanoNuevo;
	}
	else
	{
		if (tamanoActual=='0')
		{

			dosDigitos = estiloActual.substr(longitud-2,longitud);
			if (dosDigitos != tamanoMax)
			{
				alert("Tamanho de fonte m\u00EDnimo permitido");
				return;
			}
			else
			{
				tamanoActual = estiloActual.substr(longitud-2,longitud);
				tamanoActual=new Number(tamanoActual);
			}
		}
		tamanoNuevo = tamanoActual -1;
		document.getElementById(idCapa).className = 'com_shownews_fontsize_'+tamanoNuevo;
	}
}

function getUltimasVisitadas (ruta, plantilla, total, nombreCapa, xml, ver_cookie)
{
	var random = Math.random();

	var url = ruta + "/funcionalidades/fichas_visitadas/fichas_visitadas.php";
	var param = "plantilla=" + plantilla + "&total="  + total + "&_xml=" + xml + "&ver_cookie=" + ver_cookie + "&random=" + random;

	getContenidoUrl(ruta,url,param,nombreCapa);

}


function getFavoritos (
			ruta,plantilla,plantillaActual,nombreCapa,
			inferior,superior,campo,orden,
			prefijo,idComp,
			xml,
			isin,plaza,calidad,idindice,favorito
			) {

	var random = Math.random();

	var url = ruta + "/funcionalidades/favoritos/favoritos.php";
	var param = "plantilla=" + plantilla + "&plantilla_actual=" + plantillaActual + "&inferior=" + inferior + "&superior=" + superior + "&campo=" + campo + "&orden=" + orden + "&prefijo=" + prefijo + "&idComp=" + idComp + "&_xml=" + xml + "&isinWL=" + isin + "&plazaWL=" + plaza + "&calidadWL=" + calidad + "&indiceWL=" + idindice + "&favoritoWL=" + favorito + "&random=" + random;

	getContenidoUrl(ruta,url,param,nombreCapa);
}

function getFavoritos_v2 (
			ruta,plantilla,plantillaActual,nombreCapa,
			inferior,superior,campo,orden,
			prefijo,idComp,
			xml,
			isin,plaza,calidad,idindice,favorito
			) {

	var random = Math.random();

	var url = ruta + "/funcionalidades/favoritos/favoritos_v2.php";
	var param = "plantilla=" + plantilla + "&plantilla_actual=" + plantillaActual + "&inferior=" + inferior + "&superior=" + superior + "&campo=" + campo + "&orden=" + orden + "&prefijo=" + prefijo + "&idComp=" + idComp + "&_xml=" + xml + "&isinWL=" + isin + "&plazaWL=" + plaza + "&calidadWL=" + calidad + "&indiceWL=" + idindice + "&favoritoWL=" + favorito + "&random=" + random;

	getContenidoUrl(ruta,url,param,nombreCapa);
}

function getGestionFavoritos (
			ruta,plantilla,nombreCapa,
			indiceSeleccionado,textoBusca,
			inferior,superior,campo,orden,
			prefijo,idComp,
			xml,
			isin,plaza,calidad,idindice,favorito
			) {

	var random = Math.random();

	var url = ruta + "/funcionalidades/favoritos/gestion_favoritos.php";
	var param = "plantilla=" + plantilla + "&indice_sel=" + indiceSeleccionado + "&texto=" + textoBusca + "&inferior=" + inferior + "&superior=" + superior + "&campo=" + campo + "&orden=" + orden + "&prefijo=" + prefijo + "&idComp=" + idComp + "&_xml=" + xml + "&isinWL=" + isin + "&plazaWL=" + plaza + "&calidadWL=" + calidad + "&indiceWL=" + idindice + "&favoritoWL=" + favorito + "&random=" + random;

	getContenidoUrl(ruta,url,param,nombreCapa);

}

//funcion que cambia los tops y la grafica flex en funcion del indice pasado como argumento;
//primero debe comprobar que en la pagina hay grafica y/o tops
function changeComponentContents (isin, nombre, tipoInstrumento, plaza, indice, calidad, isinIndice) {
	try {
		//llamamos a la funcion que cambia los tops
		cambiaIndiceTopsFlops (indice);

		//llamamos a la funcion que hace el cambio de instrumento, pasando como parametros los datos nuevos
		changeInstrumentFlashChart (isin, tipoInstrumento, plaza, calidad, nombre, isinIndice);
	} catch(err) {
		try {
			//llamamos a la funcion que hace el cambio de instrumento, pasando como parametros los datos nuevos
			changeInstrumentFlashChart (isin, tipoInstrumento, plaza, calidad, nombre, isinIndice);
		} catch(e) {
			
		}
	}
}

// Get URL Param
function gup (url, name){
	var regexS = "[\\?&]"+name+"=([^&#]*)";
	var regex = new RegExp (regexS);
	var results = regex.exec(url);
	if (results == null)
		return "";
	else
		return results[1];
}

// Set URL Param
function sup (url, name, value){
	var regexS = "([\\?&]"+name+"=)([^&#]*)";
	var regex = new RegExp (regexS);
	var results = regex.exec(url);
	if (results == null)
		return url;
	else
		return url.replace(regex,results[1]+value);
}

// Cambia el src del iframe que contiene la grafica comparativa flashchart
function changeInstrumentFlashChart (isin, tipoInstrumento, plaza, calidad, nombre, indice) {
	try {
		//cogemos el iframe de la grafica
		var graficaFlashChart = document.getElementById ("grafFlashChart");

		//comprobamos si existe la grafica en este template
		if (graficaFlashChart != null) {
			var src = graficaFlashChart.src;

			// Creamos los nuevos valores
			var newSymbolID = isin+'_'+tipoInstrumento+'_'+plaza+'_'+calidad;
			var newSymbolName = nombre;
			var newCodIndice = indice;
			var newCodMercado = plaza;

			// Sustituimos los valores
			src=sup(src,'symbolID', newSymbolID);
			src=sup(src,'symbolName', newSymbolName);
			src=sup(src,'codIndice', newCodIndice);
			src=sup(src,'codMercado', newCodMercado);

			// Reemplazamos el src
			document.getElementById ("grafFlashChart").src = src;
		}
	} catch(err) {

	}
}

// Cambia el src del iframe que contiene la grafica simple flashchart
function changeFlashChartDivisas (select) {
	try {
		//cogemos el iframe de la grafica
		var graficaFlashChart = document.getElementById ("graficaWfg");

		//comprobamos si existe la grafica en este template
		if (graficaFlashChart != null) {
			var src = graficaFlashChart.src;

			var aux = select[select.selectedIndex].value.split(":");

			// Creamos los nuevos valores
			var newSymbolID = aux[0];
			var newSymbolName = aux[1];

			// Sustituimos los valores
			src=sup(src,'symbolID', newSymbolID);
			src=sup(src,'symbolName', newSymbolName);

			// Reemplazamos el src
			document.getElementById ("graficaWfg").src = src;
		}
	} catch(err) {

	}
}

// Carga por AJAX el grafico de Market Overview
function loadMinMaxGraph(tab,idCapa,periodo,idComp,llamadaNetscope){

	// El parametro llamadaNetsope identifica si se debe hacer la llamada a control de trafico o no
	// Si no se pasa el parametro se hara la llamada. Si se pasa un 0 no se hara.
	llamadaNetscope = typeof(llamadaNetscope) != 'undefined' ? llamadaNetscope : '1';

	if (document.getElementById(idCapa)){

		idComp = idComp.indexOf("_") > 0 ? idComp : idComp+"_1";

		var url = "/funcionalidades/marketOverview/loadMinMaxGraph.php";
		var param = "tab="+tab+"&div="+idCapa+"&periodo="+periodo+"&idComp="+idComp;
		var capa = document.getElementById(idCapa);
		var ajax = nuevoAjax();

		ajax.open("POST", url, true);

		ajax.onreadystatechange = function() {

			if (ajax.readyState==4) {

				if (ajax.status==200) {		// OK
					capa.innerHTML = "";
					//capa.innerHTML = ajax.responseText;

					//Codigo para interpretar el javascript de la parte del Ajax
					var scs=ajax.responseText.extractScript();    //capturamos los scripts
					capa.innerHTML=ajax.responseText
					scs.evalScript();       //ahora si, comenzamos a interpretar todo
					try {
						if (llamadaNetscope == '1' ) netscopeWFG();		//llamamos a la funcion para control de trafico
					} catch (err) {
					//
					}

					// Calculamos la altura de las filas del grafico
					var listRows = document.getElementById('componentsTable').rows;
					var graphRows = document.getElementById('minMaxTable').rows;

					for (i=0; i<listRows.length; i++) {
						auxId = listRows[i].id.replace("_L","_R");

						for (j=0; j<graphRows.length; j++) {
							if (graphRows[j].id == auxId) {
								graphRows[j].style.height = listRows[i].style.height;
							}
						}
					}

				} else {
					if (ajax.status==404) {	// Pagina no encontrada
						capa.innerHTML = "No se pueden cargar los datos";
					} else {						// Resto de errores
						capa.innerHTML = "Error:" + ajax.status;
					}
				}
			}

			if (ajax.readyState==1) {
				capa.innerHTML = "<div style='height:100px; width:95%;display:table;'><div style='display:table-cell; vertical-align:middle; text-align:center'><img src='/images/loader.gif' width='32' height='32' /></div></div>";
			}
		}

		ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		ajax.setRequestHeader("Content-length", param.length);
		ajax.setRequestHeader("Connection", "close");
		ajax.send(param);
	}
}

// Carga por AJAX los datos del componente seleccionado de Market Overview
function loadSelectedIndex(tab,indice,idCapa,idComp,llamadaNetscope){

	idComp = idComp.indexOf("_") > 0 ? idComp : idComp+"_2";

	var url = "/funcionalidades/marketOverview/loadSheetComponent.php";
	var param = "tab="+tab+"&idIndice="+indice+"&idComp="+idComp;

	getContenidoUrl('',url,param,idCapa,llamadaNetscope);
}

// Carga por AJAX los datos del componente seleccionado y refresca el grafico flex y los tops de Market Overview
function changeSelectedComponent(tab,indice,isin,plaza,nombre,tipoActivo,idCapa,idCapaComponents,idMenuComponents,paramPaginacion,paramTemplates,idComp,calidad,isinIndice) {
	switch(tipoActivo) {
		case "indices":
			// Carga los datos de cotizacion del indice
			loadSelectedIndex(tab,indice,idCapa,idComp);
			// Carga los componentes del indice
			loadSubComponentsTable('li_quotes',idCapaComponents,idMenuComponents,indice,isin,paramPaginacion,paramTemplates,idComp,'0');
			// Cambia la grafica flex
			changeComponentContents (isin, nombre, tipoActivo, plaza, indice, calidad, isinIndice);
			break;
		case "divisas":
			// Carga los datos de cotizacion de la divisa
			loadSelectedIndex(tab,indice,idCapa,idComp);
			// Cambia la grafica flex
			changeComponentContents (isin, nombre, tipoActivo, plaza, indice, calidad, isinIndice);
			break;
		case "tiposinteres":
			// Carga los datos de cotizacion del tipo de interes
			loadSelectedIndex(tab,indice,idCapa,idComp);
			// Cambia la grafica flex
			changeComponentContents (isin, nombre, tipoActivo, plaza, indice, calidad, isinIndice);
			break;
		case "commodities":
			// Carga los datos de cotizacion de la materia prima
			loadSelectedIndex(tab,indice,idCapa,idComp);
			// Cambia la grafica flex
			changeComponentContents (isin, nombre, tipoActivo, plaza, indice, calidad, isinIndice);
			break;
	}
}

// Carga por AJAX el listado de componentes de indices de Market Overview
function loadSubComponentsTable(tab,idCapa,idMenu,indice,isin,paramPaginacion,paramTemplates,idComp,llamadaNetscope){

	var noComposicion = "ftse100:sp500:smi:mib30:tecdax:latibex:bovespa:nasdaq_composite:nikkei225";
	var txt=new RegExp(indice,"gi");
	var existe = noComposicion.match(txt);

	idComp = idComp.indexOf("_") > 0 ? idComp : idComp+"_3";

	if(existe) {
		document.getElementById(idCapa).style.display = "none";
	} else {
		document.getElementById(idCapa).style.display = "block";

		var url = "/funcionalidades/marketOverview/loadSubComponentsTable.php";
		var param = "tabComposition="+tab+"&indice="+indice+"&isin="+isin+"&divComposition="+idCapa+"&idMenu="+idMenu+"&idComp="+idComp+paramTemplates+paramPaginacion;

		getContenidoUrl('',url,param,idCapa,llamadaNetscope);
	}
}
