/*==============================================================================
Name: 		Gallery Engine 
Version: 	1.0
Author:		Martin Donchev
Created: 	November 19, 2007
================================================================================
Copyright (c) 2007 Martin Donchev
==============================================================================*/


function Gallery(GalleryDOMName, BigImageElement, BigImageTextElement,SmallImagesElement,ImagesPerPage,ThumbnailStyle,PrevLinkElement,NextLinkElement) {
	
	this.ImagesListing = new Array();
	this.ImagesListing.length=0;
	
	this.CurrentImageNumber=0;
	
	this.GalleryDOMName=GalleryDOMName;
	this.BigImageElement=BigImageElement;
	this.BigImageTextElement=BigImageTextElement;
	this.SmallImagesElement=SmallImagesElement;
	this.ImagesPerPage=ImagesPerPage;
	this.PrevLinkElement=PrevLinkElement;
	this.NextLinkElement=NextLinkElement;
	
	// Styles
	this.ThumbnailStyle=ThumbnailStyle;

	
	// Some Initial Variables
	this.ThumbnailTemplate="<div class='"+this.ThumbnailStyle+"'><img style='width:inherit; height:inherit;' src='{template_thumbnail_thumb}' alt='{template_thumbnail_alt}' title='{template_thumbnail_title}' onclick='{GalleryDOMName}.LoadImage({template_thumbnail_number});'></div>";
	
	// Add to Gallery
	this.AddToGallery = function(image_path,image_thumb,image_alt,image_description) {
		
		//alert("AddToGallery("+image_path+","+image_thumb+","+image_alt+","+image_description+")");
		var CurrentImageObject=new Object;
		CurrentImageObject.path=image_path;
		CurrentImageObject.thumb=image_thumb;
		CurrentImageObject.alt=image_alt;
		CurrentImageObject.description=image_description;
		
		this.ImagesListing.push(CurrentImageObject);
		
	}
	
	this.LoadImage = function (image_number) {

		this.CurrentImageNumber=image_number;
		// Loading the image
		document.getElementById(this.BigImageElement).src=this.ImagesListing[image_number].path;
		// Setting the text
		document.getElementById(this.BigImageTextElement).innerHTML=this.ImagesListing[image_number].description;
		
	}
	
	this.Build = function (start_page) {

		// Put the First Big Image only if its page=0 and there is no jpg file loaded there
		if ((start_page==0) && (document.getElementById(this.BigImageElement).src.indexOf(".jpg")==-1)) {
			
			// Load the first image
			document.getElementById(this.BigImageElement).src=this.ImagesListing[0].path;
		
			// The Text of the First Big Image
			document.getElementById(this.BigImageTextElement).innerHTML=this.ImagesListing[0].description;
		}
			
		// The Thumbnails Cycle
		ThumnailsString="";
		start_position=start_page*this.ImagesPerPage;
		end_position=(start_page+1)*this.ImagesPerPage;
		if (end_position>this.ImagesListing.length) {end_position=this.ImagesListing.length;}
		
		for (r=start_position; r<end_position; r++) {
			
			newImageString=this.ThumbnailTemplate.replace("{template_thumbnail_thumb}",this.ImagesListing[r].thumb);
			newImageString=newImageString.replace("{template_thumbnail_alt}",this.ImagesListing[r].alt);
			newImageString=newImageString.replace("{template_thumbnail_title}",this.ImagesListing[r].alt);
			newImageString=newImageString.replace("{template_thumbnail_path}",this.ImagesListing[r].path);
			newImageString=newImageString.replace("{template_thumbnail_number}",r);
			newImageString=newImageString.replace("{template_gallery_bigimage_element}",this.BigImageElement);
			newImageString=newImageString.replace("{template_gallery_bigimagetext_element}",this.BigImageTextElement);
			newImageString=newImageString.replace("{GalleryDOMName}",this.GalleryDOMName);
			
			
			ThumnailsString=ThumnailsString+newImageString;
			
		}
	
		document.getElementById(this.SmallImagesElement).innerHTML=ThumnailsString;
		
		// The Bottom Links
		if ((start_page+1)*this.ImagesPerPage>=this.ImagesListing.length) {
			// Niamame poweche stranici
			document.getElementById(this.NextLinkElement).removeAttribute('href'); 
		} else {
			document.getElementById(this.NextLinkElement).href="javascript:"+this.GalleryDOMName+".Build("+(start_page+1)+");";
		}
		
		
		if ((start_page-1)*this.ImagesPerPage<0) {
			// Niamame poweche stranici
			document.getElementById(this.PrevLinkElement).removeAttribute('href'); 
		} else {
			document.getElementById(this.PrevLinkElement).href="javascript:"+this.GalleryDOMName+".Build("+(start_page-1)+");";
		}
		
		
		
		
	}
	
	
} 


