// settings
emailURL = "/utilities/email.html?title=%%title%%&url=%%url%%";
printURL = "/utilities/print.html?id=%%id%%";
similarURL = "/utilities/search.html?similar=%%url%%";

// channel load
function channelLoad()
{
	/* if (charCount) {
		var darrylsM = document.getElementById('message');
		
		if (darrylsM) {
			addEvent(darrylsM, 'keyup', charCountMsg);
		}
	} */

	if (window.advancePanel) advancePanel();
}

function addEvent(obj, evType, fn){ 
	if (obj.addEventListener){ 
		obj.addEventListener(evType, fn, false); 
		return true; 
	} else if (obj.attachEvent){ 
		var r = obj.attachEvent("on"+evType, fn); 
		return r; 
	} else { 
		return false; 
	} 
}



/*	Requires one or more tabs to be deselected, followed by one tab to be selected
Overwrites current class
*/
function deselectSelect() {

	var argLength = arguments.length;
	var currentDiv = argLength - 1;

	if (argLength < 1) {
		return;
	} else {
		for (i=0; i<(currentDiv); i++) {
			document.getElementById(arguments[i]).className = "";
		}
		document.getElementById(arguments[currentDiv]).className = "current";
	}
	return;
}

/*	Requires one or more elements to be hidden, followed by one element to be shown
Overwrites current class
*/
function hideShow() {

	var argLength = arguments.length;
	var showDiv = argLength - 1;

	if (argLength < 1) {
		return;
	} else {
		for (var i = 0; i < (showDiv); i++) {
			document.getElementById(arguments[i]).className = "hide";
		}
		document.getElementById(arguments[showDiv]).className = "show";
	}
	return;
}

function clickChangeBackground() {
	var argLength = arguments.length;
	var showDiv = argLength - 1;
	var desc;

	if (argLength < 1) {
		return;
	} else {
		
		for (i=0; i<(showDiv); i++) {
			document.getElementById(arguments[i]).className = "modelTab";
			desc="desc" + arguments[i];
			document.getElementById(desc).className = "hide";
		}
		document.getElementById(arguments[showDiv]).className = "modelTabClick";
		desc="desc" + arguments[i];
		document.getElementById(desc).className = "show";
	}
	return;
}



/* Requires one argument, which is the id id the element
*/

function changeBackground()
{		
	if (document.getElementById(arguments[0]).className!="modelTabClick") document.getElementById(arguments[0]).className = arguments[1];
}

/*		
	// TEMP - find 'related' section and apply style
	var anchorArray = document.getElementsByTagName("a");
	for (var i = 0; i < anchorArray.length; i++)
	{
		if (anchorArray[i].href.indexOf("#related") >= 0)
		{
			anchorArray[i].id = "relatedLink";
			break;
		}
	}
*/

// Shopping Cart Connection functions	

	function AddToCartCheck(theForm)
	{
		mediaType = theForm.variantidmenu.selectedIndex
		if (theForm.variantidmenu.options[mediaType].value == "") {
			alert("Please select a Media Type")
			return false
		}
		return true
	}

	function returnPVID(pvid)	{
		if (document.getElementById) {					
					var IDArray = pvid.value.split(",");
					document.AddToCartForm.productid.value = IDArray[0];
					document.AddToCartForm.variantid.value = IDArray[1];
		}
	}

