// Utilities -------------------------------------------------------------------

// Provide the XMLHttpRequest class for IE 5.x-6.x:
// Other browsers (including IE 7.x-8.x)  ignore this when XMLHttpRequest is predefined
if( typeof XMLHttpRequest == "undefined" ) XMLHttpRequest = function() {
  try { return new ActiveXObject("Msxml2.XMLHTTP.6.0") } catch(e) {}
  try { return new ActiveXObject("Msxml2.XMLHTTP.3.0") } catch(e) {}
  try { return new ActiveXObject("Msxml2.XMLHTTP") } catch(e) {}
  try { return new ActiveXObject("Microsoft.XMLHTTP") } catch(e) {}
  throw new Error( "This browser does not support XMLHttpRequest." )
};

// Includes HTML
function getHTML(url) {
	var alt = "<span />";
	if (typeof XMLHttpRequest != 'undefined') {
		var httpRequest = new XMLHttpRequest();
		httpRequest.open('GET', url, false);
		httpRequest.send(null);
		alt = httpRequest.responseText;
	} // if (typeof XMLHttpRequest != 'undefined')
	return alt;
} // function getHTML(url)

// Return all elements with the specified tag and class name
function getElementsByClass(tag, cls, prt) {
	var prt = (prt == null) ? document : prt;
	var allTags = prt.getElementsByTagName(tag);
	var retTags = new Array();
	for (var i=0; i<allTags.length; i++) {
		var classes = allTags[i].className.split(" ");
		for (var j=0; j<classes.length; j++) {
			if (classes[j] == cls) {
				retTags.push(allTags[i]);
			} // if (classes[j] == cls)
		} // for (var j=0; j<classes.length; j++)
	} // for (var i=0; i<allTags.length; i++)
	return retTags;
} // function getElementsByClass(cls)

// Add class name
function addClassName(tag, cls) {
	var classes = tag.className.split(" ");
	var className = "";
	classes.push(cls);
	for (var i=0; i<classes.length; i++) {
		className += classes[i] + " ";
	} // for (var i=0; i<classes.length; i++)
	return className.substr(0, className.length-1);
} // function addClassName(tag, class)

// Remove class name
function removeClassName(tag, cls) {
	var classes = tag.className.split(" ");
	var className = "";
	for (var i=0; i<classes.length; i++) {
		if (classes[i] != cls) {
			className += classes[i] + " ";
		} // if (classes[i] != cls)
	} // for (var i=0; i<classes.length; i++)
	return className.substr(0, className.length-1);
} // function removeClassName(tag, class)

// Behavioral ------------------------------------------------------------------

// Toggle menu items on mouse out or over
function toggleMenuItem(mitem) {
	var cls = mitem.className;
	if (cls.substr(cls.length-10,10)=="-over over") {
		mitem.className = cls.substr(0,cls.length-10);
	} else {
		mitem.className += "-over over";
	} // if (cls.substr(cls.length-5,5)==" over")
} // function overMenuItem(mitem)

// Utilities -------------------------------------------------------------------

// Clean up Twitter name
function TwitterName(strTName) {
	return strTName.substring(0,strTName.indexOf("(")-1);
} // function TwitterName()

// Initialization --------------------------------------------------------------

// Include specified HTML at specified points
function includeHTML() {
	// Take first argument as menu HTML's URL
	var url = arguments[0];
	// For other arguments, find the element with that ID string, and insert
	// the menu HTML as a child.
	var elem;
	for (var i=1; i<arguments.length; i++) {
		elem = document.getElementById(arguments[i]);
		elem.innerHTML = getHTML(url);
	} // for (var i=1; i<arguments.length; i++)
} // function includeHTML()

// Initializes unobtrusive JavaScript for main menu
function initMenu() {
	var mmenu = document.getElementById("mainmenu");
	var items = getElementsByClass('li', 'main', mmenu);
	for (var i=0; i<items.length; i++) {
		items[i].onmouseover = function() { toggleMenuItem(this); }
		items[i].onmouseout = function() { toggleMenuItem(this); }
	} // for (var i=0; i<items.length; i++)
} // function initMenu()

// Initialize index swfobject, if on homepage
function initIndexSWFObject() {
	var bodies = document.getElementsByTagName("body");
	if (bodies[0].className=="homepage") {
		var flashvars = {};
		var params = {
			wmode: "opaque",
			quality: "high",
			bgcolor: "#000000"
		};
		var attributes = params;
		swfobject.embedSWF("http://www.youtube.com/v/a-cxC0gvots&hl=en&fs=1&rel=0", "youtube", "213", "160", "9.0.0", "scripts/swfobject/expressInstall.swf", flashvars, params, attributes);
	} // if (bodies[0].className=="homepage")
} // function initIndexSWFObject()

// Initialize sIFR
function initSIFR() {
	if(typeof sIFR == "function"){
		sIFR.replaceElement(named({sSelector:"div#content h1", sFlashSrc:"http://www.ons.org/meetings/apn09/scripts/sIFR/myriadpro.swf", sColor:"#f47d30", sWmode: "transparent" }));
		sIFR.replaceElement(named({sSelector:"div#content h2", sFlashSrc:"http://www.ons.org/meetings/apn09/scripts/sIFR/myriadpro.swf	", sColor:"#f47d30", sWmode: "transparent" }));
	};
} // function initSIFR()

// Initialize links
function initLinks() {
	if (!document.getElementsByTagName) return;
	var newWindow = { external: '', onsorg: '', parent: '' }
	var links = document.getElementsByTagName("a");
	for (var i=0; i<links.length; i++) {
		var l = links[i];
		if (l.getAttribute("href")) {
			if (l.getAttribute("rel") in newWindow) {
				l.target = "_blank";
			} // if (l.getAttribute in newWindow)
			if (l.getAttribute("rel")=="download") {
				l.target = "_blank";
				l.setAttribute("onClick", "javascript: pageTracker._trackPageview('"+l.getAttribute("href")+"');");
			} // if (l.getAttribute("rel")=="download")
		} // if (l.getAttribute("href"))
	} // for (var i=0; i<links.length; i++)
} // function initLinks()

// Initialize weather widget
function initWeatherWidget() {
	var container = document.getElementById("weatherwidget");
	var widget = document.getElementById("netWxV2");
	if (container != null) {
		container.appendChild(widget);
	} // if (container != null)
} // function initWeatherWidget()

// Run initialization functions
function init() {
	initMenu();
	initLinks();
	//initIndexSWFObject();
	initSIFR();
	initWeatherWidget();
} // function init()