star={};
star.num=0;
var IE = document.all?true:false;
//if (IE==true) alert("Browser is IE");
//else alert("Browser is not IE");
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 xPos = document.body.scrollLeft || document.documentElement.scrollLeft;
    var yPos = document.body.scrollTop || document.documentElement.scrollTop;
    var o = agent('msie')?{'X':event.clientX+xPos,'Y':event.clientY+yPos}:{'X':e.pageX,'Y':e.pageY}; 
    return(v?o[v]:o); 
}

star.mouse = function(o,e,t) {
    //
    // Mouse moved over rating so show part of the stars 
    //
    //alert("e=" + e.id + " o: " + o.id + " t: " + t);        
    if(star.stop || isNaN(star.stop)) { 
        star.stop = 0;
        document.onmousemove = function(e) { 
            var n = star.num;	
            var p = abPos($('star'+n));
            var x = XY(e);
            //alert("X="+x.X+" Y="+x.Y);
            var oX = x.X-p.X;
            var 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(t);		                
            }
            else {		               
	            $S('starResult' + n).color = '#111';			            		            
	            if (t==1) {
	                //
	                // Use percent for rating
	                //
	                $S('starCurrent' + n).width = oX + 'px';	
	                var r = Math.round(oX/84*100)
                    if (r<10) {r="% Abysmal";}
                    if (r>=10 && r<20) {r=r+"% Terrible";}
                    if (r>=20 && r<30) {r=r+"% Poor";}
                    if (r>=30 && r<40) {r=r+"% Mediocre";}
                    if (r>=40 && r<50) {r=r+"% Average";}
                    if (r>=50 && r<60) {r=r+"% Good";}
                    if (r>=60 && r<70) {r=r+"% Very Good";}
                    if (r>=70 && r<80) {r=r+"% Excellent";}
                    if (r>=80 && r<90) {r=r+"% Outstanding";}
                    if (r>=90) {r=r+"% Spectacular";}	    			                
	                $('starResult' + n).innerHTML = r;
	            }
	            if (t==2) {
	                //
	                //  Use 1-5 Stars for rating
	                //
	                $S('starCurrent' + n).width = oX + 'px';
	                var r = Math.round(oX/84*100)/20;
                    //var r = LimitCharsROfD(Math.round(v)/20,1);
                    if (r<.50) {r=" Abysmal";}
                    if (r>=.50 && r<1.00) {r=r+" Terrible";}
                    if (r>=1.00 && r<1.50) {r=r+" Poor";}
                    if (r>=1.50 && r<2.00) {r=r+" Mediocre";}
                    if (r>=2.00 && r<2.50) {r=r+" Average";}
                    if (r>=2.50 && r<3.00) {r=r+" Good";}
                    if (r>=3.00 && r<3.50) {r=r+" Very Good";}
                    if (r>=3.50 && r<4.00) {r=r+" Excellent";}
                    if (r>=4.00 && r<4.50) {r=r+" Outstanding";}
                    if (r>=4.50) {r=r+" Spectacular";}
                    r = LimitCharsROfD(r,1);
                    $('starResult' + n).innerHTML = r;
	            }
            }
        }
    } 
};                
star.update = function(o,t) {
    //
    //  Mouse has been clicked so change rating
    //
    var n = o.id.substr(4);
    if (t==1) {
        var v = parseInt($('starResult' + n).innerHTML);
        $('starCurrent' + n).title = v;
        //alert("Setting Current To: " + v);
    }
    if (t==2) {
        var v = parseFloat($('starResult' + n).innerHTML);
        $('starCurrent' + n).title = v;
        //alert("Setting Current To: " + v);
    }
    var updateUrl = '';
    //
    //alert("Setting Current To: " + v);
    // upServer is a control to hold value for asp.net, this is not on all forms
    var upServer = document.getElementById('starTB'+n);
    if (upServer) {upServer.value=v;}
    else {alert("cant find control");}
    //updateUrl = '/AJAX_Star_Vote.php?vote='+(v/100)
    //req=new XMLHttpRequest(); req.open('GET', updateUrl, false); 
    //req.send(null);    
};
star.revert = function(t) {
    //alert("revert"); 
    var n = star.num;
    $('starResult' + n).style.color='#888';
    if (t==1) {  
      	var v = parseInt($('starCurrent' + n).title);
        var r = Math.round(v);
        //alert(Math.round(v*84/100));
        $S('starCurrent' + n ).width=Math.round(v*84/100) + 'px';
        if (r<10) {r="% Abysmal";}
        if (r>=10 && r<20) {r=r+"% Terrible";}
        if (r>=20 && r<30) {r=r+"% Poor";}
        if (r>=30 && r<40) {r=r+"% Mediocre";}
        if (r>=40 && r<50) {r=r+"% Average";}
        if (r>=50 && r<60) {r=r+"% Good";}
        if (r>=60 && r<70) {r=r+"% Very Good";}
        if (r>=70 && r<80) {r=r+"% Excellent";}
        if (r>=80 && r<90) {r=r+"% Outstanding";}
        if (r>=90) {r=r+"% Spectacular";}	            
        $('starResult' + n).innerHTML = r;
    }
    if (t==2) {
        var v = parseFloat($('starCurrent' + n).title)  	          
        var r = v * 16.8;
        //alert("Stars: " + v);alert("Points: " + r);
        $S('starCurrent' + n ).width = r + 'px';
        //r = Math.round(v*84/100);
        //alert(r);
        v = LimitCharsROfD(v,1);
        if (v<.50) {v=" Abysmal";}
        if (v>=.50 && v<1.00) {v=v+" Terrible";}
        if (v>=1.00 && v<1.50) {v=v+" Poor";}
        if (v>=1.50 && v<2.00) {v=v+" Mediocre";}
        if (v>=2.00 && v<2.50) {v=v+" Average";}
        if (v>=2.50 && v<3.00) {v=v+" Good";}
        if (v>=3.00 && v<3.50) {v=v+" Very Good";}
        if (v>=3.50 && v<4.00) {v=v+" Excellent";}
        if (v>=4.00 && v<4.50) {v=v+" Outstanding";}
        if (v>=4.50) {v=v+" Spectacular";}	               
        $('starResult' + n).innerHTML = v;	            
    }
    document.onmousemove='';
};
ShowStarRating = function(o,c,t) {
    var n = o.id.substr(4);
    var v = parseInt($('starCurrent' + n).title); 
    $S('starCurrent' + n).width = Math.round(v*84/100) + 'px';
    if (t==1) {
        var r = Math.round(v);
        if (r<10) {r="% Abysmal";}
        if (r>=10 && r<20) {r=r+"% Terrible";}
        if (r>=20 && r<30) {r=r+"% Poor";}
        if (r>=30 && r<40) {r=r+"% Mediocre";}
        if (r>=40 && r<50) {r=r+"% Average";}
        if (r>=50 && r<60) {r=r+"% Good";}
        if (r>=60 && r<70) {r=r+"% Very Good";}
        if (r>=70 && r<80) {r=r+"% Excellent";}
        if (r>=80 && r<90) {r=r+"% Outstanding";}
        if (r>=90) {r=r+"% Spectacular";}	            
        $('starResult' + n).innerHTML = r;
    }
    if (t==2) {
        var r = LimitCharsROfD(Math.round(v)/20,1);
        if (r<.50) {r=" Abysmal";}
        if (r>=.50 && r<1.00) {r=r+" Terrible";}
        if (r>=1.00 && r<1.50) {r=r+" Poor";}
        if (r>=1.50 && r<2.00) {r=r+" Mediocre";}
        if (r>=2.00 && r<2.50) {r=r+" Average";}
        if (r>=2.50 && r<3.00) {r=r+" Good";}
        if (r>=3.00 && r<3.50) {r=r+" Very Good";}
        if (r>=3.50 && r<4.00) {r=r+" Excellent";}
        if (r>=4.00 && r<4.50) {r=r+" Outstanding";}
        if (r>=4.50) {r=r+" Spectacular";}	               
        $('starResult' + n).innerHTML = r;
    }
    //$('starResult' + n).style.color = c;
}; 
function LimitCharsROfD(f,n){
    var f = String(f);
    var c = f.slice( 0,f.indexOf(".",0) + n + 1);
    return Number(c);
};