// - - - - - - - - - - - -
// CUSTOM TO THIS SITE
// - - - - - - - - - - - -

// function to hold all init functions
var init = new Array();

// function to deal with need for onload fx from includes
function _init(){
	// loop through all the items in the init array
	// and execute any functions
	for( var i=0; i < window.init.length; i++ ){
		if( typeof window.init[i] == "function" ) window.init[i]();
	}
}
// each fx in an include (not a whole page, you can put onload into a body tag for those)
// window.init[window.init.length] = function (){  }  //will be loaded in turn...

var currSlide = 1;

function toggleRows (lnk) {
	var catrow = getGrandParent(lnk);
	var catrowClass = catrow.className;
	var sectionID = catrow.id;
	var allRows = getElementsByClassName(getParent(catrow),"tr",sectionID);

	if (catrowClass == "catrow open") {
		catrow.className = "catrow closed";
		for (i=0;i<allRows.length;i++) {
			turnOff(allRows[i]);
		}
	} else if (catrowClass == "catrow closed") {
		catrow.className = "catrow open";
		for (i=0;i<allRows.length;i++) {
			allRows[i].style.display = is_ie ? "block" : "table-row";
		}
	}

	lnk.blur();
	return false;
}

function showSlide (n,lnk) {
	var controls = getParent(lnk);
	var allLinks = controls.getElementsByTagName('a');

	currSlide = n;

	for (var i=1;i<allLinks.length-1;i++) {
		allLinks[i].className = "";
		turnOff ("slide"+i);
	}

	allLinks[n].className = "at";
	turnOn ("slide"+n);
	return false;
}

function prevSlide (lnk,numSlides) {
	if (currSlide == 1) currSlide = numSlides+1;
	showSlide(currSlide-1,lnk);
}

function nextSlide (lnk,numSlides) {
	if (currSlide == numSlides) currSlide = 0;
	showSlide(currSlide+1,lnk);
}

function toggleScores (lnk) {
	var currList = getParent(lnk);
	var listID = currList.id;
	var linkClass = lnk.className;

	if (linkClass == "open") {
		lnk.className = "closed";
		turnOff ("dyn-"+listID);
	} else if (linkClass == "closed") {
		lnk.className = "open";
		turnOn ("dyn-"+listID);
	}

	return false;
}

function openMsg (lnk) {
	var currTeaser = getParent(lnk);
    var currID = currTeaser.id.substring(9, currTeaser.id.length);
    turnOff(currTeaser);

	var allMsgs = getParent(currTeaser).getElementsByTagName('div');
	var msgID;
	for (var i=0;i<allMsgs.length;i++) {
		msgID = allMsgs[i].id.substring(3, allMsgs[i].id.length);
		if (allMsgs[i].className == "msg" && allMsgs[i].style.display == "block")  {
			turnOff(allMsgs[i]);
			turnOn("msgTeaser"+msgID);
		}
	}

	turnOn("msg"+currID);

	return false;
}

function closeMsg (lnk) {
	var currTeaser = getParent(lnk);
	var currID = currTeaser.id.substring(9, currTeaser.id.length);
	turnOff(currTeaser);
	turnOff("msg"+currID);

	var allMsgs = getParent(currTeaser).getElementsByTagName('div');
	for (var i=0;i<allMsgs.length;i++) {
		if (allMsgs[i].style.display != "none")  {
			return false;
		}
	}

	turnOn("nomsg");
	return true;
}

function collapseMsg(lnk) {
    var currTeaser = getParent(lnk);
	var currID = currTeaser.id.substring(3, currTeaser.id.length);
    turnOn("msgTeaser"+currID);
    turnOff("msg"+currID);
	return false;
}

function clickInnerTab (tab,row) {
	if(document.getElementById("toptab")){
		document.location.hash = "toptab";
	}
	
	tab = (typeof(tab)=="string") ? document.getElementById(tab) : tab;
	row = row ? row : 1;

	// turn off all tabs and turn on proper tab
	var i;
	var currTab = getParent(tab);
	var tabID = tab.id;
	var allTabs = getGrandParent(tab).childNodes;
	for (i=0;i<allTabs.length;i++) {
		allTabs[i].className = "";
	}
	addClassName (currTab,"at");
	tab.blur();

	// turn off all content divs and turn on proper div
	var allDivs = getElementsByClassName(document,"div","group"+row);
	for (i=0;i<allDivs.length;i++) {
		currDiv = allDivs[i];
		turnOff(currDiv);
	}
	turnOn("dyn-"+tabID);
	return false;
}

