//do browser stuff
dom = (document.getElementById) ? true : false;
ns5 = ((navigator.userAgent.indexOf("Gecko")>-1) && dom) ? true: false;
ie5 = ((navigator.userAgent.indexOf("MSIE")>-1) && dom) ? true : false;
ns4 = (document.layers && !dom) ? true : false;
ie4 = (document.all && !dom) ? true : false;
nodyn = (!ns5 && !ns4 && !ie4 && !ie5) ? true : false;
var zIndexXPR = 1;

function showTab(iidee)
{
zIndexXPR++;

var theLyr = (ns4)? document.layers[iidee] : (ie4)? document.all[iidee].style : (ie5||ns5)?   document.getElementById(iidee).style: null;				
theLyr.display= '';
theLyr.zIndex = zIndexXPR;
}

function hideTab(iidee)
{
var theLyr = (ns4)? document.layers[iidee] : (ie4)? document.all[iidee].style : (ie5||ns5)?   document.getElementById(iidee).style: null;				
theLyr.display= 'none';
}

var zIndexXPR = 1;

function showhide(iidee)
{
zIndexXPR++;

var theLyr = (ns4)? document.layers[iidee] : (ie4)? document.all[iidee].style : (ie5||ns5)?   document.getElementById(iidee).style: null;				
theLyr.display= theLyr.display=='none' ? '' : 'none';
theLyr.zIndex = zIndexXPR;
}

function showDiv(iidee)
{
zIndexXPR++;

var theLyr = (ns4)? document.layers[iidee] : (ie4)? document.all[iidee].style : (ie5||ns5)?   document.getElementById(iidee).style: null;				
theLyr.display= '';
theLyr.zIndex = zIndexXPR;
}

function hideDiv(iidee)
{
var theLyr = (ns4)? document.layers[iidee] : (ie4)? document.all[iidee].style : (ie5||ns5)?   document.getElementById(iidee).style: null;				
theLyr.display= 'none';
}

//do browser stuff
dom = (document.getElementById) ? true : false;
ns5 = ((navigator.userAgent.indexOf("Gecko")>-1) && dom) ? true: false;
ie5 = ((navigator.userAgent.indexOf("MSIE")>-1) && dom) ? true : false;
ns4 = (document.layers && !dom) ? true : false;
ie4 = (document.all && !dom) ? true : false;
nodyn = (!ns5 && !ns4 && !ie4 && !ie5) ? true : false;
var zIndexXPR = 1;

function ShowContent(iidee)
{
zIndexXPR++;

var theLyr = (ns4)? document.layers[iidee] : (ie4)? document.all[iidee].style : (ie5||ns5)?   document.getElementById(iidee).style: null;				
theLyr.display= 'block';
theLyr.zIndex = zIndexXPR;
}

function hideContent(iidee)
{
var theLyr = (ns4)? document.layers[iidee] : (ie4)? document.all[iidee].style : (ie5||ns5)?   document.getElementById(iidee).style: null;				
theLyr.display= 'none';
}


var ie=document.all;
var ns6=document.getElementById&&!document.all;

// set the counter so we alwas start at 1 and can update as we go along
var myThumbCounter = 1;

function ietruebody(){
return (document.compatMode && document.compatMode!="BackCompat" && !window.opera)? document.documentElement : document.body;
}

function enlarge(which,myDivId){

if (ie||ns6){
crossobj= document.getElementById(myDivId) ;
if (crossobj==null)
crossobj= document.getElementById(myDivId) ;
}

crossobj.innerHTML='<img src="'+which+'" align=center>';
crossobj.style.visibility="visible";
return false;

}

function showImageInfo(title, description, myDivId){

document.getElementById(myDivId) .innerHTML= '<div class=galleryInfoTitle>' + title+ '</div><div class=galleryInfoDesc>' +description+ '</div>';
return false;
}



/* add border function */

var myLastImg = '';

function switchBorder(myDiv,uniqueID) {

document.getElementById(myDiv).style.border='1px solid #000000';

if (myLastImg != '') {
document.getElementById(myLastImg).style.border='1px solid #FFFFFF';
}

if(myDiv== myLastImg) {
document.getElementById(myDiv).style.border='1px solid #000000';
}

//document.getElementById(myDiv).focus();

myLastImg = myDiv;
myThumbCounter = uniqueID;
}


/* THUMBNAIL ARRAY */


var myThumbsArray = new Array();

function switchBack() {

var actualSize = myThumbsArray.length; 

if(myThumbCounter>1){
myThumbCounter--;
} else {
myThumbCounter = actualSize-1;
}

thumbTitle = myThumbsArray[myThumbCounter]["thumbTitle"];
thumbDesc = myThumbsArray[myThumbCounter]["thumbDesc"];
thumbImage = myThumbsArray[myThumbCounter]["thumbImage"];
thumbImageDiv = myThumbsArray[myThumbCounter]["thumbImageDiv"];


enlarge(thumbImage,'anGalleryImagePhotos');
showImageInfo(thumbTitle, '', 'anGalleryTitle');
showImageInfo('', thumbDesc, 'anGalleryDesc');
switchBorder(thumbImageDiv, myThumbCounter); 
}

