var isInternetExplorer = navigator.appName.indexOf("Microsoft") != -1;

// DOM FUNCTIONS

function getElem(elem) {
    if (document.getElementById) {
        if (typeof elem == "string") {
			document.write(elem);
            elem = document.getElementById(elem);
            if (elem===null) throw 'cannot get element: element is null';
        } else if (typeof elem != "object") {
            throw 'cannot get element: invalid datatype';
        }
    } else throw 'cannot get element: unsupported DOM';
    return elem;
}

arrayHas = function(array, value, start) {
    start = start || 0;
    for (var i=start; i<array.length; i++)
        if (array[i]==value)
            return 1;
    return 0;
}

function hasClass(elem, className) {
    return arrayHas(getElem(elem).className.split(' '), className);
}

function getElementsByClass(className, tagName, parentNode) {
    parentNode = parentNode? getElem(parentNode) : document;
    if (!tagName) tagName = '*';
    return filter(parentNode.getElementsByTagName(tagName),
        function(elem) { return hasClass(elem, className) });
}

// DOM EVENTS

function listen(event, elem, func) {
    elem = getElem(elem);
    if (elem.addEventListener)  // W3C DOM
        elem.addEventListener(event,func,false);
    else if (elem.attachEvent)  // IE DOM
        elem.attachEvent('on'+event, function(){ func(new W3CDOM_Event(elem)) } );
        // for IE we use a wrapper function that passes in a simplified faux Event object.
    else throw 'cannot add event listener';
}

function mlisten(event, elem_list, func) {
    map(elem_list, function(elem) { listen(event, elem, func) } );
}

function W3CDOM_Event(currentTarget) {
    this.currentTarget  = currentTarget;
    this.preventDefault = function() { window.event.returnValue = false }
    return this;
}

//MACROMEDIA IMAGE SWAP COMPRESSED CODE

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 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_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];}}
}

/* Create a new window */
function openInNewWindow(e) {
	var event;
	if (!e) event = window.event;
	else event = e;
	// Abort if a modifier key is pressed
	if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) {
		return true;
	}
	else {
	    var newWindow = window.open(this.getAttribute('href'), '_blank');
		if (newWindow) {
			if (newWindow.focus) {
				newWindow.focus();
			}
			return false;
		}
		return true;
	}
}

// SImon Willison's funky addLoadEvent function, see http://simon.incutio.com/archive/2004/05/26/addLoadEvent
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}


function preLoadNav() {
	MM_preloadImages('../nav/nav_about_f2.png','../nav/nav_artists_f2.png','../nav/nav_instruments_f2.png','../nav/nav_mp3_f2.png','../nav/nav_video_f2.png','../nav/nav_maps_f2.png','../nav/nav_studyguides_f2.png','../nav/nav_help_f2.png','../nav/ep_intro_over.jpg','../nav/ep_hotline_over.jpg','../nav/ep_global_over.jpg','../nav/ep_endangered_over.jpg','../nav/ep_legends_over.jpg','../nav/ep_tune_over.jpg','../nav/ep_extreme_over.jpg','../nav/ep_goat_over.jpg','../nav/ep_roots_over.jpg','../nav/ep_gothic_over.jpg','../nav/ep_mainstream_over.jpg');
}

addLoadEvent(preLoadNav);