/* Global Vars */
var requestObj = null;
var targetId = null;
var allEffects = null; /* used for storing the effects */
var currentTarget = 0; /* used for marking the current target div */
var numberOfGroups = 0;
var lastNameSet = null;
var preloaderImg = "<img src=\"/readingandleeds/2007/images/preloader.gif\">";
var artistURL = "/readingandleeds/2007/artists/";
var artistSSI = "/includes/_lineup_profile.sssi";

// Load Instruction
window.onload = PageProcessor

/*
 * Processes page on-load to add onclick events 
 * to anchor tags for all artists with a link
 *
 */
function PageProcessor()
{
	if( !document.getElementById && !document.getElementsByTagName && !document.getElementsByClassName ) return false;  
	if( !window.XMLHttpRequest && !window.ActiveXObject ) return false; 
	AddInfoDivs();
	AddEvents();
	AddEffects();
}

/*
 * Adds empty div place holders under each artist-grouping.
 * These will later be populated with the artist info.
 *
 */
function AddInfoDivs()
{
	// get all group classes 
	var allGroups = document.getElementsByClassName( "artist-grouping" );  
	// for each group
	for( var i=0; i<allGroups.length; i++ ) {
		
		// create the preloader info div
		var preloader = document.createElement( "div" );
		preloader.setAttribute( "id", "preloader" + i );
		preloader.setAttribute( "class", "preloader" );
		preloader.setAttribute( "className", "preloader" );
		preloader.innerHTML = preloaderImg;
		// create the artist info div
		var placeholder = document.createElement( "div" );
		placeholder.setAttribute( "id", "artist-info" + i );
		placeholder.setAttribute( "class", "artist-info clearme" );
		placeholder.setAttribute( "className", "artist-info clearme" );
		
		// add the divs to the grouping
		allGroups[i].appendChild(preloader);
		allGroups[i].appendChild(placeholder);
	}
}

/*
 * Adds onclick events to anchors that have artist profiles
 * associated with them. The action then populates the page
 * with the artist info.
 *
 */
function AddEvents() 
{
	// get all group classes 
	var allGroups = document.getElementsByClassName( "artist-grouping" );  
	
	//var groupTitle = document.getElementBy
	for( var i=0; i<allGroups.length; i++ ) {
		
		// get all links in group
		var allGroupLinks = allGroups[i].getElementsByTagName( "a" ); 
		
		// for all links in classes
		for ( var j=1; j<allGroupLinks.length; j++ ) {
			if ( allGroupLinks[j].getAttribute( "href" ) ) {
				// give each anchor a reference to the appropriate placeholder
				allGroupLinks[j].artistNum = i;
				allGroupLinks[j].onclick = function ( oEvent ) {	
					var oEvent = ( !oEvent ) ? window.event : oEvent;          
					// load particular artist info
					LoadArtist(this.artistNum, this.name );
					//cancel default link action
					return false; //cancel default link action
				}
			}
		}
		numberOfGroups = i;
	}
}


function LoadArtist (target, artist)
{
	// close all other artist info windows
	CloseArtist(target);
	
	// set target id
	//targetId = target;
	
	if (window.XMLHttpRequest) { 
		requestObj = new XMLHttpRequest ();
	}
	else if (window.ActiveXObject) {
		try {
			requestObj = new ActiveXObject ("Msxml2.XMLHTTP"); 
		}
		catch (e) {
			try { 
				requestObj = new ActiveXObject ("Microsoft.XMLHTTP"); 
			}
			catch (e) { 
				throw new Error("Sorry - XMLHTTPRequest is not supported by your browser");
			}
		}
	}

	requestObj.onreadystatechange = RequestHandler;
	currentTarget = target;
	requestObj.open('POST', artistURL + artist + artistSSI , true);
    requestObj.send("");
	
	// make button selected
	document.getElementsByName(artist)[0].setAttribute("class", "selected");
	document.getElementsByName(artist)[0].setAttribute("className", "selected");
	lastNameSet = artist;
}


function CloseArtist(target) {
	
	if (lastNameSet != null) {
		document.getElementsByName(lastNameSet)[0].removeAttribute("class");
		document.getElementsByName(lastNameSet)[0].removeAttribute("className");
	}
	
	// hide artist info
	allEffects[target].hide();
	document.getElementById("artist-info" + target).style.display = "none";
}


function RequestHandler ()
{
	var targetId = "artist-info" + currentTarget;
	var preloaderId = "preloader" + currentTarget;
	
	if (requestObj.readyState == 4 && requestObj.status == 200) {
		
		// hide preloader
		document.getElementById(preloaderId).style.display = "none";
		
		// insert artist-info
		document.getElementById(targetId).style.display = "block";
		document.getElementById(targetId).innerHTML = requestObj.responseText;
		allEffects[currentTarget].toggle();

	}
	else {
		document.getElementById(preloaderId).style.display = "block";
	}
}

function AddEffects () 
{
	
	// get all group classes 
	var allGroups = document.getElementsByClassName( "artist-grouping" );  
	
	// create array to store effects for each info placeholder
	allEffects = new Array(allGroups.length);
	
	// for each group
	for( var i=0; i<allEffects.length; i++ ) {
		// create the effect
		allEffects[i] = new fx.Opacity("artist-info" + i, {duration: 500});
		// hide the div
		allEffects[i].hide();
	}
}