var transOutTime = 500;
var transInTime = 200;
var smooth = 30;

var transOut = 'bounceout';
var transIn = 'expoout';

var transition = 500;

function openMe(me) {
	var ul = me.getElementsByTagName('ul')[0];
	ul.parentNode.className = 'expanded';
	var end = ul.maxX;
	sizeTo(ul, end);
	// alert(me);
};
function shutMe(me) {
	var ul = me.getElementsByTagName('ul')[0];
	// alert(ul.id);
	var end = 0;
	ul.parentNode.className = 'expander';
	sizeTo(ul, end);

//	var end = (ul.offsetHeight) ? 0 : ul.maxX;
//	ul.parentNode.className = (ul.offsetHeight) ? 'expander' : 'expanded';
};


window.onload = function() {
	loaded = true;
	checkLoaded();
	meGo();
 	itemTags();
}

function itemTags() {
	aTags = document.getElementsByTagName('a');
	for (var aI = 0; aI < aTags.length; aI++) {
		if (aTags[aI].parentNode.parentNode.className == 'item') {
			aTags[aI].parentNode.parentNode.href = aTags[aI].href
			aTags[aI].parentNode.parentNode.className += ' jsClick';
			aTags[aI].parentNode.parentNode.onclick = function() { window.location = this.href; } 
		}
	}
}

function meGo() {

/*
	var allATags = document.getElementsByTagName('A');

	for (var allAI = 0; allAI < allATags.length; allAI++) {
		allATags[allAI].onclick = function() {
			fadeMe(document.getElementById('wrapper'), 100, 0); // fade in the content
			setTimeout('window.location = "' + this.href + '";', transition + smooth);
			return false;
		}
	}
*/
	var objHead = document.getElementsByTagName('head');
	var objCSS = document.createElement('link');
	objCSS.rel = 'stylesheet';
	objCSS.href = '/css/invalid.css';
	objCSS.type = 'text/css';
	
	objHead[0].appendChild(objCSS);

	
	if (document.getElementById('menu')) {
		// if we have a menu check for submenus
		
		var submenus = document.getElementById('menu').getElementsByTagName('ul');
		
		for (var sI=0; sI < submenus.length; sI++) {
			var aI; // set up a current atag check variable
			submenus[sI].id = "submenu_" + sI; // give the submenu an id
			submenus[sI].maxX = submenus[sI].offsetHeight; // set the height
			if(hasClass(submenus[sI].parentNode.firstChild, 'active')) {
				aI = 'yes';
			} else {
				var aTags = submenus[sI].getElementsByTagName('a'); // get all the atags
				for (aI = 0; aI < aTags.length; aI++) {
					if (hasClass(aTags[aI], 'active')) { // if one of the kids is active
						addClass(submenus[sI].parentNode, 'expanded'); // set it's parent to expand
						aI = 'yes'; // flag it
						break; // stop looping
					}
				}
			}
//			alert(aI);
			if (aI != 'yes') { // if no active child
				addClass(submenus[sI].parentNode, 'expander'); // make this an expander
				submenus[sI].style.height = '0px'; // set its height to 0
			} else { // if it's active
				submenus[sI].style.height = submenus[sI].maxX / 15 + 'em'; // set it's height
			}
		}
		document.out = new Array; // set up an array to keep track of all the menu items
		document.onmousemove = MM; // this sorts out the mouseover event
	}
	addClass(document.body, 'js'); // just make sure all the css is for js only
	if (document.forms.length) formScript();
	checkGallery();
} 
function MM(e) {
	// basically this triggers the open and shut menu items
	e = fixE(e);
	var myNodeName = e.target.nodeName.toUpperCase();
	if (hasClass(e.target.parentNode, 'expander')) {
		openMe(e.target.parentNode);
		document.out.push(e.target.parentNode);
	} else if (document.out.length && (myNodeName != 'A' && myNodeName != 'LI' && myNodeName != 'UL' && myNodeName != '#TEXT' && myNodeName != 'SPAN') ) {
		while(document.out.length) shutMe(document.out.pop());
	}
}