function switchNext() {

var actualSize = myThumbsArray.length; 

if(actualSize -1> myThumbCounter){
myThumbCounter++;
} else {
myThumbCounter = 1;
}

thumbTitle = myThumbsArray[myThumbCounter]["thumbTitle"];
thumbDesc = myThumbsArray[myThumbCounter]["thumbDesc"];
thumbImage = myThumbsArray[myThumbCounter]["thumbImage"];
thumbImageDiv = myThumbsArray[myThumbCounter]["thumbImageDiv"];

enlarge(thumbImage,'anGalleryImagePhotos');
showImageInfo(thumbTitle, '', 'anGalleryTitle');
showImageInfo('', thumbDesc, 'anGalleryDesc');
switchBorder(thumbImageDiv, myThumbCounter); 
}






//SHOW FIRST THUMBNAIL and INFO when page loads


function showFirstThumb() {

thumbTitle = myThumbsArray[myThumbCounter]["thumbTitle"];
thumbDesc = myThumbsArray[myThumbCounter]["thumbDesc"];
thumbImage = myThumbsArray[myThumbCounter]["thumbImage"];
thumbImageDiv = myThumbsArray[myThumbCounter]["thumbImageDiv"];

enlarge(thumbImage,'anGalleryImagePhotos');
showImageInfo(thumbTitle, '', 'anGalleryTitle');
showImageInfo('', thumbDesc, 'anGalleryDesc');
switchBorder(thumbImageDiv, myThumbCounter); 

}

/*  MISC JAVASCRIPT*/

function popup(mylink, windowname)
{

if (! window.focus)return true;
var href;
if (typeof(mylink) == 'string')
   href=mylink;
else
   href=mylink.href;

window.open(href, windowname, 'resizable=yes,scrollbars=yes');//,titlebar=yes');
return false;
}

function actNowActivityOpenPopup(url) {
	newwindow=window.open(url,'ActivityTracker','resizable=yes, scrollbars=yes, height=800, width=800');
	if (window.focus) {newwindow.focus()}
	return false;
}

function open_link(link){

window.open(link, "new_win");
   if (spawn.blur) spawn.focus();

}

function showPillars(theForm) {
    for(i=0; i < theForm.elements.length; i++) {
        if (theForm.elements[i].type == "checkbox") {
            if (theForm.elements[i].checked == true) {
                showDiv(theForm.elements[i].value);

            }
        }
    }    
    hideDiv('MainPillar');
}

function getQueryVariable(variable) {
    var query = location.search.substring(1);
    var vars = query.split("&");
    for (var i=0;i<vars.length;i++) {
        var pair = vars[i].split("=");
        if (pair[0] == variable) {
            return pair[1];
        }
    } 
}


/*  CHECK EMAIL ADDRESS  */

function echeck(str) {

		var at="@"
		var dot="."
		var lat=str.indexOf(at)
		var lstr=str.length
		var ldot=str.indexOf(dot)
		if (str.indexOf(at)==-1){
		   alert("Invalid E-mail Address")
		   return false
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   alert("Invalid E-mail Address")
		   return false
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    alert("Invalid E-mail Address")
		    return false
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    alert("Invalid E-mail Address")
		    return false
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    alert("Invalid E-mail Address")
		    return false
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		    alert("Invalid E-mail Address")
		    return false
		 }
		
		 if (str.indexOf(" ")!=-1){
		    alert("Invalid E-mail Address")
		    return false
		 }

 		 return true					
	}

function ValidateForm(theForm){

	var emailID=theForm.user_email;
	
	if ((emailID.value==null)||(emailID.value=="")){
		alert("Please Enter a valid email address")
		emailID.focus()
		return false
	}
	if (echeck(emailID.value)==false){
		emailID.value=""
		emailID.focus()
		return false
	}
	return true
 }

function delayer(){
    window.location = "http://app.actnow.gov.bc.ca/DPA/Login"
}


function validateCertificate(theForm){

	var partID=theForm.participant;
	var oneID=theForm.one;
	var twoID=theForm.two;
	var threeID=theForm.three;
	var dateID=theForm.date;
	
	if ((partID.value==null)||(partID.value=="")){
		alert("Please Enter Your Name")
		partID.focus()
		return false
	}

	if ((oneID.value==null)||(oneID.value=="")){
		alert("Please Fill Out No. 1")
		oneID.focus()
		return false
	}

	if ((twoID.value==null)||(twoID.value=="")){
		alert("Please Fill Out No. 2")
		twoID.focus()
		return false
	}
	
	if ((threeID.value==null)||(threeID.value=="")){
		alert("Please Fill Out No. 3")
		threeID.focus()
		return false
	}
 
	if ((dateID.value==null)||(dateID.value=="")){
		alert("Please Enter a Valid Date")
		dateID.focus()
		return false
	}
	return true

}

/*  JAVASCRIPT TABLE BUILDING SCRIPT */

var tdCount = 0;

function setupTable(tableName,columns) {

table = document.getElementById(tableName);
tb=document.createElement('tbody');

table.appendChild(tb);

tdCount = 0;
maxTD = columns;

}

