ticked = 0;
hideMe = true;
slider_ticked = 0;
current_pic = 0;
animation_lock = false;
current_page = 0;
first_load = true;
pics_array = new Array();
slide_show = false;
caption_array = false;

//Options
on_pic_captions = true;
under_pic_captions = true;
f_and_b_icons = true;
page_number = true;
pics_per_page = 24;
output_pics = true;

function addEvent(obj, evType, fn)
{
 if (obj.addEventListener){ obj.addEventListener(evType, fn, false); return true; }
 else if (obj.attachEvent){ var r = obj.attachEvent("on"+evType, fn); return r; } else { return false; }
}

function view_pic(pic_index)
{
	current_pic = eval(pic_index);
	screenImage = new Image();
	screenImage.src = pics_array[current_pic];
	nextShot = new Image();
	nextShot.src = (pics_array[current_pic+1]) ? pics_array[current_pic+1] : pics_array[0];
	prevShot = new Image();
	prevShot.src = (pics_array[current_pic-1]) ? pics_array[current_pic-1] : pics_array[pics_array.length-1];

	if(!document.getElementById("dumpster"))
	{
		closeGifElement = document.createElement("div");
		closeGifElement.onclick = function(){ this.style.backgroundPosition = "0 top"; setHide(true); hideScreenie()};
		closeGifElement.onmouseover = function(){ this.style.backgroundPosition = "0 bottom"; };
		closeGifElement.onmouseout = function(){ this.style.backgroundPosition = "0 top"; };
		closeGifElement.className = "closeDivStyle";

		if(f_and_b_icons)
		{
			backGifElement = document.createElement("div");
			backGifElement.onclick = function(){prevScreenshot()};
			backGifElement.onmouseover = function(){ this.style.backgroundPosition = "0 bottom"; };
			backGifElement.onmouseout = function(){ this.style.backgroundPosition = "0 top"; };
			backGifElement.className = "backGifStyle";

			fwdGifElement = document.createElement("div");
			fwdGifElement.onclick = function(){nextScreenshot()};
			fwdGifElement.onmouseover = function(){ this.style.backgroundPosition = "0 bottom"; };
			fwdGifElement.onmouseout = function(){ this.style.backgroundPosition = "0 top"; };
			fwdGifElement.className = "fwdGifStyle";
		}

		screenie2Element = document.createElement("div");
		screenie2Element.id = "Screenie2";
		screenie2Element.className = "screenie2Style";
		screenie2Element.onclick = function(){nextScreenshot()};

		screenieElement = document.createElement("div");
		screenieElement.id = "Screenie";
		screenieElement.className = "screenieStyle";
		screenieElement.onmouseover = function(){setHide(false)};
		screenieElement.onmouseout = function(){setHide(true);};

		screenieElement.appendChild(closeGifElement);
		if(f_and_b_icons)
		{
			screenieElement.appendChild(fwdGifElement);
			screenieElement.appendChild(backGifElement);
		}
		screenieElement.appendChild(screenie2Element);

		if(on_pic_captions)
		{
			captionElement = document.createElement("div");
			captionElement.id = "captionHolder";
			captionElement.className = "captionStyle";
			screenieElement.appendChild(captionElement);
		}

		centerElement = document.createElement("center");
		centerElement.appendChild(screenieElement);

		pictureFrameElement = document.createElement("div");
		pictureFrameElement.id = "pictureFrame";
		pictureFrameElement.className = "pictureFrameStyle";
		pictureFrameElement.onclick = function(){hideScreenie()};
		pictureFrameElement.appendChild(centerElement);

		c0verElement = document.createElement("div");
		c0verElement.id = "c0ver";
		c0verElement.className = "c0verStyle";
		c0verElement.onclick = function(){hideScreenie()};

		redBlockElement = document.createElement("div");
		redBlockElement.id = "redBlock";
		redBlockElement.appendChild(c0verElement);
		redBlockElement.appendChild(pictureFrameElement);

		dumpsterElement = document.createElement("div");
		dumpsterElement.id = "dumpster";
		dumpsterElement.className = "dumpsterStyle";
		dumpsterElement.appendChild(redBlockElement);

		document.getElementsByTagName("body")[0].appendChild(dumpsterElement);
		addEvent(window, 'resize', adjustBackgroundStuff);
	}
	loadScreenshot(current_pic);
	document.getElementsByTagName("body")[0].appendChild(document.getElementById("redBlock"));
}

