/* ------- convenience functions ------- */
if(!String.prototype.startsWith){
	String.prototype.startsWith = function (str) {
		return (this.lastIndexOf(str, 0) === 0);
	}
}
/* ------- MEM functionality ------- */
var effects = new Array()
var pageFrame   = "";
var newPage     = "";
var loadingPage = null;
if (typeof homePage === "undefined")
	var homePage = "#checklists";
var currentPage = homePage.replace('#','');
var zipCode;var sCategory;
var nextTopic   = "";
var browser=navigator.appName;
var b_version=navigator.appVersion;
var version=parseInt(navigator.appVersion.split("MSIE")[1]);
var providerMenu = false;
var backgroundImageURLs = "";
window.addEvent('domready', function(){
	backgroundSwap();
	window.realAlert = window.alert;
	window.alert     = function(text, nextText, nextUrl) {
		// TODO
		if (!text)
			return false;
		$('modal-text').innerHTML = text;
		if (!nextText)
		{
			$('modal-detail').style.display = "none";
			$('modal-next').style.display   = "none";
		} else {
			$('modal-detail').style.display = "block";
			$('modal-next').style.display   = "block";
			$('modal-detail').innerHTML     = nextText;
		}
		
		if (nextUrl)
		{
			$('modal-next').addEvent('click', function(el) {window.location.href = nextUrl});
			$('modal-detail').addEvent('click', function(el) {window.location.href = nextUrl});
		} else
		{
			$('modal-next').onclick=function(el) {};
			$('modal-detail').onclick=function(el) {};
		}
		$('modal-popup').style.display      = 'block';
		var fx = new Fx.Morph('modal-popup', {duration: 400});
		fx.set({'opacity': 0});
		fx.start({'opacity': 1});
		linkify();
		return true;
	};
	
	window.closeAlert   = function(text, nextText, nextUrl) {
		if ($('modal-popup').style.opacity == 1)
		{
			var fx = new Fx.Morph('modal-popup', {duration: 400});
			fx.set({'opacity': 1});
			fx.start({'opacity': 0});
			return true;
		}
	};
	window.openAlert = function(new_message) {
		if(new_message)
			$('userRequestFormTopText').innerHTML = new_message;
		else
			$('userRequestFormTopText').innerHTML = null;
		if ($('modal-popup').style.opacity == 0)
		{
			var fx = new Fx.Morph('modal-popup', {duration: 400});
			fx.set({'opacity': 0});
			fx.start({'opacity': 1});
			return true;
		}
	};
		
	effects['content-box-right'] = new Fx.Tween($('content-box-right'), {
		onChainComplete: function(enva) {
			if (enva.style.width != "0px")
			{
				changeFunctions();
			} else {
				//effects['innerNav'].start("width", 0);
			}
			scrollPage();
		}
	});
	
	effects['dashboard-box'] = new Fx.Tween($('dashboard-box'), {
		onChainComplete: function(enva) {
			if (enva.style.width != "0px")
			{
				changeFunctions();
			} else {
				//effects['innerNav'].start("width", 0);
			}
		},
		onStart: function(enva)
		{
			//toggleFlash(1);
		}
	});
	
	effects['adContent'] = new Fx.Tween($('adContent'), {
		link: 'chain',
		onChainComplete: function(enva) {
			if (($('adContent').style.width == '0px') || ($('adContent').style.width == '0'))
				$('ad-html-text').innerHTML = '';
		}
	});
	effects['tour-div']  = new Fx.Tween($('tour-div'));	
	effects['innerNav']  = new Fx.Tween($('innerNav'), {
		link: 'chain',
		onChainComplete: function(enva) {
			if ((enva.style.height == '230px') || (enva.style.height == '230'))
				effects['providerExpandButton'].start("height", 40);
		},
		onStart: function(enva) {
			if ((enva.style.height == '230px') || (enva.style.height == '230'))
				effects['providerExpandButton'].start("height", 0);
		}
	});
	effects['providerExpandButton']  = new Fx.Tween($('providerExpandButton'), {
		link: 'chain',
		onChainComplete: function(enva) {
			if ((enva.style.height == '0px') || (enva.style.height == '0')) {
				enva.style.display = "none";
			} else {
				enva.style.display = "block";
			}
		}
	});
/*
	effects['innerNav2'] = new Fx.Tween($('innerNav2'), {link: 'chain'});
	effects['find-provider'] = new Fx.Tween($('find-provider'), {link: 'cancel'});
	effects['find-provider'].set("height", 20);
*/
	effects['index-main'] = new Fx.Tween($('index-main'));
	//effects['outside_canvas'] = new Fx.Tween($('outside_canvas'), {});
	effects['map-outside-canvas'] = new Fx.Tween($('map-outside-canvas'), {});
	effects['map-outside-canvas-box'] = new Fx.Tween($('map-outside-canvas-box'), {});
	mapTabHide();
	
	if (browser=="Microsoft Internet Explorer" && version == 6)
		fixPNGs();

/*	$('commentForm').addEvent('submit', function(e) {
		//Prevents the default submit event from loading a new page.
		e.stop();
		this.set('send', {
			onComplete: function(response) {
				mySlide.slideOut();
				alert("Your comment has been submitted!  Thank you!");
			}
		});
		//Send the form.
		$('comment-page').value = currentPage;
		if ($('comment-text').value.length > 0)
			this.send();
		else
			alert("You must enter a comment!");
	});*/

	//document.write('<script type="text/javascript" src="http://maps.google.com/maps?file=api&v=2&sensor=true_or_false&key=ABQIAAAAVnLwH_9x2orDnz7DrEyV4RQFNYzhlnwXFc5f2NG4yh1NBiG1kxTZRMiPRpGz0fGPbn5f7R1ssAmg2w"></script>');
	//document.close();
});