function addTableCell(tableData) {

if (tdCount == 0) {
tr=document.createElement('tr');
tb.appendChild(tr);
}

//create our new cell
td=document.createElement('td');
td.innerHTML=tableData;

//add our cell to the current row
tr.appendChild(td);

tdCount++;

if (tdCount == maxTD) {
tdCount = 0;
}

}


/*TEXT SIZER SCRIPT*/

var min=11;
var max=18;
function increaseFontSize() {
   var p = document.getElementsByTagName('div','p','td','ul','li','a');
   for(i=0;i<p.length;i++) {
      if(p[i].style.fontSize) {
         var s = parseInt(p[i].style.fontSize.replace("px",""));
      } else {
         var s = 12;
      }
      if(s!=max) {
         s += 1;
      }
      p[i].style.fontSize = s+"px";
   }
   setCookie("fontSize",s,1);
}
function decreaseFontSize() {
      var p = document.getElementsByTagName('div','p','td','ul','li','a');   
      for(i=0;i<p.length;i++) {
      if(p[i].style.fontSize) {
         var s = parseInt(p[i].style.fontSize.replace("px",""));
      } else {
         var s = 12;
      }
      if(s!=min) {
         s -= 1;
      }
      
      p[i].style.fontSize = s+"px";
   }   
   setCookie("fontSize",s,1);
}



/*  VIIDEO GALLERY SCRIPTS */


function loadFlashVideoHome(movieName) {

crossobj = document.getElementById('actNowHomeVideoScreen');

crossobj.innerHTML= '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="210" height="181" id="flvplayer" align="middle"> <param name="allowScriptAccess" value="sameDomain" /> <param name="movie" value="/media/actNowFlvPlayer.swf?videoFile='+movieName+'" /> <param name="menu" value="false" /> <param name="quality" value="high" /> <PARAM NAME=wmode VALUE=transparent> <embed src="/media/actNowFlvPlayer.swf?videoFile='+movieName+'" menu="false" quality="high" wmode=transparent width="340" height="271" name="flvplayer" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></object>';

return false;

}

function loadFlashVideoHome2(movieName) {

crossobj = document.getElementById('actNowHomeVideoScreen2');

crossobj.innerHTML= '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="210" height="181" id="flvplayer" align="middle"> <param name="allowScriptAccess" value="sameDomain" /> <param name="movie" value="/media/actNowFlvPlayer.swf?videoFile='+movieName+'" /> <param name="menu" value="false" /> <param name="quality" value="high" /> <PARAM NAME=wmode VALUE=transparent> <embed src="/media/actNowFlvPlayer.swf?videoFile='+movieName+'" menu="false" quality="high" wmode=transparent width="340" height="271" name="flvplayer" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></object>';

return false;

}


function loadFlashVideo(movieName,myDivId) {

crossobj = document.getElementById(myDivId);

crossobj.innerHTML= '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="320" height="260" id="flvplayer" align="middle"> <param name="allowScriptAccess" value="sameDomain" /> <param name="movie" value="/media/actNowFlvPlayer320.swf?videoFile='+movieName+'" /> <param name="menu" value="false" /> <param name="quality" value="high" /> <PARAM NAME=wmode VALUE=transparent> <embed src="/media/actNowFlvPlayer320.swf?videoFile='+movieName+'" menu="false" quality="high" wmode=transparent width="320" height="260" name="flvplayer" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></object>';

return false;

}


function sept08loadFlashVideo(movieName,myDivId) {

crossobj = document.getElementById(myDivId);

crossobj.innerHTML= '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="213" height="171" id="flvplayer" align="middle"> <param name="allowScriptAccess" value="sameDomain" /> <param name="movie" value="/media/actNowFlvPlayer.swf?videoFile='+movieName+'" /> <param name="menu" value="false" /> <param name="quality" value="high" /> <PARAM NAME=wmode VALUE=transparent> <embed src="/media/actNowFlvPlayer.swf?videoFile='+movieName+'" menu="false" quality="high" wmode=transparent width="213" height="171" name="flvplayer" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></object>';

return false;

}



function showImageInfo(title,description,myDivId)
{
crossobj = document.getElementById(myDivId);
crossobj.innerHTML='<span class=galleryInfoTitle>' + title+ '</span><span class=galleryInfoDesc>' +description+'</span>';

return false;
}


var ie=document.all;
var ns6=document.getElementById&&!document.all;

// set the counter so we alwas start at 1 and can update as we go along
var myThumbCounter = 1;

function ietruebody(){
return (document.compatMode && document.compatMode!="BackCompat" && !window.opera)? document.documentElement : document.body;
}

function enlarge(which,myDivId){

if (ie||ns6){
crossobj= document.getElementById(myDivId) ;
if (crossobj==null)
crossobj= document.getElementById(myDivId) ;
}

crossobj.innerHTML='<img src="'+which+'" align=center>';
crossobj.style.visibility="visible";
return false;

}

function showImageInfo(title, description, myDivId){

document.getElementById(myDivId) .innerHTML= '<div class=galleryInfoTitle>' + title+ '</div>';

/*<div class=galleryInfoDesc>' +description+ '</div>';*/

return false;
}



/* add border function */

var myLastImg = '';

