/* var last_img_name = "";
var arrow_on = new Image();
var arrow_off = new Image();
arrow_on.src = "images/arrow.jpg";
arrow_off.src = "images/blank.gif";

function changepicture(img_name) {
	alert("off: \"" + last_img_name + "\", on: \"" + img_name + "\"");
	if(last_img_name != "") { document[last_img_name].src = 'images/blank.gif'; }
	last_img_name = img_name;
	document[img_name].src = arrow_on.src;
}
function addtocitem(item_name, item_addy, img_name) {
	document.write('<img src="images/blank.gif" width="12" height="12" name="' + img_name + '"> ');
	document.write("<a href=\"" + item_addy + "\" target=\"displayed\" class=\"toc\">");
	document.write(item_name + '</a><br><img src="images/blank.gif" height="5"><br>');
} */

if(typeof(frameit) == 'undefined') frameit = true;
var thedebugger = false;

function addheadingimage(name, alink) {
	name = name.replace(/ /g,"_").toLowerCase();
	if(alink != "" && alink != null) document.write('<a name="' + alink + '" class="subtitle">');
	document.write('<img src="images/headline_' + name + '.jpg">');
	if(alink != "" && alink != null) document.write('</a>');
	document.write('<br>');
}

function addlinedivider(width) {
	width = width || 90;
	document.write('<table width="' + width + '%" border="0" cellpadding="0" cellspacing="0">');
	document.write('<tr><td><img src="images/blank.gif" width="100%" height="2"></td></tr>');
	document.write('<tr><td><img src="images/black.gif" width="100%" height="2"></td></tr>');
	document.write('<tr><td><img src="images/blank.gif" width="100%" height="2"></td></tr>');
	document.write('</table>');
}

function addheading(title, alink, summary, extrainfo) {
	document.write("<table width=\"100%\">");
	document.write("<tr><td><a name=\"" + alink + "\" class=\"subtitle\">" + title + "</a></td></tr>");
	document.write('<tr><td><table width="90%" border="0" cellpadding="0" cellspacing="0">');
	document.write('<tr><td><img src="images/black.gif" width="100%" height="2"></td></tr>');
	document.write('<tr><td><img src="images/blank.gif" width="100%" height="2"></td></tr>');
	if(summary != "" && summary != null)
		document.write('<tr><td><p class="description">' + summary + '</p></td></tr>');
	if(extrainfo != "" && extrainfo != null)
		document.write('<tr><td><p class="extrainfo">' + extrainfo + '</p></td></tr>');
	document.write('</table></td></tr></table>');
}

// http://www.webreference.com/programming/javascript/onloads/
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

function addToTheTop() {
	document.write('<p class="tothetop">&#060;<a href="nowhere.html" onclick="window.location.hash = \'#top\'; return false;">Back to the top</a>&#062;</p>');
}

function popup(url,winname) {
	if(winname == "" || winname == null) winname = 'Hansa Center';
	newwindow = window.open(url,winname,'width=600,height=300,scrollbars=1');
	if(window.focus) newwindow.focus();
	return false; // allows for: onclick="return popup('file.html','some file');
}

// code to change the Table of Contents selector to current page
function changeTOCSelected(towhich) {
	addLoadEvent(
		function() { parent.toc.changepicture( towhich ); }
	);
}

// strip off the file part of the URL
function findURLDir(url) {
	var loc = url.lastIndexOf('/');
	if(loc > 0) return url.substr(0, loc + 1);
	loc = url.lastIndexOf('\\');
	if(loc > 0) return url.substr(0, loc + 1);
	return url;
}

// returns orig, but altered by globally replacing every section of text beginning with searchStart and ending in searchEnd with replacetxt
function replace_text(orig, searchStart, searchEnd, replacetxt) {
	var altered = orig;
	while((s = altered.indexOf(searchStart)) > -1) {
		var e = altered.indexOf(searchEnd, s+searchStart.length);
		if(e>-1) {
			altered = altered.substring(0, s) + replacetxt + altered.substring(e + searchEnd.length);
		}
	}
	return altered;
	
}

