﻿
var map = null;
var geocoder = null;
var marker = null;
var DEFAULT_LAT = 40.413496049701955;
var DEFAULT_LNG = -3.69140625;
var DEFAULT_ZOOM = 5;
var CLOSE_ZOOM = 7;

function initialize()
{
    map = new GMap2(document.getElementById("map"));
    map.setMapType(G_SATELLITE_MAP);
    map.setCenter(new GLatLng(DEFAULT_LAT, DEFAULT_LNG), DEFAULT_ZOOM);
    map.addControl(new GSmallMapControl());
    map.addControl(new GMapTypeControl());
    
    
    initProvinces();
    //showCompanies("");
    //initCompanyLocations();
    
}

// muestra el mapa para una empresa premium
function initializeDetail()
{
    map = new GMap2(document.getElementById("map"));
    map.setCenter(new GLatLng(DEFAULT_LAT, DEFAULT_LNG), DEFAULT_ZOOM);
    map.addControl(new GSmallMapControl());
    map.addControl(new GMapTypeControl());

    initCompanyLocations();
}

function initCompanyLocations()
{
    for (var i = 0; i < locations.length; i++)
    {
        createDetailMarker(locations[i]);
    }
}

function createDetailMarker(location)
{
    var marker = new GMarker(new GLatLng(location.lat, location.lng), { title: location.name });

    GEvent.addListener(marker, 'click', function()
    {
        var infoWindowHtml = "<h4>" + location.name + "</h4>" + location.desc;
        marker.openInfoWindowHtml(infoWindowHtml);
    });

    map.addOverlay(marker);
}

function initProvinces()
{
    var select = document.getElementById('province');
    var domCompliant = true;

    for (var i = 0; i < provinces.length; i++)
    {
        var province = provinces[i];
/*
        var option = document.createElement('option');
        option.value = province.id;
        option.text = province.name;

        try
        {
            if (domCompliant)
            {
                select.add(option, null);
            }
            else
            {
                select.add(option);
            }
        }
        catch (ex)
        {
         //   select.add(option);
         //   domCompliant = false;
        }
*/
        
        showMarker(province);
    }
}

function showProvince(id)
{
    var province = null;

    for (var i = 0; i < provinces.length; i++)
    {
        var p = provinces[i];

        if (p.id == id)
        {
            province = p;
            break;
        }
    }

    if (province == null)
    {
        return; // no existe la provincia
    }

    var point = new GLatLng(province.lat, province.lng);

    if (map.getZoom() < CLOSE_ZOOM)
    {
        map.setCenter(point, CLOSE_ZOOM);
    }
    else
    {
        map.panTo(point);
    }

    // mostrar las empresas que operan en la provincia
    showCompanies(id);
}

function onProvinceSelect(id)
{
    if (id == "null")
    {
        map.setCenter(new GLatLng(DEFAULT_LAT, DEFAULT_LNG), DEFAULT_ZOOM);
        showCompanies("");
    }
    else
    {
        showProvince(id);
    }
}

function onMarkerClick(idProvince)
{
    showProvince(idProvince);

    // Seleccionar el valor en el select
    var select = document.getElementById('province');
    for (var i = 0; i < select.options.length; i++)
    {
        var option = select.options[i];

        if (option.value == idProvince)
        {
            select.selectedIndex = i;
            break;
        }
    }
}

function showCompanies(idProvince)
{
    var panel = document.getElementById('companiesPanel');
    //Scl.clearChildNodes(panel);

    panel = document.getElementById('premiumCompaniesPanel');
    //Scl.clearChildNodes(panel);

    //document.getElementById("loadingIcon").style.display = "block";
    //document.getElementById("loadingIconPremium").style.display = "block";
    
    Scl.getJson({
        url: "/directorio/category",
        parameters: { idCategory: category, idProvince: idProvince },
        success: showCompaniesCallback,
        error: function(result) { alert("Ha ocurrido un error al procesar la petición: " + result.message); }
    });
}

function showCompaniesCallback(result)
{
    
    //document.getElementById("loadingIcon").style.display = "none";
    //document.getElementById("loadingIconPremium").style.display = "none";


    var count = result.length;

    for (var i = 0; i < count; i++)
    {
        var company = result[i];
        var companyDiv = document.createElement("div");

        if (company.isPremium)
        {
            companyDiv.className = "premiumCompanyDiv";
            var link = document.createElement("a");
            link.href = "/directorio/show/" + company.id;

            var logo = document.createElement("img");
            logo.src = "/private/co/DirectoryCompanies/" + company.id + "/" + company.logo;
            link.appendChild(logo);
            companyDiv.appendChild(link);


            var premiumDataPanel = document.createElement("div");
            premiumDataPanel.className = "premiumListDataPanel";
            companyDiv.appendChild(premiumDataPanel);

            var premiumCompanyName = document.createElement("div");
            premiumDataPanel.appendChild(premiumCompanyName);
            premiumCompanyName.className = "premiumCompanyName";
            
            var nameLink = document.createElement("a");
            nameLink.href = "/directorio/show/" + company.id;
            Scl.setText(nameLink, company.name);
            premiumCompanyName.appendChild(nameLink);

            Scl.appendLine(premiumDataPanel, company.web);
            Scl.appendLine(premiumDataPanel, company.email);
            

            var panel = document.getElementById('premiumCompaniesPanel');
            panel.appendChild(companyDiv);
        }
        else
        {
            companyDiv.className = "companyDiv darkColor";
            var link = document.createElement("a");
            link.href = "/directorio/show/" + company.id;
            Scl.appendText(link, company.name);
            companyDiv.appendChild(link);
            
            var panel = document.getElementById('companiesPanel');
            panel.appendChild(companyDiv);
        }
    }
}

function onMarketClick2(idProvince) {

    // Seleccionar el valor en el select
    var select = document.getElementById('province');
    for (var i = 0; i < select.options.length; i++) {
        var option = select.options[i];

        if (option.value == idProvince) {
            select.selectedIndex = i;
            break;
        }
    }

    select.onchange();
}

function showMarker(province)
{
    var title = province.count + (province.count == 1 ? " Empresa" : " Empresas");
    var marker = new GMarker(new GLatLng(province.lat, province.lng), { title: title });
    //GEvent.addListener(marker, 'click', function() { onMarkerClick(province.id); });
    GEvent.addListener(marker, 'click', function() { onMarketClick2(province.id); });
    map.addOverlay(marker);

}

Scl.onUnLoad(GUnload);