function loadScreenshot(pic_index)
{
	adjustBackgroundStuff();
  if(screenImage.complete && !animation_lock)
	{
		document.getElementById("Screenie").style.height = screenImage.height + "px";
		document.getElementById("Screenie").style.width = "1px";
		document.getElementById("Screenie").style.backgroundImage = "url('"+screenImage.src+"')";
		animation_lock = true;
		startTheAnimation = window.setInterval("resizeScreenshot()",10);
	}
	else { window.setTimeout("loadScreenshot('"+pic_index+"')",250); }
}


function resizeScreenshot()
{
	targwidth =  screenImage.width;
	targwidth = (!targwidth % 2)?targwidth--:targwidth
	if (ticked >= 210)
	{
		ticked = 0;
		animation_lock = false;
    	window.clearInterval(startTheAnimation);

    	if(on_pic_captions)
		{
			if(caption_array && caption_array[current_pic] != null)
			{
				current_caption = current_pic;
				document.getElementById("captionHolder").innerHTML = caption_array[current_caption];
				document.getElementById("captionHolder").className = "captionStyleOn";
			}
			else
			{
				document.getElementById("captionHolder").className = "captionStyleOff";
			}
		}
	}
	else
	{
		document.getElementById("Screenie").style.width = (targwidth*ticked/200) + "px";
		ticked += 10;
	}
}

function adjustBackgroundStuff()
{
	windowHeight = (window.innerHeight) ? window.innerHeight : document.body.clientHeight;
	windowWidth = (window.innerWidth) ? window.innerWidth : document.body.clientHeight;
	document.getElementById("c0ver").style.width = document.body.scrollWidth + "px";
	document.getElementById("c0ver").style.height = document.body.scrollHeight + "px";
	document.getElementById("pictureFrame").style.top = document.body.scrollTop + 10 + "px";

}

function setHide(thisValue) { hideMe = thisValue; }

function hideScreenie()
{
	if (hideMe)
	{
		document.getElementById("Screenie").style.width = "1px";
		document.getElementById("Screenie").style.height = "1px";
		document.getElementById("dumpster").appendChild(document.getElementById("redBlock"));
	}
}

function prevScreenshot()
{
	if(!animation_lock)
	{
		if(f_and_b_icons)
		{
			backGifElement.style.backgroundPosition = "0 bottom";
			fwdGifElement.style.backgroundPosition = "0 top";
		}
		slideShowResizerPrev();
	}
}

function nextScreenshot()
{
	if(!animation_lock)
	{
		if(f_and_b_icons)
		{
			backGifElement.style.backgroundPosition = "0 top";
			fwdGifElement.style.backgroundPosition = "0 bottom";
		}
		slideShowResizer();
	}
}

function resizeNewScreenshot()
{
	if (slider_ticked >= 160)
  {
    	window.clearInterval(startTheResizer);
    	if(on_pic_captions)
		{
			if(caption_array && caption_array[current_pic] != null)
			{
				current_caption = current_pic;
				document.getElementById("captionHolder").innerHTML = caption_array[current_caption];
				document.getElementById("captionHolder").className = "captionStyleOn";
			}
			else
			{
				document.getElementById("captionHolder").className = "captionStyleOff";
			}
		}
		document.getElementById("Screenie").style.backgroundImage = "url('"+pics_array[current_pic]+"')";
		document.getElementById("Screenie2").style.opacity = 0;
		document.getElementById("Screenie2").style.filter = "alpha(opacity=0)";
		slider_ticked = 0;
		animation_lock = false;
		delete prevShot;
		prevShot = screenImage;
		delete screenImage;
		screenImage = nextShot;
		delete nextShot;
		nextShot = new Image();
		nextShot.src = (pics_array[current_pic+1]) ? pics_array[current_pic+1] : pics_array[0];
	}
	else
	{
		document.getElementById("Screenie2").style.opacity = slider_ticked/150;
		document.getElementById("Screenie2").style.filter = "alpha(opacity="+(slider_ticked/150)*100+")"; //;
		document.getElementById("Screenie").style.width = (screenImage.width+(deltaX*slider_ticked/150)) + "px";
		document.getElementById("Screenie").style.height = (screenImage.height+(deltaY*slider_ticked/150)) + "px";
		slider_ticked += 10;
	}
}

