///////////////////
/* slider Object */
///////////////////
var sweetslide =
{
	index 				: 0,
	next_trigger 		: $(".slider-next"),
	prev_trigger		: $(".slider-prev"),
	index_trigger		: $(".slider-bullets").find("li"),
	element 			: $(".slider").find("li"),
	old_index 			: false,
	animation 			: "default",
	busy 				: false,
	transition_style	: "random",
	timer				: false,
	interval			: 2900,
	hover_one			: false,

	init : function ()
	{
		$(sweetslide.element[sweetslide.index]).show();
		sweetslide.set_timer();
		sweetslide.set_triggers();
		sweetslide.build_index_nav();
	},
	
	build_index_nav : function ()
	{
		$("<ul class='list slider-bullets' />").insertAfter("#images").fadeIn();
		for (var i = 1; i <= sweetslide.element.length; i++)
		{
			$(".slider-bullets").append("<li><a href=''>" + i + "</a></li>");
		}
		sweetslide.index_trigger = $(".slider-bullets").find("li");
		$(sweetslide.index_trigger[sweetslide.index]).addClass("active");
	},
	
	set_timer : function ()
	{
		sweetslide.timer = setTimeout(function ()
		{
			if (sweetslide.hover_on) return false;
			if (sweetslide.busy) return false;
			sweetslide.next();
		}, sweetslide.interval);
	},
	
	set_triggers : function ()
	{
		sweetslide.next_trigger.click(function (ev)
		{
			ev.preventDefault();
			clearTimeout(sweetslide.timer);
			if (sweetslide.busy) return false;
			sweetslide.next();
		});
		
		sweetslide.prev_trigger.click(function (ev)
		{
			ev.preventDefault();
			clearTimeout(sweetslide.timer);
			if (sweetslide.busy) return false;
			sweetslide.prev();
		});
		
		sweetslide.index_trigger.live("click", function (ev)
		{
			ev.preventDefault();
			if ($(this).index() == sweetslide.index) return false;
			clearTimeout(sweetslide.timer);
			if (sweetslide.busy) return false;
			sweetslide.next_index($(this).index());
		});

		$(".slider").parent().hover(function ()
		{
			//sweetslide.hover_on = true;
			$(".slider-next, .slider-prev").fadeIn(500, "jswing");
			//clearTimeout(sweetslide.timer);
			
		}, function ()
		{
			//sweetslide.hover_on = false;
			$(".slider-next, .slider-prev").fadeOut(500, "jswing");
			//sweetslide.set_timer(sweetslide.timer);
		});
	},
	
	next_index : function (given_index)
	{
		sweetslide.busy = true;
		sweetslide.old_index = sweetslide.index;
		sweetslide.index = given_index;
		//sweetslide.transition();
		
		var element_width = $("#images").width();
		var easing = "easeInOutBack";
		var speed = 1100;
		
		$(sweetslide.index_trigger[sweetslide.index]).addClass("active");
		$(sweetslide.index_trigger[sweetslide.old_index]).removeClass("active");
		$(sweetslide.element[sweetslide.index]).css({ left: element_width })
			.show()
			.animate({ left: 0 }, speed, easing);
		$(sweetslide.element[sweetslide.old_index]).animate({ left: "-" + element_width + "px" }, speed, easing, function ()
		{
			sweetslide.busy = false;
			clearTimeout(sweetslide.timer);
			sweetslide.set_timer();
		});
	},
	
	next : function ()
	{
		sweetslide.busy = true;
		sweetslide.old_index = sweetslide.index;
		(sweetslide.index == (sweetslide.element.length - 1)) ? sweetslide.index = 0 : sweetslide.index = sweetslide.index + 1;
		//sweetslide.transition();
		
		var element_width = $("#images").width();
		var easing = "easeInOutBack";
		var speed = 1100;
		
		$(sweetslide.index_trigger[sweetslide.index]).addClass("active");
		$(sweetslide.index_trigger[sweetslide.old_index]).removeClass("active");
		$(sweetslide.element[sweetslide.index]).css({ left: element_width })
			.show()
			.animate({ left: 0 }, speed, easing);
		$(sweetslide.element[sweetslide.old_index]).animate({ left: "-" + element_width + "px" }, speed, easing, function ()
		{
			sweetslide.busy = false;
			clearTimeout(sweetslide.timer);
			sweetslide.set_timer();
		});
		
	},
	
	prev : function ()
	{
		sweetslide.busy = true;
		sweetslide.old_index = sweetslide.index;
		(sweetslide.index == 0) ? sweetslide.index = sweetslide.element.length - 1 : sweetslide.index = sweetslide.index - 1;
		//sweetslide.transition();
		
		var element_width = $("#images").width();
		var easing = "easeInOutBack";
		var speed = 1100;
		
		$(sweetslide.index_trigger[sweetslide.index]).addClass("active");
		$(sweetslide.index_trigger[sweetslide.old_index]).removeClass("active");
		$(sweetslide.element[sweetslide.index]).css({ left: "-" + element_width + "px" })
			.show()
			.animate({ left: 0 }, speed, easing);
		$(sweetslide.element[sweetslide.old_index]).animate({ left: element_width }, speed, easing, function ()
		{
			sweetslide.busy = false;
			clearTimeout(sweetslide.timer);
			sweetslide.set_timer();
		});
	},
	
	transition : function ()
	{
		$(sweetslide.index_trigger[sweetslide.index]).addClass("active");
		$(sweetslide.index_trigger[sweetslide.old_index]).removeClass("active");
		var image_width = $(sweetslide.element[sweetslide.index]).width();
		var image_height = $(sweetslide.element[sweetslide.index]).height();
		var image_src = $(sweetslide.element[sweetslide.index]).find("img").attr("src");
		var cols = 751/40;
		var rows = 351/351;
			
		for (var i = 0; i < cols; i++)
		{	
			for (var j = 0; j < rows; j++)
			{
				$(sweetslide.element[sweetslide.index]).append(
					$("<div class='slice'></div>").css(
					{
						height: image_height / rows + "px",
						width: 0,
						top: j * (image_height / rows) + "px", 
						left: i * (image_width / cols) + "px",
						background: "url(" + image_src + ") -" + i * (image_width / cols) + "px -" + j * (image_height / rows) + "px",
						opacity: 0
					})
				);
			}
		}
		
		$(sweetslide.element[sweetslide.index]).find("img").hide();
		$(sweetslide.element[sweetslide.index]).show();
		
		var slices = $(sweetslide.element[sweetslide.index]).find(".slice");
		var items_ready = 0;
		
		slices.each(function (i)
		{
			$(slices[i]).delay(i * 50).animate(
			{
				opacity: 1,
				width: image_width / cols + "px"
				
			}, 500, "jswing", function ()
			{
				items_ready = items_ready + 1;
				if (items_ready == (slices.length - 1)) 
				{
					sweetslide.remove_slices();
					clearTimeout(sweetslide.timer);
					sweetslide.set_timer();
				}
			});
		});
	},
	
	remove_slices : function ()
	{
		$(sweetslide.element[sweetslide.old_index]).hide();
		$(sweetslide.element[sweetslide.index]).find("img").show();
		$(sweetslide.element[sweetslide.index]).find(".slice").remove();
		sweetslide.busy = false;
	}
}

