
function createRoutingRequest(routePref,start,via1,via2,end,format,provideGeometry,provideBoundingBox)
{
    var routing = 
        '<ControllerRequest xmlns="http://www.corenet.it/followmeplus" xmlns:xls=\"http://www.opengis.net/xls\">'+
            '<DetermineRouteRequest distanceUnit=\"M\" xmlns="http://www.opengis.net/xls">' +
                '<RoutePlan>'+
                    '<RoutePreference>'+
                        routePref +
                    '</RoutePreference>'+
                    '<WayPointList>'+
                        '<StartPoint>'+
                            '<Address countryCode=\"IT\">'+
                                '<freeFormAddress>'+
                                    start +
                                '</freeFormAddress>'+
                            '</Address>'+
                        '</StartPoint>';
    if (via1 != '')
    {
        routing += 
                        '<ViaPoint>'+
                            '<Address countryCode=\"IT\">'+
                                '<freeFormAddress>'+
                                    via1 +
                                '</freeFormAddress>'+
                            '</Address>'+
                        '</ViaPoint>';
        
    }
    if (via2 != '')
    {
        routing += 
                        '<ViaPoint>'+
                            '<Address countryCode=\"IT\">'+
                                '<freeFormAddress>'+
                                    via2 +
                                '</freeFormAddress>'+
                            '</Address>'+
                        '</ViaPoint>';
        
    }
        routing +=
                        '<EndPoint>'+
                            '<Address countryCode=\"IT\">'+
                                '<freeFormAddress>'+
                                    end +
                                '</freeFormAddress>'+
                            '</Address>'+
                        '</EndPoint>'+
                    '</WayPointList>'+
                '</RoutePlan>';
    if (format !='' || provideGeometry!='' || provideBoundingBox!='')
    {
        routing +=
                '<xls:RouteInstructionsRequest ';
        if (format != '')
        {
            routing +=
                    'format=\"' +
                        format +
                    '\"';
        }
        if (provideGeometry != '')
        {
            routing +=
                    ' provideGeometry=\"' +
                        provideGeometry +
                    '\"';
        }
        if (provideBoundingBox != '')
        {
            routing +=
                    ' provideBoundingBox=\"' +
                        provideBoundingBox +
                    '\"';
        }
            routing +=
                '/>';
    }
        routing +=
                '<xls:RouteMapRequest>'+
                    '<Output>'+
                    '</Output>'+
                '</xls:RouteMapRequest>'+
            '</DetermineRouteRequest>'+
        '</ControllerRequest>';

    //Trasformo il testo in documento
    //crnet_dom_routing = new crnet_DOM(routing);

    return routing.replace('\"','"');
}

/**
 * effettua il controllo sui dati di input
 * @author Andrea Di Nora
 * 
 * @return true se i dati sono corretti, false altrimenti
 */ 
function controlData()
{
    if (document.forms["formroute"].startPoint.value == '')
    {
        alert('Attenzione, inserire i dati sul punto di partenza.');
        return false;
    }
    if (document.forms["formroute"].endPoint.value == '')
    {
        alert('Attenzione, inserire i dati sul punto di arrivo.');
        return false;
    }
    return true;
}

/**
 * effettua il submit
 * @author Andrea Di Nora
 */
function submit()
{
    //Se i dati inseriti sono corretti
    if (this.controlData())
    {
        var preference = document.forms["formroute"].preference.value;
        var startPoint = document.forms["formroute"].startPoint.value;
        var viaPoint1 = document.forms["formroute"].viaPoint1.value;
        var viaPoint2 = document.forms["formroute"].viaPoint2.value;
        var endPoint = document.forms["formroute"].endPoint.value;
        
        if (viaPoint1 == '')
            dirs.load(startPoint,endPoint,preference);
        else if (viaPoint2 == '')
            dirs.load(startPoint,viaPoint1,endPoint,preference);
        else
            dirs.load(startPoint,viaPoint1,viaPoint2,endPoint,preference);
            
        document.getElementById('routeButton').className = document.getElementById('routeButton').className.replace('show','hidden');
    }
} 

/**
 * Apre o chiude il div della risposta sui percorsi
* @param div - id del div da mostra o nascondere
* @param img - id dell'immagine da switchare
*
* @author Andrea Di Nora
 */ 
function useResponse(div,img)
{
    if (document.getElementById(div).style.display == 'none')    
    {
        document.getElementById(img).src = OpenLayers.ImgPath + 'routing/open.gif';
        document.getElementById(div).style.display = 'block';
    }
    else
    {
        document.getElementById(img).src = OpenLayers.ImgPath + 'routing/closed.gif';
        document.getElementById(div).style.display = 'none';
    }
    //Added for explorer maxheight problem
    if (document.getElementById(routeFloatingPanel.childElement.id).offsetHeight > routeFloatingPanel.size.h)
    {
        routeFloatingPanel.childElement.style.height = routeFloatingPanel.childElement.style.maxHeight;
    }
    else
    {
        routeFloatingPanel.childElement.style.height = '';
    }
}

