function googleMapsInitialise(gMap){

	/* get all the data from the map - we need to store these as follows:
	
		there should be one of the following for each of these:
		.gMap-lat
		.gMap-lng
		.gMap-zoom
		
		there can be multiple markers and popups:
		.gMap-marker
		.gMap-marker-popup
		
	*/	

	var gLatLng = new google.maps.LatLng(gMap.getElement('.gMap-lat').get('text'), gMap.getElement('.gMap-lng').get('text'));
	////console.log(gLatLng);
	var gOptions = {
	  zoom: parseInt(gMap.getElement('.gMap-zoom').get('text')),
	  center: gLatLng,
	  mapTypeId: google.maps.MapTypeId.TERRAIN
	};
	
	
	//grab all the marker data from the div before Google Maps destroys it		
	gMarkers = new Array();		
	gMap.getElements('.gMap-marker').each(function(gMarker){
		//console.log(gMarker);
		gMarkers.push(new Array(gMarker.getElement('.gMap-marker-popup').get('html'), gMarker.getElement('.gMap-marker-lat').get('text'), gMarker.getElement('.gMap-marker-lng').get('text')));		
	});
	//console.log(gMarkers);
	
	//set up map
	var map = new google.maps.Map(gMap,gOptions);
	var infowindow = new google.maps.InfoWindow();

	//loop through markers array and add to the map
	gMarkers.each(function(gMarker){
		
		var mLatLng = new google.maps.LatLng(gMarker[1], gMarker[2]);
		//console.log(mLatLng);	
		var marker = new google.maps.Marker({
		    position: mLatLng,
		    map: map
		});
		
		google.maps.event.addListener(marker, 'click', function() {
		  map.setZoom(4);
		  //map.setCenter(marker);
		  infowindow.setContent(gMarker[0]);
		  infowindow.open(map,marker);
		});

	});
	
	
	
};

window.addEvent('domready', function() {
	
	var courseDates = $$('#course-table ul');
	if(courseDates != ''){
	
		courseDates.each(function(courseDateList){
			var first = courseDateList.getFirst();
			if(first){
				first.getAllNext().each(function(li){
					//console.log(li);
					li.setStyle('display','none');
				});
			}
		});
		
		var displayAll = $('display-all');
		displayAll.addEvent('click', function(evt){
			evt.preventDefault();
			courseDates.getElements('li').each(function(li){
				li.setStyle('display','block');
			});
			displayAll.destroy();
		});
		
	}
	
 	$$('.gMap').each(function(gMap){
		googleMapsInitialise(gMap);
	});
	
	var accordions = $$('.accordion').each(function(accordion){
		new Fx.Accordion(accordion, '.accordion h2', '.accordion .content');
	});
	
	
	
	
	
	
});


/*mootools more 1.2.5 for accordion*/

//MooTools More, <http://mootools.net/more>. Copyright (c) 2006-2009 Aaron Newton <http://clientcide.com/>, Valerio Proietti <http://mad4milk.net> & the MooTools team <http://mootools.net/developers>, MIT Style License.