function switchBorder(myDiv,uniqueID) {

document.getElementById(myDiv).style.border='1px solid #000000';

if (myLastImg != '') {
document.getElementById(myLastImg).style.border='1px solid #FFFFFF';
}

if(myDiv== myLastImg) {

document.getElementById(myDiv).style.border='1px solid #000000';
}

//document.getElementById(myDiv).focus();

myLastImg = myDiv;
myThumbCounter = uniqueID;
}


/* THUMBNAIL ARRAY */


var myThumbsArray = new Array();

function switchBack() {

var actualSize = myThumbsArray.length; 

if(myThumbCounter>1){
myThumbCounter--;
} else {
myThumbCounter = actualSize-1;
}

thumbTitle = myThumbsArray[myThumbCounter]["thumbTitle"];
thumbDesc = myThumbsArray[myThumbCounter]["thumbDesc"];
thumbImage = myThumbsArray[myThumbCounter]["thumbImage"];
thumbImageDiv = myThumbsArray[myThumbCounter]["thumbImageDiv"];


enlarge(thumbImage,'actNowGalleryImagePhotos');
showImageInfo(thumbTitle, '', 'actNowGalleryTitle');
showImageInfo('', thumbDesc, 'actNowGalleryDesc');
switchBorder(thumbImageDiv, myThumbCounter); 
}

function switchNext() {

var actualSize = myThumbsArray.length; 

if(actualSize -1> myThumbCounter){
myThumbCounter++;
} else {
myThumbCounter = 1;
}

thumbTitle = myThumbsArray[myThumbCounter]["thumbTitle"];
thumbDesc = myThumbsArray[myThumbCounter]["thumbDesc"];
thumbImage = myThumbsArray[myThumbCounter]["thumbImage"];
thumbImageDiv = myThumbsArray[myThumbCounter]["thumbImageDiv"];

enlarge(thumbImage,'actNowGalleryImagePhotos');
showImageInfo(thumbTitle, '', 'actNowGalleryTitle');
showImageInfo('', thumbDesc, 'actNowGalleryDesc');
switchBorder(thumbImageDiv, myThumbCounter); 
}






//SHOW FIRST THUMBNAIL and INFO when page loads


function showFirstThumb() {

thumbTitle = myThumbsArray[myThumbCounter]["thumbTitle"];
thumbDesc = myThumbsArray[myThumbCounter]["thumbDesc"];
thumbImage = myThumbsArray[myThumbCounter]["thumbImage"];
thumbImageDiv = myThumbsArray[myThumbCounter]["thumbImageDiv"];

enlarge(thumbImage,'actNowGalleryImagePhotos');
showImageInfo(thumbTitle, '', 'actNowGalleryTitle');
showImageInfo('', thumbDesc, 'actNowGalleryDesc');
switchBorder(thumbImageDiv, myThumbCounter); 

}

function validateAll(which) {


var pass=true;
if (document.images) {

for (i=0;i<which.length;i++) {

var tempobj=which.elements[i];
if (tempobj.name.substring(0,1)=="*") {

if (((tempobj.type=="text"||tempobj.type=="textarea")&&
tempobj.value=='')||(tempobj.type.toString().charAt(0)=="s"&&
tempobj.selectedIndex==0)) {
pass=false;
break;
         }
      }
   }
}

if (!pass) {
shortFieldName=tempobj.name.substring(1,40).toUpperCase();
alert("Please make sure the "+shortFieldName+" field was properly completed.");
return false;
}
else
return true;
}

/*  FRENCH VERSION */

function validateAllFrench(which) {

var pass=true;
if (document.images) {

for (i=0;i<which.length;i++) {

var tempobj=which.elements[i];
if (tempobj.name.substring(0,1)=="*") {

if (((tempobj.type=="text"||tempobj.type=="textarea")&&
tempobj.value=='')||(tempobj.type.toString().charAt(0)=="s"&&
tempobj.selectedIndex==0)) {
pass=false;
break;
         }
      }
   }
}

if (!pass) {
shortFieldName=tempobj.name.substring(1,40).toUpperCase();
alert("Veuillez vous assurer que le champ "+shortFieldName+" a ?t? correctement rempli.");
return false;
}
else
return true;
}

// Date Format Method
// copyright Stephen Chapman, 20th November 2007
// http://javascript.about.com
// permission to use this JavaScript on your web page is granted
// provided that all of the code below in this script (including these
// comments) is used without any alteration

