//*************************************************************************************************
//*************************************************************************************************
//*************************************************************************************************
//                                     INIZIO GESTIONE SORT
//*************************************************************************************************
//*************************************************************************************************
//*************************************************************************************************



			var oldSortedColPos = -1;
			var oldSortOrder = '';


			//-----------------------------------------------
		
			function parseDate(/*string*/ dateStr) {
				var retVal = null;

				var index1 = dateStr.indexOf('/');
				var index2 = dateStr.lastIndexOf('/');

				if (index1 != index2) {
					var date = dateStr.substring(0, index1);
					var month = dateStr.substring(index1 + 1, index2);
					var year = dateStr.substring(index2 + 1);
					retVal = new Date();
					retVal.setDate(date);
					retVal.setMonth(month);
					retVal.setFullYear(year);
				}
				
				return retVal;
			}

			//-----------------------------------------------

			/**
			 * 
			 * @param {Object} d1str la prima data
			 * @param {Object} d2str la seconda data1Str
			 * @return true d1str e' strettamente minore di d2str, intese come date e non come stringhe
			 */
			function cfrDates(/*string*/d1str, /*string*/d2str) {
				var d1 = new Date();
				var d2 = new Date();
				
				d1 = parseDate(d1str);
				d2 = parseDate(d2str);
				
				if (d1!= null && d2 != null) {
					return d1 < d2;
				} else {
					//almeno una data non e' valida: le tratto come stringhe
					return d1str < d2str;
				}
				
			}
			
			//------------------------------------------------------------------------------------

			function findSortColumnPos(/*Element[]*/ rowList, /*string*/ headId) {
				
				for (var rowCtr=0; rowCtr < rowList.length; rowCtr++) {
					var curRow = rowList[rowCtr];

					//if (curRow.hasAttribute('heading')) { //non supportato da MSIE (provato con il 7)

						var headingVal = curRow.getAttribute ('Header');
						//alert(headingVal);
						if (headingVal=='True') {
							//Trovata: e' la riga con gli headId
							var tdList = curRow.getElementsByTagName('td');
							for (var tdCtr=0; tdCtr < tdList.length; tdCtr++) {
								var curTd = tdList[tdCtr];
								if (curTd.getAttribute('HeadId') == headId) {
									return tdCtr;
								}
							}
							
							return -1; //not found!
							
						} 
					//}
					
				}
				return -1; //not found!
				
			}
			
			//------------------------------------------------------------------------------------
			
			function sortRows(/*Array*/ rowArr, /*int*/ sortColPos, /*string*/dataType, /*string*/sortOrder, /*string[][]*/stylesArr) {
				
				
				//Chiedo scusa per l'algoritmo O(n^2) :-)
				//TODO: c'era una minima ottimizzazione dei cicli... non mi ricordo... :-)
				var arrLen = rowArr.length;
				for (var i=0; i<arrLen-1; i++) {
					for (var j=0; j<arrLen-1; j++) {
						var firstElToCompare = rowArr[j].getElementsByTagName('td')[sortColPos].childNodes[0].innerHTML;
						var secondElToCompare = rowArr[j+1].getElementsByTagName('td')[sortColPos].childNodes[0].innerHTML;
						
						var mustSwap = false;
						
						
						//considero sortOrder='ASC', per default.
						if (secondElToCompare=='' || secondElToCompare==' ' || secondElToCompare=='&nbsp;') {
							//le celle vuote sono minori di qualsiasi cosa, indipendentemente dal tipo
						    mustSwap = true;
							//alert('ahah!');
						} else {
    						switch (dataType) {
    							case 'Number':
    								mustSwap = parseFloat(firstElToCompare) > parseFloat(secondElToCompare);  	
    								break;
    							case 'String':
    								mustSwap = firstElToCompare > secondElToCompare;
    								break;
    							case 'Date':
    								mustSwap = !cfrDates(firstElToCompare, secondElToCompare)
    								break;
    							default:
    								//come String
    								mustSwap = firstElToCompare > secondElToCompare;  	
    							
    						}
						}
						
						
						if (sortOrder == 'DESC') {
							mustSwap = !mustSwap;
						}
						
						if (mustSwap) {
							var tempEl = rowArr[j]; 

							rowArr[j] = rowArr[j+1];
							rowArr[j+1] = tempEl;
							
							tempEl = null;
						}
					}					
				}
				
				//ora devo ripristinare gli stili corretti
				for (var i=0; i<arrLen; i++) {
					var curRow = rowArr[i];
					var tdList = curRow.getElementsByTagName('td');
					var tdLen = tdList.length; 
					for (var j=0; j < tdLen; j++) {
						var curTd = tdList[j];
						//curTd.setAttribute('class',stylesArr[i%2][j]);
						curTd.className = stylesArr[i%2][j];
						
						//curTd.innerHTML += '(' + stylesArr[i%2][j] + ')';
					} 
				}
				
				return rowArr;
				
			}

			//------------------------------------------------------------------------------------
			
			function appendChildren(/*Element*/fatherEl, /*Element[]*/ childArr) {
				for (var i=0; i<childArr.length; i++) {
					fatherEl.appendChild(childArr[i]);
				}
			}
			
			//------------------------------------------------------------------------------------
			
			function removeSortIndicatorFromCol(/*Element[]*/rowList, /*int*/oldSortedColPos){
				//1. identifico la cella: sta in tr fixex="true" e heading="true", nella pos newSortedColPos
				for (var rowCtr=0; rowCtr < rowList.length; rowCtr++) {
					var curRow = rowList[rowCtr];

					//if (curRow.hasAttribute('heading')) { //non supportato da MSIE (provato con il 7)

						var headingVal = curRow.getAttribute ('Header');
						//alert(headingVal);
						if (headingVal=='True') {
							//Trovata: e' la riga con gli headId
								var curTd = curRow.getElementsByTagName('td')[oldSortedColPos];
									//trovato
									//2. tolgo lo span
									var sortIndicator = null;
									
									var childrenSpanList = curTd.getElementsByTagName('span');
									for (var i=0; i<childrenSpanList.length; i++) {
										var curSpan = childrenSpanList[i];
										var curSpanId = curSpan.getAttribute("id");
										if (curSpanId=='sortIndicatorSpan') {
											sortIndicator = curSpan; 
										} 
									}
									
									if (sortIndicator != null) {
										curTd.removeChild(sortIndicator);
									}
							
						} 
					//}
					
				}


			}

			//------------------------------------------------------------------------------------
			
			function addSortIndicatorToCol(/*Element[]*/rowList, /*int*/newSortedColPos, /*string*/newSortOrder){
				
				var cx = 0;
				//1. identifico la cella: sta in tr fixex="true" e heading="true", nella pos newSortedColPos
				for (var rowCtr=0; rowCtr < rowList.length; rowCtr++) {
					var curRow = rowList[rowCtr];

					//if (curRow.hasAttribute('heading')) { //non supportato da MSIE (provato con il 7)

						var headingVal = curRow.getAttribute ('Header');
						//alert(headingVal);
						if (headingVal=='True') {
							//Trovata: e' la riga con gli headId
								var curTd = curRow.getElementsByTagName('td')[newSortedColPos];
																	
									//trovato
									//2. metto uno span con indicatore up o down a seconda di newSortOrder
									var sortIndicator = document.createElement('span');
									sortIndicator.setAttribute('id', 'sortIndicatorSpan');
									var imgTitle = newSortOrder=='ASC' ? 'ordinamento ascendente' : 'ordinamento discendente';
									sortIndicator.innerHTML = '<img src="/xp/FinanzaMercatiUser/img/sort_' + newSortOrder + '.gif" title="' + imgTitle + '"/>'; 
									// aggiunta script sitecensus (BOL)
									
									  if (cx == 0) {
											var loca = escape(window.parent.location.href);
											var myRnd = Math.round(Math.random() * 1000);
											var sitecensusScript = '<img src="//secure-it.imrworldwide.com/cgi-bin/m?ci=ilsole-it&cg=0&si=' + loca + '&xdummyx=' + myRnd + '" alt=""/>';
											sortIndicator.innerHTML = sortIndicator.innerHTML + sitecensusScript;
										}
										cx++;
									
									curTd.appendChild(sortIndicator);
						} 
					//}
					
				}
				
			}

			//------------------------------------------------------------------------------------
			
			/**
			 * da qui comincia tutto
			 * @param {string} tableId
			 * @param {int} headId
			 * @param {string} dataType
			 */
			function SortTableStatic(/*string*/tableId, /*int*/headId, /*string*/dataType) {
				var tableEl = document.getElementById(tableId);
				var tbodyEl = tableEl.getElementsByTagName('tbody')[0];
				var rowList = tableEl.getElementsByTagName('tr');
				
				var newSortedColPos = findSortColumnPos(rowList, headId);
				
				
				var newSortOrder = oldSortOrder=='ASC' && oldSortedColPos == newSortedColPos ? 'DESC' : 'ASC'; //NB: funziona anche la prima volta, quanto oldSortOrder e' vuoto
				
				
				if (oldSortedColPos> -1) {
					removeSortIndicatorFromCol(rowList,oldSortedColPos);					
				}
				
				addSortIndicatorToCol(rowList, newSortedColPos, newSortOrder);
				
				oldSortOrder = newSortOrder;
				oldSortedColPos = newSortedColPos;
				
				//preparo 3 Array che riempiro' opportunamente, da cui poi attingero' per ripopolare la tabella
				var headerRows = [];
				var bodyRows = [];
				var footerRows = [];
				
				//REQUISITO FONDAMENTALE: ALL'INIZIO CI SONO TR "FIXED", POI NORMALI E POI (FACOLTATIVAMENTE) ANCORA FIXED
				
				var curRowPos = 0;
				var curRow = rowList[curRowPos];
				 
				//FIXED IN ALTO
				while (curRow.getAttribute('Fixed')=='True') {
					headerRows[headerRows.length] = curRow;
					curRow = rowList[++curRowPos]; // :-)
				}


				//contatore che uso per guardare gli stili delle prime due righe di dati
				var styleCtr = 0;
				var stylesArr = [];
				
				//BODY
				while (curRowPos < rowList.length && curRow.getAttribute('Fixed')!='True') {
					bodyRows[bodyRows.length] = curRow;
					
					if (styleCtr < 2) {
						//si tratta di una dele prime due righe di dati: memorizzo gli stili delle varie colonne
						var tdList = curRow.getElementsByTagName('td');
						
						stylesArr[styleCtr] = new Array(tdList.length);
														
						
						for (var tdCtr = 0; tdCtr < tdList.length; tdCtr++) {
							var curTd = tdList[tdCtr];
							stylesArr[styleCtr][tdCtr] = curTd.className; 
						}
					}
					styleCtr ++;


					curRowPos ++;
					if (curRowPos < rowList.length) {
						curRow = rowList[curRowPos];						
					}
				}
				
				
				
				//FIXED IN BASSO (se ci sono)
				while (curRowPos < rowList.length && curRow.getAttribute('Fixed')=='True') {
					footerRows[footerRows.length] = curRow;
					curRowPos++;
					if (curRowPos < rowList.length) {
						curRow = rowList[curRowPos];						
					}
				}
				
				
				//svuotamento tabella
				tableEl.removeChild(tbodyEl);
				
				tbodyEl = document.createElement('tbody');
				
				
				tableEl.appendChild(tbodyEl);
				
				
				appendChildren(tbodyEl, headerRows);
				appendChildren(tbodyEl, sortRows(bodyRows, newSortedColPos, dataType, newSortOrder, stylesArr));
				appendChildren(tbodyEl, footerRows);
				
				
			}

			//------------------------------------------------------------------------------------









