<!--

function convert(sValue,sDataType){
    var ret;
	var d ;
	switch(sDataType){
	case "int":
	    if (isNaN(parseInt(sValue))) sValue = 0;
	        
	    return parseInt(sValue);		
	case "float":
		if (isNaN(parseFloat(sValue))) sValue = 0;
	        
		return  parseFloat(sValue);
	case "date":
	    if (isNaN(Date.parse(sValue)) || sValue == '-' || sValue=='&nbsp;') sValue = new Date('01/01/1900');
	    
	    return Date.parse(sValue);    	   	   
	default:
		return sValue.toString();
	}
}

function generateCompareTRs(iCol,sDataType){
	return function compareTRs(oTR1,oTR2){
				var vValue1,vValue2;
				if (oTR1.cells[iCol].getAttribute("value")){
					vValue1=convert(oTR1.cells[iCol].getAttribute("value"),sDataType);
					vValue2=convert(oTR2.cells[iCol].getAttribute("value"),sDataType);
				}
				else{
					vValue1=convert(oTR1.cells[iCol].firstChild.nodeValue,sDataType);
					vValue2=convert(oTR2.cells[iCol].firstChild.nodeValue,sDataType);
				}
			
				if (vValue1 < vValue2){
					return -1;
				}
				else if (vValue1 > vValue2){
					return 1;
				}else{
					return 0;
				}
			};
}

function sortTable(sTableID,iCol,sDataType){
	var oTable=document.getElementById(sTableID);
	var oTBody=oTable.tBodies[0];
	var colDataRows=oTBody.rows;
	var aTRs=new Array;
	for (var i=0;i< colDataRows.length;i++){
		aTRs.push(colDataRows[i]);
	}
	if (oTable.sortCol==iCol){
		aTRs.reverse();
	}
	else {
		aTRs.sort(generateCompareTRs(iCol,sDataType));
	}
	var oFragment = document.createDocumentFragment();
	for (var i=0;i< aTRs.length;i++){	
	    aTRs[i].className = colorArray[i % 2];
		oFragment.appendChild(aTRs[i]);
	}
	oTBody.appendChild(oFragment);
	oTable.sortCol=iCol;
}

function hidediv(id) {
	//safe function to hide an element with a specified id
	if (document.getElementById) { // DOM3 = IE5, NS6
		document.getElementById(id).style.display = 'none';
	}
	else {
		if (document.layers) { // Netscape 4
			document.id.display = 'none';
		}
		else { // IE 4
			document.all.id.style.display = 'none';
		}
	}
}
function showdiv(id) {
	//safe function to show an element with a specified id
	if (document.getElementById) { // DOM3 = IE5, NS6
		document.getElementById(id).style.display = 'block';
	}
	else {
		if (document.layers) { // Netscape 4
			document.id.display = 'block';
		}
		else { // IE 4
			document.all.id.style.display = 'block';
		}
	}
}

function checkgetkey(e){
	if (window.event)
		return window.event.keyCode;
	else if (e)
		return e.which;
	else
	return null;
}
function checkgoodchars(e, goods){
	var key, keychar;
	key = checkgetkey(e);
	if (key == null) return true;
	// get character
	keychar = String.fromCharCode(key);
	keychar = keychar.toLowerCase();
	goods	= goods.toLowerCase();
	// check goodkeys
	if (goods.indexOf(keychar) != -1){
		return true;
	}
	// control keys
	if ( key==null || key==0 || key==8 || key==9 || key==13 || key==27 )
		return true;
	// else return false
	return false;
}


/***********************************************
* Textarea Maxlength script- © Dynamic Drive (www.dynamicdrive.com)
* This notice must stay intact for legal use.
* Visit http://www.dynamicdrive.com/ for full source code
* DMC - derived from the above script.
***********************************************/

function cl_limitlength(obj,theDisplay,mask){
    var mlength=obj.getAttribute? parseInt(obj.getAttribute("maxlength")) : "";
    if (obj.getAttribute && obj.value.length>mlength){
        obj.value=obj.value.substring(0,mlength)
    }

    var theOfFld= document.getElementById(theDisplay);
    var limit_text=mask;
    limit_text = limit_text.replace(/@len@/, obj.value.length.toString())
    limit_text = limit_text.replace(/@max@/, mlength.toString())
    //var limit_text='<b>('+ obj.value.length +' of ' + mlength + ')</b>';
    var theOfFld= document.getElementById(theDisplay) ;    
   theOfFld.innerHTML = limit_text;
}

/*Used for bringing Articulate users back to this window to take the test*/
function nameWindow()
{
	window.name='MyWindow';
}

