<!--
    var panelID = "p1"
    var numDiv = 2
    var numRows = 1
    var tabsPerRow = 2
    var numLocations = numRows * tabsPerRow
    var tabWidth = 100
    var tabHeight = 30
    var vOffset = 30
    var hOffset = 100
    var divLocation = new Array(numLocations)
    var newLocation = new Array(numLocations)

    for(var i=0; i<numLocations; ++i) {
    	divLocation[i] = i
    	newLocation[i] = i
    }

    function show(object) {
      if (document.getElementById) {
        if (document.getElementById(object)) { document.getElementById(object).style.visibility = 'visible'; }
      }
      else if (document.layers && document.layers[object]) {
        document.layers[object].visibility = 'visible';
      }
      else if (document.all) {
        if (document.all[object]) { document.all[object].style.visibility = 'visible'; }
      }
    }

    function hide(object) {
      if (document.getElementById) {
        if (document.getElementById(object)) { document.getElementById(object).style.visibility = 'hidden'; }
      }
      else if (document.layers && document.layers[object]) {
        document.layers[object].visibility = 'hidden';
      }
      else if (document.all) {
        if (document.all[object]) { document.all[object].style.visibility = 'hidden'; }
      }
    }

    function getDiv(s,i) {
    	var div
    	if (document.layers) {
    		div = document.layers[panelID].layers[panelID+s+i]
    	} else if (document.all && !document.getElementById) {
    		div = document.all[panelID+s+i]
    	} else {
    		div = document.getElementById(panelID+s+i)
    	}
    	return div
    }

    function setZIndex(div, zIndex) {
    	if (document.layers) div.style = div;
    	div.style.zIndex = zIndex
    }

    function setBGColor(div, color) {
    	if (document.layers) div.style = div;
    	div.style.background = color
    }

    function updatePosition(div, newPos) {
    	newClip=tabHeight*(Math.floor(newPos/tabsPerRow)+1)
    	if (document.layers) {
    		div.style=div;
    		div.clip.bottom=newClip; // clip off bottom
    		} else {
    		div.style.clip="rect(0 auto "+newClip+" 0)"
    		}
    	div.style.top = (numRows-(Math.floor(newPos/tabsPerRow) + 1)) * (tabHeight-vOffset)
    	div.style.left = (newPos % tabsPerRow) * tabWidth +	(hOffset * (Math.floor(newPos / tabsPerRow)))
    }

    function selectTab(n) {
    	// n is the ID of the division that was clicked
    	// firstTab is the location of the first tab in the selected row
    	var firstTab = Math.floor(divLocation[n] / tabsPerRow) * tabsPerRow
    	// newLoc is its new location
    	for(var i=0; i<numDiv; ++i) {
    		// loc is the current location of the tab
    		var loc = divLocation[i]
    		// If in the selected row
    		if(loc >= firstTab && loc < (firstTab + tabsPerRow)) newLocation[i] = (loc - firstTab)
    		else if(loc < tabsPerRow) newLocation[i] = firstTab+(loc % tabsPerRow)
    		else newLocation[i] = loc
    	}
    	// Set tab positions & zIndex
    	// Update location
    	for(var i=0; i<numDiv; ++i) {
    		var loc = newLocation[i]
    		var div = getDiv("panel",i)
        var divform = div.id+"form"
        if (i != n) {
          hide(divform);
          setBGColor(div, "#AAAAAA");
        } else {
          show(divform);
          setBGColor(div, "#C3C3C3");
        }
    		if(i == n) setZIndex(div, numLocations +1)
    		else setZIndex(div, numLocations - loc)
    		divLocation[i] = loc
    		div = getDiv("tab",i)
    		updatePosition(div, loc)
    		if(i == n) {
          setBGColor(div, "#C3C3C3");
          setZIndex(div, numLocations +1);
        } else {
          setBGColor(div, "#AAAAAA");
          setZIndex(div,numLocations - loc);
        }
    	}
    }

    // Nav4: position component into a table
    function positionPanel() {
    	document.p1.top=document.panelLocator.pageY;
    	document.p1.left=document.panelLocator.pageX;
    }

    if (document.layers) window.onload=positionPanel;

