var THUMBS_VERT_HEIGHT = 60;
var THUMBS_HORZ_WIDTH = 122;
var MAX_SLIDE_SPEED = 4;

var VERT_PANEL_HEIGHT = 60;
var HORZ_PANEL_WIDTH = 142;

var isIE = false;
var images = new Array;
var selectedIndex = 0;
var mouseX;
var mouseY;
var gallerysliderwidth=0;
var gallerysliderheight=0;
var current_css_class="_horizontal";

function addLoadEvent(func) {
	if (window.showModalDialog) {
		var oldonload = window.onload;
		if (typeof window.onload != 'function') {
			window.onload = func;
		} else {
			window.onload = function() {
				oldonload();
				func();
			}
		}
	} else {
		window.addEventListener("load",func,true);
	}
}

function showImage(obj) {
	var bigimage = document.getElementById("mainimage");
	setOpacity(bigimage, 0);
	bigimage.onload = function () {document.getElementById("galleryimage").className = "galleryimage" + current_css_class + " nodisc";fadeIn("mainimage", 0);};
	bigimage.setAttribute("src", obj.getAttribute('imgsrc'));
	bigimage.setAttribute("alt", obj.getAttribute('alt'));
	bigimage.setAttribute("title", obj.getAttribute('alt'));
	document.getElementById("galleryimage").className = "galleryimage" + current_css_class + " disc";
	//document.getElementById("mainimagetitle").innerHTML = obj.getAttribute('alt');
	document.getElementById("mainimagetitle").innerHTML = "<h3>"+obj.getAttribute('alt')+"</h3>"+base64_decode(obj.getAttribute('description'));
	var thumbs = document.getElementById('gallery').getElementsByTagName("LI");
	for (var i = 0; i < thumbs.length; i++) {
		if (thumbs[i].firstChild.className == "selected") {
			thumbs[i].firstChild.className = "";
		}
	}
	obj.className = "selected";
}

function fadeIn(objId, opacity) {
	if (document.getElementById) {
		obj = document.getElementById(objId);
		if (opacity <= 100) {
			setOpacity(obj, opacity);
			opacity += 20;
			window.setTimeout("fadeIn('" + objId + "'," + opacity + ")", 20);
		}
	}
}

function setOpacity(obj, opacity) {
	opacity = opacity == 100 ? 99.999 : opacity;
	obj.style.filter = "alpha(opacity:" + opacity + ")";
	obj.style.KHTMLOpacity = opacity / 100;
	obj.style.MozOpacity = opacity / 100;
	obj.style.opacity = opacity / 100;
	return true;
}

function slider() {
	if (current_css_class == '_vertical') {
		SetVerticalPanel();
	} else {
		SetHorizontalPanel();
	}
}

function SetVerticalPanel() {
	var listitems = document.getElementById("panel2").getElementsByTagName("LI");
	gallerysliderwidth = 0;
	for(i=0;i<listitems.length;i++) {
		var thumb = listitems[i].firstChild;
		thumb.removeAttribute("width");
		thumb.setAttribute("height", THUMBS_VERT_HEIGHT);
		gallerysliderwidth += thumb.offsetWidth + 10;
	}
	SingleRowVert();
}

function SetHorizontalPanel() {
	var listitems = document.getElementById("panel2").getElementsByTagName("LI");
	var panel = document.getElementById("panel2");

	gallerysliderheight = 0;
	for(i=0;i<listitems.length;i++) {
		var thumb = listitems[i].firstChild;
		thumb.removeAttribute("height");
		thumb.setAttribute("width", THUMBS_HORZ_WIDTH);
		gallerysliderheight += thumb.offsetHeight + 10;
	}
	panel.style.left = "0px";
	panel.style.top = "0px";
	//alert("panel:" + panel.scrollHeight + ":" + panel.offsetHeight + ":" + panel.clientHeight);
	panel.style.width = THUMBS_HORZ_WIDTH + 10 + "px";
	//panel.style.height = gallerysliderheight + 2 + "px";

	var timer = null;
	document.getElementById("panel1").onmouseover = function () {trackthemouse();timer = setInterval("SlidePanelVertical()", 10);};
	document.getElementById("panel1").onmouseout = function () {donttrackthemouse();clearInterval(timer);};
}

function trackthemouse() {
	document.onmousemove = getMouseXY;
	isIE = document.all ? true : false;
}

function donttrackthemouse() {
	document.onmousemove = null;
}

