   
    // PRE-LOAD IMAGES -----------------------------
    if (document.images){
      //pic1 = new Image(220,19); 
      //pic1.src = "/images/rating_loading.gif"; 
    
      pic2 = new Image(25,75); 
      pic2.src = "/images/rating_star.gif"; 
    
      pic3 = new Image(25,75); 
      pic3.src = "/images/rating_star_2.gif"; 
      
      //pic4 = new Image(16,13); 
      //pic4.src = "/images/rating_tick.gif";
      
      //pic5 = new Image(14,14); 
      //pic5.src = "/images/rating_warning.gif";
    }
    
    // AJAX  Functions //
    
    function getRating( id, type, show5, showPerc, showVotes, bgDark ){
        
        var url = "ratings/rating_action.php";
        var par = "s=" + id + "&t=" + type + "&s5=" + show5 + "&sp=" + showPerc + "&sv=" + showVotes + "&bg=" + bgDark + "&a=get";
        
        var ajax = new Ajax.Request( url, {
                                    method: 'post',
                                    parameters: par,
                                    onLoading: function(){},
                                    onComplete: function(request){                                    	
                                        $("block_" + id).innerHTML = request.responseText;
                                    },
                                    onFailure: function(){
                                    	dieGracefully( id, show5, showPerc, showVotes, bgDark );
                                    }
                                }
                            ); 
        
    }
    
    
    function setRating(rating, id, type, show5, showPerc, showVotes, bgDark) {
        var url = "ratings/rating_action.php";
        var par = "type_id=5&item_id=" + id + "&rating=" + rating;
        var ajax = new Ajax.Request(url, {
            method: 'post',
            parameters: par,
            onLoading: function(){},
            onComplete: function(request) {
                res = eval("(" + request.responseText + ")");
                
                if (res.code != 0) {
                    dieGracefully( id, show5, showPerc, showVotes, bgDark );
                } else {
                    finish_up(res, rating, id, type, show5, showPerc, showVotes, bgDark);
                }
            },
            onFailure: function(){
                dieGracefully( id, show5, showPerc, showVotes, bgDark );
            }
        }); 
        
    }

    
    function finish_up(res, rating, id, type, show5, showPerc, showVotes, bgDark){
                
        var loader = document.getElementById('loading_' + id);
        var uldiv = document.getElementById('ul_' + id); 
                    
        //loader.style.display = 'none';
        
        // Already Voted Message
        if(res.code == 4) {
            //loader.style.display = 'inline';
            //loader.innerHTML = '<div class="voted_twice">You already voted!</div>';
            loader.innerHTML = '';
        
        // thanks for voting message
        }else{
            //loader.style.display = 'inline';
            //loader.innerHTML = '<div class="voted">Thanks for voting!</div>';
            loader.innerHTML = '';
            
            // display rating out or five
            if( show5 == true ){
                var out = document.getElementById('outOfFive_'+id);
                out.innerHTML = res.avg_vote; // 3.47;
                //out.innerHTML = Math.round((calculate * 2), 0) / 2; // 3.5;
            } 
            
            // display percentage
            if( showPerc == true ){
                var perc = document.getElementById('percentage_'+id);
                //var newPerc = Math.round(Math.ceil(res / 5)) * 5;
                var newPerc = res.avg_vote * 20;
                perc.innerHTML = newPerc + '%';
            
            }else if( showPerc == false ){
                var newPerc = res.avg_vote * 20;
                
            }
            
            // display number of votes
            if( showVotes == true ){
                var votediv = document.getElementById('showvotes_'+id).firstChild.nodeValue;
                var splitted = votediv.split(' ');
                var newval = parseInt(splitted[0]) + 1;
                if( newval == 1 ){
                    document.getElementById('showvotes_'+id).innerHTML = newval+' Vote';
                }else{
                    document.getElementById('showvotes_'+id).innerHTML = newval+' Votes';                   
                }
                
            }
            
            // reset necessary styles and events in list
            var ulRater = document.getElementById('rater_'+id);
            
            ulRater.title = "Thank you for voting";
            
            // respect the dark bg
            if( bgDark == true )
                ulRater.className = 'darkstar-rating2';
            else
                ulRater.className = 'star-rating2';
            
            // get array of list elements
            var all_li = ulRater.getElementsByTagName('li');
            
            // iterate though list elements adjusting necessary styles and events
            for( var i=1; i<all_li.length; i++ ){
                all_li[i].getElementsByTagName('a')[0].onclick = 'return false;';
                all_li[i].getElementsByTagName('a')[0].setAttribute('href','javascript:;');
                all_li[i].title = "";
            }
            
            // show the stars bitches
            if( navigator.appName == 'Microsoft Internet Explorer' ){
                uldiv.style.setAttribute('width', newPerc + '%'); // IE
            }else{
                uldiv.setAttribute('style', 'width:' + newPerc + '%'); // Everyone else
            }
            
        }
        
        
    }
    
    function dieGracefully( id, show5, showPerc, showVotes, bgDark ){
		var rating 	= "";
		var ulClass = "star-rating";
		                    	
		if( bgDark )
		ulClass = "darkstar-rating";
		
		// assemble rating display                	
		rating += "<div style=\"float:left;width: 125px;\"><ul class=\"" + ulClass + "2\" id=\"rater_" + id + "\" title=\"Thank you for rating\">";
		rating += "<li class=\"current-rating\" style=\"width:0%;\" id=\"ul_" + id + "\"></li>";
		rating += "<li><a href=\"javascript:;\" class=\"one-star\">1</a></li><li><a href=\"javascript:;\" class=\"two-stars\">2</a></li>";
		rating += "<li><a href=\"javascript:;\" class=\"three-stars\">3</a></li><li><a href=\"javascript:;\" class=\"four-stars\">4</a></li>"
		rating += "<li><a href=\"javascript:;\" class=\"five-stars\">5</a></li></ul></div>";
		
		if( show5 || showPerc || showVotes ){
			
			rating += "<div class=\"rated_text\">";
			
			if( show5 )
			  rating += "Rated <span id=\"outOfFive_" + id + "\" class=\"out5Class\">0</span>/5";
			
			if( showPerc )
	          rating += " (<span id=\"percentage_" + id + "\" class=\"percentClass\">0%</span>)"; 
			
			if( showVotes )
	          rating += " (<span id=\"showvotes_" + id + "\" class=\"votesClass\">0</span>)";
            
            rating += "</div>";
            
        }
        
		// place rating text into container
		$("block_" + id).innerHTML = rating;

    }

