//
// ZEN POPUP GALLERY 1.1
// Written by Blain Hosford
// Copyright 2010, ZenWebware
// www.zenwebware.com
//
// REQUIRES
// zen_library.js
// image_rollovers.js
//

var zen_popup_gallery = null;


function Zen_Popup_Gallery() {
	this.images = [];
	this.image_index = 0;
}


function zen_popup_gallery_add_image(url, title, description) {
	if(!title) title = "";
	if(!description) description = "";
	var image = [];
	image['url'] = url;
	image['title'] = title;
	image['description'] = description;
	this.images[this.images.length] = image;
}


function zen_popup_gallery_fetch_image_index(url) {
	for(var i = 0; i < this.images.length; i++) {
		if(this.images[i]['url'] == url) {
			return i;
		}
	}
}


function zen_popup_gallery_open(url) {	
	zen_popup_gallery = this;
	var image_element = new Image();
	
	image_element.onload = function() {
		//
		// Set image size.
		//
		if(image_element.height > f_clientHeight() - 250) {
			var aspect_ratio = image_element.width / image_element.height;
			image_element.height = f_clientHeight() - 250;
			image_element.width = image_element.height * aspect_ratio;
		}
	
		//
		// Setup shade.
		//
		var shade_element = document.getElementById("zen_popup_gallery_shade");
		shade_element.style.width = "100%";
		shade_element.style.height = page_height() + "px";

		//
		// Setup popup window.
		//
		var popup_element = document.getElementById("zen_popup_gallery");	
		popup_element.style.left = (f_clientWidth() - image_element.width) / 2 + "px";
		popup_element.style.top = f_scrollTop() + 50 + "px";
	
		//
		// Attach loaded image.
		//
		var image_wrapper_element = document.getElementById("zen_popup_gallery_image_wrapper");
		if(image_wrapper_element.hasChildNodes()) {
			image_wrapper_element.removeChild(image_wrapper_element.firstChild);
		}
		image_wrapper_element.appendChild(image_element);	

		//
		// Fetch extra image data.
		//
		zen_popup_gallery.image_index = zen_popup_gallery.fetch_image_index(url);
		var image = zen_popup_gallery.images[zen_popup_gallery.image_index];
	
		//
		// Set title.
		//
		if(image['title'] != "") {
			show_layer("zen_popup_gallery_title");
			var title_element = document.getElementById("zen_popup_gallery_title");
			title_element.style.width = image_element.width + "px";
			title_element.innerHTML = image['title'];
		} else {
			hide_layer("zen_popup_gallery_title");
		}

		//
		// Set description.
		//
		if(image['description'] != "") {
			show_layer("zen_popup_gallery_description");
			var description_element = document.getElementById("zen_popup_gallery_description");
			description_element.style.width = image_element.width + "px";
			description_element.innerHTML = image['description'];
		} else {
			hide_layer("zen_popup_gallery_description");
		}
	
		//
		// Set status.
		//
		if(zen_popup_gallery.images.length > 1) {
			show_layer("zen_popup_gallery_status");
			show_layer("zen_popup_gallery_previous_button");
			show_layer("zen_popup_gallery_next_button");
			var status_element = document.getElementById("zen_popup_gallery_status");
			status_element.innerHTML = (zen_popup_gallery.image_index + 1) + " of " + zen_popup_gallery.images.length;
		} else {
			hide_layer("zen_popup_gallery_status");
			hide_layer("zen_popup_gallery_previous_button");
			hide_layer("zen_popup_gallery_next_button");
		}
	
		//
		// Show shade and popup window.
		//
		show_layer("zen_popup_gallery_shade");
		show_layer("zen_popup_gallery");
	}
	
	image_element.src = url;
}


function zen_popup_gallery_close() {
	hide_layer("zen_popup_gallery");
	hide_layer("zen_popup_gallery_shade");
}


function zen_popup_gallery_next() {
	if(zen_popup_gallery.image_index == zen_popup_gallery.images.length - 1) {
		zen_popup_gallery.image_index = 0;
	} else {
		zen_popup_gallery.image_index++;
	}
	zen_popup_gallery.open(zen_popup_gallery.images[zen_popup_gallery.image_index]['url']);
}


function zen_popup_gallery_previous() {
	if(zen_popup_gallery.image_index == 0) {
		zen_popup_gallery.image_index = zen_popup_gallery.images.length - 1;
	} else {
		zen_popup_gallery.image_index--;
	}
	zen_popup_gallery.open(zen_popup_gallery.images[zen_popup_gallery.image_index]['url']);
}


Zen_Popup_Gallery.prototype.add_image = zen_popup_gallery_add_image;
Zen_Popup_Gallery.prototype.fetch_image_index = zen_popup_gallery_fetch_image_index;
Zen_Popup_Gallery.prototype.open = zen_popup_gallery_open;
