/**
 * Star rating widget.
 * 
 * @author erani
 */
var StarWidget = Class.create();

StarWidget.prototype = {
	
	delimeterPosition: null,
	containerObject: null,
	containerId: null,
	defaultClass: null,
	hoverClass: null,
	onclickFunction: function() {
		
	},
	
	initialize: function() {	
	},
	
	init: function(options) {
		this.containerId = options.containerId;
		this.defaultClass = options.defaultClass;
		this.hoverClass = options.hoverClass;
		this.onclickFunction = options.onClickFunction;
		this.delimeterPosition = options.delimeterPosition;
	},
	
	run: function() {
		this.containerObject = $(this.containerId);		
		var elements = this.containerObject.childElements();
		
		if (!elements.length)
			return false;
		
		for(var i = 0; i < this.delimeterPosition; i++) {
			elements[i].addClassName(this.hoverClass);
			elements[i].observe('mouseover', this.mouseover.bind(this)); 
			elements[i].observe('mouseout', this.mouseout.bind(this));
			elements[i].observe('click', this.onclickFunction.bind({index: i+1, object:this}));
		}
		
		for(var i = this.delimeterPosition; i < elements.length; i++) {
			elements[i].addClassName(this.defaultClass);
			elements[i].observe('mouseover', this.mouseover.bind(this));
			elements[i].observe('mouseout', this.mouseout.bind(this));
			elements[i].observe('click', this.onclickFunction.bind({index: i+1, object:this}));
		}		
	},
	
	mouseover: function(event) {
		var className = this.hoverClass;
		var element = Event.element(event);
		var elements = this.containerObject.childElements();
		
		for(var i = 0; i < elements.length; i++) {	
			elements[i].className = className;
				
			if (elements[i] == element) {
				className = this.defaultClass;
			}
		}
	},
	
	mouseout: function(event) {
		var elements = this.containerObject.childElements();
		for (var i = 0; i < this.delimeterPosition; i++) {
			elements[i].className = this.hoverClass;
		}
		
		for (var i = this.delimeterPosition; i < elements.length; i++) {
			elements[i].className = this.defaultClass;
		}
	}	
}