var self = top.document;

var ImageLoader = undefined;
var Bubble =  undefined;

var Enter = undefined;
var Close = undefined;
var Container = undefined;
var MiniContainer = undefined;
var ThumbArray = undefined;
var BlackOut = undefined;
var Browser = undefined;
var FullImage = undefined;
var blackI = 0;
var BlackF = 0.0;
var idBO;
var startBO;
var delayBO = 600.0;
var maxBO = 0.6;
var cutoff = 512;

var currentIdx;

var ToNext = undefined;
var ToRight = undefined;

var IE = 0;
var W3C = 1;
var browser;
if (navigator.appName == "Microsoft Internet Explorer") {browser = IE;} else {browser = W3C;}

var galleryMode = false;

function getObject(ev) {
	if (browser == W3C) {
		return ev.target;
	} else {
		return window.event.srcElement;
	}
}

function updateBO() {
	var d = new Date();
	var sofar = (d.getTime()-startBO)/delayBO;
	delete d;
	if (sofar >= maxBO) {
		sofar = maxBO;
		clearInterval(idBO);

		if (browser == IE) {
			Browser.filters[0].enabled = false;
		}
		
		MiniContainer.style.visibility="visible";
	}
	
	if (browser == W3C) {
		BlackOut.style.opacity=sofar.toString();
		Browser.style.opacity=(sofar/maxBO).toString();
	} else {
		BlackOut.filters[0].opacity = sofar*100;
		Browser.filters[0].opacity =(sofar/maxBO)*100;
	}
}

function clickThumb(myEvent) {
	var elem = getObject(myEvent);
	if (galleryMode) return;
	
	galleryMode = true;
	var d = new Date();
	startBO = d.getTime();
	delete d;
	
	var clicked;
	for (var i = 0; i < 15; ++i) {
		if (ThumbArray[i] == elem) {
			currentIdx = i;
			break;
		}
	}
	
	idBO = setInterval(updateBO, 16);
	BlackOut.style.visibility="visible";
	
	var newpos = ((Container.offsetWidth-Browser.offsetWidth)/2);
	if (newpos < 0) newpos = 0;
	Browser.style.left = newpos.toString()+"px";
	
	ImageLoader.src = "";
	ImageLoader.src = "inaug/gallery/cres"+(currentIdx+1).toString()+".jpg";
	Browser.style.visibility="visible";
}

function overThumb(myEvent) {
	var elem = getObject(myEvent);
	elem.parentNode.style.backgroundColor="white";
	return true;
}

function outThumb(myEvent) {
	var elem = getObject(myEvent);
	elem.parentNode.style.backgroundColor="";
	return true;
}

function Hide(obj) {
	if (browser == W3C) {
		obj.parentNode.style.opacity=0.0;
	} else {
		obj.parentNode.filters[0].opacity = 0;
	}
}

function nextClick(myEvent) {
	var elem = getObject(myEvent);
	if (currentIdx == 14) return;
	++currentIdx;
	FullImage.style.visibility = 'hidden';
	ImageLoader.src = "inaug/gallery/cres"+(currentIdx+1).toString()+".jpg";
	if (currentIdx == 14) Hide(elem);
}

function nextOver(myEvent) {
	var elem = getObject(myEvent);
	if (currentIdx != 14) {
		if (browser == W3C) {
			ToNext.style.opacity=0.45;
		} else {
			ToNext.filters[0].opacity = 45;
		}
	}
}

function nextOut(myEvent) {
	var elem = getObject(myEvent);
	Hide(elem);
}

function prevClick(myEvent) {
	var elem = getObject(myEvent);
	if (currentIdx == 0) return;
	--currentIdx;
	FullImage.style.visibility = 'hidden';
	ImageLoader.src = "inaug/gallery/cres"+(currentIdx+1).toString()+".jpg";
	if (currentIdx == 0) Hide(elem);
}

function prevOver(myEvent) {
	var elem = getObject(myEvent);
	if (currentIdx != 0) {
		if (browser == W3C) {
			ToPrev.style.opacity=0.45;
		} else {
			ToPrev.filters[0].opacity = 45;
		}
	}
}

function prevOut(myEvent) {
	var elem = getObject(myEvent);
	Hide(elem);
}

function closeBrowser(myEvent) {
	var elem = getObject(myEvent);
	if (!galleryMode) return;

	var d = new Date();
	startBO = d.getTime();
	delete d;
	
	MiniContainer.style.visibility="hidden";
	FullImage.style.visibility="hidden";
	
	if (browser == IE) {
		Browser.filters[0].enabled = true;
	}
	
	if (browser == W3C) {
		Browser.style.opacity=0;
	} else {
		Browser.filters[0].opacity=0;
	}
	idBO = setInterval(closeBO, 16);	
}

function closeBO() {
	var d = new Date();
	var sofar = (d.getTime()-startBO)/delayBO;
	delete d;
	
	if (sofar >= maxBO) {
		sofar = maxBO;
		clearInterval(idBO);
		galleryMode = false;
		
		BlackOut.style.visibility="hidden";
		Browser.style.visibility="hidden";
	};
	
	sofar=(sofar*-1.0) + maxBO;

	if (browser == W3C) {
		BlackOut.style.opacity=sofar.toString();
	} else {
		BlackOut.filters[0].opacity = sofar*100;
	}
}

function EnterSite(myEvent) {
	var elem = getObject(myEvent);
	window.location.href="index2.asp";
}

function EnterOver(myEvent) {
	var elem = getObject(myEvent);
	elem.src = "inaug/index-h.jpg";
}

