// JavaScript Document
// Body onload utility (supports multiple onload functions)
var gSafeOnload = new Array();
function SafeAddOnload(f)
{
	
isMac = (navigator.appVersion.indexOf("Mac")!=-1) ? true : false;
IEmac = ((document.all)&&(isMac)) ? true : false;
IE4 = ((document.all)&&(navigator.appVersion.indexOf("MSIE 4.")!=-1)) ? true : false;
if (IEmac && IE4) // IE 4.5 blows out on testing window.onload
{
window.onload = SafeOnload;
gSafeOnload[gSafeOnload.length] = f;
}
else if (window.onload)
{
if (window.onload != SafeOnload)
{
gSafeOnload[0] = window.onload;
window.onload = SafeOnload;
} 
gSafeOnload[gSafeOnload.length] = f;
}
else
window.onload = f;
}

function SafeOnload()
{
for (var i=0;i<gSafeOnload.length;i++)
gSafeOnload[i]();
}



function switch_src(id,src){
	
		var imageobj=document.getElementById(id);
		if(imageobj.filters!=null)imageobj.filters[0].apply();
		imageobj.setAttribute('src', src);
		if(imageobj.filters!=null) imageobj.filters[0].play();
		
		
}



	
/*
	Standards Compliant Rollover Script
	Author : Daniel Nolan
	http://www.bleedingego.co.uk/webdev.php
*/

function initRollovers() {
	
	if (!document.getElementById) return
	

	var aPreLoad = new Array();
	var aPreLoad_remotes = new Array();
	var aRemote_rollovers = new Array();
	var oDefault_over = new Array();
	var z = 0; 
	var sTempSrc;
	var aImages = document.getElementsByTagName('img');
	var def_counter = 0;  //counter for oDefault_over

	for (var i = 0; i < aImages.length; i++) {
		
		//begin Remote Rollover setup
		if (aImages[i].className.match("remote")) {
			aTrigger = new Array(); 
			aRemote_rollovers[z]=aImages[i];
			var src = aImages[i].getAttribute('src');
			var ftype = src.substring(src.lastIndexOf('.'), src.length);
			aTrigger = aImages[i].className.split(/\s/);// splits the class string if there are multiple classes
														// only works if there are only _remote classes
			for (var x=0; x< aTrigger.length; x++) { 
					aPreLoad_remotes[z,x]= new Image(); // just used z to create 2D array so preloading wouldn't overwrite images upon re-entering this loop
					aTrigger[x]=aTrigger[x].replace("_remote",""); 
					//alert(aTrigger[x]);
					aPreLoad_remotes[z,x].src = src.replace(ftype,'_'+aTrigger[x]+ftype);
					
					aRemote_rollovers[z].setAttribute(aTrigger[x],aPreLoad_remotes[z,x].src); // sets up an array with "remote object to rollover"."trigger obj id", and the property "trigger obj id" has the value of the file to be rolled to
			}
			z++;   // z adds one for every time an image with class including "_remote" is found
		}
		//end Remote Rollover setup
		
		//begin normal Rollover setup
		if (aImages[i].className.match("rollover")) {
			
			var src = aImages[i].getAttribute('src');
			
			var ftype = src.substring(src.lastIndexOf('.'), src.length);
			var hsrc = src.replace(ftype, '_over'+ftype);
			
			if (aImages[i].className.match("default_over")) {  //immediately turn on image with class "default_over"
				oDefault_over[def_counter] = aImages[i];
				var imgtemp = oDefault_over[def_counter] .getAttribute('src');
				oDefault_over[def_counter].setAttribute('src',hsrc);
				oDefault_over[def_counter].setAttribute('hsrc',imgtemp);
				menu_div(oDefault_over[def_counter]); //sets up .menu_div for oDefault_over[def_counter]
				write_to_children(oDefault_over[def_counter].menu_div,oDefault_over[def_counter]);
				def_counter++;
			}
			else { //Don't apply mouseover/out fncts to "default_over"
				
				aImages[i].setAttribute('hsrc', hsrc);
				aPreLoad[i] = new Image();
				aPreLoad[i].src = hsrc;
				
				aImages[i].onmouseover = function rollover_over(e) { // e is used in case of netscape to pass event
					var imageobj =this;
					imageobj.mousein="yes";  
					rollover(imageobj);
					
					//alert("from "+window.event.fromElement.menu);
					//alert("to "+imageobj.menu);
					//alert(" imageobj = "+menu_div(imageobj).id);
					//alert("def_over parent = "+menu_div(oDefault_over[0]).id);
					
					// begin revert back to default_over
					var fromElement;
					if (!e) var e = window.event;  //see http://www.quirksmode.org/js/events_mouse.html#relatedtarget
					if (e.relatedTarget) fromElement = e.relatedTarget;  //for netscape
					else if (e.fromElement) fromElement = e.fromElement;  //for IE
					else fromElement = "nothing";  //for case of page load with mouse over rollover, there is no From element, so it crashes script unless fromelement given some value
						
						for (var x = 0; x< oDefault_over.length; x++) { // if there is a default_over image, fade it in and out
							if (menu_div(oDefault_over[x]) == menu_div(imageobj) && fromElement.menu!= imageobj.menu ) { //only fade in and out default over if it is in the same menu, but also not if you are only moving in the same menu
								if(oDefault_over[x].filters!=null) oDefault_over[x].filters[0].apply();
								var imgtemp = oDefault_over[x].getAttribute('src');
								oDefault_over[x].setAttribute('src', oDefault_over[x].getAttribute('hsrc'));
								if(oDefault_over[x].filters!=null) oDefault_over[x].filters[0].play();
								oDefault_over[x].setAttribute('hsrc',imgtemp);
							}
						}
					//end revert back to default over
					
					
					//begin remote rollover process
					var image_id = parent_id(imageobj);
					var from_id = parent_id(fromElement);

					for (var i = 0; i < aRemote_rollovers.length; i++) {
						if (aRemote_rollovers[i].getAttribute(image_id)) { //find the remote image to affect
							if(aRemote_rollovers[i].filters!=null) aRemote_rollovers[i].filters[0].apply();
							if (!aRemote_rollovers[i].getAttribute(from_id)) {
								var orig_src = aRemote_rollovers[i].src;
								aRemote_rollovers[i].setAttribute('orig_src',orig_src);  //if its a transition from one trigger to another, don't reset orig_src
							}
							aRemote_rollovers[i].setAttribute('src', aRemote_rollovers[i].getAttribute(image_id));
							if(aRemote_rollovers[i].filters!=null) aRemote_rollovers[i].filters[0].play();
						}
					}
					//end remote rollover process
					
				}	
				
				aImages[i].onmouseout = function rollover_out(e) {
					var imageobj =this;
					if (imageobj.mousein=="yes") {  //need this to avoid when entering page with the mouse over a rollover, otherwise mouseout is called with no mouseover
						rollover(imageobj);
						imageobj.mousein="no";
						
						//capture info about to/from mouseover 
						var toElement;
						if (!e) var e = window.event;  //see http://www.quirksmode.org/js/events_mouse.html#relatedtarget
						if (e.relatedTarget) toElement = e.relatedTarget;  //for netscape
						else if (e.toElement) toElement = e.toElement;  //for IE
						else toElement = "nothing";  //for case of page load with mouse over rollover, there is no to element, so it crashes script unless toelement given some value
						
						//begin revert back to default over
							for (var x = 0; x< oDefault_over.length; x++) { // if there is a default_over image, fade it in and out
								if (menu_div(oDefault_over[x]) == menu_div(imageobj) && toElement.menu!= imageobj.menu ) { //only fade in and out default over if it is in the same menu, but also not if you are only moving in the same menu
									if(oDefault_over[x].filters!=null) oDefault_over[x].filters[0].apply();
									var imgtemp = oDefault_over[x].getAttribute('src');
									oDefault_over[x].setAttribute('src', oDefault_over[x].getAttribute('hsrc'));
									if(oDefault_over[x].filters!=null) oDefault_over[x].filters[0].play();
									oDefault_over[x].setAttribute('hsrc',imgtemp);
								}
							}
						//end revert back to default over
						
						//begin remote rollover process
						var image_id = parent_id(imageobj);
						var to_id = parent_id(toElement);
						
						
						for (var i = 0; i < aRemote_rollovers.length; i++) {
							if (aRemote_rollovers[i].getAttribute(image_id) && !aRemote_rollovers[i].getAttribute(to_id)) { //find the remote image to affect, but don't revert back to original if mouseout is to another trigger for this image
								if(aRemote_rollovers[i].filters!=null) aRemote_rollovers[i].filters[0].apply();
								aRemote_rollovers[i].setAttribute('src', aRemote_rollovers[i].getAttribute('orig_src'));
								if(aRemote_rollovers[i].filters!=null) aRemote_rollovers[i].filters[0].play();
							}
						}
						//end remote rollover process
					}
				}
			}
		}
	}
	  
}