/*
var toggleMap       = function(on)
{
	if ($('outside_canvas').style.width != "0px" || !on)
		effects['outside_canvas'].start("width", 0);
	if ($('outside_canvas').style.width == "0px" || on)
		effects['outside_canvas'].start("width", 500);
}
*/

var google_map_data = new Object();google_map_data.refresh = false;
var mapInitialize = function()
{
	google_map_data.refresh = true;
	google_map_data.locations = new Array();
	google_map_data.center_latitude = 0;
	google_map_data.center_longitude = 0;
	mapLoadGoogleScripts();
}
var toggleMap = function(on)
{
	if ($('map-outside-canvas').style.marginLeft == "0px")
	{
		mapRender(true);
		effects['map-outside-canvas'].start("margin-left", -400);
		effects['map-outside-canvas-box'].start("opacity",1);
		$('map-outside-canvas-handle').style.background = "url('/pl/www/images/map-tab2.png')";
	} else {
		effects['map-outside-canvas'].start("margin-left", 0);
		effects['map-outside-canvas-box'].start("opacity",0);
		$('map-outside-canvas-handle').style.background = "url('/pl/www/images/map-tab.png')";
	}
}
var mapTabHide = function()
{
	effects['map-outside-canvas'].start("opacity", 0);
	effects['map-outside-canvas'].set("margin-left", 0);
	effects['map-outside-canvas-box'].start("opacity",0);
}
var mapTabShow = function()
{
	effects['map-outside-canvas'].start("opacity", 1);
}
var mapIsClosed = function()
{
	return (($('map-outside-canvas').style.marginLeft == "0px") ? true : false);
}
var mapRender = function(toggling)
{
	// Is google Maps loaded?
	if (typeof GBrowserIsCompatible === 'undefined') {
		return false
	}
	if (!GBrowserIsCompatible()) {
		$('map-outside-canvas-inside').innerHTML = "<p>Your browser is not supported. We suggest you upgrade your browser</p>";
		return false;
	}
	if (google_map_data.refresh != true)
		return false;
	if (!toggling && mapIsClosed())
		return false;

	var map = new GMap2(document.getElementById("map-outside-canvas-inside"));
	map.setCenter(new GLatLng(google_map_data.center_latitude, google_map_data.center_longitude), google_map_data.zoom);
	map.setUIToDefault();

	for (i=0; i<google_map_data.locations.length; i++)
	{
		var loc = google_map_data.locations[i];
		var latlng = new GLatLng(loc.latitude, loc.longitude);
		map.addOverlay(mapCreateMarker(latlng, loc.marker_text, loc.marker_image));
	}

	google_map_data.map = map;
	google_map_data.refresh = false;
}
var mapCreateMarker = function(point, text)
{
	// Is google Maps loaded?
	if (true != google_map_script_loaded)
		return;
	// Create a base icon for all of our markers that specifies the
	// shadow, icon dimensions, etc.
	baseIcon = new GIcon(G_DEFAULT_ICON);
	baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
	baseIcon.iconSize = new GSize(32, 33);
	baseIcon.shadowSize = new GSize(37, 34);
	baseIcon.iconAnchor = new GPoint(9, 34);
	baseIcon.infoWindowAnchor = new GPoint(9, 2);
	// Create a lettered icon for this point using our icon class
	var letteredIcon = new GIcon(baseIcon);
	if (arguments[2])
		letteredIcon.image = arguments[2];
	else
		letteredIcon.image = "/images/circle.png";
	
	// Set up our GMarkerOptions object
	markerOptions = { icon:letteredIcon };
	var marker = new GMarker(point, markerOptions);
	
	GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml(text);
	});
	return marker;
}
var createMarker = mapCreateMarker; // for limited time backwards compatibility
var google_map_script_loaded = false;
var mapLoadGoogleScripts = function() {
	if (google_map_script_loaded == false) {
		if (self.google_map_js) { // Already exists
			return;
		}
		var head = document.getElementsByTagName("head")[0] || document.documentElement;
		script = document.createElement('script');
		script.id = 'google_map_js';
		script.type = 'text/javascript';
		script.src = google_map_js_url;
		head.appendChild(script);

		google_map_script_loaded = true;
	}
}
/*
function evalScript(elem) {
	var data = (elem.text || elem.textContent || elem.innerHTML || "" );
	var head = document.getElementsByTagName("head")[0] || document.documentElement;
	var script = document.createElement("script");

	script.type = "text/javascript";
	try { script.appendChild(document.createTextNode(data));      
	} catch(e) { script.text = data; // IE has funky script nodes
	}

	head.insertBefore(script, head.firstChild);
	head.removeChild(script);
};
*/