Date.prototype.getMonthName = function() {var m = ['January','February','March','April','May','June','July','August','September','October','November','December'];return m[this.getMonth()];} 
Date.prototype.getMonthShort = function() {var m = ['JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC'];return m[this.getMonth()];} 
Date.prototype.getDayName = function() {var d = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];return d[this.getDay()];}
Date.prototype.getDayShort = function() {var d = ['SUN','MON','TUE','WED','THU','FRI','SAT'];return d[this.getDay()];}
Date.prototype.ordinal = function() {var d = this.getDay();switch(d) {case 1: case 21: case 31: return 'st'; case 2: case 22: return 'nd'; case 3: case 23: return 'rd'; default: return 'th';}}
Date.prototype.getDOY = function() {var onejan = new Date(this.getFullYear(),0,1);return Math.ceil((this - onejan) / 86400000);} 
function daysInMonth(month,year) {var dd = new Date(year, month, 0);return dd.getDate();} 
Date.prototype.format = function(f) {var fmt = f.split(''); var res = ''; for (var i = 0, l = fmt.length; i < l; i++) {switch(fmt[i]) {case 'd': var d = this.getDate();  res += ((d<10)?'0':'')+d;  break; case 'D': res += this.getDayShort(); break; case 'j': res += this.getDate(); break; case 'l': res += this.getDayName(); break; case 'S': res += this.ordinal(); break; case 'w': res += this.getDay(); break; case 'z': res += this.getDOY(); break; case 'F': res += this.getMonthName(); break; case 'm': var m = this.getMonth()+1;  res += ((m<10)?'0':'')+m;  break; case 'M': res += this.getMonthShort(); break; case 'n': res += (this.getMonth()+1); break; case 't': res += daysInMonth(this.getMonth()+1, this.getFullYear()); break; case 'L': res += (daysInMonth(2, this.getFullYear()) == 29)? 1:0; break; case 'Y': res += this.getFullYear(); break; case 'y': var y = this.getFullYear().toString().substr(3); res += ((y<10)?'0':'')+y; break; case 'a': res += (this.getHours()>11)?'pm':'am'; break; case 'A': res += (this.getHours()>11)?'PM':'AM'; break; case 'g': var h = this.getHours()%12; res += (h==0)?12:h; break; case 'G': res += this.getHours; break; case 'h': var h = this.getHours()%12; res += (h==0)?12:(h>9)?h:'0'+h; break; case 'H': var h = this.getHours; res += (h>9)?h:'0'+h; break; case 'i': var m = this.getMinutes(); res += (m>9)?m:'0'+m; break; case 's': var s = this.getSeconds(); res += (s>9)?s:'0'+s; break; case 'O': var m = this.getTimezoneOffset(); var s = (m<0)?'+':'-'; m = Math.abs(m); var h = (m/60).toFixed(0); m = m%60; res += s + ((h>9)?h:'0'+h) + ((m>9)?m:'0'+m); break; case 'P': var m = this.getTimezoneOffset(); var s = (m<0)?'+':'-'; m = Math.abs(m); var h = (m/60).toFixed(0); m = m%60; res += s + ((h>9)?h:'0'+h) + ':' + ((m>9)?m:'0'+m); break; case 'U': res += (this.getTime()/1000).toFixed(0); break; default: res += fmt[i];}}return res;}

// Date Format Method
// copyright Stephen Chapman, 20th November 2007
// http://javascript.about.com
// permission to use this JavaScript on your web page is granted
// provided that all of the code below in this script (including these
// comments) is used without any alteration

Date.prototype.getMonthName = function() {var m = ['January','February','March','April','May','June','July','August','September','October','November','December'];return m[this.getMonth()];} 
Date.prototype.getMonthShort = function() {var m = ['JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC'];return m[this.getMonth()];} 
Date.prototype.getDayName = function() {var d = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];return d[this.getDay()];}
Date.prototype.getDayShort = function() {var d = ['SUN','MON','TUE','WED','THU','FRI','SAT'];return d[this.getDay()];}
Date.prototype.ordinal = function() {var d = this.getDay();switch(d) {case 1: case 21: case 31: return 'st'; case 2: case 22: return 'nd'; case 3: case 23: return 'rd'; default: return 'th';}}
Date.prototype.getDOY = function() {var onejan = new Date(this.getFullYear(),0,1);return Math.ceil((this - onejan) / 86400000);} 
function daysInMonth(month,year) {var dd = new Date(year, month, 0);return dd.getDate();} 
Date.prototype.format = function(f) {var fmt = f.split(''); var res = ''; for (var i = 0, l = fmt.length; i < l; i++) {switch(fmt[i]) {case 'd': var d = this.getDate();  res += ((d<10)?'0':'')+d;  break; case 'D': res += this.getDayShort(); break; case 'j': res += this.getDate(); break; case 'l': res += this.getDayName(); break; case 'S': res += this.ordinal(); break; case 'w': res += this.getDay(); break; case 'z': res += this.getDOY(); break; case 'F': res += this.getMonthName(); break; case 'm': var m = this.getMonth()+1;  res += ((m<10)?'0':'')+m;  break; case 'M': res += this.getMonthShort(); break; case 'n': res += (this.getMonth()+1); break; case 't': res += daysInMonth(this.getMonth()+1, this.getFullYear()); break; case 'L': res += (daysInMonth(2, this.getFullYear()) == 29)? 1:0; break; case 'Y': res += this.getFullYear(); break; case 'y': var y = this.getFullYear().toString().substr(3); res += ((y<10)?'0':'')+y; break; case 'a': res += (this.getHours()>11)?'pm':'am'; break; case 'A': res += (this.getHours()>11)?'PM':'AM'; break; case 'g': var h = this.getHours()%12; res += (h==0)?12:h; break; case 'G': res += this.getHours; break; case 'h': var h = this.getHours()%12; res += (h==0)?12:(h>9)?h:'0'+h; break; case 'H': var h = this.getHours; res += (h>9)?h:'0'+h; break; case 'i': var m = this.getMinutes(); res += (m>9)?m:'0'+m; break; case 's': var s = this.getSeconds(); res += (s>9)?s:'0'+s; break; case 'O': var m = this.getTimezoneOffset(); var s = (m<0)?'+':'-'; m = Math.abs(m); var h = (m/60).toFixed(0); m = m%60; res += s + ((h>9)?h:'0'+h) + ((m>9)?m:'0'+m); break; case 'P': var m = this.getTimezoneOffset(); var s = (m<0)?'+':'-'; m = Math.abs(m); var h = (m/60).toFixed(0); m = m%60; res += s + ((h>9)?h:'0'+h) + ':' + ((m>9)?m:'0'+m); break; case 'U': res += (this.getTime()/1000).toFixed(0); break; default: res += fmt[i];}}return res;}

