var fullheights = Array();
var initial = 3;
var accel = 3;
var speed = 25;
var maxrate = 500;

function getFullHeight(nam) {
	t = document.getElementById("menuinner_" + nam);
	return t.offsetHeight;
}

	function popupsmall(URL) {
	day = new Date();
	id = day.getTime();
	eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=yes,location=0,statusbar=0,menubar=0,resizable=0,width=600,height=600,left = 0,top = 10');");
	}

function toggle(id)
{
	if(brokenBrowser()) return true;
	div = document.getElementById("menu_" + id);
	//div.style.height = "";
	if(div.offsetHeight==0) {
		//collapse everybody else
		collapseme = false;
		for(var i in fullheights) {
			if(i!=id && document.getElementById("menu_"+i).offsetHeight>0) {
				collapseme = i;
			}//setTimeout("collapse('" + i + "')", speed/2);
		}
		//expand me
		if(collapseme) {
			expandAndCollapse(id, collapseme);
		} else {
			expandAndCollapse(id, "dummy");
//			expand(id);
		}
	} else {//if(div.style.height=="auto") {
		expandAndCollapse("dummy", id);
		//collapse(id);
	}
	return false;
}

function collapse(id)
{
	div = document.getElementById("menu_" + id);
	if(div.style.height=="auto") {
		fullheights[id] = div.offsetHeight;
	}
	doCollapse(id, initial);
}

function doCollapse(id, rate)
{
	div = document.getElementById("menu_" + id);
	if(div.offsetHeight<=0 || rate>maxrate) return;
	
	h = div.offsetHeight; //height.substring(0, div.style.height.length-2);
	newheight =(h-rate);
	if(newheight<0) newheight = 0;
	div.style.height = newheight + "px";
	setTimeout("doCollapse('" + id + "', " + (rate+accel) + ")", speed);
}

function expand(id)
{
	doExpand(id, initial*2);
}

function doExpand(id, rate)
{
	div = document.getElementById("menu_" + id);
	if(div.offsetHeight>=getFullHeight(id) || rate>maxrate) {
//		div.style.height = "auto";
		return;
	}
	
	h = div.offsetHeight; //height.substring(0, div.style.height.length-2);
	newheight =(h+rate);
	if(newheight>getFullHeight(id)) newheight = getFullHeight(id);
	div.style.height = newheight + "px";
	
	newrate = rate;
	if(newheight>(getFullHeight(id)/2)) {
		newrate = newrate - accel;
		if(newrate<3) newrate = 3;
	} else {
		newrate = newrate + accel;
	}
	setTimeout("doExpand('" + id + "', " + (newrate) + ")", speed);
}

var animating = -1;

function expandAndCollapse(id, id2)
{
	window.clearTimeout(animating);
	doExpandAndCollapse(id, id2, initial*1.5, initial*1.5);
}


function doExpandAndCollapse(id, id2, rate1, rate2) 
{
	div = document.getElementById("menu_" + id);
	div2 = document.getElementById("menu_" + id2);
	if(div.offsetHeight>=getFullHeight(id) || rate1>maxrate) {
//		div.style.height = "auto";
	}
	
//	if(div2.style.height=="auto" || rate2>maxrate) {
//		fullheights[id2] = div2.offsetHeight;
//	}
	
	if(div2.offsetHeight<=0 && div.offsetHeight>=getFullHeight(id)) {
		menuUpdateImg(id);
		menuUpdateImg(id2);
		return;
	}
	
	av = (rate1+rate2)/2;
	
	h = div.offsetHeight; //height.substring(0, div.style.height.length-2);
	newheight =(h+av);//rate1);
	if(newheight>getFullHeight(id)) newheight = getFullHeight(id);
	
	h = div2.offsetHeight; //height.substring(0, div.style.height.length-2);
	newheight2 =(h-av);//rate2);
	if(newheight2<0) newheight2 = 0;
	
	div.style.height = newheight + "px";
	div2.style.height = newheight2 + "px";
	
	newrate1 = rate1;
	if(newheight>(getFullHeight(id)/2)) {
		newrate1 = newrate1 - accel;
		if(newrate1<3) newrate1 = 3;
	} else {
		newrate1 = newrate1 + accel;
	}
	
	newrate2 = rate2;
	if(newheight2<(getFullHeight(id2)/2)) {
		newrate2 = newrate2 - accel;
		if(newrate2<3) newrate2 = 3;
	} else {
		newrate2 = newrate2 + accel;
	}
	//window.status = "Collapsing one: velocity=" + newrate2 +", pos=" + newheight2
	
	animating = setTimeout("doExpandAndCollapse('" + id + "', '" + id2 + "', " + (newrate1) + ", " + (newrate2) + ")", speed);

}


