zoomMapToMarkers = function(markers) {
    if (markers.length == 0) {
        return false;
    }
    if (markers.length == 1) {
        map.setCenter(markers[0].getPosition());
        map.setZoom(10);
        return true;
    }
    var n, s, w, e;
    w = markers[0].getPosition().lng();
    e = w;
    n = markers[0].getPosition().lat();
    s = n;
    var lat, lng;
    for (var i=1; i<markers.length; i++) {
        lng = markers[i].getPosition().lng();
        lat = markers[i].getPosition().lat();
        w = Math.min(w, lng);
        e = Math.max(e, lng);
        n = Math.max(n, lat);
        s = Math.min(s, lat);
    }
    var sw = new google.maps.LatLng(s, w);
    var ne = new google.maps.LatLng(n, e);
    map.fitBounds(new google.maps.LatLngBounds(sw, ne));
    return true;
}

initMap = function() {
    if (!google || !google.maps) {
        return false;
    }
    var deMiddle = new google.maps.LatLng(51.086272518565515, 10.3875732421875);
    var myOptions = {
      zoom: 6,
      center: deMiddle,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    map = new google.maps.Map(document.getElementById("resultMap"), myOptions);

    return true;
}

populateMapdata = function() {
    //$("#resultMap").css("display", "none");
    //return;
    var results = $(".geoContainer");
    var markers = [];

    results.each(function() {
        var latitude, longitude, latSpan, lonSpan, title, titleSpan;
        var marker, position;
        titleSpan = $(".title", this);
        if (titleSpan.length == 1 && $("a", titleSpan).length == 1) {
            title = $("a", titleSpan)[0].innerHTML;
        } else {
            title = (titleSpan.length == 1)?titleSpan[0].innerHTML:null;
        }
        latSpan = $(".latitude", this);
        latitude = (latSpan.length == 1)?latSpan[0].innerHTML:null;
        lonSpan = $(".longitude", this);
        longitude = (lonSpan.length == 1)?lonSpan[0].innerHTML:null;
        //marker = createMarker(title, longitude, latitude);
        position = new google.maps.LatLng(latitude, longitude);
        marker = new google.maps.Marker({
            position: position,
            map: map,
            title: title
        });
        markers.push(marker);
    });
    zoomMapToMarkers(markers);
}

bindGroupButtons = function() {
    $(".group").each(function(i, item){
        var joinDiv = $(".join", item)[0];
        var idDiv = $(".id", item)[0];
        var groupId = idDiv.innerHTML;
        $(joinDiv).css("cursor", "pointer");
        joinDiv.innerHTML = "Ich bin/war Mitglied";
        $(joinDiv).bind('click', function() {
            $("#unit_id")[0].value = groupId;
            $('#dialog').dialog('open');
        });
    });
}

bindDateFields = function() {
    $.datepicker.setDefaults({
        yearRange : '-60:+10',
        dateFormat : 'yy-mm-dd',
        changeMonth: true,
        changeYear: true
    });
    $("#valid_from").datepicker($.datepicker.regional['de']);
    $("#valid_to").datepicker($.datepicker.regional['de']);
}

populateTasks = function() {
    $.get('http://pfadis.com/app/api/rest/Task', {}, function(data, status) {
        if (data && data.result && data.result.length) {
            for (var i=0; i < data.result.length; i++) {
                $("#task_id").addOption(data.result[i].id, data.result[i].name);
            }
        }
    }, 'jsonp');
}

createDialog = function() {
    $("#dialog").dialog({
        bgiframe: true,
        autoOpen: false,
        width: 480,
        height: 400,
        modal: true,
        buttons: {},
        close: function() {
        }
    });

    $('#add-task').click(function() {
        $('#dialog').dialog('open');
    }).hover(function(){
        $(this).addClass("ui-state-hover");
    }, function(){
        $(this).removeClass("ui-state-hover");
    })
    .mousedown(function(){
        $(this).addClass("ui-state-active");
    })
    .mouseup(function(){
        $(this).removeClass("ui-state-active");
    });
}

bindForm = function() {
    $('#form_new_task').bind('submit', function() {
        $(this).ajaxSubmit({
            dataType:  'json',
            success: function() {
                $('#dialog').dialog('close');
                window.location.reload();
            },
            error: function(x, s) {
                alert("Die Daten wurden nicht akzeptiert.");
            }
        });
        return false; // <-- important!
    });
    $('#canceler').click(function() {
        $('#dialog').dialog('close');
    })
}



$(document).ready(function() {
    if (initMap()) {
        populateMapdata();
    }
    $(".taskTable").tablesorter();
    if (user != null) {
        bindGroupButtons();
        bindDateFields();
        createDialog();
        populateTasks();
        bindForm();
    }
});
