def MOB_handle():
    global process_nav_data
    global disp_time
    global disp_lat
    global disp_long
    global waypoints_names
    global waypoints_lats
    global waypoints_longs
    global next_waypoint_name
    global mob_lat
    global mob_long
    global scale_choice
    global scale_pos
    global lo_cation
    global lo_cation_scale
    global disp_scale
    global tripometer
    global log_name
    next_waypoint_name.set(waypoints_names[1])
    waypoints_lats[1] = process_nav_data[16][1]
    waypoints_longs[1] = process_nav_data[17][1]
    scale_pos = 0
    lo_cation_scale = scale_choice[scale_pos]
    mark_points = dmsmodule.plot_marker(waypoints_lats[1], waypoints_longs[1],
                                        .5, lo_cation_scale, 1,
                                        process_nav_data[0][1], 0)

    mob_lat = mark_points[0]
    mob_long = mark_points[1]

    mob_position.set_xdata(mob_long)
    mob_position.set_ydata(mob_lat)
    lo_cation_axis = dmsmodule.location_axis(process_nav_data[16][1],
                                             process_nav_data[17][1], 4, 3,
                                             lo_cation_scale)
    lo_cation.axis(lo_cation_axis)
    disp_scale.set('Chart ' + str(round((lo_cation_scale * 4 / 3), 2)) +
                   ' x ' + str(lo_cation_scale) + ' Nm')
    loc_canvas.draw()
    visualframe.update()

    data_log(tripometer, log_name, process_nav_data, 1)
    print '***Man Overboard***'
    print 'Time', disp_time.get()
    print 'Lat DMS', disp_lat.get()
    print 'long DMS', disp_long.get()
    print 'lat decimal', process_nav_data[16][1]
    print 'long decimal', process_nav_data[17][1]
def zoom_draw():
    global lo_cation
    global lo_cation_scale
    global scale_choice
    global scale_pos
    global disp_scale
    global visualframe
    if scale_pos < 0:
        scale_pos = 0
    if scale_pos > len(scale_choice):
        scale_pos = len(scale_choice)

    lo_cation_scale = scale_choice[scale_pos]
    disp_scale.set('Chart ' + str(round((lo_cation_scale * 4 / 3), 2)) +
                   ' x ' + str(lo_cation_scale) + ' Nm')

    lo_cation_axis = dmsmodule.location_axis(process_nav_data[16][1],
                                             process_nav_data[17][1], 4, 3,
                                             lo_cation_scale)
    lo_cation.axis(lo_cation_axis)

    loc_canvas.draw()
    visualframe.update()
        if MOB_reset == 0:
            if GPIO.input(4) == 0:
                MOB_reset = 1
                MOB_handle()

    #Update location chart
    if nowtime - gctime > 10:

        print 'cycles ', counter
        print 'Distance ' + str(tripometer) + ' Nm'
        gctime = round(time.time(), pr)
        location_data_history(his_lat, his_long, process_nav_data[16][1],
                              process_nav_data[17][1], max_storage,
                              process_nav_data[0][1], process_nav_data[8][1])
        lo_cation_axis = dmsmodule.location_axis(process_nav_data[16][1],
                                                 process_nav_data[17][1], 4, 3,
                                                 lo_cation_scale)
        trip_calculate(process_nav_data[16][1], process_nav_data[17][1],
                       lastlat, lastlong)

        data_log(tripometer, log_name, process_nav_data, 0)

        lo_cation.axis(lo_cation_axis)
        loc_canvas.draw()
        visualframe.update()
        lastlat = process_nav_data[16][1]
        lastlong = process_nav_data[17][1]
        counter = 0

    O_p_n_d = process_nav_data