﻿// AO, 10/09/2009
var map;

function searchDealers(searchCtrl, latitudeCtrl, longitudeCtrl, criteriaCtrl, country) {
    var search = document.getElementById(searchCtrl).value;
    var latitude = document.getElementById(latitudeCtrl);
    var longitude = document.getElementById(longitudeCtrl);
    var criteria = document.getElementById(criteriaCtrl);
    var inputSearch = '';

    var geocoder = new GClientGeocoder();

    inputSearch = search;
    search = search + ',' + country;

    var listLevel1 = document.getElementById('listLevel1');
    var inputsLevel1 = listLevel1.getElementsByTagName('input');
    for (var i = 0; i < inputsLevel1.length; i++) {
        var input = inputsLevel1[i];

        if (input.type == 'checkbox' && input.checked) {
            criteria.value = criteria.value + input.parentNode.attributes['activity'].nodeValue + ","
        }
    }

    var listLevel2 = document.getElementById('listLevel2');
    var inputsLevel2 = listLevel2.getElementsByTagName('input');
    for (var i = 0; i < inputsLevel2.length; i++) {
        var input = inputsLevel2[i];

        if (input.type == 'checkbox' && input.checked) {
            criteria.value = criteria.value + input.parentNode.attributes['activity'].nodeValue + ","
        }
    }

    if (inputSearch == '') {
        longitude.value = 0;
        latitude.value = 0;
        document.forms[0].submit();
    }
    else {
        geocoder.getLocations(
        search,
        function(locations) {
            if (locations.Status.code == 200) {         // Cas ou il y a un seul element
                if (locations.Placemark.length == 1) {
                    longitude.value = locations.Placemark[0].Point.coordinates[0];
                    latitude.value = locations.Placemark[0].Point.coordinates[1];

                    document.forms[0].submit();
                }
                else {                                  // Cas ou il y a plusieurs elements trouves
                    buildPlacemarks(locations.Placemark, inputSearch, longitudeCtrl, latitudeCtrl);
                }
            }
        });
    }
}

function buildPlacemarks(placemark, search, longitudeCtrl, latitudeCtrl) {
    var data = '<ul>';
    var index = 1;

    for (var i in placemark)
    {
        data = data + "<li><a href='#' onclick=\"javascript:submitForm('" +
            placemark[i].Point.coordinates[0] + "','" +
            placemark[i].Point.coordinates[1] + "','" +
            longitudeCtrl + "','" +
            latitudeCtrl + "')\">" + index + ".&nbsp;" + placemark[i].address + "</a></li>";
            
        index = index + 1;
    }

    document.getElementById('placemarksData').innerHTML = data + '</ul>';
    document.getElementById('placemarks').style["display"] = 'block';

    var title = document.getElementById('placemarksTitle').innerHTML
    var reg = new RegExp("@@search@@", "g");
    
    document.getElementById('placemarksTitle').innerHTML = title.replace(reg, search);
}

function submitForm(longitudeValue, latitudeValue, longitudeCtrl, latitudeCtrl) {
    var latitude = document.getElementById(latitudeCtrl);
    var longitude = document.getElementById(longitudeCtrl);

    longitude.value = longitudeValue;
    latitude.value = latitudeValue

    document.forms[0].submit();
}

function onkeypressed(searchCtrl, latitudeCtrl, longitudeCtrl, criteriaCtrl, country, e) {
    var code =(window.event)? event.keyCode : e.which;
    if (code == 13) {
        searchDealers(searchCtrl, latitudeCtrl, longitudeCtrl, criteriaCtrl, country);
        return false;
    }
} 

















function GetParameters(searchCtrl, latitudeCtrl, longitudeCtrl, criteriaCtrl, country) {

    var search = document.getElementById(searchCtrl).value;
    var latitude = document.getElementById(latitudeCtrl);
    var longitude = document.getElementById(longitudeCtrl);
    var criteria = document.getElementById(criteriaCtrl);

    var geocoder = new GClientGeocoder();

    criteria.value = '';

    search = search + ',' + country;

    geocoder.getLatLng(
        search,
        function(point) {
            if (!point) {
                latitude.value = "0";
                longitude.value = "0";
            }
            else {
                latitude.value = point.y;
                longitude.value = point.x;
            }
        });

    var listLevel1 = document.getElementById('listLevel1');
    var inputsLevel1 = listLevel1.getElementsByTagName('input');
    for (var i = 0; i < inputsLevel1.length; i++) {
        var input = inputsLevel1[i];

        if (input.type == 'checkbox' && input.checked) {
            criteria.value = criteria.value + input.parentNode.attributes['activity'].nodeValue + ","
        }
    }

    var listLevel2 = document.getElementById('listLevel2');
    var inputsLevel2 = listLevel2.getElementsByTagName('input');
    for (var i = 0; i < inputsLevel2.length; i++) {
        var input = inputsLevel2[i];

        if (input.type == 'checkbox' && input.checked) {
            criteria.value = criteria.value + input.parentNode.attributes['activity'].nodeValue + ","
        }
    }
}

