function xRatingCtrl (str_id, b_DisabletAtInit) 
{
  this.onClick = null;

  try {
    eval('var aPointer = ' + xAttr(str_id,'OnClientClick')+ ';');
  
  //alert(aPointer);
	  this.onClick = aPointer;
	}
	catch(e) {
	}
	this.KeyValue = xAttr(str_id,'KeyValue');
	
	
	var me = this;
	
	var txt_ele = $(str_id + '_avg');
	var txt_ele_total = $(str_id + '_total')
	
	var theCtrl = $(str_id + "_rCtrl"); 	//the Rating Ctrl
	var starPrefix = str_id + "_rCtrl_Star_";
	var ratingStars = $ByClass('ratingStar',str_id + '_rCtrl','span');
	var theLabel = $(str_id + '_label');
	
	if (!b_DisabletAtInit) {
	  $ale($(theCtrl),'mouseover',doOver,false);
	  $ale($(theCtrl),'mouseout',doOut,false);
	  $ale($(theCtrl),'click',doClick,false);
	}
	
	setLastClickedValue(b_DisabletAtInit);
//	setValuesForTheLabel();
	
	//function setValuesForTheLabel() {
//		theLabel.innerHTML = String.format('Avg : {0} | Votes : {1}', txt_ele.value,txt_ele_total.value);
//		
//	}	
	
	function getStarNumber(star) {
		if (star != null && star.length != null) {
			if (star.length > 0) return star.charAt(star.length - 1);			
		}
		return null;
	}
	function setLastClickedValue(putBlue) {
	  
		if (YAHOO.lang.isNumber(parseFloat(txt_ele.value))) 
		{			  	 
			if (txt_ele.value < 1 || txt_ele.value > 5)	 txt_ele.value = 0;
			
		}
		changeStarDisplay(txt_ele.value, putBlue);
	}
	function doOut(e) {
		setLastClickedValue();
	}
	function doOver(e) {
		var xE = new xEvent(e);		  	
		if (YAHOO.util.Dom.hasClass(xE.target,'ratingStar')) {
			//YAHOO.RRRM.Util.Trace('rating value ' +  getStarNumber(xE.target.id));		
			changeStarDisplay(getStarNumber(xE.target.id));
		}
	}
	this.setBlue = function () {
		changeStarDisplay(txt_ele.value,true);
		$rle($(theCtrl),'mouseover',doOver,false);
		$rle($(theCtrl),'mouseout',doOut,false);
		$rle($(theCtrl),'click',doClick,false);
	}
	function doClick(e) {
		var xE = new xEvent(e);
		if (YAHOO.util.Dom.hasClass(xE.target,'ratingStar')) { 
			txt_ele.value = getStarNumber(xE.target.id);
		
			if (me.onClick != null && typeof(me.onClick) == 'function')  
			{
			 
				//pass the event and the value of the actual selected star
				me.onClick(me,txt_ele.value,e);
			}
		}
	}
	
	function changeStarDisplay(starNumber,putBlue) {		
		if (starNumber >= 0) 
		{					
		  starNumber = Math.round(starNumber);
			if (ratingStars != null) 
			{
				for (var ix = 0 ; ix < ratingStars.length;ix++) 
				{
					var aStar = ratingStars[ix];
					if (aStar != null) 
					{
						var stNumber = getStarNumber(aStar.id);
						
						if (stNumber <= starNumber) 
						{	
							var clName = putBlue ? 'saved' : 'filled';						
							YAHOO.util.Dom.replaceClass(aStar,'empty',clName);
						}
						else
						{
							YAHOO.util.Dom.replaceClass(aStar,'filled','empty');
						}						
					}				 
				}		
			}
		}
	}	
}

function ReInitRatingCtrls(str_div) {
	var divs = $ByClass("wcc_ctrl",str_div);
	if (!divs) return;
		
	for(var xi = 0; xi < divs.length; xi++) 
	{	  
	  var dAtInit = xAttr(divs[xi],'DisabledAtInit');
		var aCtrl = new xRatingCtrl(divs[xi].id, dAtInit);
	}
}

