var Starboxes={overlayImage:"default.png",effectsAvailable:(window.Effect&&Effect.Morph),REQUIRED_Prototype:"1.6.0",REQUIRED_Scriptaculous:"1.8.0",start:function(){this.require("Prototype");var a=$A(document.getElementsByTagName("link")).find(function(b){return(b.href&&b.href.match(/starbox\.css$/))});this.imageSource=a?a.href.replace(/starbox\.css$/,""):""},require:function(a){if((typeof window[a]=="undefined")||(this.convertVersionString(window[a].Version)<this.convertVersionString(this["REQUIRED_"+a]))){throw ("Prototip requires "+a+" >= "+this["REQUIRED_"+a])}},convertVersionString:function(a){var b=a.split(".");return parseInt(b[0])*100000+parseInt(b[1])*1000+parseInt(b[2])},fixIE:(function(b){var a=new RegExp("MSIE ([\\d.]+)").exec(b);return a?(parseFloat(a[1])<=6):false})(navigator.userAgent),imagecache:[],cacheImage:function(a){if(!this.getCachedImage(a.src)){this.imagecache.push(a)}},getCachedImage:function(a){return this.imagecache.find(function(b){return b.src==a})}};Starboxes.start();var Starbox=Class.create({initialize:function(a,b){this.element=$(a),this.average=b;this.rating=b;this.options=Object.extend({background:false,buttons:5,className:"default",color:false,duration:0.6,effect:{mouseover:false,mouseout:Starboxes.effectsAvailable},hoverColor:false,hoverClass:"hover",identity:false,indicator:false,inverse:false,locked:false,lockOnRate:true,max:5,onRate:false,overlay:Starboxes.overlayImage,stars:5,total:0},arguments[2]||{});if(this.options.effect&&(this.options.effect.mouseover||this.options.effect.mouseout)){Starboxes.require("Scriptaculous")}this.buildWrapper();if(this.options.effect){this.scope=this.wrapper.identify()}},enable:function(){this.mouseOverEvent=this.onMouseOver.bindAsEventListener(this);this.mouseOutEvent=this.onMouseOut.bindAsEventListener(this);this.clickEvent=this.onClick.bindAsEventListener(this);this.element.observe("mouseover",this.mouseOverEvent);this.element.observe("mouseout",this.mouseOutEvent);this.element.observe("click",this.clickEvent)},disable:function(){this.element.stopObserving("mouseover",this.mouseOverEvent);this.element.stopObserving("mouseout",this.mouseOutEvent);this.element.stopObserving("click",this.clickEvent)},buildWrapper:function(){this.element.addClassName("starbox");this.wrapper=new Element("div",{"class":this.options.className+" stars"});if(this.options.background){this.wrapper.setStyle({background:this.options.background})}this.hover=this.wrapper.appendChild(new Element("div"));this.hover.setStyle({background:this.options.hoverColor||"none"});this.imageInfo=Starboxes.getCachedImage(this.options.overlay);if(!this.imageInfo){var a=new Image();a.onload=function(){this.imageInfo={src:this.options.overlay,height:a.height,width:a.width,fullsrc:a.src};Starboxes.cacheImage(this.imageInfo);this.build()}.bind(this);a.src=Starboxes.imageSource+this.options.overlay}else{this.build()}},build:function(){this.starWidth=this.imageInfo.width;this.starHeight=this.imageInfo.height;this.starSrc=this.imageInfo.fullsrc;this.boxWidth=this.starWidth*this.options.stars;this.buttonWidth=this.boxWidth/this.options.buttons;this.buttonRating=this.options.max/this.options.buttons;if(this.options.effect){this.zeroPosition=this.getColorbarPosition(0);this.maxPosition=this.getColorbarPosition(this.options.max)}var c={width:this.boxWidth+"px",height:this.starHeight+"px"};var e={position:"absolute",top:0,left:0,width:this.starWidth+"px",height:this.starHeight+"px"};var b=Object.extend({position:"relative",overflow:"hidden"},c);var d=Object.extend({position:"absolute",top:0,left:0},c);this.wrapper.setStyle(b);this.colorbar=this.hover.appendChild(new Element("div",{"class":"colorbar"}).setStyle(d));if(this.options.color){this.colorbar.setStyle({background:this.options.color})}var a=this.hover.appendChild(new Element("div").setStyle(d));this.starbar=a.appendChild(new Element("div").setStyle(b));this.options.stars.times(function(f){var g=this.starbar.appendChild(new Element("div").setStyle(Object.extend({background:"url("+this.starSrc+") top left no-repeat"},e)));g.setStyle({left:this.starWidth*f+"px"});if(Starboxes.fixIE){g.setStyle({background:"none",filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+this.starSrc+"'', sizingMethod='scale')"})}}.bind(this));this.buttons=[];this.options.buttons.times(function(h){var g=this.options.inverse?this.boxWidth-this.buttonWidth*(h+1):this.buttonWidth*h;var f=this.starbar.appendChild(new Element("div",{href:"javascript:;"}).setStyle({position:"absolute",top:0,left:g+"px",width:this.buttonWidth+(Starboxes.fixIE?1:0)+"px",height:this.starHeight+"px",cursor:this.options.locked?"auto":"pointer"}));f.rating=this.buttonRating+(this.buttonRating*h);this.buttons.push(f)}.bind(this));this.setRating(this.average,false);this.element.update(this.wrapper);if(this.options.indicator){this.indicator=this.element.appendChild(new Element("div",{"class":"indicator"}));this.updateIndicator()}if(!this.options.locked){this.enable()}},updateAverage:function(a){this.options.total++;this.average=(this.average==0)?a:((this.average*(this.options.total-1)+a)/this.options.total)},updateIndicator:function(){this.indicator.update(new Template(this.options.indicator).evaluate({max:this.options.max,total:this.options.total,average:(this.average*10).round()/10}))},getColorbarPosition:function(b){var a=(this.boxWidth-(b/this.buttonRating)*this.buttonWidth);a=this.options.inverse?a.ceil():-1*a.floor();return parseInt(a)},setRating:function(a){if(this.options.effect&&this.activeEffect){Effect.Queues.get(this.scope).remove(this.activeEffect)}var b=this.getColorbarPosition(a);if(arguments[1]){current=parseInt(this.colorbar.getStyle("left"));to=this.getColorbarPosition(a);if(current==to){return}var c=((this.maxPosition-(current-to).abs()).abs()/this.zeroPosition.abs()).toFixed(2);this.activeEffect=new Effect.Morph($(this.colorbar),{style:{left:b+"px"},queue:{position:"end",limit:1,scope:this.scope},duration:(this.options.duration*c),afterFinish:function(){this.rating=a}.bind(this)})}else{this.rating=a;this.colorbar.setStyle({left:b+"px"})}},onClick:function(b){var a=Event.element(b);if(!a.rating||!this.options.onRate){return}this.updateAverage(a.rating);if(this.options.indicator){this.updateIndicator()}if(this.options.lockOnRate){this.disable();this.buttons.invoke("setStyle",{cursor:"auto"})}var c={identity:this.identity,rating:a.rating,average:this.average,max:this.options.max,total:this.options.total};this.options.onRate(this.element,c)},onMouseOut:function(a){this.setRating(this.average,(this.options.effect&&this.options.effect.mouseout));this.hovered=false;if(this.options.hoverClass){this.hover.removeClassName(this.options.hoverClass)}if(this.options.hoverColor){this.colorbar.setStyle({background:this.options.color})}},onMouseOver:function(b){var a=Event.element(b);if(!a.rating){return}this.setRating(a.rating,(this.options.effect&&this.options.effect.mouseover?true:false));if(!this.hovered&&this.options.hoverClass){this.hover.addClassName(this.options.hoverClass)}this.hovered=true;if(this.options.hoverColor){this.colorbar.setStyle({background:this.options.hoverColor})}}});