/*Check and Uncheck all checkboxes*/
function checkAll(field) {
	for (i = 0; i < field.length; i++)
	field[i].checked = true ;
}
function uncheckAll(field) {
	for (i = 0; i < field.length; i++)
	field[i].checked = false ;
}


/*Used for print version of reports*/
function printVersion(){	
    document.frmPrintVersion.submit();
}


function MM_findObj(n, d) { //v4.01
  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);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_nbGroup(event, grpName) { //v6.0
  var i,img,nbArr,args=MM_nbGroup.arguments;
  if (event == "init" && args.length > 2) {
    if ((img = MM_findObj(args[2])) != null && !img.MM_init) {
      img.MM_init = true; img.MM_up = args[3]; img.MM_dn = img.src;
      if ((nbArr = document[grpName]) == null) nbArr = document[grpName] = new Array();
      nbArr[nbArr.length] = img;
      for (i=4; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) {
        if (!img.MM_up) img.MM_up = img.src;
        img.src = img.MM_dn = args[i+1];
        nbArr[nbArr.length] = img;
    } }
  } else if (event == "over") {
    document.MM_nbOver = nbArr = new Array();
    for (i=1; i < args.length-1; i+=3) if ((img = MM_findObj(args[i])) != null) {
      if (!img.MM_up) img.MM_up = img.src;
      img.src = (img.MM_dn && args[i+2]) ? args[i+2] : ((args[i+1])? args[i+1] : img.MM_up);
      nbArr[nbArr.length] = img;
    }
  } else if (event == "out" ) {
    for (i=0; i < document.MM_nbOver.length; i++) {
      img = document.MM_nbOver[i]; img.src = (img.MM_dn) ? img.MM_dn : img.MM_up; }
  } else if (event == "down") {
    nbArr = document[grpName];
    if (nbArr)
      for (i=0; i < nbArr.length; i++) { img=nbArr[i]; img.src = img.MM_up; img.MM_dn = 0; }
    document[grpName] = nbArr = new Array();
    for (i=2; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) {
      if (!img.MM_up) img.MM_up = img.src;
      img.src = img.MM_dn = (args[i+1])? args[i+1] : img.MM_up;
      nbArr[nbArr.length] = img;
  } }
}

//This begins the original js

function MM_preloadImages() { //v3.0
  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_swapImgRestore() { //v3.0
  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_findObj(n, d) { //v4.01
  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);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  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];}
}
//-->

<!--
var win=null;
function NewWindow(mypage,myname,w,h,scroll,pos){
if(pos=="random"){LeftPosition=(screen.width)?Math.floor(Math.random()*(screen.width-w)):100;TopPosition=(screen.height)?Math.floor(Math.random()*((screen.height-h)-75)):100;}
if(pos=="center"){LeftPosition=(screen.width)?(screen.width-w)/2:100;TopPosition=(screen.height)?(screen.height-h)/2:100;}
else if((pos!="center" && pos!="random") || pos==null){LeftPosition=0;TopPosition=20}
settings='width='+w+',height='+h+',top='+TopPosition+',left='+LeftPosition+',scrollbars='+scroll+',location=no,directories=no,status=yes,menubar=no,toolbar=no,resizable=yes';
win=window.open(mypage,myname,settings);}
//-->

<!--
/* dmc remarked out 5/23/07
function setActiveStyleSheet(title) {
  var i, a, main;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
      a.disabled = true;
      if(a.getAttribute("title") == title) a.disabled = false;
    }
  }
}

function getActiveStyleSheet() {
  var i, a;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) return a.getAttribute("title");
  }
  return null;
}

function getPreferredStyleSheet() {
  var i, a;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1
       && a.getAttribute("rel").indexOf("alt") == -1
       && a.getAttribute("title")
       ) return a.getAttribute("title");
  }
  return null;
}

function createCookie(name,value,days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
  }
  else expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for(var i=0;i < ca.length;i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
  }
  return null;
}

window.onload = function(e) {
  var cookie = readCookie("style");
  var title = cookie ? cookie : getPreferredStyleSheet();
  setActiveStyleSheet(title);
}

window.onunload = function(e) {
  var title = getActiveStyleSheet();
  createCookie("style", title, 365);
}

var cookie = readCookie("style");
var title = cookie ? cookie : getPreferredStyleSheet();
setActiveStyleSheet(title);
*/
//-->


function rollover()
{
	if(!document.getElementById || !document.createTextNode){return;}
	var n=document.getElementById('nav');
	if(!n){return;}
	var lis=n.getElementsByTagName('li');
	for (var i=0;i<lis.length;i++)
	{
		lis[i].onmouseover=function()
		{
			this.className=this.className?'cur':'over';
		}
		lis[i].onmouseout=function()
		{
			this.className=this.className=='cur'?'cur':'';
		}
	}
}
//window.onload=rollover;


