// JavaScript Document
/*************************************************
Star Rating System
First Version: 21 November, 2006
Author: Ritesh Agrawal
Inspriation: Will Stuckey's star rating system (http://sandbox.wilstuckey.com/jquery-ratings/)
Demonstration: http://php.scripts.psu.edu/rja171/widgets/rating.php
Usage: $('#rating').rating('www.url.to.post.com', {maxvalue:5, curvalue:0});

arguments
url : required -- post changes to 
options
	maxvalue: number of rubels
	curvalue: number of selected rubels
	

************************************************/

jQuery.fn.rubel = function(url, options) {
	
	if(url == null) return;
	
	var settings = {
        url       : url, // post changes to 
        maxvalue  : 5,   // max number of rubels
        curvalue  : 0    // number of selected rubels
    };
	
    if(options) {
       jQuery.extend(settings, options);
    };
   jQuery.extend(settings, {cancel: (settings.maxvalue > 1) ? true : false});
   
   
   var container = jQuery(this);
	
	jQuery.extend(container, {
            averageRating: settings.curvalue,
            url: settings.url
        });

	for(var i= 0; i <= settings.maxvalue ; i++){
		var size = i
        if (i == 0) {
			if(settings.cancel == true){
	             //var div = '<div class="cancel"><a href="#0" title="Cancel Rating">Cancel</a></div>';
				 container.append(div);
			}
        } 
		else {
             var div = '<div class="rubel"><a href="#'+i+'" title="Give it '+i+'/'+size+'">'+i+'</a></div>';
			 container.append(div);

        }
 
		

	}
	
	var rubels = jQuery(container).children('.rubel');
    var cancel = jQuery(container).children('.cancel');
	
    rubels
	        .mouseover(function(){
                event.drain();
                event.fill(this);
            })
            .mouseout(function(){
                event.drain();
                event.reset();
            })
            .focus(function(){
                event.drain();
                event.fill(this)
            })
            .blur(function(){
                event.drain();
                event.reset();
            });

	/*
    rubels.click(function()
    {
		if(settings.cancel == true)
		{
            settings.curvalue = rubels.index(this) + 1;
            jQuery.post(container.url, 
            {
                "rating": jQuery(this).children('a')[0].href.split('#')[1] 
            });
			return false;
		}
		else if(settings.maxvalue == 1)
		{
			settings.curvalue = (settings.curvalue == 0) ? 1 : 0;
			$(this).toggleClass('on');
			jQuery.post(container.url, 
			{
                "rating": jQuery(this).children('a')[0].href.split('#')[1] 
            });
			return false;
		}
		return true;
			
    });
    */
    

	rubels.click(function() //select the 'Delete' link and catch the 'click'
	{
		
		
		
		// original function
		/*
	    jQuery.post(container.url, 
	    {
			"rating": jQuery(this).children('a')[0].href.split('#')[1] 
	    });
		*/
		
		
		
		settings.curvalue = rubels.index(this) + 1;
		
		var url = container.url;
		var rating = jQuery(this).children('a')[0].href.split('#')[1];
		
	    $.ajax( 
		{
	       url: url,
           type:"POST",
           data:"rating=" + rating,
	       dataType: "json",
	       success: function(result)
		   {
			   if(true==result['status'])
			   {

				   
			   	 // alert(result['message']);
			   	  
			   	  $('#rubel_td').html('<span style="color: #ff00ff;">THANKS A LOT!</span>');
			   	  
			   	  reload_rubelbox();

			   } else {
			        $.blockUI({ 
			        	css: { 
				            border: 'none', 
				            padding: '15px', 
				            backgroundColor: '#000', 
				            '-webkit-border-radius': '5px', 
				            '-moz-border-radius': '5px', 
				            opacity: .9, 
				            color: '#fff !important' 
			        	},
			        	message: '<p style="color: #ffffff;">' + 'login required' + '</p>'
			        
			        }); 
			        
			        setTimeout($.unblockUI, 5000); 
			   }
		   }
	    });

  		return false //return false to prevent the link from working
	});     
    
    

        // cancel button events
	if(cancel){
        cancel
            .mouseover(function(){
                event.drain();
                jQuery(this).addClass('on')
            })
            .mouseout(function(){
                event.reset();
                jQuery(this).removeClass('on')
            })
            .focus(function(){
                event.drain();
                jQuery(this).addClass('on')
            })
            .blur(function(){
                event.reset();
                jQuery(this).removeClass('on')
            });
        
        // click events.
        cancel.click(function(){
            event.drain();
			settings.curvalue = 0;
            jQuery.post(container.url, {
                "rating": jQuery(this).children('a')[0].href.split('#')[1] 
            });
            return false;
        });
	}
        
    /*
     * Replaced .lt(n) with .slice(0, n). 
     * not supported anymore by new jquery
     */
        
     
	var event = {
		fill: function(el){ // fill to the current mouse position.
			var index = rubels.index(el) + 1;
			rubels
				.children('a').css('width', '100%').end()
				.slice(0, index).addClass('hover').end();
		},
		drain: function() { // drain all the rubels.
			rubels
				.filter('.on').removeClass('on').end()
				.filter('.hover').removeClass('hover').end();
		},
		reset: function(){ // Reset the rubels to the default index.
			rubels.slice(0, settings.curvalue).addClass('on').end();
		}
	}        
	event.reset();
	
	return(this);	

}