var newsTargetHeight = -1;
var newsOriginalHeight = -1;

var newsTargetPos = -1;
var newsOriginalPos = -1;

function scrollNewsTo(id)
{
	outer = document.getElementById("latestnews_outer");
	newsOriginalHeight = outer.offsetHeight;
	
	div = document.getElementById("latestnews_" + id);
	newsTargetHeight = div.offsetHeight;
	
	//outer.style.height = "50px";
	
	newsOriginalPos = outer.scrollTop;
	newsTargetPos = div.offsetTop - document.getElementById("latestnews_top").offsetTop;
	
	if(navigator.userAgent.indexOf("Opera")>-1) {
		outer.style.overflow = "auto";
	}
//	alert("original pos is " + newsOriginalPos + " target pos is " + newsTargetPos);
//	alert("newstargetpos is " + newsTargetPos);
	
//	outer.scrollTop=100;
	
	doScrollNews(id, 0, -1);
}

var newsIndex = [];

var newsIndexPos = 0;

function brokenBrowser()
{
	if(navigator.appVersion.indexOf("MSIE") > 0 && navigator.appVersion.indexOf("Mac") > 0) {
		return true;
	}
	return false;
}

function wrongNewsHeight()
{
	if(navigator.appVersion.indexOf("Safari") > 0) {
		return true;
	}
	if(navigator.userAgent.indexOf("Opera 7")>-1) {
		return true;
	}
	return false;
}

function setNewsIndex(arr)
{
	newsIndex = arr;
}

function nextNews()
{
	//is this a broken browser?
	//alert(navigator.appVersion);
	if(brokenBrowser()) {
		return true;
	}
	
	if(newsIndexPos<newsIndex.length-1) {
		newsIndexPos += 1;
	} else {
		newsIndexPos = 0;
	}
	
	scrollNewsTo(newsIndex[newsIndexPos]);
	return false;
}

function hopNewsTo(id)
{
	outer = document.getElementById("latestnews_outer");
	div = document.getElementById("latestnews_" + id);
	if(brokenBrowser()) {
		outer.style.height = (div.offsetHeight+10) + "px";
		//outer.offsetHeight = 50;
	} else {
		outer.style.height = div.offsetHeight + "px";
		outer.scrollTop = div.offsetTop - document.getElementById("latestnews_top").offsetTop;
		if(wrongNewsHeight()) {
			setTimeout("scrollNewsTo('" + id + "')", 500);
		}
	}
}

function doScrollNews(id, amount, amount2)
{
	outer = document.getElementById("latestnews_outer");
	div = document.getElementById("latestnews_" + id);

	newsheight = outer.offsetHeight;
	newsscroll = outer.scrollTop;
	
	
	heightfinished = false;
	if(newsheight>newsTargetHeight-amount && newsheight<newsTargetHeight+amount) {
		newsheight = newsTargetHeight;
		outer.style.height = newsTargetHeight + "px";
		heightfinished = true;
	} else if(newsheight < newsTargetHeight) {
		newsheight += amount;
	} else if(newsheight > newsTargetHeight) {
		newsheight -= amount;
	}

	scrollfinished = false;
//	window.status = "(" + newsscroll + "," + (newsTargetPos-amount2) + "," + newsscroll + "," + (newsTargetPos+amount2) + ")"
	if(newsscroll>newsTargetPos-amount2 && newsscroll<newsTargetPos+amount2) {
//		window.status = "finito";
		newsscroll = newsTargetPos;
		outer.scrollTop = newsTargetPos;
		scrollfinished = true;
	} else if(newsscroll < newsTargetPos) {
		newsscroll += amount2;
	} else if(newsscroll > newsTargetPos) {
		newsscroll -= amount2;
	}
	
	if(scrollfinished && heightfinished) {
		return;
	}
		
	newamount = amount + 1;
	origdiff = newsTargetHeight - newsOriginalHeight;
	curdiff = newsTargetHeight - newsheight;
	if(newsTargetHeight<newsheight && curdiff>(origdiff/2)
	|| newsTargetHeight>newsheight && curdiff<(origdiff/2)) {
		newamount = amount - 1;
		if(newamount<1) newamount = 1;
	}
	
	newamount2 = amount2 + 1;
	origdiff = newsTargetPos - newsOriginalPos;
	curdiff = newsTargetPos - newsscroll;
	if(newsTargetPos<newsscroll && curdiff>(origdiff/2)
	|| newsTargetPos>newsscroll && curdiff<(origdiff/2)) {
		newamount2 = amount2 - 1;
		if(newamount2<1) newamount2 = 1;
	}
	
	
	outer.style.height = newsheight + "px";
	outer.scrollTop = newsscroll;
//	alert("setting scrollTop to " + newsscroll);
	
	setTimeout("doScrollNews(" + id + ", " + newamount + "," + newamount2 + ")", 30);
}

