﻿/******************************************************************************
* Copyright © 2009-2010 Saddleback Church®. All Rights Reserved.
* Unauthorized use, duplication or distribution is strictly prohibited.
******************************************************************************
*
*	File:		peace.js
*	
*	Purpose:	This file contains the javascript function definitions for the
*				site used on the client side.
*	
*	Author:		Gerair D. Balian (gbalian@sbcglobal.net)
* 
******************************************************************************
*/
function f_clientWidth() {
    return f_filterResults(
		window.innerWidth ? window.innerWidth : 0,
		document.documentElement ? document.documentElement.clientWidth : 0,
		document.body ? document.body.clientWidth : 0
	);
}
function f_clientHeight() {
    return f_filterResults(
		window.innerHeight ? window.innerHeight : 0,
		document.documentElement ? document.documentElement.clientHeight : 0,
		document.body ? document.body.clientHeight : 0
	);
}
function f_scrollLeft() {
    return f_filterResults(
		window.pageXOffset ? window.pageXOffset : 0,
		document.documentElement ? document.documentElement.scrollLeft : 0,
		document.body ? document.body.scrollLeft : 0
	);
}
function f_scrollTop() {
    return f_filterResults(
		window.pageYOffset ? window.pageYOffset : 0,
		document.documentElement ? document.documentElement.scrollTop : 0,
		document.body ? document.body.scrollTop : 0
	);
}
function f_filterResults(n_win, n_docel, n_body) {
    var n_result = n_win ? n_win : 0;
    if (n_docel && (!n_result || (n_result > n_docel)))
        n_result = n_docel;
    return n_body && (!n_result) ? n_body : n_result;
}

function SizeDiv() {
    if (document.getElementById("_mediaContainer")) {
        if (swfobject.hasFlashPlayerVersion("10")) {
            var ClientWidth = f_clientWidth();
            var ClientHeight = f_clientHeight();
            var MovieWidth = parseInt(document.getElementById("_mediaContainer").style.width);
            var MovieHeight = parseInt(document.getElementById("_mediaContainer").style.height);
            var WidthRatio = ClientWidth / MovieWidth;
            var HeightRatio = ClientHeight / (MovieHeight + 170);
            var LowestRatio = 1;
            if (WidthRatio < HeightRatio) {
                LowestRatio = WidthRatio;
            }
            else {
                LowestRatio = HeightRatio;
            }
            if (LowestRatio < 1) {
                LowestRatio = 1;
            }
            if (LowestRatio > 1.2) {
                LowestRatio = 1.2;
            }
            var Width_New = MovieWidth * LowestRatio;
            var Height_New = MovieHeight * LowestRatio;
            document.getElementById("_mediaContainer").style.height = Height_New + "px";
            document.getElementById("_mediaContainer").style.width = Width_New + "px";
            var MarginHalf = ((ClientWidth - MovieWidth) / 2) * -1;
            var CenteredValue = (ClientWidth - Width_New) / 2;
            var LeftMargin = MarginHalf + CenteredValue;
            document.getElementById("_mediaContainer").style.marginLeft = LeftMargin - 20 + "px";
        }
        else {
            var flashvars = {};
            var params = {};
            var attributes = {};
            swfobject.embedSWF("/themes/pplan/flash/expressInstall.swf", "_mediaContainer", parseInt(document.getElementById("_mediaContainer").style.width), parseInt(document.getElementById("_mediaContainer").style.height), "10.0.0", "/themes/pplan/flash/expressInstall.swf", flashvars, params, attributes);
        }
    }
}
function AttachEventHandler() {
    document.body.onresize = function() {
        SizeDiv();
    }
}

if (typeof (IsAnonymous) == "undefined")
{
	IsAnonymous = function()
	{
		var ANONYMOUS = "CSAnonymous=";
		var isAnonymous = false;

		var cookies = document.cookie.split(";");
		var limit = cookies.length;

		for (var index = 0; index < limit; index++)
		{
			var cookie = cookies[index];
			var length = cookie.replace(/[ \t\r\n]/, "").length;

			if (length > 0)
			{
				var pos = cookie.indexOf(ANONYMOUS);
				if (pos != -1)
				{
					isAnonymous = true;
					index += limit;
				}
			}
		}

		return isAnonymous;
	}
}

if (typeof (PEACE) == "undefined")
{
	PEACE = function()
	{
		this.setCookie = function(cookieName, cookieValue, expireDays)
		{
			var name = cookieName;
			if (name != null)
			{
				var value = (cookieValue === null) ? "" : escape(cookieValue);
				var expires = "";

				if (expireDays)
				{
					expire = new Date();
					expire.setTime(expire.getTime() + (expireDays * 24 * 60 * 60 * 1000));

					expires = "; expires=" + expire.toGMTString();
				}

				var cookie = name + "=" + value + expires + "; path=/";

				document.cookie = cookie;
			}
		}
	}
}

function getMouseLocation(evt)
{
	var evtObj = (evt == null) ? window.event : evt;

	var mouseX = 0;
	var mouseY = 0;

	if (window.event)
	{
		mouseX = evtObj.clientX + document.body.scrollLeft;
		mouseY = evtObj.clientY + document.body.scrollTop;
	}
	else
	{
		mouseX = evtObj.pageX;
		mouseY = evtObj.pageY;
	}

	return { x: mouseX, y: mouseY };
}

