function getControllerUrl()
{
    return path2root + "admin/objects/FilialiDucato/ajaxController.php";
}

function getWaitImagePath()
{
    return path2root + "admin/objects/FilialiDucato/img/ajax-loader.gif";
}

function onChangeFiliali_RegioneListSelector()
{
    var regioneId = getIdSelectedRegione();
    if(regioneId != "-1")
    {
        //selezionaRegioneSuMappa();
        //filialiSearch();
    }
}

/*
 * Funzione necessaria per ovviare al fatto che Internet Explorer
 * non lancia l'evento onChange se premo invio su un campo di input
 * ma aspetta che il campo perda il fuoco
 *
 */
function onKeyPress_SearchStringField(evento)
{
    if(checkIfEnterIsTyped(evento))
    {
        filialiSearch();
    }
}

function filialiSearch()
{
    //selezionaRegioneSuMappa();
    showWaitImage("filiali_searchResultBox",getWaitImagePath());
    var regioneId = getIdSelectedRegione();
    var searchString = getSearchString();
    var searchResultPageSize = getSearchResultPageSize();
    var filialiDetailsViewMode = getFilialiDetailsViewMode();
    var evalAfterDone = "resetRegioneSelector();resetSearchString();selezionaRegioneSuMappa();";
    if(filialiDetailsViewMode == "MULTIBOX")
    {
        evalAfterDone += "refreshMultibox();";
    }
    var randomnumber=Math.floor(Math.random()*10001);
    var ajax = assegnaXMLHttpRequest();
    var cntrlUrl = getControllerUrl();
    var queryString = "op=siteFilialiSearch" +
    "&regioneId=" + regioneId +
    "&searchString=" + escape(searchString) +
    "&searchResultPageSize=" + escape(searchResultPageSize) +
    "&filialiDetailsViewMode=" + escape(filialiDetailsViewMode) +
    "&anticache=" + randomnumber;
    //getResponseTextInElement(ajax, cntrlUrl, 'get', queryString, true, "filiali_searchResultBox","initMultibox()");
    getResponseTextInElement(ajax, cntrlUrl, 'get', queryString, true, "filiali_searchResultBox",evalAfterDone);
}

function initFilialiRegioniFlashMap()
{
    var flashvars = {};
    var params = {};
    params.wmode = "transparent";
    params.allowscriptaccess = "always";
    var attributes = {};
    swfobject.embedSWF(path2root + "admin/objects/FilialiDucato/flash/filiali-mappa.swf", "filiali_regioneMapSelectorBox", "278", "350", "9.0.0", false, flashvars, params, attributes);
}

function initMain(params)
{
    //alert(params['searchResultPageSize'] + "\n" + params['regionePresetValue'] + "\n" + params['searchStringPresetValue'] + "\n" + params['launchSearchOnLoadFlag']);

    var randomnumber=Math.floor(Math.random()*10001);
    var ajax = assegnaXMLHttpRequest();
    var url = path2root + "admin/objects/FilialiDucato/ajaxController.php";
    var queryString = "op=siteMainLoad" +
    "&searchResultPageSize=" + params['searchResultPageSize'] +
    "&regionePresetValue=" + params['regionePresetValue'] +
    "&searchStringPresetValue=" + params['searchStringPresetValue'] +
    "&anticache=" + randomnumber;
    var evalAfterDone = "initFilialiRegioniFlashMap();";
    if(params['launchSearchOnLoadFlag']==true)
    {
        evalAfterDone += "filialiSearch();"
    }
    //alert(url + "?" + queryString);
    getResponseTextInElement(ajax, url, 'get', queryString, true, "ricercaFilialiBox",evalAfterDone);
}

var mbox = {};

function initMultibox()
{
    window.addEvent('domready', function(){
        //mbox = new MultiBox('mb', {descClassName: 'multiBoxDesc', useOverlay: true, onOpen: hideOverlayedByMultiboxElements, onClose: showOverlayedByMultiboxElements});
        mbox = new MultiBox('mb', {
            useOverlay: true,
            onOpen: hideOverlayedByMultiboxElements,
            onClose: showOverlayedByMultiboxElements
        });
    });
}

function refreshMultibox()
{
    //mbox = new MultiBox('mb', {descClassName: 'multiBoxDesc', useOverlay: true, onOpen: hideOverlayedByMultiboxElements, onClose: showOverlayedByMultiboxElements});
    mbox = new MultiBox('mb', {
        useOverlay: true,
        onOpen: hideOverlayedByMultiboxElements,
        onClose: showOverlayedByMultiboxElements
    });
}

function hideOverlayedByMultiboxElements()
{
    changeOverlayedByMultiboxElementsVisibility(false);
}

function showOverlayedByMultiboxElements()
{
    setTimeout("changeOverlayedByMultiboxElementsVisibility(true)",1000);
}

function changeOverlayedByMultiboxElementsVisibility(visible)
{
    var elems = new Array('filiali_regioneListSelectorBox','filiali_searchStringBox','filiali_regioneMapSelectorBox');
    for(var i=0; i<elems.length; i++)
    {
        document.getElementById(elems[i]).style.visibility = visible ? "visible" : "hidden";
    }
}

function selezionaRegioneSuMappa()
{
    // chiama funzione in flash
    document.getElementById("filiali_regioneMapSelectorBox").selezionaRegione();
}

function selezionaRegioneSuLista(idRegione)
{
    // carica i dati della regione (chiamata da flash)
    var regioneSel = getRegioneSelectorObj();
    var found = false;
    for(var index = 0; index < regioneSel.length && !found; index++)
    {
        if(regioneSel[index].value == idRegione)
        {
            regioneSel.selectedIndex = index;
            found=true;
        }
    }
}

