syntops.city = function($) {
    function init(cities)
    {
        var visitorCity = init_location();
        if (visitorCity) {
            var lat = visitorCity.lat;
            var lng = visitorCity.lng;
            var min_distance = 99999999.0;
            var new_city;
            
            $.each(cities, function(key, obj) {
				var calc_distance = distance(lat, lng, obj.lat, obj.lng);
				if (calc_distance <= min_distance) {
					min_distance = calc_distance;
					new_city = obj;
				}
            });
            
            var xml_greeting = new_city.salutation;
            var new_greeting = xml_greeting.replace('%s', " " + visitorCity.name);
            
            if (!$('#parallax').hasClass(new_city['class']))
            {
                $('#parallax').removeClass().addClass(new_city['class']);
            }
            if ($('#greeting').text() != new_greeting)
            {
                $('#greeting').text(new_greeting);
            }
        }
    }
    function init_location()
    {
    	var syntops_city_cookie;
    	if (syntops_city_cookie = $.cookie('syntops_city'))
    	{
    		try {
    			var stored_city = JSON.parse(syntops_city_cookie);
    			return stored_city;
    		} catch (e) { /* nothing */ }
    	}
        if (google.loader.ClientLocation)
        {
            var lat = google.loader.ClientLocation.latitude;
            var lng = google.loader.ClientLocation.longitude;
            var name = google.loader.ClientLocation.address.city;
        }
        else
        {
            return false;
        }
        
        var city = {
            name: name,
            lat: lat,
            lng: lng
        }
        $.cookie('syntops_city', JSON.stringify(city), {path: '/'});
        return city;
    }
    
    function distance(lat1, lng1, lat2, lng2)
    {
        var theta = lng1 - lng2;
        var dist = Math.sin(deg2rad(lat1)) * Math.sin(deg2rad(lat2)) + Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * Math.cos(deg2rad(theta));
        dist = Math.acos(dist);
        dist = rad2deg(dist);
        return dist;
    }
    
    function rad2deg(angle)
    {
        return angle * 57.29577951308232;
    }
    
    function deg2rad(angle)
    {
        return (angle / 180) * Math.PI;
    }
    
    return {
        init: init,
        init_location: init_location,
        distance: distance,
        rad2deg: rad2deg,
        deg2rad: deg2rad
    };
}(jQuery);

