	var height_min = 658; // match css!
	var class_adjusted = 'adjusted';
	var class_default = 'default';
	var resize_timeout = 500;
	var cookie_name = 'restore';
	
	var id_controls = null, id_body = null, id_main = null, height_body = null;;
	
/* ------------------------------------------------------------ */	

	function Init() {
		
		// check for restore cookie
		var cookieArr = document.cookie.split(';');
		for(var i = 0; i < cookieArr.length; i++) {
			var cookie = cookieArr[i];
			while(cookie.charAt(0) == ' ') cookie = cookie.substring(1, cookie.length);
			if(cookie.indexOf(cookie_name) == 0) {
				// saved scroll keeps next/previous link position consistent betwen clicks
				var ck = cookie.substring(cookie_name.length + 1, cookie.length);
				ck = ck.split(',');
				if(ck[0]) var scrollLeft = ck[0];
				if(ck[1]) var scrollTop = ck[1];
				
				// erase cookie
				var d = new Date();
				d.setTime(d.getTime() + (-1*24*60*60*1000));
				document.cookie = cookie_name + '=0;expires=' + d.toGMTString() + ';' + 'path=/';
				
				break;
			}
		}
		
		if(!id_controls) id_controls = document.getElementById('controls');
		if(!id_body) id_body = document.getElementById('body');
		if(!id_main) id_main = document.getElementById('main');
		
		// store default body height
		if(id_body) {
			height_body = id_body.offsetHeight;
			classRemove(id_body, class_default);
		}
		
		eventAttach(document.getElementById('arrowL'), 'mouseover', imgSwap, false);
		eventAttach(document.getElementById('arrowL'), 'mouseout', imgSwap, false);
		eventAttach(document.getElementById('arrowR'), 'mouseover', imgSwap, false);
		eventAttach(document.getElementById('arrowR'), 'mouseout', imgSwap, false);
		
		eventAttach(document.getElementById('prev'), 'click', scrollSave, false);
		eventAttach(document.getElementById('next'), 'click', scrollSave, false);
		
		eventAttach(window, 'resize', Resize, false);
		
		Resize();
		
		// saved scroll?
		if(scrollLeft || scrollTop) window.scrollTo(scrollLeft, scrollTop);

	}	
		
/* ------------------------------------------------------------ */	

	function Resize() {
		var viewheight = null;
		
		if(id_controls) {
			if(document.documentElement.clientHeight) viewheight = document.documentElement.clientHeight;
			else if(window.innerHeight) viewheight = window.innerHeight;
			
			if(viewheight < height_body || viewheight < height_min) {
				classRemove(id_controls, class_adjusted);
				classRemove(id_body, class_adjusted);
			}
			else if(viewheight > height_body || viewheight > height_min) {
				classAdd(id_controls, class_adjusted);
				classAdd(id_body, class_adjusted);
			}
		}
	}
	
/* ------------------------------------------------------------ */

	function scrollSave() {
		var scrollTop, scrollLeft;
		
		// set a cookie to remember current gigs top margin and window scroll
		if(document.documentElement && document.documentElement.scrollTop) {
			scrollTop = document.documentElement.scrollTop;
			scrollLeft = document.documentElement.scrollLeft;
			//alert('documentElement, setting cookie: ' + scrollLeft + ' ' + scrollTop);
		}
		else if(document.body && document.body.scrollTop) {
			scrollTop = document.body.scrollTop;
			scrollLeft = document.body.scrollLeft;
			//alert('body, setting cookie: ' + scrollLeft + ' ' + scrollTop);
		}
		
		var d = new Date();
		d.setTime(d.getTime() + 60000); // 1 minute
		document.cookie = cookie_name + '=' + scrollLeft + ',' + scrollTop + ';' + 'expires=' + d.toGMTString() + ';path=/';
	}


/* ------------------------------------------------------------ */	

	function classAdd(item, addclass) {
		var classes = item.className.split(' ');
		
		
		if(classes.length) {
			for(var i = 0; i < classes.length; i++) {
				if(classes[i] == addclass) return;
			}
			classes[classes.length] = addclass;
			item.className = classes.join(' ');
		}
		else item.className = addclass;
		
	}
	
	function classRemove(item, removeclass) {
		var classes = item.className.split(' ');
		var i = 0;
		
		while(i < classes.length) {
			if(classes[i] == removeclass) classes.splice(i, 1);
			else i++;
		}
		
		if(classes.length) item.className = classes.join(' ');
		else item.className = null;
	}
	
	
/* ------------------------------------------------------------ */	

	function imgSwap(ev) {
		var item = null, src = null, img = null, bits = null;
		
		if(ev.srcElement) item = ev.srcElement;
		else if(ev.target) item = ev.target;
		
		if(item.tagName == 'IMG') {
			src = item.src.split('_images/');
			if(src[1]) {
				img = src[1].split('.');
				if(img[0]) {
					bits = img[0].split('_');
					if(bits[1]) {
						if(bits[0] == 'arrows') {
							if(bits[2] == 'blue') bits[2] = 'white';
							else if(bits[2] == 'white') bits[2] = 'blue';
						}
					}
					img[0] = bits.join('_');
					
					item.src = src[0] + '_images/' + img.join('.');
				}
			}
		}
	}

/* ------------------------------------------------------------ */	

	function eventAttach(item, event, func, bubble) {
		if(item) {
			if(item.attachEvent) item.attachEvent('on' + event, func);
			else if(item.addEventListener) item.addEventListener(event, func, bubble);
		}
	}

/* ------------------------------------------------------------ */	

	// attach load event
	eventAttach(window, 'load', Init, false);
	
