function getId(hash) {
	h = regexp.exec(hash) - 1;
	if (h < 1 || h >= gallery.length) return 0;
	else return h;
}
function getClick(evt) {
	evt = (evt) ? evt : event;
	var target = (evt.target) ? evt.target : evt.srcElement;
	id = regexp.exec(target.getAttribute('id'));
	evt.cancelBubble = true;
	if (window.location.hash == "#"+ (id-0 + 1)) return;
	loadPhoto(divBigPhoto.firstChild, divBigPhoto.firstChild.firstChild);
	setPreview();
}
function loadPhoto(elA, elI) {
	id = getId(id-0 + 1);
	var calc = " ["+ (id-0 + 1) + text[2] + gallery.length +"]";
	var title = getId(id-0 + 2) ? text[0] : text[1];
	elA.href = "#"+ (id-0 + 1);
	elA.title = title + calc;
	elI.src = galleryPath + gallery[id][0] + index2;
	elI.id = "photo"+ (id-0 + 1);
	elI.alt = title + calc;	
	elI.width = gallery[id][2];
	elI.height = gallery[id][3];
	elI.onclick = getClick;	
	divPframeAlt.innerHTML = "&nbsp;"+ gallery[id][1] +"&nbsp;";
	loadXMLDoc("gallery.aspx?"+ gallery[id][0]);
}
function setPreview() {
	divFilm[getId(window.location.hash)].style.backgroundColor = "#FFFFFF";
	divFilm[id].style.backgroundColor = "#FFFF99";
}
function ietruebody() {
	return (document.compatMode && document.compatMode != "BackCompat") ? document.documentElement : document.body;
}
function getposOffset(what, offsettype) {
	var totaloffset = (offsettype == "left") ? what.offsetLeft : what.offsetTop;
	var parentEl = what.offsetParent;
	while (parentEl != null) {
		totaloffset = (offsettype == "left") ? totaloffset + parentEl.offsetLeft : totaloffset + parentEl.offsetTop;
		parentEl = parentEl.offsetParent;
	}
	return totaloffset;
}
function moveleft() {
	if (loadedyes) {
		movestate = "left";
		if (iedom && parseInt(cross_scroll.style.left) > (menuwidth-actualwidth)) cross_scroll.style.left = parseInt(cross_scroll.style.left) - scrollspeed + "px";
	}
	lefttime = setTimeout("moveleft()", 10);
}
function moveright() {
	if (loadedyes) {
		movestate = "right";
		if (iedom && parseInt(cross_scroll.style.left) < 0)	cross_scroll.style.left = parseInt(cross_scroll.style.left) + scrollspeed + "px";
	}
	righttime = setTimeout("moveright()", 10);
}
function contains_ns6(a, b) {
	if (b !== null)
		while (b.parentNode)
			if ((b = b.parentNode) == a) return true;
	return false;
}
function fillup() {
	if (iedom) {
		crossmain = document.getElementById ? document.getElementById("slide") : document.all.slide;
		if (typeof crossmain.style.maxWidth !== 'undefined') crossmain.style.maxWidth = maxwidth + 'px';
		menuwidth = crossmain.offsetWidth;
		cross_scroll = document.getElementById ? document.getElementById("lenta") : document.all.lenta;
		actualwidth = document.getElementById ? document.getElementById("container").offsetWidth : document.all['container'].offsetWidth;
		if (startpos) cross_scroll.style.left = (menuwidth-actualwidth)/startpos + 'px';
		crossmain.onmousemove = function(e) {
			var mainobjoffset = getposOffset(crossmain, "left"),
			dsocx = (window.pageXOffset) ? pageXOffset : ietruebody().scrollLeft,
			dsocy = (window.pageYOffset) ? pageYOffset : ietruebody().scrollTop,
			curposy = window.event ? event.clientX : e.clientX ? e.clientX : "";
			curposy -= mainobjoffset - dsocx;
			var leftbound = (menuwidth - restarea)/2;
			var rightbound = (menuwidth + restarea)/2;
			if (curposy > rightbound) {
				scrollspeed = (curposy - rightbound)/((menuwidth-restarea)/2)*maxspeed;
				clearTimeout(righttime);
				if (movestate != "left") moveleft();
			} else if (curposy < leftbound) {
				scrollspeed = (leftbound - curposy)/((menuwidth - restarea)/2)*maxspeed;
				clearTimeout(lefttime);
				if (movestate != "right") moveright();
			} else
				scrollspeed = 0;
		}
		crossmain.onmouseout = function(e) {
			if (!window.opera || (window.opera && e.relatedTarget !== null))
				if ((window.event && !crossmain.contains(event.toElement)) || (e && e.currentTarget && e.currentTarget != e.relatedTarget && !contains_ns6(e.currentTarget, e.relatedTarget))) {
					clearTimeout(lefttime);
					clearTimeout(righttime);
					movestate = "";
				}
		}
	}
	loadedyes = 1
	if (document.body.filters) onresize();
}

var restarea = 250;	//Установить ширину "нейтральных" областей, в самом центре галереи
var startpos = 2;	//1 - позиция слева; 0 - справа; 2 - центр
var maxspeed = 6;
var maxwidth = 500;
var iedom = document.all || document.getElementById, scrollspeed = 0, movestate = '', actualwidth = '', cross_scroll, ns_scroll, statusdiv, loadedyes = 0, lefttime, righttime;
var elemA = document.createElement('a');
var elemImg = document.createElement('img');
var divBigPhoto = document.getElementById ? document.getElementById('bigphoto') : document.all.bigphoto;
var divContainer = document.getElementById ? document.getElementById('container') : document.all.container;
var divPframeAlt = document.getElementById ? document.getElementById('pframealt') : document.all.pframealt;
var divFilm = new Array();
var regexp = /\d+/;
var id = getId(window.location.hash);

loadPhoto(elemA, elemImg, id);
divBigPhoto.appendChild(elemA);
elemA.appendChild(elemImg);
for (var i=0; i<gallery.length; i++) {
	var divMain = document.createElement('div');
	var divTapeUp = document.createElement('div');
	var divTapeDn = document.createElement('div');
	divFilm[i] = document.createElement('div');
	elemA = document.createElement('a');
	elemImg = document.createElement('img');
	elemA.href = "#"+ (i + 1);
	elemA.title = gallery[i][1];
	elemImg.id = "pre"+ i;
	elemImg.src = previewPath + gallery[i][0] + index2;
	elemImg.alt = gallery[i][1];	
	elemImg.width = 88;
	elemImg.height = 68;
	elemImg.onclick = getClick;		
	divFilm[i].className = "film";
	divFilm[i].id = "i"+ i;		
	divMain.className = "main";		
	divTapeUp.className = "tape";
	divTapeDn.className = "tape";		
	divContainer.appendChild(divFilm[i]);		
	divFilm[i].appendChild(divTapeUp);
	divFilm[i].appendChild(divMain);
	divFilm[i].appendChild(divTapeDn);
	divMain.appendChild(elemA);
	elemA.appendChild(elemImg);
}
setPreview();

window.onload = fillup;
onresize = function() {
	if (typeof slide !== 'undefined' && slide.filters) {
		slide.style.width = "0";
		slide.style.width = "";
		slide.style.width = Math.min(slide.offsetWidth, maxwidth) + 'px';
	}
	menuwidth = crossmain.offsetWidth;
	cross_scroll.style.left = startpos ? (menuwidth-actualwidth)/startpos + 'px' : 0;
}
