// FAQ Toggle functions
// Creative Infusion Limited 2008

// FAQ must be in a DL with id="faqlist"
// Questions must be in a DT
// Answers must be in a DD
// Clicking a question (DT) will show/hide all DD before next DT or end of list
// Other tags mixed in remain unaffected by the show/hide
// Help text must be in an element with id="faqhelp"
// Dynamic Show/Hide all must be in an element with id="toggleAll"
// Plus/Minus status text is dynamically inserted at start of DT in a span class="faqstatus"
// When adding or removing faq blocks remember to change the counter in FAQ_init

// Swap +/- status and show/hide answers
function ToggleFAQ(){
	var qSpans=this.getElementsByTagName('span');
	for(var i=0;i<qSpans.length;i++){
		if (qSpans[i].className=="faqstatus"){
			qSpans[i].innerHTML=(qSpans[i].innerHTML != "+" ? "+" : "&#8211;" );
		}
	}
	// find answers
	var qAnswer=this.nextSibling;
	while (qAnswer && qAnswer.tagName!="DT"){
		if (qAnswer.tagName=="DD"){
			qAnswer.style.display=(qAnswer.style.display != "block" ? "block" : "none" );
		}
		qAnswer=qAnswer.nextSibling;
	}
}
// Show/Hide All Answers
function ToggleAll(){
	if (this.innerHTML=="Show all") {
		ShowAll(this.id[3]);
		this.innerHTML="Hide all";
	} else {
		HideAll(this.id[3]);
		this.innerHTML="Show all";
	}
}
// Show All Answers
function ShowAll(id){//we open all of them
	var answers=document.getElementById('faqlist'+id).getElementsByTagName('dd');
	for(var i=0;i<answers.length;i++){
		answers[i].style.display='block';
	}
	var questions=document.getElementById('faqlist'+id).getElementsByTagName('dt');
	for(var i=0;i<questions.length;i++){
		var qSpans=questions[i].getElementsByTagName('span');
		for(var j=0;j<qSpans.length;j++){
			if (qSpans[j].className=="faqstatus"){
				qSpans[j].innerHTML="&#8211;";
			}
		}
	}
}
// Hide All Answers
function HideAll(id){// no answers displayed
	var answers=document.getElementById('faqlist'+id).getElementsByTagName('dd');
	for(var i=0;i<answers.length;i++){
		answers[i].style.display='none';
	}
	var questions=document.getElementById('faqlist'+id).getElementsByTagName('dt');
	for(var i=0;i<questions.length;i++){
		var qSpans=questions[i].getElementsByTagName('span');
		for(var j=0;j<qSpans.length;j++){
			if (qSpans[j].className=="faqstatus"){
				qSpans[j].innerHTML="+";
			}
		}
	}
}
// Script to add/remove class dynamically
// Use as a fix for IE6 and earlier when hover state is ignored if not on an anchor
// Apply SetOver to mouseover event, UnSetOver to mouseout event, use style "over" in CSS as well as :hover
function SetOver(){
	var oldClass=this.className;
	if (oldClass){
		this.setAttribute("oldClass",this.className);
		oldClass=" "+oldClass;
	} else {
		var oldClass="";
	}
	this.className="over"+oldClass;
}
function UnSetOver(){
	var oldClass=this.getAttribute("oldClass");
	if (oldClass){
		this.className=oldClass;
		this.removeAttribute("oldClass");
	} else{
		this.className="";
	}
}

// Initialise 
function FAQ_init(){
	var faqblocks=6;
	for(var j=1;j<=faqblocks;j++){
		var questions=document.getElementById('faqlist'+j).getElementsByTagName('dt');
		var answers=document.getElementById('faqlist'+j).getElementsByTagName('dd');
		var faqshow = document.getElementById('faq'+j);
		if (faqshow){
			faqshow.onclick = ToggleAll;
		}
		for(var i=0;i<questions.length;i++){
			questions[i].onclick = ToggleFAQ;
			questions[i].onmouseover = SetOver;
			questions[i].onmouseout = UnSetOver;
			questions[i].innerHTML='<span class="faqstatus">+</span>'+questions[i].innerHTML;
		}
		for(var i=0;i<answers.length;i++){
			answers[i].style.display='none';
		}
	}
}
// Generic Onload Event Handler
function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	}
	else {
		window.onload = function() {
			oldonload();
			func();
		}
	}
}
// if browser supports these methods link in styles so the answers are hidden by default and initialise on load
if (document.getElementById && document.getElementsByTagName){
	document.write("\n<link href=\"stylesheets/faqjs.css\" rel=\"stylesheet\" type=\"text/css\" media=\"screen\" />");
	addLoadEvent(FAQ_init);
}
