
// ImageGallery ------------------------------------------------------------

function ImageGallery()
{
	this.uid;
	this.files = new Array();
	this.thumb_dimension = new Array();
	this.image_dimension = new Array();
	this.pixPerLine;
	this.pixPerPage;
	this.parentWidth;
	this.pageSwitcher;
	this.numberOfImages;
	this.numberOfLines;
	this.numberOfPages;
	this.imageText;
	
	this.activePage = 1;
}

// imageGallery_preloader ------------------------------------------------------------

function imageGallery_preloader(container,action)
{
	var preloader = container.preloader;
	switch(action)
	{
		case "start":
			preloader.pos = 0;
			preloader.step = 31;
			preloader.frames = 24;
			preloader.style.display = "block";
			
			preloader.style.left = (container.offsetWidth / 2) - (preloader.offsetWidth / 2) + "px";
			preloader.style.top = (container.offsetHeight / 2) - (preloader.offsetHeight / 2) + "px";
			
			preloader.animation = window.setInterval(function() {
				if(preloader.pos == (preloader.frames * preloader.step)) { preloader.pos = 0; }
				else { preloader.pos = preloader.pos + preloader.step; }
				preloader.style.backgroundPosition = (preloader.pos*-1) + "px 0px"; 
			},10);
		break;
		case "stop":
			window.clearInterval(preloader.animation);
			preloader.style.display = "none";
		break;
	}
}

// imageGallery_loadNextPage ------------------------------------------------------------

function imageGallery_loadNextPage(gallery,pageID)
{
	var stepButton = $('imageGallery_stepButton_' + gallery.uid + '_' + gallery.activePage);
	stepButton.removeClass("imageGallery_activeStepButton");
	
	switch(pageID)
	{
		case "+":
			if(gallery.activePage == gallery.numberOfPages) {
				gallery.activePage = 1;
			} else {
				gallery.activePage++;
			}
		break;
		case "-":
			if(gallery.activePage == 1) {
				gallery.activePage = gallery.numberOfPages;
			} else {
				gallery.activePage--;
			}
		break;
		default: gallery.activePage = pageID; break;
	}
	var stepButton = $('imageGallery_stepButton_' + gallery.uid + '_' + gallery.activePage);
	stepButton.addClass("imageGallery_activeStepButton");
	
	var startID = (gallery.activePage-1) * gallery.pixPerPage;
	for(i=0;i<gallery.pixPerPage;i++)
	{
		var container = $('gallery_thumb_container_'+gallery.uid+'_'+i);
		var img = $('imageGallery_thumb_'+gallery.uid+'_'+i);
		img.style.visibility = "hidden";
		img.imgID = startID+i;
		img.imageText = ($('imageGallery_text_'+gallery.uid+'_'+i)) ? $('imageGallery_text_'+gallery.uid+'_'+i) : false;
		
		if((startID+i+1) > gallery.files.length)
		{
			container.style.visibility = "hidden";
			if(img.imageText) { img.imageText.style.display = "none"; }
			continue;
		}
		container.style.visibility = "visible";
		
		if(img.imageText) {
			img.imageText.style.display = "none";
			img.imageText.innerHTML = "";
		}
		img.onclick = function() {
			imageGallery_zoomImage(gallery,this.imgID);
		}
		img.onload = function() {
			this.style.visibility = "visible";
			if(this.imageText) {
				this.imageText.innerHTML = gallery.files[this.imgID]['imageText'];
				this.imageText.style.display = "block";
			}
		}
		img.src = gallery.files[(startID+i)]['thumb_url'];
	}
}

// imageGallery_zoomImage ------------------------------------------------------------

function imageGallery_zoomImage(gallery,id)
{
	var container = imageGallery_get_ImageContaier(gallery);
	container.activeImage = id;
	
	container.style.width = gallery.image_dimension['w'] + "px";
	container.style.height = gallery.image_dimension['h'] + "px";
	
	container.image.style.display = "none";
	
	container.image.onload = function() {
		imageGallery_preloader(container,"stop");
		this.style.display = "block";
	}
	
	container.btNext.onclick = function()
	{
		container.image.style.display = "none";
		imageGallery_preloader(container,"start");
		if((container.activeImage+1) == gallery.files.length)
		{
			container.activeImage = 0;
		} else {
			container.activeImage++;
		}
		container.image.src = gallery.files[container.activeImage].image_url;
	}
	
	container.btPrev.onclick = function() {
		container.image.style.display = "none";
		imageGallery_preloader(container,"start");
		if((container.activeImage) == 0) {
			container.activeImage = gallery.files.length-1;
		} else {
			container.activeImage--;
		}
		container.image.src = gallery.files[container.activeImage].image_url;
	}
	
	container.image.onclick = container.btNext.onclick;
	
	overlay.show(container);
	center(container);
	imageGallery_preloader(container,"start");
	
	container.image.src = gallery.files[id].image_url;
	
}

// imageGallery_get_ImageContaier ------------------------------------------------------------

function imageGallery_get_ImageContaier(gallery)
{
	if($('imageGallery_image_container')) {
		return $('imageGallery_image_container');
	}
	
	var bdy = document.getElementsByTagName("body")[0];
	bdy = $(bdy);
	
	var container = document.createElement('div');
		container.id = 'imageGallery_image_container';
		container.activeImage = 0;
		
	var btClose = document.createElement('div');
		btClose.id="imageGallery_btClose";
		btClose.innerHTML = "x";
		btClose.onclick = function() { overlay.hide(); }
	
	var image = document.createElement('img');
		image.id="imageGallery_image";
		image.border="";
		image.alt="";
	
	var preloader = document.createElement('div');
		preloader.id = "imageGallery_preloader";
		preloader.className = "pngFix";
	
	var btNext = document.createElement('div');
	var btPrev = document.createElement('div');

	if(gallery.numberOfImages > 1){
		btNext.id = "imageGallery_btNext";
		btPrev.id = "imageGallery_btPrev";
		btNext.innerHTML ="&raquo;";
		btPrev.innerHTML = "&laquo;";
	} 
	
	container.image = image;
	container.btNext = btNext;
	container.btPrev = btPrev;
	container.btClose = btClose;
	container.preloader = preloader;
	
	bdy.appendChild(container);
	
	container.appendChild(btClose);
	container.appendChild(preloader);
	container.appendChild(image);
	container.appendChild(btNext);
	container.appendChild(btPrev);
	return container;
}

// imageGallery_set_hoverFX ------------------------------------------------------------

function imageGallery_set_hoverFX(img)
{
	$(img).onmouseover = function() { this.setOpacity(0.8); }
	$(img).onmouseout = function() { this.setOpacity(1); }
	$(img).onmouseover();
}

// imageGallery_popUp ------------------------------------------------------------

function imageGallery_popUp(gallery,id)
{
	var img		= gallery.files[id];
	var width	= gallery.image_dimension['w'] + 20;
	var height	= gallery.image_dimension['h'] + 20;
	
	window.open(img.image_url, "imageGallery", "width="+width+",height="+height+",left=100,top=200");
}