var toggleProviders = function()
{
	if (providerMenu == false)
		setProviderMenuUp();
//	else if ($('innerNav2').style.height == '60px')
	else if ($('innerNav').style.height == '230px')
			setProviderMenuDown();
		else
			setProviderMenuUp();
}
var setProviderMenuDown = function()
{
	providerMenu = 'down';
	// effects['providerExpandButton'].set("height", 0);
	effects['innerNav'].start("height", 552);
	effects['adContent'].start("opacity", 0);

	// effects['innerNav2'].start("height", 552);
	// effects['find-provider'].start("height", 20);
}
countMenuUp = 0;
var setProviderMenuUp = function()
{
countMenuUp = countMenuUp + 1;
	// alert("setProviderMenuUp() called - " + countMenuUp);
	providerMenu = 'up';
	effects['innerNav'].start("height", 230);
	effects['adContent'].start("opacity", 1);

	// effects['innerNav'].start("height", 60);
	// effects['find-provider'].start("height", 70);
	// $('find-provider-text').style.display = "block";
	// alert("setProviderMenuUp() done - " + countMenuUp);
}
var setProviderMenuOpen = function()
{
	//if ($('innerNav').style.width != '200px') // breaks chaining
	effects['innerNav'].start("width", 200);
}
var setProviderMenuClosed = function()
{
	//if ($('innerNav').style.width == '200px') // breaks chaining
	effects['innerNav'].start("width", 0);
	setProviderMenuDown();
}
var isProviderMenuOpen = function()
{
	if ($('innerNav').style.width == '200px')
		return true;
	else
		return false;
}
var isProviderMenuClosed = function()
{
	return !isProviderMenuOpen();
}
var setProviderMenuRight = function()
{
	effects['innerNav'].set("left", 570);
	setProviderMenuOpen();
	setProviderMenuDown();
}
var setProviderMenuLeft = function()
{
	effects['innerNav'].start("left", 30);
}

var resetLinks = function(text)
{
	$$(document.links).filter(function(el) {
		if (el.rel && el.rel.test(/^toggler/i))
		{
			el.style.color = "";
			el.parentNode.className = "";
		}
		if (el.href.replace(text, "") != el.href)
		{
			el.style.color = "#fff";
			el.parentNode.className = "currentLI";
		}
	});
}

var page;

/*
var preloadPage = function(identifier, slidetype)
{
	ident = identifier.split("|");
	page  = new Request({url: '/ajax/question/' + ident[ident.length - 1], 
		onSuccess: function(html) {
			if (html == '-1')
				loadPage(this.options.pageIdent, this.options.loadInto);
			else
			{
				loadingPage = newPage   = this.options.pageIdent;
				pageFrame = this.options.loadInto;
				alert(html);
				changeFunctions();
				$('answer-form').addEvent('submit', function(e) {
					//Prevents the default submit event from loading a new page.
					e.stop();
					this.set('send', {
						onComplete: function(response) {
							closeAlert();
							loadPage(newPage, pageFrame);
							newPage   = "";
							pageFrame = "";
						}
					});
					//Send the form.
					this.send();
				});

			}	
		},
		method: 'get',
		loadInto: slidetype,
		pageIdent: identifier.replace("-toggle", ""),
		evalScripts: true
	});
	page.send();
	return false;
	loadPage(identifier, slidetype);
}
*/