function GetParametersForms(searchCtrl, latitudeCtrl, longitudeCtrl) {

    var search = document.getElementById(searchCtrl).value;
    var latitude = document.getElementById(latitudeCtrl);
    var longitude = document.getElementById(longitudeCtrl);   

    var geocoder = new GClientGeocoder();

   
    geocoder.getLatLng(
        search,
        function(point) {
            if (!point) {
                latitude.value = "0";
                longitude.value = "0";
            }
            else {
                latitude.value = point.y;
                longitude.value = point.x;
            }
        });   
}

function LoadMap(longitude, latitude, zoom, response, serverName, clustersize, maxzoom) {
    if (GBrowserIsCompatible()) {    
        map = new GMap2(document.getElementById("map"));

        //map.setCenter(new GLatLng(latitude, longitude), zoom);
        map.setCenter(new GLatLng(latitude, longitude), 10);
        
        map.addControl(new GLargeMapControl3D());
        //map.addControl(new GLargeMapControl());
        map.addControl(new GMapTypeControl());
        map.addControl(new GOverviewMapControl());
        map.addControl(new GScaleControl());

        CreateMarkers(response, serverName, clustersize, maxzoom);
    }
}

// AO, 13/11/2009
function CenterGmap(longitude, latitude, mapDealerId)
{    
    map = new GMap2(document.getElementById(mapDealerId));
    map.setCenter(new GLatLng(latitude, longitude), 8);    
}

// AO, 13/11/2009
function LoadMapDealerESP(longitude, latitude, serverName, mapDealerId, isdvn) {
    if (GBrowserIsCompatible()) 
    {
        map = new GMap2(document.getElementById(mapDealerId));
              
        map.setCenter(new GLatLng(latitude, longitude), 15);

        var icon = new GIcon();

        if (isdvn == 'true') {
            icon.image = serverName + "images/dealerBig.png";
//            icon.iconAnchor = new GPoint(20, 48);
            icon.iconAnchor = new GPoint(35, 100);
            icon.iconSize = new GSize(69, 107);
        }
        else {
            icon.image = serverName + "images/dealerSmall.png";
//            icon.iconAnchor = new GPoint(15, 35);
            icon.iconAnchor = new GPoint(20, 35);
            icon.iconSize = new GSize(41, 37);
        }
//        icon.image = serverName + "images/dealer.png";
//        icon.iconAnchor = new GPoint(40, 45);
//        icon.iconSize = new GSize(20, 37);
        
        var point = new GLatLng(latitude, longitude);

        opts = {
            "icon": icon,
            "clickable": false
        };

        var marker = new GMarker(point, opts);

        map.addOverlay(marker);
    }
}

function LoadMapDealer(longitude, latitude, serverName, isdvn) {
    if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("mapDealer"));

        map.setCenter(new GLatLng(latitude, longitude), 15);

        var icon = new GIcon();

        if (isdvn == 'true') {
            icon.image = serverName + "images/dealerBig.png";
//            icon.iconAnchor = new GPoint(20, 48);
            icon.iconAnchor = new GPoint(35, 100);
            icon.iconSize = new GSize(69, 107);
        }
        else {
            icon.image = serverName + "images/dealerSmall.png";
//            icon.iconAnchor = new GPoint(15, 35);
            icon.iconAnchor = new GPoint(20, 35);
            icon.iconSize = new GSize(41, 37);
        }
//        icon.image = serverName + "images/dealer.png";
//        icon.iconAnchor = new GPoint(40, 45);
//        icon.iconSize = new GSize(20, 37);
        
        var point = new GLatLng(latitude, longitude);

        opts = {
            "icon": icon,
            "clickable": false};

        var marker = new GMarker(point, opts);

        map.addOverlay(marker);
    }
}

