/*!
 * jQuery Raty - A Star Rating Plugin
 *
 * Licensed under The MIT License
 *
 * @version        2.0.0
 * @author         Washington Botelho
 * @documentation  wbotelhos.com/raty
 * 
 */

;(function(b){var a={init:function(c){return this.each(function(){var j=b.extend({},b.fn.raty.defaults,c),p=b(this).data("options",j),g=p.attr("id");if(g===undefined||g==""){g="raty-"+b("."+p.attr("class")).index(this);p.attr("id",g);}if(j.number>20){j.number=20;}else{if(j.number<0){j.number=0;}}if(j.round.down===undefined){j.round.down=b.fn.raty.defaults.round.down;}if(j.round.full===undefined){j.round.full=b.fn.raty.defaults.round.full;}if(j.round.up===undefined){j.round.up=b.fn.raty.defaults.round.up;}if(j.path.substring(j.path.length-1,j.path.length)!="/"){j.path+="/";}if(typeof j.start=="function"){j.start=j.start.call(this);}var k=!isNaN(parseInt(j.start,10)),h="";if(k){h=(j.start>j.number)?j.number:j.start;}var q=j.starOn,d=(j.space)?4:0,m="";for(var n=1;n<=j.number;n++){q=(h<n)?j.starOff:j.starOn;m=(n<=j.hintList.length&&j.hintList[n-1]!==null)?j.hintList[n-1]:n;p.append('<img id="'+g+"-"+n+'" src="'+j.path+q+'" alt="'+n+'" title="'+m+'" class="'+g+'"/>');if(j.space){p.append((n<j.number)?"&nbsp;":"");}}var l=b("<input/>",{id:g+"-score",type:"hidden",name:j.scoreName}).appendTo(p);if(k){if(j.start>0){l.val(h);}a.roundStar.call(p,h);}if(j.iconRange){a.fillStar.call(p,h);}a.setTarget.call(p,h,j.targetKeep);var f=j.width||(j.number*j.size+j.number*d);if(j.cancel){var o=b('<img src="'+j.path+j.cancelOff+'" alt="x" title="'+j.cancelHint+'" class="raty-cancel"/>');if(j.cancelPlace=="left"){p.prepend("&nbsp;").prepend(o);}else{p.append("&nbsp;").append(o);}var e=p.children("img."+g);o.mouseenter(function(){b(this).attr("src",j.path+j.cancelOn);e.attr("src",j.path+j.starOff);a.setTarget.call(p,null,true);}).mouseleave(function(){b(this).attr("src",j.path+j.cancelOff);p.mouseout();}).click(function(i){l.removeAttr("value");if(j.click){j.click.call(p[0],null,i);}});f+=j.size+d;}if(j.readOnly){a.fixHint.call(p);p.children(".raty-cancel").hide();}else{p.css("cursor","pointer");a.bindAction.call(p);}p.css("width",f);});},bindAction:function(){var g=this,c=this.data("options"),d=this.children("input");this.mouseleave(function(){a.initialize.call(g,d.val());a.setTarget.call(g,d.val(),c.targetKeep);});var f=this.children("img."+this.attr("id")),e=(c.half)?"mousemove":"mouseover";f.bind(e,function(i){var j=parseInt(this.alt,10);if(c.half){var h=parseFloat((i.pageX-b(this).offset().left)/c.size),k=(h>0.5)?1:0.5;j=parseFloat(this.alt)-1+k;a.fillStar.call(g,j);if(c.precision){j=j-k+h;}a.showHalf.call(g,j);}else{a.fillStar.call(g,j);}g.data("score",j);a.setTarget.call(g,j,true);}).click(function(h){d.val((c.half||c.precision)?g.data("score"):this.alt);if(c.click){c.click.call(g[0],d.val(),h);}});},cancel:function(c){return this.each(function(){var d=b(this);if(d.data("readonly")=="readonly"){return false;}if(c){a.click.call(d,null);}else{a.start.call(d,null);}d.mouseleave().children("input").removeAttr("value");});},click:function(c){return this.each(function(){var e=b(this);if(e.data("readonly")=="readonly"){return false;}a.initialize.call(e,c);var d=e.data("options");if(d.click){d.click.call(e[0],c);}else{b.error(e.attr("id")+': you must add the "click: function(score, evt) { }" callback.');}a.setTarget.call(e,c,true);});},fillStar:function(e){var d=this.data("options"),c=this.attr("id"),f=this.children("img."+c).length,k=0,g,j,l;for(var h=1;h<=f;h++){g=this.children("#"+c+"-"+h);if(d.iconRange&&d.iconRange.length>k){j=d.iconRange[k];if(d.single){l=(h==e)?(j.on||d.starOn):(j.off||d.starOff);}else{l=(h<=e)?(j.on||d.starOn):(j.off||d.starOff);}if(h<=j.range){g.attr("src",d.path+l);}if(h==j.range){k++;}}else{if(d.single){l=(h==e)?d.starOn:d.starOff;}else{l=(h<=e)?d.starOn:d.starOff;}g.attr("src",d.path+l);}}},fixHint:function(){var c=this.data("options"),d=this.children("input"),f=parseInt(d.val(),10),e=c.noRatedMsg;if(!isNaN(f)&&f>0){e=(f<=c.hintList.length&&c.hintList[f-1]!==null)?c.hintList[f-1]:f;}d.attr("readonly","readonly");this.css("cursor","default").data("readonly","readonly").attr("title",e).children("img").attr("title",e);},readOnly:function(c){return this.each(function(){var e=b(this),d=e.children(".raty-cancel");if(d.length){(c)?d.hide():d.show();}if(c){e.unbind();b("img."+e.attr("id")).unbind();a.fixHint.call(e);}else{a.bindAction.call(e);a.unfixHint.call(e);}});},roundStar:function(f){var c=this.data("options"),e=(f-Math.floor(f)).toFixed(2);if(e>c.round.down){var d=c.starOn;if(e<c.round.up&&c.halfShow){d=c.starHalf;}else{if(e<c.round.full){d=c.starOff;}}b("img#"+this.attr("id")+"-"+Math.ceil(f)).attr("src",c.path+d);}},setTarget:function(f,d){var e=this.data("options");if(e.target){var c=b(e.target);if(c.length==0){b.error(this.attr("id")+": target selector invalid or missing!");}else{var g=f;if(g==null&&!e.cancel){b.error(this.attr("id")+': you must enable the "cancel" option to set hint on target.');}else{if(!d||g==""){g=e.targetText;}else{if(e.targetType=="hint"){if(g===null&&e.cancel){g=e.cancelHint;}else{g=e.hintList[Math.ceil(g-1)];}}else{if(g!=""&&!e.precision){g=parseInt(g,10);}else{g=parseFloat(g).toFixed(1);}}}if(e.targetFormat.indexOf("{score}")<0){b.error(this.attr("id")+': template "{score}" missing!');}else{if(f!==null){g=e.targetFormat.toString().replace("{score}",g);}}if(c.is(":input")){c.val(g);}else{c.html(g);}}}}},showHalf:function(e){var c=this.data("options"),d=(e-Math.floor(e)).toFixed(1);if(d>0&&d<0.6){b("img#"+this.attr("id")+"-"+Math.ceil(e)).attr("src",c.path+c.starHalf);}},start:function(c){return this.each(function(){var e=b(this);if(e.data("readonly")=="readonly"){return false;}a.initialize.call(e,c);var d=e.data("options");a.setTarget.call(e,c,true);});},initialize:function(d){var c=this.data("options"),e=this.attr("id");if(d<0){d=0;}else{if(d>c.number){d=c.number;}}a.fillStar.call(this,d);if(d!=""){if(c.halfShow){a.roundStar.call(this,d);}b("input#"+e+"-score").val(d);}},unfixHint:function(){var d=this.data("options"),e=this.children("img").filter(":not(.raty-cancel)");for(var c=0;c<d.number;c++){e.eq(c).attr("title",(c<d.hintList.length&&d.hintList[c]!==null)?d.hintList[c]:c);}this.css("cursor","pointer").removeData("readonly").removeAttr("title").children("input").attr("readonly","readonly");}};b.fn.raty=function(c){if(a[c]){return a[c].apply(this,Array.prototype.slice.call(arguments,1));}else{if(typeof c==="object"||!c){return a.init.apply(this,arguments);}else{b.error("Method "+c+" does not exist!");}}};b.fn.raty.defaults={cancel:false,cancelHint:"cancel this rating!",cancelOff:"cancel-off.png",cancelOn:"cancel-on.png",cancelPlace:"left",click:undefined,half:false,halfShow:true,hintList:["bad","poor","regular","good","gorgeous"],iconRange:undefined,noRatedMsg:"not rated yet",number:5,path:"img/",precision:false,round:{down:0.25,full:0.6,up:0.76},readOnly:false,scoreName:"score",single:false,size:16,space:true,starHalf:"star-half.png",starOff:"star-off.png",starOn:"star-on.png",start:0,target:undefined,targetFormat:"{score}",targetKeep:false,targetText:"",targetType:"hint",width:undefined};})(jQuery);