// rating functions
	function toggleEdit(currItem, editItem)	{
		if (document.getElementById) {	
			my_div = document.getElementById(currItem).style;
			my_div.display = (my_div.display == "none") ? "inline" : "none";	
			my_div = document.getElementById(editItem).style;
			my_div.display = (my_div.display == "inline") ? "none" : "inline";	
			return false;
		}
		else {				
			return true;
		}
	}
	
	function returnStar(hidestar, showstars, reminder, starimg, theRating, theForm)	{
		if (document.getElementById) {	
			my_vote = document.getElementById(hidestar).style;
			my_result = document.getElementById(showstars).style;
			my_reminder = document.getElementById(reminder).style;
			my_img = document.getElementById(starimg);
			my_reminder.display = (my_reminder.display === 'none') ? 'block': 'none';
			my_vote.display = (my_vote.display == "none") ? "block" : "none";
			my_result.display = (my_result.display == "block") ? "none" : "block";
			my_form = document.getElementById(theForm);
			
			switch(theRating) {
				case "1":
					my_img.src = "/home/img/stars-1.gif";
					my_form.rating.value = '20';
					break;
				case "2":
					my_img.src = "/home/img/stars-2.gif";
					my_form.rating.value = '40';
					break;
				case "3":
					my_img.src = "/home/img/stars-3.gif";
					my_form.rating.value = '60';
					break;
				case "4":
					my_img.src = "/home/img/stars-4.gif";
					my_form.rating.value = '80';
					break;
				case "5":
					my_img.src = "/home/img/stars-5.gif";
					my_form.rating.value = '100';
					break;
				default:
					my_img.src = "/home/img/stars-0.gif";
					my_form.rating.value = '0';
					break;
				}
			return false;
		}
		else {				
			return true;
		}
	}

	function validateDelete(theName){
		msg = confirm("Are you sure you want to delete the comment from " + theName + "?");
		if (msg==true) {
			return true;
		}
		return false;
	}	

	function validateUserDelete(){
		msg = confirm("Are you sure you want to delete your comment?");
		if (msg==true) {
			return true;
		}
		return false;
	}		
	
	function checkStarRate(theForm){
		if (theForm.rating.value == '0') {
			alert("Please select a Star Rating")
			return false;
		}
		return true;
	}

	var form_submitted = false;	
	
	function submitRateForm(theForm) {
		if (checkStarRate(theForm)) {
			if (form_submitted) {
				alert ("Your form has already been submitted. Please wait...");
				return false;
			} else {
				form_submitted = true;
				return true;
			}	
			return true;	
		} else {
			return false;
		}		
	}

// limit characters in a text area
	//
	// Usage:
	// <span id="message_limit"><strong>1000</strong> characters remaining</span>
	// <textarea name="#" id="#" onkeyup="charCount(this,1000)" />
	//
	// Note: change limit of characters as needed
	//
	
	function charCount(what, maxCount) {
		var str = new String(what.value);
		var len = str.length;
		var limitSpan = document.getElementById("limitText");
		
		len = maxCount - len;
		
		if (document.getElementById) {	
			if (len < 0) {
				what.value = what.value.substring(0, maxCount);
			} else if (len > 1) {
				limitSpan.innerHTML = "<strong>" + len + "</strong> characters remaining";
			} else {
				limitSpan.innerHTML = "<strong>" + len + "</strong> character remaining";
			}
		}
	}
		
	function validateMessageBox() {
		var my_textarea = document.getElementById("message");
		if (my_textarea && my_textarea.value.length > 1000) {
			alert("Please limit your response to 1000 characters maximum.");
			return false;
		} else {
			return true;
		}
	}

	function stripURL(urlinput) { 
		urlString = new String(urlinput.value)
		strip_start = urlString.lastIndexOf('/');
		strip_end = urlString.length;
		strip_string = (urlString.substring(strip_start+1, strip_end)); 
		urlString ='http://smallgroups.com/admin?url='+strip_string ;
		return(urlString);
		
	}

