if (window.Website == null || window.Website == undefined) {
	Website = { };	
}

Website.Vars = { };

Website.Base = { };
Website.Base.Overlay = { };

Website.Pagination = { };

Website.Body = { };
Website.Header = { };
Website.Header.Banner = { };
Website.Header.Menu = { };

Website.Vars.IsMSIE = (navigator.userAgent.indexOf("MSIE 8") == -1 && navigator.userAgent.indexOf("MSIE 7") == -1 && navigator.userAgent.indexOf("MSIE 6") != -1);

Website.Log = function() {
	if (Website.Base.IsDebug()) {
		try {
			var date = new Date();
			var str = date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds() + ":" + date.getMilliseconds();
			
			console.log(str, Website.Log.arguments);
		} catch (ex) { }
	}
}

Website.Header.Init = function() {
	Website.Header.Banner.Init();
	Website.Header.Menu.Init();
}

Website.Header.Banner.Index = 0;

Website.Header.Banner.Init = function() {
	Website.Header.Banner.Images = $("banner").getElements("IMG");
	
	for (var i = 1; i < Website.Header.Banner.Images.length; i++) {
		var completeEffect = function(img) {
			img.setStyle("visibility", "hidden");
		}
		
		var image = Website.Header.Banner.Images[i];
		var effect = new Fx.Morph(image, { duration: 0, onComplete: completeEffect });	
		
		effect.start({ 'opacity': 0.1 });
	}
	
	setInterval("Website.Header.Banner.Change()", 4000);
}

Website.Header.Banner.Change = function() {
	var currentImage = Website.Header.Banner.Index;
	var nextImage = currentImage + 1;
	
	if (nextImage > Website.Header.Banner.Images.length - 1) {
		nextImage = 0;	
	}
	
	var completeEffect = function(img) {
		img.setStyle("visibility", "hidden");
	}
	
	var duration = 800;
	
	var currentEffect = new Fx.Morph(Website.Header.Banner.Images[currentImage], { duration: duration, onComplete: completeEffect });
	var nextEffect = new Fx.Morph(Website.Header.Banner.Images[nextImage], { duration: duration });
	
	currentEffect.start({ 'opacity': 0.1 });
	nextEffect.start({ 'opacity': 1 });
	
	Website.Header.Banner.Index = Website.Header.Banner.Index + 1;
	
	if (Website.Header.Banner.Index > Website.Header.Banner.Images.length - 1) { 
		Website.Header.Banner.Index = 0;
	}
}

Website.Header.Menu.Init = function() {
	var menu = $("menu");
	var links = menu.getElements("A");
	
	var location = window.location.pathname.toLowerCase();
	var active = false;
	
	for (var i = 1; i < links.length; i++) {
		var link = links[i];
		
		if (link) {
			var className = link.getProperty("class");
			
			if (location.indexOf(className.toLowerCase()) > -1) {
				link.addClass(className + "Active");
				active = true;
				
			} else {
				Website.Animations.Fade(link, 0.1, 1);
			}
		}
	}
	
	if (!active && links.length > 1) { 
		var link = links[1];
		
		if (link) {
			link.addClass(link.getProperty("class") + "Active");
		}
	}
}

Website.Body.Init = function() {
	var blog = $("blog");
	var tutorials = $("tutorials");
	var gallery = $("gallery");
	var bio = $("bio");
	
	if (blog != null) { Website.Blog.Init(blog); }
	if (tutorials != null) { Website.Blog.Init(tutorials); }
	if (gallery != null) { Website.Gallery.Init(gallery); }
	if (bio != null) { Website.Gallery.Init(bio); }
	
	if (Website.Vars.IsMSIE) {
		var top = $("contentContainerTop");
		var header = $("contentContainerMiddle").getElement(".panelHeaderContainer");
		
		header.inject(top);		
	}
}

Website.Pagination.Init = function(id) {
	var container = $(id);
	var items = container.getElements(".pages A, .pageNext, .pagePrevious");
	
	for (var i = 0; i < items.length; i++) {
		var item = items[i];
		
		Website.Animations.Fade(item, 0.1, 1);
	}
}

Website.Base.GetCentre = function(size) {
	var scroll = $(document.body).getScroll();
	var windowSize = $(document.body).getSize();
	
	var centre = {
		y: scroll.y + ((windowSize.y - size.y) / 2),
		x: scroll.x + ((windowSize.x - size.x) / 2)
	};
	
	return centre;
}

Website.Base.IsDebug = function() {
	if (window.location.hostname == "localhost") {
		return true;	
	}
	
	return false;
}

Website.Base.GetHeight = function(element) {
	if (element) {
		return element.getHeight() + element.getStyle("margin-bottom").toInt() + element.getStyle("margin-top").toInt() + element.getStyle("padding-bottom").toInt() + element.getStyle("padding-top").toInt();	
	} else {
		return 0;	
	}
}

Website.Base.Overlay.Toggle = function(show) {
	$(document.body).setStyle("overflow", (show ? "hidden" : "auto"));
	
	if (navigator.userAgent.indexOf("MSIE") > -1) {
		document.getElementsByTagName("html")[0].style.overflow = (show ? "hidden" : "auto");
	}
	
	var overlay = $("overlay");
	
	if (show) {
		var size = $(window).getSize();
		var scroll = $(document.body).getScroll();
		
		overlay.setStyle("top", scroll.y);
		overlay.setStyle("left", scroll.x);
		
		overlay.setStyle("width", size.x);
		overlay.setStyle("height", size.y);
	}
	
	overlay.setStyle("display", (show ? "block" : "none"));
}

// IE6 background image flicker fix.
try { document.execCommand("BackgroundImageCache", false, true); } catch (err) { }