// inArray: An array matching function that returns a boolean -- after all, if PHP has this, why can't JS?
Array.prototype.inArray = function (value) {
	var i;
	for (i=0; i < this.length; i++) {
		if (this[i] === value) {
			return true;
		}
	}
	return false;
};

// Jeremy Keith's missing DOM function
function insertAfter (newElement, targetElement) {
  var parent = targetElement.parentNode;
  if (parent.lastChild == targetElement) {
    parent.appendChild(newElement);
  } else {
    parent.insertBefore(newElement, targetElement.nextSibling);
  }
}

// Simon Willison's magnum opus
function addLoadEvent (func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    };
  }
}

// My special map Loadr
function prepareMap () {
  if (!document.getElementById) return false;
  if (!document.getElementsByTagName) return false;
  var body_element = document.getElementsByTagName("body")[0];
  var pageId = body_element.className.split(" ")[1];
  var campusId = body_element.className.split(" ")[0];
  
  var elementId = "map";
  
  if (pageId != "pcom_largemap" && pageId != "ga_largemap") {
    var elem = document.getElementById("map");
    var width = elem.clientWidth;
    var height = elem.clientHeight;
    
    // var so = new SWFObject("swf/"+pageId+"_"+elementId+".swf", pageId+"_"+elementId, width, height, "9", "#ffffff");
    var so = new SWFObject("swf/"+campusId+"_"+elementId+".swf", campusId+"_"+elementId, width, height, "9", "#ffffff");
    so.addVariable("pageId", pageId);
    // so.addParam("wmode", "transparent");               /*turned off because it caused fuzz in FF*/
    so.write(elementId);
  }
}

// My SlideShowPro LoTR
function preparePhoto () {
  if (!document.getElementById) return false;
  if (!document.getElementsByTagName) return false;
  var body_element = document.getElementsByTagName("body")[0];
  var pageId = body_element.className.split(" ")[1];
  var campusId = body_element.className.split(" ")[0];
  
  var elementId = "photo";
  
  // CREATING BLACKLIST OF PAGES THAT SHALL HAVE NO SLIDESHOW!!!1
  var blacklist = new Array();
  blacklist.push("pcom_welcome");
  blacklist.push("pcom_presidents_office");
  blacklist.push("pcom_bookstore");
  blacklist.push("pcom_thank_you");
  blacklist.push("pcom_video");
  /*blacklist.push("pcom_largemap");*/
  blacklist.push("ga_welcome");
  blacklist.push("ga_georgia_campus");
  blacklist.push("ga_anatomy_lab");
  blacklist.push("ga_cafeteria");
  blacklist.push("ga_fitness_center");
  blacklist.push("ga_thank_you");
  blacklist.push("ga_video");
  /*blacklist.push("ga_largemap");*/
  
  // OK, LOAD SSP FOR ALL PAGES WITH MULTIPLE PHOTOS, i.e., THAT AREN'T IN THE BLACKLIST ABOVE ^^^
  if (!blacklist.inArray(pageId)) {
    var elem = document.getElementById("photo");
    var width = elem.clientWidth;
    var height = elem.clientHeight;
    
    if (pageId != 'pcom_largemap' && pageId != 'ga_largemap') {
      width += 1;
      elem.style.width = width+"px";
	  
	  height += 26;
      elem.style.height = height+"px";
	  
	  elem.style.borderLeft = "none";
      elem.style.borderBottom = "1px solid #d6d6d6";
      
      var so = new SWFObject("swf/"+campusId+"_ssp.swf", pageId+"_"+elementId, width, height, "9", "#ffffff");
      so.addVariable("xmlfile", "xml/"+pageId+"_"+elementId+".xml");
    } else {
      var so = new SWFObject("swf/"+campusId+"_largemap.swf", pageId+"_"+elementId, width, height, "9", "#ffffff");
    }
    
    if (so) {
      so.useExpressInstall('swf/expressinstall.swf');
      so.setAttribute('xiRedirectUrl', window.location.href); /*must be the absolute URL to your site*/
      so.write(elementId);
    }
  }
}

// Some unobtrusive video popupage.
function prepareVideo () {
  if (!document.getElementById) return false;
  if (!document.getElementsByTagName) return false;
  if (!document.createElement) return false;
  if (!document.createTextNode) return false;
  var body_element = document.getElementsByTagName("body")[0];
  var pageId = body_element.className.split(" ")[1];
  var campusId = body_element.className.split(" ")[0];
  
  if (pageId == 'pcom_video' || pageId == 'ga_video') {
    var thumbnails = document.getElementById("thumbs");
    var videolinks = thumbnails.getElementsByTagName("a");
    
    var videobox = document.createElement("div");
    videobox.setAttribute("id", "videobox");
    // insertAfter(videobox,thumbnails);
    thumbnails.parentNode.insertBefore(videobox, thumbnails);
    
    for (var i=0; i < videolinks.length; i++) {
      // alert("Link number " + (i+1) + " has a URL of " + href);
      videolinks[i].onclick = function() { return loadFLV(this); };
    }
  }
}

function removeElement(divByeBye, divParent) {
  var olddiv = document.getElementById(divByeBye);
  divParent.removeChild(olddiv);
}

function loadFLV (link) {
  if (!link.getElementsByTagName("span")) return true;
  if (!link.getAttribute("title")) return true;
  
  var source = link.id;
  if (link.getElementsByTagName("span")[0].firstChild.nodeType == 3) {
    var text = link.getElementsByTagName("span")[0].firstChild.nodeValue;
  } else return true;
  var description = link.getAttribute("title");
  
  videobox = document.getElementById("videobox");
  
  if (text) {
    videobox.innerHTML = '';
    var videoheader = document.createElement("h3");
    var videoheader_txt = document.createTextNode(text);
    videoheader.appendChild(videoheader_txt);
    videobox.appendChild(videoheader);
  } else return true;
  
  var flv = document.createElement("div");
  flv.setAttribute("id", "flv");
  videobox.appendChild(flv);
  
  if (description) {
    var videodesc = document.createElement("p");
    videodesc_txt = document.createTextNode(description);
    videodesc.appendChild(videodesc_txt);
    videobox.appendChild(videodesc);
  } else return true;
  
  var so = new SWFObject(source+".swf", source, 320, 240, "8", "#ffffff");
  if (so) { so.write(flv); } else return true;
  
  return false;
}

// SPAWN SPAWN SPAWN!!!
addLoadEvent(prepareMap);
addLoadEvent(preparePhoto);
/*addLoadEvent(prepareVideo);*/

