function frating(rating)
{
$("#rating_default").hide();
if(rating==1)
     {
   
     $("#ratingpictrue").html("<img src='http://serialeonline.pl/gfx/ratings/1.png'>");
     }

if(rating==2)
     {
   
     $("#ratingpictrue").html("<img src='http://serialeonline.pl/gfx/ratings/2.png'>");
     }
if(rating==3)
     {
   
     $("#ratingpictrue").html("<img src='http://serialeonline.pl/gfx/ratings/3.png'>");
     }
if(rating==4)
     {
   
     $("#ratingpictrue").html("<img src='http://serialeonline.pl/gfx/ratings/4.png'>");
     }
if(rating==5)
     {
   
     $("#ratingpictrue").html("<img src='http://serialeonline.pl/gfx/ratings/5.png'>");
     }
return;
}


(function($) {
     $.fn.jRating = function(op) {
          var defaults = {
               /** String vars **/
               bigStarsPath : 'http://serialeonline.pl/icons/stars.png', // path of the icon stars.png
               smallStarsPath : 'http://serialeonline.pl/icons/small.png', // path of the icon small.png
               phpPath : '../jRating.php', // path of the php file jRating.php
               type : 'big', // can be set to 'small' or 'big'
               
               /** Boolean vars **/
               step:false, // if true,  mouseover binded star by star,
               isDisabled:false,
               showRateInfo: true,
               
               /** Integer vars **/
               length:5, // number of star to display
               decimalLength : 0, // number of decimals.. Max 3, but you can complete the function 'getNote'
               rateMax : 5, // maximal rate - integer from 0 to 9999 (or more)
               rateInfosX : -45, // relative position in X axis of the info box when mouseover
               rateInfosY : 5, // relative position in Y axis of the info box when mouseover
               
               /** Functions **/
               onSuccess : null,
               onError : null
          }; 
          
          if(this.length>0)
          return this.each(function() {
               var opts = $.extend(defaults, op),    
               newWidth = 0,
               starWidth = 0,
               starHeight = 0,
               bgPath = '';

               if($(this).hasClass('jDisabled') || opts.isDisabled)
                    var jDisabled = true;
               else
                    var jDisabled = false;

               getStarWidth();
               $(this).height(starHeight);

               var average = parseFloat($(this).attr('data').split('_')[0]),
               idBox = parseInt($(this).attr('data').split('_')[2]), itemtype = $(this).attr('data').split('_')[1]// get the id of the box
               widthRatingContainer = starWidth*opts.length, // Width of the Container
               widthColor = average/opts.rateMax*widthRatingContainer, // Width of the color Container
               
               quotient = 
               $('<div>', 
               {
                    'class' : 'jRatingColor',
                    css:{
                         width:widthColor
                    }
               }).appendTo($(this)),
               
               average = 
               $('<div>', 
               {
                    'class' : 'jRatingAverage',
                    css:{
                         width:0,
                         top:- starHeight
                    }
               }).appendTo($(this)),

                jstar =
               $('<div>', 
               {
                    'class' : 'jStar',
                    css:{
                         width:widthRatingContainer,
                         height:starHeight,
                         top:- (starHeight*2),
                         background: 'url('+bgPath+') repeat-x'
                    }
               }).appendTo($(this));

               $(this).css({width: widthRatingContainer,overflow:'hidden',zIndex:1,position:'relative'});

               if(!jDisabled)
               $(this).bind({
                    mouseenter : function(e){
                         var realOffsetLeft = findRealLeft(this);
                         var relativeX = e.pageX - realOffsetLeft;
                         if (opts.showRateInfo)
                         var tooltip = 
                         $('<p>',{
                              'class' : 'jRatingInfos',
                              html : getNote(relativeX)+' <span class="maxRate">/ '+opts.rateMax+'</span>',
                              css : {
                                   top: (e.pageY + opts.rateInfosY),
                                   left: (e.pageX + opts.rateInfosX)
                              }
                         }).appendTo('body').show();
                    },
                    mouseover : function(e){
                         $(this).css('cursor','pointer');  
                        
                    },
                    mouseout : function(){
                         $(this).css('cursor','default');
                         average.width(0);
                         $("#gotoocena").html('b/d');   
                         $("#rating_default").show();
                         $("#ratingpictrue").html("");
                    },
                    mousemove : function(e){
                         var realOffsetLeft = findRealLeft(this);
                         var relativeX = e.pageX - realOffsetLeft;
                         if(opts.step) newWidth = Math.floor(relativeX/starWidth)*starWidth + starWidth;
                         else newWidth = relativeX;
                         average.width(newWidth);                         
                         if (opts.showRateInfo)
                         
                         var ocena = getNote(newWidth); 
                         frating(ocena);
                         $("p.jRatingInfos").remove();
                         
                         $("#gotoocena").html(ocena +' <span class="maxRate">/ '+opts.rateMax+'</span>');
                         
                    },
                    mouseleave : function(){
                         $("p.jRatingInfos").remove();
                    },
                    click : function(e){
                         $(this).unbind().css('cursor','default').addClass('jDisabled');
                         if (opts.showRateInfo) $("p.jRatingInfos").fadeOut('fast',function(){$(this).remove();});
                         e.preventDefault();
                         var rate = getNote(newWidth);
                         average.width(newWidth);
                        
                         
                         $.post(opts.phpPath,{
                                   idBox : idBox,
                                   itemtype : itemtype,
                                   rate : rate,
                                   action : 'rating'
                              },
                              function(data) {
                             
                                  if(!data.error)
                                   {
                                       
                                        
                                        
                                      
                                       pokaz_alert(1,'Pomyślnie oddałeś głos, dziękujemy!');
                                        
                                   }
                                   else
                                   {
                                        
                                        
                                       pokaz_alert(0,'Już głosowałeś na ten materiał');
              
                                   }
                              },
                              'json'
                         );
                    }
               });

               function getNote(relativeX) {
                    var noteBrut = parseFloat((relativeX*100/widthRatingContainer)*opts.rateMax/100);
                    switch(opts.decimalLength) {
                         case 1 :
                              var note = Math.round(noteBrut*10)/10;
                              break;
                         case 2 :
                              var note = Math.round(noteBrut*100)/100;
                              break;
                         case 3 :
                              var note = Math.round(noteBrut*1000)/1000;
                              break;
                         default :
                              var note = Math.round(noteBrut*1)/1;
                    }
                    return note;
               };

               function getStarWidth(){
                    switch(opts.type) {
                         case 'small' :
                              starWidth = 12; // width of the picture small.png
                              starHeight = 10; // height of the picture small.png
                              bgPath = opts.smallStarsPath;
                         break;
                         default :
                              starWidth = 23; // width of the picture stars.png
                              starHeight = 20; // height of the picture stars.png
                              bgPath = opts.bigStarsPath;
                    }
               };
               
               function findRealLeft(obj) {
                 if( !obj ) return 0;
                 return obj.offsetLeft + findRealLeft( obj.offsetParent );
               };
          });

     }
})(jQuery);