// ******** Gallery **************

var total = 0;
var sizeTrans = 250;
var gTrans = 300;
var delay = 8000;

var tranType = 'expoout';

var gallery;
var gImages;
var cLI;
var curIm = 0;
var isOp;
var sInt;

var stopped = 1;

var delay = (gTrans * 2) + delay + sizeTrans;

function checkGallery() {
	gallery  = document.getElementById('gallery') 
	if (gallery) {
		gallery.style.height = 0;
		gallery.i = transition;
		gImages = gallery.getElementsByTagName('img');
		total = gImages.length;
		gallery.maxW = 0;
		gallery.maxH = 0;
		// alert(total);
		for (var gi=0; gi<gImages.length; gi++) {
			gImages[gi].className = 'jsImg'
			gImages[gi].id = 'gallery_' + gi;
			gImages[gi].style.zIndex = gi + 10;

			gallery.maxW = Math.max(gallery.maxW, gImages[gi].clientWidth);
			gallery.maxH = Math.max(gallery.maxH, gImages[gi].clientHeight);

			// moveMe(gImages[gi], 0, 1);
			changeOpac(0, gImages[gi].id);
		}
		if (total > 1) {
			var cl = document.createElement("DIV");
			cl.id = 'cprev';
			cl.innerHTML = '<a id="back" href="javascript:document.getElementById(\'back\').blur();backFor(1);">-</a>';
			var cr = document.createElement("DIV");
			cr.id = 'cnext';
			cr.innerHTML = '<a id="for" href="javascript:document.getElementById(\'for\').blur();backFor();">+</a>';
			var cpp = document.createElement("DIV");
			cpp.id = 'cpp';
			cpp.innerHTML = '<a id="pp" class="pause" href="javascript:playPause();">Pause</a>';

			
			var controls = document.createElement("DIV");
			controls.id = 'controls';
			controls.appendChild(cl);
			controls.appendChild(cr);
			controls.appendChild(cpp);
			// controls.style.top = gallery.offsetTop + 'px';
			
			document.getElementById('content').insertBefore(controls, gallery);
		}

		/*
		gallery.appendChild(cl);
		gallery.appendChild(cr);
		*/

		hoverStuff();
		myStartShow();
	}
}

function hoverStuff() {
	// do nothing only needed as ie will fuck up otherwise
}

function myStartShow() {
	sizeToY(gallery, gallery.maxH, 1);
	changeOpac(100, gImages[curIm].id);
	// moveText(document.getElementById('cpt'), 0, 1);
	// gImages[curIm].style.zIndex = curIm + 20;
	if (total > 1) {
		cLI = setTimeout('nextShow()', delay);
		stopped = 0;
	}
	onDoneMoving();
}

function nextShow(backwards) {
	if (total <= 1) return false;
	if (!backwards) {
		var nexIm = (curIm + 1 >= total) ? 0 : curIm + 1;
	} else {
		var nexIm = (curIm - 1 < 0) ? total - 1 : curIm - 1;
		// alert(curIm+':'+nexIm);
	}
	// onStartMoving();
	
	fadeMe(gImages[curIm], 100, 0);
	fadeMe(gImages[nexIm], 0, 100);
	moveText(document.getElementById('cpt'), 0, 1);
	
	// moveMe(gImages[nexIm], 1, 1);

	// setTimeout('sizeToG(gallery, ' + gImages[nexIm].clientWidth + ', ' + gImages[nexIm].clientHeight + ');', gTrans);
	//setTimeout('sizeToG(document.getElementById(\'controls\'), ' + gImages[nexIm].clientWidth + ', ' + gImages[nexIm].clientHeight + ');', gTrans);
	//setTimeout('gImages[' + curIm + '].style.zIndex = ' + curIm + ' + 10;', gTrans);
	//setTimeout('gImages[' + nexIm + '].style.zIndex = ' + curIm + ' + 20;', gTrans);
	
	// setTimeout('onDoneMoving()', gTrans);
	// gImages[nexIm].style.zIndex = gImages.length + 50;
	// sizeToG(document.getElementById('controls'), gImages[nexIm].clientWidth, gImages[nexIm].clientHeight);
	// setTimeout('moveMe(gImages[' + nexIm + '], 1);', gTrans / 4);
	curIm = nexIm;
	onDoneMoving();
	if (!gallery.stopped) cLI = setTimeout('nextShow()', delay);
}

