$( document ).ready( function() {
	Equens.init();
} );

var Equens = {
	/* Constructor */
	init: function() {
		var _this = this;
		if (Equens.MainNav) {
			var mainNavNode = $("div.main-nav").get(0);
			if(mainNavNode) {
				var mainNav = new Equens.MainNav(mainNavNode);
			}
		}
		if (Equens.Tabs) {
			var tabsContainers = $("div.tabs");
			l = tabsContainers.length;
			for (var i = l; i--;) {
				var tabs = new Equens.Tabs(tabsContainers[i]);
			}
		}
		var printHeads = $("h1.print");
		l = printHeads.length;
		for (var i = l; i--;) {
			var printLink = document.createElement("a");
			printLink.className = "print";
			printLink.href= "#";
			printLink.innerHTML = Equens.LABEL_PRINT ? Equens.LABEL_PRINT : "Print";
			$(printLink).bind("click",function(){window.print();return false;})
			$(printHeads[i]).before(printLink);
		}
		
		var toggleSlideButtons = $(".toggleslide");
		l = toggleSlideButtons.length;
		for (var i = l; i--;) {
			$(toggleSlideButtons[i]).bind("click", {button: toggleSlideButtons[i]}, function(e){_this.toggleSlide(e)});
		}
		
		var eventsBanners = $(".events-banner");
		l = eventsBanners.length;
		for (var i = l; i--;) {
			var eventsBanner = new Equens.EventsBanner(eventsBanners[i]);
		}
	}
}

Equens.toggleSlide = function(e) {
	e.preventDefault();
	var button = e.data.button;
	var container = document.getElementById(button.href.split("#")[1]);
	if ($(button).hasClass("active")) {
		$(container).hide();
		$(button).removeClass("active");
	}
	else {
		$(container).show();
		$(button).addClass("active");
	}
}

/* Table of contents

	1. Equens.MainNav
	2. Equens.Tabs
	3. Equens.LightboxManager
	4. Equens.Lightbox
-------------------------------------------------- */

/* 1. Equens.MainNav
-------------------------------------------------- */
Equens.MainNav = function(node) {
	this.rootNode = node;
	this.listItems = null;
	this.init();
}

Equens.MainNav.prototype.init = function() {
	if (Equens.IE6) {
		var _this = this;
		this.listItems = $("> ul > li",this.rootNode);
		var l = this.listItems.length;
		if(l) {
			$(this.listItems[l-1]).addClass("last");
		}
		for (var i = l; i--;) {
			$(this.listItems[i]).bind("mouseover",{listItem: this.listItems[i]},function(e){_this.addopen(e)});
			$(this.listItems[i]).bind("mouseout",{listItem: this.listItems[i]},function(e){_this.removeopen(e)});
		}
		var subListItems = $("> ul li li:first-child",this.rootNode);
		var l = subListItems.length;
		for (var i = l; i--;) {
			$(subListItems[i]).addClass("first");
		}
	}
}

Equens.MainNav.prototype.removeopen = function(e) {
	var listItem = e.data.listItem;
	$(listItem).removeClass("open");
}

Equens.MainNav.prototype.addopen = function(e) {
	var listItem = e.data.listItem;
	$(listItem).addClass("open");
}

/* 2. Equens.Tabs
-------------------------------------------------- */
Equens.Tabs = function(node) {
	this.rootNode = node;
	this.init();
	this.test = "hoi";
}

Equens.Tabs.prototype.init = function() {
	var _this = this;
	this.tabLinks = $("ul.tabs a",this.rootNode);
	this.tabContentcontainers =  $(".content",this.rootNode);
	var l = this.tabLinks.length;
	if (l == this.tabContentcontainers.length) {
		for (var i = l; i--;) {
			$(this.tabLinks[i]).bind("click",{index: i},function(e){_this.setTab(e)});
		}
	}
}

Equens.Tabs.prototype.setTab = function(e) {
	e.preventDefault();
	$(".active", this.rootNode).removeClass("active");
	$(this.tabLinks[e.data.index]).parent().addClass("active");
	$(this.tabContentcontainers[e.data.index]).addClass("active");
}

/* 3. Equens.LightboxManager
-------------------------------------------------- */
Equens.LightboxManager = {
	lightboxes : new Array(),
	currentLightbox : null,
	opacityLayer : null,
	showOpacityLayer : function() {
		if (Equens.IE6) {
			this.setOpacityLayer();
		}
		if (!this.opacityLayer) {
			var _this = this;
			this.opacityLayer = document.createElement("div");
			this.opacityLayer.className = "opacity-layer";
			$(document.body).append(this.opacityLayer);
			$(this.opacityLayer).bind("click", function(){if(_this.currentLightbox){_this.currentLightbox.hide()}})
		}
		$(this.opacityLayer).css("opacity","0");
		$(this.opacityLayer).show();
		$(this.opacityLayer).fadeTo(500, 0.7);
	},
	hideOpacityLayer : function(lightbox) {
		$(this.opacityLayer).fadeOut(750);
	},
	openFlashLightbox : function(id, file, width, height, version, vars, params, attr) {
		var lightbox = null;
		var l = this.lightboxes.length;
		for (var i = l; i--;) {
			if (id == this.lightboxes[i].flashId) {
				lightbox = this.lightboxes[i];
			}
		}
		if(!lightbox) {
			lightbox = new Equens.Lightbox({flashData: {id: id, file: file, width: width, height: height, version: version, vars: vars, params: params, attr: attr}});
			lightbox.show();
			this.lightboxes.push(lightbox);
			this.showOpacityLayer();
		}
		else {
			lightbox.show();
		}
	},
	hideDropDowns : function(root, hide){
		if (root != null){
			var dropdowns = root.getElementsByTagName("select");	
			var visibility = "hidden";
			if (hide == false){
				visibility = "visible";	
			}
			for (var i=0; i<dropdowns.length; i++){
				dropdowns[i].style.visibility = visibility;
			}
		}
	},
	setOpacityLayer: function(compareElmt) {
		if(this.opacityLayer) {
			var compareHeight = compareElmt ? $(compareElmt).height() : 0;
			var bodyHeight = $(document.body).height();
			this.opacityLayer.style.height = (bodyHeight > compareHeight ? bodyHeight : compareHeight) + "px";
		}
	}
}

