//DCK: JS
star /*--------------*/ ={};
starmsg /*-----------*/ =new Array();
starmsg["thankYou"]     ="<div class='ratedtxt'>Thanks for rating</div>";
starmsg["alreadyrated"] ="<div class='ratedtxt'>&nbsp;&nbsp;Already rated</div>";
starmsg["addrating"]    ="<div class='unratedtxt'>Add your rating</div>";
star.num /*----------*/ =0;
var premium = 'Premium';
var stop = false;

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.documentElement.scrollLeft,'Y':event.clientY+document.documentElement.scrollTop}:{'X':e.pageX,'Y':e.pageY}; return(v?o[v]:o); }
function Dbug(val){try{$("DbugDiv").innerHTML=val+"<br />"+$("DbugDiv").innerHTML;}catch(err){alert(val);}}

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($('star'+n)),x=XY(e),oX=x.X-p.X,oY=x.Y-p.Y;star.num=o.id.substr(4);
		if((oX<3||oX>84)||(oY<0||oY>19))    {star.stop=1; star.revert();}
		else if ($('star'+n).title=="rated"){$('starUser'+n).innerHTML=starmsg["alreadyrated"];}
		else{//DCK:Yay!
		     if(oX<9) oX = 9;
		     oX   =Math.round((oX+5)/84*100/20)/100*84*20;//DCK:100 to 5 stars
             stars=Math.round(oX/84*100)/20;
		     $s('starCur' +n).width=oX+'px';
		     $ ('starUser'+n).innerHTML="<div class='unratedtxt'>&nbsp;&nbsp;"+ stars +' stars out of 5</div>'; 
		     $ ('cStars'  +n).value=stars;
		}
	};
}};

star.update=function(e,o){
    n=o.id.substr(4);//DCK This gives the id after the 'star' bit
    v=parseInt($('cStars'+n).value);
    if(v > 0) {
      if($('star'+n).title!="rated") kjax("stars",{"businessID":n,"rating":v},star.set,function(){alert("Sorry we cannot process your rating at this time. Please try again later.");},n);
    }
};

star.set=function(v,n){
    $ ('staticRating'+n).innerHTML=v["newRating"];
    $ ('star'+n).title="rated";
    $s('starCur' +n).width    =Math.round(v["newRating"]*84/100*20*10)/10+'px';
    $ ('starUser'+n).innerHTML=starmsg["thankYou"];
    if (v["numRatings"]==1)$('numRating'+n).innerHTML="from "+v["numRatings"]+" rating";
    else if (v["numRatings"]==0)$('numRating'+n).innerHTML="be the first to rate";
    else /*--------------*/$('numRating'+n).innerHTML="from "+v["numRatings"]+" ratings";



    if($('star'+n+premium) != 'undefined' && stop == false) {
     stop = true;
     star.premset(v,n+premium);
    }
   stop = false;
}

star.revert=function(){ 
    var n=star.num, v=parseFloat($('staticRating'+n).innerHTML);
    if($('star'+n).title!="rated"){$s('starCur'+n).width=Math.round(v*84/100*20*10)/10+1+'px';$('starUser'+n).innerHTML=starmsg["addrating"];}
	else /*--------------------*/ {$s('starCur'+n).width=Math.round(v*84/100*20*10)/10+1+'px';$('starUser'+n).innerHTML=starmsg["thankYou"];}
	document.onmousemove='';
};

/*
  premium functions
*/

star.premmouse=function(e,o){if(star.stop||isNaN(star.stop)){
    star.stop=0;
    document.onmousemove=function(e){
        var n=star.num;
        var p=abPos($('star'+n+premium)),x=XY(e),oX=x.X-p.X,oY=x.Y-p.Y;star.num=o.id.substr(4).replace(premium,'');
        if((oX<3||oX>84)||(oY<0||oY>19))    {star.stop=1; star.premrevert();}
        else if ($('star'+n+premium).title=="rated"){$('starUser'+n+premium).innerHTML=starmsg["alreadyrated"];}
        else{//DCK:Yay!
             
             if(oX<9) oX = 9;
             oX   =Math.round((oX+5)/84*100/20)/100*84*20;//DCK:100 to 5 stars
             stars=Math.round(oX/84*100)/20;
             $s('starCur' +n+premium).width=oX+'px';
             $ ('starUser'+n+premium).innerHTML="<div class='unratedtxt'>&nbsp;&nbsp;"+ stars +' stars out of 5</div>'; 
             $ ('cStars'  +n+premium).value=stars;
        }
    };
}};