//*************************************************************************************************
//*************************************************************************************************
//*************************************************************************************************
//                                     FINE GESTIONE SORT
//*************************************************************************************************
//*************************************************************************************************
//*************************************************************************************************






/**/
	var nb = "<img src=	\"/xp/FinanzaMercatiUser/img/transp.gif\" border=\"0\" width=\"6px\"/>";
/**/
/**/


var browser = navigator.appName;
var is_major = parseInt(navigator.appVersion);
var is_6up = (is_major >= 5);
var L2='';
var L1='';
var L3='';
var LDett2;
var LDett1;
var LDett3;
var cell;
var quote


//LoA 26/10/2006
//necessaria per portafoglio3, ma dichiarata qui per evitare problemi (vedi commento in portfolio3.js)
var IsAppletReady=false;


//-----------------------------------------------------------------------------

function CallURL(mioURL, p_Rc) {
	window.location.href=ReplaceAmp(mioURL);
} 

//-----------------------------------------------------------------------------

function creaParamSH_RT (mercato) {
	
	var rt;
	
	switch (mercato) {
		case "Amex":
			rt = "False";
			break;
		case "Amsterdam":
			rt = "False";
			break;
		case "Milano":
			rt = "False";
			break;
		case "Bruxelles":
			rt = "False";
			break;
		case "Francof. Floor":
		case "Francof. Xetra":
			rt = "False";
			break;
		case "Lisbona":
			rt = "False";
			break;
		case "Londra":
			rt = "False";
			break;
		case "Nasdaq":
			rt = "False";
			break;
		case "Nyse":
			rt = "False";
			break;
		case "Parigi":
			rt = "False";
			break;
		case "Spagna":
			rt = "False";
			break;
		case "Zurigo":
			rt = "False";
			break;
		case "Stoccolma":
			rt = "False";
			break;
		case "Copenhagen":
			rt = "False";
			break;
		case "Helsinki":
			//rt = "True";
			//Helsinki e' sempre ritardato, ma la ricerca si deve comportare come se fosse in real time, perche' non bisogna aggiungere il "!"
			rt = "True";
			break;
		default:
			//non dovrebbe arrivarci
	}


	return rt;
}

