/* !loop function */

function Loop(index, maxIndex)
{
    
    // public
    
    this.next = function(set) // set default true
    {
        if(this.isOk())
        {
            var set = (set == false)? false : true;
            var nextIndex = null;
            
            if(this.direction == 1)
            {
                // incremental
                nextIndex = ((this.index + 1) > this.maxIndex)? 0 : this.index + 1;
            }
            else
            {
                // decremental
                nextIndex = ((this.index - 1) < 0)? this.maxIndex : this.index - 1;
            }
            
            if(set)
            {
                this.index = nextIndex;
            }
            return nextIndex;
        }
        return false;
    }
    
    this.last = function()
    {
        if(this.isOk())
        {
            if(this.direction == 1)
            {
                // incremental
                lastIndex = ((this.index - 1) < 0)? this.maxIndex : this.index - 1;
            }
            else
            {
                // decremental
                lastIndex = ((this.index + 1) > this.maxIndex)? 0 : this.index + 1;
            }
            return lastIndex;
        }
        return false;
    };
    
    // private
    
    this.isOk = function()
    {
        if((isFinite(this.index) && isFinite(this.maxIndex)) && (this.index <= this.maxIndex))
        {
            return true;
        }
        
        return false;
    }
    
    this.setInt = function(value)
    {
        value = parseInt(value);
        if(isNaN(value))
        {
            return undefined;
        }
        return value;
    }
    
    // vars
    
    this.index = this.setInt(index);
    this.maxIndex = this.setInt(maxIndex);
    this.direction = 1; // 0: decremental, 1: incremental
    
}

/* !homeSlider */

var homeSlider = {

	elements : {},
	vars : {},
	
	init: function()
	{
		if(document.getElementById("slider"))
		{
		
			// elements
			
			this.elements.boxes = $(".slider-box");
			this.elements.sliderBar = $("#slider-bar")[0];
			
			// vars
			
			this.vars.loop = new Loop(0, this.elements.boxes.length - 1);
			
			this.setTimeout();
		}
	},
	
	animate: function()
	{
		
		var currentIndex = this.vars.loop.index;
		var nextIndex = this.vars.loop.next(false);
		
		// hide text
		
		$(this.elements.boxes[currentIndex]).find(".slider-text").animate({
			"opacity" : 0
		}, {
			"easing" : "easeInOutQuart",
			"duration" : 750,
			"complete" : function()
			{
				$(homeSlider.elements.boxes[currentIndex]).find("img:eq(0)").animate({
					"bottom" : -370
				}, {
					"easing" : "easeInOutQuart",
					"duration" : 1250,
					"complete" : function()
					{
						$(homeSlider.elements.boxes[currentIndex]).css("top", 370);
						$(homeSlider.elements.boxes[currentIndex]).find("img:eq(0)").css("bottom", 0);
						$(homeSlider.elements.boxes[currentIndex]).find(".slider-text").css("opacity", 1);
						homeSlider.vars.loop.next();
						
						// next
						
						$(homeSlider.elements.boxes[homeSlider.vars.loop.index]).find(".slider-text").css("opacity", 0);
						
						$(homeSlider.elements.boxes[homeSlider.vars.loop.index]).animate({
							"top" : 0
						}, {
							"easing" : "easeInOutQuart",
							"duration" : 1250,
							"complete" : function()
							{
								$(homeSlider.elements.boxes[homeSlider.vars.loop.index]).find(".slider-text").animate({ "opacity" : 1 },{ "easing" : "easeInOutQuart", "duration" : 750, "complete" : function(){ homeSlider.setTimeout(); }  });
							}
						});
					}
				});
			}
		});
		
	},
	
	setTimeout: function()
	{
		this.vars.timer = setTimeout(function(){				
			homeSlider.animate();
		}, 7500);
	}

}

/* !homeProducts */

