
var Gallery = new function() {
	
	this.ajax = null;
	this.galleryObj = null;
	this.incr = 0;
	this.containerDiv = null;
	this.bottomDiv = null;
	this.currDiv = null;
	this.newDiv = null;
	this.slideInterval = null;
	this.slideIncr = 490;
	this.slideDecr = -490;
	this.opacDecr = 100
	this.imageIndex = 0;
	this.picIndex = null;
	this.res = [];
	this.gallery_pos = 0; // indicates what gallery is currently shown
	this.previous_gallery_pos = null;
	this.numberOfGalleries = null;
	this.next_btn = null;
	this.prev_btn = null;
	this.opaqueCover = null;
	this.largeDiv = null;
	this.largeDiv_width = null;
	this.largeDiv_height = null;
	this.bottomDiv_image = null;
	this.bottomDiv_interval = null;
	this.leftPos = null;
	this.vertInterval = null;
	this.horizInterval = null;
	this.opacInterval = null;
	this.vertIncr = 145;
	this.horizIncr = 150;
	this.alpha = 0;
	this.vert_pos = 0;	
	this.largeImg = [];
	this.preloadInterval = null;
	this.dotSpan = null;
	this.msgSpan = null;
	this.objImage = null;
	this.onLoadInterval = null;
	this.objImage = null;
	this.backAct = null;
	this.frontAct = null;
		
	this.init = function() {
		
		var self = Gallery;
		
		if (!document.getElementById || !document.getElementsByTagName ){
			alert('Please download a newer browser version')
			return;
		}
		//global variables/////////////////////////////////////////////////	
		
		self.containerDiv = document.getElementById('containerDiv');
		self.dotSpan = document.createElement('span');
		self.msgSpan = document.createElement('span');		
		self.bottomDiv = document.getElementById('bottomDiv');
		self.bottomDiv_image = document.createElement('div');
		self.bottomDiv_image.id = 'bottomDiv_image';
		self.prev_image = document.createElement('div');
		self.prev_image.id = 'prev_image';
		self.next_image = document.createElement('div');
		self.next_image.id = 'next_image';
		self.close_btn = document.createElement('div');
		self.close_btn.id = 'close_btn';
		
		
		
		/////////////////////////////////////////////////////////////////
		self.loading_txt(self.containerDiv,'loading thumbnails');
		self.objImage = new Image();
		self.backAct = new Image();
		self.backAct.src = "images/back_act.gif";
		self.backAct.id =' backAct';
		self.frontAct = new Image();
		self.frontAct.src = "images/front_act.gif"
		self.frontAct.id ='frontAct';

		self.ajax = new Ajax();    		       
	    self.ajax.doGet('xml/gallery.xml', self.handleResp,'xml');
		
		
		
	};
	
	this.loading_txt = function(obj,msg){
		var self = Gallery;
		
		obj.appendChild(self.msgSpan);
		obj.appendChild(self.dotSpan);
		self.showStatusPrompt(msg);
		
		
	};
	
	this.addEvent = function (elm, evType, fn, useCapture) {
	  if (elm.addEventListener) {
		  elm.addEventListener(evType, fn, useCapture);
		  return true; 
	  }else if (elm.attachEvent) {
		  var r = elm.attachEvent('on' + evType, fn);
		  return r;
	  }else {
		  elm['on' + evType] = fn;
	  }
	};	
	
	
	this.handleResp = function(xmlObject){
		var self = Gallery;
		
		self.galleryObj = null;
		self.galleryObj = GalleryXMLParse.xml2ObjArray(xmlObject,'gallery');
		self.createGalleries();
	};
	
	this.createGalleries = function() {
		
		var self = Gallery;
		var gallery = [];
		var MAX_SIZE = 16;
		var index = 0;
		var gallery_num = 0;
		var pic_count = null;		
		var num_pic_lastGallery = null;		
		
		
		pic_count = self.galleryObj[0].length; //total number of pictures
		self.numberOfGalleries = Math.ceil(pic_count/MAX_SIZE); //total number of galleries of size 16
		num_pic_lastGallery = pic_count%MAX_SIZE ; // number of pics in last gallery
		
		//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		// allocate storage for object
		/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		for (var j = 0; j < self.numberOfGalleries; j++){
			gallery[j] = [];
			
			if((j+1) == self.numberOfGalleries){
				for (var k = 0; k < num_pic_lastGallery; k++){
					gallery[j][k] = [];
				}
			}else{
				for (var k = 0; k < MAX_SIZE; k++){
					gallery[j][k] = [];
				}
			}
		}
         //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		// input information to gallery[] from xml object 
		/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		for (var i = 0; i < self.galleryObj[0].length; i++){
			if(index < MAX_SIZE){
				gallery[gallery_num][index].thumb = new Image(100,80);
				gallery[gallery_num][index].thumb.src = self.galleryObj[0][i].thumb;
				gallery[gallery_num][index].large = self.galleryObj[0][i].large;
				self.objImage.src = self.galleryObj[0][i].thumb;
				index++;
				
				
			}else{
				index = 0;
				gallery_num++;
				gallery[gallery_num][index].thumb = new Image(100,80);
				gallery[gallery_num][index].thumb.src = self.galleryObj[0][i].thumb;
				gallery[gallery_num][index].large = self.galleryObj[0][i].large;
				self.objImage.src = self.galleryObj[0][i].thumb;
				index++;
				}
				
		}
		self.res = gallery;
		self.loadLargeImages();
		self.onLoadInterval = setInterval(self.startUp, 5);		
		
	};
	
	this.startUp = function(){
		var self = Gallery;
		var outerArray = self.res.length;
		var innerArray = self.res[outerArray-1].length;
		
		if (self.res[outerArray-1][innerArray-1].thumb.complete) {
			self.removeStatusPrompt();			
			while (self.containerDiv.firstChild) {
				self.containerDiv.removeChild(self.containerDiv.firstChild);
			}
			self.containerDiv.style.backgroundColor= '#333333';
			self.parseGalleries();			
			clearInterval(self.onLoadInterval);
		}		
	};
	
  
	
	
	this.parseGalleries = function(dir) {		
		var self = Gallery;
		
		var mainDiv = document.getElementById('mainDiv');
		var resultsDiv = null;
		var tbl = null;
		var tblBody = null;
		var thumbImg = null;
		var count = self.res[self.gallery_pos].length;
		var no_rows = Math.ceil(count/4);
		var index = 0;
		var MAX_CELLS = 4;
		self.imageIndex = self.gallery_pos*16;	
			
		resultsDiv = document.createElement('div');
		resultsDiv.id = 'resultsDiv';
		tbl = document.createElement("table");
        tblBody = document.createElement("tbody");
		
		for (var i = 0; i < no_rows; i++) {
			
			var row = document.createElement("tr");
			var j =0;
			
			while(index < count && j<MAX_CELLS) {
				var cell = document.createElement("td");
				//self.thumbImg = new Image(100,80);
				//self.thumbImg.src = self.res[self.gallery_pos][index].thumb.src;
				//self.thumbImg.id = self.imageIndex ;
				if(self.res[self.gallery_pos][index].thumb.id == ''){
					self.res[self.gallery_pos][index].thumb.id = self.imageIndex ;
					self.addEvent(self.res[self.gallery_pos][index].thumb, 'click', self.createProxyTarget, false);
				}
				cell.appendChild(self.res[self.gallery_pos][index].thumb);
				row.appendChild(cell);
				j++;
				index++;
				self.imageIndex++;
			}			
			tblBody.appendChild(row);			
		}
		tbl.appendChild(tblBody);
        resultsDiv.appendChild(tbl);
		
		if (!self.currDiv) {
			
			self.containerDiv.appendChild(resultsDiv);			
			self.currDiv = resultsDiv;
		    self.createDirectionBtns();
		}
		else {
		  self.newDiv = resultsDiv;
		  if(dir == 'leftSlide'){
			  self.slideLeftAndHide();
		  }else{
			  self.slideRightAndHide();
		  }
		}
		
		window.onresize = self.setHeightColumn();
		
	};
	
	this.loadLargeImages = function(){
		var self = Gallery;
		
		for (var i = 0; i < self.galleryObj[0].length; i++) {
			self.largeImg[i] = new Image();
			self.largeImg[i].src = self.galleryObj[0][i].large;
			self.largeImg[i].height = Math.ceil(self.galleryObj[0][i].height);
			self.largeImg[i].width = Math.ceil(self.galleryObj[0][i].width);
			
		}
	}
	
	
	this.nextFrame = function(){
		var self = Gallery;
		var direction = 'leftSlide';
		if(self.slideInterval == null){
			if(self.gallery_pos+1 < self.numberOfGalleries){
				self.previous_gallery_pos = self.gallery_pos;
				self.gallery_pos++;
				var gallery_index = document.getElementById('gallery_index');
				gallery_index.removeChild(gallery_index.firstChild);
				gallery_index.appendChild(document.createTextNode((self.gallery_pos+1) + '/'+ self.numberOfGalleries));
				self.parseGalleries(direction);
			}
		}
	};
	
	this.prevFrame = function(){
		var self = Gallery;
		var direction = 'rightSlide';
		if(self.slideInterval == null){
			if(self.gallery_pos > 0){
				self.previous_gallery_pos = self.gallery_pos;
				self.gallery_pos--;
				var gallery_index = document.getElementById('gallery_index');
				gallery_index.removeChild(gallery_index.firstChild);
				gallery_index.appendChild(document.createTextNode((self.gallery_pos+1) + '/'+ self.numberOfGalleries));
				self.parseGalleries(direction);
			}
		}
	};
		
	
	this.slideLeftAndHide = function(elem) {
		var self = Gallery;
		self.newDiv.style.left = '490px';
		self.containerDiv.appendChild(self.newDiv);		
		self.slideInterval = setInterval(self.doLeftSlide, 25);
	};
	
	this.doLeftSlide = function() {
		var self = Gallery;
		if (self.slideIncr > 0) {
			self.slideIncr -= 10;
			self.newDiv.style.left = self.slideIncr + 'px';
			self.currDiv.style.left = (self.slideIncr - 490) + 'px';
		}else {
			self.slideIncr = 490;
			self.containerDiv.removeChild(self.containerDiv.firstChild);
			self.currDiv = self.containerDiv.firstChild;
			clearInterval(self.slideInterval);
			self.slideInterval = null;
		}
	};
	
	this.slideRightAndHide = function(elem) {
		var self = Gallery;
		self.newDiv.style.left = '-490px';
		self.containerDiv.appendChild(self.newDiv);		
		self.slideInterval = setInterval(self.doRightSlide, 25);
		
	};
	
	this.doRightSlide = function() {
		var self = Gallery;
		if (self.slideDecr < 0) {
			self.slideDecr += 10;
			self.newDiv.style.left = self.slideDecr + 'px';
			self.currDiv.style.left = (self.slideDecr + 490) + 'px';
		}else {
			self.slideDecr = -490;
			self.containerDiv.removeChild(self.containerDiv.firstChild);
			self.currDiv = self.containerDiv.firstChild;
			clearInterval(self.slideInterval);
			self.slideInterval = null;
		}
	};
	
	
	
	this.createDirectionBtns = function(){		
		var self = Gallery;
		var tbl = document.createElement("table");
		var tblBody = document.createElement("tbody");
		var row = document.createElement("tr");
		
		var cell = document.createElement("td");
		self.prev_btn = document.createElement('a');
		self.prev_btn.className = 'prev_btn';
		self.prev_btn.appendChild(document.createTextNode('prev'));
		self.addEvent(self.prev_btn, 'click', self.prevFrame, false);
		cell.appendChild(self.prev_btn);
		row.appendChild(cell);
		
		var cell = document.createElement("td");
		gallery_index = document.createElement('font');
		gallery_index.id = 'gallery_index';
		gallery_index.appendChild(document.createTextNode((self.gallery_pos+1) + '/'+ self.numberOfGalleries));
		cell.appendChild(gallery_index);
		row.appendChild(cell);		
		
		var cell = document.createElement("td");
		self.next_btn = document.createElement('a');
		self.next_btn.className = 'next_btn';
		self.next_btn.appendChild(document.createTextNode('next'));
		self.addEvent(self.next_btn, 'click', self.nextFrame, false);
		cell.appendChild(self.next_btn);
		row.appendChild(cell);
		
		tblBody.appendChild(row);
		tbl.appendChild(tblBody);
        self.bottomDiv.appendChild(tbl);
		
	};
	
	this.nextImage = function(){
		
		var self = Gallery;			
		self.picIndex++;
		
		if (self.picIndex < self.galleryObj[0].length) {
			
			while (self.close_btn.firstChild) {
				self.close_btn.removeChild(self.close_btn.firstChild);
			}
			
			document.body.removeChild(self.close_btn);
			
			while (self.next_image.firstChild) {
				self.next_image.removeChild(self.next_image.firstChild);
			}
			
			document.body.removeChild(self.next_image);
			
			if ((parseInt(self.picIndex)-1) > 0) {
			
				while (self.prev_image.firstChild) {
					self.prev_image.removeChild(self.prev_image.firstChild);
				}
				
				document.body.removeChild(self.prev_image);
				
			}
			
			while (self.bottomDiv_image.firstChild) {
				self.bottomDiv_image.removeChild(self.bottomDiv_image.firstChild);
			}
			
			document.body.removeChild(self.bottomDiv_image);			
			
			
			while (self.largeDiv.firstChild) {
				self.largeDiv.removeChild(self.largeDiv.firstChild);
			}
			self.largeDiv.appendChild(self.msgSpan);
			self.largeDiv.appendChild(self.dotSpan);
			self.showStatusPrompt('loading image');
			
			self.slideAndGrow();
			
		}
		else {			
			self.picIndex--;
		}
	
	};
	
	this.prevImage = function(){
		
		var self = Gallery;		
		self.picIndex--;
		
		
		if (self.picIndex > -1) {
			
			while (self.close_btn.firstChild) {
				self.close_btn.removeChild(self.close_btn.firstChild);
			}
			
			document.body.removeChild(self.close_btn);
			
			if((parseInt(self.picIndex)+2) < self.galleryObj[0].length){ //only remove if arrow is present				
			
				while (self.next_image.firstChild) {
					self.next_image.removeChild(self.next_image.firstChild);
				}
				
				document.body.removeChild(self.next_image);
			}
				
			
			while (self.prev_image.firstChild) {
				self.prev_image.removeChild(self.prev_image.firstChild);
			}
			
			document.body.removeChild(self.prev_image);
			
			while (self.bottomDiv_image.firstChild) {
				self.bottomDiv_image.removeChild(self.bottomDiv_image.firstChild);
			}
			
			document.body.removeChild(self.bottomDiv_image);
			
			
			
			while (self.largeDiv.firstChild) {
				self.largeDiv.removeChild(self.largeDiv.firstChild);
			}
			self.largeDiv.appendChild(self.msgSpan);
			self.largeDiv.appendChild(self.dotSpan);
			self.showStatusPrompt('loading image');
			self.slideAndGrow();
			
		}
		else {			
			self.picIndex++;
		};

	};
	
	
	this.attachImage = function() {
		var self = Gallery;		
		
		self.loading_txt(self.largeDiv,'loading image');
		self.preloadInterval = setInterval(self.preloadImages,5);
		
			
	};
	
	this.preloadImages = function(){
		var self = Gallery;
		if(self.largeImg[self.picIndex].complete){
			self.removeStatusPrompt();
			while (self.largeDiv.firstChild) {
				self.largeDiv.removeChild(self.largeDiv.firstChild);
			}
			var imgDiv = null;
			imgDiv = document.createElement('div');
			imgDiv.id = 'imgDiv';
			imgDiv.appendChild(self.largeImg[self.picIndex]);
			self.largeDiv.appendChild(imgDiv);
			self.displayOpacity(self.largeDiv.firstChild.firstChild,0);
			self.opacInterval = setInterval(self.easeAlpha,50);
			clearInterval(self.preloadInterval);	
		}
	};
	
	this.removeStatusPrompt = function() {
		var self = Gallery;
		var dotSpan = self.dotSpan;
		var msgSpan = self.msgSpan;
		clearInterval(self.promptInterval);
		if (dotSpan.firstChild) {
			dotSpan.removeChild(dotSpan.firstChild);
		}
		if (msgSpan.firstChild) {
			msgSpan.removeChild(msgSpan.firstChild);
		}
	};
	
	
	
	this.setPrompt = function(msg) {
		var self = Gallery;
		if (self.msgSpan.firstChild) {
			self.msgSpan.removeChild(self.msgSpan.firstChild);
		}
		self.msgSpan.appendChild(document.createTextNode(msg));
	};
	
	this.showStatusPrompt = function(msg) {
		var self = Gallery;
		self.dots = '';
		self.setPrompt(msg);
		self.promptInterval = setInterval(self.showStatusDots, 200);
	};
	
	this.showStatusDots = function() {
    var self = Gallery;
    var dotSpan = self.dotSpan;
    self.dots += '.';
    if (self.dots.length > 4) {
      self.dots = '';
    }
    if (dotSpan.firstChild) {
      dotSpan.removeChild(dotSpan.firstChild);
    }
    dotSpan.appendChild(document.createTextNode(' ' + self.dots));
  };  
	
	this.createBottomDiv_image = function(){		
		var self = Gallery;
		
		var t = document.getElementById('largeDiv');	
		
		
		if (parseInt(self.picIndex) > 0) {
		
			self.prev_image.style.left = self.findPosX(t) + 'px';
			self.prev_image.style.top = (self.findPosY(t) + t.offsetHeight/2)-16 + 'px';
			self.prev_image.style.width = 32 + 'px';
			self.prev_image.style.height = 32 + 'px';
			
			
			var prev_btn = document.createElement('a');		
			prev_btn.appendChild(self.backAct);
			self.addEvent(prev_btn, 'mouseover', self.showImage, false);
			self.addEvent(prev_btn, 'mouseout', self.removeImage, false);
			self.addEvent(prev_btn, 'click', self.prevImage, false);
			self.prev_image.appendChild(prev_btn);
			
			document.body.appendChild(self.prev_image);
			self.displayOpacity(self.prev_image,0);
		
		
		}
		
		if ((parseInt(self.picIndex)+1) < self.galleryObj[0].length) {
		 
			self.next_image.style.left = (self.findPosX(t) + t.offsetWidth)-32 + 'px';
			self.next_image.style.top = (self.findPosY(t) + t.offsetHeight/2)-16 + 'px';
			self.next_image.style.width = 32 + 'px';
			self.next_image.style.height = 32 + 'px';			
			
			
			var next_btn = document.createElement('a');		
			next_btn.appendChild(self.frontAct);
			self.addEvent(next_btn, 'mouseover', self.showImage, false);
			self.addEvent(next_btn, 'mouseout', self.removeImage, false);
			self.addEvent(next_btn, 'click', self.nextImage, false);			
			self.next_image.appendChild(next_btn);
			document.body.appendChild(self.next_image);
			self.displayOpacity(self.next_image,0);
			
		}
		
		self.addEvent(self.largeDiv.firstChild.firstChild, 'mouseover', self.showImage, false);
		self.addEvent(self.largeDiv.firstChild.firstChild, 'mouseout', self.removeImage, false);
		
		self.bottomDiv_image.style.left = self.findPosX(t) + 'px';
        self.bottomDiv_image.style.top = (self.findPosY(t) + t.offsetHeight)-50 + 'px';
        self.bottomDiv_image.style.width = (t.offsetWidth) + 'px';
        self.bottomDiv_image.style.height = 30 + 'px';
		
		
		var tbl = document.createElement("table");
		var tblBody = document.createElement("tbody");
		var row = document.createElement("tr");
		
		
		
		
		var cell = document.createElement("td");
		image_index = document.createElement('font');
		image_index.appendChild(document.createTextNode('Image ' + (parseInt(self.picIndex)+1) + ' of '+ self.galleryObj[0].length));
		cell.appendChild(image_index);
		row.appendChild(cell);
		
		tblBody.appendChild(row);
		tbl.appendChild(tblBody);
        self.bottomDiv_image.appendChild(tbl);
		
		document.body.appendChild(self.bottomDiv_image);
		
		
		
		self.close_btn.style.left = (self.findPosX(t)+ t.offsetWidth)-57 + 'px';
        self.close_btn.style.top = (self.findPosY(t))-30 + 'px';
       // self.close_btn.style.width = (t.offsetWidth) + 'px';
        self.close_btn.style.height = 30 + 'px';
		
		var close_anchor = document.createElement('a');		
		//close_btn.id = 'close_btn';
		close_anchor.appendChild(document.createTextNode('CLOSE X'));
		self.addEvent(close_anchor, 'click', self.removeProxyTarget, false);
		self.close_btn.appendChild(close_anchor);
		document.body.appendChild(self.close_btn);	
		
		self.bottomDiv_interval = setInterval(self.doMoveDown, 50);	
		
	};
	
	this.showImage = function(e) {
		var self = Gallery;
		
		if (parseInt(self.picIndex) > 0){
			self.displayOpacity(self.prev_image,100);
		}
		if ((parseInt(self.picIndex)+1) < self.galleryObj[0].length) {
			self.displayOpacity(self.next_image,100);
		}
		
	}
	
	this.removeImage = function(e) {
		var self = Gallery;
		
		if (parseInt(self.picIndex) > 0){
			self.displayOpacity(self.prev_image,0);
		}
		if ((parseInt(self.picIndex)+1) < self.galleryObj[0].length) {
			self.displayOpacity(self.next_image,0);
		}
		
	}
	
	this.removeProxyTarget = function() {
		var self = Gallery;
		
		self.vertIncr = 145;
		self.horizIncr = 150;
		
		if (parseInt(self.picIndex) > 0) {
			
				while (self.prev_image.firstChild) {
					self.prev_image.removeChild(self.prev_image.firstChild);
				}
				
				document.body.removeChild(self.prev_image);
		}
				
			
		
		if ((parseInt(self.picIndex)+1) < self.galleryObj[0].length) { //only remove if arrow is present				
			
				while (self.next_image.firstChild) {
					self.next_image.removeChild(self.next_image.firstChild);
				}
				
				document.body.removeChild(self.next_image);
		}
			
		
		while (self.bottomDiv_image.firstChild) {
		  self.bottomDiv_image.removeChild(self.bottomDiv_image.firstChild);
		}
		
		while (self.close_btn.firstChild) {
				self.close_btn.removeChild(self.close_btn.firstChild);
		}
			
			
		document.body.removeChild(self.close_btn);
		document.body.removeChild(self.opaqueCover);
		document.body.removeChild(self.largeDiv);
		document.body.removeChild(self.bottomDiv_image);
		
	};
	
	this.easeAlpha = function(){
		
		var self = Gallery;	
		
		
		if (self.alpha < 100) {
				self.alpha += 10;				
				self.displayOpacity(self.largeDiv.firstChild.firstChild,self.alpha);
				
		}else {
			self.alpha = 0;
			clearInterval(self.opacInterval);
			self.opacInterval = null;
			self.createBottomDiv_image();
		}
	};
	
	
	this.createProxyTarget = function(e) {
		
		var el = window.event ? window.event.srcElement : e ? e.target : null;
		if (!el) return;
		
		var self = Gallery;
		self.picIndex = el.id;
		
		// create opaque cover
        self.opaqueCover = document.createElement('div'); //invisible cover
		var t = document.body;
        self.opaqueCover.className = 'opaqueCover';
        self.opaqueCover.style.left = self.findPosX(t) + 'px';
        self.opaqueCover.style.top = self.findPosY(t) + 'px';
        self.opaqueCover.style.width = t.offsetWidth + 'px';
        self.opaqueCover.style.height = (t.offsetHeight) + 'px';		
		document.body.appendChild(self.opaqueCover);
		//end opaque cover
		// find win width and height
		if( typeof( window.innerWidth ) == 'number' ) {
			//Non-IE
			winWidth = window.innerWidth;
			winHeight = window.innerHeight;
		}else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
			//IE 6+ in 'standards compliant mode'
			winWidth = document.documentElement.clientWidth;
			winHeight = document.documentElement.clientHeight;
		}else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
			//IE 4 compatible
			winWidth = document.body.clientWidth;
			winHeight = document.body.clientHeight;
		}

		
		self.largeDiv = document.createElement('div');
		self.largeDiv.id = 'largeDiv';
		
		self.leftPos = winWidth/2 - 125/2; 
		self.largeDiv.style.left = self.leftPos + 'px';
        self.largeDiv.style.top = 150 + 'px';
		self.largeDiv.style.width = self.horizIncr + 'px';
		self.largeDiv.style.height = self.vertIncr + 'px';
		document.body.appendChild(self.largeDiv);
		self.slideAndGrow();
		
		
	};
	
	
	this.doMoveDown = function(){
		
		var self = Gallery;
		var t = document.getElementById('bottomDiv_image');
		var q = document.getElementById('largeDiv')
		var init_pos = self.findPosY(t);
		var final_pos = self.findPosY(q) + q.offsetHeight;
		
		if (init_pos < final_pos) {				
				t.style.top = (self.findPosY(t) + 5) + 'px';
				
		}else {			
			clearInterval(self.bottomDiv_interval);
			
		}
		
	};
	
	this.slideAndGrow = function() {
		var self = Gallery;
		
		self.largeDiv_height = Math.ceil(self.galleryObj[0][self.picIndex].height);
		self.largeDiv_width = Math.ceil(self.galleryObj[0][self.picIndex].width);
		
		if (self.vertIncr < self.largeDiv_height) {
			self.vertInterval = setInterval(self.doExpandMoreVertical, 10);
			
		}else{
			self.vertInterval = setInterval(self.doExpandLessVertical, 10);
			
		}
	};
	
	this.doExpandMoreVertical = function() {
		
		var self = Gallery;
		
		 if (self.vertIncr < self.largeDiv_height) {
			 if(self.largeDiv_height-self.vertIncr <10){
				self.vertIncr += self.largeDiv_height-self.vertIncr;
				self.largeDiv.style.height = self.vertIncr + 'px';
			 }else{
				 self.vertIncr += 10;
				self.largeDiv.style.height = self.vertIncr + 'px';
			 }
				
		}else {
			clearInterval(self.vertInterval);
			if (self.horizIncr < self.largeDiv_width){
				self.horizInterval = setInterval(self.doExpandMoreHorizontal, 10);
				
			}else{
				self.horizInterval = setInterval(self.doExpandLessHorizontal, 10);
				
			}
		}
	};
	this.doExpandLessVertical = function() {
		
		var self = Gallery;		
		
		 if (self.vertIncr > self.largeDiv_height){
			 if(self.vertIncr - self.largeDiv_height <10){
				self.vertIncr -= self.vertIncr - self.largeDiv_height;
				self.largeDiv.style.height = self.vertIncr + 'px';
			 }else{
				 self.vertIncr -= 10;
				self.largeDiv.style.height = self.vertIncr + 'px';
			 }
				
		}else {
			clearInterval(self.vertInterval);
			if (self.horizIncr < self.largeDiv_width){
				
				self.horizInterval = setInterval(self.doExpandMoreHorizontal, 10);
				
			}else{
				self.horizInterval = setInterval(self.doExpandLessHorizontal,10);
				
			}
		}
	};
	
	
	this.doExpandMoreHorizontal = function() {
		
		var self = Gallery;		
		
		 if (self.horizIncr < self.largeDiv_width) {
			 if(self.largeDiv_width - self.horizIncr  <10){
				 self.horizIncr += self.largeDiv_width - self.horizIncr;
				 //self.leftPos -=5;
				 self.largeDiv.style.width = self.horizIncr + 'px';
				 self.largeDiv.style.left = (self.leftPos) + 'px';
			 }else{
				 self.horizIncr +=10 ;
				 self.leftPos -=5;
				 self.largeDiv.style.width = self.horizIncr + 'px';
				 self.largeDiv.style.left = (self.leftPos) + 'px';
			 }
				
		}else {
			clearInterval(self.horizInterval);	
			self.attachImage();
		}
	};
	this.doExpandLessHorizontal = function() {
		
		var self = Gallery;		
		
		if(self.horizIncr > self.largeDiv_width){
			if(self.horizIncr - self.largeDiv_width <10){
				self.horizIncr -= self.horizIncr - self.largeDiv_width;
				//self.leftPos +=5;
				self.largeDiv.style.width = self.horizIncr + 'px';
				self.largeDiv.style.left = (self.leftPos) + 'px';		
			}else{
				self.horizIncr -= 10;
				self.leftPos +=5;
				self.largeDiv.style.width = self.horizIncr + 'px';
				self.largeDiv.style.left = (self.leftPos) + 'px';	
			}
		}else {
			clearInterval(self.horizInterval);	
			self.attachImage();
		}
	};
	
	this.displayOpacity = function(obj,currOpacity) {
		var self = Gallery;
		var decOpac = currOpacity / 100;
		
		if (document.all && typeof window.opera == 'undefined') {
		obj.filters.alpha.opacity = currOpacity;
		} else {
			obj.style.MozOpacity = decOpac;
		}
		obj.style.opacity = decOpac;
	};
	
	
	this.findPosX = function(obj) {
    var curLeft = 0;
    if (obj.offsetParent) {
      do {
        curLeft += obj.offsetLeft;
      } while (obj = obj.offsetParent);
    }
    else if (obj.x) {
      curLeft += obj.x;
    }
    return curLeft;
  };
  
  this.findPosY = function(obj) {
    var curTop = 0;
    if (obj.offsetParent) {
      do {
        curTop += obj.offsetTop;
      } while (obj = obj.offsetParent);
    }
    else if (obj.y) {
      curTop += obj.y;
    }
    return curTop;
  };
	
	this.setHeightColumn = function() {
	  var self = Gallery;
	  var elm = document.getElementById('main_body');	  
	  elm.style.height = 'auto';
	  var x = elm.offsetHeight;	  
	  elm.style.height = x + "px"; 
	};
};
  
 window.onload = Gallery.init;