function CreaParamRicercaVeloce(){
	
    var query='';
    var miastringa = document.RicVeloce.SH_PAR1.options[document.RicVeloce.SH_PAR1.selectedIndex].value;
    if (miastringa.indexOf('War')==-1 && miastringa.indexOf('Milano')==-1) {
    	document.RicVeloce.page.value = 'RicercaRisultatoAzioniEstere';
    } else {
    	document.RicVeloce.page.value = 'RicercaRisultatoAzioni';
    }
    
    document.RicVeloce.SH_PAR1.value = miastringa;
    if (miastringa.indexOf('War')==-1) {
    	query += 'F95000="' +miastringa+ '"';
    } else {
    	query += 'F40001="' +miastringa+ '"';
    }
    
    miastringa = Trim(document.RicVeloce.SH_PAR2.value);
    miastringa = miastringa.replace(/"/g,'')
    document.RicVeloce.SH_PAR2.value = miastringa;
    
    if (miastringa != ''){
        if(document.forms["RicVeloce"].PAR[0].checked) query += ' AND (("' +miastringa+ '" is substring of F10011) OR ("' +miastringa+ '" is substring of F10014))';
        if(document.forms["RicVeloce"].PAR[1].checked) query += ' AND "' +miastringa+ '" is substring of F10013';
    }

    document.forms["RicVeloce"].SH_RT.value = creaParamSH_RT(document.RicVeloce.SH_PAR1.options[document.RicVeloce.SH_PAR1.selectedIndex].value); 

    document.forms["RicVeloce"].SH_QUERY.value = query; 
	 
}

function CreaRedirect(mioURL){
    mioURL = mioURL.replace(/amp;/g,'');
    if (browser=='Netscape') window.location.href=mioURL;
    else window.location=mioURL;
}

function WriteMsg(){
    var miomsg = '';
    if (browser=='Netscape' && !is_6up) {
        miomsg += '<DIV align="center" class="xpTitR">';
        miomsg += '<b> ... operazione effettuata con successo </b>';
        miomsg += '</DIV>';
	var d = document.layers["msg"].document.layers["msg"].document; 
	d.write(miomsg);
  	d.close();
    }
    else {
        miomsg += '<b> ... operazione effettuata con successo </b>';
        if (browser=='Netscape')
            document.getElementById("msg").innerHTML = miomsg;
        else
            document.all("msg").innerHTML = miomsg;
    }
}

//utilizzate nel portfolio e nel LinkDettaglio.xsl

function getFullData()
{
   d = new Date();
   var g = d.getDate();
   var m = d.getMonth()+1;
   var a = d.getFullYear();
   if (g<=9)
      g='0'+g;
   if (m<=9)
      m='0'+m;
   date = g+'/'+m+'/'+a;
   return(date);
}
	
function getDay()
{
   d = new Date();
   var g = d.getDate();
   if (g<=9)
      g='0'+g;
   return(g);
}
		
function getMonth()
{
   d = new Date();
   var m = d.getMonth()+1;
   if (m<=9)
      m='0'+m;
   return(m);
}
		
function getYear()
{
   d = new Date();
   var a = d.getFullYear();
   return(a);
}

function Trim(stringa) 
{ 
   re=/\s+$|^\s+/g; 
   return stringa.replace(re,""); 

} 

//-----------------------------------------------------------------------------

var FINDQSP_SINGLE = 0;
var FINDQSP_MULTIPLE = 1;

//-----------------------------------------------------------------------------

function QueryString(param)
{
	return findQueryStringParam(param, FINDQSP_SINGLE);
}

//-----------------------------------------------------------------------------

function QueryStringMultVal(param)
{
	return findQueryStringParam(param, FINDQSP_MULTIPLE);

}

//-----------------------------------------------------------------------------

function findQueryStringParam(param, typeOfSearch)
{

		var retArr;
		
		if (typeOfSearch == FINDQSP_MULTIPLE) {
			retArr = new Array();
		}	
	
    var loca = document.location.href;
    
    //se c'e' almeno un parametro come quello richiesto...
    if(loca.indexOf('?' + param + '=')>-1 || loca.indexOf('&' + param + '=')>-1)
    {

		//LoA 11/01/2006
		//se l'URL finiva con #, perche' arrivavo da un link tipo <a href="#" onclick="...,
		//devo evitare di includere il #
		if (loca.charAt(loca.length-1)=='#') loca = loca.substring(0,loca.length-1);
		
			var qString = loca.split('?');
      var keyVal = qString[1].split('&');
      
      //ora in keyVal ho tutti i parametri con il loro valore
      
      for(var i=0;i<keyVal.length;i++)
      {
        if(keyVal[i].indexOf(param + '=')==0)
        {
			
  					var val = keyVal[i].split('=');
  					
  					if (typeOfSearch == FINDQSP_MULTIPLE) {
  						retArr[retArr.length] = val[1];
  					} else {
  						return val[1];
  					}
				}
      }

		  if (typeOfSearch == FINDQSP_MULTIPLE) {
			  return retArr;
		  } else {
			  return;
      }

    }
    else
    {
      return;
    }
}

//-----------------------------------------------------------------------------

function ReplaceAmp(stringa)
{
	//********NOTA*********//
	// Per fare un replace di una stringa, in condizioni normali basterebbe:
	// return stringa.replace(/amp;/g,'');
	// Purtroppo mozilla non e' d'accordo e la funzione replace non funziona se
	// chiamata da un'applet.
	// Questa funzione fa un replace in altro modo.
	
	var ind = stringa.indexOf('amp;');
	var strApp='';
	
	if (ind!=-1)
	{
		strApp= stringa.substring(0,ind)+stringa.substring(ind+4);
		return ReplaceAmp(strApp);
	}
	else
	{
		return stringa;
	}
}

//-----------------------------------------------------------------------------

function EscapeApice(stringa)
{
	return stringa.replace(/'/g,'\\\'');
}

//-----------------------------------------------------------------------------

function ReplaceReturn(stringa)
{
	return stringa.replace(/\r/g,'').replace(/\n/g,'');
}

//-----------------------------------------------------------------------------

function ReloadPage(href)
{
	var NewURL='';
	var IndexOfCanc='';
	
	IndexOfCanc=href.indexOf('#');
	if(IndexOfCanc!=-1)
		NewURL=href.substr(0,IndexOfCanc);
	else
		NewURL=href;
	
	document.location.href=NewURL;
}

function createCookie(name,value,days)
{
	if (days)
	{
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name)
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++)
	{
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name)
{
	createCookie(name,"",-1);
}

function isIn (val, arr) {
	for(var i=0;i<arr.length;i++) {
		if (arr[i]==val) return true;
	}
	return false;
}

function replicateParamsExcept4(params2Exclude) {
	var loca = document.location.href;
	var retVal = "";


	var qString = loca.split('?');
	
	//in keyVal ho la parte dopo il "?"
	var keyVal = qString[1].split('&');
	for(var i=0;i<keyVal.length;i++)
	{
	   if(!isIn(keyVal[i].substring(0,keyVal[i].indexOf('=')),params2Exclude))
	   {
				//var val = keyVal[i].split('=');
				//return val[1];
				retVal += "&" + keyVal[i]
	   }
	
	}
	return retVal;
}



function writeMenuSecLiv4Browser(arg,item,LDett1,LDett2) {
//Sembra impossibile, ma serve.
if (LDett2=='0') {
	LDett2='0';
}
		
		if (browser=='Netscape' && !is_6up){
			document.layers["dettaglioSecLiv_la"].layers["dettaglioSecLiv"].document.write('<span class="xpML2Sel">' + arg + '</span>');
			document.layers["dettaglioSecLiv_la"].layers["dettaglioSecLiv"].document.close();
		}
		else if (browser=='Netscape' && is_6up){
			document.getElementById('dettaglioSecLiv').innerHTML = arg;
			if ((item==('MenuDett'+LDett1))&& (LDett2!='')) {
				document.getElementById(''+item+'_'+LDett2).className='xpML2Sel';
				//eval(''+item+'_'+LDett2).className='xpML2Sel';
			}
		}
		else{
			document.all('dettaglioSecLiv').innerHTML = arg;
			if ((item==('MenuDett'+LDett1))&& (LDett2!='')) {
				eval(''+item+'_'+LDett2).className='xpML2Sel';
			}
		}
}

function writeMenuThirdLiv4Browser(arg,item,LDett1,LDett2,LDett3) {
		
	if (browser=='Netscape' && !is_6up){
	    document.layers["dettaglioTerzLiv_la"].layers["dettaglioTerzLiv"].document.write('<span class="xpML2Sel">' + arg + '</span>');
	    document.layers["dettaglioTerzLiv_la"].layers["dettaglioTerzLiv"].document.close();
	}
	else if (browser=='Netscape' && is_6up){
	    document.getElementById('dettaglioTerzLiv').innerHTML = arg ;
	    if ((item==('MenuDett'+LDett1+''+LDett2))&& (LDett3!='')) {
			document.getElementById(''+item+'_'+LDett3).className='xpML2Sel';
			//eval(''+item+'_'+LDett3).className='xpML2Sel';
		}
	}
	else{
	    document.all('dettaglioTerzLiv').innerHTML = arg;
	    if ((item==('MenuDett'+LDett1+''+LDett2))&& (LDett3!='')) {
			eval(''+item+'_'+LDett3).className='xpML2Sel';
		}
	}
}

/**
 * il valore "#" per il parametro pageName genera un comportamento diverso...
 *
 * esempio: genMenuItem ("Listino completo", "MenuDett1_1", "FTA_BreveTermineAzSottoEsameListino", "&amp;FILTER_VALUE=A",1,2,3,'');
 * esempio: genMenuItem ("Listino completo", "MenuDett1_1", "FTA_BreveTermineAzSottoEsameListino", "&amp;FILTER_VALUE=A",1,2,3,'Show1(\'MenuTransp\',\'\')');
 */
function genMenuItem (label, anchorName, pageName, additionalParameters, LDett1, LDett2, LDett3, mouseOverHandler, mouseClickHandler) {
	var retVal = '';

	retVal = '<a name="' + anchorName + '" id="' + anchorName + '" class="xpML2"';
	if (mouseOverHandler != '') {
		retVal += ' onMouseOver="' + mouseOverHandler + '"';
	}	

	if (mouseClickHandler != '') {
		retVal += ' onClick="' + mouseClickHandler + '"';
	}	

	if (pageName !='#') {
		retVal += ' href="/fcxp?page=' + pageName + additionalParameters + '&amp;L1=' + L1 + '&amp;L2=' + L2 + '&amp;L3=' + L3 + '&amp;LDett1=' + LDett1 + '&amp;LDett2=' + LDett2 + '&amp;LDett3=' + LDett3 + '">';
	} else {
		retVal += ' href="#">';
	}
	retVal += '&nbsp;' + label + '&nbsp;';
	retVal += '</a>';
	
	return retVal;

}


function cleanSecondLevel() {
		var arg = '<img src="/xp/FinanzaMercatiUser/img/transp.gif" border="0" width="100%" height="14px"/>'

		if (browser=='Netscape' && !is_6up){
			document.layers["dettaglioSecLiv_la"].layers["dettaglioSecLiv"].document.write(arg);
			document.layers["dettaglioSecLiv_la"].layers["dettaglioSecLiv"].document.close();
		}
		else if (browser=='Netscape' && is_6up){
			document.getElementById('dettaglioSecLiv').innerHTML = arg;
		}
		else{
			document.all('dettaglioSecLiv').innerHTML = arg;
		}

}

function cleanThirdLevel() {
		var arg = '<img src="/xp/FinanzaMercatiUser/img/transp.gif" border="0" width="100%" height="14px"/>'

		if (browser=='Netscape' && !is_6up){
			document.layers["dettaglioTerzLiv_la"].layers["dettaglioTerzLiv"].document.write(arg);
			document.layers["dettaglioTerzLiv_la"].layers["dettaglioTerzLiv"].document.close();
		}
		else if (browser=='Netscape' && is_6up){
			document.getElementById('dettaglioTerzLiv').innerHTML = arg;
		}
		else{
			document.all('dettaglioTerzLiv').innerHTML = arg;
		}

}

function unescapeAmp(str) {

	var re = new RegExp('&amp;','g')
	return str.replace(re,'&');
}

/* INIZIO Parametri per la gestione del Push INIZIO */

var PushIta = false;
var PushExpandi = false;
var PushRF = false;
var PushFutures = false;
var PushIndiciEsteri = false;
var PushIndiciEuro = false;
var PushIndiciUSA = false;
var PushIndiciItalia = false;
var PushBE = false;
var PushBEFrancoforte = false;
var PushBEParigi = false;
var PushBEAmsterdam = false;
var PushBEMadrid = false;
var PushBELisbona = false;
var PushBEBruxelles = false;
var PushBEHelsinki = false;
var PushBEStoccolma = false;
var PushBECopenhagen = false;
var PushBELondra = false;
var PushBEZurigo = false;
var PushBENasdaq = false;
var PushBENyse = false;
var PushBEAmex = false;

/*Nuovi Push*/
var PushFondi = false;
var PushValute = false;
var PushCommodities = false;
var PushListinoPersonale = false;
var PushIndiciPrincipali = false;


/* FINE  Parametri per la gestione del Push  FINE */

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    //###################################################################################
    //###################################################################################
    //###################################################################################
    //        GESTIONE PUSH - INIZIO
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    // HashMap
    //TODO:spostare in script.js
    function HashMap() {
      this.data = {};
    }
    //.......................................................
    HashMap.prototype.get = function (key) {
      return this.data[key];
    }
    //.......................................................
    HashMap.prototype.keys = function () {
      var retVal = [];
      for(var key in this.data) {
         retVal[retVal.length] = key;
      }
      return retVal;
    }
    //.......................................................
    HashMap.prototype.put = function (key, obj) {
      this.data[key] = obj;
    }

    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    var tableFieldInfoMap = new HashMap();
    var tableItemInfoMap = new HashMap();

    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    function fillPushItems() {


        var pushItemsVal = '';
        var pushItemsToAdd = tableItemInfoMap.keys(); //Array
        var len = pushItemsToAdd.length;
        for (var i=0; i<len; i++) {
            pushItemsVal += pushItemsToAdd[i];
            if (i < len-1) {
                pushItemsVal += ';';
            }
        }

        //DEBUG
        //alert(pushItemsVal);

        push_items[push_items.length] = pushItemsVal;
    }

    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    function fillPushColumns() {

        var pushColumnsVal = '';
        var pushColumnsToAdd = tableFieldInfoMap.keys(); //Array
        var len = pushColumnsToAdd.length;
        for (var i=0; i<len; i++) {
            pushColumnsVal += pushColumnsToAdd[i];
            if (i < len-1) {
                pushColumnsVal += ',';
            }
        }

        //DEBUG
        //alert(pushColumnsVal);

        push_columns[push_columns.length] = pushColumnsVal;

    }

    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


    /**
     * ogni elemento dell'array fieldInfoArr contiene un array con tre campi:
     * 0: prefisso
     * 1: field
     * 2: array di nomi
     * esempio:
     * fieldInfoArr[0] = ['Prefix','10061',['Var','Freccia']];
     * fieldInfoArr[1] = ['Prefix','10015',['Ultimo']];
     */
    function storeFieldInfo(fieldInfoArr) {
        //attenzione: potrei aver gia' salvato info per il field xxx, relative pero' ad un altro prefisso
        //debugger;
        for (var i=0; i<fieldInfoArr.length; i++) {
            var prefix = fieldInfoArr[i][0];
            var fieldCode = fieldInfoArr[i][1];
            var fieldNames = fieldInfoArr[i][2];

            var mapObj = tableFieldInfoMap.get(fieldCode);
            if (mapObj) {
                //c'e' gia' qualcosa, devo aggiungere.
                //mapObj e' un Array di coppie prefix - nameArray
                mapObj[mapObj.length] = [prefix, fieldNames];
                tableFieldInfoMap.put(fieldCode, mapObj);

            } else {
                tableFieldInfoMap.put(fieldCode, [[prefix, fieldNames]]);
            }
        }
        //debugger;

    }

    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    //var itemInfoArr = [];
    //itemInfoArr[0] = ['Prefix','AL.MI','xpC1'];
    //itemInfoArr[1] = ['Prefix','AUTO.MI','xpC1'];
    //storeItemInfo(itemInfoArr);
    function storeItemInfo(itemInfoArr) {
        //attenzione: potrei aver gia' salvato info per il'item xxx, relative pero' ad un altro prefisso
        for (var i=0; i<itemInfoArr.length; i++) {
            var prefix = itemInfoArr[i][0];
            var itemName = itemInfoArr[i][1];
            var itemTextClass = itemInfoArr[i][2];
            var itemImageClass = itemInfoArr[i][3];

            var mapObj = tableItemInfoMap.get(itemName);
            if (mapObj) {
                //c'e' gia' qualcosa, devo aggiungere.
                //mapObj e' un Array di coppie prefix - class
                mapObj[mapObj.length] = [prefix, itemTextClass, itemImageClass];
                tableItemInfoMap.put(itemName, mapObj);
            } else {
                tableItemInfoMap.put(itemName, [[prefix, itemTextClass, itemImageClass]]);
            }
        }

    }

    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    function decodeValue(value, fieldNum, fieldName) {
        var retVal = value;
        switch (fieldNum) {
            case '10061':
            case '20007':
            case '20073':
                if (fieldName.toUpperCase().indexOf('FRECCIA')>-1) {
                    retVal = decodeFreccia (value);
                }
                break;
            case '10120':
                retVal = decodeFaseImg(value);
                break;
            case '20490':
                retVal = decodeFaseIndiciImg(value);
                break;
            case '57304':
                //non dovrebbe esserci nelle tabelle, per ora
                retVal = decodeSegmento(value);
                break;
            default:
                //NOP
        }

        if (retVal == '') {
            retVal = '-';
        }

        return retVal;

    }

    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    function getItemClass(item, prefix, textTypeFlag) { //NEW
        var retVal = '';
        var itemInfo = tableItemInfoMap.get(item);

        if (itemInfo) {
            var len = itemInfo.length;
            for (var ctr=0; ctr<len; ctr++) {
                if (itemInfo[ctr][0]==prefix) {
                    //trovato
                    if (textTypeFlag.toUpperCase() == 'TRUE') {
                        return itemInfo[ctr][1];
                    } else {
                        return itemInfo[ctr][2];
                    }
                }
            }
        }

        return retVal;

    }

    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    function decodeFaseImg (upvalue) {

        if (sPageName.indexOf('Serale')==-1) {
            switch (upvalue) {
                case "ACH" : {upvalue ='<img border="0" src="/xp/FinanzaMercatiUser/img/b_aperta.gif" alt="Asta chiusura" title="Asta chiusura"/>';		break;}
                case "CAN" : {upvalue ='<img border="0" src="/xp/FinanzaMercatiUser/img/b_aperta.gif" alt="Cancellazione contratti" title="Cancellazione contratti"/>';	break;}
                case "CHI" : {upvalue ='<img border="0" src="/xp/FinanzaMercatiUser/img/b_chiusa.gif" alt="Chiusura" title="Chiusura"/>';			break;}
                case "END" : {upvalue ='<img border="0" src="/xp/FinanzaMercatiUser/img/b_chiusa.gif" alt="Fine contrattazioni" title="Fine contrattazioni"/>';		break;}
                case "INI" : {upvalue ='<img border="0" src="/xp/FinanzaMercatiUser/img/b_aperta.gif" alt="Inizio Servizio" title="Inizio Servizio"/>';		break;}
                case "MGT" : {upvalue ='<img border="0" src="/xp/FinanzaMercatiUser/img/b_chiusa.gif" alt="Borsa Chiusa" title="Borsa Chiusa"/>';			break;}
                case "NEG" : {upvalue ='<img border="0" src="/xp/FinanzaMercatiUser/img/b_aperta.gif" alt="Negoziazione" title="Negoziazione"/>';			break;}
                case "PCH" : {upvalue ='<img border="0" src="/xp/FinanzaMercatiUser/img/b_aperta.gif" alt="Pre-asta chiusura" title="Pre-asta chiusura"/>';		break;}
                case "PRE" : {upvalue ='<img border="0" src="/xp/FinanzaMercatiUser/img/b_aperta.gif" alt="Pre-asta apertura" title="Pre-asta apertura"/>';		break;}
                case "TAH" : {upvalue ='<img border="0" src="/xp/FinanzaMercatiUser/img/b_chiusa.gif" alt="Borsa Chiusa" title="Borsa Chiusa"/>';		break;}
                case "TER" : {upvalue ='<img border="0" src="/xp/FinanzaMercatiUser/img/b_chiusa.gif" alt="Borsa Chiusa" title="Borsa Chiusa"/>';			break;}
                case "VAL" : {upvalue ='<img border="0" src="/xp/FinanzaMercatiUser/img/b_aperta.gif" alt="Validazione" title="Validazione"/>';			break;}
                case "VCH" : {upvalue ='<img border="0" src="/xp/FinanzaMercatiUser/img/b_aperta.gif" alt="Validazione chiusura" title="Validazione chiusura"/>';		break;}
                default	: {upvalue ='<img border="0" src="/xp/FinanzaMercatiUser/img/nd.gif" alt="Fase di mercato non disponibile" title="Fase di mercato non disponibile"/>';	break;}
            }
        } else {
            switch (upvalue) {
                case "ACH" : {upvalue ='<img border="0" src="/xp/FinanzaMercatiUser/img/b_chiusa.gif" alt="Borsa Chiusa" title="Borsa Chiusa"/>';		break;}
                case "CAN" : {upvalue ='<img border="0" src="/xp/FinanzaMercatiUser/img/b_chiusa.gif" alt="Borsa Chiusa" title="Borsa Chiusa"/>';	break;}
                case "CHI" : {upvalue ='<img border="0" src="/xp/FinanzaMercatiUser/img/b_chiusa.gif" alt="Borsa Chiusa" title="Borsa Chiusa"/>';			break;}
                case "END" : {upvalue ='<img border="0" src="/xp/FinanzaMercatiUser/img/b_chiusa.gif" alt="Borsa Chiusa" title="Borsa Chiusa"/>';		break;}
                case "INI" : {upvalue ='<img border="0" src="/xp/FinanzaMercatiUser/img/b_chiusa.gif" alt="Borsa Chiusa" title="Borsa Chiusa"/>';		break;}
                case "MGT" : {upvalue ='<img border="0" src="/xp/FinanzaMercatiUser/img/b_chiusa.gif" alt="Borsa Chiusa" title="Borsa Chiusa"/>';			break;}
                case "NEG" : {upvalue ='<img border="0" src="/xp/FinanzaMercatiUser/img/b_chiusa.gif" alt="Borsa Chiusa" title="Borsa Chiusa"/>';			break;}
                case "PCH" : {upvalue ='<img border="0" src="/xp/FinanzaMercatiUser/img/b_chiusa.gif" alt="Borsa Chiusa" title="Borsa Chiusa"/>';		break;}
                case "PRE" : {upvalue ='<img border="0" src="/xp/FinanzaMercatiUser/img/b_chiusa.gif" alt="Borsa Chiusa" title="Borsa Chiusa"/>';		break;}
                case "TAH" : {upvalue ='<img border="0" src="/xp/FinanzaMercatiUser/img/b_aperta.gif" alt="Trading After Hours" title="Trading After Hours"/>';		break;}
                case "TER" : {upvalue ='<img border="0" src="/xp/FinanzaMercatiUser/img/b_chiusa.gif" alt="Borsa Chiusa" title="Borsa Chiusa"/>';			break;}
                case "VAL" : {upvalue ='<img border="0" src="/xp/FinanzaMercatiUser/img/b_chiusa.gif" alt="Borsa Chiusa" title="Borsa Chiusa"/>';			break;}
                case "VCH" : {upvalue ='<img border="0" src="/xp/FinanzaMercatiUser/img/b_chiusa.gif" alt="Borsa Chiusa" title="Borsa Chiusa"/>';		break;}
                default	: {upvalue ='<img border="0" src="/xp/FinanzaMercatiUser/img/nd.gif" alt="Fase di mercato non disponibile" title="Fase di mercato non disponibile"/>';	break;}
            }
        }

        return upvalue;
    }

    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    function decodeFreccia (value) {
        var retVal = '';
        if (value == '-' || value == '') {
            retVal = '-';
        }
        else if (eval(value) == '0') {
            retVal = '<img border="0" src="/xp/FinanzaMercatiUser/img/pari.gif"/>';
        }
        else if (value.match(/-/g)) {
            retVal = '<img border="0" src="/xp/FinanzaMercatiUser/img/giu.gif"/>';
        }
        else {
            retVal = '<img border="0" src="/xp/FinanzaMercatiUser/img/su.gif"/>';
        }

        return retVal;
    }

    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    function decodeFrecciaBig (upvalue) {
        var retVal = '';
        if (upvalue == '-' || upvalue == '') {
            retVal = '-';
        }
        else if (eval(upvalue) == '0') {
            retVal = '<img border="0" src="/xp/FinanzaMercatiUser/img/pari_grande.gif" align="absmiddle"/>';
        }
        else if (upvalue.match(/-/g)) {
            retVal = '<img border="0" src="/xp/FinanzaMercatiUser/img/giu_grande.gif" align="absmiddle"/>';
        }
        else {
            retVal = '<img border="0" src="/xp/FinanzaMercatiUser/img/su_grande.gif" align="absmiddle"/>';
        }
        return retVal;
    }

    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    function decodeFaseLabel (upvalue) {
        if (sPageName.indexOf('Serale')==-1)
        {

            switch (upvalue) {
                case "ACH" : {upvalue ="Asta chiusura";				break;}
                case "CAN" : {upvalue ="Cancellazione contratti";	break;}
                case "CHI" : {upvalue ="Chiusura";					break;}
                case "END" : {upvalue ="Fine contrattazioni";		break;}
                case "INI" : {upvalue ="Inizio Servizio";			break;}
                case "MGT" : {upvalue ="Borsa Chiusa";				break;}
                case "NEG" : {upvalue ="Negoziazione";				break;}
                case "PCH" : {upvalue ="Pre-asta chiusura";			break;}
                case "PRE" : {upvalue ="Pre-asta apertura";			break;}
                case "TAH" : {upvalue ="Borsa Chiusa";				break;}
                case "TER" : {upvalue ="Borsa Chiusa";				break;}
                case "VAL" : {upvalue ="Validazione";				break;}
                case "VCH" : {upvalue ="Validazione chiusura";		break;}
                default	: {upvalue ="-";		   		break;}
            }
        }
        else
        {
            switch (upvalue) {
                case "ACH" : {upvalue ="Borsa Chiusa";			break;}
                case "CAN" : {upvalue ="Borsa Chiusa";			break;}
                case "CHI" : {upvalue ="Borsa Chiusa";			break;}
                case "END" : {upvalue ="Borsa Chiusa";			break;}
                case "INI" : {upvalue ="Borsa Chiusa";			break;}
                case "MGT" : {upvalue ="Borsa Chiusa";			break;}
                case "NEG" : {upvalue ="Borsa Chiusa";			break;}
                case "PCH" : {upvalue ="Borsa Chiusa";			break;}
                case "PRE" : {upvalue ="Borsa Chiusa";			break;}
                case "TAH" : {upvalue ="Trading After Hours";	break;}
                case "TER" : {upvalue ="Borsa Chiusa";			break;}
                case "VAL" : {upvalue ="Borsa Chiusa";			break;}
                case "VCH" : {upvalue ="Borsa Chiusa";			break;}
                default	: {upvalue ="-";		   		break;}
            }
        }
        return upvalue;

    }

    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    function decodeFaseIndiciImg (upvalue) {
        switch (upvalue) {
            case "1"  : {upvalue ='<img border="0" src="/xp/FinanzaMercatiUser/img/b_aperta.gif" alt="Borsa aperta" title="Borsa aperta"/>';			break;}
            case "2"  : {upvalue ='<img border="0" src="/xp/FinanzaMercatiUser/img/b_aperta.gif" alt="Borsa aperta" title="Borsa aperta"/>';			break;}
            case "3"  : {upvalue ='<img border="0" src="/xp/FinanzaMercatiUser/img/b_aperta.gif" alt="Borsa aperta" title="Borsa aperta"/>';			break;}
            case "4"  : {upvalue ='<img border="0" src="/xp/FinanzaMercatiUser/img/b_chiusa.gif" alt="Borsa chiusa" title="Borsa chiusa"/>';			break;}
            case "5"  : {upvalue ='<img border="0" src="/xp/FinanzaMercatiUser/img/b_chiusa.gif" alt="Borsa chiusa" title="Borsa chiusa"/>';			break;}
            case "7"  : {upvalue ='<img border="0" src="/xp/FinanzaMercatiUser/img/b_chiusa.gif" alt="Borsa chiusa" title="Borsa chiusa"/>';			break;}
            case "10" : {upvalue ='<img border="0" src="/xp/FinanzaMercatiUser/img/b_aperta.gif" alt="Borsa aperta" title="Borsa aperta"/>';			break;}
            case "11" : {upvalue ='<img border="0" src="/xp/FinanzaMercatiUser/img/b_chiusa.gif" alt="Borsa chiusa" title="Borsa chiusa"/>';			break;}
            case "12" : {upvalue ='<img border="0" src="/xp/FinanzaMercatiUser/img/b_aperta.gif" alt="Borsa aperta" title="Borsa aperta"/>';			break;}
            default   : {upvalue ='<img border="0" src="/xp/FinanzaMercatiUser/img/nd.gif" alt="Fase di mercato non disponibile" title="Fase di mercato non disponibile"/>';	break;}
        }
        return upvalue;
    }

    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    function decodeFaseIndiciLabel (upvalue) {
        switch (upvalue) {
            case "1"  : {upvalue ='Borsa aperta';	break;}
            case "2"  : {upvalue ='Borsa aperta'; 	break;}
            case "3"  : {upvalue ='Borsa aperta';  	break;}
            case "4"  : {upvalue ='Borsa chiusa';	break;}
            case "5"  : {upvalue ='Borsa chiusa';   break;}
            case "6"  : {upvalue ='Borsa aperta'; 	break;}
            case "7"  : {upvalue ='Borsa chiusa';  	break;}
            case "10" : {upvalue ='Borsa aperta';	break;}
            case "11" : {upvalue ='Borsa chiusa';	break;}
            case "12" : {upvalue ='Borsa aperta';	break;}
            default   : {upvalue ='-';		break;}
        }
        return upvalue;
    }

    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    function decodeSegmento (upvalue) {
        switch (upvalue) {
            case "D" : {upvalue ='FTSE Italia Mid Cap';			break;}
            case "B" : {upvalue ='Blue Chips';		break;}
            case "S" : {upvalue ='Star';			break;}
            case "1" : {upvalue ='Ordinario - Classe 1';	break;}
            case "2" : {upvalue ='Ordinario - Classe 2';	break;}
            default  : {upvalue ='-';			break;}
        }
        return upvalue;
    }


    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    //        GESTIONE PUSH - FINE
    //###################################################################################
    //###################################################################################
    //###################################################################################

//-------------------------------------------------------------
var numPagineDaMostrare = 5;

function genPagingFooter(curPage, totalPages,navigatorClass) {

	var fileName = QueryString('page');

	var retVal = '';
	var pagCorrente = curPage;
	if(navigatorClass == null) navigatorClass = "navigator";

	var numero;
	if ((pagCorrente==0)|| totalPages==0) {
		numero = 0;
	} else {
		if (pagCorrente % numPagineDaMostrare == 0) {
			numero = pagCorrente - (numPagineDaMostrare - 1);
		} else {
			numero = pagCorrente - (pagCorrente % numPagineDaMostrare) +1;
		}
	}

	var ciclo = numero;
	retVal += '<div class='+navigatorClass+'>';
	
	if (pagCorrente != 1) {
		retVal += '<a target="_self" href="';
		retVal += '/fcxp?page=';
		retVal += fileName;
		retVal += replicateParamsExcept4(new Array("page", "TA_START"));
		retVal += '&TA_START=0';
		retVal += '">';
		retVal += '<img border="0" src="/xp/FinanzaMercatiUser/img/inizio.gif" alt="Prima Pagina" title="Prima Pagina"/>';
		retVal += '</a>';


		retVal += '<a target="_self" href="';
		retVal += '/fcxp?page=';
		retVal += fileName;
		retVal += replicateParamsExcept4(new Array("page", "TA_START"));

		retVal += '&TA_START=' + (curPage - 2) * 40;
		retVal += '">';
		retVal += '<img border="0" src="/xp/FinanzaMercatiUser/img/indietro.gif" alt="Pagina precedente" title="Pagina precedente"/>';
		retVal += '</a>';


	} else {

		retVal += '<img border="0" src="/xp/FinanzaMercatiUser/img/inizio_disattivo.gif" alt="Prima Pagina" title="Prima Pagina"/>';
		retVal += '<img border="0" src="/xp/FinanzaMercatiUser/img/indietro_disattivo.gif" alt="Pagina precedente" title="Pagina precedente"/>';
	}



	retVal += 'Pagina ';
	retVal += recursePageNums(ciclo, pagCorrente, totalPages, fileName);
	retVal += ' di ';
	retVal += totalPages;


	if (curPage != totalPages) {

		retVal += '<a target="_self" href="';

		retVal += '/fcxp?page=';

		retVal += fileName;
		retVal += replicateParamsExcept4(new Array("page", "TA_START"));

		retVal += '&TA_START=' + (curPage * 40);
		retVal += '">';
		retVal += '<img border="0" src="/xp/FinanzaMercatiUser/img/avanti.gif" alt="Pagina successiva" title="Pagina successiva"/>';
		retVal += '</a>';
		retVal += '<a target="_self" href="';

		retVal += '/fcxp?page=';

		retVal += fileName;
		retVal += replicateParamsExcept4(new Array("page", "TA_START"));

		retVal += '&TA_START=' + (totalPages - 1) * 40;
		retVal += '">';
		retVal += '<img border="0" src="/xp/FinanzaMercatiUser/img/fine.gif" alt="Ultima pagina" title="Ultima pagina"/>';
		retVal += '</a>';



	} else {


		retVal += '<img border="0" src="/xp/FinanzaMercatiUser/img/avanti_disattivo.gif" alt="Pagina successiva" title="Pagina successiva"/>';
		retVal += '<img border="0" src="/xp/FinanzaMercatiUser/img/fine_disattivo.gif" alt="Ultima pagina" title="Ultima pagina"/>';

	}

		retVal += '</div>';

		return retVal;
}
function recursePageNums(ciclo, pagCorrente, totalPages, fileName) {
	var retVal = '';
	//ciclo e' la pag da cui partire nell'elenco dei numeri di pagina da mostrare




	//##################
	var iter;
	for (iter = 0; (iter < numPagineDaMostrare) && (ciclo <= totalPages); iter++) {
	//##################

		//if (iter > 0) retVal += '<img border="0" src="/xp/FinanzaMercatiUser/img/transp.gif" width="5px"/>';
		if (iter > 0) retVal += '<span> - </span>';

	if (ciclo == pagCorrente) {
		retVal += '<a target="_self" class="selected" href="#"><b>';
		retVal += ciclo;
		retVal += '</b></a>';


	} else {
		
		retVal += '<span>';
		retVal += '<a target="_self" href="';
		retVal += '/fcxp?page=';
		retVal += fileName;
		retVal += replicateParamsExcept4(new Array("page", "TA_START"));

		retVal += '&TA_START=' + (ciclo - 1) * 40;
		retVal += '">';
		retVal += ciclo;
		retVal += '</a>';
		retVal += '</span>';


	}



	//##################
		ciclo ++; //ciclo e' il numero di pag che sto stampando.
	}
	//##################

	return retVal;

}

//-----------------------------------------------------------------------------------------

/**
 * usata dalla pagina dei risultati ricerca POINT
 */
function submitPostParamsAndGoToPage(/*string*/ pageNum, /*string*/ pagingParam) {
	//il nome del form e' pagingParam + '_pagingForm'
	var formName = pagingParam + '_pagingForm';
	document.getElementById('HiddenInput_' + pagingParam).value = pageNum;
	document.forms[formName].submit();
} 
//-----------------------------------------------------------------------------------------


	/**
	*usata in fondi24
	**/
	function apriChiudi(pos,massimo){
			            	
			            		var vista = true;
			            		
			            		for(i = 1 ; i <= massimo ; i++)
			            		{
				            		var row = document.getElementById("id_"+pos+"_"+i);
				            		
									if (row.style.display == '') 
									{
										row.style.display = 'none';
										
										vista = false;
									}
									else 
										row.style.display = ''; 
								}
								
								
								
								var ico = document.getElementById("r"+pos+"-ico");
								if (vista==true) ico.src = "img2009/fondi_ico_meno.gif";
								else ico.src = "img2009/fondi_ico_piu.gif"; 
			            	
			            	}