// make sure that the site is correctly framed
if(frameit == true) {
	addLoadEvent(function() {
		var url = self.location.href;
		var urldir = findURLDir(url);
		// if user is viewing a page that should be framed in content pane, or
		// if the framing page is not the top (for frames), or
		// if the framing page's framing page is not the top (for iframed frames), then
		// redirect to index.html
		//if (self == top || parent != top || parent.parent != top) top.location.href = urldir + "index.html";
		if(self == top) top.location.href = urldir + "index.html";
	});
}

//http://www.bytemycode.com/snippets/snippet/537/
function unloadJS(scriptName) {
	var head = document.getElementsByTagName('head').item(0);
	var js = document.getElementById(scriptName);
	js.parentNode.removeChild(js);
}
function unloadAllJS() {
	var jsArray = new Array();
	jsArray = document.getElementsByTagName('script');
	for (i = 0; i < jsArray.length; i){
		if (jsArray[i].id){
			if(jsArray[i].id != "keepit") unloadJS(jsArray[i].id)
		}else{
			jsArray[i].parentNode.removeChild(jsArray[i]);
		}
	}
}

/***********************************************************
* execute dynamically loaded js
* http://bytes.com/answers/javascript/670048-xmlhttprequest-innerhtml-executing-javascript
***********************************************************/
function getEmbeddedHTML(){
	var my_page_request = false;
	if (window.XMLHttpRequest) my_page_request = new XMLHttpRequest();
	else if (window.ActiveXObject){
		try {my_page_request = new ActiveXObject("Msxml2.XMLHTTP");}
		catch (e){try{my_page_request = new ActiveXObject("Microsoft.XMLHTTP");} catch (e){}}
	}
	else return false;
	var url = '[YOUR URL]';
	var con = '[YOUR UNIQUE DIV/CONTAINER ID]';
	my_page_request.open('GET', url, true);
	my_page_request.onreadystatechange=function(){loadpage(my_page_request, con);}
	my_page_request.send(null);
}
function loadpage(my_page_request, con){
	if (my_page_request.readyState == 4 && (my_page_request.status==200 || myBindexOf(window.location.href,"http",0)==-1)) {
		var myResponse = my_page_request.responseText;
		var myContainer = document.getElementById(con);
		myContainer.innerHTML=myResponse;
		executeEmbeddedScripts(myContainer,myResponse);
	}
}
function executeEmbeddedScripts(node,theResponse){
	var bSaf = (myBindexOf(navigator.userAgent,'Safari',0) != -1);
	var bOpera = (myBindexOf(navigator.userAgent,'Opera',0) != -1);
	var bMoz = (navigator.appName == 'Netscape');
	if (!node) return;
	var myHead=document.getElementsByTagName('head');
	if ((!bSaf)&&(!bOpera)&&(!bMoz)) node.innerHTML="&nbsp;&nbsp;"+theResponse; // World's most retarded IE fix
	var st = node.getElementsByTagName('script');
	var strExec;
	var scripts = st.length;
	var i = 0;
	for(j = 0; j < scripts; j++){
		var scriptsAtStart = st.length;
		if (bSaf) {strExec = st[i].innerHTML; st[i].innerHTML = "";}
		else if (bOpera) {strExec = st[i].text; st[i].text = "";}
		else if (bMoz) {strExec = st[i].textContent; st[i].textContent = "";}
		else {strExec = st[i].text; st[i].text = "";}
		try {
			var myScript = document.createElement("script");
			myHead.item(0).appendChild(myScript);
			myScript.type = "text/javascript";
			myScript.text=strExec;
			var html = node.innerHTML;
			// jscript would prematurely eject if it encountered the full closing tag, even encapsulated in a string object
			var endScriptL = '<' + '/script>';  
			var endScriptU = '<' + '/SCRIPT>';
			var pos2 = myBindexOf(html,strExec,0);
			var pos = myBindexOf(html,endScriptL,pos2) >= 0 ? myBindexOf(html,endScriptL,pos2) : myBindexOf(html,endScriptU,pos2);
			pos += String(endScriptL).length;
			html = html.substr(0,pos) + html.substr(pos);
			node.innerHTML = html;
			if(scriptsAtStart==st.length) i++;
		} catch(e) {
			alert("Script execution error: "+e);
		}
	}
}
function myBindexOf(myObject,mySearch,myPos){
	if (myPos==null) myPos=0;
	if (typeof(myObject)!='object') return -1;
	if(!myObject.indexOf) {
	for(var i=myPos; i < myObject.length; i++) if(myObject[i]==mySearch) return i;
	return -1;
	} else return myObject.indexOf(mySearch,myPos);
}

