// modified from http://www.leigeber.com/2008/04/lightweight-javascript-and-css-accordion/
/*var accordion = function() {
	var array = [];
	var speed = 2;
	var timer = 50;
	return{
		init:function(t, c) {
			var s,ds,l,i,y;
			s = document.getElementById(t);
			if (null != s) {
				ds = s.getElementsByTagName('div');
				l = ds.length;
				i = y = 0;
				for (i = 0; i < l; i++) {
					var d,did;
					d = ds[i];
					did = d.id;
					if (did.indexOf("header") != -1) {
						y++;
						if(document.getElementById("accordionHolder"))
							d.onclick = new Function("accordion.process(this, false)");
						else
							d.onclick = new Function("accordion.process(this, true)");
					} else if (did.indexOf("content") != -1) {
						array.push(did.replace('content-', ''));
						d.maxh = d.offsetHeight;
						if (c != y) {
							d.style.height = '0px';
							d.style.display = 'none'
						}
						else {
							d.style.display = 'block'
						}
					}
				}
			}
		},
		process:function(d, co) {
			if(d.className.indexOf("active") > -1) {
				d.className = d.className.replace("active","");
			}
			if(d.className.indexOf("min") > -1) {
				d.className = d.className.replace("min","active");
			}
			var cl,i;
			cl = array.length;
			i = 0;
			for (i; i < cl; i++) {
				var s,h,c,cd;
				s = array[i];
				h = document.getElementById('header-' + s);
				if(co == false) {
					if (h == d && h.className.length > 0) {
						h.className = h.className.replace("opened", "closed");
					} else
					if(h == d) {
						h.className = "closed";
					}
				} else {
					if (h.className.length > 0) {
						h.className = h.className.replace("opened", "closed");
					} else {
						h.className = "closed";
					}
				}
				c = 'content-' + s;
				cd = document.getElementById(c);
				clearInterval(cd.timer);
				if(co == false) {
					if (h == d && cd.style.display == 'none') {
						cd.style.display = 'block';
						this.islide(c, 1);
					} else if (h == d && cd.style.display == 'block') {
						this.islide(c, -1)
					}
				} else {
					if (h == d && cd.style.display == 'none') {
						cd.style.display = 'block';
						this.islide(c, 1);
					} else if (cd.style.display == 'block') {
						this.islide(c, -1)
					}
				}
			}

			if (d.className.indexOf("closed") > -1) {
				d.className = d.className.replace("closed", "opened");
			} else if(d.className.indexOf("opened") > -1) {
				d.className = d.className.replace("opened", "closed");
			} else {
				d.className = "opened";
			}
			if(d.className.indexOf("opened") > -1 && d.className.indexOf("min") == -1 && d.className.indexOf("active") == -1) {
				d.className = d.className + " min";
			}
		},
		islide:function(i, d) {
			var c,m;
			c = document.getElementById(i);
			m = c.maxh;
			c.direction = d;
			c.timer = setInterval("accordion.slide('" + i + "')", timer)
		},
		slide:function(i) {
			var c,m,h,dist;
			c = document.getElementById(i);
			m = c.maxh;
			h = c.offsetHeight;
			dist = (c.direction == 1) ? Math.round((m - h) / speed) : Math.round(h / speed);
			if (dist <= 1) {
				dist = 1
			}
			c.style.height = h + (dist * c.direction) + 'px';
			c.style.opacity = h / c.maxh;
			c.style.filter = 'alpha(opacity=' + (h * 100 / c.maxh) + ')';
			if (h < 2 && c.direction != 1) {
				c.style.display = 'none';
				clearInterval(c.timer);
			} else if (h > (m - 2) && c.direction == 1) {
				c.style.opacity = 1;
				c.style.filter = 'alpha(opacity=100)';
				clearInterval(c.timer)
			}
		}
	};
}();*/

var accordion = function() {
	var array = [];
	var speed = 2;
	var timer = 50;
	return{
		init:function(t, c) {
			var s,ls,j,sid,ds,l,i,y;
			s = document.getElementsByTagName('div');
			ls = s.length;
			for(j = 0; j < ls; j++) {
				if (s[j].id.indexOf("accordion") != -1) {
					ds = s[j].getElementsByTagName('div');
					l = ds.length;
					i = y = 0;
					for (i = 0; i < l; i++) {
						var d,did;
						d = ds[i];
						did = d.id;
						if (did.indexOf("header") != -1) {
							y++;
							if(document.getElementById("accordionHolder"))
								d.onclick = new Function("accordion.process(this, false)");
							else
								d.onclick = new Function("accordion.process(this, true)");
						} else if (did.indexOf("content") != -1) {
							array.push(did.replace('content-', ''));
							d.maxh = d.offsetHeight;
							if (c != y) {
								d.style.height = '0px';
								d.style.display = 'none'
							}
							else {
								d.style.display = 'block'
							}
						}
					}
				}
			}
		},
		process:function(d, co) {
			if(d.className.indexOf("active") > -1) {
				d.className = d.className.replace("active","");
			}
			if(d.className.indexOf("min") > -1) {
				d.className = d.className.replace("min","active");
			}
			var cl,i;
			cl = array.length;
			i = 0;
			for (i; i < cl; i++) {
				var s,h,c,cd;
				s = array[i];
				h = document.getElementById('header-' + s);
				if(co == false) {
					if (h == d && h.className.length > 0) {
						h.className = h.className.replace("opened", "closed");
					} else
					if(h == d) {
						h.className = "closed";
					}
				} else {
					if (h.className.length > 0) {
						h.className = h.className.replace("opened", "closed");
					} else {
						h.className = "closed";
					}
				}
				c = 'content-' + s;
				cd = document.getElementById(c);
				clearInterval(cd.timer);
				if(co == false) {
					if (h == d && cd.style.display == 'none') {
						cd.style.display = 'block';
						this.islide(c, 1);
					} else if (h == d && cd.style.display == 'block') {
						this.islide(c, -1)
					}
				} else {
					if (h == d && cd.style.display == 'none') {
						cd.style.display = 'block';
						this.islide(c, 1);
					} else if (cd.style.display == 'block') {
						this.islide(c, -1)
					}
				}
			}

			if (d.className.indexOf("closed") > -1) {
				d.className = d.className.replace("closed", "opened");
			} else if(d.className.indexOf("opened") > -1) {
				d.className = d.className.replace("opened", "closed");
			} else {
				d.className = "opened";
			}
			if(d.className.indexOf("opened") > -1 && d.className.indexOf("min") == -1 && d.className.indexOf("active") == -1) {
				d.className = d.className + " min";
			}
		},
		islide:function(i, d) {
			var c,m;
			c = document.getElementById(i);
			m = c.maxh;
			c.direction = d;
			c.timer = setInterval("accordion.slide('" + i + "')", timer)
		},
		slide:function(i) {
			var c,m,h,dist;
			c = document.getElementById(i);
			m = c.maxh;
			h = c.offsetHeight;
			dist = (c.direction == 1) ? Math.round((m - h) / speed) : Math.round(h / speed);
			if (dist <= 1) {
				dist = 1
			}
			c.style.height = h + (dist * c.direction) + 'px';
			c.style.opacity = h / c.maxh;
			c.style.filter = 'alpha(opacity=' + (h * 100 / c.maxh) + ')';
			if (h < 2 && c.direction != 1) {
				c.style.display = 'none';
				clearInterval(c.timer);
			} else if (h > (m - 2) && c.direction == 1) {
				c.style.opacity = 1;
				c.style.filter = 'alpha(opacity=100)';
				clearInterval(c.timer)
			}
		}
	};
}();
