function init() {
	field = YAHOO.util.Dom.get('rating')
    ratingdiv = YAHOO.util.Dom.get('rating_div')        
    stardiv = document.createElement('div')
    make_stardiv()
}
function make_stardiv() {
	/* Replaces original form with the star images */
	
	YAHOO.util.Dom.addClass(stardiv, 'rating');
	        
	// make the stars
	for (var i=1; i<=5; i++) {
	    // first, make a div and then an a-element in it
	    var star = document.createElement('div');
	    star.id = 'star' + i;
	    var a = document.createElement('a');
	    a.innerHTML = i;
	    YAHOO.util.Dom.addClass(star, 'star');
	    star.appendChild(a);
	    stardiv.appendChild(star);
	
	    // add needed listeners to every star
	    YAHOO.util.Event.addListener(star, 'mouseover', hover_star, i);
	    YAHOO.util.Event.addListener(star, 'mouseout', reset_stars);
	    YAHOO.util.Event.addListener(star, 'click', submit_rating, i);
	}        
	ratingdiv.appendChild(stardiv);
	// show the average
	reset_stars();
}
    
function hover_star(e, which_star) {
	/* hovers the selected star plus every star before it */
	for (var i=1; i<=which_star; i++) {
	    var star = YAHOO.util.Dom.get('star' + i);
	    var a = star.firstChild;
	    YAHOO.util.Dom.addClass(star, 'hover');
	    YAHOO.util.Dom.setStyle(a, 'width', '100%');
	}
}
    
function reset_stars() {
	   /* Resets the status of each star */
	   
	var stars_on = field.value;
	if(stars_on == 0){
		stars_on = 1;
		field.value = 1;
	}
	var last_star_width = '100%';
	
   	// cycle trought 1..5 stars
   	for (var i=1; i<=5; i++) {
       var star = YAHOO.util.Dom.get('star' + i);
       var a = star.firstChild;
       
       // first, reset all stars
       YAHOO.util.Dom.removeClass(star, 'hover');
       YAHOO.util.Dom.removeClass(star, 'on');

       // for every star that should be on, turn them on
       if (i<=stars_on && !YAHOO.util.Dom.hasClass(star, 'on'))
           YAHOO.util.Dom.addClass(star, 'on');

       // and for the last one, set width if needed
       if (i == stars_on)
           YAHOO.util.Dom.setStyle(a, 'width', last_star_width);
   	}
}
    
function submit_rating(e, num) {
     // If the form has not been submitted yet 
     // and submission is not in progress
	field.value = num;
}
YAHOO.util.Event.addListener(window, 'load', init);