function oldscrollNewsTo(id)
{
	outer = document.getElementById("latestnews_outer");
	inner = document.getElementById("latestnews_inner");
	
	div = document.getElementById("latestnews_" + id);
	
	newsTargetHeight = div.offsetHeight;
	newsHeightDiff = div.offsetHeight - outer.offsetHeight;
	
	newsTopDiff = inner.offsetTop + div.offsetTop;
	newsStartTop = inner.offsetTop;
	newsTargetTop = -div.offsetTop + newsOrigTop;// + newsStartTop
	//alert(newsTargetTop);
	
	doScrollNews(id, 1);
}

function olddoScrollNews(id, amount) 
{
	outer = document.getElementById("latestnews_outer");
	inner = document.getElementById("latestnews_inner");
	
	//div = document.getElementById("latestnews_" + id);
	
	sb = 5;
	if(newsHeightDiff<0) sb = -sb;
	outer.style.height = (outer.offsetHeight+sb) + "px";
	
	sb = 5;
	if(newsTargetTop<newsStartTop) sb = -sb;
	//outer.style.height = (outer.offsetHeight+scrollBy) + "px";
	
	inner.style.top = (inner.offsetTop-newsOrigTop+sb) + "px";
	
	finishedScrolling=false;
	if((newsTargetTop<=newsStartTop) && (inner.offsetTop<=newsTargetTop) || (newsTargetTop>=newsStartTop) && (inner.offsetTop>=newsTargetTop) || amount>10) {
		finishedScrolling=true;
		inner.style.top = (newsTargetTop-newsOrigTop) + "px";
	}
	//if((newsTargetTop<newsStartTop)
	
	finishedSizing = false;
	if((newsHeightDiff>0 && outer.offsetHeight>=newsTargetHeight) || (newsHeightDiff<=0 && outer.offsetHeight<=newsTargetHeight) || newsHeightDiff==0) {
		outer.style.height = newsTargetHeight + "px";
		finishedSizing = true;
	}
	
	if(finishedSizing && finishedScrolling) {
//		alert("got there");
		return;
	}
	
	setTimeout("doScrollNews(" + id + ", " + (amount+1) + ")", 25);
	
}

var menuExpands = [];

function addMenuExpand(id)
{
	if(brokenBrowser()) {
		return;
	}
	
	menuExpands.push(id);
}

function doMenuExpands()
{
	if(brokenBrowser()) {
		return;
	}
	
	for(var i in menuExpands) {
		id = menuExpands[i];
		setTimeout("expandAndCollapse('" + id + "', 'dummy');", 500);
	}
}

var globalImageURL = "/images/";

function menuOverImg(id, imgurl)
{
	if(!imgurl) {
		imgurl=globalImageURL;
	} else {
		globalImageURL=imgurl;
	}
	
	img = document.getElementById("menuimg_" + id);
	div = document.getElementById("menu_" + id);

	if(div.offsetHeight>0) {
		img.src = imgurl + "nsmenucollapseover.gif";
	} else {
		img.src = imgurl + "nsmenuexpandover.gif";
	}	
}

function menuImg(id, imgurl)
{
	if(!imgurl) {
		imgurl=globalImageURL;
	} else {
		globalImageURL=imgurl;
	}
	
	img = document.getElementById("menuimg_" + id);
	div = document.getElementById("menu_" + id);
	
	if(div.offsetHeight>0) {
		img.src = imgurl + "nsmenucollapse.gif";
	} else {
		img.src = imgurl + "nsmenuexpand.gif";
	}
}

function menuUpdateImg(id)
{
	img = document.getElementById("menuimg_" + id);
	div = document.getElementById("menu_" + id);

	if(!img) {
		return;
	}
	
	if(img.src.indexOf("over")>-1) {
		menuOverImg(id);
	} else {
		menuImg(id);
	}
}

function setNoHeight(id)
{
	if(brokenBrowser()) {
		document.getElementById("menu_" + id).style.height = "1px";
	} else {
		document.getElementById("menu_" + id).style.height = "0px";
	}
}

