var long_center;
var lat_center;
var long_ratio;
var lat_ratio;
var ip_map;

$(document).ready(function() {
    if (page != "home") return;
    
    var wid = $("#ip_map_canvas").width();
    var hei =  $("#ip_map_canvas").height();
    
    long_center = 392/800*wid;
    lat_center = 195/401*hei;
    
    long_ratio = 401/800*wid/180; // pixel/deg
    lat_ratio = 180/401*hei/-80; // pixel/deg
    
    ip_map = Raphael("ip_map_canvas", wid, hei);
    
    if ($.browser.msie || $.browser.webkit || ($.browser.mozilla && parseInt($.browser.version) < 4)) getCircles(false);
    else {
        $("#ip_map_image").load(function() {
            getCircles(false);
        });
    }
});

function getCircles(wait) {
    $.post("/framework/ip_map/ip_map_data.php", {
        "get": 1,
        "max_radius": 5,
        "min_radius": 1.5,
        "distance_factor": 1.5,
        "hit_factor": 2000
    }, function(data) {
        if (wait) {
            $("#ip_map").load(function() {
                $.each(data.circles, function(ind, circle) {
                    map_coordinate(circle.longitude, circle.latitude, circle.radius, circle.hits, circle.user, circle.profile);
                });
            });
        } else {
            $.each(data.circles, function(ind, circle) {
                map_coordinate(circle.longitude, circle.latitude, circle.radius, circle.hits, circle.user, circle.profile);
            });
        }
    }, "json");
}

var total_hits_counter = 0;
var profile_counter = 0;

function map_coordinate(long, lat, radius, hits, user, profile) {
    // IE FOR VERSIONS < 9
    if ($.browser.msie && parseInt($.browser.version) < 9) {
         // General Public
        if (!user) {
            var circle = ip_map.circle(long_center+long*long_ratio, lat_center+lat*lat_ratio, radius+10);
            circle.attr({
                "opacity": 0,
                "stroke-opacity": 0.7,
                "cursor": "pointer"
            });
            
            if (profile > 0) { circle.attr("fill", "#FCFF00"); }
            else { circle.attr("fill", "#FF0000"); }
        }
        
        setTimeout(function() {
            if (user) {
                circle = ip_map.circle(long_center+long*long_ratio, lat_center+lat*lat_ratio, radius+20);
                circle.attr({
                    "opacity": 0,
                    "fill": "#00FF00",
                    "stroke-opacity": 0.7,
                    "cursor": "pointer"
                });
            }
            total_hits_counter += parseInt(hits);
            $("#ip_map_hits").text(total_hits_counter);
            
            if (profile > 0) {
                profile_counter += parseInt(profile);
                $("#ip_map_profiles").text(profile_counter);
            }
            
            circle.attr({"r":radius, "opacity":0.9});
            
            circle.hover(function() {
                circle.animate({"r":radius+5}, 50, "bounce");
            }, function() {
                circle.animate({"r":radius}, 50, "bounce");
            });
        }, Math.random()*(1-user)*50 + 100);
    // OTHER BROWSERS
    } else {
        // General Public
        if (!user) {
            circle = ip_map.circle(long_center+long*long_ratio, lat_center+lat*lat_ratio, radius+10);
            circle.attr({
                "opacity": 0,
                "stroke-opacity": 0.7,
                "cursor": "pointer"
            });
            
            if (profile > 0) { circle.attr("fill", "#FCFF00"); }
            else { circle.attr("fill", "#FF0000"); }
        }
        
        setTimeout(function() {
            if (user) {
                circle = ip_map.circle(long_center+long*long_ratio, lat_center+lat*lat_ratio, radius+20);
                circle.attr({
                    "opacity": 0,
                    "fill": "#00FF00",
                    "stroke-opacity": 0.7,
                    "cursor": "pointer"
                });
            }
            
            if ($.browser.mozilla) { circle.attr("opacity",1); }
            total_hits_counter += parseInt(hits);
            $("#ip_map_hits").text(total_hits_counter);
            
            if (profile > 0) {
                profile_counter += parseInt(profile);
                $("#ip_map_profiles").text(profile_counter);
            }
            
            circle.animate({"r":radius, "opacity": 1}, Math.random()*(1-user)*750 + 1000*user, "bounce");
            
            circle.hover(function() {
                circle.animate({"r":radius+5}, 50, "bounce");
            }, function() {
                circle.animate({"r":radius}, 50, "bounce");
            });
        }, Math.random()*(1-user)*5000 + 6000*user);
    }
    
}