MooTools.More={'version':'1.2.5.1','build':'254884f2b83651bf95260eed5c6cceb838e22d8e'};Fx.Elements=new Class({Extends:Fx.CSS,initialize:function(elements,options){this.elements=this.subject=$$(elements);this.parent(options);},compute:function(from,to,delta){var now={};for(var i in from){var iFrom=from[i],iTo=to[i],iNow=now[i]={};for(var p in iFrom)iNow[p]=this.parent(iFrom[p],iTo[p],delta);}
return now;},set:function(now){for(var i in now){if(!this.elements[i])continue;var iNow=now[i];for(var p in iNow)this.render(this.elements[i],p,iNow[p],this.options.unit);}
return this;},start:function(obj){if(!this.check(obj))return this;var from={},to={};for(var i in obj){if(!this.elements[i])continue;var iProps=obj[i],iFrom=from[i]={},iTo=to[i]={};for(var p in iProps){var parsed=this.prepare(this.elements[i],p,iProps[p]);iFrom[p]=parsed.from;iTo[p]=parsed.to;}}
return this.parent(from,to);}});Fx.Accordion=new Class({Extends:Fx.Elements,options:{fixedHeight:false,fixedWidth:false,display:0,show:false,height:true,width:false,opacity:true,alwaysHide:false,trigger:'click',initialDisplayFx:true,returnHeightToAuto:true},initialize:function(){var params=Array.link(arguments,{'container':Element.type,'options':Object.type,'togglers':$defined,'elements':$defined});this.parent(params.elements,params.options);this.togglers=$$(params.togglers);this.previous=-1;this.internalChain=new Chain();if(this.options.alwaysHide)this.options.wait=true;if($chk(this.options.show)){this.options.display=false;this.previous=this.options.show;}
if(this.options.start){this.options.display=false;this.options.show=false;}
this.effects={};if(this.options.opacity)this.effects.opacity='fullOpacity';if(this.options.width)this.effects.width=this.options.fixedWidth?'fullWidth':'offsetWidth';if(this.options.height)this.effects.height=this.options.fixedHeight?'fullHeight':'scrollHeight';for(var i=0,l=this.togglers.length;i<l;i++)this.addSection(this.togglers[i],this.elements[i]);this.elements.each(function(el,i){if(this.options.show===i){this.fireEvent('active',[this.togglers[i],el]);}else{for(var fx in this.effects)el.setStyle(fx,0);}},this);if($chk(this.options.display)||this.options.initialDisplayFx===false)this.display(this.options.display,this.options.initialDisplayFx);if(this.options.fixedHeight!==false)this.options.returnHeightToAuto=false;this.addEvent('complete',this.internalChain.callChain.bind(this.internalChain));},addSection:function(toggler,element){toggler=document.id(toggler);element=document.id(element);var test=this.togglers.contains(toggler);this.togglers.include(toggler);this.elements.include(element);var idx=this.togglers.indexOf(toggler);var displayer=this.display.bind(this,idx);toggler.store('accordion:display',displayer);toggler.addEvent(this.options.trigger,displayer);if(this.options.height)element.setStyles({'padding-top':0,'border-top':'none','padding-bottom':0,'border-bottom':'none'});if(this.options.width)element.setStyles({'padding-left':0,'border-left':'none','padding-right':0,'border-right':'none'});element.fullOpacity=1;if(this.options.fixedWidth)element.fullWidth=this.options.fixedWidth;if(this.options.fixedHeight)element.fullHeight=this.options.fixedHeight;element.setStyle('overflow','hidden');if(!test){for(var fx in this.effects)element.setStyle(fx,0);}
return this;},removeSection:function(toggler,displayIndex){var idx=this.togglers.indexOf(toggler);var element=this.elements[idx];var remover=function(){this.togglers.erase(toggler);this.elements.erase(element);this.detach(toggler);}.bind(this);if(this.now==idx||displayIndex!=undefined)this.display($pick(displayIndex,idx-1>=0?idx-1:0)).chain(remover);else remover();return this;},detach:function(toggler){var remove=function(toggler){toggler.removeEvent(this.options.trigger,toggler.retrieve('accordion:display'));}.bind(this);if(!toggler)this.togglers.each(remove);else remove(toggler);return this;},display:function(index,useFx){if(!this.check(index,useFx))return this;useFx=$pick(useFx,true);index=($type(index)=='element')?this.elements.indexOf(index):index;if(index==this.previous&&!this.options.alwaysHide)return this;if(this.options.returnHeightToAuto){var prev=this.elements[this.previous];if(prev&&!this.selfHidden){for(var fx in this.effects){prev.setStyle(fx,prev[this.effects[fx]]);}}}
if((this.timer&&this.options.wait)||(index===this.previous&&!this.options.alwaysHide))return this;this.previous=index;var obj={};this.elements.each(function(el,i){obj[i]={};var hide;if(i!=index){hide=true;}else if(this.options.alwaysHide&&((el.offsetHeight>0&&this.options.height)||el.offsetWidth>0&&this.options.width)){hide=true;this.selfHidden=true;}
this.fireEvent(hide?'background':'active',[this.togglers[i],el]);for(var fx in this.effects)obj[i][fx]=hide?0:el[this.effects[fx]];},this);this.internalChain.clearChain();this.internalChain.chain(function(){if(this.options.returnHeightToAuto&&!this.selfHidden){var el=this.elements[index];if(el)el.setStyle('height','auto');};}.bind(this));return useFx?this.start(obj):this.set(obj);}});var Accordion=new Class({Extends:Fx.Accordion,initialize:function(){this.parent.apply(this,arguments);var params=Array.link(arguments,{'container':Element.type});this.container=params.container;},addSection:function(toggler,element,pos){toggler=document.id(toggler);element=document.id(element);var test=this.togglers.contains(toggler);var len=this.togglers.length;if(len&&(!test||pos)){pos=$pick(pos,len-1);toggler.inject(this.togglers[pos],'before');element.inject(toggler,'after');}else if(this.container&&!test){toggler.inject(this.container);element.inject(this.container);}
return this.parent.apply(this,arguments);}});