function getOffset(el)
{
	var _x = 0;
	var _y = 0;

	while (el && !isNaN(el.offsetLeft) && !isNaN(el.offsetTop))
	{
		_x += el.offsetLeft - el.scrollLeft;
		_y += el.offsetTop - el.scrollTop;
		el = el.offsetParent;
	}

	return { top: _y, left: _x };
}

function focusHover()
{
	if ((imgs != null) && (imgOpacity <= 100))
	{
		var limit = imgs.length;

		for (var index = 0; index < limit; index++)
		{
			imgs[index].style.opacity = Number(imgOpacity / 100);
			imgs[index].filter = "alpha(opacity=" + Number(imgOpacity) + ")";
		}

		imgOpacity += 5;

		setTimeout('focusHover()', 30);
	}
}

function displayHover(reference, divId, opacity)
{
	var hoverDiv = document.getElementById(divId);

	if (hoverDiv != null)
	{
		var offset = getOffset(reference);

		hoverDiv.style.display = "block";
		hoverDiv.style.top = offset.top - 155 + 'px';
		hoverDiv.style.left = offset.left - 30 + 'px';

		if (opacity < 100)
		{
			imgs = hoverDiv.getElementsByTagName("img");
			imgOpacity = opacity;

			focusHover();
		}
	}
}

function displayStoryHover(reference, divId)
{
	var hoverDiv = document.getElementById(divId);

	if (hoverDiv != null)
	{
		var offset = getOffset(reference);

		hoverDiv.style.display = "block";
		hoverDiv.style.top = offset.top - 30 + 'px';
		hoverDiv.style.left = offset.left - 30 + 'px';
	}
}

function hideHover(divId)
{
	var hoverDiv = document.getElementById(divId);

	if (hoverDiv != null)
		hoverDiv.style.display = "none";
}

var g_currSubMenuOpen = null;
var g_currSubMenuParent = null;
function displaySubMenu(parent, referenceId, subMenuId)
{
	if ((referenceId == null) || (subMenuId == null))
	{
		if (g_currSubMenuOpen != null)
		{
			g_currSubMenuOpen.style.display = "none";
			g_currSubMenuOpen.onmouseout = null;
			g_currSubMenuOpen.onmouseover = null;
			g_currSubMenuOpen = null;

			if (g_currSubMenuParent != null)
				g_currSubMenuParent.style.color = "#9B9B9B";
				
			g_currSubMenuParent = null;
		}
	}
	else
	{
		var reference = document.getElementById(referenceId);
		var subMenu = document.getElementById(subMenuId);

		if ((g_currSubMenuOpen != null) && (g_currSubMenuOpen != subMenu))
		{
			g_currSubMenuOpen.style.display = "none";
			g_currSubMenuOpen.onmouseout = null;
			g_currSubMenuOpen.onmouseover = null;
			g_currSubMenuOpen = null;

			if (g_currSubMenuParent != null)
				g_currSubMenuParent.style.color = "#9B9B9B";

			g_currSubMenuParent = null;
		}

		var menuParent = subMenu.parentNode;
		menuParent.removeChild(subMenu);
		reference.appendChild(subMenu);

		var parentOffset = getOffset(parent);
		var referenceOffset = getOffset(reference);

		var menuTop = (reference.offsetHeight + referenceOffset.top) - 1;
		var menuLeft = parentOffset.left - 15;

		subMenu.style.top = menuTop + 'px';
		subMenu.style.left = menuLeft + 'px';

		subMenu.style.display = "block";

		g_currSubMenuOpen = subMenu;
		g_currSubMenuOpen.onmouseout = hideSubMenuDiv;
		g_currSubMenuOpen.onmouseover = hideSubMenuDiv;
		g_currSubMenuParent = parent;

		parent.onmouseout = hideSubMenu;
		parent.style.color = "#ffffff";
	}
}

function hideSubMenu(evt)
{
	var mouse = getMouseLocation(evt);
	var offset = getOffset(this);

	var top = offset.top;
	var left = offset.left;
	var bottom = offset.top + this.offsetHeight;
	var right = offset.left + this.offsetWidth;

	if ((mouse.x <= left) ||
		 (mouse.x >= right) ||
		 (mouse.y <= top))
	{
		g_currSubMenuOpen.style.display = "none";
		this.style.color = "#9B9B9B";
	}
}

function hideSubMenuDiv(evt)
{
	var mouse = getMouseLocation(evt);
	var offset = getOffset(this);

	var top = offset.top;
	var left = offset.left;
	var bottom = offset.top + this.offsetHeight;
	var right = offset.left + this.offsetWidth;

	if ((mouse.x <= left) ||
		 (mouse.x >= right) ||
//		 (mouse.y <= top) ||
		 (mouse.y >= bottom))
	{
		this.style.display = "none";
		g_currSubMenuParent.style.color = "#9B9B9B";
	}
}

/*
* TPP Slider control code.
*/

