﻿//
// Tracking.ascx.js
//

/// <reference path="../Edentity.Global.js" />
/// <reference path="../API/Agility.UGC.API.js" />


Edentity.RegisterNamespace("Whiskas.Controls.Tracking");

(function(WCT, $) {

    var pnlTracking = null;

    WCT.OnInit = function(pnlTrackingID, ContentID, ContentType) {
        pnlTracking = $("#" + pnlTrackingID);
        pnlTracking.data('ContentID', ContentID);
        pnlTracking.data('ContentType', ContentType);

        _trackView();
        _getRatings();


    };

    function _trackView() {

        var searchArg = {
            RecordTypeName: "AccessTracking",
            Search: "ObjectKey = '" + pnlTracking.data('ContentType') + "-" + pnlTracking.data('ContentID') + "'"
        };

        Agility.UGC.API.SearchRecords(searchArg, function(data) {

            if (data.ResponseType != Agility.UGC.API.ResponseType.OK) {
                //alert("There was an error: " + data.Message);
            } else {
                var countSpan = $('.Stats span:eq(1)', pnlTracking);
                var count = 0;
                if (data.ResponseData.TotalRecords > 0) {
                    count = eval(data.ResponseData.Records[0].AccessCount);
                }
                count = count + 1;
                countSpan.html(count);

                //Saves the new count
                var record = {
                    ID: data.ResponseData.TotalRecords == 0 ? -1 : data.ResponseData.Records[0].ID,
                    RecordTypeName: "AccessTracking",
                    ObjectKey: pnlTracking.data('ContentType') + "-" + pnlTracking.data('ContentID'),
                    Type: pnlTracking.data('ContentType'),
                    AccessCount: count
                };

                Agility.UGC.API.SaveRecord(record, function(data) {
                    if (data.ResponseType != 0) {
                        //alert("There was an error: " + data.Message);
                    }
                    else {
                        //alert("Ok!");
                    }
                });
            }
        });
    };

    function _getRatings() {

        var searchArg = {
            RecordTypeName: "RatingTracking",
            Search: "ObjectKey = '" + pnlTracking.data('ContentType') + "-" + pnlTracking.data('ContentID') + "'"
        };

        Agility.UGC.API.SearchRecords(searchArg, function(data) {

            if (data.ResponseType != Agility.UGC.API.ResponseType.OK) {
                //alert("There was an error: " + data.Message);
            } else {
                var countSpan = $('.Stats span:eq(3)', pnlTracking);
                var count = 0;
                if (data.ResponseData.TotalRecords > 0) {
                    count = eval(data.ResponseData.Records[0].PositiveRatings);
                    countSpan.data('RecordID', data.ResponseData.Records[0].ID);
                }
                else {
                    countSpan.data('RecordID', -1);
                }
                countSpan.html(count);
            }
        });
    };

    WCT.OnLikedThis = function(sender) {
        // Keep selected state
        $(sender).attr('onmouseover', '');
        eval($(sender).attr('onmouseout'));
        $(sender).attr('onmouseout', '');
        $(sender).attr('onclick', '');

        // Liked this count span
        var countSpan = $('span:eq(3)', $(sender).parent().prev());
        _submitLikedThis(countSpan);
    };

    function _submitLikedThis(countSpan) {
        var cookieCheck = "LikeThis-" + countSpan.data('RecordID');


        var cookieValue = $.cookie(cookieCheck);


        if (cookieValue != "true") {

            var record = {
                ID: eval(countSpan.data('RecordID')),
                RecordTypeName: "RatingTracking",
                ObjectKey: pnlTracking.data('ContentType') + "-" + pnlTracking.data('ContentID'),
                Type: pnlTracking.data('ContentType'),
                PositiveRatings: eval(countSpan.text()) + 1
            };

            Agility.UGC.API.SaveRecord(record, function(data) {
                if (data.ResponseType != 0) {
                    //alert("There was an error: " + data.Message);
                }
                else {
                    countSpan.html(eval(countSpan.text()) + 1);

                    var date = new Date();
                    date.setTime(date.getTime() + (1 * 24 * 60 * 60 * 1000));

                    $.cookie(cookieCheck, "true", { path: '/', expires: date });
                }
            });
        }
        else {
            alert("You have already voted today.");
        }
    };

})(Whiskas.Controls.Tracking, jQuery);
