
// NetVision JS - Voting Stars
// (c) 2006-2010 unix-world.org
// v.8.1
// r.20100124

// DEPENDS: mootools

//=====================================

var JS_RatingStars_Path = ''; // EMPTY | must end with a slash /

var JS_RatingStars_Class = new function() { // START CLASS

//== [PUBLIC]
this.draw = function(el_id, url) {
	//--
	var tmp_stars = ''; // init
	var curent = '';
	//--
	var tmp_obj = document.getElementById(el_id);
	//--
	var i;
	//--
	for(i=1;i<=10;i++) {
		curent="l";
		if(i%2==0) {
			curent="r";
		} //end if
		tmp_stars = tmp_stars + '<img src="'+JS_RatingStars_Path+'img/gstar_'+curent+'.gif" alt="'+i+'" title="'+i+'" border="0" onMouseOver="JS_RatingStars_Class.display_stars('+i+',10,\''+el_id+'\',\'rstar\',\'gstar\')" onClick="JS_RatingStars_Class.cast_vote('+i+', \''+el_id+'\', \''+url+'\')" id="'+el_id+'_'+i+'">';
	} //end for
	//--
	tmp_obj.onmouseout = function() {
		hide_vote_stars(10,parseInt(this.title),el_id,'gstar','rstar');
	} //end
	//--
	tmp_obj.style.width = '100px';
	tmp_obj.style.padding = '2';
	tmp_obj.style.textAlign = 'center';
	tmp_obj.style.backgroundColor = '#F5F5F5';
	tmp_obj.style.border = '1px solid #ECECEC';
	tmp_obj.style.cursor = 'pointer';
	//--
	tmp_obj.innerHTML = tmp_stars;
	//--
	hide_vote_stars(10,parseInt(tmp_obj.title),el_id,'gstar','rstar');
	//--
	tmp_stars = ''; // clean
	//--
} //END FUNCTION

//== [PUBLIC but Private use]
this.display_stars = function(i,total,object_type,img1_name,img2_name) {
	//--
	var curent = '';
	var tmp_star = '';
	//--
	var j;
	//--
	for(j=1;j<=i;j++) {
		curent="l";
		if(j%2==0) {
			curent="r";
		} //end if
		tmp_star = document.getElementById(object_type+'_'+j);
		tmp_star.src = JS_RatingStars_Path + 'img/' + img1_name + '_' + curent + '.gif';
	} //end for
	//--
	for(j=i+1;j<=total;j++) {
		curent="l";
		if(j%2==0) {
			curent="r";
		} //end if
		tmp_star = document.getElementById(object_type+'_'+j);
		tmp_star.src = JS_RatingStars_Path + 'img/' + img2_name + '_' + curent + '.gif';
	} //end for
} //END FUNCTION

//== [PUBLIC but Private use]
this.cast_vote = function(score, el_id, url) {
	//-- url sample: test.php?id= [must end with =]
	if(url == 'undefined') {
		//--
		alert('URL is NOT Defined for Rating Stars Element ID: '+el_id);
		//--
	} else {
		//--
		var tmp_obj = document.getElementById(el_id);
		var tmp_old_score = parseInt(tmp_obj.title);
		var tmp_score = tmp_old_score;
		//--
		if(isNaN(tmp_old_score)) {
			tmp_old_score = 0;
		} //end if
		if(tmp_old_score < 0) {
			tmp_old_score = 0;
		} //end if
		if(tmp_old_score > 10) {
			tmp_old_score = 10;
		} //end if
		//--
		var AJX_stars_ReqVar = Browser.Request(); // MOO
		//--
		if (AJX_stars_ReqVar.readyState == 4 || AJX_stars_ReqVar.readyState == 0) {
			//--
			AJX_stars_ReqVar.open('GET', url+el_id+'&stars='+score, true);
			//--
			AJX_stars_ReqVar.onreadystatechange = function() {
				//--
				if (AJX_stars_ReqVar.readyState == 4) {
					//--
					var str = AJX_stars_ReqVar.responseText.split("\n");
					//-- errcode [\n] score [\n] info [\n] #end
					var msg = str[0];
					var res = str[1];
					var inf = str[2];
					var end = str[3];
					//--
					if(end == 'RATINGSTARS: END') {
						switch(msg) {
							case 'RATINGSTARS: +200 OK':
								tmp_score = parseInt(res);
								alert(inf);
								break;
							case 'RATINGSTARS: +400 ERROR':
								alert(inf);
								break;
							default:
								alert('RATINGSTARS: Unknown Status: '+msg);
						} //end switch
					} else {
						alert('RATINGSTARS: INVALID OR INCOMPLETE RESPONSE !'+"\n\n"+msg+"\n"+res+"\n"+inf+"\n"+end);
					} //end if else
					//--
					if(tmp_score < 0) {
						tmp_score = 0;
					} //end if
					if(tmp_score > 10) {
						tmp_score = 10;
					} //end if
					//--
					tmp_obj.title = tmp_score.toString();
					//--
					hide_vote_stars(10,tmp_score,el_id,'gstar','rstar');		
					//--
				} //end if else
				//--
			} //end function
			//--
		} //end if
		//--
		AJX_stars_ReqVar.send(null);
		//--
	} //end if else
	//--
} //END FUNCTION

//== [PRIVATE]
var hide_vote_stars = function(total,score,object_type,img1_name,img2_name) {
	//--
	var curent = '';
	var tmp_star = '';
	//--
	var j;
	//--
	for(j=1;j<=total;j++) {
		curent="l";
		if(j%2==0) {
			curent="r";
		} //end if
		tmp_star = document.getElementById(object_type+'_'+j);
		if(j<=score) {
			tmp_star.src = JS_RatingStars_Path + 'img/' + img2_name + '_' + curent + '.gif';
		} else {
			tmp_star.src = JS_RatingStars_Path + 'img/' + img1_name + '_' + curent + '.gif';
		} //end if else
	} //end for
	//--
} //END FUNCTION

} //END CLASS

//=====================================

// #END
