var initing = true;
var contentSlide = undefined;
var contentLeaving = false;
var contentRequest = undefined;

// RHS doesn't work well with Safari, though it tries. We disable it.
if(!Browser.Engine.webkit)
{
	window.dhtmlHistory.create({
        toJSON: function(o) {
                return JSON.stringify(o);
        }
        , fromJSON: function(s) {
                return JSON.parse(s);
        }
	});
}

window.addEvent('domready', function() {
	contentSlide = new Fx.Slide('bank_list_body', {link:'chain', duration:'normal'});
	
	var links = $('bank_letters').getElements('a');
	for(var i = 0; i < links.length; i++)
	{
		var link = links[i];
		var letter = link.id.substr(5); // cut off "link_"
		link.addEvent('click', goToLetter.pass([letter, link]) );
	}
	
	if(dhtmlHistory)
	{
		dhtmlHistory.initialize();
	    dhtmlHistory.addListener(answerbankHistoryListener);
	}

	initing = false;
})
	
function goToLetter(letter, link)
{
	contentSlide.slideOut();
	
	$$('a.bank_currentpage').toggleClass('bank_currentpage');
	link.addClass("bank_currentpage");
	
	if(dhtmlHistory)
	{
		dhtmlHistory.add("l_" + encodeURIComponent(letter));
	}
	
	if(!contentLeaving) {
		contentSlide.slideOut().chain(function() { contentLeaving = false; this.callChain(); });
		contentLeaving = true;
	}
	
	if(contentRequest) {
		contentRequest.cancel();
	}
	
	contentRequest = new Request({url: '/answerbank_list', method:'get'}).addEvent('success', contentReady).send("letter=" + encodeURIComponent(letter));

	return false;
}

function contentReady(text)
{
	if(contentLeaving) {
		contentSlide.chain(function() { setResults(text); this.callChain(); }).slideIn()
	} else {
		setResults(text);
		contentSlide.slideIn();
	}
	contentRequest = null;
}

function setResults(text)
{
	$('bank_list_body').set('html', text);
}

function answerbankHistoryListener(location, data) {
	if(location == undefined || location == "")
	{
		location = "l_A";
	}
	
	// on init, we jump to the right view, rather than letting things slide around too much
	if(initing)
	{
		contentSlide.hide();
	}
	else
	{
		contentSlide.slideOut();
	}
	
	letter = location.substr(2)
	goToLetter(letter, $('link_' + letter));	
}