var softLoadPage = function(identifier, slidetype)
{
	var fx = new Fx.Morph(slidetype, {duration: 200});
	fx.set({'opacity': 1, 'display': 'block'});
	fx.start({'opacity': 0});
	loadingPage = identifier.replace("-toggle", "");
	page = new Request({url: '/ajax/' + identifier.replace("-toggle", "").replace(/\|/g, "/"), 
		onSuccess: function(html) {
			//window.location.hash = "#" + this.options.pageIdent + "[" + this.options.loadInto + "]";
			loadContent(html, this.options.loadInto)
			var fx = new Fx.Morph(this.options.loadInto, {duration: 500});
			fx.set({'opacity': 0, 'display': 'block'});
			fx.start({'opacity': 1});
			trackEvent(this.options.url.replace('/ajax/',''));
			//pageTracker._trackPageview(this.options.url.replace('/ajax', ''));
			//if (typeof otherTracker !== "undefined")
			//	otherTracker._trackPageview(this.options.url.replace('/ajax', ''));
		},
		method: 'get',
		loadInto: slidetype,
		pageIdent: identifier.replace("-toggle", ""),
		evalScripts: true
	});
	page.send();
	return false;
}

var softLoadContent = function(html, slidetype)
{
	$(slidetype).innerHTML = html;
	return false;
}

var loadPage = function(identifier, slidetype)
{
	loadingPage = identifier.replace("-toggle", "");
	page = new Request({url: '/ajax/' + identifier.replace("-toggle", "").replace(/\|/g, "/"), 
		onSuccess: function(html) {
			//window.location.hash = "#" + this.options.pageIdent + "[" + this.options.loadInto + "]";
			loadContent(html, this.options.loadInto)
			pageTracker._trackPageview(this.options.url.replace('/ajax', ''));
			if (typeof otherTracker !== "undefined")
				otherTracker._trackPageview(this.options.url.replace('/ajax', ''));
		},
		method: 'get',
		loadInto: slidetype,
		pageIdent: identifier.replace("-toggle", ""),
		evalScripts: true
	});
	page.send();
	return false;
}

var loadContent = function(html, slidetype)
{
	$(slidetype).innerHTML = html;
	doSlide = function() {
		if (slidetype == 'content-box-right')
			effects[slidetype].start("width", 530);
		else
			effects[slidetype].start("width", 780);
	}
	setTimeout("doSlide()", 500);
	return false;
}

var attachToCheckbox = function()
{
	$$(document.getElementsByTagName('input')).filter(function(el) {
		return el.id && el.id.test(/^checkbox/i);
	}).addEvent('click', function(el) {
		if (checking)
			return false;
		save = new Request({url: '/ajax/checkbox/' + this.id.replace("checkbox-", "") + '/' + (this.checked?"1":"0"), 
			onSuccess: function(html) {
				// TODO: Check, uncheck or prompt for signup.
				if (html == "2" || html == "0")
					this.options.checkbox.checked = false;
				if (html == "2")
					alert("To use the checklist you must be <a href=\"/login\">logged in</a> or <a href=\"/register\">register</a>!");
				if (html == "1")
					alert("Your checklist has been updated!");
				checking = false;
			},
			method: 'get',
			checkbox: el
		});
		save.send();
		checking = true;
	})
}

var checking = false;

var attachDefinitions = function()
{
	$$('a.definition').each(function(el) {

		values = el.title.split("::");
		el.store('tip:title', values[0]);
		el.store('tip:text', values[1]);
		if ($type(values[2]))
			el.store('tip:spn', values[2]);
		if ($type(values[3]))
			el.store('tip:spntext', values[3]);

		var SimpleTip = new Tips(el, {
			showDelay: 0,
			hideDelay: 50,
			maxTitleChars: 50,
			showOnMouseEnter: false,
			offsets: {x: -115, y: 10},
			fixed: true
		});
		return;
	})
}

var attachDocuments = function()
{
	$$('a.document').each(function(el) {
		el.store('tip:title', el.innerHTML);
		el.store('tip:text', 'Click the document name to open a blank form. Documents can be printed and used as a guide to store information, or register for an <a href="/#dlb">Estate Digital Lockbox&trade;</a> to complete and store forms safely and securely.<br/><a href="/#dlb" class="bottom-link">Go to Estate Digital Lockbox&trade;</a>');

		var SimpleTip = new Tips(el, {
			showDelay: 0,
			hideDelay: 50,
			showOnMouseEnter: false,
			offsets: {x: -115, y: 10},
			fixed: true
		});
		return;
	})

/* we no longer require the user to login
	$$('a.document-login').each(function(el) {
		el.store('tip:title', el.innerHTML);
		el.store('tip:text', "In order to access the document library and download documents you must be logged in.  <a href=\"/register\">free registration</a>");

		var SimpleTip = new Tips(el, {
			showDelay: 0,
			hideDelay: 50,
			showOnMouseEnter: false,
			offsets: {x: -115, y: 10},
			fixed: true
		});
		return;
	})
*/
}


var attachHovers = function()
{
	$$('a.hover').each(function(el) {

		values = el.title.split("::");
		el.store('tip:title', values[0]);
		el.store('tip:text', values[1]);

		var SimpleTip = new Tips(el, {
			showDelay: 0,
			hideDelay: 500,
			showOnMouseEnter: false,
			offsets: {x: -115, y: 10},
			fixed: true
		});
		return;
	})
}