// moock fpi [f.lash p.layer i.nspector]
// version: 1.3.5
// written by colin moock
// code maintained at: http://www.moock.org/webdesign/flash/detection/moockfpi/
// terms of use posted at: http://www.moock.org/terms/
// #############################################
// These are the user defined globals.
// Modify the following variables to customize the inspection behaviour.
var requiredVersion = 5;   // Version the user needs to view site (max 6, min 2)
var useRedirect = false;    // Flag indicating whether or not to load a separate
                           // page based on detection results. Set to true to
                           // load a separate page. Set to false to embed the
                           // movie or alternate html directly into this page.
// Only set next three vars if useRedirect is true...
var flashPage = "movie.html"      // The location of the flash movie page
var noFlashPage = "noflash.html"  // Page displayed if the user doesn't have the
                                  // plugin or we can't detect it.
var upgradePage = "upgrade.html"  // Page displayed if we detect an old plugin
// #############################################
// *************

// Everything below this point is internal until after the BODY tag.
// Do not modify! Proceed to the BODY tag for further instructions.

// *************

// System globals
var flash2Installed = false;    // boolean. true if flash 2 is installed
var flash3Installed = false;    // boolean. true if flash 3 is installed
var flash4Installed = false;    // boolean. true if flash 4 is installed
var flash5Installed = false;    // boolean. true if flash 5 is installed
var flash6Installed = false;    // boolean. true if flash 6 is installed
var maxVersion = 6;             // highest version we can actually detect
var actualVersion = 0;          // version the user really has
var hasRightVersion = false;    // boolean. true if it's safe to embed the flash movie in the page
var jsVersion = 1.0;            // the version of javascript supported

// Check the browser...we're looking for ie/win
var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;    // true if we're on ie
var isWin = (navigator.appVersion.indexOf("Windows") != -1) ? true : false; // true if we're on windows

// This is a js1.1 code block, so make note that js1.1 is supported.
jsVersion = 1.1;

// Write vbscript detection on ie win. IE on Windows doesn't support regular
// JavaScript plugins array detection.
if(isIE && isWin){
  document.write('<SCR' + 'IPT LANGUAGE=VBScript\> \n');
  document.write('on error resume next \n');
  document.write('flash2Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.2"))) \n');
  document.write('flash3Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.3"))) \n');
  document.write('flash4Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.4"))) \n');
  document.write('flash5Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.5"))) \n');
  document.write('flash6Installed = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.6"))) \n');
  document.write('</SCR' + 'IPT\> \n'); // break up end tag so it doesn't end our script
}

// Next comes the standard javascript detection that uses the
// navigator.plugins array. We pack the detector into a function so it loads
// before we run it.
function detectFlash() {
  // If navigator.plugins exists...
  if (navigator.plugins) {
    // ...then check for flash 2 or flash 3+.
    if (navigator.plugins["Shockwave Flash 2.0"]
        || navigator.plugins["Shockwave Flash"]) {
      // Some version of Flash was found. Time to figure out which.
      // Set convenient references to flash 2 and the plugin description.
      var isVersion2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
      var flashDescription = navigator.plugins["Shockwave Flash" + isVersion2].description;
      // DEBUGGING: uncomment next line to see the actual description.
      // alert("Flash plugin description: " + flashDescription);
      // A flash plugin-description looks like this: Shockwave Flash 4.0 r5
      // We can get the major version by grabbing the character before the period
      // note that we don't bother with minor version detection.
      // Do that in your movie with $version or getVersion().
      var flashVersion = parseInt(flashDescription.charAt(flashDescription.indexOf(".") - 1));
      // We found the version, now set appropriate version flags. Make sure
      // to use >= on the highest version so we don't prevent future version
      // users from entering the site.
      flash2Installed = flashVersion == 2;
      flash3Installed = flashVersion == 3;
      flash4Installed = flashVersion == 4;
      flash5Installed = flashVersion == 5;
      flash6Installed = flashVersion >= 6;
    }
  }
	// loop through all versions we're checking, and set actualVersion to highest detected version
	for (var i = 2; i <= maxVersion; i++) {
		if (eval("flash" + i + "Installed") == true) actualVersion = i;
	}
	// if we're on webtv, the version supported is 2 (pre-summer2000, or 3, post-summer2000)
	// note that we don't bother sniffing varieties of webtv. you could if you were sadistic...
	if(navigator.userAgent.indexOf("WebTV") != -1) actualVersion = 2;
	// uncomment next line to display flash version during testing
	// alert("version detected: " + actualVersion);
	// we're finished getting the version. time to take the appropriate action
	if (actualVersion >= requiredVersion) { 		// user has a new enough version
		hasRightVersion = true;						// flag: it's okay to write out the object/embed tags later
		if (useRedirect) {							// if the redirection option is on, load the flash page
			if(jsVersion > 1.0) {					// need javascript1.1 to do location.replace
				window.location.replace(flashPage);	// use replace() so we don't break the back button
			} else {
				window.location = flashPage;		// otherwise, use .location
			}
		}
	} else {	// user doesn't have a new enough version.
		if (useRedirect) {		// if the redirection option is on, load the appropriate alternate page
			if(jsVersion > 1.0) {	// need javascript1.1 to do location.replace
				window.location.replace((actualVersion >= 2) ? upgradePage : noFlashPage);
			} else {
				window.location = (actualVersion >= 2) ? upgradePage : noFlashPage;
			}
		}
	}
}

