// page controls
var timeon = null
document.onmouseover=hideall;
window.onerror = null;

// array contains labels for nav
label = new Array('a','b','c','d');
// array contains btn names
//btns  = new Array('music','festival','community','buytickets');
btns  = new Array('leftnav_bands','leftnav_festival','leftnav_community','leftnav_tixmerch');

//var yPos = 28;

// value for hiding all menus
menus = 3;
subs  = 8;

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function songListen (id) {
	window.open("song.php?id="+id,"song_mini_site","width=240, height=125, scrollbars=no, menubar=no");
}

function bandMiniSite (id) {
	win2 = window.open("artists_mini.php?id="+id,"artist_mini_site","width=470, height=450, resizable=yes, scrollbars=yes, menubar=no");
	win2.creator = self;
}

function cosmicMiniSite (id) {
	win2 = window.open("cosmic_mini.php?id="+id,"cosmic_mini","width=468, height=450, scrollbars=yes, menubar=no");
	win2.creator = self;
}

function openMap () {
	window.open("map.html","map","width=658, height=597, scrollbars=yes, menubar=no");
}

function openAerial () {
	window.open("aerial.html","aerial","width=785, height=510, scrollbars=yes, menubar=no");
}

function over (message) { 
	clearTimeout(timeon);
}

// hide all menus
function hideall () {
	for(id=1; id<=menus; id++) {
		swapview('menu' + id, 'hidden');
	}
	hideallsubs();
	MM_swapImgRestore();
}

// hide all submenus
function hideallsubs () {
	for(id=1; id<=subs; id++) {
		swapview('sub' + id, 'hidden');
	}
}

// roll out of object
function out () {
	if(document.layers) {
		timeon = setTimeout("hideall()", 400);
	}
	for(id=1; id<=subs; id++) {
		swapview('sub' + id, 'hidden');
	}

}

// show a menu
function show (num, obj) {
	if (obj) {
		hideall();
		obj.cancelBubble=true
		MM_swapImage(label[num-1],'','images/'+btns[num-1]+'_on.gif',1);
		var menuID = "menu" + num;
		move (menuID, label[num-1],0); //95
		if (swapview(menuID,'visible')) {
			return true;
		} else {
			return false;
		}
	} else {
		return false;
	}
} // show layer

// show a menu
function showsub (num, obj) {
	if (obj) {
		hideallsubs();
		obj.cancelBubble=true
		// MM_swapImage(label[num-1],'','images/'+btns[num-1]+'_on.gif',1);
		var menuID = "sub" + num;
		if (subMove (menuID, "sub_id" + num,125)) {
			if (swapview(menuID,'visible')) {
				return true;
			} else {
				return false;
			}
		} else {
			return false;	
		}
	} else {
		return false;
	}
} // show layer

// hide a menu
function hide (num, obj) {
	if (obj) {
		obj.cancelBubble = true;
		var menuID = "menu" + num;
		if (swapview (menuID,'hidden')) {
			return true;
		} else {
			return false;
		}
	} else {
		return false;
	}
} // show layer


// find specifed objects left offset
function getleft(ele, xo) { 
	var elem = MM_findObj(ele);
	xPos = elem.offsetLeft; 
	tempEl = elem.offsetParent; 
	while (tempEl != null) { 
		xPos += tempEl.offsetLeft; 
		tempEl = tempEl.offsetParent; 
	} 
	return xPos+xo;
} // getElementLeft

/* find specifed objects top offset */
function gettop(ele) {
	var elem = MM_findObj(ele);
	yPos = elem.offsetTop;
	tempEl = elem.offsetParent;
	while (tempEl != null) {
		yPos += tempEl.offsetTop;
		tempEl = tempEl.offsetParent;
	}
	return yPos;
}

function getStyleObject(obj) {
    // cross-browser function to get an object's style object given its id
  if(document.getElementById && document.getElementById(obj)) {
	// W3C DOM
		return document.getElementById(obj).style;
  } else if (document.all && document.all(obj)) {
	// MSIE 4 DOM
		return document.all(obj).style;
  } else if (document.layers && document.layers[obj]) {
	// NN 4 DOM.. note: this won't find nested layers
		return document.layers[obj];
  } else {
		return false;
  }
} // getStyleObject

function move (obj, offset, xo) {
  // get a reference to the cross-browser style object and make sure the object exists
  var styleObject = getStyleObject(obj);
  if(styleObject) {
		// document.write(newYCoordinate);
		styleObject.left = getleft(offset,xo);
		styleObject.top  = gettop (offset)+28; // menu img height, hard coded here
		return true;
  } else {
		// we couldn't find the object, so we can't very well move it
		return false;
  }
} // moveObject


function subMove (obj, offset, xo) {
  // get a reference to the cross-browser style object and make sure the object exists
  var styleObject = getStyleObject(obj);
  if(styleObject) {
		// document.write(newYCoordinate);
		styleObject.left = getleft(offset,xo);
		styleObject.top  = gettop (offset); // menu img height, hard coded here
		return true;
  } else {
		// we couldn't find the object, so we can't very well move it
		return false;
  }
} // moveObject

function swapview (obj, val) {
	var styleObject = getStyleObject(obj);
	if (styleObject) {
		styleObject.visibility = val;
		return true;
	} else {
		return false;
	}
} // changeVisibility

// initialize hacks whenever the page loads
window.onload = initializeHacks;

// setup an event handler to hide popups for generic clicks on the document
document.onclick = hideall;

function initializeHacks() {
    // this ugly little hack resizes a blank div to make sure you can click
    // anywhere in the window for Mac MSIE 5
  if ((navigator.appVersion.indexOf('MSIE 5') != -1) 
		&& (navigator.platform.indexOf('Mac') != -1)
		&& getStyleObject('blankDiv')) {
		window.onresize = explorerMacResizeFix;
  }
  resizeBlankDiv();
  // this next function creates a placeholder object for older browsers
  createFakeEventObj();
}

function createFakeEventObj() {
	// create a fake event object for older browsers to avoid errors in function call
	// when we need to pass the event object to functions
  if (!window.event) {
		window.event = false;
  }
} // createFakeEventObj

function resizeBlankDiv() {
	// resize blank placeholder div so IE 5 on mac will get all clicks in window
	if ((navigator.appVersion.indexOf('MSIE 5') != -1) 
		&& (navigator.platform.indexOf('Mac') != -1)
		&& getStyleObject('blankDiv')) {
			getStyleObject('blankDiv').width = document.body.clientWidth - 20;
			getStyleObject('blankDiv').height = document.body.clientHeight - 20;
  }
}
function explorerMacResizeFix () {
    location.reload(false);
}