function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

/*-----------------------------------------------------------+
 | cl_OnLoad()                                               |
 | common Continued Learing routines to run "onLoad"         |
 | add common/global onLoad functions here                   |
 +-----------------------------------------------------------*/
function cl_OnLoad(){
    rollover();    
}

/*-----------------------------------------------------------+
 | CHECKBOX LISTS:  addLoadEvent: Add event handler to body when window loads |
 +-----------------------------------------------------------*/
function addLoadEvent(func) {
	var oldonload = window.onload;
	
	if (typeof window.onload != "function") {
		window.onload = func;
	} else {
		window.onload = function () {
			oldonload();
			func();
		}
	}
}


/*------------------------------------+
 | Functions to run when window loads |
 +------------------------------------*/
/*
example - called in each program where checkLists are used 
addLoadEvent(function () {
	initChecklist(); 
});
*/
   
/*----------------------------------------------------------+
 | initChecklist: Add :hover functionality on labels for IE |
 +----------------------------------------------------------*/
function initChecklist() {
	if (document.all && document.getElementById) {
		// Get all unordered lists
		var lists = document.getElementsByTagName("ul");
		
		for (i = 0; i < lists.length; i++) {
			var theList = lists[i];
			
			// Only work with those having the class "checklist"
			if (theList.className.indexOf("checklist") > -1) {
				var labels = theList.getElementsByTagName("label");
				
				// Assign event handlers to labels within
				for (var j = 0; j < labels.length; j++) {
					var theLabel = labels[j];
					theLabel.onmouseover = function() { this.className += " hover"; };
					theLabel.onmouseout = function() { this.className = this.className.replace(" hover", ""); };
				}
			}
		}
	}
}

//Div slider and hider
var timerlen = 5;
var slideAniLen = 250;

var timerID = new Array();
var startTime = new Array();
var obj = new Array();
var endHeight = new Array();
var moving = new Array();
var dir = new Array();

function slidedown(objname){
        if(moving[objname])
                return;

        if(document.getElementById(objname).style.display != "none")
                return; // cannot slide down something that is already visible

        moving[objname] = true;
        dir[objname] = "down";
        startslide(objname);
}

function slideup(objname){
        if(moving[objname])
                return;

        if(document.getElementById(objname).style.display == "none")
                return; // cannot slide up something that is already hidden

        moving[objname] = true;
        dir[objname] = "up";
        startslide(objname);
}

function startslide(objname){
        obj[objname] = document.getElementById(objname);

        endHeight[objname] = parseInt(obj[objname].style.height);
        startTime[objname] = (new Date()).getTime();

        if(dir[objname] == "down"){
                obj[objname].style.height = "1px";
        }

        obj[objname].style.display = "block";

        timerID[objname] = setInterval('slidetick(\'' + objname + '\');',timerlen);
}

function slidetick(objname){
        var elapsed = (new Date()).getTime() - startTime[objname];

        if (elapsed > slideAniLen)
                endSlide(objname)
        else {
                var d =Math.round(elapsed / slideAniLen * endHeight[objname]);
                if(dir[objname] == "up")
                        d = endHeight[objname] - d;

                obj[objname].style.height = d + "px";
        }

        return;
}

function endSlide(objname){
        clearInterval(timerID[objname]);

        if(dir[objname] == "up")
                obj[objname].style.display = "none";

        obj[objname].style.height = endHeight[objname] + "px";

        delete(moving[objname]);
        delete(timerID[objname]);
        delete(startTime[objname]);
        delete(endHeight[objname]);
        delete(obj[objname]);
        delete(dir[objname]);

        return;
}

//date selection functions
/*
http://www.orilogic.com
Copyright (c) 2002-2003
by Gary D ( gary@orilogic.com ) of Orilogic Technologies.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated 
documentation files (the "Software"), to deal in the Software without restriction to use.
However, not including the rights to copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software.

The above copyright notice and this permission notice shall be included in all copies or substantial portions 
of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED 
TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 
CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
DEALINGS IN THE SOFTWARE.

adapted by David M. Carpenter - 08/20/2007 -Continued Learning
var setDaysFormName; is used to find and keep the actual form the date select is called from.
The current PrinterFriendly print function replicates the Input fields & fouling up the getElementByID value
making knowing the orginal form name nessisary.

*/

var setDaysFormName;
var setDaysForm;

function orilogic_daysinmonth(lnMonth,lnYear) {
var dt1, cmn1, cmn2, dtt, lflag, dycnt, lmn;
lmn = lnMonth-1;
dt1 = new Date(lnYear,lmn,1);
cmn1 = dt1.getMonth();
dtt=dt1.getTime()+2332800000;
lflag = true;
dycnt=28;
while (lflag) {
   dtt = dtt + 86400000;
   dt1.setTime(dtt);
   cmn2 = dt1.getMonth();
   if (cmn1!=cmn2) {
      lflag = false; }
   else {dycnt = dycnt + 1}}
if (dycnt > 31) {dycnt = 31}
return dycnt;
}

