var Rater = {
  init: function(){
    this.raters = YAHOO.util.Dom.getElementsByClassName('star-rating');
    Rater.getRating();
    for(var i=0; i<this.raters.length; i++){
      var links = this.raters[i].getElementsByTagName('a');
      for(var j=0; j<links.length; j++){
        // override default functionality for AJAX
        links[j].onclick = function(e){
          // Luckily for us, YUI's preventDefault breaks in Internet Explorer
          if (e && e.stopPropagation) {
            e.stopPropagation();
            e.preventDefault();
          }
          else if (window.event) window.event.cancelBubble = true;
          Rater.disableRater();
          Rater.setTriggersRated(this.innerHTML);
          Rater.feedBack(this.href);
          return false;
        }
      }
    }
    // Now initialize the action words
    this.triggers = YAHOO.util.Dom.getElementsByClassName('actionWords', 'span');
    this.setTriggersRate();
    this.url;
  },

  pageRate: function(val) {
    for(var i=0; i<this.raters.length; i++){
      this.raters[i].getElementsByTagName('li')[0].style.width = val+'px';
    }
  },

  getRating: function(response) {
    // Create the ajax callback
    var callback = {
      success: function(o) {
        var releases = o.responseXML.getElementsByTagName('entry');
        for (var i=0; i<releases.length; i++) {
          if (releases[i].getElementsByTagName('docId')[0].firstChild.nodeValue == docID) {
            Rater.pageRate(releases[i].getElementsByTagName('rating')[0].firstChild.nodeValue);
            break;
          }
        }
      },
      failure: function(){}
    }
    var request = YAHOO.util.Connect.asyncRequest('POST', '../Newsroom/nc3.0/xml/pageRatings.xml', callback);
  },

  feedBack: function(href) {
    this.url = href+'&fb=';
    if (href.slice(-1) < 3) {
      rateFBBox1.show();
    } else {
     this.frameMe(this.url);
    }
  },

  storeFeedback: function(fb) {
    this.frameMe(this.url+escape(fb));
    this.hideFeedback();
  },

  hideFeedback: function() {
    rateFBBox1.hide();
  },
	
  frameMe: function(href){
    var feedbackImage = new Image(1,1);
    feedbackImage.src = href+'&docId='+docID;
  },

  showRating: function(rating){
    for(var i=0; i<this.raters.length; i++){
      this.raters[i].getElementsByTagName('li')[0].style.width = (rating*13) + 'px';
    }
  },
  
  disableRater: function(){
    for(var i=0; i<this.raters.length; i++){
      YAHOO.util.Dom.removeClass(this.raters[i].parentNode, 'ratingActive');
      var links = this.raters[i].getElementsByTagName('a');
      for (var j=0; j<links.length; j++){
       links[j].style.display = 'none';
      }
    }
  },
  
  setRateReady: function(){
    for (var i=0; i<this.raters.length; i++){
      YAHOO.util.Dom.addClass(this.raters[i].parentNode, 'ratingActive');
    }
  },
  
  setTriggersRate: function(){
    for (var i=0; i< this.triggers.length; i++){
      YAHOO.util.Dom.removeClass(this.triggers[i], 'currentAction');
      this.triggers[i].onclick = function(){
        Rater.setRateReady();
        Rater.setTriggersRating();
      }
    }
  },
  
  setTriggersRating: function(){
    for (var i=0; i< this.triggers.length; i++){
      YAHOO.util.Dom.addClass(this.triggers[i], 'currentAction');
      this.triggers[i].onclick = function(){
        Rater.setRateReady();
        Rater.setTriggersRating();
      }
    }
  },
  
  setTriggersSaving: function(){
    
  },
  
  setTriggersRated: function(rating){
    for (var i=0; i< this.triggers.length; i++){
      this.triggers[i].innerHTML = 'Thank You (' + rating + ' star'
      if (rating > 1) this.triggers[i].innerHTML += 's)'
      else this.triggers[i].innerHTML += ')';
      this.triggers[i].style.cursor = 'text';
      this.triggers[i].onclick = function(){}
    }
  }
}
YAHOO.util.Event.onDOMReady(function(){
  Rater.init();
});