// search functions
	var queryChanged = false;

	function changeQuery()
	{
		queryChanged = true;
	}
	
	function changeSearchType(type)
	{
		var submit_form = false;
		var query_input = document.getElementById("query");
		if (type && query_input && query_input.value && queryChanged)
		{
			submit_form = true;
		}
		
		if (type == null)
		{
			var query = window.getQueryVariable("type");
			if (query != "scripture" && query != "word" && query != "author")
			{
				type = "keyword";
			}
			else
			{
				type = query;
			}
		}
		window.writeCookie("searchType", type, null);
		
		var keyword_div = document.getElementById("keywordSearch");
		var keyword_div2 = document.getElementById("keywordSearch2");
		var scripture_div = document.getElementById("scriptureSearch");
		var scripture_div2 = document.getElementById("scriptureSearch2");
		var word_div = document.getElementById("wordSearch");
		var word_div2 = document.getElementById("wordSearch2");
		var author_div = document.getElementById("authorSearch");
		var author_div2 = document.getElementById("authorSearch2");
		var type_input = document.getElementById("searchType");
		var type_input2 = document.getElementById("searchType2");

		if (keyword_div) keyword_div.style.display = "none";
		if (keyword_div2) keyword_div2.style.display = "none";
		if (scripture_div) scripture_div.style.display = "none";
		if (scripture_div2) scripture_div2.style.display = "none";
		if (word_div) word_div.style.display = "none";
		if (word_div2) word_div2.style.display = "none";
		if (author_div) author_div.style.display = "none";
		if (author_div2) author_div2.style.display = "none";

		switch (type)
		{
			case "scripture":
				if (scripture_div) scripture_div.style.display = "block";
				if (scripture_div2) scripture_div2.style.display = "block";
				type_input.value = "scripture";
				if (type_input2) type_input2.value = "scripture";
				break;
			case "word":
				if (word_div) word_div.style.display = "block";
				if (word_div2) word_div2.style.display = "block";
				type_input.value = "word";
				if (type_input2) type_input2.value = "word";
				break;
			case "author":
				if (author_div) author_div.style.display = "block";
				if (author_div2) author_div2.style.display = "block";
				type_input.value = "author";
				if (type_input2) type_input2.value = "author";
				break;
			default:
				if (keyword_div) keyword_div.style.display = "block";
				if (keyword_div2) keyword_div2.style.display = "block";
				type_input.value = "keyword";
				if (type_input2) type_input2.value = "keyword";
				break;
		}

		if (submit_form)
		{
			var submit_button = document.getElementById("searchSubmit");
			if (submit_button) submit_button.click();
		}
	}
	
	function itemtoggleSearch(currItem, PlusMinusBtn)
	{
		if (document.getElementById)
		{
			my_div = document.getElementById(currItem).style;
			my_img = document.getElementById(PlusMinusBtn);
			my_div.display = (my_div.display == "inline") ? "none" : "inline";			
			my_img.src = (my_div.display == "inline") ? "/home/img/btn_search_up.gif" : "/home/img/btn_search_down.gif";
			return false;
		}
		else
		{				
			return true;
		}
	}	
	
	function submitSearchForm()
	{
		// display search status
		var status_span = document.getElementById("searchStatus");
		if (status_span) status_span.style.visibility = "visible";
		
		// compile filters
		var elements = document.getElementsByTagName("input");
		var filter_string = "";
		for (var i = 0; i < elements.length; i++)
		{
			if (elements[i].type == "checkbox" && elements[i].attributes.filter && elements[i].checked)
			{
				if (filter_string != "") filter_string += ";";
				filter_string += elements[i].value;
			}
		}
		var filter_input = document.getElementById("filter");
		if (filter_input) filter_input.value = filter_string;
	
		return false;
	}

	function clearFilters()
	{
		var elements = document.getElementsByTagName("input");
		for (var i = 0; i < elements.length; i++)
		{
			if (elements[i].type == "checkbox" && elements[i].attributes.filter)
			{
				elements[i].checked = false;
			}
			if (elements[i].type == "radio" && elements[i].attributes.filter)
			{
				elements[i].checked = false;
			}
		}
		var element = document.getElementById("toneAny");
		if (element) element.checked = true;
	}

	function selectAll()
	{
		var elements = document.getElementsByTagName("input");
		for (var i = 0; i < elements.length; i++)
		{
			if (elements[i].type == "checkbox" && elements[i].attributes.filter)
			{
				elements[i].checked = true;
			}
			
		}
		var element = document.getElementById("toneAny");
		if (element) element.checked = true;
	}
	
// panel settings	
	var panelCount = 3;
	var panelDelay = 4;

	var currentPanel = 0;
	var panelTimeout;

	function showPanel(panelNumber)
	{
		for (var panelIndex = 1; panelIndex <= panelCount; panelIndex++)
		{
			var myPanel = document.getElementById('panel_' + panelIndex);
			var myButton = document.getElementById('panelBtn_' + panelIndex);
			if (myPanel)
			{
				if (panelIndex == panelNumber)
				{
					currentPanel = panelIndex;
					myPanel.style.display = 'inline';
					myButton.className = 'current';
				}
				else
				{
					myPanel.style.display = 'none';
					myButton.className = '';
				}
			}
		}

		pausePanel();
	}
	
	function advancePanel()
	{
		nextPanel();
		panelTimeout = window.setTimeout(advancePanel, panelDelay * 1000);
	}
	
	function nextPanel()
	{
		currentPanel++;
		if (currentPanel > panelCount) currentPanel = 1;
		showPanel(currentPanel);
	}

	function previousPanel()
	{
		currentPanel--;
		if (currentPanel == 0) currentPanel = panelCount;
		showPanel(currentPanel);
	}
	
	function pausePanel()
	{
		if (panelTimeout) clearTimeout(panelTimeout);
	}


