
//this is primary function that is called -
//from an onclick event in a link:
function gload(title,description,lat,lon,gheight,gwidth)
{
    if(mapload(description,lat,lon,gheight,gwidth))
    {
        //if so, then make the thickbox call:
        // opens the map_window div into thickbox
        tb_show(title,'#TB_inline?height=400&width=700&inlineId=googleMap',true);
    }
}

function mapload(description,lat,lon,gheight,gwidth)
{
    if (GBrowserIsCompatible())
    {
        //this is the construct you need to use to get the map to display correctly:
        var map = new GMap2(document.getElementById("map"),
            {size: new GSize(gwidth,gheight)});  //this is where the height and width are set.
        var zoomLevel = 13;
        //map.removeMapType(G_HYBRID_MAP);
        //map.addMapType(G_PHYSICAL_MAP);
        map.addControl(new GMapTypeControl());
        map.addControl(new GLargeMapControl());
        map.setCenter(new GLatLng(lat,lon),zoomLevel); //,G_PHYSICAL_MAP);
        map.scrollWheelZoomEnabled(true);
        // Add marker
        var point = new GLatLng(lat,lon);
        var gMarker = new GMarker(point);
        map.addOverlay(gMarker);
        gMarker.openInfoWindowHtml(description, {noCloseOnClick:true}); // Bimo
        /** Alle Schatten ausschalten */
        map.getPane(G_MAP_FLOAT_SHADOW_PANE).style.visibility='hidden';
        return true;
    }
}

$(document).ready(function()
{
    $('.fadeOut').livequery(function()
    {
        $(this).fadeTo(7000, 0.2, function()
        {
            $(this).slideUp(1000, function()
            {
                $(this).remove();
            });
        });
    });

    $('img.captcha').livequery('click', function(e)
    {
        var now = new Date();
        var re = new RegExp(/(timestamp=[0-9]+)/);
        var src = $(this).attr('src');

        src = src.replace(re, 'timestamp='+now.getTime());

        $(this).attr('src', src);
    });

    var map;

    function drawAppointments()
    {
        if(typeof(appointments) != 'undefined')
        {
            $('.appointment').remove();

            map = new Array();

            var days = new Array('Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag');
            var months = new Array('Januar', 'Februar', 'M&auml;rz', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember');

            var calendarTablePosition = $('.calendarTable').position();
            var calendarTableBodyHeight = $('.calendarTable tbody').height();

            var data = appointments.data;

            for(var i = 0; i < data.length; i++) // für jeden tag
            {
                var tdDayPosition = $('.calendarTable tbody tr:first td:eq('+(i+1)+')').position();
                var tdDayWidth = $('.calendarTable tbody tr:first td:eq('+(i+1)+')').width();
                var tdDayHeight = $('.calendarTable tbody tr:first td:eq('+(i+1)+')').height();

                for(var j = 0; j < data[i].length; j++)
                {
                    var pxTop = tdDayPosition.top + calendarTableBodyHeight * data[i][j]['start'];
                    var pxLeft = tdDayPosition.left + j * tdDayWidth / data[i].length;
                    var pxHeight = calendarTableBodyHeight * (data[i][j]['ende'] - data[i][j]['start']);
                    var pxWidth = tdDayWidth / data[i].length - 1;

                    $('body').append('<div class="appointment" style="top:'+pxTop+'px;left:'+pxLeft+'px;width:'+pxWidth+'px;height:'+pxHeight+'px;">&nbsp;</div>');

                    map.push(new Array('div-appointment-'+i+'-'+data[i][j]['id'], pxTop, pxLeft, pxHeight, pxWidth));
                }
            }
        }
    }

    drawAppointments();

    $(window).resize(function()
    {
        drawAppointments();
    });

    $(document).mousemove(function(e)
    {
        if(typeof(map) != 'undefined')
        {
            var cssObj;

            for(var i = 0; i < map.length; i++)
            {
                var entry = map[i];

                if(   e.pageX >= entry[2] && e.pageX <= entry[2] + entry[4]
                   && e.pageY >= entry[1] && e.pageY <= entry[1] + entry[3])
                    {
                        if($('#'+entry[0]).css('display')=='none')
                        {
                            cssObj = {
                                'visibility' : 'hidden',
                                'display'    : 'block'
                            }
                            $('#'+entry[0]).css(cssObj);
                        }

                        cssObj = {
                            'top'         : e.pageY+'px',
                            'left'        : e.pageX+'px',
                            'margin-top'  : e.pageY + 10 + document.getElementById(entry[0]).clientHeight > document.documentElement.scrollTop + $(window).height() ? '-' + (document.getElementById(entry[0]).clientHeight + 10) + 'px' : '5px',
                            'margin-left' : e.pageX + 10 + document.getElementById(entry[0]).clientWidth > document.documentElement.scrollLeft + $(window).width() ? '-' + (document.getElementById(entry[0]).clientWidth + 10) + 'px' : '5px',
                            'visibility'  : ''
                        }

                        $('#'+entry[0]).css(cssObj);
                    }
                    else
                    {
                        $('#'+entry[0]).hide();
                    }
            }
        }
    });
});
