var mapdata = [];
var markers = [];

var circle = null;
var bounds = null;
var radius = 50;
var preset_coords = false;
var last_point = false;
var zoom = false;

window.addEvent('domready', function()
{
    var connectiontips = [];
    $$('.has_connection').each(function(el)
    {
        el.tipdata = el.getNext('.tipdata').get('html');
        connectiontips.push(new Tips(el, {
            title: function() {
                    return el.tipdata;
                }
           ,text: ''
           ,className: 'tooltip_connection'
           })
        );
    });


    // big searchable map filled with tiny people
    if ($('map_search') && GBrowserIsCompatible())
    {
        var mapcontainer = $('map_search');
        var mapcanvas = mapcontainer.getElement('.map');        
        var latlng = new GLatLng('52.2143', '5.4931');
        bounds = new GLatLngBounds();
        var mapcoords = mapcontainer.getElement('.mapcoords');

        map = create_map(mapcanvas, latlng, widezoom, true, true, true, 'satellite');
        
        if (mapdata.length > 0)
        {
            var marker = null;
            mapdata.each(function(data)
            {
				var usercount = data.length;
				//for (var i = 0; i < usercount; i++)
				//{
					marker = create_infomarker(data);
					markers.push(marker);
				//}
            });
            
            var markerCluster = new MarkerClusterer(map, markers, {gridSize:40});
            
            if ($('radius'))
            {
                radius = $('radius').get('value').toInt();
                $('radius').addEvent('change', function(el)
                {
                    radius = $('radius').get('value').toInt();
                    if (last_point)
                    {
                        zoom = (map.getZoom() != widezoom);
                        draw(last_point, zoom);
                    }
                });
            }
            
            if (preset_coords)
            {
                point = new GLatLng(preset_coords[0].toFloat(), preset_coords[1].toFloat());
            }
        }
        
        if ($('local'))
        {
            var toggler = $('local');
            var target = $('localdiv');
            var checked = toggler.get('checked');
            
            toggler.addEvent('click', function()
            {
                checked = toggler.get('checked');
                target.fade((checked == true)? 'in' : 'out');
                
                zoom = (map.getZoom() != widezoom);
                set_circle(checked, zoom);
            });
            
            target.fade((checked == true)? 'show' : 'hide');
            set_circle(checked, true);
        }
    }
    
    // userphoto toggle from present to past
    if ($('alternate'))
    {
        var main = $('mainphoto');
        var alternate = $('alternate');

        var data = {
            'main'      : [main.get('src')
                          ,main.get('width').toInt()
                          ,main.get('height').toInt()
                          ]
           ,'alternate' : [alternate.get('src')
                          ,alternate.get('width').toInt()
                          ,alternate.get('height').toInt()
                          ]
           };
        
        main.addEvents({
            'mouseenter': function() { toggle_image(main, data, 'alternate'); }
           ,'mouseleave': function() { toggle_image(main, data, 'main'); }
           });
    }

    // small map in profile
    if ($('map_userloc') && GBrowserIsCompatible())
    {
        var mapcontainer = $('map_userloc');
        var mapcanvas = mapcontainer.getElement('.map');
        var mapcoords = mapcontainer.getElement('.mapcoords');
        
        if (mapcoords) // should always be the case(!!)
        {
            mapcoords = mapcoords.get('text').split(',');
            var latlng = new GLatLng(mapcoords[0], mapcoords[1]);
        
            map = create_map(mapcanvas, latlng, defaultzoom, true, false, true, 'hybrid');
            var icon = create_icon();
            var marker = create_marker(latlng, icon);
            map.addOverlay(marker);
        }
    }

    // a little JS to make all blocks the same height, looks nicer.
    if ($('userlist'))
    {
        var columns = $('userlist').getElements('.col1');
        var columndata = [];
        
        columns.each(function(col, index)
        {
            columndata[index] = col.getElements('.infocard .content');
        });
        
        var columncount = columns.length;

        var max = 0;
        var height = 0;
        var el = null;
        for (var i = 0; i < columndata[0].length; i++)
        {
            max = 0;
            for (var j = 0; j < columncount; j++)
            {
                if (columndata[j][i])
                {
                    //                        total height                   top padding                                        bottom padding           bottom borders
                    height = columndata[j][i].getSize().y - columndata[j][i].getStyle('padding-top').toInt() - columndata[j][i].getStyle('padding-bottom').toInt() - 1;
                    if (height > max)
                    {
                        max = height;
                    }
                }
            }
            
            // set all blocks to the same (max) height:
            for (var j = 0; j < columncount; j++)
            {
                if (columndata[j][i])
                {
                    columndata[j][i].setStyle('height', max);
                }
            }  
        }
    }
});

function toggle_image(img, data, key)
{
    img.set({
        'src'   : data[key][0]
       ,'width' : data[key][1]
       ,'height': data[key][2]
       });
}

function set_circle(checked, zoom)
{
    if (preset_coords)
    {
        if (checked == true)
        {
            draw(point, zoom);
            last_point = point;
        }
        else
        {
            if (circle) map.removeOverlay(circle);
        }
    }
}