function backFor(backwards) {
	clearTimeout(cLI);
	nextShow(backwards);
}

function sizeToG(me, x, y, now) {
	if (now) {
		me.style.width = x + 'px';
		me.style.height = y + 'px';
	}
	me.myStartX = me.clientWidth;
	me.myStartY = me.clientHeight;
	if ((me.myStartX - x) == 0 && (me.myStartY - y) == 0) {
		return;
	}
	me.endX = x;
	me.endY = y;
	me.i = 0;
	// alert(me.myStartY+' - '+me.endY);
	addInterval('resizeG("'+me.id+'");');
}

function resizeG(id) {
	me = document.getElementById(id);
	me.i += smooth;
	var finished = false;
	// if (me.i < 50) alert(me.myStartY+' - '+me.endY);
	var newX = (me.myStartX < me.endX) ? 
			me.myStartX + easing(me.i, 0, me.endX - me.myStartX, sizeTrans, tranType) :
			me.myStartX - easing(me.i, 0, me.myStartX - me.endX, sizeTrans, tranType);
	var newY = (me.myStartY < me.endY) ? 
			me.myStartY + easing(me.i, 0, me.endY - me.myStartY, sizeTrans, tranType) :
			me.myStartY - easing(me.i, 0, me.myStartY - me.endY, sizeTrans, tranType);
	
	if(me.i >= sizeTrans) {
		// sInts.splice(sInts.indexOf('resizeG(' + id +');'), 1);
		// if (!sInts.length) clearInterval(sInt);
		newX = me.endX;
		newY = me.endY;
		finished = true
		// alert(newX+' - '+newY);
	}
	//alert(newX);
	me.style.width = newX + 'px';
	me.style.height = newY + 'px';
	return(finished);

}

function sizeToY(me, y, now) {
	if (now) {
		me.style.height = y + 'px';
	}
	me.myStartY = me.clientHeight;
	if ((me.myStartY - y) == 0) {
		return;
	}
	me.endY = y;
	me.i = 0;
	// alert(me.myStartY+' - '+me.endY);
	addInterval('resizeY("'+me.id+'");');
}

function resizeY(id) {
	me = document.getElementById(id);
	me.i += smooth;
	var finished = false;
	// if (me.i < 50) alert(me.myStartY+' - '+me.endY);
	var newY = (me.myStartY < me.endY) ? 
			me.myStartY + easing(me.i, 0, me.endY - me.myStartY, sizeTrans, 'bounceout') :
			me.myStartY - easing(me.i, 0, me.myStartY - me.endY, sizeTrans, tranType);
	
	if(me.i >= sizeTrans) {
		// sInts.splice(sInts.indexOf('resizeG(' + id +');'), 1);
		// if (!sInts.length) clearInterval(sInt);
		newY = me.endY;
		finished = true
		// alert(newX+' - '+newY);
	}
	//alert(newX);
	me.style.height = newY + 'px';
	return(finished);

}
function moveMe(me, inout, now) { // in = 1 out = 0
	if (now) {
		me.style.left = (inout) ? 0 + 'px' : 0 - me.width + 'px';
	}
	else {
		me.endX = (inout) ? 0 : 0 - me.width;
		me.myStartX = 0 - me.style.left.match(/[0-9]+/);
		//alert(me.myStartX);
		if ((me.myStartX - me.endX) == 0) return;
		me.i = 0;
		// alert(me.myStartY+' - '+me.endY);
		addInterval('moveG("'+me.id+'");');
	}
}

