﻿// Floating menu
floatingMenu = {
    init: function(userId) {
        pfGlobalsUserId = userId;
        // Add events for suggest
        $('#floating-nav li.suggest .suggest-form .button').click(function() {

            var name = $('#floating-nav li.suggest .suggest-form').find('#suggest-submission-form input').val();
            var desc = $('#floating-nav li.suggest .suggest-form').find('#suggest-submission-form textarea').val();

            $.pf.floatingMenu.suggest.suggestNewTopic(name, desc, userId);
        });

        $('#floating-nav li.suggest .feedback-form .button').click(function() {

            $("#feedback-form-email-error").removeClass("errorField-float");

            var name = $('#floating-nav li.suggest .suggest-form').find('#suggest-submission-form input').val();
            var desc = $('#floating-nav li.suggest .suggest-form').find('#suggest-submission-form textarea').val();
            var email = $('#floating-nav li.suggest .feedback-form').find('.submission-form input').val();

            if ($.validateEmail(null, email, "feedback-form-email-error")) {
                $.pf.floatingMenu.suggest.requestTopicFeedback(name, desc, email);
            }

            else {
                $('#floating-nav li.suggest .feedback-form').find('input').addClass("errorField-float");
            }
        });

        $('#floating-nav li.suggest .feedback-form .back-link').click(function() {
            $('#floating-nav li.suggest .suggest-form').find('input').val('');
            $('#floating-nav li.suggest .suggest-form').find('textarea').val('');
            $('#floating-nav li.suggest .feedback-form').find('input').val('');
            $('#floating-nav li.suggest .suggest-form #TopicDescriptionCharacters').html('140');
            $('li.suggest .floating-menu-popup-content, #floating-nav li.suggest .feedback-form .confirm, #floating-nav li.suggest .feedback-form .submission-form').toggleClass('hidden'); return false;
        });

        $('#floating-nav li.share .preview-form .button').click(function() {
            //Switch
            $('#floating-nav li.share .floating-menu-popup-content.form').toggleClass('hidden');

            $('#floating-nav li.share .submission-form').find('.desc-textarea').val('');
            $('#floating-nav li.share .submission-form').find('.title-textbox').val('');
            $('#floating-nav li.share .submission-form').find('.url-textbox').val('');
        });

        // Add events for status
        $('#floating-nav li.status .submissions .nav .prev').click(function() {
            $.pf.floatingMenu.status.prevPage(userId);
        });
        $('#floating-nav li.status .submissions .nav .next').click(function() {
            $.pf.floatingMenu.status.nextPage(userId);
        });
        $.pf.floatingMenu.status.init(1, userId);
    },
    initPublicView: function() {
    },
    suggest:
    {
        suggestNewTopic: function(name, desc, userName) {
            var payload = { SuggestNewTopic: { name: name, desc: desc} };
            $.pf.data.doJsonPost('floatingMenu.suggest.suggestedNewTopic', payload);
        },
        suggestedNewTopic: function(value) {
            if (value[0].DataSet != null) {
                $('#floating-nav li.suggest .floating-menu-popup-content.form').toggleClass('hidden');
            }
        },
        requestTopicFeedback: function(name, desc, email) {
            var payload = { RequestTopicFeedback: { name: name, desc: desc, eMail: email} };
            $.pf.data.doJsonPost('floatingMenu.suggest.requestedTopicFeedback', payload);
        },
        requestedTopicFeedback: function(value) {
            $('#floating-nav li.suggest .feedback-form .submission-form').toggleClass('hidden');
            $('#floating-nav li.suggest .feedback-form .confirm').html(value[0].DataSet).toggleClass('hidden');
            $('#floating-nav li.suggest .feedback-form').find('input').val('');
        },
        validateEmailFalse: function(value) {
            alert(value);
        }
    },
    share:
    {
        shareNewVideo: function(topic, link, title, desc, userId) {
            var payload = { ShareNewVideo: { topic: topic, link: link, title: title, desc: desc} };
            $.pf.data.doJsonPost('floatingMenu.share.sharedNewVideo', payload);
        },
        sharedNewVideo: function(value) {
            // Perform json mapping
            if (value[0]) {
                if (value[0].DataSet) {
                    var title = value[0].DataSet.Heading;
                    var author = value[0].DataSet.Author;
                    var authorDate = value[0].DataSet.AuthorDate;
                    var sourceType = value[0].DataSet.SourceType;
                    var url = value[0].DataSet.Url;
                    var thumbnail = value[0].DataSet.Thumbnail;
                    var status = value[0].DataSet.Status;
                    var userId = value[0].DataSet.UserId;
                    var topic = value[0].DataSet.Topic;
                    var topicUrl = value[0].DataSet.TopicUrl + "#new";


                    $('#floating-nav li.share .preview-form .video-submission h4 a').html(title);
                    $('#floating-nav li.share .preview-form .video-submission h4 a').attr('href', url);
                    $('#floating-nav li.share .preview-form .video-submission .author a').html(author);
                    $('#floating-nav li.share .preview-form .video-submission .author-date').html(' ' + authorDate);
                    $('#floating-nav li.share .preview-form .video-submission .badge').html(status);
                    $('#floating-nav li.share .preview-form .video-submission .attachment img').attr('src', thumbnail);
                    $('#floating-nav li.share .preview-form .video-submission .attachment .source-type').html(sourceType);
                    $('#floating-nav li.share .preview-form .video-submission .attachment a').attr('href', url);

                    $('#floating-nav li.share .preview-form .popup-subtitle span.topic').html(topic);
                    $('#floating-nav li.share .preview-form .popup-subtitle span.new').wrap('<a href=http://' + topicUrl + ' />');

                    //Switch
                    $('#floating-nav li.share .floating-menu-popup-content.form').toggleClass('hidden');

                    if (pfGlobalsUserId) {
                        var payload = { UserStatusVideoItems: { userId: pfGlobalsUserId + '', sortOrder: "new", excludeGalleryId: "0", page: 1, pageSize: 3, listType: pfGlobalsUserId + ''} };
                        $.pf.data.doJsonPost('floatingMenu.status.renderTemplate', payload);
                    }

                }
            }
        }
    },
    status: {
        init: function(page, userId) {
            pfGlobalsUserId = userId;
            //Init template
            var payload = { UserStatusVideoItems: { userId: userId, sortOrder: "new", excludeGalleryId: "0", page: page, pageSize: 3, listType: userId} };
            $.pf.data.doJsonPost('floatingMenu.status.renderTemplate', payload);

            payload = { UserStatusSummary: { userId: userId, listType: userId} };
            $.pf.data.doJsonPost('floatingMenu.status.renderSummary', payload);

            $('#floating-nav li.status .submissions .nav .prev').hide();
        },
        prevPage: function(userId) {
            if (pfGlobalsFloatingMenuCurrentPage > 1) {
                var payload = { UserStatusVideoItems: { userId: userId, sortOrder: "new", excludeGalleryId: "0", page: pfGlobalsFloatingMenuCurrentPage - 1, pageSize: 3, listType: userId} };
                $.pf.data.doJsonPost('floatingMenu.status.prevPageRetrieved', payload);
                $('#floating-nav li.status .submissions .loader').show();
            }
        },
        nextPage: function(userId) {
            var payload = { UserStatusVideoItems: { userId: userId, sortOrder: "new", excludeGalleryId: "0", page: pfGlobalsFloatingMenuCurrentPage + 1, pageSize: 3, listType: userId} };
            $.pf.data.doJsonPost('floatingMenu.status.nextPageRetrieved', payload);
            $('#floating-nav li.status .submissions .loader').show();
        },
        nextPageRetrieved: function(response) {
            $('#floating-nav li.status .submissions .loader').hide();

            if ($.isArray(response[0].DataSet)) {
                pfGlobalsFloatingMenuCurrentPage++;
                $.pf.floatingMenu.status.renderTemplate(response);
                $('#floating-nav li.status .submissions .nav .prev').show();
            }
            else {
                $('#floating-nav li.status .submissions .nav .next').hide();
            }
        },
        prevPageRetrieved: function(response) {
            $('#floating-nav li.status .submissions .loader').hide();

            if ($.isArray(response[0].DataSet)) {
                pfGlobalsFloatingMenuCurrentPage--;
                $.pf.floatingMenu.status.renderTemplate(response);
                $('#floating-nav li.status .submissions .nav .next').show();
            }
            if (pfGlobalsFloatingMenuCurrentPage == 1) {
                $('#floating-nav li.status .submissions .nav .prev').hide();
            }
        },
        renderTemplate: function(response) {
            if (response[0]) {
                if (response[0].DataSet) {
                    if ($.isArray(response[0].DataSet)) {
                        $('#floating-nav li.status #status-submissions').setTemplateURL('/Templates/Main/Scripts/StatusTemplate.htm');
                        $('#floating-nav li.status #status-submissions').processTemplate(response[0]);
                        
                        //HTML encode specific elements when rendered.
                        $('#floating-nav li.status #status-submissions ul li .title a').each(function() {
                            var me = jQuery(this);
                            var html = me.html();
                            me.html(html.replace(/&amp;/g, '&'));
                        });
                        $.pf.floatingMenu.status.resetItemEvents(response[0].InternalType);
                    }
                    else if (!$.isArray(response[0].DataSet) && pfGlobalsFloatingMenuCurrentPage == 1) {
                        $('#floating-nav li.status #status-submissions').html(response[0].DataSet);
                        $('#floating-nav li.status .submissions .nav .next').hide();
                    }
                    else {
                        $('#floating-nav li.status .submissions .nav .next').hide();
                    }
                }
            }
        },
        renderSummary: function(value) {
            if (value[0].DataSet) {
                var totalLikesLabel = value[0].DataSet.TotalLikesLabel;
                var totalLikesCount = value[0].DataSet.TotalLikesCount;
                var averageLikesLabel = value[0].DataSet.AverageLikesLabel;
                var averageLikesCount = value[0].DataSet.AverageLikesCount;
                var status = value[0].DataSet.Status;

                $('#floating-nav li.status .menu-button-label .main em, #floating-nav li.status .floating-menu-popup .popup-title em').html(status);
                $('#floating-nav li.status ul.like-stats li:first .label').html(totalLikesLabel);
                $('#floating-nav li.status ul.like-stats li:first .value, #floating-nav li.status .floating-nav-button .sub em').html(totalLikesCount);
                $('#floating-nav li.status ul.like-stats li:eq(1) .label').html(averageLikesLabel);
                $('#floating-nav li.status ul.like-stats li:eq(1) .value').html(averageLikesCount);
            }
        },
        resetItemEvents: function(type) {
            $('li.status #status-submissions ul li').each(function() {
                var hidden = $(this).find('input');
                var id = hidden.attr('value');
                hidden.remove();

                $(this).data('id', id);

                var current = $(this);

                $(this).find('.delete').click(function() {
                    var videoId = current.data('id');
                    $.pf.floatingMenu.status.deleteCurrentVideo(type, parseInt(videoId));
                });
            });
            $('#floating-nav li.status .submissions .loader').hide();
        },
        deleteCurrentVideo: function(type, videoId) {
            if (confirm(confirmDeleteVideoLabel)) {
                var payload = { DeleteVideo: { videoId: videoId, listType: type} };
                $.pf.data.doJsonPost('floatingMenu.status.deletedCurrentVideo', payload);
                $('#floating-nav li.status .submissions .loader').show();
            }
        },
        deletedCurrentVideo: function(value) {
            if (value[0].InternalType) {
                //Init template
                var payload = { UserStatusVideoItems: { userId: value[0].InternalType, sortOrder: "new", excludeGalleryId: "0", page: 1, pageSize: 3, listType: value[0].InternalType} };
                $.pf.data.doJsonPost('floatingMenu.status.renderTemplate', payload);
                pfGlobalsFloatingMenuCurrentPage = 1
            }
        }
    }
};