function expandFAQ(id)
{
	document.getElementById("faqexpand_" + id).style.display = "none";
	document.getElementById("faqcollapse_" + id).style.display = "";
	
	outer = document.getElementById("faqbodyouter_" + id);
	inner = document.getElementById("faqbodyinner_" + id);
	
//	alert("id is " + id + " and current height " + outer.offsetHeight + " and target height is " + inner.offsetHeight);
	doResizeFAQ(id, outer.offsetHeight, inner.offsetHeight, 1);
}

var FAQtimer = -1;

function doResizeFAQ(id, originalHeight, targetHeight, amount)
{
	if(FAQtimer>-1) {
		clearTimeout(FAQtimer);
		FAQtimer = -1;
	}
//	alert("targetHeight is " + targetHeight);
	outer = document.getElementById("faqbodyouter_" + id);
	
	newheight = outer.offsetHeight;
	heightfinished = false;
	if(newheight>targetHeight-amount && newheight<targetHeight+amount) {
		outer.style.height = targetHeight + "px";
//		alert("finito, targetHeight now " + targetHeight);
		if(newheight>targetHeight) {
		
		}
		return;
	} else if(newheight < targetHeight) {
		newheight += amount;
	} else if(newheight > targetHeight) {
		newheight -= amount;
	}


	newamount = amount + 1;
	origdiff = targetHeight - originalHeight;
	curdiff = targetHeight - newheight;
	if(targetHeight<newheight && curdiff>(origdiff/2)
	|| targetHeight>newheight && curdiff<(origdiff/2)) {
		newamount = amount - 1;
		if(newamount<1) newamount = 1;
	}
	
	
	outer.style.height = newheight + "px";
	
	FAQtimer = setTimeout("doResizeFAQ(" + id + ", " + originalHeight + ", " + targetHeight + ", " + newamount + ")", 30);
}

function collapseFAQ(id)
{
	document.getElementById("faqexpand_" + id).style.display = "";
	document.getElementById("faqcollapse_" + id).style.display = "none";
	
	outer = document.getElementById("faqbodyouter_" + id);
	inner = document.getElementById("faqbodyinner_" + id);
	
//	alert("id is " + id + " and current height " + outer.offsetHeight + " and target height is " + inner.offsetHeight);
	doResizeFAQ(id, outer.offsetHeight, 0, 1);
}

function imageClick(id)
{
	i = document.getElementById("mainphoto");
	cap = document.getElementById("mainphotocaption");
	
	i.src = "/upload/photos/" + ("0000" + id).slice(-5) + ".jpg";
	cap.innerHTML = imageCaptions[parseInt(id)];
	//alert(imageCaptions[id]);
}

var imageCaptions = [];

function doScrollDrag(x, y)
{
	sbody = document.getElementById("scrollbody");
	sbodyinner = document.getElementById("scrollbodyinner");
	offset = scrollOffsetHeight;//sbody.offsetHeight;
	targetHeight = (y*(sbodyinner.offsetHeight-offset))/offset;
	doScrollBody(sbody.scrollTop, targetHeight, bodyScrollAmount);

}

function initScroller()
{
	scrolle = document.getElementById("scroller");
	if(scrolle) {
		Drag.init(scrolle, null, 0, 0, 0, 128);
		scrolle.onDrag = doScrollDrag;
		
	}

	if(scrolle && navigator.userAgent.indexOf("Opera")>-1) {
		sbody = document.getElementById("scrollbody");
		sbody.style.overflow = "auto";
		
		sc = document.getElementById("scrollcell");
		sc.style.display = "none";
	}

}

var scrollOffsetHeight = 132;

function scrollButton(by)
{
	scrolle = document.getElementById("scroller");
	sbody = document.getElementById("scrollbody");
	sbodyinner = document.getElementById("scrollbodyinner");
	
	sb = Math.max(sbody.scrollTop + by, 0);
	
	if(sbodyinner.offsetHeight<scrollOffsetHeight) sb = 0;
	
	sbpos = (sb*scrollOffsetHeight)/(sbodyinner.offsetHeight-scrollOffsetHeight)
	if(sbpos>128) sbpos=0;
	scrolle.style.top = sbpos + "px";
	doScrollDrag(0, sbpos);
}

var bodyScroller = -1;
var bodyScrollAmount = 1;

