/**
 * Recommend
 *
 * @author Boz
 * @classDescription MDP Recommends handler.
 **/

mdp.app.Recommend = function(){
    /* ---[ CLASS VARIABLES ]--- */
    var locked = false;
    
    /* ---[ CONSTRUCTOR ]--- */
    function init(){

        /* initialization code */
        setupEventListeners();

    }

    /* ---[ PRIVATE METHODS ]--- */

    /* ---[ EVENT LISTENERS ]--- */
    function setupEventListeners(){

        /* get all rating elements */
        var recommend = $(".recommendlink");

        /* iterate through elements */
        for(var i=0; i<recommend.length; i++){
            /* store parameters and strip non-standard element attributes */
            var link = recommend[i];

            /* attach DWR method as a handler to rating link's click event */
            link.click(function(){
                var el = $(this).parent();
                if(!locked){
                    locked = true;
                    SocialMediaService.submitNewRecommendation(el.attr("data-sitebrand"),
                        el.attr("data-contenttype"),
                        el.attr("data-contentid"),
                        el.attr("data-childid"),
                        el.attr("data-channel"),
                        el.attr("data-subchannel"),
                        el.attr("data-userid"),
                        function(remoteResult){
                            locked = false;
                            if(remoteResult.statusCode == 0){
                                var likedText = el.attr("data-likedtext");
                                if (likedText == "Likes") {
                                    var span = $("<span>").html("Likes");
                                    var recommendlink = el.children()[1];
                                    var recommendcountdisplay = el.children()[2];
                                    if(recommendlink != null){
                                        recommendlink.replaceWith(span);
                                    }
                                    if(recommendcountdisplay != null){
                                        recommendcountdisplay.html("("+remoteResult.result.count+")");
                                    }
                                } else {

                                    var resultCount = remoteResult.result.count;
                                    var likeText = likedText.split(",");
                                        if (resultCount == "1"){
                                            var span = $("<span>").html(likeText[0]);
                                        } else {
                                            var span = $("<span>").html(likeText[1]);
                                        }
                                    var spanCount = $("<span>").html(resultCount);

                                    var recommendlink2 = el.children()[1];
                                    var recommendcountdisplay2 = el.children()[2];
                                    if(recommendlink2 != null){
                                        recommendlink2.replaceWith(spanCount);
                                    }
                                    if(recommendcountdisplay2 != null){
                                        recommendcountdisplay2.replaceWith(span);
                                    }
                                    }
                            }
                            else{
                                alert("Your request cannot be processed at this time.  Please try again later.");
                            }
                        }
                    );
                }
            });

        }
    }

    /* ---[ RUN ]--- */
    init();
};

$(document).ready( function(){
    mdp.recommend = new mdp.app.Recommend();
});


