﻿/// <reference path="../ActivityDataAccess.js" />
/// <reference path="../AgilityData.js" />
/// <reference path="../MapUtils.js" />
/// <reference path="../FavouriteDataAccess.js" />


Agility.RegisterNamespace("Subaru.ActivityDetails");

(function(ActivityDetails) {


    $(function() {
        setTimeout("Subaru.ActivityDetails.initializeHash()", 500);
    });

    ActivityDetails.CurrentActivity = new Object();
    var ActivityPanelLoaded = false;
    var ErrorOccured = false;
    var MediaDialog = null;
    var ShareThisDefaultLeftPosition = null;
    var ActivityDetailsConfigurationData = null;


    ActivityDetails.initializeHash = function() {
        //read the hash and check for the activity id in the hash
        if (location.hash != null && location.hash.indexOf("activity=") != -1) {
            var h = location.hash;
            h = h.substring(h.indexOf("activity=") + "activity=".length);
            var actID = parseInt(h);
            if (!isNaN(actID)) {
                ActivityDetails.LoadActivity(actID);
            }
        }
    }

    ActivityDetails.CheckQueryString = function() {
        var qActID = Agility.QueryString("activity");
        if (!isNaN(parseInt(qActID))) {
            location.href = location.pathname + "#activity=" + qActID;
        }
    }

    ActivityDetails.LoadActivity = function(ActivityID) {
        try {
            Subaru.MapUtils.ClearAllMapData();
            Subaru.WelcomeScreen.Close();

            Subaru.MapUtils.DeleteYouAreHereLayer();
        }
        catch (e) { }

        Subaru.MapUtils.MapMode = "Route";
        Subaru.ActivitySearchResults.CloseSearchResults();

        //loads the agility language data
        Subaru.AgilityData.LoadContentItem("ActivityDetailsConfiguration", ActivityDetails.ActivityDetailsConfigCallback);

        Subaru.ActivityDataAccess.GetActivity(ActivityID, ActivityDetails.GetActivityCallback);

    }

    ActivityDetails.ActivityDetailsConfigCallback = function(data) {
        if (data != null && data != undefined) {
            ActivityDetailsConfigurationData = data;
        }
    }

    ActivityDetails.ToggleTab = function(sender, LoadTabID) {
        var tabToLoad = $("#" + LoadTabID);

        $("#ActivityDetailsMainContnet .TabItem").each(function() {
            $(this).addClass("Off");
        });
        $(sender).removeClass("Off");

        $("#ActivityDetailsDescription").hide();
        $("#ActivityDetailsDetails").hide();
        $("#ActivityDetailsReviews").hide();
        $("#ActivityDetailsPhotosAndMedia").hide();
        $("#ActivityDetailsWriteReview").hide();

        tabToLoad.show();
    }

    ActivityDetails.GetActivityCallback = function(data) {

        if (data.ResponseType != Agility.UGC.API.ResponseType.OK) {
            ErrorOccured = true;
        } else {
            try {
                ActivityDetails.CurrentActivity.Activity = data.ResponseData;

                if (data.ResponseData.State == Agility.UGC.API.RecordState.Published || (window.location.href.indexOf("http://subaru.staging.edentity.ca") == 0)) {
                    var detailsPanel = $("#ActivityDetails");
                    var templateUrl = Agility.ResolveUrl("~/ClientTemplates/ActivityDetails.htm");
                    detailsPanel.setTemplateURL(templateUrl);
                    detailsPanel.setParam("SubmittedBy", Subaru.AgilityData.GetGlobalLanguageResource("ActivityDetails_SubmittedBy"));

                    //detailsPanel.setParam("SubmittedByUser", "Subaru");

                    detailsPanel.setParam("Description", Subaru.AgilityData.GetGlobalLanguageResource("ActivityDetails_Description"));
                    detailsPanel.setParam("Details", Subaru.AgilityData.GetGlobalLanguageResource("ActivityDetails_Details"));
                    detailsPanel.setParam("Reviews", Subaru.AgilityData.GetGlobalLanguageResource("ActivityDetails_Reviews"));

                    detailsPanel.setParam("PhotosAndMedia", Subaru.AgilityData.GetGlobalLanguageResource("ActivityDetails_PhotosAndMedia"));
                    detailsPanel.setParam("ReturnToSearch", Subaru.AgilityData.GetGlobalLanguageResource("ActivityDetails_ReturnToSearch"));
                    detailsPanel.setParam("ShareThisImage", Subaru.AgilityData.FindContentItemProperty(ActivityDetailsConfigurationData, "ShareThisButton"));

                    detailsPanel.setParam("TrackingURL",
                    Agility.ResolveUrl("~/PageTracking.aspx") + "?Action=LoadActivity&ID=" + ActivityDetails.CurrentActivity.Activity.ID);

                    var dataArray = new Array();

                    dataArray[0] = data.ResponseData;

                    detailsPanel.processTemplate(dataArray);

                    //Load AddThis.com functionality
                    ActivityDetails.LoadShareThis();

                    detailsPanel.fadeIn("slow");
                    ActivityPanelLoaded = true;

                    //set the hash...
                    location.hash = "activity=" + ActivityDetails.CurrentActivity.Activity.ID;

                    Subaru.ActivityDataAccess.GetActivityDetails(data.ResponseData.ID, ActivityDetails.GetActivityDetailsCallback);
                    Subaru.ActivityDataAccess.GetActivityReviews(data.ResponseData.ID, ActivityDetails.GetActivityReviewsCallback);
                    Subaru.ActivityDataAccess.GetActivityMedia(data.ResponseData.ID, ActivityDetails.GetActivityMediaCallback);
                } else {
                    ErrorOccured = true;
                }

            } catch (err) {
                ErrorOccured = true;
            }
        }
    }

    ActivityDetails.LoadShareThis = function() {

        var activityUrl = "?activity=" + ActivityDetails.CurrentActivity.Activity.ID;

        var path = location.href.substring(0, location.href.toLowerCase().indexOf("/home.aspx") + 10);

        activityUrl = path + activityUrl;

        addthis.button('#ActivityDetails_AddThis',
            {
                ui_click: true
            },
            {
                url: activityUrl,
                title: ActivityDetails.CurrentActivity.Activity.Title
            }
        );
    }

    ActivityDetails.AdjustShareThisPosition = function() {

        var wrapper = $(".stwrapper");

        var value = null;
        if (ShareThisDefaultLeftPosition == null) {

            ShareThisDefaultLeftPosition = wrapper.css("left");
        }

        if (ShareThisDefaultLeftPosition != null) {
            value = ShareThisDefaultLeftPosition.replace("px", "");

            value = value - 255;

            wrapper.css("left", value + "px");
        }
        wrapper.css("z-index", 100000);
        //alert(wrapper.html());
        wrapper.show();
    }

    ActivityDetails.GetActivityDetailsCallback = function(data) {
        if (data.ResponseType != Agility.UGC.API.ResponseType.OK) {
            ErrorOccured = true;
            // alert(data.Message);
        } else {
            ActivityDetails.CurrentActivity.Details = data.ResponseData;

            var descriptionPanel = $("#ActivityDetailsDescription");

            var templateUrl = Agility.ResolveUrl("~/ClientTemplates/ActivityDetails_Description.htm");
            descriptionPanel.setTemplateURL(templateUrl);

            descriptionPanel.setParam("PhotoCreditDescription", ActivityDetails.CurrentActivity.Activity.PhotoCreditDescription);
            descriptionPanel.setParam("ImageUrl", Subaru.TemplateUtils.S3ThumbURL(Agility_BaseS3Url + "/" + ActivityDetails.CurrentActivity.Activity.PrimaryImage, 210, 130));
            descriptionPanel.setParam("EstimatedDistanceLabel", Subaru.AgilityData.GetGlobalLanguageResource("ActivityDetails_Description_EstimatedDistance"));
            descriptionPanel.setParam("GetDirectionsLabel", Subaru.AgilityData.GetGlobalLanguageResource("ActivityDetails_Description_GetDirections"));
            descriptionPanel.setParam("CallFavourite", Subaru.AgilityData.GetGlobalLanguageResource("ActivityDetails_Description_CallThisFavourite"));
            descriptionPanel.setParam("PrintActivity", Subaru.AgilityData.GetGlobalLanguageResource("ActivityDetails_Description_PrintActivity"));
            descriptionPanel.setParam("Province", Subaru.AgilityData.GetProvinceNameByID(ActivityDetails.CurrentActivity.Activity.ProvinceID));
            descriptionPanel.setParam("LangCode", Subaru.AgilityData.GetGlobalLanguageResource("LanguageCode"));

            var data = new Array();
            data[0] = ActivityDetails.CurrentActivity.Details;

            descriptionPanel.processTemplate(data);

            //Favorite counter
            $("img.FavouriteAction").click(function() {
                //No need to be logged-in to set favorite
                Subaru.FavouriteDataAccess.FlagActivityAsFavourite(ActivityDetails.CurrentActivity.Activity.ID, Subaru.ContextUtil.GetCurrentUserID(), ActivityDetails.FlagFavouriteCallback);
            });
            Subaru.FavouriteDataAccess.GetFavouriteCountByActivityID(ActivityDetails.CurrentActivity.Activity.ID, ActivityDetails.FavCountCallback);

            descriptionPanel.show();

            var detailsPanel = $("#ActivityDetailsDetails");
            var jsonAddtionalFeildData = null;
            if (ActivityDetails.CurrentActivity.Details != null) {
                if (ActivityDetails.CurrentActivity.Details.AdditionalFieldData != null && ActivityDetails.CurrentActivity.Details.AdditionalFieldData.length > 0) {
                    jsonAddtionalFeildData = eval(ActivityDetails.CurrentActivity.Details.AdditionalFieldData);
                }
            }

            var templateUrl = Agility.ResolveUrl("~/ClientTemplates/ActivityDetails_Details.htm");
            detailsPanel.setTemplateURL(templateUrl);
            detailsPanel.setParam("TagsLabel", Subaru.AgilityData.GetGlobalLanguageResource("ActivityDetails_Details_TagsLabel"));
            detailsPanel.setParam("Tags", ActivityDetails.AddTagLinks(ActivityDetails.CurrentActivity.Activity.Tags));

            if (jsonAddtionalFeildData == null) {
                jsonAddtionalFeildData = new Array();
                detailsPanel.setParam("NoDetails", Subaru.AgilityData.GetGlobalLanguageResource("ActivityDetails_Details_NoDetailsAvailable"));
            }

            detailsPanel.processTemplate(jsonAddtionalFeildData);

            Subaru.ActivityDataAccess.GetActivityPointMetaData(ActivityDetails.CurrentActivity.Activity.ID, ActivityDetails.GetActivityPointMetaDataCallback);
        }
    }

    ActivityDetails.FlagActivityAsFavouriteSmall = function(activityID) {

        Subaru.FavouriteDataAccess.FlagActivityAsFavourite(activityID, Subaru.ContextUtil.GetCurrentUserID(), ActivityDetails.FlagFavouriteCallback);
    }

    ActivityDetails.AddTagLinks = function(Tags) {
        var html = "";

        var tagList = Tags.split(",");

        for (var i = 0; i < tagList.length; i++) {
            var tag = tagList[i].replace(/^\s+|\s+$/g, "");

            if (tag != null && tag != "") {
                if (html != "") {
                    html += ", ";
                }
                html += "<a href=\"javascript:Subaru.ActivitySearchResults.PerformTagSearch('" + tag + "');\">" + tag + "</a>";
            }
        }

        return html;
    }

    ActivityDetails.FlagFavouriteCallback = function(Message, activityID) {
        if (Message == "AlreadyAdded") {
            alert(Subaru.AgilityData.GetGlobalLanguageResource("ActivityDetails_Description_AlreadyAddedFav"));
        }
        else {
            Subaru.FavouriteDataAccess.GetFavouriteCountByActivityID(activityID, ActivityDetails.FavCountCallback);

            if (Message == "Success") {
                alert(Subaru.AgilityData.GetGlobalLanguageResource("ActivityDetails_Description_AddedFavSuccess"));
            }
            else if (Message == "Success-NoUserID") {
                alert(Subaru.AgilityData.GetGlobalLanguageResource("ActivityDetails_Description_AddedFavSuccessNoUserID"));
            }
        }
    }

    ActivityDetails.FavCountCallback = function(count) {
        $("#ActivityDetails_Description_FavCount").html(count);

        if (Subaru.MapUtils.MapMode != "Route") {
            Subaru.MapUtils.ClearAllMapData();
            Subaru.MapUtils.RefreshMapActivities();
        }
    };

    ActivityDetails.GetActivityReviewsCallback = function(data) {
        if (data.ResponseType != Agility.UGC.API.ResponseType.OK) {

        } else {
            ActivityDetails.CurrentActivity.Reviews = data.ResponseData.Records;

            var detailsPanel = $("#ActivityDetailsReviews");

            var templateUrl = Agility.ResolveUrl("~/ClientTemplates/ActivityDetails_Reviews.htm");
            detailsPanel.setTemplateURL(templateUrl);
            detailsPanel.setParam("WrittenBy", Subaru.AgilityData.GetGlobalLanguageResource("ActivityDetails_Reviews_WrittenBy"));
            detailsPanel.setParam("On", Subaru.AgilityData.GetGlobalLanguageResource("ActivityDetails_Reviews_On"));
            detailsPanel.setParam("WriteReview", Subaru.AgilityData.FindContentItemProperty(ActivityDetailsConfigurationData, "WriteReviewButton"));
            detailsPanel.setParam("renderDate", ActivityDetails.RenderDate);

            if (ActivityDetails.CurrentActivity.Reviews.length == 0) {
                detailsPanel.setParam("NoReviews", Subaru.AgilityData.GetGlobalLanguageResource("ActivityDetails_Reviews_NoReviews"));
            }

            detailsPanel.processTemplate(ActivityDetails.CurrentActivity.Reviews);

            $("#ActivityDetails_ReviewCount").html(ActivityDetails.CurrentActivity.Reviews.length);
        }
    };

    ActivityDetails.GetActivityPointMetaDataCallback = function(data) {
        if (data.ResponseType != Agility.UGC.API.ResponseType.OK) {

        } else {

            var points = data.ResponseData.Records;
            ActivityDetails.CurrentActivity.Route = points;

            if (points.length > 0) {

                points.sort(function(a, b) {
                    return (a.PointIndex - b.PointIndex);
                });

                var snapToRoads = false;
                if (ActivityDetails.CurrentActivity.Details.SnapToRoads != null) {
                    snapToRoads = (ActivityDetails.CurrentActivity.Details.SnapToRoads.toLowerCase() == "true");
                }

                Subaru.MapUtils.DrawActivityRoute(points, snapToRoads);
                Subaru.MapUtils.UpdateView(points);

            } else {

                var mapData = "";
                if (ActivityDetails.CurrentActivity.Details != null) {
                    mapData = ActivityDetails.CurrentActivity.Details.MappingData;
                }

                Subaru.MapUtils.CreateRoute(ActivityDetails.CurrentActivity.Activity.StartLatitude, ActivityDetails.CurrentActivity.Activity.StartLongitude, ActivityDetails.CurrentActivity.Activity.TypeID, mapData);
            }
        }
    };

    ActivityDetails.RenderDate = function(textDate) {
        try {
            var parts = textDate.split(" ");
            var dates = parts[0].split("-");
            var times = parts[1].split(":");
            var d = new Date(dates[0],
                parseInt(dates[1]) - 1, //Month adjusted 0-11
                dates[2], times[0], times[1], times[2], 0);
            return dateFormat(d, "mmm dd, yyyy");
        }
        catch (err) {
            return textDate;
        }
    };

    ActivityDetails.GetActivityMediaCallback = function(data) {
        if (data.ResponseType != Agility.UGC.API.ResponseType.OK) {

        } else {
            if (data.ResponseData.Records.length > 0) {

                ActivityDetails.CurrentActivity.Media = data.ResponseData.Records[0];
                var detailsPanel = $("#ActivityDetailsPhotosAndMedia");

                var processedMediaItems = new Array();

                if (ActivityDetails.CurrentActivity.Media.Image1 != "") {
                    var item = new Object();
                    item.Icon = Subaru.TemplateUtils.S3ThumbURL(Agility_BaseS3Url + "/" + ActivityDetails.CurrentActivity.Media.Image1, 136, 85);
                    item.FilePath = Agility_BaseS3Url + "/" + ActivityDetails.CurrentActivity.Media.Image1;
                    item.Text = ActivityDetails.CurrentActivity.Media.Image1Caption;
                    item.ID = processedMediaItems.length;
                    item.Type = "Image";
                    processedMediaItems[processedMediaItems.length] = item;
                }
                if (ActivityDetails.CurrentActivity.Media.Image2 != "") {
                    var item = new Object();
                    item.Icon = Subaru.TemplateUtils.S3ThumbURL(Agility_BaseS3Url + "/" + ActivityDetails.CurrentActivity.Media.Image2, 136, 85);
                    item.FilePath = Agility_BaseS3Url + "/" + ActivityDetails.CurrentActivity.Media.Image2;
                    item.Text = ActivityDetails.CurrentActivity.Media.Image2Caption;
                    item.ID = processedMediaItems.length;
                    item.Type = "Image";
                    processedMediaItems[processedMediaItems.length] = item;
                }
                if (ActivityDetails.CurrentActivity.Media.Image3 != "") {
                    var item = new Object();
                    item.Icon = Subaru.TemplateUtils.S3ThumbURL(Agility_BaseS3Url + "/" + ActivityDetails.CurrentActivity.Media.Image3, 136, 85);
                    item.FilePath = Agility_BaseS3Url + "/" + ActivityDetails.CurrentActivity.Media.Image3;
                    item.Text = ActivityDetails.CurrentActivity.Media.Image3Caption;
                    item.ID = processedMediaItems.length;
                    item.Type = "Image";
                    processedMediaItems[processedMediaItems.length] = item;
                }
                if (ActivityDetails.CurrentActivity.Media.Image4 != "") {
                    var item = new Object();
                    item.Icon = Subaru.TemplateUtils.S3ThumbURL(Agility_BaseS3Url + "/" + ActivityDetails.CurrentActivity.Media.Image4, 136, 85);
                    item.FilePath = Agility_BaseS3Url + "/" + ActivityDetails.CurrentActivity.Media.Image4;
                    item.Text = ActivityDetails.CurrentActivity.Media.Image4Caption;
                    item.ID = processedMediaItems.length;
                    item.Type = "Image";
                    processedMediaItems[processedMediaItems.length] = item;
                }

                if (ActivityDetails.CurrentActivity.Media.Video != "") {
                    var item = new Object();
                    item.Icon = "http://getoutmore.s3.amazonaws.com/VideoIcon.jpg";
                    item.FilePath = Agility_BaseS3Url + "/" + ActivityDetails.CurrentActivity.Media.Video;
                    item.Text = ActivityDetails.CurrentActivity.Media.VideoCaption;
                    item.ID = processedMediaItems.length;
                    item.Type = "Video";
                    processedMediaItems[processedMediaItems.length] = item;
                }
                if (ActivityDetails.CurrentActivity.Media.PDFDocument != "") {
                    var item = new Object();
                    item.Icon = "http://getoutmore.s3.amazonaws.com/PDFIcon.jpg";
                    item.FilePath = Agility_BaseS3Url + "/" + ActivityDetails.CurrentActivity.Media.PDFDocument;
                    item.Text = "";
                    item.ID = processedMediaItems.length;
                    item.Type = "PDF";
                    processedMediaItems[processedMediaItems.length] = item;
                }

                ActivityDetails.CurrentActivity.Media = processedMediaItems;
                var templateUrl = Agility.ResolveUrl("~/ClientTemplates/ActivityDetails_Media.htm");
                detailsPanel.setTemplateURL(templateUrl);

                if (processedMediaItems.length == 0) {

                    detailsPanel.setParam("NoMedia", Subaru.AgilityData.GetGlobalLanguageResource("ActivityDetails_PhotosAndMedia_NoMedia"));
                }

                detailsPanel.processTemplate(processedMediaItems);

                if (MediaDialog == null) {
                    MediaDialog = $("#ActivityDetails_MediaDialog").dialog({
                        autoOpen: false,
                        modal: true,
                        closeText: 'hide',
                        dialogClass: 'ActivityMediaDialog',
                        title: "Media",
                        resizable: false
                    });
                }
            }
        }
    };


    ActivityDetails.HideDetails = function() {
        MediaDialog = null;
        var detailsPanel = $("#ActivityDetails");
        detailsPanel.fadeOut("fast");

        //Never assign an empty value: reload the page in FF >= 3.0
        location.hash = "#";

        try {
            $(".stwrapper").hide();
        }
        catch (e) { }
        //detailsPanel.html("");
    };

    ActivityDetails.ToggleActivityDetails = function(sender) {
        var mainContentDiv = $("#ActivityDetailsMainContnet");
        var backToSearch = $("#ActivityDetails_BackToSearch");
        var ActivityToggleControl = $("#ActivityToggleControl");
        if (ActivityToggleControl.attr("class") == "Minus") {
            ActivityToggleControl.attr("class", "Plus");
            mainContentDiv.slideUp("Slow");

            var title = $("#MainActivityTitle").html();
            $("#ActivityToggleTitle").html(title);
            backToSearch.hide();
        }
        else {
            ActivityToggleControl.attr("class", "Minus");
            mainContentDiv.slideDown("Slow");
            $("#ActivityToggleTitle").html("");
            backToSearch.show();
        }
    };

    ActivityDetails.ReturnToSearch = function() {
        Subaru.MapUtils.MapMode = "Default";

        ActivityDetails.HideDetails();
        setTimeout("Subaru.ActivitySearchResults.RerunLastSearch()", 500);
        //setTimout("Subaru.MapUtils.ReturnToDefaultMap()", 1000);
    };

    ActivityDetails.ShowWriteReview = function() {

        if (Subaru.ContextUtil.IsAuthenticated()) {
            Subaru.AgilityData.LoadContentItem("WriteReviewForm", ActivityDetails.ShowWriteReviewCallback);
        }
        else {
            alert(Subaru.AgilityData.GetGlobalLanguageResource("ActivityDetails_Reviews_PleaseLoginToReview"));
        }
    };

    ActivityDetails.ShowWriteReviewCallback = function(data) {
        var writeReviewPanel = $("#ActivityDetailsWriteReview");

        var templateUrl = Agility.ResolveUrl("~/ClientTemplates/ActivityDetails_WriteReview.htm");
        writeReviewPanel.setTemplateURL(templateUrl);
        writeReviewPanel.setParam("BackToReviewsLabel", Subaru.AgilityData.FindContentItemProperty(data, "BackToReviewsLabel"));
        writeReviewPanel.setParam("ReviewTitleLabel", Subaru.AgilityData.FindContentItemProperty(data, "ReviewTitleLabel"));
        writeReviewPanel.setParam("UsernameLabel", Subaru.AgilityData.FindContentItemProperty(data, "UsernameLabel"));
        writeReviewPanel.setParam("NoUsernameLabel", Subaru.AgilityData.FindContentItemProperty(data, "NoUsernameLabel"));
        writeReviewPanel.setParam("EnterReviewLabel", Subaru.AgilityData.FindContentItemProperty(data, "EnterReviewLabel"));
        writeReviewPanel.setParam("CancelButton", Subaru.AgilityData.FindContentItemProperty(data, "CancelButton"));
        writeReviewPanel.setParam("SubmitButton", Subaru.AgilityData.FindContentItemProperty(data, "SubmitButton"));
        writeReviewPanel.setParam("AgreementText", Subaru.AgilityData.FindContentItemProperty(data, "AgreementText"));

        writeReviewPanel.processTemplate(new Array());
        var reviewPanel = $("#ActivityDetailsReviews");

        reviewPanel.hide();

        writeReviewPanel.show();
    };

    ActivityDetails.CloseWriteReview = function() {
        $("#ActivityDetailsWriteReview").hide();
        $("#ActivityDetailsReviews").show();
    };

    ActivityDetails.SaveReview = function() {

        var title = $("#txtReviewTitle").val();
        var review = $("#txtReview").val();
        var dontShowUsername = $("#chkDontDisplayUsername:checked").is(':checked');


        var username = "";
        if (dontShowUsername) {
            dontShowUsername = true;
            username = "Anonymous";
        }
        else {
            dontShowUsername = false;
            username = Subaru.ContextUtil.GetCurrentUsername();
        }


        var userID = Subaru.ContextUtil.GetCurrentUserID();

        var record = null;


        var requiresModeration = Subaru.AgilityData.HasInappropriateWords(review + " " + title);


        record = {
            ID: -1,
            RecordTypeName: "ActivityReviews",
            Title: title,
            ActivityID: ActivityDetails.CurrentActivity.Activity.ID,
            ReviewBody: review,
            SubmittedByUserID: userID,
            ShowUserID: dontShowUsername,
            SubmittedUsername: username

        };


        Agility.UGC.API.SaveRecord(record, function(data) {

            if (data.ResponseType != Agility.UGC.API.ResponseType.OK) {
                ActivityDetails.CloseWriteReview();
                //alert(data.Message);
                return;
            } else {

                if (requiresModeration) {
                    Agility.UGC.API.SetRecordState(data.ResponseData,
                        Agility.UGC.API.RecordState.Declined,
                        null, function() {
                            ActivityDetails.CloseWriteReview();
                        });
                }
                else {
                    //no moderation required
                    ActivityDetails.CloseWriteReview();
                    Subaru.ActivityDataAccess.GetActivityReviews(ActivityDetails.CurrentActivity.Activity.ID, ActivityDetails.GetActivityReviewsCallback);
                }
            }
        });
    };

    ActivityDetails.ShowGallery = function(mediaID) {
        var selectedItem = ActivityDetails.GetMediaItem(mediaID);

        if (selectedItem.Type == "PDF") {
            window.open(selectedItem.FilePath, "PDFDoc");
            return;
        }

        var detailsPanel = $("#ActivityDetails_MediaDialog");
        var templateUrl = Agility.ResolveUrl("~/ClientTemplates/ActivityDetails_MediaDialog.htm");
        detailsPanel.setTemplateURL(templateUrl);
        detailsPanel.setParam("CloseLabel", Subaru.AgilityData.GetGlobalLanguageResource("ActivityDetails_MediaDialog_CloseLabel"));
        detailsPanel.setParam("NextLabel", Subaru.AgilityData.GetGlobalLanguageResource("ActivityDetails_MediaDialog_NextLabel"));
        detailsPanel.setParam("PreviousLabel", Subaru.AgilityData.GetGlobalLanguageResource("ActivityDetails_MediaDialog_PreviousLabel"));
        detailsPanel.processTemplate(new Array());

        MediaDialog.dialog("open");

        ActivityDetails.LoadMediaItem(mediaID);
    };

    ActivityDetails.ShowGallerySingleItem = function(itemUrl, type) {

        var detailsPanel = $("#ActivityDetails_MediaDialog");
        var templateUrl = Agility.ResolveUrl("~/ClientTemplates/ActivityDetails_MediaDialog.htm");
        detailsPanel.setTemplateURL(templateUrl);
        detailsPanel.setParam("CloseLabel", Subaru.AgilityData.GetGlobalLanguageResource("ActivityDetails_MediaDialog_CloseLabel"));
        detailsPanel.processTemplate(new Array());

        MediaDialog.dialog("open");

        $("#ActivityDetails_MediaDialog_Previous").hide();
        $("#ActivityDetails_MediaDialog_Next").hide();

        var MediaArea = $("#ActivityDetails_MediaDialog_MediaArea");

        if (type == "Image") {
            MediaArea.html("<img src='" + Subaru.TemplateUtils.S3ThumbURL(itemUrl, 574, 430) + "'>");
        }
        else if (type == "Video") {
            var so = new SWFObject("http://getoutmore.s3.amazonaws.com/SWF/videoplayer.swf", "videoplayer", "580", "326", "8", "#000000");
            so.addVariable("videoPath", itemUrl);
            so.addParam("wmode", "transparent");
            so.write("ActivityDetails_MediaDialog_MediaArea");
        }
    };

    ActivityDetails.ShowAdvancementLabel = function(sender, direction) {

        $(sender).children("div").show();
    };

    ActivityDetails.RemoveAdvancementLabel = function(sender) {

        $(sender).children("div").hide();
    };

    ActivityDetails.LoadMediaItem = function(mediaID) {

        var MediaArea = $("#ActivityDetails_MediaDialog_MediaArea");
        var TextArea = $("#ActivityDetails_MediaDialog_TextArea");

        var selectedItem = ActivityDetails.GetMediaItem(mediaID);

        if (selectedItem.Type == "PDF") {
            var nextItemID = selectedItem.ID + 1;
            if (nextItemID > ActivityDetails.CurrentActivity.Media.length - 1) {
                nextItemID = 0;
            }
            ActivityDetails.LoadMediaItem(nextItemID);
            return;
        }

        if (selectedItem.Type == "Image") {
            MediaArea.html("<img src='" + Subaru.TemplateUtils.S3ThumbURL(selectedItem.FilePath, 574, 430) + "'>");
        }
        else if (selectedItem.Type == "Video") {
            var so = new SWFObject("http://getoutmore.s3.amazonaws.com/SWF/videoplayer.swf", "videoplayer", "580", "326", "8", "#000000");
            so.addVariable("videoPath", selectedItem.FilePath);
            so.addParam("wmode", "transparent");
            so.write("ActivityDetails_MediaDialog_MediaArea");
        }

        TextArea.html(selectedItem.Text);

        var previousItemID = selectedItem.ID - 1;

        if (previousItemID < 0) {
            previousItemID = ActivityDetails.CurrentActivity.Media.length - 1;
            if (ActivityDetails.GetMediaItem(previousItemID).Type == "PDF") {
                previousItemID--;
            }
        }

        var nextItemID = selectedItem.ID + 1;
        if (nextItemID > ActivityDetails.CurrentActivity.Media.length - 1) {
            nextItemID = 0;
        }
        $("#ActivityDetails_MediaDialog_Previous").unbind('click', null);
        $("#ActivityDetails_MediaDialog_Previous").click(function() {
            Subaru.ActivityDetails.LoadMediaItem(previousItemID);
        });

        $("#ActivityDetails_MediaDialog_Next").unbind('click', null);
        $("#ActivityDetails_MediaDialog_Next").click(function() {
            Subaru.ActivityDetails.LoadMediaItem(nextItemID);
        });
    };

    ActivityDetails.GetMediaItem = function(mediaID) {
        var selectedItem = null;
        for (var i = 0; i < ActivityDetails.CurrentActivity.Media.length; i++) {
            if (ActivityDetails.CurrentActivity.Media[i].ID == mediaID) {
                selectedItem = ActivityDetails.CurrentActivity.Media[i];
            }
        }
        return selectedItem;
    };

    ActivityDetails.CloseGallery = function() {
        MediaDialog.dialog("close");

        $("ActivityDetails_MediaDialog").hide();

        Subaru.MapUtils.HideAllDialogs();
    };

})(Subaru.ActivityDetails);


function LoadSpecificActivity(activityId) {
    Subaru.ActivityDetails.LoadActivity(activityId);
}