star.premupdate=function(e,o){
    n=o.id.substr(4);//DCK This gives the id after the 'star' bit
    n=n.replace(premium,'');
    v=parseInt($('cStars'+n+premium).innerHTML);
    if($('star'+n+premium).title!="rated") kjax("stars",{"businessID":n,"rating":v},star.premset,function(){alert("Sorry we cannot process your rating at this time. Please try again later.");},n);
};

star.premset=function(v,n){
    n=n.replace(premium,'');
    $ ('staticRating'+n+premium).innerHTML=v["newRating"];
    $ ('star'+n+premium).title="rated";
    $s('starCur' +n+premium).width    =Math.round(v["newRating"]*84/100*20*10)/10+'px';
    $ ('starUser'+n+premium).innerHTML=starmsg["thankYou"];
    if (v["numRatings"]==1)$('numRating'+n+premium).innerHTML="from "+v["numRatings"]+" rating";
    else if (v["numRatings"]==0)$('numRating'+n).innerHTML="be the first to rate";
    else /*--------------*/$('numRating'+n+premium).innerHTML="from "+v["numRatings"]+" ratings";

    if($('star'+n) != 'undefined' && stop == false) {
     stop = true;
     star.set(v,n);
    }
   stop = false;
}

star.premrevert=function(){ 
    star.num = star.num.replace(premium,'');
    var n=star.num, v=parseFloat($('staticRating'+n+premium).innerHTML);
    if($('star'+n+premium).title!="rated"){$s('starCur'+n+premium).width=Math.round(v*84/100*20*10)/10+1+'px';$('starUser'+n+premium).innerHTML=starmsg["addrating"];}
    else /*--------------------*/ {$s('starCur'+n+premium).width=Math.round(v*84/100*20*10)/10+1+'px';$('starUser'+n+premium).innerHTML=starmsg["thankYou"];}
    document.onmousemove='';
};

/*
  rating functions
*/

star.ratingMouse=function(e,o){if(star.stop||isNaN(star.stop)){
    star.stop=0;
    document.onmousemove=function(e){
        var n=star.num;
        var p=abPos($('starRating'+n)),x=XY(e),oX=x.X-p.X,oY=x.Y-p.Y;
        star.num=o.id.substr(10);
        if((oX<3||oX>84)||(oY<0||oY>19))    {star.stop=1; star.ratingRevert();}
        //else if ($('starRating'+n).title=="rated"){$('starRatingUser'+n).innerHTML=starmsg["alreadyrated"];}
        else{//DCK:Yay!
             if(oX<9) oX = 9;
             oX   =Math.round((oX+5)/84*100/20)/100*84*20;//DCK:100 to 5 stars
             stars=Math.round(oX/84*100)/20;
             $s('starRatingCur' +n).width=oX+'px';
             //$ ('starUser'+n).innerHTML="<div class='unratedtxt'>&nbsp;&nbsp;"+ stars +' stars out of 5</div>'; 
             $ ('cStarsRating'+n).value=stars;
        }
    };
}};

star.ratingUpdate=function(e,o){
    n=o.id.substr(10);//DCK This gives the id after the 'star' bit
    //console.log(n);
    v=parseInt($('cStarsRating'+n).value);
    //console.log(v);
    aStar = new Array();
    aStar['newRating'] = v;
    aStar['numRatings'] = 1;
    star.ratingSet(aStar, n);
   // if($('star'+n).title!="rated") kjax("stars",{"businessID":n,"rating":v},star.set,function(){alert("Sorry we cannot process your rating at this time. Please try again later.");},n);
};
star.ratingSet=function(v,n){
    $ ('staticRating'+n).innerHTML=v["newRating"];
    //$ ('star'+n).title="rated";
    $s('starRatingCur' +n).width    =Math.round(v["newRating"]*84/100*20*10)/10+'px';
    //$ ('starUser'+n).innerHTML=starmsg["thankYou"];
    //if (v["numRatings"]==1)$('numRating'+n).innerHTML="from "+v["numRatings"]+" rating";
    //else if (v["numRatings"]==0)$('numRating'+n).innerHTML="be the first to rate";
    //else /*--------------*/$('numRating'+n).innerHTML="from "+v["numRatings"]+" ratings";
bRatingSet = true;
}



star.ratingRevert=function(){ 
    var n=star.num;
    if(!bRatingSet) {
    var v=0; //v=parseInt($('cStarsRating'+n).value);
    } else {
      v=parseInt($('cStarsRating'+n).value);
    }
    if($('starRating'+n).title!="rated"){$s('starRatingCur'+n).width=Math.round(v*84/100*20*10)/10+1+'px';}
    else /*--------------------*/ {$s('starRatingCur'+n).width=Math.round(v*84/100*20*10)/10+1+'px';}
    document.onmousemove='';
};
