/**
 * Grouped Facilities JS
 * @author mjames
 * @requires jQuery 1.2.2 or YUI 2.2.1
 */

var NewMind = window.NewMind || {} ; //namespace
NewMind.platform = window.NewMind.platform || {};

/**
 * grouped facilities for the JQuery library
 */
NewMind.platform.groupedFacilitiesJQuery = function(){
	//private
	/**
	 * sets up the grouped facilities
	 * @param {Object} sContainer - facilities container selector
	 */
	var prodFacilities = function(sContainer){
		$(sContainer + " h3")
			.wrapInner('<a href="#" title="Show / Hide"></a>')
			.parent().find("ul, h4").hide().end()
			.find('a').toggle(showFacilities, hideFacilities);
	};
	
	/**
	 * shows the facilities
	 */
	var showFacilities = function(){
		var className = $(this).parent()[0].className;
		var parent = $(this).parent().parent();
		parent.find("ul." + className + ", ul." + className + " + h4").show();
	};
	
	/**
	 * Hides the facilities
	 */
	var hideFacilities = function(){
		var className = $(this).parent()[0].className;
		var parent = $(this).parent().parent();
		parent.find("ul." + className + ", ul." + className + " + h4").hide();
	};
	
	return {
		init: function(){
			prodFacilities("div.facilities");
		},
		
		unbind: function(){
			$("div.facilities a").unbind('click');
		},
		
		rebind : function(){
			$("div.facilities h3 a[href='#']").toggle(showFacilities, hideFacilities);
		}
	};
}();

/** Grouped Facilities code for the YUI Library **/
NewMind.platform.groupedFacilitiesYUI = function(){

	var hideFacilities = function(sID){
		if (sID === null){
			sID = "facilities";		
		}
		var ulFacilities = YAHOO.util.Dom.getElementsByClassName(sID, 'ul');
		
		iCounter = 0;
		while (iCounter < ulFacilities.length){
			YAHOO.util.Dom.setStyle(ulFacilities[iCounter], 'display', 'none');
			iCounter = iCounter + 1;
		}
	};
	
	var showFacilities = function(e){
		YAHOO.util.Event.preventDefault(e);
		var ourClass = this.parentNode.className;
		var ulFacilities = YAHOO.util.Dom.getElementsByClassName(ourClass, 'ul');
			
		iCounter = 0;
		
		while (iCounter < ulFacilities.length){
			var styleValue = "block";
			var tempString = YAHOO.util.Dom.getStyle(ulFacilities[iCounter], "display");
			if (tempString === "block"){
				styleValue = "none";
			}
			YAHOO.util.Dom.setStyle(ulFacilities[iCounter], 'display', styleValue);
			iCounter = iCounter + 1;
		}	
	};
	
	var attachListeners = function(){
		function get_lastchild(n){
			var x=n.lastChild;
			while (x.nodeType!=1)
			  {
			  x=x.previousSibling;
			  }
			return x;
		}
		
		var ulFacilities = YAHOO.util.Dom.getElementsByClassName('facilities', 'ul');
		iCounter = 0;
		while (iCounter < ulFacilities.length){
			var ourClasses = ulFacilities[iCounter].className;
			var ourClass = ourClasses.split(" ");
			var ourH3s = YAHOO.util.Dom.getElementsByClassName(ourClass[1], 'h3');
			if (ourH3s.length > 0){
				var ourH3 = ourH3s[0];	
				if (ourH3.hasChildNodes()) {
					ulFacilities[iCounter].className += " hideme";
					var newA = document.createElement('a');
					var href = document.createAttribute("href");
					href.nodeValue = "#";
					newA.setAttributeNode(href);
					newA.innerHTML = ourH3.innerHTML;
					ourH3.removeChild(ourH3.firstChild);
					ourH3.appendChild(newA);
					var ourA = ourH3.firstChild;
					YAHOO.util.Event.addListener(ourA, "click", showFacilities);
				}
			}
			iCounter = iCounter + 1;	
		}
		
	};
	
	return{
		init : function(){
			attachListeners();
			hideFacilities("hideme");
		},
		
		visibility : function(){
			alert(test);
			showFacilities(this);
		}
		
	};
}();

/** 
 * grouped facilties main method works out which library to use
 */
NewMind.platform.groupedFacilities = function(){
	//private
	
	var loadFacilitiesCode = function(){
		if (typeof(YAHOO) !== "undefined") {
			NewMind.platform.groupedFacilitiesYUI.init();
		}
		else if (typeof($) !== "undefined"){
			NewMind.platform.groupedFacilitiesJQuery.init();
		}
		else{
			//do nothing
		}
	};
	
	return {
		init: function(){
			loadFacilitiesCode();
		}
	};
}();

NewMind.platform.groupedFacilities.init();