	
	document.documentElement.className += " js";
	

	
	(function() {
		var dom = glow.dom,
			$ = glow.dom.get,
			events = glow.events,
			anim = glow.anim;
		
		function getFullHeight(myNodeList) {
			var currentHeight = myNodeList[0].style.height;
			
			var fullHeight = myNodeList.css("visibility", "hidden").
					css("position", "absolute").
					css("height", "auto")[0].offsetHeight;
			
			myNodeList.css("visibility", "").
					css("position", "").
					css("height", currentHeight);
			
			return fullHeight;
		}
		
	
		function slideOpenContent(moduleAccordionContent) {
			/* this script closes any moduleAccordionContents which are in the same moduleAccordion node. This is not needed for modules because we shouldn't have more than one content in each accordion
			moduleAccordionContent.parent().get(">.moduleAccordionContent").each(function() {
				if (this.__isOpen) {
					slideCloseContent($(this));
				}
			})*/
			
			moduleAccordionContent.css("display", "block");
			moduleAccordionContent.css("visibility", "visible");		
			
			if (moduleAccordionContent[0].__anim) {
				moduleAccordionContent[0].__anim.stop();
			}
			
			var openAnim = moduleAccordionContent[0].__anim = anim.css(moduleAccordionContent, 0.4, {
				height: {to: getFullHeight(moduleAccordionContent)}
			}, {tween: glow.tweens.easeBoth()});
			
			moduleAccordionContent[0].__completeListener = events.addListener(openAnim, "complete", function() {
				moduleAccordionContent.css("height", "auto");			
			});
			
			openAnim.start();
			
			//change classes
			moduleAccordionContent.addClass('contentOpen');
			
			moduleAccordionContent[0].__isOpen = true;
			
			setCookie('languages_moduleAccordion_display_' + moduleAccordionContent[0].id, 'open', 14);
		}
		
		function slideCloseContent(moduleAccordionContent) {

			if (moduleAccordionContent[0].__anim) {
				moduleAccordionContent[0].__completeListener && (events.removeListener(moduleAccordionContent[0].__completeListener));
				moduleAccordionContent[0].__anim.stop();
			}
			var closeAnim = moduleAccordionContent[0].__anim = anim.css(moduleAccordionContent, 0.4, {
				height: {to: 0}
			}, {tween: glow.tweens.easeBoth()}).start();
			
			moduleAccordionContent[0].__completeListener = events.addListener(closeAnim, "complete", function() {
				moduleAccordionContent.css("height", "0");
				moduleAccordionContent.css("display", "none");
				moduleAccordionContent.css("visibility", "hidden");				
			});
			
			
			moduleAccordionContent[0].__isOpen = false;
			
			closeAnim.start();
			
			
			
			
			//change classes
			moduleAccordionContent.removeClass('contentOpen');
			
			setCookie('languages_moduleAccordion_display_' + moduleAccordionContent[0].id, 'closed', 14);
		}
		
		function setCookie(c_name, value, expiredays){
			var exdate=new Date();
			exdate.setDate(exdate.getDate()+expiredays);
			document.cookie=c_name+ "=" +escape(value)+
			((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
		}
		
		function getCookie(c_name){
		if (document.cookie.length>0){
			c_start=document.cookie.indexOf(c_name + "=");
			if (c_start!=-1){ 
				c_start=c_start + c_name.length+1; 
				c_end=document.cookie.indexOf(";",c_start);
				if (c_end==-1) c_end=document.cookie.length;
					return unescape(document.cookie.substring(c_start,c_end));
				} 
			}
			return "";
		}
		
		function moduleAccordionTitleClick() {
			var moduleAccordionContent = $(this).parent().next();
			var moduleAccordionTitle = $(this).parent();
			
			if (!moduleAccordionContent[0].__isOpen) {
				slideOpenContent(moduleAccordionContent);
				$(moduleAccordionTitle).removeClass("titleClosed");
				$(moduleAccordionTitle).addClass("titleOpen");
			} else {
				slideCloseContent(moduleAccordionContent);
				$(moduleAccordionTitle).removeClass("titleOpen");
				$(moduleAccordionTitle).addClass("titleClosed");
			}
			//prevent default
			return false;
		}
		
		function initModuleAccordion(moduleAccordionNode) {
			
			//set the javascript state to open for any moduleAccordions which have a class of .startOpen on the content div
			$(moduleAccordionNode).get(".startOpen").each(function() { this.__isOpen = true; });
			
			//alter the open/closed state from cookies if necessary
			$(moduleAccordionNode).get(".moduleAccordionContent").each(function() { 
			
				var displayCookie = getCookie('languages_moduleAccordion_display_' + this.getAttribute("id"));
				if(this.__isOpen){//close moduleAccordions which should be closed
					if(displayCookie == 'closed'){
						slideCloseContent($(this));
					}
				} else {//open moduleAccordions which should be open
					if(displayCookie == 'open'){
						slideOpenContent($(this));
					}
				}
			});
		
			$(moduleAccordionNode).get(" > .moduleAccordionTitle").each(function() {
				this.innerHTML = '<a href="#">' + this.innerHTML + '</a>';
				
				//add open/closed classes to the title and content areas
				var moduleAccordionContent = $(this).next();
				if(moduleAccordionContent[0].__isOpen){
					$(this).removeClass("titleClosed");
					$(this).addClass("titleOpen");
					moduleAccordionContent.removeClass("contentClosed");
					moduleAccordionContent.addClass("contentOpen");
				} else {
					$(this).removeClass("titleOpen");
					$(this).addClass("titleClosed");
					moduleAccordionContent.removeClass("contentOpen");
					moduleAccordionContent.addClass("contentClosed");
				}
			
			}).each(function() {
				events.addListener($(this).get("a"), "click", moduleAccordionTitleClick);
			});
		}
		
		glow.ready(function() {
			$(".moduleAccordion").each(function() {
				initModuleAccordion(this);
			});
		});
		
		
	}());