detectFlash();	// call our detector now that it's safely loaded.

function selectWin(source,h1,w1){
  newWin = window.open(source,'','height=' + h1 + ',width=' + w1 + ', scrollbars, resizable=no');
  //newWin = window.open(source,'','height=' + h1 + ',width=' + w1 + ', fullscreen=yes, scrollbars=no');
  newWin.resizeTo((h1+10),(w1+40));
  newWin.moveTo((screen.width/2) - (h1/2),(screen.height/2) - (w1/2));
}

function makeWin(source,h1,w1){
  h1 = h1
  w1 = w1
  selectWin(source,w1,h1);
}

// formtool.js
// The Verks Group,LLC core JavaScript library
// Copyright 2001-2004 The Verks Group, LLC
// For more info email code@verks.com
// revision: 2.0
// released: 7 february 2004
// requires: (none)

// Browser debug code
var BrowserDebug = false;
// Known Agent List:
// alert(navigator.userAgent);
// alert(navigator.userAgent.indexOf("Firefox"));
if (navigator.userAgent.indexOf("Firefox")>0) {
  BrowserDebug = true;
}

// core cookie management
function getCookie(name) {
    var cname = name + "=";
    var dc = document.cookie;
    if (dc.length > 0) {
        begin = dc.indexOf(cname);
		if (begin != -1) {
            begin += cname.length;
            end = dc.indexOf(";", begin);
            if (end == -1) end = dc.length;
            return unescape(dc.substring(begin, end));
        }
    }
    return null;
}

function setCookie(name, value, expires) {
    document.cookie = name + "=" + escape(value) + ((expires != null) ? "; expires=" + expires.toGMTString() : "") + "; path=/";
}

function setName() {
    var expdate = new Date ();
    expdate.setTime (expdate.getTime() + (24 * 60 * 60 * 1000 * 365));
    var prompt = i = document.form.name.value;
    setCookie("name", i, expdate);
}

function getName() {
    if(getCookie("name") != null) {
        document.form.name.value = getCookie("name"); 
    }
}

function getInfo() {
    var now= new Date();
    document.form.info.value = "Browser: " + navigator.userAgent;
    document.form.info.value += "\nDate:" + now;
}

function setCheckbox(thisForm,state) {
  if (BrowserDebug) { alert('Form: ' + thisForm + ' checkboxes set to ' + state); }
  var o = document.forms[thisForm].elements
  if (o){
    for (i=0; i<o.length; i++){
      if (o[i].type == 'checkbox'){
        o[i].checked = state
      }
    }
  }
}

function checkMultiple() {
    var passed = false;
    if (getCookie("emailsent") == 'true') {
        if (confirm("You just sent an e-mail from this form, are you sure you want to send another?")) {
	        passed = true;
    	}
    }
    else passed = true;
	return passed;
}