/* IMAGE MANAGEMENT JAVASCRIPT */

function MM_swapImgRestore() {
  	var i, x, a = document.MM_sr;
  	for(i=0; a&&i < a.length&&(x=a[i])&&x.oSrc; i++) {
  		x.src=x.oSrc;
	}
}

function MM_preloadImages() {
  	var d = document;
	if(d.images){
		if(!d.MM_p) {
			d.MM_p=new Array();
		}
    	var i, j = d.MM_p.length, a = MM_preloadImages.arguments;
		for(i=0; i < a.length; i++) {
    		if (a[i].indexOf("#")!=0) {
				d.MM_p[j]=new Image;
				d.MM_p[j++].src=a[i];
			}
		}
	}
}

function MM_findObj(n, d) {
  	var p, i, x;
	if(!d) {
		d=document;
	}
	if((p=n.indexOf("?")) > 0&&parent.frames.length) {
    	d=parent.frames[n.substring(p+1)].document;
		n=n.substring(0,p);
	}
  	if(!(x=d[n])&&d.all) {
		x=d.all[n];
	}
	for (i=0; !x&&i<d.forms.length; i++) {
		x=d.forms[i][n];
	}
  	for(i=0; !x&&d.layers&&i<d.layers.length; i++) {
		x=MM_findObj(n,d.layers[i].document);
	}
	return x;
}

function MM_swapImage() {
  	var i, j = 0, x, a = MM_swapImage.arguments;
	document.MM_sr=new Array;
	for(i=0; i < (a.length-2); i+=3) {
   		if ((x=MM_findObj(a[i])) != null){
			document.MM_sr[j++]=x;
			if(!x.oSrc) {
				x.oSrc=x.src;
				x.src=a[i+2];
			}
		}
	}
}

function openPopup(theURL,winName,features)
{
    window.open(theURL,winName,features);
}

function openPreview(URLtoOpen,windowName,screenWidth, screenHeight) {
	var screenWidth;
	var screenHeight;

	if (navigator.appName == 'Microsoft Internet Explorer' && (navigator.platform.substring(0,3) == 'Win')) {
			var scw=screenWidth;
			var sch=screenHeight;
			var scl=(screen.width / 2) - (screenWidth / 2);
			var sct=(screen.height / 2) - (screenHeight / 2);
			window.open (URLtoOpen, windowName, "left=" + scl + ",top=" + sct + ",width=" + scw + ",height=" + sch + ',scrollbars=yes,status=no,resizable=yes');
		}
	else if (navigator.appName == 'Netscape' || navigator.platform == 'MacPPC') {
			var scw=screenWidth;
			var sch=screenHeight;
			var scl=(screen.width / 2) - (screenWidth / 2);
			var sct=(screen.height / 2) - (screenHeight / 2);
			window.open (URLtoOpen, windowName, "screenX=" + scl + ",screenY=" + sct + ",outerWidth=" + scw + ",outerHeight=" + sch + ',scrollbars=yes,status=no,resizable=yes');
		}
	else {
			var scw=screenWidth;
			var sch=screenHeight;
			var scl=(screen.width / 2) - (screenWidth / 2);
			var sct=(screen.height / 2) - (screenHeight / 2);
			window.open (URLtoOpen, windowName, "screenX=" + scl + ",screenY=" + sct + ",outerWidth=" + scw + ",outerHeight=" + sch + ',scrollbars=yes,status=no,resizable=yes');
		}
}


function openPopup(theURL,winName,features) {
	window.open(theURL,winName,features);
}

function show_msg(msg) { alert(msg); }

function validateForm() {
	missing_required = 0;

	for (i = 0; i < arguments.length; i++) {
		if(arguments[i] == '') {
			missing_required = 1;
		}
	}

	if(missing_required) {
		alert("A required form field is missing.");
		return false;
	} else {
		return true;
	}
}

function expCustomLink(myURL) {
	location.href = myURL;
}

function setStatus(message)
{
	window.status = message;
}

function setUrl(path)
{
	document.location.href = path;
}

var screenWidth;
var screenHeight;

function expArticleLink(sectionId, articleId) {

	location.href = '/index.php?section_id=' + sectionId + '&section_copy_id=' + articleId;
}

