// PastEvents.js
// requires mootools -> lib/mootools.v1.11.js

var log = 0;

var openAccIndex = -1;

window.addEvent( 'domready', initDoc );

//window.addEvent( 'onload', function() { accordion.display( openAccIndex ) } );

function initDoc() {

//	$('accordion_container').setStyle( 'display', 'none' );
	
//	var initFn = getHtml;
	var initFn = getAccordion;

	if ( Doc.docDir == 'events' ) {   initFn = initAccordion }

	var r =	initFn();
	
	log ? console.log ( '< past_events.js initfn: ' + initFn ):0;
}

log ? console.log ( '< events.js : ' ):0;


function initAccordion(){
//debugger;

	if ( $('accordion') == undefined ) return 'initAccordion failed -> no DOM Element';

//	$('accordion_container').setStyle( 'display', 'none' );
//	$('accordion').setStyle( 'display', 'none' );

	var togs = $$('.acc_toggle');
	var togPanes = $$('.acc_content');

//	alwaysHide ? default false ?
	var ahFlag = false;

//var	openAccIndex = 0;
//	var openAccIndex = getOpenAccordion();
	openAccIndex = getOpenAccordion();
	
//	if ( openAccIndex == -1 ) { ahFlag = true }
	ahFlag = true;

	$('accordion_container').setStyle( 'display', 'block' );
	
//var accordion = new Accordion( 'h3.atStart', 'div.atStart', {
	var accordion = new Accordion( '.acc_toggle', '.acc_content', {
//	var accordion = new Accordion( togs, togPanes, {
	
		opacity: false,

		display: openAccIndex,
//		display: -1,

		alwaysHide: ahFlag,
		
		onActive: function(toggler, element){
//			toggler.setStyle('background', '#585aa5');

//			$(toggler).toggleClass('acc_toggle_active');
//			toggler.toggleClass( 'acc_toggle_active' );
			toggler.addClass( 'acc_toggle_active' );
			
// innerText, innerHTML, textContent
			if ( toggler.getText() == '2007' ) { $('accordion_container').setStyle( 'height', 640 ) };

// console.log ( getOpenAccordion()  +' openAccIndex: ' + openAccIndex );
//  console.log ( toggler.getText() ); 
//	for (var prop in toggler ){ console.log ( prop); }
		},
	 
		onBackground: function( toggler, element ){

			toggler.removeClass( 'acc_toggle_active' );
		}
		
	}, $( 'accordion' ) );

//	for ( p in accordion ) 
//		console.log ( p + ': ' + eval( 'accordion.' + p ) );

//	$('accordion_container').setStyle( 'display', 'block' );
//	$('accordion').setStyle( 'display', 'block' );

//	if ( openAccIndex !== -1 ) { accordion.display( openAccIndex ) }

	if ( Doc.docDir !== 'events' ) {
	
//		accordion.display( openAccIndex );
		setAccLinks();
	}

//	log ? console.log ( ' > initAccordion: ?' ):0;		
	return true;
}

function getOpenAccordion() {
//		var cur_url = parent.location.href;
	var cur_url = parent.document.URL;

	if ( cur_url.indexOf( '/2007/' ) != -1 ) { return 0 }
	if ( cur_url.indexOf( '/2006/' ) != -1 ) { return 1 }
	if ( cur_url.indexOf( '/2005/' ) != -1 ) { return 2 }		
 	if ( cur_url.indexOf( '/2004/' ) != -1 ) { return 3	}
	
//	if ( cur_url.indexOf( '/fest/' ) != -1 ) { return 4 }

	return -1;
}

function setAccLinks() {

// this.docDir
log ? console.log ( ' < setAccLinks Doc.docDir: ' + Doc.docDir ):0;

	var linksContainer = 'accordion';

	var myLinks = $( linksContainer ).getElements( 'a' ); 
//	log ? console.log ( ' myLinks: ' + myLinks ):0;
	
	myLinks.each( function( el ){

		var cur_href = el.href;
	
		var curLocIndex = cur_href.indexOf( Doc.docDir );
		var curLocLength = ( '2008/' ).length;
		
		if ( curLocIndex !== -1 ) {	
		
			cur_href = cur_href.substring( 0, curLocIndex ) 
						+ cur_href.substring( curLocIndex + curLocLength );

			el.href = cur_href;
		}
		
	  log ? console.log ( cur_href + ' • curLocIndex: ' +  curLocIndex.toString() ):0;
		
	//	 el.constructor: [HTMLAnchorElement]
	//	log ? console.log ( ' el.constructor: ' + el.constructor ):0;
	//	for ( p in el ) 
	//		console.log ( p + ': ' + eval( 'el.' + p ) );
	});
}