//////////////////
/* Cufon Object */
//////////////////

var cufon =
{
	set : function ()
	{
		Cufon.replace('h1', { fontFamily: 'serif-neue' });
		//Cufon.replace('.slider-bullets li', { fontFamily: 'gothic' });
		Cufon.replace('h2', { fontFamily: 'serif-neue' });
		Cufon.replace('h3', { fontFamily: 'serif-neue' });
		Cufon.replace('nav .ncufon', { fontFamily: 'gothic', hover: true, hoverables: { strong: true, em: true }});
		Cufon.replace('.news', { hover: true, hoverables: { strong: true, em: true }});
		Cufon.replace('footer h3', { fontFamily: 'gothic' });
		Cufon.replace('footer h4', { fontFamily: 'gothic' });
		Cufon.replace('.footon', { fontFamily: 'gothic' });
	}
}


/////////////////
/* Plan Object */
/////////////////

var plan = 
{
	busy : false,
	
	init : function ()
	{
		$(".number-trigger").live("click", function(e)
		{
			e.preventDefault();
			plan.show_modal($(this));
		});
		
		$("#plan-lists").find("a").live("click", function (e)
		{
			e.preventDefault();
			var obj = this;
			$("body, html").animate({ scrollTop: "0px" }, 1000, function ()
			{
				if (plan.busy) return false;
				plan.busy = true;
				plan.show_modal($("."+$(obj).attr("alt")).find(".number-trigger"));
			});
		});
		
		$("#plan").click(function (e)
		{
			if ($(e.target).hasClass("modal-closer")) 
			{
				plan.close_modal();
				$(".number-trigger").parent().stop(true, false).removeClass("active").css({ opacity: 1 });;
			}
		})
		
		$(".close-modal").live("click", function ()
		{
			plan.close_modal();
			$(".number-trigger").parent().stop(true, false).removeClass("active").css({ opacity: 1 });;
		});
	},
	
	show_modal : function (obj)
	{	
		$(".number-trigger").parent().stop(true, false).removeClass("active").css({ opacity: 1 });;
		obj.parent().addClass("active");
		obj.parent().effect("pulsate", {times:5}, 1500);
		var html = '';
		obj.parent().find(".modal-box").each(function ()
		{
			html += "<div class='modal-shop'>" + $(this).html() + "</div>";
		});
		
		//console.log(html);
		
		var clicked_top = obj.css("top");
		var clicked_left = obj.css("left");
		var clicked_class = obj.parent().attr("class");
		
		$("#modal").attr("class", clicked_class).html(html + "<button class='close-modal'>Close</button>").css({ visibility: "hidden", display: "block" });
		cufon.set();
		var modal_width = $("#modal").width();
		var modal_height = $("#modal").height();
		if ((751 / 2) < parseFloat(clicked_left))
		{
			$("#modal").css({ visibility: "visible", display: "block", top: clicked_top, left: parseFloat(clicked_left) - modal_width, margin: 0, opacity: 0 });
		}
		else
		{
			$("#modal").css({ visibility: "visible", display: "block", top: clicked_top, left: clicked_left, margin: 0, opacity: 0 });
		}
		
		var new_left;
		if (parseFloat(clicked_left) > 220 && parseFloat(clicked_left) < 530)
		{
			((751 / 2) < parseFloat(clicked_left)) ? new_left =  "-=" + 10 : new_left = "+=" + 30;
		}
		else
		{
			new_left = 375.5 - (modal_width / 2)
		}
		
		$("#modal").animate(
		{ 	
			top: 150.5 - (modal_height / 2),
			left: new_left,
			opacity: 1
		}, 800, function ()
		{
			plan.busy = false;
		});
		
		$("#modal").find(".left").css({ opacity: 1 });
	},
	
	close_modal : function ()
	{
		$("#modal").fadeOut(800, function ()
		{
			$(this).html("");
		});
	}
}