function expPopupWindow(url, widthVal, heightVal, resizableVal, scrollbarsVal, toolbarVal, locationVal, directoriesVal, statusVal, menubarVal, copyHistoryVal) {

	var attributes = "width="  	 	 + widthVal       +
				 	 ",height=" 	 + heightVal      +
				 	 ",resizable="  + resizableVal  +
				 	 ",scrollbars="  + scrollbarsVal  +
				 	 ",toolbar=" 	 + toolbarVal 	  +
				 	 ",location=" 	 + locationVal 	  +
				 	 ",directories=" + directoriesVal +
				 	 ",status=" 	 + statusVal 	  +
				 	 ",menubar=" 	 + menubarVal 	  +
				 	 ",copyhistory=" + copyHistoryVal;

	window.open(url, 'WindowName', attributes);
}

<!--
// callback pool needs global scope
var jsrsContextPoolSize = 0;
var jsrsContextMaxPool = 10;
var jsrsContextPool = new Array();
var jsrsBrowser = jsrsBrowserSniff();
var jsrsPOST = true;
var containerName;

// constructor for context object
function jsrsContextObj( contextID ){
  
  // properties
  this.id = contextID;
  this.busy = true;
  this.callback = null;
  this.container = contextCreateContainer( contextID );
  
  // methods
  this.GET = contextGET;
  this.POST = contextPOST;
  this.getPayload = contextGetPayload;
  this.setVisibility = contextSetVisibility;
}

//  method functions are not privately scoped 
//  because Netscape's debugger chokes on private functions
function contextCreateContainer( containerName ){
  // creates hidden container to receive server data 
  var container;
  switch( jsrsBrowser ) {
    case 'NS':
      container = new Layer(100);
      container.name = containerName;
      container.visibility = 'hidden';
      container.clip.width = 100;
      container.clip.height = 100;
      break;
    
    case 'IE':
      document.body.insertAdjacentHTML( "afterBegin", '<span id="SPAN' + containerName + '"></span>' );
      var span = document.all( "SPAN" + containerName );
      var html = '<iframe name="' + containerName + '" src="" charset="iso-8859-1"></iframe>';
      span.innerHTML = html;
      span.style.display = 'none';
      container = window.frames[ containerName ];
      break;
      
    case 'MOZ':  
      var span = document.createElement('SPAN');
      span.id = "SPAN" + containerName;
      document.body.appendChild( span );
      var iframe = document.createElement('IFRAME');
      iframe.name = containerName;
      iframe.id = containerName;
      span.appendChild( iframe );
      container = iframe;
      break;

    case 'OPR':  
      var span = document.createElement('SPAN');
      span.id = "SPAN" + containerName;
      document.body.appendChild( span );
      var iframe = document.createElement('IFRAME');
      iframe.name = containerName;
      iframe.id = containerName;
      span.appendChild( iframe );
      container = iframe;
      break;
  }
  return container;
}

function contextPOST( rsPage, func, parms ){
  var d = new Date();
  var unique = d.getTime() + '' + Math.floor(1000 * Math.random());
  var doc = (jsrsBrowser == "IE" ) ? this.container.document : this.container.contentDocument;
  
doc.open();
  doc.write('<html><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head><body>');
  doc.write('<form accept-charset="iso-8859-1" name="jsrsForm" method="post" target="" ');
  doc.write(' action="' + rsPage + '&U=' + unique + '">');
  doc.write('<input type="hidden" name="C" value="' + this.id + '">');

  // func and parms are optional
  if (func != null){
  doc.write('<input type="hidden" name="F" value="' + func + '">');

    if (parms != null){
      if (typeof(parms) == "string"){
        // single parameter
        doc.write( '<input type="hidden" name="P0" '
                 + 'value="[' + jsrsEscapeQQ(parms) + ']">');
      } else {
        // assume parms is array of strings
        for( var i=0; i < parms.length; i++ ){
          doc.write( '<input type="hidden" name="P' + i + '" '
                   + 'value="[' + jsrsEscapeQQ(parms[i]) + ']">');
        }
      } // parm type
    } // parms
  } // func

  doc.write('</form></body></html>');
  doc.close();
  doc.forms['jsrsForm'].submit();

}

function contextGET( rsPage, func, parms ){

  // build URL to call
  var URL = rsPage;

  // always send context
  URL += "?C=" + this.id;

  // func and parms are optional
  if (func != null){
    URL += "&F=" + escape(func);

    if (parms != null){
      if (typeof(parms) == "string"){
        // single parameter
        URL += "&P0=[" + escape(parms+'') + "]";
      } else {
        // assume parms is array of strings
        for( var i=0; i < parms.length; i++ ){
          URL += "&P" + i + "=[" + escape(parms[i]+'') + "]";
        }
      } // parm type
    } // parms
  } // func

  // unique string to defeat cache
  var d = new Date();
  URL += "&U=" + d.getTime();
 
  // make the call
  switch( jsrsBrowser ) {
    case 'NS':
      this.container.src = URL;
      break;
    case 'IE':
      this.container.document.location.replace(URL);
      break;
    case 'MOZ':
      this.container.src = '';
      this.container.src = URL; 
      break;
    case 'OPR':
      this.container.src = '';
      this.container.src = URL; 
      break;
  }  
  
}

