var map_load_cb = function() {
	map_load.ready = 2;
	map_load(map_load_cb.data, map_load_cb.id);
	if (map_load_cb.data2)
		map_load(map_load_cb.data2, map_load_cb.id2);
}

var map_load = function(data, id) {
	if (map_load.ready == 0) {
		map_load.ready = 1;
		map_load_cb.data = data;
		map_load_cb.id = id;

		$.getScript('http://maps.google.com/maps/api/js?sensor=false&callback=map_load_cb');

		return;
	}

	if (map_load.ready == 1) {
		map_load_cb.data2 = data;
		map_load_cb.id2 = id;
		return;
	}
	
    var latlng = new google.maps.LatLng(data.lat, data.lng);
    var opts = {
        zoom: 12,
        center: latlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };

    map = new google.maps.Map(document.getElementById(id), opts);

    marker = new google.maps.Marker({
        position: latlng,
        map: map,  
        title: data.address
    }); 

	if (data.noinfo)
		return;

    var html = '<div><p>' + data.address + '</p>';
    if (data.phone) html += '<p><label>Phone: </label> ' + data.phone + '</p>';
    if (data.mobile) html += '<p><label>Mobile: </label> ' + data.mobile + '</p>';
    if (data.fax) html += '<p><label>Fax: </label> ' + data.fax + '</p>';
    if (data.email) html += '<p><label>E-mail: </label> <a href="mailto:' + data.email + '">' + data.email + '</a></p>';
    html += '</div>';

    infowindow = new google.maps.InfoWindow({ content: html });
    infowindow.open(map, marker);
}

var map_open = function(data) {
    var map;
    var marker;
    var infowindow;

    var finish = function() {
		map_load(data, Shadowbox.playerId);
    };

    if (!map_open.ready) {
        Shadowbox.init();
        map_open.ready = 1;
    }

    Shadowbox.open({
        player: 'html',
        content: '',
        height: 400,
        width: 600,
        options: { onFinish: finish }
    });
}
map_open.ready = 0;
map_load.ready = 0;

