/// <reference path="jQuery.intellisense.js"/>
/// <reference path="xeko.js"/>
/// <reference path="messaging.js"/>

$(document).ready(function() 
{
	// Saved Activities button
	$("#navMySavedActivitiesLink").click(function(e)
	{
		e.preventDefault();
		
		$("img", this).attr("src", "/images/btn/btn_mysavedactivities_on.png");
		
		if (xeko.widgets.navActivities.savedLoaded)
		{
			xeko.widgets.navActivities.showDiv("navMySavedActivitiesDiv");
		}
		else
		{
			// Get saved activities for this user
			$.ajax({
				type: "GET",
				url : "/widgets/widget.AgentInfo.handler.php?request=agentfavorites&filter=challenge",
				beforeSend : function() { xeko.lightbox.show(xeko.strings.LOADING, true, "navLoadSavedActivities"); },
				complete : function() { xeko.lightbox.hide("navLoadSavedActivities"); },
				success : function(xml)
				{
					xeko.widgets.navActivities.renderTable(xml, "saved");
					xeko.widgets.navActivities.showDiv("navMySavedActivitiesDiv");
				}
			});
		}
		
		this.blur();
	});

	// Popular Activities button
	$("#navPopularActivitiesLink").click(function(e)
	{
		e.preventDefault();
		
		$("#navActivitiesPostits").css("background", "transparent url(/images/btn/btn_postitnotes_mostpopular_on.png)");
		
		if (xeko.widgets.navActivities.popularLoaded)
		{
			xeko.widgets.navActivities.showDiv("navPopularActivitiesDiv");
		}
		else
		{
			// Get saved activities for this user
			$.ajax({
				type: "GET",
				url : "/widgets/widget.Challenges.handler.php?type=popularchallenges",
				beforeSend : function() { xeko.lightbox.show(xeko.strings.LOADING, true, "navLoadPopularActivities"); },
				complete : function() { xeko.lightbox.hide("navLoadPopularActivities"); },
				success : function(xml)
				{
					xeko.widgets.navActivities.renderTable(xml, "popular");
					xeko.widgets.navActivities.showDiv("navPopularActivitiesDiv");
				}
			});
		}
		
		this.blur();
	});

	// Recent Activities button
	$("#navRecentActivitiesLink").click(function(e)
	{
		e.preventDefault();
		
		$("#navActivitiesPostits").css("background", "transparent url(/images/btn/btn_postitnotes_myactivities_on.png)");
		
		if (xeko.widgets.navActivities.recentLoaded)
		{
			xeko.widgets.navActivities.showDiv("navRecentActivitiesDiv");
		}
		else
		{
			// Get saved activities for this user
			$.ajax({
				type: "GET",
				url : "/widgets/widget.AgentInfo.handler.php?request=agentrecentactivities",
				beforeSend : function() { xeko.lightbox.show(xeko.strings.LOADING, true, "navLoadRecentActivities"); },
				complete : function() { xeko.lightbox.hide("navLoadRecentActivities"); },
				success : function(xml)
				{
					xeko.widgets.navActivities.renderTable(xml, "recent");
					xeko.widgets.navActivities.showDiv("navRecentActivitiesDiv");
				}
			});
		}
		
		this.blur();
	});

	$("#savedActivitiesClose").click(function(e) {
	  e.preventDefault();
	  xeko.widgets.navActivities.closeDiv("navMySavedActivitiesDiv");
	});

	$("#recentActivitiesClose").click(function(e) {
	  e.preventDefault();
	  xeko.widgets.navActivities.closeDiv("navRecentActivitiesDiv");
	});

	$("#popularActivitiesClose").click(function(e) {
	  e.preventDefault();
	  xeko.widgets.navActivities.closeDiv("navPopularActivitiesDiv");
	});
	
	// "my activities" boxes must be re-rendered upon login
	xeko.events.notify("xeko.widgets.navActivities.resetBoxes", "login");

});

