var Portfolio = {
  initialize : function (artist) {
    var self = this;
    this.artist = artist;
    this.service = '/service.rate.php';
    this.ratings = $('.ratings');
    this.allStars = $('.ratings a');
    this.description = $('.rating-description');
    this.voteContainer = $('#vote-container');
    this.defaultDescription = 'Click a star above to rate this artist.';
    this.rated = false;
    this.nextRating = '';
    
    this.oneStar = this.ratings.find('.one-star');
    this.oneStar.data('description', 'Poor');
    this.oneStar.data('rating', '1');

    this.twoStar = this.ratings.find('.two-star');
    this.twoStar.data('description', 'Fair');
    this.twoStar.data('rating', '2');

    this.threeStar = this.ratings.find('.three-star');
    this.threeStar.data('description', 'Good');
    this.threeStar.data('rating', '3');

    this.fourStar = this.ratings.find('.four-star');
    this.fourStar.data('description', 'Great');
    this.fourStar.data('rating', '4');

    this.fiveStar = this.ratings.find('.five-star');
    this.fiveStar.data('description', 'Amazing!');
    this.fiveStar.data('rating', '5');

    this.starOrder = [this.oneStar,this.twoStar,this.threeStar,
                      this.fourStar,this.fiveStar];

    
    this.allStars.bind('mouseover', function() { self.highlight($(this)); });
    this.allStars.bind('click', function() { self.setRating($(this)); return false;});
  },
  highlight : function(element) {
    var i = 0;
    var searching = true;
    for (i in this.starOrder) {
      var current = this.starOrder[i];
      var currentRating = current.data('rating');
      var elementRating = element.data('rating');

      current.removeClass('on');
      if (searching) {
        current.addClass('on');
		$('.rate_display strong').html("Rate This Portfolio&nbsp;&nbsp;|&nbsp;&nbsp;"+current.data('description'));

      }
      if (currentRating == elementRating) {
        searching = false;
        this.description.html(current.data('description'));
      }
    }
  },
  setRating : function(element) {
	  
	var ratingArray = ["Poor","Fair","Good", "Great", "Amazing!"];
    var rating = element.data('rating');
    var artist = this.artist;
    if (!this.artist) {
      artist = window.artist;
    }
    this.voteContainer.addClass('voted');
//    jQuery.get(this.service, {op: 'rate', artist: artist, rating: rating}, function(data) {
    jQuery.getJSON(this.service, {op: 'rate', artist: artist, rating: rating}, function(data) {
    	if(data.next_rating.length > 0) {
    		jQuery('#vote_msg_success').css('display', 'none');
    		jQuery('#vote_msg_failure').css('display', 'inline');
    		jQuery('#vote_next_msg').css('display', 'inline');
    		jQuery('#vote_next_when').text(data.next_rating);
			jQuery('.rating-description').html(ratingArray[data.old_rating-1])

    	} else {
    		jQuery('#vote_msg_failure').css('display', 'none');
    		jQuery('#vote_next_msg').css('display', 'none');
    		jQuery('#vote_msg_success').css('display', 'inline');
    	}
      // service returns success:true/false, but as far as the user knows, she already voted.
    });
  }
};