/**
 * Apre uno dopo l'altro i div relativi ai percorsi intermedi
 * @author Andrea Di Nora
 */ 
function addPlace()
{
    if (document.getElementById('placeAdd1').className.match('hidden'))    
    {
        document.getElementById('placeAdd1').className = document.getElementById('placeAdd1').className.replace('hidden','showandfloat');
    }
    else if (document.getElementById('placeAdd2').className.match('hidden'))    
    {
        document.getElementById('placeAdd2').className = document.getElementById('placeAdd2').className.replace('hidden','showandfloat');
        document.getElementById('addButton').className = 'hidden';
    }
    //Added for explorer maxheight problem
    if (document.getElementById(routeFloatingPanel.childElement.id).offsetHeight > routeFloatingPanel.size.h)
    {
        routeFloatingPanel.childElement.style.height = routeFloatingPanel.childElement.style.maxHeight;
    }
    document.getElementById(routeFloatingPanel.childElement.id).scrollTop= routeFloatingPanel.childElement.offsetHeight + 5000;
}

/**
 * Rimuove uno dei percorsi intermedi
 * @param div - id del div da eliminare
 *
 * @author Andrea Di Nora
 */ 
function removePlace(div)
{
    //Se sto eliminando il primo place, effettuo uno shift del contenuto del secondo sul primo
    if ((div == 'placeAdd1') && (document.getElementById('placeAdd2').className.match('showandfloat')))
    {
        document.forms["formroute"].viaPoint1.value = document.forms["formroute"].viaPoint2.value;
        document.forms["formroute"].viaPoint2.value = "";
        document.getElementById('placeAdd2').className = document.getElementById('placeAdd2').className.replace('showandfloat','hidden');
    }
    else
    {
        if (div == 'placeAdd1')
        {
            document.forms["formroute"].viaPoint1.value = "";
        }
        else
        {
            document.forms["formroute"].viaPoint2.value = "";
        }
        document.getElementById(div).className = document.getElementById(div).className.replace('showandfloat','hidden');
    }
    document.getElementById('addButton').className = 'addplace';
}

/**
 * Apre una pagina tramite href
* @param indirizzo - indirizzo da caricare
 *
 * @author Andrea Di Nora
 */ 
function invertiDirezione(indirizzo)
{
    location.href = indirizzo;
}

/**
 * Inserisce l'html per il nuovo percorso all'interno del div specifico
 *
 * @author Andrea Di Nora
 */
function buildRouteDiv() 
{
    var pan = new newRoute();
    this.insertHTML(pan.getInstance(),"newRoute");
}

/**
 * Mostra l'html per il percorso caricato con i dati di input
 * @param start - l'indirizzo di partenza
 * @param via1 - il primo indirizzo intermedio
 * @param via2 - il secondo indirizzo intermedio
 * @param end - l'indirizzo di arrivo
 *
 * @author Andrea Di Nora
 */
function showModifiedRoute(start,via1,via2,end,preference) 
{
    var content = new newRoute();
    document.getElementById('RouteFloatingPanel').innerHTML = content.getInstance();

    //Carico i dati
    document.forms["formroute"].startPoint.value = start;
    document.forms["formroute"].viaPoint1.value = via1;
    document.forms["formroute"].viaPoint2.value = via2;
    document.forms["formroute"].endPoint.value = end;

    //Mostro se necessario le tappe intermedie
    if (document.getElementById('placeAdd1').className.match('hidden') && via1 != '')    
    {
        document.getElementById('placeAdd1').className = document.getElementById('placeAdd1').className.replace('hidden','showandfloat');
    }

    if (document.getElementById('placeAdd2').className.match('hidden') && via2 != '')    
    {
        document.getElementById('placeAdd2').className = document.getElementById('placeAdd2').className.replace('hidden','showandfloat');
        document.getElementById('addButton').className = 'hidden';
    }

    //Seleziono l'elemento della lista
    var lista = document.forms["formroute"].preference;
    var i = 0;

    while (i<lista.options.length && lista.options[i].value != preference)
    {
        i++;
    }

    if (i<lista.options.length)
    {
        lista.options[i].selected = 'selected';
    }

//    document.forms["form"].preference = end;

//    showRoute();
}

/**
 * Mostra l'html per il nuovo percorso
 *
 * @author Andrea Di Nora
 */
function showNewRoute() 
{
    var content = new newRoute();
    document.getElementById('RouteFloatingPanel').innerHTML = content.getInstance();

/*    document.forms["form"].startPoint.value = "";
    document.forms["form"].viaPoint1.value = "";
    document.forms["form"].viaPoint2.value = "";
    document.forms["form"].endPoint.value = "";
    showRoute();*/
}

