// requires 
// /static/scripts/cross-browser_modular_dhtml_api.js
// /static/scripts/cross-browser_modular_dhtml_api_anim_full.js

var footerContentKey = 'designAdvisorNav';
// possible values
// * designAdvisor
// * designAdvisorNav
// * designAdvisorContent (index and content displayed)
// * openHouse
// * openHouseTease
// * openHouseIntro
// * openHouseFlash

var designAdvisorContentVisible = false;
var designAdvisorCurrentArticle = false;
var openHouseEntered = false;
var userClick = false;

function showFooter(newContentKey)
{
	userClick = true;
//alert(footerContentKey + " -> " + newContentKey);
	if (footerContentKey != newContentKey)
	{
		// hide
		switch (footerContentKey)
		{
			case 'designAdvisorContent':
				if(newContentKey != 'designAdvisorNav')
				{
					fadeOut('designAdvisorContent');
					fadeOut('designAdvisor');
					fadeOut('openHouseTease');
				}
				else
					fadeOut('designAdvisorContent');
				designAdvisorContentVisible = false;
				break;
			case 'designAdvisor':
			case 'designAdvisorNav':
				if(newContentKey != 'designAdvisorContent' && newContentKey != 'designAdvisor')
				{
					fadeOut('designAdvisor');
					fadeOut('openHouseTease');
				}
				break;
			case 'openHouse':
			case 'openHouseFlash':
				break;
			case 'openHouseIntro':
				if (newContentKey == 'openHouseFlash')
					fadeOut('openHouseIntro');
				break;
			default:
				return;
		}
		
		// show
		switch (newContentKey)
		{
			case 'designAdvisor':
				if((footerContentKey != 'designAdvisorNav') && (footerContentKey != 'designAdvisorContent'))
				{
					fadeIn('designAdvisor');
					setFooterContentTab('designAdvisor');
				}
				break;
			case 'designAdvisorContent':
				if((footerContentKey != 'designAdvisorNav') && (footerContentKey != 'designAdvisor'))
				{
					fadeIn('designAdvisor');
					setFooterContentTab('designAdvisor');
				}
				if (!designAdvisorContentVisible)
					fadeIn('designAdvisorContent');
				designAdvisorContentVisible = true;
				break;
			case 'designAdvisorNav':
				showFooter('designAdvisor');
				newContentKey = 'designAdvisor';				
				break;
			case 'openHouse':
				if(!openHouseEntered)
				{
					showFooter('openHouseIntro');
					newContentKey = 'openHouseIntro';
				}
				setFooterContentTab('openHouse');
				break;
			case 'openHouseIntro':
				// explicit request for intro message, usually handled implicitly with 'openHouse' case
				if(openHouseEntered)
					fadeIn('openHouseIntro');
				setFooterContentTab('openHouse');
				loadOpenHouse();
				break;
			case 'openHouseFlash':
				setOpenedHouse(true);
				setFooterContentTab('openHouse');
				break;
			default:
				return;
		}
		footerContentKey = newContentKey;
	}
}

function getMovieObject(movieName) 
{
	var movieObject;
    if (navigator.appName.indexOf("Microsoft") != -1 ) 
	{
        movieObject = window[movieName];
    }
    else 
	{
        movieObject = document[movieName];
    }
	return movieObject;
} 
//JS call to start the movie playing.
function doMovieStart(movieName) 
{ 
	var m = getMovieObject(movieName);
	m.focus();
	m.doStartMovie();
	// if page was just opened, move the focus from OpenHouse back to the top of page
	// so user has a sense of place. Trade-off...it causes bit of visual jumpiness.
	if (!userClick) 
	{
//		document.getElementById("pageTop").focus();
		window.focus();
		window.scrollTo(1,1);
	}
}
function startMovie(movieName)
{
	var fun = "doMovieStart('" + movieName + "')";
	setTimeout(fun, 500);
}

/**
 * load open house (only when clicked)
 * precondition: SWFObject must be defined (see SWFObject.js)
 * @author msmith Mike Smith
 */
function loadOpenHouse()
{
	var myObj = new SWFObject("/static/images/openhouse/RoomFinder.swf", "RoomFinder", "727", "474", "8", "#FFFFFF");
	myObj.addVariable("demoPath", "/static/images/openhouse");
	myObj.addParam("wmode", "transparent");
	myObj.write("openHouseFlash");
}