function doScrollBody(originalPos, targetPos, amount)
{
	if(bodyScroller>-1) {
		clearTimeout(bodyScroller);
		bodyScroller = -1;
	}

	outer = document.getElementById("scrollbody");

	newsscroll = outer.scrollTop;
	
	
	scrollfinished = false;
	if(newsscroll>targetPos-amount && newsscroll<targetPos+amount) {
		newsscroll = targetPos;
		outer.scrollTop = targetPos;
		bodyScroller = -1;
		bodyScrollAmount = 1;
		return;
	} else if(newsscroll < targetPos) {
		newsscroll += amount;
	} else if(newsscroll > targetPos) {
		newsscroll -= amount;
	}
	
	newamount = amount + 1;
	origdiff = targetPos - originalPos;
	curdiff = targetPos - newsscroll;
	if(targetPos<newsscroll && curdiff>(origdiff/2)
	|| targetPos>newsscroll && curdiff<(origdiff/2)) {
		newamount = amount - 1;
		if(newamount<1) newamount = 1;
	}
	
	outer.scrollTop = newsscroll;
	
	bodyScrollAmount = newamount;
	
	bodyScroller = setTimeout("doScrollBody(" + originalPos + ", " + targetPos + ", " + newamount + ")", 30);
}

var galleryTimer = -1;
var scrollAmount = 1;

function startGalleryScroll(dir)
{
	div = document.getElementById("gallerythumbs");
//	div.scrollTop = 100;
	if(navigator.userAgent.indexOf("Opera")>-1) {
		//div.style.height = "auto";
		//return;
		div.style.overflow = "auto";
	}

	scrollAmount = 1;
	doGalleryScroll(dir, 1);

	img = document.getElementById("galleryscrollup");
	if(dir>0) {
		img.src = globalImageURL + "nsgalleryscrollup.gif";
	}
}

function doGalleryScroll(dir, amount)
{
	if(galleryTimer>-1) {
		clearTimeout(galleryTimer);
		galleryTimer = -1;
	}
	div = document.getElementById("gallerythumbs");
	
	if(scrollAmount>10) scrollAmount=10;
	
	if(scrollAmount==0) return;
	
	div.scrollTop = div.scrollTop + (scrollAmount*dir);
	scrollAmount = scrollAmount + amount;
	
	galleryTimer = setTimeout("doGalleryScroll(" + dir + ", " + amount + ")", 50);
}

function stopGalleryScroll(dir)
{
	scrollAmount = scrollAmount - (scrollAmount%2);
	doGalleryScroll(dir, -2);
//	doGalleryScroll(dir, -2);
	
	div = document.getElementById("gallerythumbs");

}

function doTitleCaption(txt)
{
	span = document.getElementById("titlecaption");
	span.innerHTML = txt;
}


function expandFAQ(id)
{
	document.getElementById("faqexpand_" + id).style.display = "none";
	document.getElementById("faqcollapse_" + id).style.display = "";
	
	outer = document.getElementById("faqbodyouter_" + id);
	inner = document.getElementById("faqbodyinner_" + id);
	
//	alert("id is " + id + " and current height " + outer.offsetHeight + " and target height is " + inner.offsetHeight);
	doResizeFAQ(id, outer.offsetHeight, inner.offsetHeight, 1);
}

var FAQtimer = -1;

function doResizeFAQ(id, originalHeight, targetHeight, amount)
{
	if(FAQtimer>-1) {
		clearTimeout(FAQtimer);
		FAQtimer = -1;
	}
//	alert("targetHeight is " + targetHeight);
	outer = document.getElementById("faqbodyouter_" + id);
	
	newheight = outer.offsetHeight;
	heightfinished = false;
	if(newheight>targetHeight-amount && newheight<targetHeight+amount) {
		outer.style.height = targetHeight + "px";
//		alert("finito, targetHeight now " + targetHeight);
		if(newheight>targetHeight) {
		
		}
		return;
	} else if(newheight < targetHeight) {
		newheight += amount;
	} else if(newheight > targetHeight) {
		newheight -= amount;
	}


	newamount = amount + 1;
	origdiff = targetHeight - originalHeight;
	curdiff = targetHeight - newheight;
	if(targetHeight<newheight && curdiff>(origdiff/2)
	|| targetHeight>newheight && curdiff<(origdiff/2)) {
		newamount = amount - 1;
		if(newamount<1) newamount = 1;
	}
	
	
	outer.style.height = newheight + "px";
	
	FAQtimer = setTimeout("doResizeFAQ(" + id + ", " + originalHeight + ", " + targetHeight + ", " + newamount + ")", 30);
}

function collapseFAQ(id)
{
	document.getElementById("faqexpand_" + id).style.display = "";
	document.getElementById("faqcollapse_" + id).style.display = "none";
	
	outer = document.getElementById("faqbodyouter_" + id);
	inner = document.getElementById("faqbodyinner_" + id);
	
//	alert("id is " + id + " and current height " + outer.offsetHeight + " and target height is " + inner.offsetHeight);
	doResizeFAQ(id, outer.offsetHeight, 0, 1);
}
