(function($){
	
	$.fn.fivestar_balloon= function(settings){
		
		var balloon;
		
		var defaults = {
			width:333,
			height:200,
			ie_top_offset:0
		}
		
		if(document.all){
			defaults.ie_top_offset = 0;	
		}
		var settings = jQuery.extend(defaults, settings);
		
		this.each(function(){
			
			$(this).mouseover(on_mouseover);
			$(this).mouseout(on_mouseout);
			$(this).click(function(){return false});
			
		});
		
		function on_mouseover(){
			
			if($(this).attr('href') =='#') return false;
			if(balloon == undefined){			
				balloon = $('<div id="fivestar_balloon"><div class="tip"></div><div class="content"><div id="fivestar_balloon_content"></div></div><div class="footer"></div></div>');	
				$('body').append(balloon);
			}
			var offset = $(this).offset();
 
			balloon.css({
				position:'absolute',
				'top': offset.top - 30 + settings.ie_top_offset,
				'z-index':200,
				'left':offset.left - (settings.width + 62)  
				});
			
			/*
			if(balloon.height() + parseFloat(balloon.css('top')) > 700){
				balloon.css({top: offset.top - 170 + settings.ie_top_offset });	
				balloon.find('.tip').css({'margin-top':140});
			}
			*/
			
			
			var content = [
			'<h4>190 South LaSalle Street, Chicago, IL</h4>',
			'<img src="/template/fivestar/images/pic_balloon_content.jpg" />'
			].join("\n");

			balloon.hide();
			this.balloon = balloon;
			
			if(this.content == undefined){
 
				
				$.ajax({ 
					url: $(this).attr('href') , 
					context: this , 
					success: function(data){
						this.content = data;
						if(this.balloon != undefined ){
						  /*
							this.balloon.find('#fivestar_balloon_content').html(this.content);
							if(document.all){
								this.balloon.show();
							}else{
								this.balloon.fadeIn('fast');
							}
							*/
							
							show_balloon(this,this.content);
						}
				  }
				});
      				 
			}else{
        show_balloon(this,this.content);
								
			}
			

			
		}
		
		function show_balloon(obj, html){
			obj.balloon.find('#fivestar_balloon_content').html(html);
			
			var img_preloads = [];
			// preload the images
			$('#fivestar_balloon_content img').each(function(){
			  img_preloads.push(this.src);
			});
			
			
			var balloon_pos = obj.balloon.offset();
			var balloon_top = parseFloat(obj.balloon.css('top'));
			var balloon_bottom = (parseFloat(obj.balloon.css('top')) + obj.balloon.height() );
			var window_bottom =  ($(window).height() +  $(window).scrollTop() );
			var move_up = 0;
			if(balloon_bottom > window_bottom){
			  move_up = balloon_bottom - window_bottom;
			}
			
			var tip_margin = parseFloat(obj.balloon.find('.tip').css('margin-top'));
			//alert(tip_margin);
			obj.balloon.css({'top': (balloon_top - move_up)});
			 
			obj.balloon.find('.tip').css({'margin-top': tip_margin + move_up});

      if(img_preloads.length>0){
        $.imgpreload(img_preloads, function(){
    			if(document.all){
    				obj.balloon.show();
    			}else{
    				obj.balloon.fadeIn('fast');
    			}
        });
        
        return;
      }
      			
			if(document.all){
				obj.balloon.show();
			}else{
				obj.balloon.fadeIn('fast');
			}
						  
		}
 
		
		function on_mouseout(){
			if(balloon !=undefined){
				balloon.remove();	
				balloon = undefined;
			}
		}
		
	}
	
	
})(jQuery);