///////////////////////////
/* Miscellaeneous Object */
///////////////////////////
var misc =
{
	wrap_items : function ()
	{
		$("h1, h2").each(function (i)
		{
			if ($(this).find("span").length == 0) $(this).wrapInner("<span />");
		});
	},
	
	equil_heights : function (obj, outer)
	{
		var highest = 0;
		obj.each(function (i)
		{
			// console.log($(this).outerHeight(true))
			if (outer)
			{
				if ($(this).outerHeight(true) > highest) highest = $(this).outerHeight(true);
			}
			else
			{
				if ($(this).height() > highest) highest = $(this).height();
			}
		});
		

		obj.css({ height: highest });
	}
}


/////////////////////
/* Carousel Object */
/////////////////////
var carousel =
{
	index: 0,
	end_index : false,
	elements: $("#logoslider").find("li"),
	container: $("#logoslider"),
	timer: false,
	interval: 5000,
	old_index: new Array(),
	hover_on: false,
	
	start: function ()
	{
		for (var i = 0; i < 7; i++)
		{
			var position = $(carousel.elements[carousel.index]).outerWidth(true) * i;
			$(carousel.elements[carousel.index]).css({ left: position }).delay(i * 50).fadeIn(1200);
			carousel.old_index.push(carousel.index);
			carousel.index = carousel.index + 1;
			
			if (i == 6) carousel.set_timer();
		}
	},
	
	set_timer : function ()
	{
		clearTimeout(carousel.timer);
		carousel.timer = setTimeout(function ()
		{
			if (carousel.hover_on) return false;
			carousel.next_images();
		}, carousel.interval);
	},
	
	next_images : function ()
	{
		var counter = 0;
		var new_old = new Array();
		for (var i = 0; i < 7; i++)
		{
			var position = $(carousel.elements[carousel.index]).outerWidth(true) * i;
			$(carousel.elements[carousel.old_index[i]]).css({ zIndex: 1 })
			$(carousel.elements[carousel.index])
				.show()
				.delay(i * 50)
				.css({ opacity: 0, left: position, top: "-" + carousel.container.height() + 10 + "px", zIndex: 2 })
				.animate({ top: 0, opacity: 1 }, 1200);
				
			new_old.push(carousel.index);
			((carousel.elements.length - 1) == carousel.index) ? carousel.index = 0 : carousel.index = carousel.index + 1;
			
			$(carousel.elements[carousel.old_index[i]])
				.delay(i * 50)
				.animate({ top: carousel.container.height() + 10, opacity: 0 }, 1200, function ()
				{				
					
					$(this).hide()
					if (counter == 6) 
					{
						carousel.old_index = new_old;
						carousel.set_timer();
					}
					else
					{
						counter = counter + 1;
					}
				});
		}
	}
}