function CreateMarkers(response, serverName, clustersize, maxzoom) {

    var pointY;
    var pointX;

    var xmlDoc = GXml.parse(response);
    var markers = xmlDoc.documentElement.getElementsByTagName("dealer");

    var markersClusterer = [];//CPP-1901

    for (var i = 0; i < markers.length; i++) {
    
        var point = new GLatLng(markers[i].getAttribute("latitude"), markers[i].getAttribute("longitude"));

        if (i == 0) {
            pointY = point.y;
            pointX = point.x;
        }

        var isDVN = markers[i].getAttribute("isdvn");
        var index = markers[i].getAttribute("index");
        
        if (isDVN == 'true') {
            var icon = new GIcon();
            
            //var a = new GPoint(20, 48);
            var a = new GPoint(35, 100);
            
            icon.image = serverName + "images/dealerBig.png";
            //icon.image = serverName + "images/dealer.png";
            icon.iconAnchor = a;
            //icon.iconSize = new GSize(20, 37);
            icon.iconSize = new GSize(69, 107);
            
            if (index < 10) {
                opts = {
                    "icon": icon,
                    "clickable": false,
                    "labelText": "<div class='labeledMarker'>" + markers[i].getAttribute("index") + "</div>",
                    //"labelOffset": new GSize(-28, -35)
                    "labelOffset": new GSize(-40, -60)
                };
            }
            else if (index < 100) {
                opts = {
                    "icon": icon,
                    "clickable": false,
                    "labelText": "<div class='labeledMarker'>" + markers[i].getAttribute("index") + "</div>",
                    //"labelOffset": new GSize(-36, -35)
                    "labelOffset": new GSize(-45, -60)
                };
            }
            else {
                opts = {
                    "icon": icon,
                    "clickable": false,
                    "labelText": "<div class='labeledMarker'>" + markers[i].getAttribute("index") + "</div>",
                    //"labelOffset": new GSize(-36, -35)
                    "labelOffset": new GSize(-55, -60)
                };
            }
        }
        else {
            var icon = new GIcon();
        
            var b = new GPoint(15, 35);

            icon.image = serverName + "images/dealerSmall.png";
            //icon.image = serverName + "images/dealer.png";
            icon.iconAnchor = b;
            //icon.iconSize = new GSize(20, 37);
            icon.iconSize = new GSize(41, 37);

            if (index < 10) {
                opts = {
                    "icon": icon,
                    "clickable": false,
                    "labelText": "<div class='labeledMarker'>" + markers[i].getAttribute("index") + "</div>",
                    "labelOffset": new GSize(-20, -28)
                };
            }
            else if (index < 100) {
                opts = {
                    "icon": icon,
                    "clickable": false,
                    "labelText": "<div class='labeledMarker'>" + markers[i].getAttribute("index") + "</div>",
                    "labelOffset": new GSize(-30, -28)
                };
            }
            else {
                opts = {
                    "icon": icon,
                    "clickable": false,
                    "labelText": "<div class='labeledMarker'>" + markers[i].getAttribute("index") + "</div>",
                    "labelOffset": new GSize(-35, -28)
                };
            }
        }
 
        var marker = new LabeledMarker(point, opts);

        //map.addOverlay(marker);
        markersClusterer.push(marker); //CPP-1901
    }


    //CPP-1901
    var styles = [[{
        url: serverName + 'images/dealerGroup.png',
        height: 107,
        width: 69,
        opt_anchor: [0, 0],
        opt_textColor: '#fff'
        }]];
//    var styles = [[{
//        url: serverName + 'images/m1.png',
//        height: 52,
//        width: 53,
//        opt_anchor: [0, 0],
//        opt_textColor: '#000'
//    },
//    {
//        url: serverName + 'images/m2.png',
//        height: 55,
//        width: 56,
//        opt_anchor: [0, 0],
//        opt_textColor: '#000'
//    }, 
//    {
//        url: serverName + 'images/m3.png',
//        height: 65,
//        width: 66,
//        opt_anchor: [0, 0]
//    },
//    {
//        url: serverName + 'images/m4.png',
//        height: 65,
//        width: 66,
//        opt_anchor: [0, 0]
//}]];

    var mcOptions = { gridSize: clustersize, maxZoom: maxzoom, styles: styles[0] };
    
    var markers = markersClusterer;
    var mc = new MarkerClusterer(map, markers, mcOptions);
    //CPP-1901
    
    if (markers.length>0)
        map.setCenter(new GLatLng(pointY, pointX), 10);
}
