var theLetter = "A";
var thisTeacherID = "";
var teacherTypes = "";
var smoothScroll = null;
var filterText = "";

function setLetter(someLetter, someElement) {
	
	if (someElement.disabled) {
		return;
	}
	
	if (smoothScroll == null) {
		var smoothScroll = new Fx.Scroll('speakerContainer', {
			wait: false,
			duration: 200,
			transition: Fx.Transitions.Quad.easeInOut
		});
	}
	
	smoothScroll.toElement( $("_" + someLetter + "_anchor") );

	/*// clear the currently selected item
	$ES(".selected","alphaSpeakersTable")[0].removeClass("selected");

	// and set the new one
	$(someElement).addClass("selected");
	*/
	
}

function scrollToID(someID) {
	
	if (smoothScroll == null) {
		var smoothScroll = new Fx.Scroll('speakerContainer', {
			wait: false,
			duration: 200,
			transition: Fx.Transitions.Quad.easeInOut
		});
	}
	
	smoothScroll.toElement( $(someID) );
	//smoothScroll.toElement( $("_teacher_" + someID) );

}

function changeTeacherTypeFilter(){ // DEPRECATED
	/*var checkBoxesArray = $ES("input[checked]", searchFiltersTable);
	var tempTeacherTypes = "";
	
	for (var x = 0; x < checkBoxesArray.length; x++) {
		var thisCheckBoxVal = checkBoxesArray[x].value;
		
		tempTeacherTypes = tempTeacherTypes + "," + thisCheckBoxVal;
	}
	
	teacherTypes = tempTeacherTypes.substr(1);
	
	alert(teacherTypes);
	
	reloadSpeakers();*/
	filterSpeakersByType();
}


function setDisabled(someElement, isDisabled) {
	someElement.disabled = isDisabled;
	
	for (var x = 0; x<someElement.getChildren().length; x++) {
		setDisabled(someElement.getChildren()[x], isDisabled)
	}
	
	if (! document.all) {
		if (isDisabled) {
			someElement.setStyle("color","#999999");
		} else {
			someElement.setStyle("color","black");
		}
	}
}

function filterSpeakersByType() {
	var checkBoxesArray = $ES("input", $("searchFiltersTable"));
	var tempTeacherTypes = "";
	
	for (var x = 0; x < checkBoxesArray.length; x++) {
		var thisCheckBoxVal = checkBoxesArray[x].value;
		
		if (checkBoxesArray[x].checked) {
			tempTeacherTypes = tempTeacherTypes + thisCheckBoxVal + ",";
		}
	}
	
	teacherTypes = tempTeacherTypes.toUpperCase();
	/*var possibleTeacherTables = $ES(".singleSpeakerTable");
	
	// show/hide the tables 
	for (var x = 0; x < possibleTeacherTables.length; x++) {
		var thisSpeakerTable = possibleTeacherTables[x];
		var thisSpeakerOuterDiv = $(getAncestorByType(thisSpeakerTable, "div"));
		
		toggleSpeaker(thisSpeakerName, thisSpeakerOuterDiv, thisSpeakerOuterDivider, thisSpeakerTable);
	*/
	
	
	var possibleNames = $ES(".teacherName");
	
	// show/hide the tables 
	for (var x = 0; x < possibleNames.length; x++) {
		var thisSpeakerNameTD = possibleNames[x];
		var thisSpeakerTable = $(getAncestorByType(thisSpeakerNameTD, "table"));
		var thisSpeakerOuterDiv = $(getAncestorByType(thisSpeakerTable, "div"));
		var thisSpeakerOuterDivider = thisSpeakerOuterDiv.getNext();

		
		if (document.all) {
			var thisSpeakerName = thisSpeakerNameTD.innerText;
		} else {
			var thisSpeakerName = thisSpeakerNameTD.getText();
		}

		toggleSpeaker(thisSpeakerName, thisSpeakerOuterDiv, thisSpeakerOuterDivider, thisSpeakerTable);

		/*var thisSpeakerTypeValue = thisSpeakerTable.getAttribute("teacherTypeValue") + ",";
		
		if (( tempTeacherTypes.toUpperCase().indexOf(thisSpeakerTypeValue) < 0) && (tempTeacherTypes != "") ){
			thisSpeakerTable.setAttribute("teacherTypeDisplay","none");
			thisSpeakerOuterDiv.setStyle("display","none"); 
		} else {
			thisSpeakerTable.setAttribute("teacherTypeDisplay","");
			thisSpeakerOuterDiv.setStyle("display", thisSpeakerTable.getAttribute("teacherTypeDisplay") ); 
		}*/
		
	}
	
	hideEmptyLetterHeaders();
}