/***********************************************************
* execute dynamically loaded js
* http://microformats.org/wiki/rest/ahah
***********************************************************/

var bSaf = (navigator.userAgent.indexOf('Safari') != -1);
var bOpera = (navigator.userAgent.indexOf('Opera') != -1);
var bMoz = (navigator.appName == 'Netscape');
function execJS(node) {
  var st = node.getElementsByTagName('SCRIPT');
  var strExec;
  for(var i=0;i<st.length; i++) {     
    if (bSaf) {
      strExec = st[i].innerHTML;
    }
    else if (bOpera) {
      strExec = st[i].text;
    }
    else if (bMoz) {
      strExec = st[i].textContent;
    }
    else {
      strExec = st[i].text;
    }
    try {
      eval(strExec.split("<!--").join("").split("-->").join(""));
    } catch(e) {
      alert(e);
    }
  }
}



/***********************************************************
* DHTML Code
* useful: http://unixpapa.com/js/dyna.html
***********************************************************/

//http://www.w3schools.com/Ajax/ajax_examples.asp

var xmlhttp;
var xmlFAIL = false;
var d_pagesCount = 0;
var d_pagesURL = [];
var d_pagesID = [];
var d_curURL;
var d_curID;
var d_curLoading = false;

function loadPage(url, intoID) {
	d_pagesURL[d_pagesCount] = url;
	d_pagesID[d_pagesCount] = intoID;
	d_pagesCount++;
	loadNextPage();
}

function loadNextPage() {
	if(d_curLoading) return;
	if(d_pagesCount == 0) return;
	
	if((xmlhttp = getXMLHTTP()) == null) return;
	
	d_pagesCount--;
	d_curURL = d_pagesURL[d_pagesCount];
	d_curID = d_pagesID[d_pagesCount];
	d_curLoading = true;
	
	xmlhttp.onreadystatechange = state_Change;
	xmlhttp.open("GET", d_curURL, true);
	xmlhttp.send("");
}

function getXMLHTTP() {
	var newxmlhttp = null;
	if(xmlFAIL) return null;
	if(window.XMLHttpRequest) {			// FF, Opera, IE7, ...
		newxmlhttp = new XMLHttpRequest();
	} else if(window.ActiveXObject) {	// IE6, IE5, ...
		newxmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
	if(newxmlhttp == null) {
		xmlFAIL = true;
		alert("Your browser does not support XMLHTTP.");
	}
	return newxmlhttp;
}

function state_Change() {
	if(xmlhttp.readyState != 4) return; // not loaded
	
	if(xmlhttp.status != 200 && xmlhttp.status != 0) { // not ok
		alert("Problem retrieving data:" + d_curURL + " " + xmlhttp.status + " " + xmlhttp.statusText);
		//loadPage(d_curURL, d_curID); // try again?
	} else {
		var container = document.getElementById(d_curID);
		container.innerHTML = xmlhttp.responseText;
		//executeEmbeddedScripts(container, xmlhttp.responseText);
		execJS(container);
	}
	
	d_curLoading = false;
	loadNextPage();
}