function moveG(id) {
	me = document.getElementById(id);
	me.i += smooth;
	var finished = false;
	// if (me.i < 50) alert(me.myStartY+' - '+me.endY);
	var newX = (me.myStartX < me.endX) ? 
			me.myStartX + easing(me.i, 0, me.endX - me.myStartX, gTrans, tranType) :
			me.myStartX - easing(me.i, 0, me.myStartX - me.endX, gTrans, tranType);

	if(me.i >= gTrans) {
		// alert(sInts.indexOf('moveG(' + id +');'));
		// if (!sInts.length) clearInterval(sInt);
		newX = me.endX;
		finished = true
		// alert(newX);
	}
	me.style.left = newX + 'px';
	return(finished);
}

function moveText(me, inout, now) { // in = 1 out = 0
	if (now) {
		// alert(me.offsetWidth);
		me.style.textIndent = (inout) ? 0 + 'px' : 0 - me.offsetWidth + 'px';
	}
	else {
		me.endX = (inout) ? 0 : 0 - me.offsetWidth;
		me.myStartX = 0 - me.style.textIndent.match(/[0-9]+/);
		//alert(me.myStartX);
		if ((me.myStartX - me.endX) == 0) return;
		me.i = 0;
		addInterval('textIndent("'+me.id+'");');
	}
}

function textIndent(id) {
	me = document.getElementById(id);
	me.i += smooth;
	var finished = false;
	// if (me.i < 50) alert(me.myStartY+' - '+me.endY);
	var newX = (me.myStartX < me.endX) ? 
			me.myStartX + easing(me.i, 0, me.endX - me.myStartX, gTrans, tranType) :
			me.myStartX - easing(me.i, 0, me.myStartX - me.endX, gTrans, tranType);

	if(me.i >= gTrans) {
		// alert(sInts.indexOf('moveG(' + id +');'));
		// if (!sInts.length) clearInterval(sInt);
		newX = me.endX;
		finished = true
		// alert(newX);
	}
	me.style.textIndent = newX + 'px';
	return(finished);
}
function addHover() {
	// fadeMe(this, 0, 100);
	addClass(this, 'hover');
}
function removeHover() {
	// fadeMe(this, 100, 0);
	removeClass(this, 'hover');
}
function playPause() {
	gallery.stopped = !gallery.stopped 
	if (gallery.stopped) {
		clearTimeout(cLI);
	} else {
		nextShow();
	}
	var x=document.getElementById('pp');
	x.innerHTML = (gallery.stopped) ? 'Pause' : 'Play';
	x.className = (!gallery.stopped) ? 'pause' : 'play';
	// alert (gallery.stopped + x.className);
	x.blur();
}
function onStartMoving() {
/*
	var test = document.getElementById('cpt')
	if (test) {
		// fadeMe(test, 75, 0);
  	document.getElementById('controls').removeChild(document.getElementById('cpt'));
	}
*/
}
function onDoneMoving() {
	if (gImages[curIm].title || gImages[curIm].alt) {
		var controls = document.getElementById('controls')
		if (!controls) {
			controls = document.createElement("DIV");
			controls.id = 'controls';
			document.getElementById('content').insertBefore(controls, gallery);
			hoverStuff();
			// sizeToG(controls, gImages[curIm].clientWidth, gImages[curIm].clientHeight);
		}
//		sizeToG(document.getElementById('controls'), gallery.offsetWidth, gallery.offsetHeight, 1);
//		controls.style.top = gallery.offsetTop + 'px';
//		controls.style.left = gallery.offsetLeft + 'px';
		var cpt = document.getElementById('cpt')
		if (!cpt) {
			cpt = document.createElement("DIV");
			cpt.id = 'cpt';
			// cpt.style.textIndent = '-200px';
			//moveText(cpt, 0, 1);
			document.getElementById('controls').appendChild(cpt);
		}
		//changeOpac(0, cpt.id);
		moveText(cpt, 1);
		cpt.innerHTML = gImages[curIm].title ? gImages[curIm].title : gImages[curIm].alt;
	}
}
