﻿// Accordion script, v. 0.1 Ryan Vannin
var divheights = new Array();
//var TimeToSlide = 250;
var TimeToSlide = 250;
var openAccordion = '';
window.close = function()
{
//eraseCookie("accCookie");
}
window.onload = function()
{
// launch adjust columns height function in general.js
AdjustColumnsHeight();
// Find the last accordion left open
var x = readCookie("accCookie");
if (x) {
	toggle(x);
}
//
//
divs = getElementsByClassName(document, "div", "accdnWrap");
for(var i=0; i<divs.length; i++)
{ var div = document.getElementById("accdn" + (i + 1) + "C");
div.setAttribute("class", "accdnO");
div.setAttribute("className", "accdn0");
divheights[i] = divs[i].offsetHeight;
if(div != document.getElementById("accdn1C"))
{
div.setAttribute("class", "accdnC");
div.setAttribute("className", "accdnC");
}
}
}
function toggle(index)
{
var nID = "accdn" + index + "C";
if(openAccordion == nID)
{ nID = '';}

setTimeout("animate("
+ new Date().getTime() + "," + TimeToSlide + ",'"
+ openAccordion + "','" + nID + "','" + index + "')", 33);
openAccordion = nID;

}
function animate(lastTick, timeLeft, closingId, openingId, index)
{
for(var i=0; i<divheights.length; i++)
{
document.getElementById("accdn" + (i+1)).setAttribute("class", "accdn");
document.getElementById("accdn" + (i+1)).setAttribute("className", "accdn");
var next=document.getElementById("accdn" + (i+1)).firstChild;
next.setAttribute("class", "accdn");
next.setAttribute("className", "accdn");
}
var curTick = new Date().getTime();
var elapsedTicks = curTick - lastTick;
var opening = (openingId == '') ?
null : document.getElementById(openingId);
var closing = (closingId == '') ?
null : document.getElementById(closingId);
if(timeLeft <= elapsedTicks)
{
if(opening != null)
{
opening.style.height = divheights[index-1] + 'px';
opening.style.width = '300px';
document.getElementById("accdn" + index).setAttribute("class", "accdnopen");
document.getElementById("accdn" + index).setAttribute("className", "accdnopen");
//
createCookie("accCookie",index,1);
//
var nextIndexed=document.getElementById("accdn" + index).firstChild;
nextIndexed.setAttribute("class", "accdnopen");
nextIndexed.setAttribute("className", "accdnopen");
AdjustColumnsHeight();
}
if(closing != null)
{
closing.style.display = 'none';
closing.style.height = '0px';
closing.style.width = '300px';
}
return;
}
timeLeft -= elapsedTicks;
var newClosedHeight =
Math.round((timeLeft/TimeToSlide) * divheights[index-1]);
if(opening != null)
{
if(opening.style.display != 'block')
{
opening.style.display = 'block';
}
opening.style.height =
(divheights[index-1] - newClosedHeight) + 'px';
}
if(closing != null)
{
closing.style.height = newClosedHeight + 'px';}
setTimeout("animate(" + curTick + "," + timeLeft + ",'"
+ closingId + "','" + openingId + "','" + index + "')", 33);
}
/*
the getElementsByClassName function I pilfered from this guy. It's
a useful function that'll return any/all tags with a specific css class.
Written by Jonathan Snook, http://www.snook.ca/jonathan
Add-ons by Robert Nyman, http://www.robertnyman.com
*/
function getElementsByClassName(oElm, strTagName, strClassName)
{
// first it gets all of the specified tags
var arrElements = (strTagName == "*" && document.all) ? document.all : oElm.getElementsByTagName(strTagName);
// then it sets up an array that'll hold the results
var arrReturnElements = new Array();
// some regex stuff you don't need to worry about
strClassName = strClassName.replace(/\-/g, "\\-");
var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
var oElement;
// now it iterates through the elements it grabbed above
for(var i=0; i<arrElements.length; i++)
{
oElement = arrElements[i];
// if the class matches what we're looking for it ads to the results array
if(oRegExp.test(oElement.className))
{
arrReturnElements.push(oElement);
}
}
// then it kicks the results back to us
return (arrReturnElements)
}

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