// if the house has already been opened, invoke this to preset the 
function presetOpenHouseEntered()
{
	loadOpenHouse();
	setTimeout("setFooterContentTab('openHouse')",500);
	openHouseEntered = true;
	setTimeout("fadeOut('openHouseTease')", 500);
	setTimeout("fadeOut('openHouseIntro')", 500);
	setTimeout("fadeOut('designAdvisor')", 500);
	footerContentKey = 'openHouseFlash';
	startMovie('RoomFinder');
}

// load an article
function loadArticle(id)
{
	showFooter('designAdvisorContent');
	if (id != designAdvisorCurrentArticle)
	{
		designAdvisorCurrentArticle = id;
		//var source = '/static/html/' + id + '_txt.html';
		var source = '/api/designadvisor?article=' + id;
		document.getElementById('designAdvisorArticle').src = source;
	}
}

// set the open house "opened" parameter
function setOpenedHouse (isOpened)
{
	var httpObj = new XMLHttpRequest();
	httpObj.onreadystatechange = function () {
		if (httpObj.readyState == 4)
		{
			if (httpObj.status == 200)
			{
				startMovie("RoomFinder");
			}
		}
	}
	var url = '/api/openhouse/?isOpenedHouse=' + isOpened;
	httpObj.open ('GET',url, true);
	httpObj.send(null);
}

function setFooterContentTab(whichTab)
{
	switch (whichTab)
	{
		case 'openHouse':
			swapImg('openHouseTab','/static/template_imgs/_framework/open_house_tab.gif');
			if(isHomePage)
				swapImg('designAdvisorTab','/static/template_imgs/_framework/design_advisor_tab2_home.gif');
			else
				swapImg('designAdvisorTab','/static/template_imgs/_framework/design_advisor_tab2.gif');
			break;
		case 'designAdvisor':
			swapImg('openHouseTab','/static/template_imgs/_framework/open_house_tab2.gif');
			if(isHomePage)
				swapImg('designAdvisorTab','/static/template_imgs/_framework/design_advisor_tab_home.gif');
			else
				swapImg('designAdvisorTab','/static/template_imgs/_framework/design_advisor_tab.gif');
			break;
		default:
			return;
	}
}

function scrollWindowBy(scrollPix)
{ 
//	alert("scrollWindowBy: " + scrollPix); 
	window.scrollBy(0,scrollPix); 
}
function scrollWindowTo(objectId)
{
	var scrollPos = page.elmPos(objectId).y - page.scrollY();
	smoothAction('scrollWindowBy', 0, scrollPos, 0.01, 0.001, 10, true);
}

/**
 * loads unobtrusive javascript events after the page loads (so that objects are instantiated first)
 * @author Mike Smith
 * @author Angus Turnbull (rough idea from blog post somewhere)
 * include this in the head of the document
 */
var saveForFooterLoadEvt = window.onload; 
window.onload = function() 
{
	if (saveForFooterLoadEvt != undefined) 
	{
		setTimeout("saveForFooterLoadEvt()",10); 
	}
	addEvent(
		document.getElementById('designAdvisorTab'),
		'click',
		function() { showFooter('designAdvisor'); },
		false		
	);
	var showOpenHouseFooterFun = function() 
	{ 
		scrollWindowTo('pageOpenHouse'); 
		showFooter('openHouse'); 
		return false; 
	};
	addEvent(document.getElementById('openHouseTab'),'click',showOpenHouseFooterFun,false);
	addEvent(document.getElementById('openHouseHotSpot'),'click',showOpenHouseFooterFun,false);
	document.getElementById('showOpenHouseLinkBtn').onclick = showOpenHouseFooterFun; // probs with anchor link using addEvent (return false;) not propagated?
	document.getElementById('showOpenHouseLinkAnchor').onclick = showOpenHouseFooterFun; // probs with anchor link using addEvent (return false;) not propagated?
<!--	setImgRollover('showOpenHouseLinkBtn','showOpenHouseBtn','/static/template_imgs/_framework/open_house_visit_btn.gif','/static/template_imgs/_framework/open_house_visit_btn_over.gif');-->
	var enterOpenHouseFooterFun = function()
	{
		scrollWindowTo('pageOpenHouse');
		showFooter('openHouseFlash');
		return false;
	};
	document.getElementById('showOpenHouseEnterLinkBtn').onclick = enterOpenHouseFooterFun; // probs with anchor link using addEvent (return false;) not propagated?
};
var saveForFooterUnloadEvt = window.onload; 
window.onbeforeunload = function() 
{
	if (saveForFooterUnloadEvt != undefined) 
	{
		setTimeout("saveForFooterUnloadEvt()",10); 
	}
	// do nothing, but declaring this event causes the page to never be cached and javascript to run on back button.
};