/* 4. Equens.Lightbox
-------------------------------------------------- */
Equens.Lightbox = function(vars) {
	if (vars) {
		this.closeLabel = vars.closeLabel ? vars.closeLabel : "Sluit venster";
		this.content = vars.content ? vars.content : null;
		this.flashData = vars.flashData ? vars.flashData : null;
		this.lightboxlayer = null;
		this.lightbox = null;
		this.inner = null;
		this.flashId = null;
		this.flashContainer = null;
		this.flashLoaded = false;
		this.init();
	}
}

Equens.Lightbox.prototype.init = function() {
	this.buildContainer();
};

Equens.Lightbox.prototype.buildContainer = function() {
	var _this = this;
	this.lightboxlayer = document.createElement("div");
	this.lightboxlayer.className = "lightbox-layer";
	$(this.lightboxlayer).bind("click", function(e){_this.outsideHide(e)});
	this.lightbox = document.createElement("div");
	this.lightbox.className = "lightbox";
	this.inner = document.createElement("div");
	this.inner.className = "inner";
	
	this.closeButton = document.createElement("a");
	this.closeButton.className = "close";
	this.closeButton.href = "";
	this.closeButton.innerHTML = "<span>"+this.closeLabel+"</span>";
	$(this.closeButton).bind("click", function(e){_this.hide(e); return false});
	
	if (this.flashData) {
		this.flashId = this.flashData.id;
		this.flashContainer = document.createElement("div");
		this.flashContainer.id = this.flashId;
		if (this.content) {
			$(this.flashContainer).append(this.content);
		};
		$(this.inner).append(this.flashContainer);
		$(this.lightbox).width(this.flashData.width + "px");
	}
	else if (this.content) {
		$(this.inner).append(this.content);
	};
	
	$(this.lightbox).append(this.closeButton);
	$(this.lightbox).append("<div class=\"lt\"></div><div class=\"rt\"></div><div class=\"rb\"></div><div class=\"lb\"></div>");
	$(this.lightbox).append(this.inner);
	$(this.lightboxlayer).append(this.lightbox);
	$(document.body).append(this.lightboxlayer);
};

Equens.Lightbox.prototype.show = function() {
	var _this = this;
	Equens.LightboxManager.currentLightbox = this;
	Equens.LightboxManager.showOpacityLayer();
	var newtop = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop;
	this.lightboxlayer.style.top = newtop + "px";
	setTimeout(function(){$(_this.lightboxlayer).fadeIn(750, function(){Equens.LightboxManager.currentLightbox = _this;})}, 500);
	if (this.flashContainer && !this.flashLoaded) {
		swfobject.embedSWF(this.flashData.file, this.flashContainer.id, this.flashData.width, this.flashData.height, this.flashData.version, "static/flash/expressInstall.swf", this.flashData.vars, this.flashData.params, this.flashData.attr);
	}
}

Equens.Lightbox.prototype.outsideHide = function(e) {
	var targ = null;
	if (e.target) {
		targ = e.target;
	}
	else if (e.srcElement) {
		targ = e.srcElement;
	}
	if (targ.nodeType == 3) {
		targ = targ.parentNode;
	}
	if (!this.isInside(targ, this.lightbox)){
		this.hide();
	}
}

Equens.Lightbox.prototype.isInside = function (childNode, parentNode) {
	if (childNode == parentNode) {
		return true;
	}
	if (parentNode && parentNode.childNodes) {
		for (var i=0; i<parentNode.childNodes.length; ++i) {
			if (parentNode.childNodes[i] == childNode) {
				return true;
			}
			else if(this.isInside(childNode, parentNode.childNodes[i])){
				return true;
			}
		}
	}	
	return false;
}

Equens.Lightbox.prototype.hide = function() {
	Equens.LightboxManager.currentLightbox = null;
	if (this.flashData && this.flashData.attr && this.flashData.id) {
		if(playerStop){
			playerStop(this.flashData.attr.id);
		}
	}
	$(this.lightboxlayer).fadeOut(500, function(){Equens.LightboxManager.hideOpacityLayer()});
}

Equens.EventsBanner = function(node) {
	this.rootNode = node;
	this.listItems = null;
	this.init();
}

Equens.EventsBanner.prototype.init = function() {
	var _this = this;
	this.list = $("ul", this.rootNode);
	listItems = $("li", this.list);
	var l = listItems.length;
	if (l > 1) {
		setTimeout(function(){_this.animate()}, 4000);
	}
}

Equens.EventsBanner.prototype.animate = function() {
	var _this = this;
	var active = $(".active", this.list);
	var nextSibling = $(active).next("li")[0];
	if (nextSibling) {
		$(nextSibling).addClass("active");
	}
	else {
		var item = $("li", this.list)[0];
		$(this.list).append(item);
		$(item).addClass("active");
	}
	
	if (Equens.IE6) {
		$(active).removeClass("active");
	}
	else {
		$(this.list).animate({left: "-=100%"}, 1000, function(){
			$(active).removeClass("active");
			_this.list.css("left","0")
		});
	}
	setTimeout(function(){_this.animate()}, 4000);
}