var PixelAmount = 10; //Number of pixels to move it each [Delay] ms
var Delay = 20; //Number of miliseconds between each movement

var CurrentlyOpen = null;
function FAQClick(id) {
	if (CurrentlyOpen) {
		CloseFAQ(CurrentlyOpen);
	}
	if (CurrentlyOpen == id) {
		CurrentlyOpen = null;
	} else {
		CurrentlyOpen = id;
		OpenFAQ(id);
	}
}
function OpenFAQ(id) {
	var answer = document.getElementById('faq-'+id);
	var content = document.getElementById('faq-'+id+'content');
	var container = document.getElementById('faq-'+id+'container');
	var targetAnswerHeight = container.offsetHeight;
	var targetContentMarginTop = 0;
	
	answer.Closing = false;
	answer.Opening = true;
	//The -5 on the next line is to stop IE6 hiding the borders of the answer once it's fully opened
	DoOpen(id, answer, content, targetAnswerHeight, targetContentMarginTop-5, PixelAmount);
}
function DoOpen(id, answer, content, answerTarget, contentTarget, speed) {
	if (!answer.Opening) {
		if (!answer.Closing)
			CloseFAQ(id);
		return;
	}
	var currentAnswerHeight = parseInt(answer.style.height);
	if (isNaN(currentAnswerHeight)) currentAnswerHeight = 0;
	var currentContentMarginTop = parseInt(content.style.marginTop);
	if (isNaN(currentContentMarginTop)) currentContentMarginTop = (answerTarget * -1);
	
	if (currentAnswerHeight < answerTarget || currentContentMarginTop < contentTarget) {
		currentAnswerHeight += (speed > (answerTarget-currentAnswerHeight))?(answerTarget-currentAnswerHeight):speed;
		currentContentMarginTop += (speed > (contentTarget-currentContentMarginTop))?(contentTarget-currentContentMarginTop):speed;
		answer.style.height = currentAnswerHeight + "px";
		content.style.marginTop = currentContentMarginTop + "px";
		window.setTimeout(function(){DoOpen(id, answer,content,answerTarget,contentTarget,speed);},Delay);
	} else {
		answer.Opening = false;
	}
}
function CloseFAQ(id) {
	var answer = document.getElementById('faq-'+id);
	var content = document.getElementById('faq-'+id+'content');
	var container = document.getElementById('faq-'+id+'container');
	
	answer.Opening = false;
	answer.Closing = true;
	DoClose(answer, content, (container.offsetHeight * -1), PixelAmount);
}
function DoClose(answer, content, contentTarget, speed) {
	if (!answer.Closing) {
		if (!answer.Opening)
			OpenFAQ(id);
		return;
	}
	var currentAnswerHeight = parseInt(answer.style.height);
	var currentContentMarginTop = parseInt(content.style.marginTop);
	
	if (currentAnswerHeight > 0 || currentContentMarginTop > contentTarget) {
		currentAnswerHeight -= (speed > currentAnswerHeight)?currentAnswerHeight:speed;
		currentContentMarginTop -= ((currentContentMarginTop - speed) < contentTarget) ? (currentContentMarginTop - contentTarget) : speed;
		answer.style.height = currentAnswerHeight + "px";
		content.style.marginTop = currentContentMarginTop + "px";
		window.setTimeout(function(){DoClose(answer,content,contentTarget,speed);},Delay);
	} else {
		answer.Closing = false;
	}
}

function DoOnResize() {
	if (CurrentlyOpen) {
		var id = CurrentlyOpen;
		
		var answer = document.getElementById('faq-'+id);
		var container = document.getElementById('faq-'+id+'container');
		
		answer.style.height = container.offsetHeight + "px";
	}
}
window.onresize = DoOnResize;