rate-it/public/js/rateit.js

1 line
12 KiB
JavaScript
Raw Normal View History

2015-02-04 22:29:41 +01:00
function doRateIt(){if(window.MooTools){var e=new Class({Implements:Options,options:{step:.1,readonly:false,resetable:false},initialize:function(e){this.setOptions(e);$$(".rateItRating").each(function(e){this.initMe(e)}.bind(this))},initMe:function(e){if(!Browser.ie||Browser.version>6){e.id=e.getAttribute("id");e.rateable=e.getAttribute("rel")=="not-rateable"?false:true;e.wrapper=e.getElement(".wrapper");e.textEl=e.getElement(".ratingText");e.selected=e.wrapper.getElement(".rateItRating-selected");e.hover=e.wrapper.getElement(".rateItRating-hover");e.widthFx=new Fx.Tween(e.selected,{property:"width",link:"chain"});var t=this.getBackgroundImage(e.wrapper);this.options.starwidth=t.width;this.options.starheight=t.height/3;if(this.options.starwidth===undefined||this.options.starwidth<16){this.options.starwidth=16}if(this.options.starheight===undefined||this.options.starheight<16){this.options.starheight=16}this.setBackgroundPosition(e.selected,-1*this.options.starheight);this.setBackgroundPosition(e.hover,-1*2*this.options.starheight);e.starPercent=this.getStarPercent(e.id);e.ratableId=this.getRatableId(e.id);e.ratableType=this.getRatableType(e.id);this.options.max=this.getRatableMaxValue(e.id);e.selected.setStyle("height",this.options.starheight);e.hover.setStyle("height",this.options.starheight);e.wrapper.setStyle("width",this.options.starwidth*this.options.max);e.wrapper.setStyle("height",this.options.starheight);this.fillVote(e.starPercent,e);e.currentFill=this.getFillPercent(e.starPercent);if(e.rateable){e.mouseCrap=function(t){var n=t.event.layerX;if(!n){n=t.event.offsetX}var r=this.getVotePercent(n);var i=Math.ceil(r/100*this.options.max);var s=i*this.options.starwidth;if(e.hover.getStyle("width").toInt()!=s){e.selected.setStyle("display","none");e.hover.setStyle("width",Math.min(s,this.options.starwidth*this.options.max));e.hover.setStyle("display","block")}var o=i/this.options.max*100;this.fillVote(o,e)}.bind(this);e.wrapper.addEvent("mouseenter",function(t){e.wrapper.addEvent("mousemove",e.mouseCrap)});e.wrapper.addEvent("mouseleave",function(t){e.removeEvent("mousemove");e.hover.setStyle("width",0);e.hover.setStyle("display","none");e.selected.setStyle("display","block");e.widthFx.start(e.currentFill)});e.wrapper.addEvent("click",function(t){e.currentFill=e.newFill;e.wrapper.removeEvents();e.textEl.oldTxt=e.textEl.get("text");e.textEl.set("html","&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");e.textEl.addClass("loading");if(typeof $(".mbrateItRating")!="undefined"&&e.id.indexOf("mb")==0){var n=e.id;n=n.replace("mb","");if(typeof arrRatings=="object"){for(var r=0;r<arrRatings.length;r++){if(arrRatings[r].rateItID==n){arrRatings[r].rated=true;arrRatings[r].width=e.hover.getStyle("width");break}}}if(typeof $(n)!="undefined"){var i=$(n).getElement(".wrapper");i.removeEvents();i.getElement(".rateItRating-selected").setStyle("display","none");i.getElement(".rateItRating-hover").setStyle("width",e.hover.getStyle("width"));i.getElement(".rateItRating-hover").setStyle("display","block")}}else{if(typeof arrRatings=="object"){for(var r=0;r<arrRatings.length;r++){if(arrRatings[r].rateItID==e.id){arrRatings[r].rated=true;arrRatings[r].width=e.hover.getStyle("width");break}}}}var s=this.getVotePercent(e.newFill);if(this.options.url!=null){(new Request({url:this.options.url,onComplete:e.updateText})).post({vote:s,id:e.ratableId,type:e.ratableType})}}.bind(this));e.updateText=function(t){error=t.split("ERROR:")[1];e.textEl.removeClass("loading");if(error){e.showError(error);return false}e.textEl.set("text",t);if(typeof $(".mbrateItRating")!="undefined"&&e.id.indexOf("mb")==0){var n=e.getAttribute("id");n=n.replace("mb","");if(typeof arrRatings=="object"){for(var r=0;r<arrRatings.length;r++){if(arrRatings[r].rateItID==n){arrRatings[r].description=t;break}}}if(typeof $(n)!="undefined"){$(n).getElement(".ratingText").set("text",t)}}else{if(typeof arrRatings=="object"){for(var r=0;r<arrRatings.length;r++){if(arrRatings[r].rateItID==e.id){arrRatings[r].description=t;break}}}}}}e.showError=function(t){e.textEl.addClass