//Applies javascript to divs with the 'expanditem' class
itemexpander = {
	currentlyOpen:'',
	cookieName:'',
	
	init:function(){
		var d = document,
				e = d.getElementsByTagName('div'),
				i = e.length,
				j,
				a = [],
				eTmp,
				controlWidget,
				res,
				tmp,
				tmp2,
				l = d.createElement('link'),
				l2 = d.createElement('link'),
				h3,
				h3title,
				toOpen;
		l.rel='stylesheet';
		l.type='text/css';
		l.href='/_assets/scripts/expander/styles.css';
		l2.media='screen,projection';
		l2.rel='stylesheet';
		l2.type='text/css';
		l2.href='/_assets/scripts/expander/print.css';
		l2.media='print';
		d.getElementsByTagName('head').item(0).appendChild(l);
		d.getElementsByTagName('head').item(0).appendChild(l2);
		itemexpander.cookieName = document.getElementsByTagName('title').item(0).innerText ? document.getElementsByTagName('title').item(0).innerText : document.getElementsByTagName('title').item(0).innerHTML;
		itemexpander.cookieName = itemexpander.cookieName.replace(/[ :;=]/g, '');
		toOpen = itemexpander.getCookie(itemexpander.cookieName);
		itemexpander.currentlyOpen = toOpen;
		do {
			eTmp=e.item(--i);
			if(eTmp.className.search(/\bexpanditem\b/i)>=0)	{

				a.push(eTmp);
				//Insert control widget
				controlWidget=d.createElement('a');
				controlWidget.appendChild(d.createTextNode('[+]'));
				
				//insert code
				controlWidget.className='expanditem_controlwidget';
				
				h3 = eTmp.getElementsByTagName('h3').item(0);
				h3.insertBefore(controlWidget, eTmp.firstChild.firstChild);
				h3.onclick = function(){
					var elemStyle = this.parentNode.getElementsByTagName('div').item(0).style,
							elem = this.parentNode.getElementsByTagName('div').item(0),
							widget = this.firstChild,
							title = this.innerHTML.replace(/(<a.*<\/a>|<img.*>|[()])/gi, '');
					widget = widget.innerHTML ? widget : widget.nextSibling; 
					if (elem.className.search(/ hide$/) == -1){
						elem.className += ' hide';
						widget.innerHTML = '[+]';
						itemexpander.currentlyOpen = itemexpander.currentlyOpen.replace(title, '').replace(/\|\|+/, '|').replace(/^\|/, '');
					} else {
						elem.className = elem.className.replace(/ hide/, '');
						widget.innerHTML = '[&ndash;]';
						itemexpander.currentlyOpen = itemexpander.currentlyOpen.replace(title, '').replace(/\|\|+/, '|').replace(/(^\||\|$)/, '');
						itemexpander.currentlyOpen += (itemexpander.currentlyOpen ? '|' : '') + title;
					}
					itemexpander.setCookie(itemexpander.cookieName ,itemexpander.currentlyOpen);
				}
				
				h3title = h3.innerHTML.replace(/(<a.*<\/a>|<img.*>)/gi, '');
				if (toOpen.search(h3title) == -1) eTmp.getElementsByTagName('div').item(0).className += ' hide';
				else controlWidget.innerHTML = '[&ndash;]';
			}
		} while (i);
		return this;
	},
	
	expandAll:function(){
		var d=document,e=d.getElementsByTagName('div'),i=e.length,eTmp;
		do {
			eTmp=e.item(--i);
			if(eTmp.className.search(/\bexpanditem\b/i)>=0)	{
				if(eTmp.getElementsByTagName('div').item(0).style.display=='none'){
					eTmp.getElementsByTagName('h3').item(0).getElementsByTagName('a').item(0).onclick();
				}
			}
		} while (i);
		return this;
	},
	
	closeAll:function(){
		var d=document,e=d.getElementsByTagName('div'),i=e.length,eTmp,s;
		do {
			eTmp=e.item(--i);
			if(eTmp.className.search(/\bexpanditem\b/i)>=0)	{
				s = eTmp.getElementsByTagName('div').item(0).style;
				if((s.display=='block')||(s.display=='')){
					eTmp.getElementsByTagName('h3').item(0).getElementsByTagName('a').item(0).onclick();
				}
			}
		} while (i);
		return this;
	},
	
	getCookie:function(name){
		var nameEQ = name + "=",
				ca = document.cookie.split(';'),
				i = ca.length;
		do {
			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);
		} while (i)
		return '';
	},
	
	setCookie:function(name, value) {
		var date = new Date(),
				expDate = date.setTime(date.getTime()+86400000), /* 86400000 == one day */
				expires = "; expires=" + date.toGMTString();
		//document.cookie = name + "=" + value + expires + "; path=/dcs/training/specialist/";
		document.cookie = name + "=" + value + expires;
	}
}
if(window.addEventListener) window.addEventListener("load", itemexpander.init, false)
else if(window.attachEvent) window.attachEvent('onload', itemexpander.init, false)
else {
	_wol = windows.onload;
	windows.onload = function () {
		if (_wol) _wol();
		itemexpander.init();
	}
}