var cssStampa     = false;
var tipoStampaOld = -1;

/**
 * Inserisce un css nel documento, in modo dinamico
 * @param {Object} url
 * @param {Object} media
 */

function insertCss(url, media) {

    var headID = document.getElementsByTagName("head")[0], quit = false;
    var allCss = dojo.query("link", headID).forEach(function(node, i){
        if (node.getAttribute("href") == url) {
            quit = true;
            return;
        }
    });
    if (quit)
        return;

    var cssNode = document.createElement('link');
    cssNode.type = 'text/css';
    cssNode.rel = 'stylesheet';
    cssNode.href = url;
    if (!media)
        cssNode.media = 'screen';
    else
        cssNode.media = media;
    headID.appendChild(cssNode);      
    return cssNode;
}

/**
 * Rimuove un css dal documento in maniera dinamica
 * @param {Object} url
 */

function removeCss(url) {
    var cssList = document.getElementsByTagName("LINK");
    //search backwards within nodelist for matching elements to remove
    for (var i = cssList.length; i >= 0; i--) {
        if (cssList[i] && cssList[i].getAttribute("href") != null && cssList[i].getAttribute("href").indexOf(url) != -1) {
            //remove CSS from list
            cssList[i].parentNode.removeChild(cssList[i]);
        }
    }
}


function getListaPOI() {

    // ripuliamo la mappa da eventuali controlli: invia ad un amico, cerca percorso, ecc....

    if (document.getElementById('mapBrokerFrame').contentWindow.hideControls) 
        document.getElementById('mapBrokerFrame').contentWindow.hideControls(); 
    else 
       alert('manca hideControls');
   
    // prepariamo la pagina di stampa

    insertCss("1.2.3/css/visualizzaStampa.css", "all");


    // recuperiamo i dati da far vedere in elenco
    if (document.getElementById('mapBrokerFrame').contentWindow.fetchXmlPuntiPerStampa) {

        if (document.getElementById('mapBrokerFrame').contentWindow.fetchXmlPuntiPerStampa()) {					
             setTimeout ( "showData()", 2000 );                  
        } else 
             alert('no data');

    }
      else alert('manca fetchXmlPuntiPerStampa'); 

    
    // recuperiamo l'eventuale tragitto
    if (document.getElementById('mapBrokerFrame').contentWindow.getTragittoPerStampa) {
           if (document.getElementById('mapBrokerFrame').contentWindow.checkTragittoPerStampaReady()) {
                 var dati = document.getElementById('mapBrokerFrame').contentWindow.getTragittoPerStampa();
                 var nodo = document.getElementById("dataTragitto");
                 nodo.innerHTML = dati;
                 document.getElementById("listaPOI").style.display = "";
           }
    }
      else alert('manca getTragittoPerStampa'); 
    
}


function showData() {   
              
       if (document.getElementById('mapBrokerFrame').contentWindow.checkXmlPuntiPerStampaReady()) {
            var dati = document.getElementById('mapBrokerFrame').contentWindow.getXmlPuntiPerStampa();

            //var nodo = document.getElementById("listaPOI");
            var nodo = document.getElementById("dataPoi");

            if (nodo) {
              nodo.innerHTML = dati;
              document.getElementById("listaPOI").style.display = "";
            }               
       } else
            setTimeout ( "showData()", 2000 );
       
}


function showListaPOI(arg, response, ioArgs) {

    var nodo = document.getElementById("listaPOI");

    if (nodo) {
        nodo.innerHTML = arg;
        nodo.style.display = "";
    }

}


function visualizzaStampa() {

    insertCss("1.2.3/css/visualizzaStampa.css", "all");
}

/**
 *
 */

function nascondiStampa()
{   
    var isIE = dojo.isIE;
    var nodo = document.getElementById("listaPOI");

    removeCss("1.2.3/css/visualizzaStampa.css", "all");

    if ( cssStampa )
	{
		switch(	tipoStampaOld )
		{
			case 1:
				removeCss("1.2.3/css/nascondi.css");
				break;
			case 0:
				removeCss("1.2.3/css/nascondiMappa.css");
				break;
		}
		removeCss("1.2.3/css/print" + lang + ".css");

		tipoStampaOld = -1;
		cssStampa     = false;
	}

    if (isIE) {
		reloadCSS();
    }
    nodo.style.display = "none";
}

function printListaPOI( val )
{
	if ( !cssStampa || val != tipoStampaOld )
	{
		switch( tipoStampaOld )
		{
			case 1:
				removeCss("1.2.3/css/nascondi.css");
				break;
			default:
				removeCss("1.2.3/css/nascondiMappa.css");
				break;
		}
		switch( val )
		{
			case 1:
				insertCss("1.2.3/css/nascondi.css", "print");
				break;
			default:
				insertCss("1.2.3/css/nascondiMappa.css", "print");
				break;
		}
		insertCss("1.2.3/css/print" + lang + ".css", "print");

		cssStampa     = true;
		tipoStampaOld = val;
	}

	window.print();
}

function reloadCSS(url){
	removeCss("style/layout.css" );
	insertCss("style/layout.css" );
}


function errorHandler( type, error ) {
    var msg = "Problemi ...\n" + error.message;
    alert( msg );
}



var init = function() {
 
	var node = document.getElementById("visualizzaStampaITA");
	dojo.connect( node, "onclick", getListaPOI);

	node = document.getElementById("visualizzaStampaENG");
	dojo.connect( node, "onclick", getListaPOI);

	node = document.getElementById("indietroITA");
	dojo.connect( node, "onclick", nascondiStampa);

	node = document.getElementById("indietroENG");
	dojo.connect( node, "onclick", nascondiStampa);

}