function setdays(objName, objDay, objMo, objYr, datemode)
{
    if (objName==undefined) ojbName='selDate';
    if (objName=='') ojbName='selDate';
    if (datemode == undefined) datemode = 3;
    if (datemode =='') datemode = 3;
    if (datemode < 1 || datemode > 4) datemode== 3;
    // "cm", "cd", "cy"
    if (objMo==undefined) objMo = '_month'
    if (objDay==undefined) objDay = '_day'
    if (objYr==undefined) objYr = '_year'
    
   //alert (objName + ', ' + objDay + ', ' + objMo+ ', ' + objYr+ ', ' + datemode );
    return  _setdays(objName, datemode, objDay, objMo, objYr );
}

//function orilogic_setdays(sobjname, datemode){
function _setdays(sobjname, datemode, objDay, objMo, objYr)
{
    sobjname = sobjname.split("$").join(":");
    var sD = sobjname + objDay;
    var sM = sobjname + objMo;
    var sY = sobjname + objYr; 
    var sHconv = sobjname +  '_string';
    
    if (setDaysForm == undefined)
    {
        setDaysForm=0;
        if (document.forms.length)
        {
var dmd;
if (dmd > 1)
alert('me');
        
            for (; setDaysForm<document.forms.length; setDaysForm++)
            {   
                setDaysFormName=document.forms[setDaysForm].name;
                if (setDaysFormName=='frmPrintVersion')
                    {//problem form 
                    setDaysFormName=undefined;
                    continue;
                    }
                    
                var dobj = formGetElementById(setDaysForm, sD)
                if ( dobj != undefined)
                {
                if (dobj.options) 
                   {break;}
                }    
            }
        }
        else
        {   
            setDaysFormName=document.forms[setDaysForm].name;
        }
    }
    
    if  (setDaysForm >= document.forms.length)
        {
        alert('An error has occoured in _setdays, Problem finding correct form.')
        return false;
        }
        
    var frm = document.forms[setDaysForm];     
   
    var dobj = formGetElementById(setDaysForm, sD); //"_day");
    var mobj = formGetElementById(setDaysForm, sM); //"_month");
    var yobj = formGetElementById(setDaysForm, sY); //"_year");
    var hobj = formGetElementById(setDaysForm, sobjname);
    var hobjconv = formGetElementById(setDaysForm, sHconv);
    /*
    var dobj = document.getElementById(frm.sobjname + objDay); //"_day");
    var mobj = document.getElementById(frm.sobjname + objMo); //"_month");
    var yobj = document.getElementById(frm.sobjname + objYr); //"_year");
    var hobjconv = document.getElementById(frm.sobjname + '_string');
    */
    var monthdays = orilogic_daysinmonth(mobj.options[mobj.selectedIndex].value,yobj.options[yobj.selectedIndex].value);
    var selectdays = dobj.length;
    var curdy = dobj.options[dobj.selectedIndex].value;
    if (curdy.length==1) {curdy = "0"+curdy};
    var curmn = mobj.options[mobj.selectedIndex].value;
    if (curmn.length==1) {curmn = "0"+curmn};
    var curyr = yobj.options[yobj.selectedIndex].value;
    if (selectdays > monthdays) {
       for (var dlp=selectdays; dlp > monthdays; dlp--) {
           dobj.options[dlp-1] = null }}
    else if (monthdays > selectdays) {
       for (var dlp=selectdays; dlp < monthdays; dlp++) {
           dobj.options[dlp] = new Option(dlp+1,dlp+1); }}
    if (curdy > monthdays) {
       dobj.options[monthdays-1].selected = true;
       curdy = monthdays; }
    var curdateconv = curmn+"/"+curdy+"/"+curyr;
    if (datemode==1) {
       var curdate = curmn+"/"+curdy+"/"+curyr }
    else if (datemode==2) {
       var curdate = curdy+"/"+curmn+"/"+curyr }
    else if (datemode==3) {
       var curdate = curyr+curmn+curdy }
    else if (datemode==4) {
       var cdate = new Date(curyr,curmn-1,curdy);
       var curdate = cdate.toGMTString(); }
    hobj.value = curdate;
    hobjconv.value = curdateconv;
}

function formGetElementById (formNum, fldName)
{
   for (i=0; i<document.forms[formNum].length; i++)
   {
        if (document.forms[formNum].elements[i].name == fldName)
            {
            return document.forms[formNum].elements[i];            
            }
   }
   return undefined
}