function resizeNewScreenshotPrev()
{
	if (slider_ticked >= 160)
	{
		window.clearInterval(startTheResizerPrev);
		if(on_pic_captions)
		{
			if(caption_array && caption_array[current_pic] != null)
			{
				current_caption = current_pic;
				document.getElementById("captionHolder").innerHTML = caption_array[current_caption];
				document.getElementById("captionHolder").className = "captionStyleOn";
			}
			else
			{
				document.getElementById("captionHolder").className = "captionStyleOff";
			}
		}
		document.getElementById("Screenie").style.backgroundImage = "url('"+pics_array[current_pic]+"')";
		document.getElementById("Screenie2").style.opacity = 0;
		document.getElementById("Screenie2").style.filter = "alpha(opacity=0)";
		slider_ticked = 0;
		animation_lock = false;
		delete nextShot;
		nextShot = screenImage;
		delete screenImage;
		screenImage = prevShot;
		delete prevShot;
		prevShot = new Image();
		prevShot.src = (pics_array[current_pic-1]) ? pics_array[current_pic-1] : pics_array[pics_array.length-1];
	}
	else
	{
		document.getElementById("Screenie2").style.opacity = slider_ticked/150;
		document.getElementById("Screenie2").style.filter = "alpha(opacity="+(slider_ticked/150)*100+")"; //;
		document.getElementById("Screenie").style.width = (screenImage.width+(deltaX*slider_ticked/150)) + "px";
		document.getElementById("Screenie").style.height = (screenImage.height+(deltaY*slider_ticked/150)) + "px";
		slider_ticked += 10;
	}
}

function slideShowResizer()
{
	animation_lock = true;
	if(nextShot.complete)
	{
		document.getElementById("Screenie").style.cursor = "default";
		current_pic = (pics_array[current_pic+1]) ? current_pic+1 : 0;
		document.getElementById("Screenie2").style.backgroundImage = "url('"+nextShot.src+"')";
		deltaY = nextShot.height - screenImage.height;
		deltaX = nextShot.width - screenImage.width;
		screenie2Element.onclick = function(){nextScreenshot()};
		startTheResizer = window.setInterval("resizeNewScreenshot()",10);
		if(current_pic%12 == 0) galleryNext();
	}
	else
	{
		document.getElementById("Screenie").style.cursor = "wait";
		window.setTimeout("slideShowResizer()",250);
	}
}

function slideShowResizerPrev()
{
	animation_lock = true;
	if(prevShot.complete)
	{
		if(current_pic%12 == 0) galleryPrev();
		document.getElementById("Screenie").style.cursor = "default";
		current_pic = (pics_array[current_pic-1]) ? current_pic-1 : pics_array.length-1;
		document.getElementById("Screenie2").style.backgroundImage = "url('"+prevShot.src+"')";
		deltaY = prevShot.height - screenImage.height;
		deltaX = prevShot.width - screenImage.width;
		screenie2Element.onclick = function(){prevScreenshot()};
		startTheResizerPrev = window.setInterval("resizeNewScreenshotPrev()",10);
	}
	else
	{
		document.getElementById("Screenie").style.cursor = "wait";
		window.setTimeout("slideShowResizerPrev()",250);
	}
}

function setup_gallery(sourceDirectory,filename,endnum)
{
	startnum = 0;
	currentShotNumber = endnum;
	for(i=0; i<endnum; i++)
	{
		pics_array[i] = sourceDirectory + filename + (i+1) +".jpg";
	}
	printPages();
}

function printPages()
{
	numPages = Math.ceil(pics_array.length/pics_per_page);
	if(document.location.href.split("#")[1] > 0 && first_load)
	{
		calculatedIndex = currentShotNumber - document.location.href.split("#")[1];
		current_page = Math.floor(calculatedIndex/pics_per_page);
	}
	
	if(output_pics)
	{
		outString = "";
		for(i = 0; i < pics_per_page; i++)
		{
			n = pics_per_page*current_page+i;
			if(pics_array[n])
			{
				thumbnail = pics_array[n].replace(".jpg","_sm.jpg");
				if(under_pic_captions)
				{
					outString += "<div><div><a href='javascript:view_pic("+n+")'><img src='"+thumbnail+"' border='0'></a></BR>"+caption_array[n]+"</div></div>";
				}
				else
				{
					outString += "<div><div><a href='javascript:view_pic("+n+")'><img src='"+thumbnail+"' border='0'></a></div></div>";
				}
			}
		}
		document.getElementById("galleryPictures").innerHTML = outString;
	
		if(page_number)
			document.getElementById("pageNum").innerHTML = "" + Number(current_page+1) + " of " + numPages + "";
	
		if(document.location.href.split("#")[1] != null && first_load)
		{
			if(document.location.href.split("#")[1] > 0) { window.setTimeout('view_pic(calculatedIndex)',250); }
			else { window.setTimeout('view_pic(0)',250); }
			first_load = false;
		}
	}
}

function galleryPrev()
{
	if(current_page > 0) { current_page--; }
	else { current_page = numPages-1; }
	printPages();
}

function galleryNext()
{
	if(current_page < numPages-1) { current_page++; }
	else { current_page = 0; }
	printPages();
}

