// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults

var Raitings = Class.create();
Raitings.prototype = {
	
	raters:[],
	initialize: function () {

	},
	initRaterRefresh: function () {
		var observe_function = this.raterRefresh.bind(this);
		raters = $$('.rater')
		var i = 0
		for(i=0;i<raters.size();i++)
		{
			Event.observe(raters[i], 'mouseout', observe_function, false);
		}
		this.refreshAllRaters()
	},
	refreshAllRaters: function () {
		for(i=0;i<raters.size();i++)
		{
			this.raterRefreshDefault(raters[i].id)
		}
	},
	raterRefresh: function(e)
	{
		if (!e) var e = window.event;
		var tg = (window.event) ? e.srcElement : e.target;
		if (tg.nodeName != 'DIV' && tg.nodeName != 'IMG') return;
		var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;
		if (reltg==undefined) return
	
		if (reltg.className =="rater") return
		
		while (reltg != tg && reltg.nodeName != 'BODY')
			reltg = reltg.parentNode
			
		if (reltg == tg) return;
		
		rater_div = tg
		while (rater_div.className != 'rater' && rater_div.nodeName != 'BODY')
		{
			rater_div = rater_div.parentNode
		}
		
		if (rater_div.className == 'rater')
		{
			this.raterRefreshDefault(rater_div.id)
		}	
	},
	raterRefreshDefault: function(rater_div)
	{
		this.updateRating(rater_div, $$('#'+rater_div+' input.recorded_vote')[0].value)
	},
	changeDefaultRating: function(rater_div,rating){
		$$('#'+rater_div+' input.recorded_vote')[0].value = rating
		this.raterRefreshDefault(rater_div)
	},
	updateRating: function(rating_div,rating) {
		
		elements = this.getRatingElements(rating_div);
		
		num_elements = elements.size();
		var i = 0;
		for(i = 0; i < num_elements; i++)
		{
			if(i+1 == rating)
			{
				this.elementOn(elements[i]);
			}
			else
			{
				this.elementOff(elements[i]);
			}
		}

	},
	getRatingElements: function(rating_div){
		css_ids = '#'+rating_div+' img.rating_element';
		return $$(css_ids);
	},
	elementOff: function(element){
		element.src = '/images/'+element.id+'_off.gif';
	},
	elementOn: function(element){
		element.src = '/images/'+element.id+'.gif';
	}
}
function clear_script_debug(){
	$('script_debug').innerHTML = "Script Debug:<div id=\"script_debug_line\"></div>"
}

function dbg(message){
	new_div = "\n<br/><div id=\"script_debug_line\"></div>"
	old_div = $('script_debug_line')
	old_div.innerHTML = '#>' + message + new_div
	old_div.id = 'old_debug_line'
}	
ratings = new Raitings;	

Event.observe(window, 'load', page_loaded, false);

function page_loaded(){
	ratings.initRaterRefresh()
}

	

