var intervalSpeed = 3;
var easing = 7;

var elemHeights = new Array();
var ids = new Array();


// ie doesnt recognize the method indexOf()
function checkIndexOf()
{
	if (!Array.indexOf) 
	{
		Array.prototype.indexOf = function (obj, start) 
		{
			for (var i = (start || 0); i < this.length; i++) 
			{
				if (this[i] == obj)
				{
					return i;
				}	
			}
		}
	}
}

// set values for heights and answers in arrays
function buildArrays()
{
	if (!document.getElementById) return false;
	if (!document.getElementsByTagName) return false;
	
	var divs = document.getElementsByTagName("div");
	
	for (var i=0; i<divs.length; i++) 
	{
		if (divs[i].className.indexOf("answer") == -1) continue;
		
		divs[i].style.display = "block";
		divs[i].parentNode.className = "faq";
		
		ids[ids.length] = divs[i].getAttribute("id");
		elemHeights[elemHeights.length] = divs[i].offsetHeight;
		moveElement(divs[i].getAttribute("id"), 0, 0, intervalSpeed);
	}
}

// activate faqs on click
function toggleFaqs()
{
	if (!document.getElementById) return false;
	if (!document.getElementsByTagName) return false;
	
	var divs = document.getElementsByTagName("div");
	for (var i=0; i<divs.length; i++) 
	{
		if (divs[i].className.indexOf("faq") == -1) continue;
		divs[i].style.cursor = "pointer";
		
		divs[i].onmouseover = function()
		{
			if(this.className != "faq_active")
			{ this.className = "faq_hover"; }
		}
		divs[i].onmouseout = function()
		{
			if(this.className != "faq_active")
			{ this.className = "faq"; }
		}
		divs[i].onclick = function()
		{
			var faqId = this.getAttribute("id").split("faq")[1];
			toggle(faqId);
			return false;
		}
	}
}

// show clicked faq and disable the rest
function toggle(id)
{	
	if(!document.getElementById) return false;
	var answer = document.getElementById("answer"+id);
	var answerString = "answer" + id;
	
	var index = ids.indexOf(answerString);
	var answerHeight = elemHeights[index];
	
	if(answer.style.height == "0px")
	{
		buildArrays();
		answer.parentNode.className = "faq_active";
		moveElement(answerString, answerHeight, answerHeight, intervalSpeed);
	}	
	else 
	{	
		buildArrays();
		moveElement(answerString, 0, 0, intervalSpeed);
	}
}

// method for animation
function moveElement(elementID, final_y, elementHeight, interval)
{
	if(!document.getElementById) return false;
	if(!document.getElementById(elementID)) return false;
	
	var elem = document.getElementById(elementID);
	if (elem.movement)
	{
		clearTimeout(elem.movement);
	}
	if (!elem.style.height)
	{
		elem.style.height = elementHeight + "px";
	}
	var ypos = parseInt(elem.style.height);
	if (ypos == final_y)
	{
		return true;
	}
	if (ypos < final_y)
	{
		var dist = Math.ceil((final_y - ypos)/easing)
		ypos += dist;
	}
	if (ypos > final_y)
	{
		var dist = Math.ceil((ypos - final_y)/easing)
		ypos -= dist;
	}
	elem.style.height = ypos + "px";
	var repeat = "moveElement('"+elementID+"', "+final_y+", "+interval+")";
	elem.movement = setTimeout(repeat,interval);
}

addLoadEvent(checkIndexOf);
addLoadEvent(buildArrays);
addLoadEvent(toggleFaqs);