function setSpeaker(newTeacherID,lang) {
	//alert(lang);
	if (newTeacherID == thisTeacherID) {
		return;
	}
	
	thisTeacherID = newTeacherID;
	thisLang = lang;
	loadSpeaker();
}

function processTeacherData(teacherDivHTML) {
	$("speakerSideBar").setHTML(teacherDivHTML);
}

function reloadSpeakers() {
	var rootURL = "http://www.yutorah.org/speakers/";
	//var rootURL = "http://yutorah.outdash.net/speakers/";
	var sideBar = document.getElementById('speakerContainer');
	
	
	var queryString = "?firstLetter=" + theLetter + "&teacherTypesList=" + teacherTypes  + "&organizationID=" + thisOrganizationID;
	var speakerURL = rootURL + "_getSingleSpeakerJS.cfm" + queryString;
	
	//alert("RELOAD:: speakerURL: " + speakerURL );
	
	$("speakerContainer").empty();
	
	var head = document.getElementsByTagName('HEAD')[0];
	var speakerScriptNode = document.createElement("SCRIPT");
	speakerScriptNode.id = "speakerScriptNode";
	speakerScriptNode.type = "text/javascript";
	speakerScriptNode.src = speakerURL;
	head.appendChild(speakerScriptNode);
	
	/*
	var queryString = "?firstLetter=" + theLetter + "&teacherTypesList=" + teacherTypes;
	var speakerURL = "_getSpeakersHTML111.cfm" + queryString;
	$("waitingSpinner").setStyles({"display":"block"});


	$("speakerContainer").empty();
	new Ajax(speakerURL, {
		method: 'get',
		onComplete: function(result) {
			$("speakerContainer").setHTML(result);
			$("waitingSpinner").setStyle("display","none");
		}
	}).request();
	*/
}

function loadSpeaker() {
	var rootURL = "http://www.yutorah.org/speakers/";
	//var rootURL = "http://yutorah.outdash.net/speakers/";
	var sideBar = document.getElementById('speakerSideBar');
	
	document.getElementById('speakerSideBar2').style.display = 'none';
	document.getElementById('speakerSideBar').style.display = 'block';
	
	
	var queryString = "?speakerID=" + thisTeacherID + "&organizationID=" + thisOrganizationID + "&lang=" + thisLang;
	//var speakerURL = rootURL + "_getSingleSpeakerHTML.cfm" + queryString;
	var speakerURL = rootURL + "_getSingleSpeakerJS.cfm" + queryString;
	
	//alert("LOAD:: speakerURL: " + speakerURL );

	
	
	$("speakerSideBar").empty();
	
	var head = document.getElementsByTagName('HEAD')[0];
	var speakerScriptNode = document.createElement("SCRIPT");
	speakerScriptNode.id = "speakerScriptNode";
	speakerScriptNode.type = "text/javascript";
	speakerScriptNode.src = speakerURL;
	head.appendChild(speakerScriptNode);
	
	
	/*
	var iFrame = document.getElementById('doCheck');
	iFrame.src = speakerURL;
	*/
}

function getAncestorByType(sourceNode, parentNodeType) {
	try {
		var tempParent = sourceNode.parentNode;
		
		if (tempParent.tagName.toUpperCase() == parentNodeType.toUpperCase() ) {
			return tempParent;
		} else {
			return getAncestorByType(tempParent, parentNodeType);
		}
	} catch(e) {
		return null;
	}
}

function toggleSpeaker(thisSpeakerName, thisSpeakerOuterDiv, thisSpeakerOuterDivider, thisSpeakerTable) {
	
	// if this speaker has this filter text
		var matchesFilter = ( (filterText == "") || ( thisSpeakerName.toUpperCase().indexOf(filterText) > -1));

	// if this speaker matches the filters
		var thisSpeakerTypeValue = thisSpeakerTable.getAttribute("teacherTypeValue") + ",";
		var matchesType = ( (teacherTypes == "") || ( teacherTypes.indexOf(thisSpeakerTypeValue) > -1) );
	
	// current visibility (dont need to hide something if its already invisible)
		var currentlyVisible = (thisSpeakerOuterDiv.getStyle("display") != "none");
	
	if ( matchesFilter && matchesType ) {
		thisSpeakerTable.setAttribute("teacherNameDisplay","");
		thisSpeakerOuterDiv.setStyle("display", "" ); 

		if (thisSpeakerOuterDivider) {
			thisSpeakerOuterDivider.setStyle("display","");
		}
	} else  {
			thisSpeakerOuterDiv.setStyle("display","none");
			thisSpeakerTable.setAttribute("teacherNameDisplay","none");
			if (thisSpeakerOuterDivider) {
				thisSpeakerOuterDivider.setStyle("display","none");
			}
	}
}