(function() {
	// This is a very simple function that will allow for basic AJAX functionality on the site.
	// The function is passed an object of options, with the following options available:
	// method: string; defaults to 'post'
	// url: string; which server file? defaults to current page
	// onRequest: function; what to do when the request is sent
	// onComplete: function; what to do when the request is completed
	// onSuccess: function; what to do when the request is completed and successful
	// onFailure: function; what to do when the request is completed but failed
	//
	// Usage:
	// var requester = request({
	//		method: 'get',
	//		url: '/path/to/file.html',
	//		onRequest: function() {
	//			// do something like display ajax loader
	//		},
	//		onSuccess: function(response) {
	//			// do something like display response
	//		},
	//		onFailure: function() {
	//			// do something like display error message
	//		}
	//	});
	this.request = function(options) {
		var that = {},
			url = options.url || location.href,
			method = options.method.toLowerCase() || 'post',
			xhr, onStateChange;
			
		try {
			xhr = new XMLHttpRequest();
		} catch (e) {
			try {
				xhr = new ActiveXObject('MSXML2.XMLHTTP');
			} catch (e) {
				try {
					xhr = new ActiveXObject('Microsoft.XMLHTTP');
				} catch (e) {
					xhr = null;
				}
			}
		}
		
		onStateChange = function() {
			if (xhr.readyState !== 4) return;
			if (options.onComplete !== undefined) options.onComplete(xhr.responseText, xhr.responseXML);
			if (xhr.status === 200 || xhr.status === 304) {
				if (options.onSuccess !== undefined) options.onSuccess(xhr.responseText, xhr.responseXML);
			} else {
				if (options.onFailure !== undefined) options.onFailure(xhr.responseText, xhr.responseXML);
			}
		};
		
		that.send = function(data) {
			if (xhr) {
				if (data && (method === 'get' || method === 'put')) {
					url += (url.indexOf('?') !== -1 ? '&' : '?') + data;
					data = null;
				}
				
				if (method === 'post') xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
				xhr.open(method, url, true);
				xhr.onreadystatechange = onStateChange;
				if (options.onRequest !== undefined) options.onRequest();
				xhr.send(data);
			}
		};
		
		return that;
	};

	var getChildren = function(elem, tag) {
		var children = elem.childNodes,
			l = children.length,
			elems = [],
			tag = typeof tag === 'String' ? tag.toUpperCase() : null,
			i;
		for (i = 0; i < l; i += 1) {
			if (tag && children[i].nodeName === tag) elems.push(children[i]);
			if (!tag && children[i].nodeType === 1) elems.push(children[i]);
		}
		return elems;
	};
	
	this.fetchPanel = function() {
		var tabs = null, panels = null, xhr = null, content = [true];
		return function(index, tabIndex, url) {
			var j = (typeof tabIndex === 'number') ? tabIndex : index,
				url = url || '/home/ajax/tabs_index.html',
				i, l;
			tabs = tabs || getChildren(document.getElementById('newAndPopNav'), 'li');
			panels = panels || getChildren(document.getElementById('newAndPopContent'), 'div');
			
			for (i = 0, l = tabs.length; i < l; i += 1) {
				tabs[i].className = (i === j) ? 'current' : '';
				panels[i].className = (i === j) ? 'show' : 'hide';
			}
			
			if (xhr && xhr.abort && !content[index]) xhr.abort();
			if (!content[j]) {
				xhr = request({
					method: 'get',
					url: url,
					onRequest: function() {
						panels[j].innerHTML = '<img src="/system/img/ajax-loader-large.gif" style="position: absolute; left: 110px; top: 85px;" />';
					},
					onSuccess: function(response) {
						content[j] = true;
						panels[j].innerHTML = response;
					},
					onFailure: function() {
						panels[j].innerHTML = '<p>There was an error while attempting to communicate with the database. Please try again later.</p>';
					}
				});
				xhr.send('tab=' + index);
			}
		}
	}();
})();