xeko.widgets.navActivities = {
  "maxRows": 6,
  "savedLoaded": false,
  "popularLoaded": false,
  "recentLoaded": false,
  "renderTable": function(xml, which) {
    var divName, nodeName, idNodeName, typeNodeName;

    switch (which) {
      case "saved":
        divName = "navMySavedActivitiesDiv";
        nodeName = "agentfavorite";
        noResults = xeko.strings.NAVACTIVITIES_NOSAVEDACTIVITIES;
        break;
      case "popular":
        divName = "navPopularActivitiesDiv";
        nodeName = "challenge";
        noResults = xeko.strings.NAVACTIVITIES_NOPOPULARACTIVITIES;
        break;
      case "recent":
        divName = "navRecentActivitiesDiv";
        nodeName = "activity";
        noResults = xeko.strings.NAVACTIVITIES_NORECENTACTIVITIES;
        break;
    }

    if ($(nodeName, xml).length == 0) {
      // No saved activities found; show messaging
      $("#" + divName + " table").hide();
      $("#" + divName + " h1").after("<p>" + noResults + "</p>");
    }
    else {
      // Default state
      $("#" + divName + " table>tbody").children().remove();
      $("#" + divName + " table").show();
      $("#" + divName + " h1").next("p").remove();

      var i = 1;
      $(nodeName, xml).each(function() {
        if (i <= xeko.widgets.navActivities.maxRows) {
          var title, guid, detail, itemType;

          switch (which) {
            case "saved":
              title = $("title", this).text();
              guid = $("favoriteitemid", this).text();
              detail = $("pointvalue", this).text() + " pts";

              xmlType = $("favoriteitemtype", this).text();
              switch (xmlType) {
                case "challenge":
                  itemType = "challenges";
                  break;
              }

              noResults = xeko.strings.NAVACTIVITIES_NOSAVEDACTIVITIES;
              break;
            case "popular":
              title = $("title", this).text();
              guid = $(this).attr("id");
              detail = $("pointvalue", this).text() + " pts";

              itemType = "challenges";

              noResults = xeko.strings.NAVACTIVITIES_NOPOPULARACTIVITIES;
              break;
            case "recent":
              // No link for these items, therefore no guid
              title = $("title", this).text();
              detail = xeko.utilities.formatShortDate($("datesubmitted", this).text());
              noResults = xeko.strings.NAVACTIVITIES_NORECENTACTIVITIES;
              break;
          }

          var url = "/" + itemType + "/" + guid;

          $("#" + divName + " table>tbody")
						.append("<tr />")	// new row
						.children(":last")	// select the newly created row
						.append("<td><img src='/images/g/g_pushpin.png'/></td>")	// first cell
						.append("<td />")	// description cell
						.append("<td class='points' />")	// points cell
						.children(":first").next()	// select second cell
						.append(title)	// Add activity title
						.append((guid == null) ? "" : " &mdash; <a href=\"" + url + "\">" + xeko.strings.NAVACTIVITIES_LINK + "</a>")	// link to activity
						.next()
						.append(detail)	// detail
					;
        }
        i++;
      });
    }

    xeko.widgets.navActivities[which + "Loaded"] = true;
  },
  "showDiv": function(which) {
    //set up lightbox
    if ($("div#navActivitiesShadow").length == 0) {
      $("div#subnav").append("<div id='navActivitiesShadow' class='lightbox'></div>");
    }
    
    $("div#navActivitiesShadow").click(function() {
      xeko.widgets.navActivities.closeDiv(which);
    });
    $("div#navActivitiesShadow").show();
    
    // Show popup
    $("#" + which).show();
  },
  "closeDiv": function(which) {
    $("div#navActivitiesShadow").hide();
    $("#" + which).hide();

    if (which == "navMySavedActivitiesDiv")
      $("#navMySavedActivitiesLink>img").attr("src", "/images/btn/btn_mysavedactivities_off.png");
    else
      $("#navActivitiesPostits").css("background", "transparent url(/images/btn/btn_postitnotes_off.png)");
  },
  "resetBoxes": function() {
    xeko.widgets.navActivities.savedLoaded = false;
    xeko.widgets.navActivities.recentLoaded = false;
  }
};