function loadFilialiByRegione(idRegione)
{
    // carica le filiali della regione (chiamata da flash)
    selezionaRegioneSuLista(idRegione);
    //chiamo anche selezionaRegioneSuMappa perché se seleziono una regione
    //sulla mappa flash questa non resta selezionata
    selezionaRegioneSuMappa();
    filialiSearch();
}

function getIdSelectedRegione()
{
    // recupera l'ID selezionato della Regione (chiamata anche da flash)
    var regioneId = "-1";
    var regioneSel = getRegioneSelectorObj();
    if(regioneSel)
    {
        regioneId = regioneSel.options[regioneSel.options.selectedIndex].value;
    }
    //alert(regioneId);
    return regioneId;
}

function getIdRegione()
{
    // recupera l'ID selezionato delle regioni da evidenziare sulla mappa (chiamata da flash)
    //
    //searchResultsRegioniIds è campo input definito in siteFilialiSearchResults e contiene gli id delle regioni
    //interessate dai risultati della ricerca nella pagina corrente
    var regioneId = "-1";
    var searchResultRegioniIdsObj = getSearchResultRegioniIdsObj();
    if(searchResultRegioniIdsObj && searchResultRegioniIdsObj.value.length > 0)
    {
        regioneId = searchResultRegioniIdsObj.value;
    }
    else
    {
        var regioneSel = getRegioneSelectorObj();
        if(regioneSel)
        {
            regioneId = regioneSel.options[regioneSel.options.selectedIndex].value;
        }
    }
    //alert(regioneId);
    return regioneId;
}

function getSearchResultRegioniIdsObj()
{
    return document.getElementById("searchResultRegioniIds");
}

function resetRegioneSelector()
{
    var regioneSel = getRegioneSelectorObj();
    regioneSel.selectedIndex = 0;
    selezionaRegioneSuMappa();
}

function getRegioneSelectorObj()
{
    return document.getElementById("regione");
}

function getSearchString()
{
    var searchStringObj = getSearchStringObj();
    var searchString = searchStringObj.value;
    return searchString;
}

function resetSearchString()
{
    var searchStringObj = getSearchStringObj();
    searchStringObj.value = "";
}

function getSearchStringObj()
{
    return document.getElementById("searchString");
}

function getSearchResultPageSize()
{
    var srPageSizeObj = document.getElementById("searchResultPageSize");
    var ps = srPageSizeObj.value;
    return ps;
}

function getFilialiDetailsViewMode()
{
    var filialiDetailsViewMode = 'POPUP';
    var paramField = document.getElementById("filialiDetailsViewMode");
    if(paramField && paramField.value.length > 0)
    {
        filialiDetailsViewMode = paramField.value;
    }
    return filialiDetailsViewMode;
}

function showFilialeDetails(filialeId, titolo)
{
    var url = path2root + "admin/objects/FilialiDucato/ajaxController.php?op=siteFilialeDetails&filialeId" + filialeId;
    PopUp(url, titolo, 640, 480, "no", "no");
}

function filialiSearchResultPageChange(url)
{
    showWaitImage("filiali_searchResultBox",getWaitImagePath());
    var randomnumber=Math.floor(Math.random()*10001)
    var ajax = assegnaXMLHttpRequest();
    var urlParts = url.split("?");
    var cntrlUrl = urlParts[0];
    var queryString = "anticache=" + randomnumber;
    if(urlParts.length > 1)
    {
        queryString += "&" + urlParts[1];
    }
    var filialiDetailsViewMode = getFilialiDetailsViewMode();
    var evalAfterDone = "selezionaRegioneSuMappa();";
    if(filialiDetailsViewMode == "MULTIBOX")
    {
        evalAfterDone += "refreshMultibox();";
    }
    getResponseTextInElement(ajax, cntrlUrl, 'get', queryString, true, "filiali_searchResultBox",evalAfterDone);
}

var gMap;
function initializeFilialeGMap(markerTooltipHtml,indirizzo,comune,provincia,mapNotFoundMsg)
{
    if (GBrowserIsCompatible())
    {
        gMap = new GMap2(document.getElementById("map_canvas"));
        var mapTypeControl = new GMapTypeControl();
        var topRight = new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(10,10));
        gMap.addControl(new GLargeMapControl(), topRight);
        showAddressOnGMap(markerTooltipHtml,indirizzo + ' ' + comune + ' ' +  provincia,mapNotFoundMsg)
    }
}

function showAddressOnGMap(markerTooltipHtml,address,mapNotFoundMsg)
{
    var geocoder = new GClientGeocoder();
    geocoder.getLatLng(address,
        function(point)
        {
            if (!point)
            {
                GUnload();
                document.getElementById("map_canvas").innerHTML='<div style="text-align:center;">' + mapNotFoundMsg + '</div>';
            }
            else
            {
                gMap.setCenter(point, 13);
                var marker = new GMarker(point);
                var infoHtml = markerTooltipHtml;
                gMap.addOverlay(createMarkerForGMap(infoHtml,point));
            }
        }
        );
}

function createMarkerForGMap(infoHtml,point)
{
    var baseIcon = new GIcon(G_DEFAULT_ICON);
    baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
    baseIcon.iconSize = new GSize(20, 34);
    baseIcon.shadowSize = new GSize(37, 34);
    baseIcon.iconAnchor = new GPoint(9, 34);
    baseIcon.infoWindowAnchor = new GPoint(9, 2);

    var myIcon = new GIcon(baseIcon);
    myIcon.image = "http://www.google.com/mapfiles/markerA.png";

    markerOptions = { 
        icon:myIcon
    };
    var marker = new GMarker(point, markerOptions);
    GEvent.addListener(marker, "click", function()
    {
        marker.openInfoWindowHtml(infoHtml);
    });
    return marker;
}