/////////////////
/* Form Object */
/////////////////

var form =
{
	validate : function ()
	{
		$("form.validate").validate(
		{
			errorPlacement: function (error, element) 
			{
				if (element.parent().next().hasClass("error-holder"))
				{
					element.parent().next(".error-holder").html(error);
				}
				else
				{
					error.insertAfter(element);
				}
			}
		});
	}
}




///////////////
/* DOM Ready */
///////////////
$(document).ready(function ()
{	
	misc.wrap_items();
	plan.init();
	cufon.set();
	
	if ($(".cycle-image").length > 0) 
	{
		$(".cycle-image").each(function ()
		{
			$(this).cycler();
		});
	}
	
	var FullscreenrOptions = {  width: 1024, height: 683, bgID: '#bgimg' };
	jQuery.fn.fullscreenr(FullscreenrOptions);
	
	sweetslide.init();
	carousel.start();
	form.validate();
	
	$("#brands-overview").find("li").each(function (i)
	{
		if (i % 5 == 4) $(this).addClass("last");
	});
	
	$(".sales, .vacatures").find("article").each(function (i)
	{
		if (i % 2 == 1) $(this).addClass("last");
	});
	
	var sales = $(".sales").find("li");
	$(sales[6]).addClass("no-border");
	
	$(".plan-wrap").click(function ()
	{
		var href = $(this).find(".plattegrond").attr("href");
		window.location = href;
	});
	
	$("#articles .newsitem:last, .column-7-8 .newsitem:last").addClass("last");
	
	$(".fancybox").fancybox();
	
	$("#modal").draggable({ containment: "#plan", scroll: false });
	
	if ($("body").hasClass("ie7"))
	{
		$("h2").each(function (i)
		{
			if ($(this).find("span").length > 1)
			{
				$(this).addClass("multiple-span");
				$(this).find("span").wrapInner("<em class='test' />");
				$(this).find("span:last").addClass("last");
			}
		});
	}
});

$(window).load(function ()
{
	if ($("body").hasClass("home") || $("#social-media-block").length) misc.equil_heights($(".blockItem").find("h2"));
	if ($("#social-media-block").length) misc.equil_heights($(".social-wrap"));
});