/**
 * Mostra l'html per il nuovo percorso
 *
 * @author Andrea Di Nora
 */
function showRoute()
{
    document.getElementById('newRoute').className = 'show';
    document.getElementById('risultati').className = 'hidden';
}

/**
 * Inserisce un html all'interno del div.
 * @param l'html da inserire del div
 * @param div - div sulla quale caricare l'html
 *
 * @author Andrea Di Nora
 */
function insertHTML(html,div) 
{
    if (div!=null)
    {
        // html interno al div
        var htmlOld = document.getElementById(div).innerHTML;
        
        // html con in aggiunta l'html dei div da inserire all'interno del div
        var newHtml = htmlOld +html;
        document.getElementById(div).innerHTML='';
        document.getElementById(div).innerHTML=newHtml;
    }
}
/**
 * Apre o chiude un div
 * @param il div da aprire o chiudere
 *
 * @author Andrea Di Nora
 */
function showDiv(div) 
{
    if (document.getElementById(div)!=null)
    {
        if (document.getElementById(div).className.match('hidden'))
        {
            document.getElementById(div).className = document.getElementById(div).className.replace('hidden','show');
        }
        else
        {
            if (document.getElementById(div).className.match('show'))
            {
                document.getElementById(div).className = document.getElementById(div).className.replace('show','hidden');
            }
            else
            {
                document.getElementById(div).className = document.getElementById(div).className + ' hidden';
            }
        }
    }
}

/**
 * Apre il bottom div al caricamento
 *
 * @author Andrea Di Nora
 */
function showBottomDiv() 
{
    if (document.getElementById('bottomdiv')!=null)
    {
        if (document.getElementById('bottomdiv').className.match('hidden'))
        {
            document.getElementById('bottomdiv').className = document.getElementById('bottomdiv').className.replace('hidden','show');
        }
    }
}

/**
 * Abilita il bottone di 
 * 
 * @param buttonDeleteOn lo stato del bottone
 *
 * @author Andrea Di Nora
 */
function switchRouteButton(buttonDeleteOn) 
{
    var routeButton = document.getElementById('routeButton');
    if (routeButton!=null)
    {
        if ((buttonDeleteOn) || (routeButton.value == 'Mostra'))
        {
            routeButton.value = 'Nascondi';
            routeButton.title = 'Nascondi percorso in mappa';
            dirs.display(true);
        }
        else
        {
            routeButton.value = 'Mostra';
            routeButton.title = 'Mostra percorso in mappa';
            dirs.display(false);
        }
    }
}

/**
 * Funzione che controlla la dinamica del div di routing. In particolare risolve il problema del maxheight
 * di explorer controllando la dimensione del div ed effettua uno scroll in basso necessario alla corretta 
 * visualizzazione del div di ricerca.
 *
 * @author Andrea Di Nora
 */
function controlRouteDiv(scrollon)
{
    if (routeFloatingPanel != null)
    {
        //Added for explorer maxheight problem
        if ((document.getElementById(routeFloatingPanel.childElement.id).offsetHeight > routeFloatingPanel.size.h)
            || ((document.getElementById('resultsdir') != null) && (document.getElementById('resultsdir').offsetHeight > routeFloatingPanel.size.h)))
        {
            routeFloatingPanel.childElement.style.height = routeFloatingPanel.childElement.style.maxHeight;
        }
        else
        {
            routeFloatingPanel.childElement.style.height = '';
        }
        if (scrollon)
        {
            document.getElementById(routeFloatingPanel.childElement.id).scrollTop= routeFloatingPanel.childElement.offsetHeight + 5000;
        }
    }
}

function laodInstructionsBoxes(xmlResponse)
{
    var routeInstructionNodeList = xmlResponse.getElementsByTagName('RouteInstruction');
    for (i=0; i<routeInstructionNodeList.length; i++)
    {
        var bbox = routeInstructionNodeList[i].getElementsByTagName('BoundingBox')[0];
        var posNL = bbox.getElementsByTagName('pos');

        var posMin = posNL[0].firstChild.nodeValue;
        var minx = parseFloat(posMin.substring(0,posMin.indexOf(' ')));
        var miny = parseFloat(posMin.substring(posMin.indexOf(' ')+1));

        var posMax = posNL[1].firstChild.nodeValue;
        var maxx = parseFloat(posMax.substring(0,posMax.indexOf(' ')));
        var maxy = parseFloat(posMax.substring(posMax.indexOf(' ')+1));
        var bounds = new OpenLayers.Bounds(minx,miny,maxx,maxy);

        box = new OpenLayers.Marker.Box(bounds);

        if (i==0)
        {
            box.setBorder("red");    
        }
        else
        {
            box.setBorder("yellow");            
        }

/*        if (i%2)
        {
            box.setBorder("yellow");
        }
        else 
        {
            box.setBorder("green");
        }*/

        boxes.addMarker(box);
    }

}

