function setupWii() {
    onLoad();

    if( window.opera && window.opera.wiiremote ) {
        mapviewer.setOption( 'drag', 'zoombox' );
        Wiimote.defaultActions(false);
        Wiimote.autoMode(true);
        setInterval( checkWii, 50 );
    }
}

var pos = new MMPoint( 0, 0 );

var remote = 0;

var goto_timeout;

function checkWii() {
    var wiidata = Wiimote.readData( remote );
    var dims = mapviewer.getDimensions();
    var third = new MMDimensions( dims.width / 3, dims.height / 3 );

    pos.x = wiidata[Wiimote.X_COORD]
    pos.y = wiidata[Wiimote.Y_COORD]
    var s = posToStep(pos);
    var direction = new MMPoint( 0, 0 );
    if( wiidata[Wiimote.BUTTON_UP] ) {
        direction.y = -1;
    } else if( wiidata[Wiimote.BUTTON_DOWN] ) {
        direction.y = 1;
    }
    if( wiidata[Wiimote.BUTTON_LEFT] ) {
        direction.x = -1;
    } else if( wiidata[Wiimote.BUTTON_RIGHT] ) {
        direction.x = 1;
    }
    if( direction.x || direction.y ) {
        mapviewer.moveMap( new MMPoint( direction.x * ( dims.width / 2 ), direction.y * ( dims.height / 2 ) ) );
    }
    if( wiidata[Wiimote.BUTTON_PLUS] ) {
        mapviewer.zoom(1,'wii-plus',posToStep(pos));
    } else if( wiidata[Wiimote.BUTTON_MINUS] ) {
        mapviewer.zoom(-1,'wii-minus',posToStep(pos));
    }
    if( wiidata[Wiimote.BUTTON_1] ) {
        // navigating to the mouse cursor is a bit fast so half the step size
        s.x /= 2;
        s.y /= 2;
        mapviewer.goToPosition( mapviewer.getMapPositionAt(s) );
    }
    if( wiidata[Wiimote.BUTTON_2] ) {
        // navigating to the mouse cursor is a bit fast so half the step size
        if( goto_timeout )
            clearTimeout( goto_timeout );
        goto_timeout = setTimeout( function() {
            goto_timeout = undefined;
            mapviewer.goToPosition( mapviewer.getMapPositionAt(s) );
        }, 100 );
    }
}

function posToStep(p) {
    p = p.copy();
    var d = mapviewer.getDimensions();
    p.x -= d.width/2;
    p.y -= d.height/2;
    return p;
}

window.onload = setupWii;
