var numSections = 2;  // Set this to the total number of sections on the form

/*****************************************/
/** Usable Forms 2.0, November 2005     **/
/** Written by ppk, www.quirksmode.org  **/
/** Instructions for use on my site     **/
/**                                     **/
/** You may use or change this script   **/
/** only when this copyright notice     **/
/** is intact.                          **/
/**                                     **/
/** If you extend the script, please    **/
/** add a short description and your    **/
/** name below.                         **/
/*****************************************/

var containerTag = 'DIV';

var compatible = (
	document.getElementById && document.getElementsByTagName && document.createElement
	&&
	!(navigator.userAgent.indexOf('MSIE 5') != -1 && navigator.userAgent.indexOf('Mac') != -1)
	);

if (compatible)
{
	//document.write('<style>.accessibility{display: none}</style>');
	var waitingRoom = document.createElement('div');
}

var hiddenFormFieldsPointers = new Object();



function intoWaitingRoom(relation)
{
	if (relation == 'none') return;
	var Elements = hiddenFormFieldsPointers[relation];
	for (var i=0;i<Elements.length;i++)
	{
		waitingRoom.appendChild(Elements[i]);
		if (Elements[i].nestedRels)
			for (var j=0;j<Elements[i].nestedRels.length;j++)
				intoWaitingRoom(Elements[i].nestedRels[j]);
	}
}

function intoMainForm(relation)
{
	if (relation == 'none') return;
	var Elements = hiddenFormFieldsPointers[relation];
	for (var i=0;i<Elements.length;i++)
	{
		var insertPoint = document.getElementById(relation+i);
		insertPoint.parentNode.insertBefore(Elements[i],insertPoint);
		if (Elements[i].nestedRels)
		{
			var fields = getAllFormFields(Elements[i]);
			for (var j=0;j<fields.length;j++)
			{
				if (!fields[j].getAttribute('rel')) continue;
				if (fields[j].checked || fields[j].selected) 
					intoMainForm(fields[j].getAttribute('rel'));
			}
		}
	}
}

function getAllFormFields(node)
{
	var allFormFields = new Array;
	var x = node.getElementsByTagName('input');
	for (var i=0;i<x.length;i++)
		allFormFields.push(x[i]);
	var y = node.getElementsByTagName('option');
	for (var i=0;i<y.length;i++)
		allFormFields.push(y[i]);
	return allFormFields;
}

/** ULTRA-SIMPLE EVENT ADDING **/

function addEvent(obj,type,fn)
{
	if (obj.addEventListener)
		obj.addEventListener(type,fn,false);
	else if (obj.attachEvent)
		obj.attachEvent("on"+type,fn);
}

// addEvent(window,"load",prepareForm);



function TabView(id, current){
    if(typeof(TabView.cnt) === "undefined"){
        TabView.init();
    }
   current = (typeof(current) === "undefined") ? 0 : current;
    this.newTab(id, current);
}

TabView.init = function(){
    TabView.cnt = 0;
    TabView.arTabView = new Array();
}

TabView.switchTab = function(TabViewIdx, TabIdx){
    TabView.arTabView[TabViewIdx].TabView.switchTab(TabIdx);
    doSwap("btn" + TabIdx);
}

TabView.prototype.newTab = function(id, current){
    var TabViewElem, idx = 0, el = '', elTabs = '', elPages = '';
    TabViewElem = document.getElementById(id);
    TabView.arTabView[TabView.cnt] = TabViewElem;
    this.TabElem = TabViewElem;
    this.TabElem.TabView = this;
    this.tabCnt = 0;
    this.arTab = new Array();
    // Loop throught the elements till the object with
    // classname 'Tabs' is obtained
    elTabs = TabViewElem.firstChild;
    while(elTabs.className != "Tabs" )elTabs = elTabs.nextSibling;
    el = elTabs.firstChild;
    do{
        if(el.tagName == "A"){
            el.href = "javascript:TabView.switchTab(" + TabView.cnt + "," + idx + ");";
            this.arTab[idx] = new Array(el, 0);
            this.tabCnt = idx++;
        }
    }while (el = el.nextSibling);

    // Loop throught the elements till the object with
    // classname 'Pages' is obtained
    elPages = TabViewElem.firstChild;
    while (elPages.className != "Pages")elPages = elPages.nextSibling;
    el = elPages.firstChild;
    idx = 0;
    do{
        if(el.className == "Page"){
            this.arTab[idx][1] = el;
            idx++;
        }
    }while (el = el.nextSibling);
    this.switchTab(current);
    // Update TabView Count
    TabView.cnt++;
}

TabView.prototype.switchTab = function(TabIdx){
    var Tab;
    if(this.TabIdx == TabIdx)return false;
    for(idx in this.arTab){
        Tab = this.arTab[idx];
        if(idx == TabIdx){
            Tab[0].className = "active";
            if (Tab[1]) Tab[1].style.display = "block";
            Tab[0].blur();
        }else{
            Tab[0].className = "inactive";
            if (Tab[1]) Tab[1].style.display = "none";
        }
    }
    this.TabIdx = TabIdx;
   
}

function init(){
    t1 = new TabView('TabView1');
}

// ===========================End Usable Forms Code==================================
var sectionDone = new Array();

/*
    Written by Jonathan Snook, http://www.snook.ca/jonathan
    Add-ons by Robert Nyman, http://www.robertnyman.com
*/

function getElementsByClassName(oElm, strTagName, strClassName){
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];      
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }   
    }
    return (arrReturnElements);
}

function swap(fld)
{
	/* This function depends on a particular naming convention. It expects the image's default image
	    to be just it's name. It expects the image's rollover to be the same as it's default but with
	    on appended to the name. For example: carloff.jpg would be a default and carlon.jpg would be
	    the rollover image.
	*/
	
	if (fld === "" || fld === null)
	{
		fld = 'btn0';
	}
	
	var img = document.getElementById(fld);
	var currentSrc = img.src;
	var result = currentSrc.indexOf("on.gif");
	var newSrc = "";
	
	/* Let's see if image is already on. If so turn it off */
	
	if (result >= 0)
	{
		newSrc = currentSrc.replace("on.gif","off.gif");
	}
	else
	{
		newSrc = currentSrc.replace("off.gif","on.gif");
	}
	
	img.src = newSrc;
}

function doSwap(fld)
{
	var img;
	var currentSrc;
	
	

	/* Rest all tabs to off then let the code below turn the current one on. */
	
	for (var x=0; x<numSections; x++)
	{
		img = document.getElementById('btn' + x);
		
		if ( img !== null )
		{
			currentSrc = img.src;
			// Ignore those marked as done. The code in processCompleted Sctions will make sure that a section that
			// is not complete will remove the "done.gif" which will make it subject to the below swapping.
			if ( currentSrc.indexOf("done") == -1 )
			{
				img.src = "/images/t" + (x+1) + "off.gif"; 
			}
			else
			{
				img.src = "/images/t" + (x+1) + "doneoff.gif"; 
			}
		}
	}
	
	// Now swap the current tab
	if (fld !== null)
	{
		swap(fld);
	}
}

//   ##############  SIMPLE  BROWSER SNIFFER
if (document.layers) {navigator.family = "nn4"}
if (document.all) {navigator.family = "ie4"}
if (window.navigator.userAgent.toLowerCase().match("gecko")) {navigator.family = "gecko"}

	addEvent(window,"load",init);

