/**
 * 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.addEvent("click",function(){
                var el = $(this).getParent();
                if(!locked){
                    locked = true;
                    SocialMediaService.submitNewRecommendation(el.getProperty("data-sitebrand"),
                        el.getProperty("data-contenttype"),
                        el.getProperty("data-contentid"),
                        el.getProperty("data-childid"),
                        el.getProperty("data-channel"),
                        el.getProperty("data-subchannel"),
                        el.getProperty("data-userid"),
                        function(remoteResult){
                            locked = false;
                            if(remoteResult.statusCode == 0){
                                $E(".recommendlink",el.id).replaceWith(new Element("span").setHTML("Likes"));
                                $E(".recommendcountdisplay",el.id).setHTML(""+remoteResult.result.count);
                            }
                            else{
                                alert("Your request cannot be processed at this time.  Please try again later.");
                            }
                        }
                    );
                }
            });

        }
    }

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

window.addEvent('domready', function(){
    mdp.recommend = new mdp.app.Recommend();
});