$.extend(true, $.pf.floatingMenu, floatingMenu);

$(window).bind('floatingMenu.status.deletedCurrentVideo', function(event, response) {
    $.pf.floatingMenu.status.deletedCurrentVideo(response);
});

$(window).bind('floatingMenu.status.nextPageRetrieved', function(event, response) {
    $.pf.floatingMenu.status.nextPageRetrieved(response);
});

$(window).bind('floatingMenu.status.prevPageRetrieved', function(event, response) {
    $.pf.floatingMenu.status.prevPageRetrieved(response);
});
$(window).bind('floatingMenu.status.renderSummary', function(event, response) {
    $.pf.floatingMenu.status.renderSummary(response);
});
$(window).bind('floatingMenu.status.renderTemplate', function(event, response) {
    $.pf.floatingMenu.status.renderTemplate(response);
});

$(window).bind('floatingMenu.share.sharedNewVideo', function(event, response) {
    $.pf.floatingMenu.share.sharedNewVideo(response);
});

$(window).bind('floatingMenu.suggest.suggestedNewTopic', function(event, response) {
    $.pf.floatingMenu.suggest.suggestedNewTopic(response);
});

$(window).bind('floatingMenu.suggest.requestedTopicFeedback', function(event, response) {
    $.pf.floatingMenu.suggest.requestedTopicFeedback(response);
});

$(window).bind('floatingMenu.suggest.validateEmailFalse', function(event, response) {
    $.pf.floatingMenu.suggest.validateEmailFalse(response);
});

//globals
var pfGlobalsFloatingMenuCurrentPage = 1;
var pfGlobalsUserId = null; 

