////////////////////
// addLoadEvent() //
////////////////////

function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function () {
oldonload();
func();
}
}
}

////////////////
// in_array() //
////////////////

function in_array(needle,haystack) {
var found = false;
for (var i = 0; i < haystack.length; i++) {
if (haystack[i] == needle) {
found = true;
break;
} else {
found = false;
}
}
return found;
}


//////////////////
// toggleList() //
//////////////////
function toggleList(aTag) {
// get parent li
var parentLI = aTag.parentNode;
var uls = parentLI.getElementsByTagName('UL');
for (var i = 0; i < uls.length; i++) {
var thisUL = uls[i];
//var thisA = uls[i].li.a;
thisUL.style.display = (thisUL.style.display != 'none') ? 'none' : '';
aTag.style.backgroundImage = (thisUL.style.display != 'none') ? 'url("/template/default/images/arrow_down.gif")' : 'url("/template/default/images/arrow.gif")';
}
}


/////////////////////
// accordianInit() //
/////////////////////
function accordianInit() {
var parentUL = (document.getElementById('accordian')) ? document.getElementById('accordian') : false;
if (parentUL) {
var uls = parentUL.getElementsByTagName('UL');
for (var i = 0; i < uls.length; i++) {
var thisUL = uls[i];
thisUL.style.display = 'none';
}
}
}

///////////////
// encrypt() //
///////////////

function encrypt(username,hostname,linktext,subject,message){
var username = username || 'info';
var hostname = hostname || 'nswpb.ca';
var address = username + '&#64;' + hostname;
var linktext = linktext || address;
var subject = subject || '';
if (subject != '') {
subject = '?subject=' + subject;
}
var message = message || '';
if (message != '') {
message = '?body=' + message;
}
var output = '<a href="&#109;&#97;&#105;&#108;' + '&#116;&#111;&#58;'+ address + subject + message +'" class="email">'+ linktext +'</a>';
document.write(output);
}

//////////////////
// validEmail() //
//////////////////

function validEmail(emailStr) {
var emailPat=/^(.+)@(.+)$/;
var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
var validChars="\[^\\s" + specialChars + "\]";
var quotedUser="(\"[^\"]*\")";
var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
var atom=validChars + '+';
var word="(" + atom + "|" + quotedUser + ")";
var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
var matchArray=emailStr.match(emailPat);
if (matchArray==null) {
return false;
}
var user=matchArray[1];
var domain=matchArray[2];
if (user.match(userPat)==null) {
return false;
}
var IPArray=domain.match(ipDomainPat)
if (IPArray!=null) {
for (var i=1;i<=4;i++) {
if (IPArray[i]>255) {
return false;
}
}
}
var domainArray=domain.match(domainPat);
if (domainArray==null) {
return false;
}
var atomPat=new RegExp(atom,"g");
var domArr=domain.match(atomPat);
var len=domArr.length;
if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3) {
return false;
}
if (len<2) {
return false;
}
return true;
}

// Tree

//////////////////
// treeToggle() //
//////////////////

function treeToggle(aTag) {
if (aTag.parentNode.tagName == 'LI') { // valid LI
if (aTag.className == 'on') { // turn off
ulDisplay(aTag,'none');
aTag.className = 'off';
} else { // turn off
ulDisplay(aTag,'block');
aTag.className = 'on';
} // end turn on
var aTags = document.getElementsByTagName('A');
for (var i = 0; i < aTags.length; i++) { // for each A tag in the document
childATags = aTags[i].parentNode.getElementsByTagName('A');
aTagFound = false;
for (var j = 0; j < childATags.length; j++) { // for each A tag within the parent LI
if (childATags[j] == aTag) { // aTag found within parent LI
aTagFound = true;
break;
} // end aTag found within parent LI
} // for each A tag within the parent LI
if (!aTagFound) { // aTag not found, set display to 'none'
ulDisplay(aTags[i],'none');
if (aTags[i].className == 'on') { // set className to 'off'
aTags[i].className = 'off';
} // end set className to 'off'
} // end aTag not found, set display to 'none'
} // end for each A tag in the document
} // end valid LI
}

/////////////////
// ulDisplay() //
/////////////////

function ulDisplay(aTag,displayValue) {
var parentLI = aTag.parentNode;
var ulTags = parentLI.getElementsByTagName('UL');
var i = ulTags.length;
while (i--) { // for each ul descending
immediateChild = false;
for (var j = 0; j < parentLI.childNodes.length; j++) { // for each child node
if (parentLI.childNodes[j] == ulTags[i]) { // ulTags[i] is immediate child of parentLI
immediateChild = true;
break;
} // end ulTags[i] is immediate child of parentLI
} // end for each child node
if (immediateChild) { // toggle display
ulTags[i].style.display = displayValue;
} // end toggle display
} // end for each ul descending
}

// hide branches
document.write('<link href="/template/shared/css/tree.css" rel="stylesheet" type="text/css" media="screen" />');

addLoadEvent(function () { accordianInit(); });
