var agco_global_feeds;
var agco_global_remove_feed;
var agco_global_map_type = "terrain";
var loaded = false;
var agco_global_map = {
    __construct: function() {
       $('#global-presence-map').jmap('init', {
           mapType: agco_global_map_type,
           mapCenter: [30, -10],
           mapZoom: 1,
           mapControl: 'large'
       }, function() {
           $('#global-presence-map').removeClass('loading')
           $('#global-presence').addClass('jmap-active');
           
           // Default select all
           if(loaded === false) {
               loaded = true;
               $('#field-select-all').attr('checked','checked');
               agco_global_map.select_all($('#field-select-all'));
           }
       });
    },
    update: function(feeds) {
        $.each(feeds, function($index, $cat) {
            $link = $('#global-presence .feeds a.' + $index);
            if ($cat.status && $link.length == 0 && !$cat.loaded) {
                $('#global-presence-map').jmap('AddFeed', {
                    feedUrl: $cat.url
                }, function(feed, options) {
                    $('input:checkbox', '#map-categories').change(function() {
                        if ($cat.control.attr('checked') == false || $('#field-select-all') == false) {
                            $('#global-presence-map').jmap('RemoveFeed', feed);
                        }
                    });
                });
                
                $cat.control.attr('loaded', 'loaded');
            }
            else if(!$cat.status) {
                $cat.control.removeAttr('loaded');
            }
        });
    },
    region: function(region) {
        // Initialize variables
        var map_center, map_zoom;
        
        // Determine the region settings
        switch(region) {
            case "europe":
                map_center = [49.38, 35.85];
                map_zoom = 3;
                break;
            case "na":
                map_center = [36.45, -91.75];
                map_zoom = 3;
                break;
            case "sa":
                map_center = [-24.28, -56.25];
                map_zoom = 4;
                break;
            case "asia":
                map_center = [3.16, 103];
                map_zoom = 2;
                break;
            default:
                map_center = [30, -10];
                map_zoom = 1;
                break;
        }
        
        // If Asia...
        if(region == "asia") {
            $('#global-presence-map').jmap('MoveTo', {
                mapType: agco_global_map_type, 
                mapCenter: [36.45, -91.75],
                mapZoom: 3
            });
        }
        
        // If 'all regions'
        if(region == "all") {
            $('#field-select-all').removeAttr('checked');
            agco_global_map.select_all($('#field-select-all'));
            $('#field-select-all').attr('checked','checked');
            agco_global_map.select_all($('#field-select-all'));
        }
        
        // Move and zoom the map
        $('#global-presence-map').jmap('MoveTo', {
            mapType: agco_global_map_type, 
            mapCenter: map_center,
            mapZoom: map_zoom
        });
    },
    select_all: function(field){
        if($(field).attr('checked')) {
            $('input:checkbox', '#map-categories div.options').attr('checked','checked');
        }
        else {
            $('input:checkbox', '#map-categories div.options').removeAttr('checked');
        }
        $('input:checkbox', '#map-categories').trigger('change');
    }
};
$(function() {
    // Style checkboxes
    $('input:checkbox', '#map-categories').removeAttr('checked');
    
    // Toggle all checkboxes
    $('#field-select-all', '#global-presence').click(function() {
        // Make sure map is initialized
        if($('#global-presence.jmap-active').length != 1) {
            return;
        }
        agco_global_map.select_all(this);
    });
    
    // Google Maps: pick the right key
    switch (document.domain) {
        case 'agcolocal.caxy.com':
            var google_key = "ABQIAAAAFWzoEqNf4w1l7GUrfKbFOhT0lCKuk5Xlq3KRWt_bMPoinIP60hTOgW4Tr0Wa0X7_3avSrDeQHltFXw";
            break;
        case 'agcostaging.caxy.com':
            var google_key = "ABQIAAAA0km8OgVYf7UVwaWKukCDVRRuTzKbvpoIqfsHunhBsj2_bYR8WhSrKDKC5q24-9ZfsTcQD45iQh3GnQ";
            break;
        case 'agcocorptest.uk.agcocorp.com':
            var google_key = "ABQIAAAA0km8OgVYf7UVwaWKukCDVRTtBUcJsT11KVW15oMYH6Hhudg6gxSz6mxjg9VwSCzDInrFz-FVsAaafQ";
            break;
        case 'agcocorp.devsr.com':
            var google_key = "ABQIAAAAkNtsSL5_FcMrjfOCbl0mSxRoNbsiD6zoB-v9KPFybn0IrYpWwhRkjF-zwHKS3JTri-f15g_3Fw8r9g";
            break;
        case 'www.agcocorp.com':
            var google_key = "ABQIAAAA0km8OgVYf7UVwaWKukCDVRRt_cyCO9cjvdNzdgSdow7JfriujhRsRcJzrGO7cnSF2eeJP7r6g5Vfig";
            break;
        default: // http://agcocorp.com
            var google_key = "ABQIAAAAkNtsSL5_FcMrjfOCbl0mSxQjlx_nUb8js9RkFFHz48VmDRs6rBR-SdWXvpxCzKZwmk6EaOD4Tr1Knw";
    }
    
    $.getScript('http://maps.google.com/maps?file=api&v=2&async=2&key=' + google_key + '&callback=agco_global_map.__construct');
    // Update GMap Markers
       $('input:checkbox', '#map-categories').change(function() { 
            agco_global_feeds = { 
                headquarters: { 
                    status: $('#field-headquarters').attr('checked'), 
                    url: 'http://www.agcocorp.com/headquarters.kml', 
                    control: $('#field-headquarters') 
            },
                 sales: { 
                    status: $('#field-sales').attr('checked'), 
                    url: 'http://www.agcocorp.com/sales.kml', 
                    control: $('#field-sales') 
            }, 
                administrative: { 
                    status: $('#field-administrative').attr('checked'), 
                    url: 'http://www.agcocorp.com/admin.kml', 
                    control: $('#field-administrative') 
            }, 
                manufacturing: { 
                    status: $('#field-manufacturing').attr('checked'), 
                    url: 'http://www.agcocorp.com/manufacturing.kml', 
                    control: $('#field-manufacturing') 
            }, 
                assembly: { 
                    status: $('#field-assembly').attr('checked'), 
                    url: 'http://www.agcocorp.com/assembly.kml', 
                    control: $('#field-assembly') 
            }, 
                distribution: { 
                    status: $('#field-distribution').attr('checked'), 
                    url: 'http://www.agcocorp.com/parts.kml', 
                    control: $('#field-distribution') 
            } 
        }; 

        agco_global_map.update(agco_global_feeds);
        
        // Update the select-all options if all other options are checked
        if ($('#field-headquarters').attr('checked') && $('#field-manufacturing').attr('checked') && $('#field-sales').attr('checked') && $('#field-distribution').attr('checked') && $('#field-assembly').attr('checked') && $('#field-administrative').attr('checked')) {
            $('#field-select-all').attr('checked', 'checked');
        }
        else {
            $('#field-select-all').removeAttr('checked');
        }
    });

    // Change region
    $('#map-region-selector option').removeAttr('selected').slice(0,1).attr('selected','selected');
    $('#map-region-selector').change(function() {
        var region = $('option:selected', this).val();
        agco_global_map.region(region);
        return false;
    });
    $('#getMapData').click(function() {
        var thisMap = Mapifies.MapObjects.Get($('#global-presence-map'));
        var data = 'Coordinates: ' + thisMap.getCenter() + "\n" + 
                   'Zoom level: ' + thisMap.getZoom();
        window.alert(data);
        return false;
    });

    // IE doesn't trigger change immediately
    if($.browser.msie) {
        $('input:checkbox', '#map-categories').click(function() {
            $(this).trigger('change');
        });
    }
});