function toggleChildren (doit) {
	if (doit) {
		turnOn("children");
		turnOn("addchildren");
	} else {
		turnOff("children");
		turnOff("addchildren");
        var radioObj = document.getElementsByName("havechildren");

        var radioLength = radioObj.length;
        var newValue = "no";
        for(var i = 0; i < radioLength; i++) {
            radioObj[i].checked = false;
            if(radioObj[i].value == newValue.toString()) {
                radioObj[i].checked = true;
            }
        }
    }
}

var nextChild = 2;
function addChild (a) {
	if (nextChild <= 9) {
		turnOn ("childDiv"+nextChild);
		nextChild++;
	}
	a.blur();
	return false;
}


// - - - - - - - - - - - -
// Pop-Up Windows
// - - - - - - - - - - - -

function popup(pageName) {
mywindow = window.open (pageName, "","location=0,status=1,scrollbars=1,toolbar=0,width=800,height=600");
}
function popup2(pageName) {
mywindow = window.open (pageName, "","location=0,status=1,scrollbars=1,toolbar=0, resizable=1, width=1000,height=600");
}

// - - - - - - - - - - - -
// SHOW AND HIDE
// - - - - - - - - - - - -

function turnOff (id) {setProp(id,"display","none");}

function turnOn (id) {setProp(id,"display","block");}

// - - - - - - - - - - - -
// ACCESS
// - - - - - - - - - - - -

function getGrandParent(j) {
	p = j.parentNode;
	gp = p.parentNode;
	return gp;
}

function getParent(j) {
	var n = null;
	if (j.parentNode) {
		n = j.parentNode;
	}
	else if (j.parentElement) {
		n = j.parentElement;
	}
	if (n)
		return n;
	else
		return null;
}

function setProp (id,prop,val) {
	if (typeof(id)=="string")
		el = document.getElementById(id);
	else
		el = id;
	eval("el.style."+prop+" = '"+val+"';");
}

// - - - - - - - - - - - -
// BROWSER SNIFFING
// - - - - - - - - - - - -

var agt=navigator.userAgent.toLowerCase();

// *** BROWSER VERSION ***
// Note: On IE5, these return 4, so use is_ie5up to detect IE5.
var is_major = parseInt(navigator.appVersion);
var is_minor = parseFloat(navigator.appVersion);

var is_ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));

// - - - - - - - - - - - -
// ESSENTIAL JAVASCRIPT
// Copyright Robert Nyman, http://www.robertnyman.com
// Free to use if this text is included
// - - - - - - - - - - - -

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 addClassName(oElm, strClassName){
	var strCurrentClass = oElm.className;
	if(!new RegExp(strClassName, "i").test(strCurrentClass)){
		oElm.className = strCurrentClass + ((strCurrentClass.length > 0)? " " : "") + strClassName;
	}
}

function removeClassName(oElm, strClassName){
	var oClassToRemove = new RegExp((strClassName + "\s?"), "i");
	oElm.className = oElm.className.replace(oClassToRemove, "").replace(/^\s?|\s?$/g, "");
}


// - - - - - - - - - - - -
// VALIDATE
// - - - - - - - - - - - -

function val(theForm) {
    var why = "";
    why += isEmpty(theForm.name1.value,"What's your name?");
    why += isUnchecked(theForm.inorout,"You in or out?");
    if (theForm.inorout[0].checked) {
		why += isUnchecked(theForm.puzzler1,"How do you feel about puzzling?");
		if (theForm.name2.value!="") {
			why += isUnchecked(theForm.puzzler2,"How does " + theForm.name2.value + " feel about puzzling?");
		}
	}
    if (why != "") {
    	why = "Wait a second...\n\n" + why;
		alert(why);
		return false;
    }
	return true;
}

function isEmpty (str,err) {
	var error = "";
	if (str.length == 0) {
		error = err+"\n";
	}
	return error;	  
}

function isUnchecked (rad,err) {
	result = false;
	for (i=0;i<rad.length;i++) {
		if (rad[i].checked) {
			result = true;
			break;
		}
	}
	
	return result ? "" : err+"\n";
}