function getMouseXY(e) {
	if (isIE) {
		tempX = event.clientX + document.documentElement.scrollLeft;
		tempY = event.clientY + document.documentElement.scrollTop;
	}
	else {
		tempX = e.pageX;
		tempY = e.pageY;
	}

	if (tempX < 0) tempX = 0;
	if (tempY < 0) tempY = 0;
	mouseX = tempX;
	mouseY = tempY;
}

function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}

function SlidePanelHorizontal() {
	if(!mouseX) return;
	var panel1 = document.getElementById("panel1");
	var panel2 = document.getElementById("panel2");

	var panel1_pos = findPos(panel1);
	var mouse_at_panel1X = (mouseX - panel1_pos[0]) - (panel1.offsetWidth * 0.5);
	var slide_speed = (MAX_SLIDE_SPEED / (panel1.offsetWidth * 0.5) * mouse_at_panel1X);

	if (slide_speed > 0) {
		if(panel2.offsetLeft <= -(panel2.offsetWidth - panel1.offsetWidth)) {
			panel2.style.left = -(panel2.offsetWidth - panel1.offsetWidth) + "px";
			return;
		}
	}
	else if (slide_speed < 0) {
		if(panel2.style.left >= "0px") {
			panel2.style.left = "0px";
			return;
		}
	}
	panel2.style.left = (panel2.offsetLeft - slide_speed) + "px";
}

function SlidePanelVertical() {
	if(!mouseY) return;
	var panel1 = document.getElementById("panel1");
	var panel2 = document.getElementById("panel2");

	var panel1_pos = findPos(panel1);
	var mouse_at_panel1Y = (mouseY - panel1_pos[1]) - (panel1.offsetHeight * 0.5);
	var slide_speed = (MAX_SLIDE_SPEED / (panel1.offsetHeight * 0.5) * mouse_at_panel1Y);

	window.status = mouse_at_panel1Y;

	if (slide_speed > 0) {
		if(panel2.offsetTop <= -(panel2.offsetHeight - panel1.offsetHeight)) {
			panel2.style.top = -(panel2.offsetHeight - panel1.offsetHeight) + "px";
			return;
		}
	}
	else if (slide_speed < 0) {
		if(panel2.style.top >= "0px") {
			panel2.style.top = "0px";
			return;
		}
	}
	panel2.style.top = (panel2.offsetTop - slide_speed) + "px";
}

function SingleRowVert() {
	var panel1 = document.getElementById("panel1");
	var panel2 = document.getElementById("panel2");

	panel2.style.left = "0px";
	panel2.style.top = "0px";
	panel2.style.width = gallerysliderwidth + 2 + "px";
	//panel2.style.height = THUMBS_VERT_HEIGHT + 10 + "px";

	panel1.className = "panel1_vertical";
	panel2.className = "panel2_vertical";

	var timer=null;
	panel1.onmouseover = function () {trackthemouse();timer = setInterval("SlidePanelHorizontal();", 10);};
	panel1.onmouseout = function () {donttrackthemouse();clearInterval(timer);};
	document.getElementById("multirowbutton" ).onclick = function () {MultiRowVert();};
}

function MultiRowVert() {
	var panel1 = document.getElementById("panel1");
	var panel2 = document.getElementById("panel2");

	panel2.style.left = "0px";
	panel2.style.top = "0px";
	panel2.style.width = "auto";
	if (window.showModalDialog) {
		//panel2.style.height = panel2.scrollHeight + "px";
	} else {
		//panel2.style.height = "auto";
	}
	panel1.className = "panel1_vertical_multirow";
	panel2.className = "panel2_vertical_multirow";

	panel1.onmouseover = null;
	panel1.onmouseout = null;
	document.getElementById("multirowbutton").onclick = function () {SingleRowVert();};
}

function SwitchView() {
	if (current_css_class == "_vertical") {
		current_css_class = "_horizontal";
		SetClasses();
		SetHorizontalPanel();
	}
	else {
		current_css_class = "_vertical";
		SetClasses();
		SetVerticalPanel();
	}
}

function SetClasses() {
	document.getElementById("gallery").className = "gallery" + current_css_class;
	document.getElementById("galleryimage").className = "galleryimage" + current_css_class + " nodisc";
	document.getElementById("panel1").className = "panel1" + current_css_class;
	document.getElementById("panel2").className = "panel2" + current_css_class;
	document.getElementById("thumbsholder").className = "thumbsholder" + current_css_class;
	document.getElementById("mainimage").className = "mainimage" + current_css_class;
	document.getElementById("mainimagetitle").className = "mainimagetitle" + current_css_class;
	document.getElementById("multirowbutton").className = "multirowbutton" + current_css_class;
}


