var lastnum = 'select'; 


// Image swap for menu rollovers 
function rollover(imgSwap,imgName) { 
if (document.images != null) { 
imgSwap = eval(imgSwap + ".src"); 
document [imgName].src = imgSwap; 
} 
} 

// Crossbrowser js to show and hide elements 
function ob_hideElement(element_id) 
{ 
if (document.getElementById && 
document.getElementById(element_id) && 
document.getElementById(element_id).style) 
document.getElementById(element_id).style.visibility="hidden"; 
} 

function ob_showElement(element_id) 
{ 
if (document.getElementById && 
document.getElementById(element_id) && 
document.getElementById(element_id).style) 
document.getElementById(element_id).style.visibility="visible"; 
} 

function ob_showHideElement(element_id) 
{ 
if (document.getElementById(element_id).style.visibility=="visible") { 
ob_hideElement(element_id); 
} else { 
ob_showElement(element_id); 
} 
} 

// Swap element pictures 
function ob_swapPic(element_id, new_pic) 
{ 
if (document.getElementById(element_id) && 
document.getElementById(element_id).attributes['src']) 
document.getElementById(element_id).attributes['src'].nodeValue=new_pic; 
else 
document [element_id].src = new_pic; 
} 

// Show items clicked on picture menu 
function ob_showClickedItem(element1_id, element2_id, element3_id, new_pic, element4_id, new_title, element5_id, new_body, element6_id) 
{ 
ob_hideElement(element1_id); 
ob_showElement(element2_id); 
ob_swapPic(element3_id, new_pic); 
ob_swapText(element4_id, new_title); 
ob_swapText(element5_id, new_body); 
ob_hideElement(element6_id); 
} 

// Zoom in and out of maps 
function ob_nextMap(map) { 
if (window.loaded) { location.hash=ob_showElement(map+'show');} 
} 

function ob_lastMap(map,map2) { 
if ( window.loaded) { location.hash=ob_hideElement(map2+'show');} 
} 

// Ask politely to wait for pictures to load 
function ob_askPolitely(page1, page2){ 
if (confirm("You are about to be directed to a page which preloads many images. \nThey may take a while to load and your patience is appreciated. \nAlternatively, you may click \'Canel\' and be directed to a page \nwhich does not preload the images.")) { 
location=page1; 
}else { 
location=page2; 
} 
} 


// Writes text and html markup to the specified node 
function ob_writeCode(pointer, s) { 
var parent, tag, j; 
for ( var i=0; i < s.length; i++) { 
var c = s.charAt(i); 
if (c == "<") { 
var j = s.indexOf(">", i+1); 
tag = s.substring(i,j+1); 
if (tag.charAt(tag.length-2) == "/") { // empty element 
if (pointer != null && pointer.nodeType == 3) { pointer = pointer.parentNode; } 
pointer.appendChild( ob_createElementFromString(tag) ); 
} else if (tag.charAt(1) != "/") { // normal open tag 
if (pointer != null && pointer.nodeType == 3) { pointer = pointer.parentNode; } 
pointer = pointer.appendChild( ob_createElementFromString(tag) ); 
} else { // must be a closing tag 
if (pointer.parentNode != null && pointer.parentNode.parentNode != null) 
pointer = pointer.parentNode.parentNode; 
} 
i = j; 
} else { 
if (pointer.nodeType == 3) { 
n = s.indexOf("<", i+1); 
if (n == -1) { 
pointer.nodeValue += s.substr(i); // textNode.appendData not implemented in IE 5.x 
i = s.length; 
} else { 
pointer.nodeValue += s.substring(i,n); 
i = n-1; 
} 
} else { 
pointer = pointer.appendChild( document.createTextNode(c) ); 
} 
} 
} 
} 

// Creates child nodes to append to the specified node from supplied html markup in text string 
function ob_createElementFromString(str) { 
var node, a = str.match(/<(\w+)(\s+)?([^>]+)?>/); // split into name and key/value pairs 
if (a != null) { 
node = document.createElement(a[1]); 
if (a[3] != null) { 
var attrs = a[3].split(" "); // split the key/value pairs 
if (attrs.length > 0) { 
for ( var i=0; i < attrs.length; i++) { 
var att = attrs[i].split("="); // split a key/value pair 
if (att[0].length > 0 && att[0] != "/" && att[1].length != 2) { // do not operate on empty attributes 
var a_n = document.createAttribute(att[0]); 
a_n.value = att[1].replace(/^['"](.+)['"]$/, "$1"); // remove quotes from attribute value 
node.setAttributeNode(a_n); // append attribute node to new node 
} 
} 
} 
} 
} 
return node; 
} 

function ob_swapText(element_id, text) 
{ 
if (document.getElementById(element_id).hasChildNodes) { 
var kids = document.getElementById(element_id).childNodes.length; 
for (var i=kids-1;i>=0;i--) { 
document.getElementById(element_id).removeChild(document.getElementById(element_id).childNodes.item(i)); 
} 
} 
document.getElementById(element_id).value=''; 
ob_writeCode(document.getElementById(element_id), text); 
} // end func 


/// Loading status bar 
function getLayer(layerID) { 
if (document.getElementById) 
return document.getElementById(layerID); 
else if (document.all) 
return document.all[layerID]; 
else 
return null; 
} 

function updateBar() { 
statLayer.innerHTML = loaded+ "/" +total; 
var percent = Math.round(loaded/total * 100); 
if (cPercent != percent) 
{ 
cPercent = percent; 
barLayer.style.width = (cPercent*3) +"px"; 
percentLayer.innerHTML = cPercent+ "%"; 
} 
if (loaded == total) 
{ 
done(); 
} 
} 

function done() { 
ob_hideElement('promptdiv'); 
} 


function imgError() { 
alert("The following image failed to load, probably a broken link:\n" +this.src+ "\nPlease contact the webmaster of the site you are visiting about this. The program will skip this file now."); 
loaded++; 
updateBar(); 
} 

function imgLoaded() { 
loaded++; 
updateBar(); 
} 

function setYes(element_id) 
{ 
if (document.getElementById && 
document.getElementById(element_id)) 
document.getElementById(element_id).checked=true; 
} 

function showRep(element_start, num, message) 
{ 
var element_id = element_start+num; 
var element_lastid = element_start+lastnum 
ob_showElement(element_id); 
ob_hideElement(element_lastid); 
if (num != 'select') 
{ 
ob_hideElement(message); 
} 
if (num == 'select') 
{ 
ob_showElement(message); 
} 
lastnum = num; 
} 
