function mapDragBeginEvent(e)
{   
    map.dragStartedAt = { x: e.memo.mouseCoords.x, y: e.memo.mouseCoords.y };
}

function mapDragEndEvent(e)
{
    updateDerduborSearch("#ddbLogos", 5000);
    
    if(measurement.addingEnabled)
    {
        measurement.mapMovement = true;
    }
}

function mapZoomInEvent(e)
{
    updateDerduborSearch("#ddbLogos", 2000);
    //$j("#zoomInButton").parent().effect("highlight");
}

function mapZoomOutEvent(e)
{
    updateDerduborSearch("#ddbLogos", 2000);
    //$j("#zoomOutButton").parent().effect("highlight");
}

function mapClickEvent(e)
{
    if(measurement.pointAddingEnabled)
    {
        if(!measurement.mapMovement)
        {
            measurement.addPoint(e.memo.mouseMapCoords);

            if(!settings.measurement.points)
            {
                settings.measurement.points = [];
            }

            $j("#tool-measurement-path-display span").html(measurement.getTotalLengthFormatted());
            $j("#tool-measurement-area-display span").html(measurement.getAreaFormatted());
        }
        else
        {
            measurement.mapMovement = false;
        }
    }
}

function toolClickEvent(e)
{
    $j(e.currentTarget).effect("highlight");
    var action = $j(e.currentTarget).attr('id');
    switch(action)
    {
        case 'tool-fullscreen':
            toggleFullscreen();
            break;
        case 'tool-zoom-in':
            map.zoomIn();
            break;
        case 'tool-zoom-out':
            map.zoomOut();
            break;
        case 'tool-share-map':
            launchMapSharing();
            break;
        case 'tool-toggle-measurement':
            toggleMeasurementBox();
            break;
        case 'tool-view-vector':
            util.setMapStyle(0, e.currentTarget, $j(e.currentTarget).parent().find("li#tool-view-vector.ui-state-highlight, #tool-view-ortho.ui-state-highlight, #tool-view-hybrid.ui-state-highlight"));
            break;
        case 'tool-view-ortho':
            util.setMapStyle(1, e.currentTarget, $j(e.currentTarget).parent().find("li#tool-view-vector.ui-state-highlight, #tool-view-ortho.ui-state-highlight, #tool-view-hybrid.ui-state-highlight"));
            break;
        case 'tool-view-hybrid':
            util.setMapStyle(2, e.currentTarget, $j(e.currentTarget).parent().find("li#tool-view-vector.ui-state-highlight, #tool-view-ortho.ui-state-highlight, #tool-view-hybrid.ui-state-highlight"));
            break;
        case 'button-nw':
            map.move(new Move(100, 100));
            break;
        case 'button-n':
            map.move(new Move(0, 100));
            break;
        case 'button-ne':
            /* Workaround pga bug i Norkart - se http://pastie.org/private/waxahipeiolnvxfzcjxrg */
            map.move(new Move(-100, 100.001));
            break;
        case 'button-w':
            map.move(new Move(100, 0));
            break;
        case 'button-e':
            map.move(new Move(-100, 0));
            break;
        case 'button-sw':
            /* Workaround pga bug i Norkart - se http://pastie.org/private/waxahipeiolnvxfzcjxrg */
            map.move(new Move(100.001, -100));
            break;
        case 'button-s':
            map.move(new Move(0, -100));
            break;
        case 'button-se':
            map.move(new Move(-100, -100));
            break;
        case 'tool-measurement-toggle-path-points-adding':
            togglePathPointsAdding(e);
            break;
        case 'tool-measurement-clear-path-points':
            clearPathPoints();
            break;
    }
}

function documentKeyUp(evObj)
{
    if(evObj.keyCode == 32 && measurement.temporaryMoveInProgress && !measurement.pointAddingEnabled)
    {
        measurement.temporaryMoveInProgress = false;
        measurement.pointAddingEnabled = true;
        $j("#map-holder").css('cursor', 'crosshair');
        return false;
    }

}

function documentKeyDown(evObj)
{
    if(evObj.keyCode == 32)
    {
        if(measurement.pointAddingEnabled)
        {
            
            measurement.temporaryMoveInProgress = true;
            measurement.pointAddingEnabled = false;
            $j("#map-holder").css('cursor', 'move');
        }

        if(measurement.temporaryMoveInProgress)
        {
            evObj.preventDefault();
            evObj.stopPropagation();
        }
    }
    if(typeof(wasdEnabled) != 'undefined' && wasdEnabled)
    {
        switch(evObj.keyCode)
        {
            case 87: //w
                $j('#button-n').click();
                break;
            case 65: //a
                $j('#button-w').click();
                break;
            case 83: //s
                $j('#button-s').click();
                break;
            case 68: //d
                $j('#button-e').click();
                break;
            case 81: //q
                $j('#tool-zoom-in').click();
                break;
            case 69: //e
                $j('#tool-zoom-out').click();
                break;
        }
        evObj.preventDefault();
        evObj.stopPropagation();
    }
}