if (typeof (TPPSlider) == "undefined")
{
	TPPSlider = function()
	{
		var _links = new Array();
		var _slides = new Array();
		var _legends = new Array();

		var _currSlide = 0;
		var _ttlSlides = 0;

		var _linkContainer = null;
		var _slideContainer = null;
		var _legendContainer = null;
		var _currSlideLabel = null;
		var _ttlSlidesLabel = null;
		var _buttonPrev = null;
		var _buttonNext = null;

		var _onPrevClick = function(evt)
		{
			if (_currSlide > 0)
			{
				_currSlide--;

				if (_linkContainer != null)
					_linkContainer.href = _links[_currSlide];
					
				_slideContainer.src = _slides[_currSlide];
				_legendContainer.innerHTML = _legends[_currSlide];

				if (_currSlide <= 0)
					_buttonPrev.style.visibility = "hidden";

				_currSlideLabel.innerHTML = "" + (_currSlide + 1) + "";
			}

			if (_currSlide <= 0)
				_buttonNext.style.visibility = "visible";
		};

		var _onNextClick = function(evt)
		{
			_currSlide++;

			if (_currSlide < _ttlSlides)
			{
				if (_linkContainer != null)
					_linkContainer.href = _links[_currSlide];
					
				_slideContainer.src = _slides[_currSlide];
				_legendContainer.innerHTML = _legends[_currSlide];

				_buttonPrev.style.visibility = "visible";

				_currSlideLabel.innerHTML = "" + (_currSlide + 1) + "";
			}

			if (_currSlide >= (_ttlSlides - 1))
				_buttonNext.style.visibility = "hidden";

		};

		this.getSlide = function(idx)
		{
			return _slides[idx];
		}

		this.getLegend = function(idx)
		{
			return _legends[idx];
		}

		this.getLink = function(idx)
		{
			return _links[idx];
		}

		this.getCurrSlideIdx = function()
		{
			return _currSlide;
		}

		this.setCurrSlideIdx = function(idx)
		{
			_currSlide = idx;
		}

		this.getTotalSlides = function()
		{
			return _ttlSlides;
		}

		this.getSlidesArray = function()
		{
			return _slides;
		};

		this.getLegendsArray = function()
		{
			return _legends;
		};

		this.getLinksArray = function()
		{
			return _links;
		};

		this.setLinkContainer = function(id)
		{
			_linkContainer = document.getElementById(id);
		};

		this.getLinkContainer = function()
		{
			return _linkContainer;
		};

		this.setSlideContainer = function(id)
		{
			_slideContainer = document.getElementById(id);
		};

		this.getSlideContainer = function()
		{
			return _slideContainer;
		};

		this.setLegendContainer = function(id)
		{
			_legendContainer = document.getElementById(id);
		};

		this.getLegendContainer = function()
		{
			return _legendContainer;
		}

		this.setCurrSlideLabel = function(id)
		{
			_currSlideLabel = document.getElementById(id);
		};

		this.getCurrSlideLabel = function()
		{
			return _currSlideLabel;
		};

		this.setTotalSlidesLabel = function(id)
		{
			_ttlSlidesLabel = document.getElementById(id);
		};

		this.getTotalSlidesLabel = function()
		{
			return _ttlSlidesLabel;
		};

		this.setButtonPrev = function(id)
		{
			_buttonPrev = document.getElementById(id);

			if (_buttonPrev.addEventListener)
				_buttonPrev.addEventListener("click", _onPrevClick, false);
			else
				_buttonPrev.attachEvent("onclick", _onPrevClick);
		};

		this.getButtonPrev = function()
		{
			return _buttonPrev;
		};

		this.setButtonNext = function(id)
		{
			_buttonNext = document.getElementById(id);

			if (_buttonNext.addEventListener)
				_buttonNext.addEventListener("click", _onNextClick, false);
			else
				_buttonNext.attachEvent("onclick", _onNextClick);
		};

		this.getButtonNext = function()
		{
			return _buttonNext;
		};

		this.addNewSlide = function(imgSrc, legend, link)
		{
			_slides.push(imgSrc);
			_legends.push(legend);
			_links.push(link);

			_ttlSlides++;
		};
	};
}

TPPSlider.prototype.renderControl = function()
{
	var totalSlides = this.getTotalSlides();

	if (totalSlides > 0)
	{
		this.getButtonPrev().style.visibility = "hidden";
		this.getButtonNext().style.visibility = "hidden";

		if (totalSlides > 1)
			this.getButtonNext().style.visibility = "visible";

		var link = this.getLink(this.getCurrSlideIdx());
		var slide = this.getSlide(this.getCurrSlideIdx());
		var legend = this.getLegend(this.getCurrSlideIdx());

		var linkContainer = this.getLinkContainer()
		if (linkContainer != null)
			linkContainer.href = link;
			
		this.getSlideContainer().src = slide;
		this.getLegendContainer().innerHTML = legend;

		this.getCurrSlideLabel().innerHTML = "" + (this.getCurrSlideIdx() + 1) + "";
		this.getTotalSlidesLabel().innerHTML = "" + totalSlides + "";
	}
}