var CONNECT = YAHOO.util.Connect;
CreatoorSN.namespace('miniRatings');
CreatoorSN.miniRatings = {
    dafault : {containerClass : 'starRatingContainer',
               ajaxUrl :'/members/ajax/update-contribution-rating/',
               starSize : 25
              },
    init :function(config){
        config = CreatoorSN.miniRatings.dafault;
        if(config.containerClass){
            var ratingContainers = DOM.getElementsByClassName(config.containerClass, 'div');
            for(var i =0; i< ratingContainers.length ; i++ ){
                var containerID = ratingContainers[i].id;
                var params = containerID.split('-',3);
                if(params.length ==3 ){
                    var stars =  DOM.getElementsByClassName('star', 'a',ratingContainers[i]);
                    DOM.batch(stars,CreatoorSN.miniRatings.setRateOnClick, {type : params[1], token : params[2], config: config});
                }
            }
        }
    },
    setRateOnClick : function(el, data){
        el.onclick = function(){CreatoorSN.miniRatings.rate(el,data);return false;}
    },
    rate : function(el, d){
       var overlay = disableElement(el.parentNode.parentNode);
       var oCallback = {
                success : function (o) {
                   removeElement(overlay);
                   if (YAHOO.lang.JSON.isSafe(o.responseText)) {
                      var r = YAHOO.lang.JSON.parse(o.responseText);
                      if (r.noAuth) {
                          var login = new noAuth(function(noAuthObj){
                          CreatoorSN.miniRatings.rate(el,d)
                          return;
                        }, r.message);
                      }else{
                        if(r.success){

                           var currentRating = DOM.getElementsByClassName('current-rating','li',el.parentNode.parentNode);                           
                           DOM.setAttribute(currentRating,'style','width:'+r.width+'px');
                           if (DOM.hasClass(el.parentNode.parentNode.parentNode, 'starRatingContainer') &&
                               DOM.hasClass(el.parentNode.parentNode.parentNode.nextSibling, 'user')) {
                                el.parentNode.parentNode.parentNode.nextSibling.innerHTML = r.rating + ' (<span>' + r.count + '</span>)';
                               }                           
                        }
                      }
                  }
                },
                failure : function (o){
                            removeElement(overlay);
                            CreatoorSN.common.showErrorAlert(CreatoorSN.common.translate('Oops an error occured while executing a script. Please try again later.'))                            
                         }
       };
       var rating =el.innerHTML;
       if(d.config.ajaxUrl){
           CONNECT.asyncRequest(
                "POST",
                d.config.ajaxUrl,
                oCallback,
                'id='+d.token+'&rating='+rating+'&type='+d.type+'&starWidth='+d.config.starSize
           );
       }
    }
}

