/* AJAX Star Rating : v1.0.3 : 2008/05/06 */
/* http://www.nofunc.com/AJAX_Star_Rating/ */

function $T(v,o) { 
    return((typeof(o)=='object'?o:document).getElementById(v)); 
}
function $S(o) { 
    return((typeof(o)=='object'?o:$T(o)).style); 
}
function agent(v) { 
    return(Math.max(navigator.userAgent.toLowerCase().indexOf(v),0)); 
}
function abPos(o) { 
    var o=(typeof(o)=='object'?o:$T(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); 
}

star={};

star.mouse=function(e,o) { 
    if(star.stop || isNaN(star.stop)) { 
	star.stop=0;
	document.onmousemove=function(e) { 
	    var n=star.num;
	    var p=abPos($T('star'+n)), x=XY(e), oX=x.X-p.X, oY=x.Y-p.Y; 
	    star.num=o.id.substr(4);
	    if(oX<1 || oX>84 || oY<0 || oY>19) { 
		star.stop=1; star.revert(); 
	    } else {
		$S('starCur'+n).width=oX+'px';
		$S('starUser'+n).color='#111';
		$T('starUser'+n).innerHTML=Math.round(oX/84*100)+'%';
		$T('starText'+n).innerHTML=cp_info.mooringness.brief[Math.floor(oX/84*100/20)+1];
	    }
	};
    } 
};

star.update=function(e,o,i) { 
    var n=star.num, v=parseInt($T('starUser'+n).innerHTML);
    //    n=o.id.substr(4); $T('starCur'+n).title=v;
    var xmlhttp=null;
    if (window.XMLHttpRequest) {
	xmlhttp=new XMLHttpRequest()
	    } else if (window.ActiveXObject) {
	xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
    }
    if (xmlhttp == null) {
	alert("Sorry, your browser can't do this");
	return false;
    }
    xmlhttp.onreadystatechange=function() {
	if (xmlhttp.readyState==4) {
	    if (xmlhttp.status==200) {
		star.stop = 1;
		star.revert();
		// prevent further voting
		star.update = star.donothing;
		star.mouse = star.donothing;
		document.onmousemove='';
		star.revert = star.donothing;
		// change display
		var r = xmlhttp.responseText.replace('\r','');
		if(r.charAt(0)=='!') {
		    alert(r);
		} else {
		    var update = r.split('|');
		    Write_New_Info(update[0],update[1]);
		}
		$S('starBusy'+n).display = 'none';
	    }  
	}
    };
    xmlhttp.open("GET","../cgi-bin/vote.cgi?m=gaz&id="+i+'&v='+v,true);
    xmlhttp.send(null);
    $S('starBusy'+n).display = 'block';
}
    
star.revert=function() { 
    var n=star.num, v=parseInt($T('starCur'+n).title);
    $S('starCur'+n).width=Math.round(v*84/100)+'px';
    $T('starUser'+n).innerHTML=(v>0?Math.round(v)+'%':'');
    $T('starUser'+n).style.color='#888';
    $T('starText'+n).innerHTML='';
    document.onmousemove='';
};       

star.num=0;

star.donothing = function() {
}

function Write_New_Info(t,v) {
    var n=star.num;
    var sc = t/v;
    if(sc == 0) sc =1;
    var tx = '<span class="star_thanks">Thank you for voting!</span>  ';
    tx += v + ' vote';
    if(v!=1) tx += 's';
    tx += ' cast';
    $T('starVoteBox'+n).innerHTML = tx;
    $S('starCur'+n).width=(sc*84/100)+'px';
    $S('starUser'+n).color='#111';
    $T('starUser'+n).innerHTML=sc+'%';
    $T('starQual'+n).innerHTML="Mooring here is \""+cp_info.mooringness.brief[Math.floor(sc/20)+1]+"\" - "+cp_info.mooringness.detail[Math.floor(sc/20)+1];}