var searchElements = function()
{
	category = "";
	for (i = 0; i < document.directorySearch.category.length; i++)
	{
		if (document.directorySearch.category[i].checked)
			category = document.directorySearch.category[i].value;
	}
	if (category == "")
	{
		alert("Please select a service category.");
	} else if ($('zipcode').value == '') {
		alert("Please enter a zipcode.");
	} else
	{
		zipCode = $('zipcode').value;
		window.location.hash = "#directory-search|" + category + "|" + $('zipcode').value;
	}
	return false;
}

var searchElements2 = function()
{
	category = $('left-category').value
	zipCode  = $('left-zipcode').value;
	if (category == "")
	{
		alert("Please select a service category.");
		return false;
	}
	if ((zipCode == '') || (zipCode == 'enter zip code')) {
		window.location = "/#spn|" + category;
		return false;
	}
	if (!isValidZipCode(zipCode)) {
		alert("The zipcode does not appear to be valid. Please enter a valid zipcode.");
		return false;
	}

	window.location = "/#directory-search|" + category + "|" + zipCode;
	return false;
}

var searchElements3 = function()
{
	category = document.directorySearchSPN.category.value
	if (category == "")
	{
		alert("Please select a service category.");
	} else if ($('spn-zipcode').value == '') {
		alert("Please enter a zipcode.");
	} else {
		zipCode = $('spn-zipcode').value;
		window.location.hash = "#directory-search|" + category + "|" + $('spn-zipcode').value;
	}
	return false;
}

/*
var searchElements4 = function()
{
	category = $('home-category').value
	if (category == "")
	{
		alert("Please select a service category.");
	} else if ($('home-zipcode').value == '') {
		alert("Please enter a zipcode.");
	} else
	{
		zipCode = $('home-zipcode').value;
		window.location.hash = "#directory-search|" + category + "|" + $('home-zipcode').value;
	}
	return false;
}

var searchElements5 = function()
{
	category = $('left2-category').value
	if (category == "")
	{
		if ($('left2-zipcode').value != '')
			zipCode = $('left2-zipcode').value;
		alert("Please select a service category.");
		return false;
	}
	if ($('left2-zipcode').value == '') {
		alert("Please enter a zipcode.");
		return false;
	}
	if ($('left2-zipcode').value != '' && $('left2-category').value != '')
	{
		zipCode = $('left2-zipcode').value;
		window.location.hash = "#directory-search|" + category + "|" + $('left2-zipcode').value;
//		window.location.hash = "#spn|" + category;
	}
	return false;
}
*/

var checkAccordians = function()
{
	var myAccordion = new Accordion($('faqs'), 'h3.toggler', 'div.element', {
		opacity: false,
		onActive: function(toggler, element){
			//toggler.setStyle('color', '#41464D');
		},
		onBackground: function(toggler, element){
			//toggler.setStyle('color', '#528CE0');
		}
	});
}

