/**
 * 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){
                                var likedText = el.getProperty("data-likedtext");
                                if (likedText == "Likes") {
                                    var span = new Element("span").setHTML("Likes");
                                    var recommendlink = el.getChildren()[1];
                                    var recommendcountdisplay = el.getChildren()[2];
                                    if(recommendlink != null){
                                        recommendlink.replaceWith(span);
                                    }
                                    if(recommendcountdisplay != null){
                                        recommendcountdisplay.setHTML("("+remoteResult.result.count+")");
                                    }
                                } else {

                                    var resultCount = remoteResult.result.count;
                                    var likeText = likedText.split(",");
                                        if (resultCount == "1"){
                                            var span = new Element("span").setHTML(likeText[0]);
                                        } else {
                                            var span = new Element("span").setHTML(likeText[1]);
                                        }
                                    var spanCount = new Element("span").setHTML(resultCount);

                                    var recommendlink2 = el.getChildren()[1];
                                    var recommendcountdisplay2 = el.getChildren()[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();
};

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