var homeProducts = {

	elements : {},
	vars : {},

	init: function()
	{
	
		// elements
	
		this.elements.linksOver = $(".home-product-over");
		
		$(this.elements.linksOver).each(function(){
			$(this).prev().css("opacity", 0);
		});
		
		// events
		
		$(this.elements.linksOver).mouseover(function(){
			
			var image = $(this).prev()[0];
			$(image).animate({
				"opacity" : 1
			}, {
				"queue" : false,
				"easing" : "easeInOutQuint",
				"duration" : 500
			});
			
		});
		
		$(this.elements.linksOver).mouseout(function(){
			
			var image = $(this).prev()[0];
			$(image).animate({
				"opacity" : 0
			}, {
				"queue" : false,
				"easing" : "easeInOutQuint",
				"duration" : 500
			});
			
		});
		
	}

}

/* !storySlider */

var storySlider = {

	elements: {},
	vars: {},

	init: function()
	{
	
		// elements
		
		this.elements.thumbs = $(".sidebar-thumb");
		
		// vars
		
		this.vars.index = 0;
		
		if(this.elements.thumbs)
		{
		
			$(this.elements.thumbs[this.vars.index]).css("opacity", 0.5);
		
			// events
			
			$(this.elements.thumbs).click(function(){
				
				for(var i = 0; i < storySlider.elements.thumbs.length; i++)
				{
					if(storySlider.elements.thumbs[i] == this)
					{
						$(storySlider.elements.thumbs[storySlider.vars.index]).css("opacity", 1);
						$(storySlider.elements.thumbs[i]).css("opacity", 0.5);
						storySlider.vars.index = i;
						var src = $(this).find("img").attr("src");
						src = src.replace(/w=72/, 'w=186');
						src = src.replace(/h=72/, 'h=384');
						$(".sidebar-top-image").attr("src", src);
						$(".sidebar-top-image").luglio7ImagePreload();
						
					}
				}
				
			});
			
		}
		
	}

}

/* !preloads */

var preloads = {

	init : function()
	{
		$("#header img").luglio7ImagePreload({
			"cssInit"		: {"opacity" : 0, "bottom" : -10, "position" : "relative"},
			"cssComplete"	: {"opacity" : 1, "bottom" : 0},
			"easing"		: "easeInOutQuart",
			"duration"		: 500,
			"complete"		: function(el){},
			"init"			: function(el){}
		});
		
		
		$(".preload").luglio7ImagePreload({
			"easing"		: "easeInQuart",
			"duration"		: 1000
		});
		
		
		$(".slider-box img").luglio7ImagePreload({
			"easing"		: "easeInQuart",
			"duration"		: 500
		});
	}

}

/* !maps */

var maps = {
    
    vars : {},
    elements : {},
    
    init : function()
    {
    	if(document.getElementById("map"))
    	{
	    	this.elements.map = document.getElementById("map");
	        
	        // peschiera del garda
	        
	        var latlng = new google.maps.LatLng(45.439387, 10.993044);
	        
	        // map
	        
	        var myOptions = {
	            zoom: 14,
	            center: latlng,
	            mapTypeId: google.maps.MapTypeId.ROADMAP,
	            scrollwheel: true,
	            mapTypeControl: true,
	            disableDefaultUI: false,
	            zoomControl: true,
	            zoomControlOptions : {
	                position: google.maps.ControlPosition.TOP_LEFT,
	                style: google.maps.ZoomControlStyle.LARGE
	            }
	        };
	        
	        var map = new google.maps.Map(this.elements.map, myOptions);
	        
	        // marker
	        
	        var marker = new google.maps.Marker({
	            position : new google.maps.LatLng(45.439387, 10.993044)
	        });
	        
	        marker.setMap(map);
	        
	        var infowindow = new google.maps.InfoWindow({
	            content: "<div class='gmap-window'><h5>Gelateria Savoia</h5><p>Via Roma 1/b (Piazza Bra) | 37121 Verona</p></div>"
	        });
	        
	        google.maps.event.addListener(marker, 'click', function() {
	        	infowindow.open(map, marker);
	            marker.setAnimation(google.maps.Animation.BOUNCE);
	        });
    	}

    }
    
}

/* !ready event */

$(document).ready(function(){
	homeProducts.init();
	homeSlider.init();
	storySlider.init();
	preloads.init();
	maps.init();
});
