/* == FUNCTION: ADD CLASS == */ 

function addClass(element,value)
{
	if (!element.className)
	{
		element.className = value;
	}
	else
	{
		newClassName = element.className;
		newClassName += " ";
		newClassName += value;
		element.className = newClassName;
	}
}



/* == FUNCTION: ADD LOAD EVENT == */

function addLoadEvent(func)
{
	var oldonload = window.onload;
	if (typeof window.onload != "function")
	{
		window.onload = func;
	}
	else
	{
		window.onload = function()
		{
			oldonload();
			func();
		}
	}
}



/* == FUNCTION: DEFINE LAST LINK == */

function defineFirstLink(div_name)
{
	$("div#" + div_name + " ul li a:first").addClass("first");
	$("div#" + div_name + " ul li a.first.active").css({backgroundImage: "url(../images/bg_navigation_a_active.jpg)", backgroundPosition: "-2px 0", backgroundRepeat: "no-repeat"});
}



/* == FUNCTION: DEFINITION LIST BEHAVIOR == */

function definitionListBehavior(selector)
{
	if ($(selector).length > 0)
	{
		$(selector + ":first").addClass("first");
		
		$(selector).hover(function() {
			$(this).addClass("hover");
		}, function() {
			$(this).removeClass("hover");
		});
	}
}



/* == FUNCTION: DIV HOVER BEHAVIOR == */

function divHoverBehavior(selector)
{
	if ($(selector).length > 0)
	{
		$(selector).hover(function() {
			$(this).addClass("hover");
		}, function() {
			$(this).removeClass("hover");
		});
	}
}



/* == FUNCTION: GOOGLE MAPS == */

function googleMaps()
{
	var map = new GMap2(document.getElementById("map"));
	map.setCenter(new GLatLng(51.2079050857326, 4.961185455322266), 14);
	map.addControl(new GLargeMapControl());
	map.addControl(new GMapTypeControl());
	
	var icon = new GIcon();
	icon.image = "../images/maps_marker.png";
	icon.iconSize = new GSize(60.0, 34.0);
	icon.iconAnchor = new GPoint(10.0, 30.0);
	
	var marker = new GMarker(new GLatLng(51.2079050857326, 4.961185455322266), icon);
	map.addOverlay(marker);
}



/* == CLASS: GALLERY == */ 

var Gallery = function(gallery_id,container)
{
	var $list = $(container + " ul#" + gallery_id);
	var total_images = $("li",$list).length;
	var current_image = 1;
	var class_reference = this;
	
	this.init = function()
	{
		if ($list.length > 0)
		{
			// Verberg elke LI behalve de eerste
			$("li",$list).hide().eq(0).show();
			
			// Voeg navigatie toe aan H3
			if ($(container + " h3 span.gallery_navigation").length == 0)
			{
				$(container + " h3").append("<span class=\"gallery_navigation\"><a href=\"#\">&lt;</a> " + current_image + "/" + total_images + " <a href=\"#\">&gt;</a></span>");
				
				// Previous link behavior
				$(container + " h3 span.gallery_navigation a:first").click(function()
				{
					class_reference.previousImage();
					return false;
				});
				
				// Next link behaviour
				$(container + " h3 span.gallery_navigation a:last").click(function()
				{
					class_reference.nextImage();
					return false;
				});
			}
		}
	}
	
	this.previousImage = function()
	{
		if ($("li:visible",$list).is(":first-child"))
		{
			return false;
		}
		else
		{
			$("li:visible",$list).hide().prev("li").show();
			
			current_image--;
			class_reference.updateNavigation();
		}	
	}
	
	this.nextImage = function()
	{
		if ($("li:visible",$list).is(":last-child"))
		{
			return false;
		}
		else
		{
			$("li:visible",$list).hide().next("li").show();
			
			current_image++;
			class_reference.updateNavigation();
		}
	}
	
	this.updateNavigation = function()
	{
		if ($(container + " h3 span.gallery_navigation").length > 0)
		{
			$(container + " h3 span.gallery_navigation").remove();
			
			$(container + " h3").append("<span class=\"gallery_navigation\"><a href=\"#\">&lt;</a> " + current_image + "/" + total_images + " <a href=\"#\">&gt;</a></span>");
			
			// Previous link behavior
			$(container + " h3 span.gallery_navigation a:first").click(function()
			{
				class_reference.previousImage();
				return false;
			});
			
			// Next link behaviour
			$(container + " h3 span.gallery_navigation a:last").click(function()
			{
				class_reference.nextImage();
				return false;
			});
		}
	}
}



/* == FUNCTION: COLLAPSE PRODUCT CATALOG ==*/

function collapseProductCatalog()
{
	if ($("div#content div.catalog_item").length > 0)
	{
		$("div#content div.catalog_item h3").each(function() {
			$(this).html("<a href=\"#\">" + $(this).text() +"</a>");
		});
		
		$("div#content div.catalog_item div.product_catalog_container").hide();
		
		$("div#content div.catalog_item h3 a").click(function() {
			$(this).parent().next("div.product_catalog_container").slideToggle("normal");
			
			return false;
		});
	}
}



/* == FUNCTION: ADD FORM VALIDATION == */

function addFormValidation(selector)
{
	if ($(selector).length > 0)
	{
		$(selector).submit(function()
		{
			var error_counter = 0;
			
			$(selector + " span.error").remove();
			$(selector + " input.required").removeClass("error");
			$(selector + " input.email").removeClass("error");
			$(selector + " textarea.required").removeClass("error");
			
			$(selector + " input.required").each(function()
			{
				if ($(this).val() == "")
				{
					$(this).after("<span class=\"error\">Dit is een verplicht veld</span>");
					$(this).next("span.error").hide().slideDown("fast");
					$(this).addClass("error");
					error_counter++;
				}
			});
			
			$(selector + " input.email").each(function()
			{
				var email_filter = /^[^@]+@[^@]+.[a-z]{2,}$/i;
				
				if ($(this).val().search(email_filter) == -1 && $(this).next().nodeName != "SPAN" && $(this).val() != "")
				{
					$(this).after("<span class=\"error\">Dit is geen geldig e-mail adres</span>");
					$(this).next("span.error").hide().slideDown("fast");
					$(this).addClass("error");
					error_counter++;
				}
			});
			
			$(selector + " textarea.required").each(function()
			{
				if ($(this).val() == "")
				{
					$(this).after("<span class=\"error\">Dit is een verplicht veld</span>");
					$(this).next("span.error").hide().slideDown("fast");
					$(this).addClass("error");
					error_counter++;
				}
			});
			
			if (error_counter > 0)
			{
				return false;
			}
			else
			{
				return true;
			}
		});
	}
}



/* == EVENTS == */

$(document).ready(function()
{
	defineFirstLink("navigation");
	definitionListBehavior("div#content dl.news_item");
	definitionListBehavior("div#content div.content_item dl.gallery_archive");
	divHoverBehavior("div#content div.content_item div.gallery");
	// Lightbox initialiseren
	$("a.lightbox").lightbox();
	collapseProductCatalog();
	addFormValidation("div#content form#webwinkel");
});

$(window).load(function()
{
	if ($("div#map").length > 0)
	{
		googleMaps();
	}
});

$(window).unload(function()
{
	if ($("div#map").length > 0)
	{
		GUnload();
	}
});
