var exposeItems = new Object();
var exposeContent = new Object();
var scrollingPosition = 0;
var timerID = null;


// Connection to server.

var net = new Object();

net.READY_STATE_UNINITIALIZED = 0;
net.READY_STATE_LOADING = 1;
net.READY_STATE_LOADED = 2;
net.READY_STATE_INTERACTIVE = 3;
net.READY_STATE_COMPLETE = 4;

net.ContentLoader = function(url,onload,onerror) {
this.url = url;
this.req = null;
this.onload = onload;
this.onerror = (onerror) ? onerror : this.defaultError;
this.loadXMLDoc(url);
}

net.ContentLoader.prototype = { loadXMLDoc: function(url) {
				if(window.XMLHttpRequest) {
				this.req = new XMLHttpRequest();
				}
				else if(window.ActiveXObject) {
				this.req = new ActiveXObject("Microsoft.XMLHTTP");
				}
				if(this.req) {
				try {
					var loader = this;
					this.req.onreadystatechange = function() {
						loader.onReadyState.call(loader);
					}
					this.req.open('GET',url,true);
					this.req.send(null);
				} catch(err) { this.onerror.call(this); }
				}
				},

			onReadyState: function() {
				var req = this.req;
				var ready = req.readyState;
				if(ready == net.READY_STATE_COMPLETE) {
				var httpStatus = req.status;
					if(httpStatus == 200 || httpStatus == 0) {
						this.onload.call(this);
					}
					else { this.onerror.call(this); }
					}
				},

			defaultError: function() {
					alert("error fetching data!" + "\nURL: " + this.url + " " + this.onload + "\n\nreadyState:" + this.req.readyState + "\nstatus: " + this.req.status + "\nheaders: " + this.req.getAllResponseHeaders);
					}
			}





// Gallery display functions

window.onload = function() {

var categories = document.getElementById('expose_categories');
categories.innerHTML = 'Please wait while loading portfolio and content...';

var getGalleries = new net.ContentLoader("lib/loader.php?action=menu", showMenu);
getGalleries.loadXMLDoc;

var addFooter = document.getElementById('expose_footer');
addFooter.innerHTML += '<a href="javascript:;" onclick="loadContent(\'../lib/expose\');">Expos&eacute; by Inventt</a>';
//addFooter.innerHTML += '1 310 391 2626 / info@grosbygroup.com';

var addScrollTop = document.getElementById('expose_scroll_top');
addScrollTop.innerHTML = '<a href="javascript:;" onmouseover="scrollUp();" onmouseout="scrollStop();"><img src="lib/scroll_up.png" alt="Up" /></a>';

var addScrollBottom = document.getElementById('expose_scroll_bottom');
addScrollBottom.innerHTML = '<a href="javascript:;" onmouseover="scrollDown();" onmouseout="scrollStop();"><img src="lib/scroll_down.png" alt="Down" /></a>';

}

function showMenu() {

eval(this.req.responseText);

var categories = document.getElementById('expose_categories');
categories.innerHTML = '';

for (key in exposeItems) { if(key != 'FillerGallery') { categories.innerHTML += '<a href="javascript:showGallery(\'' + key + '\');">' + exposeItems[key].name + '</a>&nbsp;&nbsp;&nbsp; '; } }
for (key in exposeContent) { if(key != 'FillerContent') { categories.innerHTML += '<a href="javascript:;" onclick="loadContent(\'' + key + '\');">' + exposeContent[key] + '</a>&nbsp;&nbsp;&nbsp; '; } }

}

function showGallery(gl_name) {

var exposeGalleryCanvas = document.getElementById('expose_canvas');
exposeGalleryCanvas.style.visibility = "hidden";

var exposeGalleryContainer = document.getElementById('expose_gallery');
exposeGalleryContainer.style.visibility = "visible";

var exposeGalleryBackground = document.getElementById('expose_container');
exposeGalleryBackground.style.background = "#FFFFFF";

showPreview("gallery/" + exposeItems[gl_name].path + "/thumbs/" + exposeItems[gl_name].items[0][0], exposeItems[gl_name].items[0][1]);

var thumbs = document.getElementById('expose_thumbs');
var renderGrid = '';

var preloadImages = document.getElementById('expose_preload');
preloadImages.innerHTML = '';

var preloadImagesData = new String();
preloadImagesData = '';

for (var i = 0;i<exposeItems[gl_name].items.length;i++) {

var exposeThumb = "gallery/" + exposeItems[gl_name].path + "/thumbs/" + exposeItems[gl_name].items[i][0];
var exposeThumbInfo = exposeItems[gl_name].items[i][1];

var exposeImage = exposeThumb;
exposeImage = exposeImage.replace(/thumbs/,"images");

if(exposeItems[gl_name].items[i][0] != '') {

renderGrid += '<a href="javascript:showPreview(\'' + exposeThumb + '\', \'' + exposeThumbInfo + '\');"><img src="' + exposeThumb + '" border="0" /></a><br />';

preloadImagesData += '<img src="' + exposeImage + '" width="1" height="1" />';

}

}

thumbs.innerHTML = renderGrid;
thumbs.style.visibility = "visible";
thumbs.scrollTop = 0;
scrollingPosition = 0;

//preloadImages.innerHTML += preloadImagesData;

}

function showPreview(pr_name, pr_info) {

var preview = document.getElementById('expose_preview');

var previewPhoto = pr_name;
previewPhoto = previewPhoto.replace(/thumbs/,"images");

var image_info_box = document.getElementById('expose_image_info');
image_info_box.innerHTML = pr_info;

preview.style.background = "url(" + previewPhoto + ") no-repeat";
	//preview.innerHTML = '<img src="' + previewPhoto + '" alt="" width="780" height="475" />';
preview.style.visibility = "visible";

}

function loadContent(contentFile) {

var getContent = new net.ContentLoader('content/' + contentFile + '.txt', showContent);
getContent.loadXMLDoc;

}


function showContent() {

var contentWindow = document.getElementById('expose_content');
contentWindow.innerHTML = '<p class="close_window"><a href="javascript:;" onclick="closeContent();">[x]</a></p>' + this.req.responseText;
contentWindow.style.visibility = "visible";

}

function closeContent() {

var contentWindow = document.getElementById('expose_content');
contentWindow.style.visibility = "hidden";

}


// Scrolling functions for thumbnails

function scrollStop() {

var layerScroll = document.getElementById('expose_thumbs');
layerScroll.scrollTop = scrollingPosition;
clearTimeout(timerID);

}

function scrollUp() {

var layerScroll = document.getElementById('expose_thumbs');

if(scrollingPosition > 2) {
scrollingPosition = scrollingPosition - 3;
layerScroll.scrollTop = scrollingPosition;
timerID = setTimeout("scrollUp()", 40);
}

}

function scrollDown() {

var layerScroll = document.getElementById('expose_thumbs');

scrollingPosition = scrollingPosition + 3;
layerScroll.scrollTop = scrollingPosition;
timerID = setTimeout("scrollDown()", 40);

}