function getAccordion() {

	var url = '../_pastevents.htm';

	log ? console.log ( ' < getAccordion url: ' + url ):0;

	if ( document.URL.indexOf( 'file://' ) == 0 ) {
// •••••••••••••••••••••••••••••••••••••••
// safari 1 doesn't show menu when loaded locally with mootools Ajax object
		getLocal( url );
//		getHttp( url );
	} else {
		getHttp( url );
	}
}

function getHttp( url ){ 		//	log ? console.log ( ' < getAccordion url: ' + url ):0;

	var myAjax = new Ajax( url, {  // evalResponse: true,

								update: $('accordion_container'),

//								onRequest: function() { },
								onSuccess: function() { ajaxSuccess( this ) },

								onFailure: function() { ajaxFailure( this ) },
								
								onComplete: function() { ajaxComplete( this ) },
								
								method: 'get'
								
								} ).request();

//	var obj = myAjax.options;	
//	for ( p in obj ) { console.log ( p+ ': ' + eval( 'obj.'+ p )); }
}

// Ajax transport object  .constructor: [XMLHttpRequest]
function ajaxSuccess( myAjax ) {
	log ? console.log( '< ajaxSuccess   myAjax.response: ' + myAjax.response ):0;
}
 
function ajaxFailure( myAjax ) {

//	var log = 1;

// response not set on failure ? check for status 0 in Ajax handling?
//	var obj = myAjax.response;

	log ? console.log( 'checkResponse myAjax got -> onFailure : '+ myAjax.constructor ):0;

	var myTxt =	myAjax.transport.responseText;
	var myStatus = myAjax.transport.status;
//	log ? console.log(' myStatus:' + myStatus + ' myTxt: '+ myTxt):0;

	if ( myStatus == 0 && myTxt !== '' ) { 

	//	setupAccordion( httpRequest )
	//	setupAccordion( myAjax.transport )

//		$('accordion_container').setHTML( httpRequest.responseText )
		$('accordion_container').setHTML( myTxt );
		var r = initAccordion();
		log ? console.log ( ' getHttp checkResponse  > initAccordion done->result: '+ r
					+ ' XMLHttpRequest.status:' + myStatus ):0;
	}	
	var obj = myAjax.transport.constructor;
//	var obj = myAjax.transport;	
	if ( log ) { 
		for ( p in obj ) { 
//			console.log ( 'myAjax.response: ' + p + ': ' + eval( 'obj.'+ p )); }
			console.log ( ' .' + p + ': ' + eval( 'obj.'+ p )); }
	}
}

function ajaxComplete( myAjax ) {
	var r = initAccordion();
	log ? console.log ( 'ajaxComplete > initAccordion: ' + r + ' myAjax.response:' + myAjax.response ):0;
}

function getLocal(url) {
//function makeRequest(url) {

	var httpRequest;

	log ? console.log ( 'makeRequest url: ' + url ):0;

	if (window.XMLHttpRequest) { // Mozilla, Safari, ...
		httpRequest = new XMLHttpRequest();
		if (httpRequest.overrideMimeType) {
			httpRequest.overrideMimeType('text/xml');
			// See note below about this line
		}
	} 
	else if (window.ActiveXObject) { // IE
		try {
			httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
			} 
			catch (e) {
					   try {
							httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
						   } 
						 catch (e) {}
					  }
								   }

	if (!httpRequest) {
		alert('Giving up :( Cannot create an XMLHTTP instance');
		return false;
	}
	httpRequest.onreadystatechange = function() { logContents(httpRequest); };
	httpRequest.open('GET', url, true);
	httpRequest.send('');

}

function logContents( httpRequest ) {

	if (httpRequest.readyState == 4) {
		if (httpRequest.status == 200) {
			console.log( httpRequest.responseText );
		} else {
			log ? console.log(' request status not good -> httpRequest.status: '
				+ httpRequest.status ):0;
			log ? console.log('httpRequest.responseText: ' + httpRequest.responseText ):0;

//			$('accordion_container').setHTML( httpRequest.responseText )
			setupAccordion( httpRequest );
		}
	}

}

function setupAccordion( httpRequest ) {
	
	$('accordion_container').setHTML( httpRequest.responseText )

	var r = initAccordion();
	
	console.log ( 'getLocal > setupAccordion > initAccordion done r: '
	+ r + ' httpRequest:' + httpRequest );

}