function EnterOut(myEvent) {
	var elem = getObject(myEvent);
	elem.src = "inaug/index-n.jpg";
}

function ImageLoadComplete(myEvent) {
	var elem = getObject(myEvent);
	FullImage.src = ImageLoader.src;
	FullImage.style.visibility = 'inherit';
}

function ImageLoadError(myEvent) {
	var elem = getObject(myEvent);
	//reload.
	ImageLoader.src = "";
	ImageLoader.src = "inaug/gallery/cres"+(currentIdx+1).toString()+".jpg";
}

function ImageLoadAbort(myEvent) {
	var elem = getObject(myEvent);
	//reload.
	ImageLoader.src = "";
	ImageLoader.src = "inaug/gallery/cres"+(currentIdx+1).toString()+".jpg";
}

function windowResize(myEvent) {
	var newpos = ((Container.offsetWidth-Browser.offsetWidth)/2);
	if (newpos < 0) newpos = 0;
	Browser.style.left = newpos.toString()+"px";
	adjustBubble();
}

function windowScroll(myEvent) {
	adjustBubble();
}

function getWidth() {
	var width = window.innerWidth;
	if (width == undefined) {
		width = document.documentElement.clientWidth;
	};
	return width;
}

function getHeight() {
	var height = window.innerHeight;
	if (height == undefined) {
		height = document.documentElement.clientHeight;
	};

	return height;
}


function adjustBubble() {
	var width = getWidth();
	var height = getHeight();
	var scrollh = (browser == IE) ? document.documentElement.scrollTop : window.pageYOffset;

	Bubble.style.top = (height-Bubble.offsetHeight).toString()+"px";
	//Bubble.style.left = (scrollh+height).toString()+"px"; //"0px";
	Bubble.style.visibility = ((scrollh+height) > cutoff) ? "hidden" : "visible";
}

function init() {
	ThumbArray = new Array(15);
	for (var i=0; i<15; ++i) {
		var thumb = self.getElementById("thumb"+(i+1).toString());
		
		if (!thumb.addEventListener) {
			thumb.attachEvent('onclick',clickThumb);
			thumb.attachEvent('onmouseover',overThumb);
			thumb.attachEvent('onmouseout',outThumb);
		} else {
			thumb.addEventListener('click',clickThumb,false);
			thumb.addEventListener('mouseover',overThumb,false);
			thumb.addEventListener('mouseout',outThumb,false);
		}
		ThumbArray[i] = thumb;
	}

	Container = self.getElementById("container");
	BlackOut = self.getElementById("blackout");
	Browser = self.getElementById("browser");
	FullImage = self.getElementById("full");

	ToNext = self.getElementById("toright");
	ToPrev = self.getElementById("toleft");
	
	MiniContainer = self.getElementById("minicontainer");

	Bubble = self.getElementById("bubble");
	
	ImageLoader = new Image();
	if (!ImageLoader.addEventListener) {
		ImageLoader.attachEvent('onload', ImageLoadComplete);
		ImageLoader.attachEvent('onerror', ImageLoadError);
		ImageLoader.attachEvent('onabort', ImageLoadAbort);
	} else {
		ImageLoader.addEventListener('load', ImageLoadComplete, false);
		ImageLoader.addEventListener('error', ImageLoadError, false);
		ImageLoader.addEventListener('abort', ImageLoadAbort, false);
	}
	
	Enter = self.getElementById("enter");
	if (!Enter.addEventListener) {
		Enter.attachEvent('onclick',EnterSite);
		Enter.attachEvent('onmouseover',EnterOver);
		Enter.attachEvent('onmouseout',EnterOut);
	} else {
		Enter.addEventListener('click',EnterSite,false);
		Enter.addEventListener('mouseover',EnterOver,false);
		Enter.addEventListener('mouseout',EnterOut,false);
	}
	
	Close = self.getElementById("close");
	if (!Close.addEventListener) {
		Close.attachEvent('onclick',closeBrowser);
	} else {
		Close.addEventListener('click',closeBrowser,false);
	}
	
	if (!ToNext.addEventListener) {
		ToNext.attachEvent('onclick',nextClick);
		ToNext.attachEvent('onmouseover',nextOver);
		ToNext.attachEvent('onmouseout',nextOut);
		
		ToPrev.attachEvent('onclick',prevClick);
		ToPrev.attachEvent('onmouseover',prevOver);
		ToPrev.attachEvent('onmouseout',prevOut);
	} else {
		ToNext.addEventListener('click',nextClick,false);
		ToNext.addEventListener('mouseover',nextOver,false);
		ToNext.addEventListener('mouseout',nextOut,false);
		
		ToPrev.addEventListener('click',prevClick,false);
		ToPrev.addEventListener('mouseover',prevOver,false);
		ToPrev.addEventListener('mouseout',prevOut,false);
	}
	
	// window.
	if (!window.addEventListener) {
		window.attachEvent('onresize',windowResize);
		window.attachEvent('onscroll',windowScroll);
	} else {
		window.addEventListener('resize',windowResize,false);
		window.addEventListener('scroll',windowScroll,false);
	}
	
	adjustBubble();
}


// preloads.
var pre1 = new Image(); 
pre1.src = "inaug/index-h";
var pre2 = new Image();
pre2.src = "inaug/arr-next.gif";
var pre3 = new Image();
pre3.src = "inaug/arr-prev.gif";
var pre4 = new Image();
pre4.src = "inaug/bg-browser.jpg";

window.onload = init;