function filterSpeakersByName(someInput) {
	filterText = someInput.value.toUpperCase();
	
	var possibleNames = $ES(".teacherName");
	
	// show/hide the tables 
	for (var x = 0; x < possibleNames.length; x++) {
		var thisSpeakerNameTD = possibleNames[x];
		var thisSpeakerTable = $(getAncestorByType(thisSpeakerNameTD, "table"));
		var thisSpeakerOuterDiv = $(getAncestorByType(thisSpeakerTable, "div"));
		var thisSpeakerOuterDivider = thisSpeakerOuterDiv.getNext();
		
		if (document.all) {
			var thisSpeakerName = thisSpeakerNameTD.innerText;
		} else {
			var thisSpeakerName = thisSpeakerNameTD.getText();
		}
		
		toggleSpeaker(thisSpeakerName, thisSpeakerOuterDiv, thisSpeakerOuterDivider, thisSpeakerTable);
		
		/*if ( thisSpeakerName.toUpperCase().indexOf(filterText) < 0) {
			thisSpeakerOuterDiv.setStyle("display","none");
			if (thisSpeakerOuterDivider) {
				thisSpeakerOuterDivider.setStyle("display","none");
			}
			thisSpeakerTable.setAttribute("teacherNameDisplay","none");
		} else {
			thisSpeakerTable.setAttribute("teacherNameDisplay","");
			if (thisSpeakerOuterDivider) {
				thisSpeakerOuterDivider.setStyle("display",thisSpeakerTable.getAttribute("teacherNameDisplay"));
			}

			thisSpeakerOuterDiv.setStyle("display", thisSpeakerTable.getAttribute("teacherNameDisplay") ); 
		}
		*/
		
	}
	
	hideEmptyLetterHeaders();
}

function hideEmptyLetterHeaders() {
	// show hide the letter
	var letterDivs = $ES("._letterDiv");
	for (var x = 0; x < letterDivs.length; x++) {
		var thisLetterDiv = letterDivs[x];
		
		var numVisibleSpeakerTables = 0;
		var speakerTables = $ES(".singleSpeakerTable", thisLetterDiv);
		
		for (var y = 0; y < speakerTables.length; y++) {
			var thisSpeakerTable = speakerTables[y];
			var thisSpeakerTableDisplay = $(thisSpeakerTable.parentNode).getStyle("display");
			if (thisSpeakerTableDisplay != "none") {
				numVisibleSpeakerTables++;
				y = speakerTables.length;
			}
		}
		
		if ( numVisibleSpeakerTables == 0) {
			thisLetterDiv.setStyle("display","none");
			setDisabled( $("_letterAnchor_" + thisLetterDiv.title ), true);
		} else {
			thisLetterDiv.setStyle("display","");
			setDisabled( $("_letterAnchor_" + thisLetterDiv.title ), false);
		}
	}
	
	
}

function disableAllLetters() {
	var letterAnchors = $ES(".letterAnchor");
	
	for (var x = 0; x < letterAnchors.length; x++) {
		var thisLetterAnchor = letterAnchors[x];
		
		setDisabled( thisLetterAnchor, true);
	}
	
}

function enableSideButtons() {
	// show hide the letter
	var letterDivs = $ES("._letterDiv");
	for (var x = 0; x < letterDivs.length; x++) {
		var thisLetterDiv = letterDivs[x];
		
		var numVisibleSpeakerTables = 0;
		var speakerTables = $ES(".singleSpeakerTable", thisLetterDiv);
		
		for (var y = 0; y < speakerTables.length; y++) {
			var thisSpeakerTable = speakerTables[y];
			var thisSpeakerTableDisplay = thisSpeakerTable.getStyle("display");
			if (thisSpeakerTableDisplay != "none") {
				numVisibleSpeakerTables++;
				y = speakerTables.length;
			}
		}
		
		if ( numVisibleSpeakerTables == 0) {
			setDisabled( $("_letterAnchor_" + thisLetterDiv.title ), true);
		} else {
			setDisabled( $("_letterAnchor_" + thisLetterDiv.title ), false);
		}
	}
}