function isFormComplete(FormName) {
  var x       = 0;
  var FormOk  = true;
  while ((x < document.forms[FormName].elements.length) && (FormOk)) {
    var isRequired = false;
    if ((FormOk) && document.forms[FormName].elements[x].type != 'radio') {
      // if (BrowserDebug) { alert('Processing as Non-Radio Button'); }
      var sCheck = document.forms[FormName].elements[x];
      // normal valued fields
      if ((sCheck.required == 'true') || ((sCheck.required == 'test') && eval(sCheck.test))) isRequired = true;
      if (FormOk && isRequired) {
        if (sCheck.value == '') {
          alert('Please enter the '+sCheck.prompt +' and try again.');
          sCheck.focus();
          FormOk = false;
        }
        if (FormOk && sCheck.minlength) {
          var lMin = parseInt(sCheck.minlength);
          if (BrowserDebug) { alert("Minimum Length: " + lMin); }
          if (sCheck.value.length < lMin) {
            alert('Please enter at least '+ lMin +' characters in '+ sCheck.prompt +' and try again.');
            sCheck.focus();
            FormOk = false;
          }
        }
        if (FormOk && sCheck.maxlength) {
          var lMax = parseInt(sCheck.maxlength);
          if (BrowserDebug) { alert("Maximum Length: " + lMax + ", Field Length: " + sCheck.value.length); }
          if (sCheck.value.length < lMax) {
            alert('Please enter no more than '+ lMax +' characters in '+ sCheck.prompt +' and try again.');
            sCheck.focus();
            FormOk = false;
          }
        }
			}
    } else {
      // radio button field(s)
      // if (BrowserDebug) { alert('Processing as Radio Button'); }
      var isSelected = false;
      var radioPrompt = "";
      var sName = document.forms[FormName].elements[x].name;
      for (var i=0; i<document.forms[FormName][sName].length; i++) {
        var sCheck = document.forms[FormName][sName][i];
        if ((sCheck.required == 'true') || ((sCheck.required == 'test') && eval(sCheck.test))) {
          isRequired = true;
        } else {
          if (BrowserDebug) { alert('Required is ' + sCheck.required + ' on object ' + sName); }
        }
        if ('' + sCheck.prompt != 'undefined') radioPrompt = sCheck.prompt;
        if (sCheck.checked) isSelected = true;
      }
      // alert('Required is ' + isRequired);
      if (isRequired && !isSelected) {
        alert('Please select one of the ' + radioPrompt + ' radio button options and try again.');
        document.forms[FormName][sName][0].focus();
        FormOk = false;
      }
    }
    x++;
 	}
	return FormOk;
}

function fieldValue(FormName, ElemName) {
  if (document.forms[FormName][ElemName].type != 'radio') {
    return document.forms[FormName][ElemName].value;
  } else {
    for (var i=0;i<document.forms[FormName][ElemName].length;i++) {
      if (document.forms[FormName][ElemName][i].checked) {
        if (document.forms[FormName][ElemName][i].value != 'undefined') return document.forms[FormName][ElemName][i].value;
        return (i+1);
      }
    }
    return false;
  }
}

function isEmailValid(FormName,ElemName) {
	  var EmailOk  = true;
	  var Temp     = document.forms[FormName].elements[ElemName];
	  var AtSym    = Temp.value.indexOf('@');
	  var Period   = Temp.value.lastIndexOf('.');
	  var Space    = Temp.value.indexOf(' ');
	  var Length   = Temp.value.length - 1;   // Array is from 0 to length-1

	  if ((AtSym < 1) ||                     // '@' cannot be in first position
	     (Period <= AtSym+1) ||             // Must be atleast one valid char btwn '@' and '.'
	     (Period == Length ) ||             // Must be atleast one valid char after '.'
	     (Space  != -1))                    // No empty spaces permitted
	  {  
        EmailOk = false;
        alert('Please enter a valid e-mail address!');
        Temp.focus();
	  }
	  return EmailOk;
	}

function formCheck(withEmail, checkMulti) {
    var passed = false;
	if (isFormComplete("form")) {
	    if (withEmail) {
			if (isEmailValid("form", "email") && (checkMulti ? checkMultiple(): true)) {
				setCookie(document.form.title + "emailsent", "true");
				passed = true;
			}
		}
	    else passed = true;
    }
	return passed;
}

// inline usage: if(formCheck(0,0)) document.form.submit();
// anchor usage: href="javascript:document.form.submit();" onclick="return formCheck(0,0);"

    //-->


