#include "globals.h"
#include "local_proto.h"

static int where_12 (View *,int,int);
static int where_21 (View *,int,int);
static int where_am_i (View *,int,int,Window *,double *,double *,Window *);

int where (int x, int y)
{
    if (VIEW_MAP1->cell.configured && In_view (VIEW_MAP1, x, y))
	where_12 (VIEW_MAP1, x, y);
    else if (VIEW_MAP1_ZOOM->cell.configured && In_view (VIEW_MAP1_ZOOM, x, y))
	where_12 (VIEW_MAP1_ZOOM, x, y);
    else if (VIEW_MAP2->cell.configured && In_view (VIEW_MAP2, x, y))
	where_21 (VIEW_MAP2, x, y);
    else if (VIEW_MAP2_ZOOM->cell.configured && In_view (VIEW_MAP2_ZOOM, x, y))
	where_21 (VIEW_MAP2_ZOOM, x, y);
    return 0 ; /* return but don't quit */
}

static int where_12 (View *view,int x, int y)
{
    where_am_i (view, x, y, MENU_WINDOW, group.E12, group.N12, INFO_WINDOW);

    return 0;
}

static int where_21 (View *view,int x, int y)
{
    where_am_i (view, x, y, INFO_WINDOW, group.E21, group.N21, MENU_WINDOW);

    return 0;
}

static int where_am_i (View *view,int x, int y,Window *w1,
    double *E,double *N,Window *w2)
{
    double e1,n1,e2,n2;
    int row,col;

    char buf[100];

/* convert x,y to east,north at center of cell */
    col = view_to_col (view, x);
    e1 = col_to_easting (&view->cell.head, col, 0.5);
    row = view_to_row (view, y);
    n1 = row_to_northing (&view->cell.head, row, 0.5);

    Curses_clear_window (w1);
    sprintf (buf, "East:  %10.2f", e1);
    Curses_write_window (w1, 3, 3, buf);
    sprintf (buf, "North: %10.2f", n1);
    Curses_write_window (w1, 4, 3, buf);

/* if transformation equation is useable, determine point via equation */
    if (group.equation_stat <= 0) return 1;

    I_georef (e1, n1, &e2, &n2, E, N);
    Curses_clear_window (w2);
    sprintf (buf, "East:  %10.2f", e2);
    Curses_write_window (w2, 3, 3, buf);
    sprintf (buf, "North: %10.2f", n2);
    Curses_write_window (w2, 4, 3, buf);

    return 0;
}