function rollover(imageobj) {
	
		if(imageobj.filters!=null)imageobj.filters[0].apply();
		var imgtemp = imageobj.src;
		imageobj.setAttribute('src', imageobj.getAttribute('hsrc'));
		if(imageobj.filters!=null) imageobj.filters[0].play();
		imageobj.setAttribute('hsrc',imgtemp);
		
		
}
		


function parent_id(obj){
	if (obj && obj!="nothing" && obj.tagName!="HTML" && obj.tagName!="BODY") { //"nothing" is for case of no fromELement exisiting, see above
		
		obj.parent_div = obj; 
		while (obj.parent_div.tagName!='DIV') { //iterate up to find div container for obj. if obj is a div, stops here
			obj.parent_div= obj.parent_div.parentNode;
		}
		obj.parent_id = obj.parent_div.getAttribute('id');
		return obj.parent_id;
	}
}

function menu_div(obj) {
	if (obj && obj.tagName!="HTML") { //Need HTML exception otherwise error when going from rollover out to background
		parent_id(obj); //sets up .parent_div as first containing div - should be img holder
		var id =obj.parent_div.parentNode.id; //next up should be menu container
		obj.menu_div= obj.parent_div.parentNode;
		return obj.menu_div;
	}
}

function write_to_children(element, Default) {
	var aChildren = new Array();
	aChildren = element.childNodes;
	for (var x = 0; x< aChildren.length; x++) {   // write "menu" attribute to all but the default over item
		if (aChildren[x].nodeType == 1 && aChildren[x]!=Default ) aChildren[x].menu = parent_id(Default); //menu = id of default over 
		if (aChildren[x].hasChildNodes) write_to_children(aChildren[x], Default)
	}
}













SafeAddOnload(initRollovers);