var changeTitle = function()
{
	data           = currentPage.replace(/\//g, "|").replace(/\_/g, " ").split("|");
	tempPage       = currentPage.replace(/\//g, "|").replace(/\_/g, " ");
	if (data[0] == "topic" || data[0] == "step")
		document.title = data[1].replace(/\-/g, " ").ucWords() + " | " + titleName;
	else if ((data[0] == "directory-search") || (data[0] == "directory-search-all"))
		document.title = "Directory Search | " + data[1].ucWords() + " | " + data[2].ucWords() + " | " + titleName;
	else if (data[0] == 'dlb')
		document.title = "Digital Lock Box | " + titleName;
	else if (data[0] == 'mpa')
		document.title = "My Personal Administrator | " + titleName;
	else if (data[0] == 'resources')
		document.title = "Reference Center | " + titleName;
	else if (data[0] == 'spn' && !tempPage.contains("|"))
		document.title = "Service Partner Network | " + titleName;
	else if (data[0] == 'spn' && tempPage.contains("|"))
		document.title = data[1].ucWords() + " | Service Partner Network | " + titleName;
	else
		document.title = data[0].ucWords() + " | " + titleName;
}

var setFontSize = function(size)
{
	//document.body.setStyle('font-size', size);
	$('content-box-right').setStyle('font-size', size);
	$$('contentBoxCont').setStyle('font-size', size);
}

var theFadeOuts = new Array();
var theFadeIns  = new Array();

var checkForAd = function()
{
    // cancelFades
    var i;
    for (i = 0; i < theFadeIns.length; i++)
        clearTimeout(theFadeIns[i]);
    for (i = 0; i < theFadeOuts.length; i++)
        clearTimeout(theFadeOuts[i]);
					
	new Request(
		{
			url: '/ajax/ad-text/' + currentPage.replace("/", "-").replace(/ /g,"_"),
			onSuccess: function (html)
			{
				if (html != "-1")
				{
					// Insert the html
					$('ad-html-text').innerHTML = html;
					$$('.ad-page').each(function(el) {
						el.setStyle("opacity", '0');
						el.setStyle("display", 'none');
						time = parseInt(el.id.replace('ad-page-', ''));
						theFadeIns[theFadeIns.length] = setTimeout("fadeIn('" + el.id + "', " + $$('.ad-page').length + ")", (time * 10000));
						theFadeOuts[theFadeOuts.length] = setTimeout("fadeOut('" + el.id + "')", ((time + 1) * 10000));
					});
					if (browser == "Microsoft Internet Explorer" && version == 6)
						fixPNGs();
					setProviderMenuUp();
					effects['adContent'].start("width", 251);
				} else {
					if ($('adContent').style.width == '251px')
						effects['adContent'].start("width", 0);
 				}
			},
			method: 'get'
		}
	).send();
}

var fadeIn = function(id, count)
{
	// cancelFades
	/*for (i = 0; i < theFadeIns.length; i++)
		clearTimeout(theFadeIns[i])*/
	var fx = new Fx.Morph(id, {duration: 400});
	fx.set({'opacity': 0, 'display': 'block'});
	fx.start({'opacity': 1});
	theFadeIns[theFadeIns.length] = setTimeout("fadeIn('" + id + "', " + count + ")", (count * 10000));
	theFadeOuts[theFadeOuts.length] = setTimeout("fadeOut('" + id + "')", (count + 1) * 10000);
}

var fadeOut = function(id)
{
	/*for (i = 0; i < theFadeOuts.length; i++)
		clearTimeout(theFadeOuts[i])*/
	var fx = new Fx.Morph(id, {duration: 400});
	fx.set({'opacity': 1, 'display': 'none'});
	fx.start({'opacity': 0});
}

var backgroundSwapAction = function(el1, el2, bkgd)
{
	el1.style.background = "url(" + bkgd + ")";
	el1.style.display	= "block";
	var fx = new Fx.Morph(el1, {duration: 800});
	fx.set('opacity', 0);
	fx.start({'opacity': 1});
	var fx = new Fx.Morph(el2, {duration: 1200, onChainComplete: function(el) {
		el.style.display = "none";
	}});
	fx.set('opacity', 1);
	fx.start({'opacity': 0});
}
function loadBackgroundImageURLs() {
	var jsonRequest = new Request.JSON({
		url: "/ajax/backgrounds",
		onComplete: function(results){
			backgroundImageURLs = results;
			backgroundSwap(true);
		}
	});
	jsonRequest.get();
}
var backgroundSwap = function(first_load)
{
	if (backgroundImageURLs == "") {
		loadBackgroundImageURLs();
		return false;
	}
	pageName = currentPage.split("|")[0];
	backgroundURL = backgroundImageURLs[pageName];
	if (backgroundURL == null)
		backgroundURL = backgroundImageURLs[pageName.split("-")[0]];
	//if ((backgroundURL == null) && (("undefined" != typeof(first_load)) && (true == first_load)))
	if ((backgroundURL == null) && (true === first_load))
		backgroundURL = backgroundImageURLs['home'];
	//alert("In backgroundSwap(): currentPage = "+currentPage+", pageName = "+pageName+", URL = "+backgroundURL);
	if (backgroundURL != null) {
		one = $('content1');
		two = $('content2');
		if ((browser == "Microsoft Internet Explorer")&&(one.style.opacity == undefined)) { 
			// Special case for first time through here in IE
			backgroundSwapAction(two,one,backgroundURL);
		} else if (one.style.opacity == 0 && two.className != backgroundURL) {
			backgroundSwapAction(one,two,backgroundURL);
		} else if (two.style.opacity == 0 && one.className != backgroundURL) {
			backgroundSwapAction(two,one,backgroundURL);
		}
	}
}

var flashData = ''; // Remove this?? Grep didn't find it anywhere else

var toggleFlash = function(sh)
{
	if ((typeof $('index-main') !== "undefined") && (null != $('index-main')))
	{
		if ((typeof $('index-main').style.opacity === "undefined") || ($('index-main').style.opacity == "") || (sh != $('index-main').style.opacity))
		{
			effects['index-main'].start('opacity', sh);
			if (sh==1)
				setProviderMenuRight();
			else
				setProviderMenuLeft();
		}
	}
}
/*
var closeSlide = function()
{
	if (window.location.hash.replace("topic", "") != window.location.hash && window.location.hash.replace("topics", "") != window.location.hash.replace("topic", "") || currentPage.contains("spn|"))
		history.back(-1);
	else
		window.location.hash = "#checklists";
	
	$('content-box-right').innerHTML = '';
	effects['content-box-right'].start('width', 0);
	toggleMap(0);
}
*/

var closeSlide = function()
{
	if (window.location.hash.replace("topic", "") != window.location.hash && window.location.hash.replace("topics", "") != window.location.hash.replace("topic", "") || currentPage.contains("spn|"))
		history.back(-1);
	else
	{
		if ("/" != window.location.pathname)
			window.location.pathname = "/";
		window.location.hash = homePage;
	}
	
	closeVideoBox();
	$('content-box-right').innerHTML = '';
	effects['content-box-right'].start('width', 0);
	mapTabHide();
	setTimeout("toggleMap(0);", 1000);
}

function strip_tags($text)
{
	return $text.replace(/<\/?[^>]+>/gi, '');
}

var activateAnswerForms = function()
{
	$$('.answer-form').each(function(el) {
		$(el.id).addEvent('submit', function(e) {
			//Prevents the default submit event from loading a new page.
			e.stop();
			this.set('send', {
				onComplete: function(response) {
					alert("Your answer has been recorded.");
					if ($("answer-push-" + this.options.data.id.replace("answer-form-", "")).value == "1")
						window.location.hash = nextTopic;
					if ($("answer-reload-" + this.options.data.id.replace("answer-form-", "")).value == "1")
						softLoadPage(currentPage, 'content-box-right');
					setTimeout("closeAlert()", 2500);
				}
			});
			//Send the form.
			this.send();
		});
	});
}

String.prototype.ucFirst = function () {
	return this.substr(0,1).toUpperCase() + this.substr(1,this.length);
};

String.prototype.ucWords = function () {
	return this.replace(/^(.)|\s(.)/g, function ( $1 ) { return $1.toUpperCase ( ); } );
}

var fixPNGs = function()
{
	$$('a').each(
		function(el){
			if (el.getStyle('background-image').contains('.png')) {
				DD_belatedPNG.fixPng(el);
	}});
	$$('input').each(
		function(el){
			if (el.getStyle('background-image').contains('.png')) {
				DD_belatedPNG.fixPng(el);
	}});
	$$('li').each(
		function(el){
			if (el.getStyle('background-image').contains('.png')) {
				DD_belatedPNG.fixPng(el);
	}});
	$$('div').each(
		function(el){
			if (el.getStyle('background-image').contains('.png')) {
				DD_belatedPNG.fixPng(el);
	}});
	$$('span').each(
		function(el){
			if (el.getStyle('background-image').contains('.png')) {
				DD_belatedPNG.fixPng(el);
	}});
	$$('img').each(
		function(el){
			if (el.src.contains('.png')) {
				DD_belatedPNG.fixPng(el);
	}});
	DD_belatedPNG.fix('.tip-title');
	DD_belatedPNG.fix('.tip-text');
	DD_belatedPNG.fix('.currentLI');
	DD_belatedPNG.fix('div.spn-hover a');
	DD_belatedPNG.fix('.selected');
	DD_belatedPNG.fix('.unselected');
	DD_belatedPNG.fix('.unchecked');
	DD_belatedPNG.fix('.checked');
	DD_belatedPNG.fix('div.top a:hover');
}

var scrollPage = function()
{
	if ($(pageloc))
	{
		$$('.contentBoxCont').each(
			function(el) {
				el.scrollTo(0, 0);
				coords = $(pageloc).getCoordinates();
				el.scrollTo(0, coords.top - 165);
			}
		);
	}
}

var changeFunctions = function()
{
	// Start every new page with the ad closed, loading a new ad will open it
	effects['adContent'].start("width", 0);
	effects['adContent'].start("opacity", 1);

	$$('tip-class-name').each(
		function(el)
		{
			el.parentNode.removeChild(el);
		}
	);

	currentPage = loadingPage;
	// Directory Page Show
	if (currentPage.contains("directory-search") || (currentPage.contains("directory") && currentPage != "directory"))
	{
//		effects['innerNav'].start("width", 200);
		url = window.location.hash.split("|");
		zipCode   = url[2];
		sCategory = url[1];
	}
/*
	} else
		effects['innerNav'].start("width", 0);
*/
	
	// Service Partner Network pages
/*
	if (currentPage == "spn")
		$('homeSearchLiveDiv').style.display  = "block";
	else
		$('homeSearchLiveDiv').style.display  = "none";

	if (currentPage == 'spn')
	{
		if (providerMenu != 'down')
			setProviderMenuDown();
	}
	else if (currentPage.contains('spn'))
	{
		if (providerMenu != 'up')
		setProviderMenuUp();
	}

	if (currentPage.contains('spn'))
	{
		if (isProviderMenuClosed())
			setProviderMenuOpen();
	} else if (isProviderMenuOpen())
		setProviderMenuClosed();
*/

	if ((currentPage=='home') || (currentPage=='dashboard')
		|| (window.location.pathname=='/tour') || (window.location.pathname=='/spn-tour'))
	{
		setProviderMenuClosed();
	} else {
		setProviderMenuOpen();
		setProviderMenuDown();
	}

	attachToCheckbox();
/*
	if (browser!="Microsoft Internet Explorer" && version != 6)
		FancyForm.start();
*/
	changeTitle();
	attachDefinitions();
	attachDocuments();
	attachHovers();
	checkForAd();
	closeAlert();
	activateAnswerForms();
//	toggleFlash(0);
	backgroundSwap();
	linkify();
	Slimbox.scanPage();
	if (currentPage.contains("directory-search") || currentPage.contains("directory"))
		mapTabShow();
	else
		mapTabHide();
	if (browser=="Microsoft Internet Explorer" && version == 6)
		fixPNGs();
}

var setFormField = function(name, value) {
	var el = $(name);
	if ($type(el)) {
		if (el.type=='checkbox')
			el.checked = true;
		else if (el.type=='radio') {
			$$(name).each(function(rb) {
			if (rb.value == value) // Is 'value' passed in from the outside scope?
				rb.checked = true;
			});
		}
		else
			el.value = value;
	}
}


function openAdVideo(video_id) {
	openVideoBox(video_id,-180,240,430,285);
}
function openDBCVideo(video_id) {
	openVideoBox(video_id,263,70,504,430);
}
function openContentVideo(video_id) {
	openVideoBox(video_id,258,77,514,417);
}
function openVideoBox(video_id,x,y,width,height) {
	html  = '<div id="video_box_frame" style="position:absolute;left:'+ x +'px;top:'+ y +'px;z-index:6;">';
	html += '<div id="video_close_box" style="width:'+ width +'px;background-color:black;padding:0px;margin:0px;">';
	html += '<p style="text-align:right;padding:3px;margin:0px;"><a href="#" onclick="closeVideoBox();return false;" style="font-weight:bold;font-size:120%;color:white;">Close [X]</a></p></div>';
	html += '<iframe title="Video Player" class="youtube-player" type="text/html" width="'+ width +'" height="'+ height +'" src="http://www.youtube.com/embed/'+video_id+'?rel=0&autoplay=1" frameborder="0">';
	html += '<p>Your browser does not support iframes which are required to view this video.</p>';
	html += '</iframe></div>';
	$('video-box').innerHTML = html;
}
function closeVideoBox() {
	$('video-box').innerHTML = '';
}

/*
var userRequestFormSubmit = function(){
	$('userRequestForm').send('/ajax/user-request-info',
		{
			method: 'post',
			onComplete: function() {alert("done");},
			onSuccess: function(result) {
				if(result=='-1') alert("Request failed: An error occurred");
				else alert(result);
			}
		}
	);
	closeAlert();
}
*/
var userRequestForInfo = function(filename, longname){
	html  = '<div id="userRequestForInfo" style="text-align:center;"><strong><span id="userRequestFormTopText"></span></strong>';
	html += '<form id="userRequestForm" style="text-align:center;">';
	html += '<input type="hidden" id="userRequestFormFilename" name="userRequestFormFilename" value="' + filename + '" />';
	html += '<label for="userRequestFormEmail">To receive a copy of "' + longname +'" by email, please provide your email address:</label><br />';
	html += '<input size="40" type="text" id="userRequestFormEmail" name="userRequestFormEmail" /><br />';
	html += '<br />';
	html += '<span style="text-align:right;">';
	html += '<input type="submit" onclick="$(' +"'"+ 'userRequestForm' +"'"+ ').send();return false;" value="Submit" />';
	//html += '<input type="submit" onclick="userRequestFormSubmit();return false;" value="Submit" id="userRequestFormButtonSubmit" />';
	//html += '<input type="submit" value="Submit" id="userRequestFormButtonSubmit" />';
	html += '<input type="button" onclick="closeAlert();" value="Cancel" />';
	html += '</span></form></div>';
	alert(html);
	$('userRequestForm').set('send', 
		{
			url: '/ajax/user-request-info',
			method: 'post',
			spinnerOptions: { message: 'Sending request ...' },
			//onComplete: function() {alert("done");},
			onRequest: function() {
				trackEvent("/file_email_request/" + $('userRequestFormFilename').value);
			},
			onSuccess: function(result) {
				if(result=='-1') alert("Request failed: An error occurred");
				else if(result.startsWith('RETRY:')) openAlert(result.replace('RETRY:',''));
				else {
					trackEvent("/file_email_sent/" + $('userRequestFormFilename').value);
					alert(result);
				}
			}
		}
	);
	$('userRequestFormEmail').focus();
}

