var xrollGroupNames = new Array() ;var xrollBlocks = new Array() ; // simple array (XHTML ids are the keys)var xrollGroups = new Array() ; // simple array (XHTML ids are keys)var xrollIsOpen  = new Array() ; // simple array (XHTML ids are keys)var xrollWhichOpen = new Array() ; // nullvar xrollSingleMode = new Array() ; // falsevar xrollWait = new Array() ; // false var xrollToDo = new Array() ; // nullvar xrollDelay = new Array() ; // 20XRollStartExpand = new Array() ;XRollEndExpand = new Array() ;XRollStartCompact = new Array() ;XRollEndCompact = new Array() ;function XRollIsAncestor(current,ancestor) {	if(current != null) {		if(current.parentNode == ancestor)			return true ;		else			return XRollIsAncestor(current.parentNode,ancestor) ;	}	else		return false ;}function XRollInherit(elementclass,motherclass) {	if(elementclass && motherclass) {		if(elementclass.indexOf(motherclass)>-1) {			var result1 = (elementclass == motherclass) ;			var result2 = (elementclass.indexOf(" "+motherclass+" ")>-1) ;			var result3 = (elementclass.indexOf(motherclass+ " ")==0) ;			var result4 = (elementclass.indexOf(" "+motherclass) == (elementclass.length-motherclass.length-1)) ;			var result =  result1 || result2 || result3 || result4 ;			//alert("[" + elementclass + "] VS [" + motherclass + "] = " + result1+"|"+result2+"|"+result3+"|"+result4) ;			return result ;		}		else			return false ;	}	else return false ;}function getElementsByClass(classname) {	var ccollect = new Array() ;	var inc = 0 ;	var alltags = document.all? document.all : document.getElementsByTagName("*") ;	 for (var i=0; i<alltags.length; i++)	 {	  if (alltags[i].className && XRollInherit(alltags[i].className,classname))	  	ccollect[inc++]=alltags[i] ;	 }	 return ccollect ;}function getElementsByClass2(classname,from) {	var ccollect = new Array() ;	var inc = 0 ;	var alltags = document.all? document.all : document.getElementsByTagName("*") ;	 for (var i=0; i<alltags.length; i++)	 {	  if (alltags[i].className && XRollInherit(alltags[i].className,classname) && XRollIsAncestor(alltags[i],from))	  	ccollect[inc++]=alltags[i] ;	 }	 return ccollect ;}function XRollSetSingleMode(groupname,singlemode,wait) {	xrollSingleMode[groupname] = singlemode ;	if(singlemode) {		xrollWait[groupname] = wait ;	}}function XRollSetDelay(groupname,delay) {		xrollDelay[groupname] = delay ;}function XRollSetCallbacks(groupname,_start_expand,_end_expand,_start_compact,_end_compact) {		XRollStartExpand[groupname] = _start_expand ;		XRollEndExpand[groupname] = _end_expand ;		XRollStartCompact[groupname] = _start_compact ;		XRollEndCompact[groupname] = _end_compact ;}function XRollInitGroup(groupname,auto) {		var groups = getElementsByClass(groupname) ;		//groups = document.getElementsByTagNameNS("http://www.xroll.com","group") ;		//alert(groups.length) ;		XRollInitGroupVariables(groupname) ;		for(var i=0 ; i<groups.length ; i++) {			if(groups[i].id) {				XRollAttachGroup(groups[i].id,groupname) ;				XRollInit(groups[i].id,auto) ;			}			else {				alert("The "+ i + "th element of the class " + groupname + " doesn't have an ID"+ groups[i]) ;			}		}		delete groups ;}function XRollInitGroupVariables(groupname) {	// init the group arrays//xrollGroups[groupname] = new Array() ;//xrollBlocks[groupname] = new Array() ;//xrollIsOpen[groupname] = new Array() ;	// init the group variables	xrollWhichOpen[groupname] = null ;	xrollSingleMode[groupname] = false ;	xrollWait[groupname] = false ;	xrollToDo[groupname] = null ;	xrollDelay[groupname] = 20 ;}function XRollAttachGroup(id,groupname) {	xrollGroupNames[id] = groupname ;}function XRollFindGroup(id) {	if(id) {		var groupname = xrollGroupNames[id] ;		if(!groupname) {			alert("[!] " + id + " has no group attached") ;			return "" ;		}		return groupname ;	}	return "" ;}function XRollInit(id,auto) {		var groupname = XRollFindGroup(id) ;		xrollGroups[id] = document.getElementById(id) ;	if(!auto) {		xrollBlocks[id] = getElementsByClass2("xrollitem",xrollGroups[id]) ;	}	else {				// too slow during the animation ?!!			xrollBlocks[id] = new Array() ;			var node = xrollGroups[id] ;			for(var i=0 ; i<node.childNodes.length ; i++)				xrollBlocks[id][i] = node.childNodes[i] ;/*		var node = xrollGroups[id].firstChild ;		var last = xrollGroups[id].lastChild ;		var l = 0 ;				while(node != last) {			if(node.className) {					node.className += " xrollfoo" ;			}			else {				var insert = document.createElement("SPAN") ;				insert.className = "xrollfoo" ;				xrollGroups[id].insertBefore(insert,node) ;				xrollGroups[id].removeChild(node) ;				insert.appendChild(node) ;				node = insert ;			}			node = node.nextSibling ;		}		xrollBlocks[id] = getElementsByClass2("xrollfoo",xrollGroups[id]) ;*/	}	xrollIsOpen[id]  = true ;}function XRollCompactGroup(groupname) {		var groups = getElementsByClass(groupname) ;		for(var i=0 ; i<groups.length ; i++) {			if(groups[i].id)				XRollCompact(groups[i].id,false) ;		}		delete groups ;}function XRollAnimate(id) {	if(xrollIsOpen[id])		XRollCompact(id,true) ;	else		XRollExpand(id,true) ;}function XRollCompact(id,animate) {	if(id) {		var groupname = XRollFindGroup(id) ;		if(xrollIsOpen[id]) {			if(XRollStartCompact[groupname]) {				XRollStartCompact[groupname](id) ;			}			if(animate) {				var l = xrollBlocks[id].length - 1 ;				XRollRemoveChild(id,l) ;			}			else {				var node = xrollGroups[id] ;				for(var i=0 ; i<xrollBlocks[id].length ; i++) {					node.removeChild(xrollBlocks[id][i]) ;				}				xrollIsOpen[id] = false ;								if(xrollSingleMode[groupname] && xrollWhichOpen[groupname] == id) {					xrollWhichOpen[groupname] = null ;				}				if(XRollEndCompact[groupname]) {					XRollEndCompact[groupname](id) ;				}			}		}	}}function XRollExpand(id,animate) {		if(id) {		var groupname = XRollFindGroup(id) ;		if(!xrollIsOpen[id]) {			if(xrollSingleMode[groupname]) {				if(xrollWhichOpen[groupname] != null && xrollWhichOpen[groupname] != id) {					if(animate && xrollWait[groupname]) {						xrollToDo[groupname] = id ;						XRollCompact(xrollWhichOpen[groupname],animate) ;						return ;					}					else {						XRollCompact(xrollWhichOpen[groupname],animate) ;					}				}			}			if(XRollStartExpand[groupname]) {				XRollStartExpand[groupname](id) ;			}						if(animate) {				var l = 0 ;				XRollAppendChild(id,l) ;			}			else {				var node = xrollGroups[id] ;				for(var i=0 ; i<xrollBlocks[id].length ; i++)					node.appendChild(xrollBlocks[id][i]) ;				xrollIsOpen[id] = true ;				xrollWhichOpen[groupname] = id ;				if(XRollEndExpand[groupname]) {					XRollEndExpand[groupname](id) ;				}			}		}	}}function XRollAppendChild(id,l) {	var groupname = XRollFindGroup(id) ;	if(l<xrollBlocks[id].length) {		xrollGroups[id].appendChild(xrollBlocks[id][l]) ;		l++ ;		setTimeout("XRollAppendChild('"+id+"',"+l+")",xrollDelay[groupname]) ;	}	else {		xrollIsOpen[id] = true ;		xrollWhichOpen[groupname]  = id ;		xrollToDo[groupname] = null ;		if(XRollEndExpand[groupname])			XRollEndExpand[groupname](id) ;	}}function XRollRemoveChild(id,l) {	var groupname = XRollFindGroup(id) ;	if(l>=0) {		xrollGroups[id].removeChild(xrollBlocks[id][l]) ;		l-- ;		setTimeout("XRollRemoveChild('"+id+"',"+l+")",xrollDelay[groupname]) ;	}	else {		xrollIsOpen[id] = false ;		if(XRollEndCompact[groupname]) {				XRollEndCompact[groupname](id) ;		}				if(xrollSingleMode[groupname] && xrollWhichOpen[groupname] == id) {				xrollWhichOpen[groupname] = null ;		}		if(xrollToDo[groupname]) {			XRollExpand(xrollToDo[groupname],true) ;		}	}}