﻿var WidgetToggle = {
  setPositions: function () {
    var offset = $(".widgetContainer").width();
    var modifier = CurrentBrowser.mobile ? 100 : 50;
    $("#divMapStatus").css("right", modifier + offset);
  }
};

var WidgetEventBinder = {
  bind: function () {

    $(".widgetContainer").delegate("#load-weather-button[disabled!='disabled']", "click", function () {
      WidgetController.getWeather();
    });

    $(".widgetContainer").delegate("#load-tides-button[disabled!='disabled']", "click", function () {
      WidgetController.getTides();
    });

    $(".widgetContainer").delegate("#load-flows-button[disabled!='disabled']", "click", function () {
      WidgetController.getFlows();
    });

    $("#flowAjaxContainer").delegate("#show-local-gauges", "click", RiverGauges.showLocalGauges);

    $("#tidesAjaxContainer").delegate("#show-local-sites", "click", TideSites.showLocalStations);

    $(".widgetGridContainer").delegate("#wftCalendarLink", "click", function (e) {
      if ($("#calendarContainer").is(":visible")) {
        $("#calendarContainer").hide();
        return;
      }
      Calendar.load(e.target);
    });

    $(".set-marker").live("click", function (e) {
      MarkerController.setMarker($(e.target).attr("latitude"), $(e.target).attr("longitude"), eval($(e.target).attr("markerType")));
    });

    $(".show-weather-details").live("click", function (e) {
      var container = e.target;
      var details = $("~ .daily-weather-details", container);

      if ($(details[0]).css("display") == "none") {
        $(container).removeClass("open-arrow");
        $(container).addClass("close-arrow");
      } else {
        $(container).removeClass("close-arrow");
        $(container).addClass("open-arrow");
      }
      details.slideToggle();
    });

    $("#modal-close").live("click", Modal.hide);

    $("#tripsAndJournal").delegate("#tripContainer .widgetGrid tr", "click", null, function (e) {
      $(document).trigger("trip-selected", [$(e.target).closest("tr").data("row-id")]);
    });

    $("#tripsAndJournal").delegate("#tripContainer .widgetGrid .delete-button", "click", null, function (e) {
      TripController.deleteTrip(e, $(e.target).attr("tripId"));
    });

    $("#tripsAndJournal").delegate("#markerContainer .widgetGrid tr", "click", null, function (e) {
      WaypointsController.selectWaypoint($(e.target).closest("tr").data("row-id"), e);
    });

    $("#tripsAndJournal").delegate("#markerContainer .widgetGrid .delete-waypoint", "click", null, function (e) {
      TripController.deleteTripMarker($(e.target).attr("markerId"));
    });

    $(".edit-journal").live("click", function (e) {
      JournalController.updateJournalPage(e, $(e.target).attr("journalPageId"));
    });

    $("#tripsAndJournal").delegate("#journalContainer .widgetGrid tr", "click", null, function (e) {
      JournalController.getJournalPageDetails(e);
    });

    $("#tripsAndJournal").delegate(".delete-journal", "click", null, function (e) {
      JournalController.deleteJournalPage(e, $(e.target).attr("journalPageId"));
    });

    $(".login-button").live("click", Account.logon);
    $(".login-cancel-button").live("click", Account.cancel);
    $(".change-password-button").live("click", Account.changePassword);

    $(".edit-trip-button").live("click", function (e) { TripController.editTrip($(e.target).attr("data-trip-id")); });

    $(".create-journal-button").live("click", JournalController.createJournalPage);

    $(".modal-cancel").live("click", Modal.hide);

    $(".minimize-button").live("click", function (e) {
      UIDisplay.toggleDiv($(e.target).attr("data-target-ui"));
      UIState.setUIDimensions();
    });

    $(".tabs").delegate(".tab", "click", function (e) {
      var targetUi = $(e.target).attr("data-target-ui");
      if (!targetUi)
        targetUi = $(e.target).closest(".tab").attr("data-target-ui");
      UIDisplay.showTab(targetUi, false);
    });

    $("#filter-container").delegate("#creative-family", "click", function () {
      if (settings.imageSearchEnabled) {
        MapController.setSelectedMarker(MapState.selectedMarker, true);
      }
    });

    $("#filter-container").delegate("#editorial-family", "click", function () {
      if (settings.imageSearchEnabled) {
        $("#editorial-family").is(":checked") ? $("#editorial-filter").removeAttr("disabled") : $("#editorial-filter").attr("disabled", "disabled");
        MapController.setSelectedMarker(MapState.selectedMarker, true);
      }
    });

    $("#filter-container").delegate("#editorial-filter", "change", function () {
      if (settings.imageSearchEnabled) {
        MapController.setSelectedMarker(MapState.selectedMarker, true);
      }
    });

    $("#filter-container").delegate("#preview-view", "click", function () {
      if (settings.imageSearchEnabled) {
        MapController.setSelectedMarker(MapState.selectedMarker, true);
      }
    });

    $("#search-container").delegate("#address-search-input", "keypress", function (e) {
      var code = (e.keyCode ? e.keyCode : e.which);
      if (code == 13) {
        SearchController.searchByAddress($("#address-search-input").val());
      }
    });

    $("#search-container").delegate("#address-search-button", "click", function () {
      SearchController.searchByAddress($("#address-search-input").val());
    });

    $("#places-asset-grid").delegate(".thumbnail-view img", "mouseover", function (e) {
      var id = $(e.target).closest("li").data();
      var html = $("li[data-id = 'preview-" + id.id + "']").html();
      Modal.setContent(html);
      $("#ModalContent li[data-id = 'preview-" + id.id + "']").show();
      $("#ModalControl").hide();
      Modal.show(true, 0);
    });

    $("#places-asset-grid").delegate(".thumbnail-view img", "mouseout", function () {
      Modal.hide(0);
    });

    $("#places-asset-grid").delegate("#breadcrumbs a", "click", function (e) {
      $(e.target).closest("li").remove();
      var specificPhrase = $("#breadcrumbs").text().replace("[x]", "");
      ImageSearchController.searchByPhrase(specificPhrase);
    });
  }
};

var CustomEventBinder = {
  bind: function () {

    $(document).bind("date-selected", MoonPhaseController.update);

    $(document).bind("trip-selected", function (e, tripId) {
      if (Session.authenticated) {
        TripController.selectedTripId = tripId;
        $("#set-waypoint").removeAttr("disabled");
        $("#create-journal-page").removeAttr("disabled");
      }

      TripController.getTripDetails(tripId);
    });

    $(document).bind("trip-details-loaded", function (e, tripId) {
      MarkerController.getTripMarkers(tripId);
    });

    $(document).bind("trip-markers-loaded", function (e, tripId) {
      if (settings.journalEnabled)
        JournalController.getTripJournalPages(tripId);
    });

    $(document).bind("trip-deselected", function () {
      TripController.selectedTripId = null;
    });

    $(document).bind("session-activity", function () {
      if (Session.authenticated) {
        //Session.renewTimer();
      };
    });

    $(document).bind("status-div-updated", WidgetToggle.setPositions);
  }
};

