//-----------------------------------------------------
//--- [MOD] Ajax Star Rating --------------by Bash-T---
//-----------------------------------------------------
function submitRatingRequest(frm) {
	var ajax_rating_rate = YAHOO.util.Dom.get('ajax_rating_rate');
	var ajax_rating_count = YAHOO.util.Dom.get('ajax_rating_count');
	var rating_msg = YAHOO.util.Dom.get('star_rating_msg');
	var rating_value = YAHOO.util.Dom.get('starCur0');
	var stars = YAHOO.util.Dom.get('star0');

	var handleSuccess = function(o){
		if(o.responseText !== undefined){
			var response = YAHOO.lang.JSON.parse(o.responseText);
			var rating = parseFloat(response.Result.rating);
			rating_msg.innerHTML = YAHOO.rating.star.msgs[response.Result.msgKey];
			rating_value.title = rating;
			YAHOO.rating.star.revert();
			
			ajax_rating_count.innerHTML = response.Result.votes;
			ajax_rating_rate.innerHTML = rating;
			if(response.Result.successfully_voted == 1)
			{
				YAHOO.rating.star.successfully_voted = true;
				YAHOO.util.Dom.setStyle(stars , "cursor" , "default" );
			}
		}
	};

	var handleFailure = function(o){
	};
	
	var callback = {
	  success:handleSuccess,
	  failure:handleFailure
	};

	YAHOO.util.Connect.setForm(frm);
	YAHOO.util.Connect.asyncRequest("POST", "ajaxrating.php", callback);
}


function $(v,o) { return((typeof(o)=='object'?o:document).getElementById(v)); }
function $S(o) { return((typeof(o)=='object'?o:$(o)).style); }
function agent(v) { return(Math.max(navigator.userAgent.toLowerCase().indexOf(v),0)); }
function abPos(o) { var o=(typeof(o)=='object'?o:$(o)), z={X:0,Y:0}; while(o!=null) { z.X+=o.offsetLeft; z.Y+=o.offsetTop; o=o.offsetParent; }; return(z); }
function XY(e,v) { var o=agent('msie')?{'X':event.clientX+document.body.scrollLeft,'Y':event.clientY+document.body.scrollTop}:{'X':e.pageX,'Y':e.pageY}; return(v?o[v]:o); }


YAHOO.rating.star.mouse=function(e,o) { 
	if((YAHOO.rating.star.stop || isNaN(YAHOO.rating.star.stop)) 
		&& !YAHOO.rating.star.successfully_voted) { 
		YAHOO.rating.star.stop=0;
		document.onmousemove=function(e) { 
			var n=YAHOO.rating.star.num;
			var pos=abPos($('star'+n)), 
				x=XY(e), 
				oX=x.X-pos.X, 
				oY=x.Y-pos.Y; 
				YAHOO.rating.star.num=o.id.substr(4);

			if(oX<1 || oX>84 || oY<0 || oY>19) { 
				YAHOO.rating.star.stop=1; YAHOO.rating.star.revert(); 
			}
			
			else {
				$S('starCur'+n).width=oX+'px';
				$S('starUser'+n).color='#111';
				var p = Math.round(oX/84*100); //percent
				YAHOO.util.Dom.setAttribute($('starUser'+n), "percent", p);
				
				if(YAHOO.rating.star.display_percentage) {
					$('starUser'+n).innerHTML=percent+'%';
				}
				
				if(YAHOO.rating.star.display_lables) {
					var l = YAHOO.rating.star.labels;
					YAHOO.util.Dom.get('star_rating_label').innerHTML = (p>=1&&p<=20)?l[1]:(p>=21&&p<=40)?l[2]:(p>=41&&p<=60)?l[3]:(p>=61&&p<=80)?l[4]:(p>=81&&p<=100)?l[5]:'';
				}
			}
		};
	} 
};

YAHOO.rating.star.update=function(e,o) {
	if(!YAHOO.rating.star.successfully_voted)
	{
	 var n=YAHOO.rating.star.num, 
		 v=parseInt(YAHOO.util.Dom.getAttribute($('starUser'+n), "percent"));
		 n=o.id.substr(4); 
		 targetForm = document.getElementById('ajax_rate_form');
		 factor = parseFloat('0.05');
		 rating = 1+v*factor-factor;
		 targetForm.rating.value = rating;
		 submitRatingRequest(targetForm);
	 }
};

YAHOO.rating.star.revert=function() { 
	var n=YAHOO.rating.star.num, 
	v=parseFloat($('starCur'+n).title);
	factor = parseFloat('0.05');
	percent = (v>0)? (v+factor-1)/factor : 0;

	$S('starCur'+n).width=Math.round(percent*84/100)+'px';
	if(YAHOO.rating.star.display_percentage) {
		$('starUser'+n).innerHTML=(percent>0?Math.round(percent)+'%':'');
	}
	$('starUser'+n).percent=(percent>0?Math.round(percent):'');
	$('starUser'+n).style.color='#888';
	
	if(YAHOO.rating.star.display_lables) {
		YAHOO.util.Dom.get('star_rating_label').innerHTML=(percent==0)?YAHOO.rating.star.labels[0]:'';
	}
	
	document.onmousemove='';
};

YAHOO.util.Event.onDOMReady(function() {
	YAHOO.rating.star.revert();
});