function contextGetPayload(){
  switch( jsrsBrowser ) {
    case 'NS':
      return this.container.document.forms['jsrs_Form'].elements['jsrs_Payload'].value;
    case 'IE':
      return this.container.document.forms['jsrs_Form']['jsrs_Payload'].value;
    case 'MOZ':
      return window.frames[this.container.name].document.forms['jsrs_Form']['jsrs_Payload'].value; 
    case 'OPR':
      var textElement = window.frames[this.container.name].document.getElementById("jsrs_Payload");
      return textElement.value;
  }  
}

function contextSetVisibility( vis ){
  switch( jsrsBrowser ) {
    case 'NS':
      this.container.visibility = (vis)? 'show' : 'hidden';
      break;
    case 'IE':
      document.all("SPAN" + this.id ).style.display = (vis)? '' : 'none';
      break;
    case 'MOZ':
      document.getElementById("SPAN" + this.id).style.visibility = (vis)? '' : 'hidden';
    case 'OPR':
      document.getElementById("SPAN" + this.id).style.visibility = (vis)? '' : 'hidden';
      this.container.width = (vis)? 250 : 0;
      this.container.height = (vis)? 100 : 0;
      break;
  }  
}

// end of context constructor

function jsrsGetContextID(){
  var contextObj;
  for (var i = 1; i <= jsrsContextPoolSize; i++){
    contextObj = jsrsContextPool[ 'jsrs' + i ];
    if ( !contextObj.busy ){
      contextObj.busy = true;      
      return contextObj.id;
    }
  }
  // if we got here, there are no existing free contexts
  if ( jsrsContextPoolSize <= jsrsContextMaxPool ){
    // create new context
    var contextID = "jsrs" + (jsrsContextPoolSize + 1);
    jsrsContextPool[ contextID ] = new jsrsContextObj( contextID );
    jsrsContextPoolSize++;
    return contextID;
  } else {
    alert( "jsrs Error:  context pool full" );
    return null;
  }
}

function jsrsExecute( rspage, callback, func, parms, visibility ){
  // call a server routine from client code
  //
  // rspage      - href to asp file
  // callback    - function to call on return 
  //               or null if no return needed
  //               (passes returned string to callback)
  // func        - sub or function name  to call
  // parm        - string parameter to function
  //               or array of string parameters if more than one
  // visibility  - optional boolean to make container visible for debugging

  // get context
  var contextObj = jsrsContextPool[ jsrsGetContextID() ];
  contextObj.callback = callback;

  var vis = (visibility == null)? false : visibility;
  contextObj.setVisibility( vis );

  if ( jsrsPOST && ((jsrsBrowser == 'IE') || (jsrsBrowser == 'MOZ'))){
    contextObj.POST( rspage, func, parms );
  } else {
    contextObj.GET( rspage, func, parms );
  }
  
  return contextObj.id;
}

function jsrsLoaded( contextID ){
  // get context object and invoke callback
  var contextObj = jsrsContextPool[ contextID ];
  if( contextObj.callback != null){
    contextObj.callback( jsrsUnescape( contextObj.getPayload() ), contextID );
  }
  // clean up and return context to pool
  contextObj.callback = null;
  contextObj.busy = false;
}

function jsrsError( contextID, str ){
  alert( unescape(str) );
  jsrsContextPool[ contextID ].busy = false
}

function jsrsEscapeQQ( thing ){
  return thing.replace(/'"'/g, '\\"');
}

function jsrsUnescape( str ){
  // payload has slashes escaped with whacks
  return str.replace( /\\\//g, "/" );
}

function jsrsBrowserSniff(){
if (document.layers) { return "NS"; }
if (document.all) {
		// But is it really IE?
		// convert all characters to lowercase to simplify testing
		var agt=navigator.userAgent.toLowerCase();
		var is_opera = (agt.indexOf("opera") != -1);
		if(is_opera) {
			return "OPR";
		} else {
			return "IE";
		}
  }
  if (document.getElementById) return "MOZ";
  return "OTHER";
}

function jsrsArrayFromString( s, delim ){
  // rebuild an array returned from server as string
  // optional delimiter defaults to ~
  var d = (delim == null)? '~' : delim;
  return s.split(d);
}

function jsrsDebugInfo(){
  // use for debugging by attaching to f1 (works with IE)
  // with onHelp = "return jsrsDebugInfo();" in the body tag
  var doc = window.open().document;
  doc.open;
  doc.write( 'Pool Size: ' + jsrsContextPoolSize + '<br><font face="arial" size="2"><b>' );
  for( var i in jsrsContextPool ){
    var contextObj = jsrsContextPool[i];
    doc.write( '<hr>' + contextObj.id + ' : ' + (contextObj.busy ? 'busy' : 'available') + '<br>');
    doc.write( contextObj.container.document.location.pathname + '<br>');
    doc.write( contextObj.container.document.location.search + '<br>');
    doc.write( '<table border="1"><tr><td>' + contextObj.container.document.body.innerHTML + '</td></tr></table>' );
  }
  doc.write('</table>');
  doc.close();
  return false;
}
//-->
