if (typeof(KEA) == 'undefined') {
	KEA		= {};
	KEA.UI	= {};
}

KEA.UI.SlideShow	= function()
{
	var duration	= 4600;
	var container;
	var xmldoc;
	var items = [];
	var captions = [];
    var readmoretexts = [];
	var imgs = [];
    var readMoreHead = '';
    var captionindex=0;
    var readmoreindex=0;
	var readMoreOut = '';
	var timer;
	var captiontext='';
	var doccaptions1 = [];
	var docquotes1 = [];
	var docquotees1 = [];
	var keeprolling	= true;
// mask 	
	var hidereadmore = function(e) { 
	 moreText.readmorepanel.destroy();
	var backtoimage1 = document.getElementById('backtoimage');
	var backtoimageparent = document.getElementById('projectdetails');
	backtoimageparent.removeChild(backtoimage1);
				}

	var init	= function(xmlpath) {
		YAHOO.util.Dom.addClass(document.body, 'dynamic');
		container	= YAHOO.util.Dom.get('projectcontent');
		var oConn	= YAHOO.util.Connect.asyncRequest('GET', xmlpath, KEA.UI.SlideShow.callback);
		container.innerHTML	= '';
	}

	var callback	= {
		success: function(o){ loadXML(o.responseXML); }
	}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////  PROCESS XML   ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
var loadXML	= function(xmldoc) {
//
//  create image background div
//
	var slideback = document.createElement('DIV');
	slideback.setAttribute('id', 'slideback');
	slideback = container.appendChild(slideback);
//
//  create html for images
//
	var docitems	= xmldoc.getElementsByTagName('item');
	if (docitems.length)
		{
    		var i, l;
			for(i=0, l=docitems.length; i<l; i++)
			{
				var item	= {
					src: docitems[i].getAttribute('i'),
					title: docitems[i].getAttribute('a'),
					visible: false,
					index: i
					            };
			items.push(item);
			var img	= document.createElement('IMG');
				img.setAttribute('src', item.src);
				img.setAttribute('alt', item.title);
				img.setAttribute('class', 'slideimage');
				YAHOO.util.Dom.setStyle(img, 'opacity', 0);
				imgout = slideback.appendChild(img);	
				imgs.push(img);
     			YAHOO.util.Event.addListener(img, 'click', KEA.UI.SlideShow.show1, items[i], true);
				}
 	items[0].visible	= true;
	YAHOO.util.Dom.setStyle(imgs[0], 'opacity', 1);
		}	


//
//  create array of captions
//
	var doccaptions	= xmldoc.getElementsByTagName('caption');
	if (doccaptions.length > 0) 
		  {
			var ic, lc;
			for(ic=0, lc=doccaptions.length; ic<lc; ic++)
			{var doccaptionstext =doccaptions[ic].firstChild.nodeValue;
				doccaptions1.push(doccaptionstext);
			}
		}				

//
//  create project details div
//
	var projdets = document.createElement('DIV');
	projdets.setAttribute('id', 'projectdetails');
	projdets = container.appendChild(projdets);	
		
//
//  get and build project name
//
	var docprojects	= xmldoc.getElementsByTagName('project');
	var projectsout = docprojects[0].firstChild.nodeValue;
	var proj = document.createElement('P');
	proj.setAttribute('id', 'projectname');
	proj = container.appendChild(proj);	
	var proj1 = document.getElementById('projectname');
	proj1.innerHTML=projectsout;
	projnameout = projdets.appendChild(proj1);	

//
//  get and build summary
//
	var docsummarys	= xmldoc.getElementsByTagName('summary');

	var summarysout = docsummarys[0].firstChild.nodeValue;
	var sum	= document.createElement('DIV');
	sum.setAttribute('id', 'summarytext');
	sum	= container.appendChild(sum);	
	var sum1 = document.getElementById('summarytext');
	sum1.innerHTML=summarysout;
	sumout = projdets.appendChild(sum1);	

//
//  get quote
//
	var docquotes	= xmldoc.getElementsByTagName('quote');
	var docquotestext =docquotes[0].firstChild.nodeValue;
		docquotes1.push(docquotestext);
//
//  get quotee
//
	var docquotees	= xmldoc.getElementsByTagName('quotee');
	var docquoteestext =docquotees[0].firstChild.nodeValue;
		docquotees1.push(docquoteestext);
		
//
//  Create readmore button and listener to create readmore text
//
	var docreadmore	= xmldoc.getElementsByTagName('readmore');
	if (docreadmore.length >0)
      {readMoreOut = docreadmore[0].firstChild.nodeValue;
//   read more button
		var readmore = document.createElement('A');
		readmore.setAttribute('href', '#');
        readmore	= container.appendChild(readmore);
		var readmoretxt		= document.createTextNode('read more...');
        readmore.appendChild(readmoretxt);				
		YAHOO.util.Dom.addClass(readmore, 'readmorebut');
		readmoreout = projdets.appendChild(readmore);	

//  add eventlistener
		YAHOO.util.Event.addListener(readmore, 'click', moreText ); 
       }
    else 
	   {}

////////////////////////////////  BUILD NAVIGATION AREA   ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	    buildNav();
// set automatic slide show timer		
		timer	= setTimeout(KEA.UI.SlideShow.roll, duration);

//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////// END  LOAD XML   /////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////// BUILD READMORE PANEL   ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
var moreText = function(e) { 
// Instantiate a Panel from script 
     moreText.readmorepanel = new YAHOO.widget.Panel("readmorepanel", 
		{ width:"710px", position:"absolute", left:"0",top:"0", visible:false, draggable:true, close:false, modal:false, zIndex:10 } ); 
	 moreText.readmorepanel.setHeader(readMoreHead);
	 moreText.readmorepanel.setBody(readMoreOut); 
	 moreText.readmorepanel.render(container);
	 moreText.readmorepanel.show();

// func to get array of class elements
	getElementsByClass = function(theClass) {
		var elementArray = [];
		if (document.all)
		{elementArray = document.all;}
		else
		{elementArray = document.getElementsByTagName("*");}
		var matchedArray = [];
		var pattern = new RegExp("(^| )" + theClass + "( |$)");
		for (var i = 0; i < elementArray.length; i++)
			{
			if (pattern.test(elementArray[i].className))
				{matchedArray[matchedArray.length] = elementArray[i];}
			}
		return matchedArray;
	};
//	
// add  top close button
//
    var getHd = getElementsByClass("hd");
	var topClose = document.createElement('IMG');
		topClose.setAttribute('src', '/images/close.gif');
    	topClose.setAttribute('alt', 'no cross');
		topClose.id = "topclose";
		topClose	= getHd[0].appendChild(topClose);
//  add eventlistener to close readmore
	 YAHOO.util.Event.addListener(topClose, 'click', hidereadmore ); 

//	 
//  bottom close button (backtoimage)
//
	var backtoimage = document.createElement('A');
		backtoimage.setAttribute('href', '#');
	var projdets3= document.getElementById("projectdetails");
		backtoimage.id = "backtoimage";
		backtoimage	= projdets3.appendChild(backtoimage);
	var backtoimagebut = document.createTextNode('back to image');
		backtoimage.appendChild(backtoimagebut);				
//  add eventlistener to close readmore
	YAHOO.util.Event.addListener(backtoimage, 'click', hidereadmore );
	 
//
// add  quote and quotee
//
	var getBd = getElementsByClass("bd");
	var quotesout = docquotes1[0];
	var quotediv = document.createElement('DIV');
		quotediv.setAttribute('id', 'projectquotewrap');
		quotediv = getBd[0].appendChild(quotediv);	
		
	var quote = document.createElement('P');
		quote.setAttribute('id', 'projectquote');
		quote	= getBd[0].appendChild(quote);	
	var quote1 = document.getElementById('projectquote');
		quote1.innerHTML=quotesout;
		quoteout	= quotediv.appendChild(quote1);
		
	var quoteesout = docquotees1[0];
	var quotee = document.createElement('P');
		quotee.setAttribute('id', 'projectquotee');
		quotee	= getBd[0].appendChild(quotee);	
	var quotee1 = document.getElementById('projectquotee');
		quotee1.innerHTML=quoteesout;
		quoteeout	= quotediv.appendChild(quotee1);
		
//stop slide show		
		YAHOO.util.Event.stopEvent(e);
		clearTimeout(timer);
		keeprolling = false;
		
		

//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////// END  BUILD READMORE  ///////////////////////////
//////////////////////////////////////////////////////////////////////////////////
};
		
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////// BUILD NAVIGATION AREA  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

var buildNav = function() {
	var ul = document.createElement('UL');	
	var li = document.createElement('LI');
	var a = document.createElement('A');
//
//  build caption for first slide
//
	var capsout = doccaptions1[0];
	if (capsout)
		{
		var cap	= document.createElement('DIV');
		cap.setAttribute('id', 'captiontext');
		cap	= container.appendChild(cap);	
		var cap1 = document.getElementById('captiontext');
		cap1.innerHTML=capsout;
		var projdets2 = document.getElementById('projectdetails');
		cap1out = projdets2.appendChild(cap1);	
		}
//
//  navigation
//
	if (items.length) 
		{
		var i, l;
		for (i=0, l=items.length; i<l; i++) 
			{
			var li		= document.createElement('LI');
			var a		= document.createElement('A');
			var span	= document.createElement('SPAN');
			var txt		= document.createTextNode((i+1).toString());
			span.appendChild(txt);
			a.appendChild(span);
			a.setAttribute('href', '#');
			
			li.appendChild(a);
			YAHOO.util.Event.addListener(a, 'click', KEA.UI.SlideShow.stop);
			items[i].link	= ul.appendChild(li);
			YAHOO.util.Event.addListener(items[i].link, 'click', KEA.UI.SlideShow.show, items[i], true);
//   close listener
			YAHOO.util.Event.addListener(items[i].link, 'click', hidereadmore ); 	

			if (i==0) {
						YAHOO.util.Dom.addClass(items[i].link, 'selected');
					}
			}
		}
		var projdets1 = document.getElementById('projectdetails');
		projdets1.appendChild(ul);

//////////////////////////////////////////////////////////////////////////////////
////////////////////// END  BUILD IMAGE NAVIGATION  ///////////////////////////
//////////////////////////////////////////////////////////////////////////////////
}
	

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////// ROLL, STOP AND SHOW FUNCTIONS  //////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
var roll	= function() {
	if (items.length && keeprolling) {
		var i, l;
		for (i=0, l=items.length; i<l; i++) {
			if (items[i].visible) {
				if (typeof(items[i+1]) == 'undefined') {
					var nextitem	= items[0];
					var nextimg		= imgs[0];
					var nextcap		= 0;
				}else{
					var nextitem	= items[i+1];
					var nextimg		= imgs[i+1];
					var nextcap		= i+1;
				}
				
				var outgoing	= new YAHOO.util.Anim(imgs[i], {opacity: {to: 0}}, 1);
				var incoming	= new YAHOO.util.Anim(nextimg, {opacity: {to: 1}}, 1);
				outgoing.animate();
				incoming.animate();
				items[i].visible	= false;
				nextitem.visible	= true;
				YAHOO.util.Dom.addClass(nextitem.link, 'selected');
				YAHOO.util.Dom.removeClass(items[i].link, 'selected');
				
				var capshow1 = document.getElementById('captiontext');
				if (capshow1) 
					{capshow1.parentNode.removeChild(capshow1);}
				var capsshowout =doccaptions1[nextcap];
				if (capsshowout)
					{
					var capshow	= document.createElement('DIV');
					capshow.setAttribute('id', 'captiontext');
					capshow	= container.appendChild(capshow);	
					var capshow1 = document.getElementById('captiontext');
					capshow1.innerHTML=capsshowout;
					var projdetsshow1 = document.getElementById('projectdetails');
					cap2showout = projdetsshow1.appendChild(capshow1);	
					}				
		
				timer	= setTimeout(KEA.UI.SlideShow.roll, duration);
				break;
			}
		}
	}
}

var stop		= function(e) {
	YAHOO.util.Event.stopEvent(e);
	clearTimeout(timer);
	if (keeprolling) {
		keeprolling = false;
	}else{
		keeprolling = true;
		KEA.UI.SlideShow.roll();
	}
		return false;
	}

var show = function(e) {   
	YAHOO.util.Event.stopEvent(e);
	if (keeprolling) stop(e);
//
//  fade between current slide and new slide
//
	var i, l;
	for (i=0, l=items.length; i<l; i++) 
		{
		if (items[i].visible) 
			{
			YAHOO.util.Dom.removeClass(items[i].link, 'selected');
			var outgoing	= new YAHOO.util.Anim(imgs[i], {opacity: {to: 0}}, 1);
			var incoming	= new YAHOO.util.Anim(imgs[this.index], {opacity: {to: 1}}, 1);
			outgoing.animate();
			incoming.animate();
			items[i].visible	= false;
			this.visible		= true;
//  set index for caption and readmore to match image index
			captionindex=this.index;
		    readmoreindex=0;
			}
		}	
	YAHOO.util.Dom.addClass(this.link, 'selected');

//
//  build caption for slides after first slide
//  delete exisitng caption first if it exists
//
	var cap1 = document.getElementById('captiontext');
    if (cap1) 
		{cap1.parentNode.removeChild(cap1);}
//  create new caption
	var capsout =doccaptions1[captionindex];
	if (capsout)
		{
		var cap	= document.createElement('DIV');
		cap.setAttribute('id', 'captiontext');
		cap	= container.appendChild(cap);	
		var cap1 = document.getElementById('captiontext');
		cap1.innerHTML=capsout;
		var projdets3 = document.getElementById('projectdetails');
		cap2out = projdets3.appendChild(cap1);	
		}				
//   needs moving
	getElementsByClass = function(theClass)
		{ 
		var elementArray = [];
		if (document.all)
			{elementArray = document.all;}
		else
			{elementArray = document.getElementsByTagName("*");}
		var matchedArray = [];
		var pattern = new RegExp("(^| )" + theClass + "( |$)");
		for (var i = 0; i < elementArray.length; i++)
			{
			if (pattern.test(elementArray[i].className))
				{matchedArray[matchedArray.length] = elementArray[i];}
			}
		return matchedArray;
		};
		
//////////////////////////////////////////////////////////////////////////////////
////////////////////// END  SHOW FUNCTION ////////// ///////////////////////////
//////////////////////////////////////////////////////////////////////////////////
	return false;
}	

return {
		init: init,
		callback: callback,
		roll: roll,
		show: show
	}
	
}();