

var galleryPreloadImage;
var galleryPreloadImageLoaded = false;
var galleryNextImageLoading = false;
var galleryPreloadTimer;
var galleryStyle;
var galleryCallerLink;

var galleryLinkOpacityMin = 0.4;

function galleryLoadImageFromFrame(href) {
	var linkObj;
	for(var i = 0; i < document.links.length; i++) {
		if(document.links[i].tagName == "A" && href.indexOf(document.links[i].href) != -1) {
			linkObj = document.links[i];
			break;
		}
	}
	if(linkObj) galleryLoadImage(linkObj);
}

function galleryLoadImage(linkObj, isFirst) {
	//if(galleryCallerLink) alert(linkObj.href + " == " + galleryCallerLink.href + "  ;; " + (linkObj.href != galleryCallerLink.href));
	if(!galleryCallerLink || linkObj.href != galleryCallerLink.href) {
		if(galleryStyle && galleryStyle.stop) galleryStyle.stop();
		if(galleryPreloadTimer) clearTimeout(galleryPreloadTimer);
		galleryPreloadImageLoaded = false;
		
		if(galleryCallerLink && galleryCallerLink.href != linkObj.href) {
			galleryCallerLink.className = "";
			//new Fx.Style(galleryCallerLink, 'opacity', { duration: 1000 }).start(1, galleryLinkOpacityMin);
		}
		linkObj.blur();
		galleryCallerLink = linkObj;
		galleryCallerLink.className = "active";
		
		var f;
		if(window.frames && window.frames.galleryTrick && frames.galleryTrick.location) {
			f = frames.galleryTrick;
			if(isFirst) {
				f.location.replace("album_trick.html?" + linkObj.href);
			} else
				f.location = "album_trick.html?" + linkObj.href;
		} else {
			f = document.getElementById("galleryTrick");
			if(isFirst) {
				//f.location.replace("album_trick.html?" + linkObj.href);
			} else
				f.src = "album_trick.html?" + linkObj.href;
			//alert(f);
			//alert(f.window);
			//alert(window);
			
		}
		
		galleryPreloadImage = new Image();
		galleryPreloadImage.onload = galleryImageLoaded;
		galleryPreloadImage.src = linkObj.href;
		
		if(isFirst) {
			new Fx.Style('galleryImageContainer', 'opacity').set(0);
			//$("galleryImage").setStyle("opacity", "0");
			galleryPreloadSet();
		} else {
			var c = $('galleryImageContainer');
			var curOpacity;
			if(c.getStyle)
				curOpacity = c.getStyle('opacity');
			else
				curOpacity = galleryNextImageLoading ? 0 : 1;
			if(curOpacity == 0) {
				new Fx.Style('galleryImageContainer', 'opacity').set(0);
				galleryPreloadSet();
			} else
				galleryStyle = new Fx.Style('galleryImageContainer', 'opacity', { duration: 400, onComplete: galleryPreloadSet }).start(curOpacity, 0);
		}
		galleryNextImageLoading = true;
	}
	
	return false;
}


function galleryImageLoaded() {
	galleryPreloadImageLoaded = true;
}

function galleryPreloadSet() {
	if(galleryPreloadTimer) clearTimeout(galleryPreloadTimer);
	if(galleryPreloadImageLoaded) {
		galleryShowLoadedImage();
	} else {
		$("galleryImage").setStyle("display", "none");
		$("galleryPreloader").setStyle("display", "block");
		galleryPreloadTimer = setTimeout("galleryPreloadSet()", 100);
	}
}

function galleryShowLoadedImage() {
	//if(galleryCallerLink) galleryCallerLink.className = "visited";
	
	$("galleryImage").src = galleryPreloadImage.src;
	$("galleryPreloader").setStyle("display", "none");
	$("galleryImage").setStyle("display", "block");
	galleryStyle = new Fx.Style('galleryImageContainer', 'opacity', { duration: 1000, onComplete: function() { galleryNextImageLoading = false; } }).start(0, 1);
	
	updateImageMap();	
}


var imageMapRects = new Array("58,40,222,205", "245,41,409,205", "58,249,222,414", "245,249,409,415");
function updateImageMap() {
	clearImageMap();
	
	//var imgNum = getCurImageNumber();
	var mapInfo = galleryCallerLink.getAttribute("mapval");
	mapInfo = mapInfo.toString();
	mapInfo = mapInfo.split(",");
	
	var mapObj = $("albumImageMap");
	var mA;
	var imgIdx = parseInt(galleryCallerLink.getAttribute("startindex"));
	for(var i = 0; i < mapInfo.length; i++) {
		if(mapInfo[i]) {
			mA = new Element("AREA");
			mA.href = "../img/album_big/" + (imgIdx >= 10 ? imgIdx : ("0" + imgIdx.toString())) + ".jpg";
			mA.addEvent("click", galleryOpenBig);
			mA.shape = "rect";
			mA.coords = imageMapRects[parseInt(mapInfo[i]) - 1];
			mA.injectInside(mapObj);
			
			imgIdx++;
		}
	}
}
function clearImageMap() {
	var mapObj = document.getElementById("albumImageMap");
	while(mapObj.childNodes.length) {
		mapObj.removeChild(mapObj.firstChild);
	}
}


function getCurImageNumber() {
	var s = $('galleryImage').src;
	var slashIndex = 0;
	while(s.indexOf("/") != -1) s = s.substr(s.indexOf("/") + 1);
	s = s.substr(0, s.indexOf("."));	
	return parseInt(s, 10);
	
}



function galleryClickLink(linkObj, isFirst) {
	galleryLoadImage(linkObj, isFirst);
}


function galleryGoToNextLink(direction) {
	if(galleryCallerLink) {
		var linkFound = false;
		var nextLink = false;
		var firstMatchingLink = false;
		
		var i1 = direction > 0 ? 0 : document.links.length - 1;
		var iStep = direction > 0 ? 1 : -1;
		for(var i = i1; i >= 0 && i < document.links.length && !nextLink; i += iStep) {
			if(document.links[i].tagName == "A" && document.links[i].href.indexOf('img/album') != -1) {
				if(linkFound) nextLink = document.links[i];
				if(!firstMatchingLink) firstMatchingLink = document.links[i];
				if(document.links[i].href == galleryCallerLink.href) linkFound = true;
			}
		}
		if(linkFound && !nextLink && firstMatchingLink) nextLink = firstMatchingLink;
		if(nextLink) galleryClickLink(nextLink);
	}
}

function galleryPrev() { galleryGoToNextLink(-1); return false; }
function galleryNext() { galleryGoToNextLink(1); return false; }




function galleryOpenBig(e) {
	var evt = new Event(e);
	evt.preventDefault();
	
	w = 650;
	h = 690;
	x = (screen.availWidth - w) / 2;
	y = (screen.availHeight - h) / 2;
	wnd = window.open("albumbig.html?" + escape(evt.target.href), "photballetAlbumImage", "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes,width="+w+",height="+h + 
								  (x || y ? ',left='+x+',top='+y+',screenX='+x+',screenY='+y : ''));
	//if(wnd && !(x || y)) _centerWindow(wnd, w, h);
	return wnd;
}


function galleryOpenBackstage(aObj) {
	w = 820;
	h = 710;
	x = (screen.availWidth - w) / 2;
	y = (screen.availHeight - h) / 2;
	wnd = window.open("backstagebig.html?" + escape(aObj.href), "photballetBackstageImage", "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes,width="+w+",height="+h + 
								  (x || y ? ',left='+x+',top='+y+',screenX='+x+',screenY='+y : ''));
	
	return false;
}