if (typeof(STA) == 'undefined') {
	STA		= {};
	STA.UI	= {};
}

STA.UI.SlideShow	= function()
{
	var duration	= 6000;
	var container;
	var xmldoc;
	var items = [];
	var captions = [];
    var readmoretexts = [];
	var imgs = [];
    var author = '';
    var authorind = false;
    var readMoreHead = '';
    var captionindex=0;
    var readmoreindex=0;
	var readMoreOut = '';
	var timer;
	var captiontext='';
	var doccaptions1 = [];
	
// mask 	
	var hidereadmore = function(e) { 
	 moreText.readmorepanel.destroy();
	}

	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, STA.UI.SlideShow.callback);
		container.innerHTML	= '';
	}

	var callback	= {
		success: function(o){ loadXML(o.responseXML); }
	}

//
///////////  create html for slide images, navigation, captions and readmore button from xml
//
	var loadXML	= function(xmldoc) {
///////////  slide 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,
					index1: i
				              };
			items.push(item);
			var img	= document.createElement('IMG');
				img.setAttribute('src', item.src);
				img.setAttribute('alt', item.title);
				YAHOO.util.Dom.setStyle(img, 'opacity', 0);
				img	= container.appendChild(img);
				imgs.push(img);
     			YAHOO.util.Event.addListener(img, 'click', STA.UI.SlideShow.show1, items[i], true);
				}
 	items[0].visible	= true;
	YAHOO.util.Dom.setStyle(imgs[0], 'opacity', 1);
		}	
	
///////////  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);
			}
		}				

///////////  author
	var docauthor	= xmldoc.getElementsByTagName('author');
	 if (docauthor.length > 0)
	    {author = docauthor[0].getAttribute('a');
		readMoreHead = "<h2 id='summary'>Summary</h2><h2 id='author'>" + author + "</h2>";
		authorind=true;}
		else 
		{readMoreHead = "<h2 id='summary'>Summary</h2>";
		authorind=false;}
		

///////////  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');
//  add eventlistener
 YAHOO.util.Event.addListener(readmore, 'click', moreText ); 
       }
    else 
	   {}
///////////  slide navigation
	    buildNav();

//  end of function - loadxml		
	}

//
//////////    create read more text panel
//
var moreText = function(e) { 
// Instantiate a Panel from script 
     moreText.readmorepanel = new YAHOO.widget.Panel("readmorepanel", 
		{ width:"426px", 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;
 };
	
///////////  top close button
    var getHd = getElementsByClass("hd");
	var topClose = document.createElement('IMG');
		topClose.setAttribute('src', '/images/closecross.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
	var extraclose = document.createElement('A');
		extraclose.setAttribute('href', '#');
	var readmorepanel1= document.getElementById("readmorepanel");
		extraclose.id = "extraclose";
		extraclose	= readmorepanel1.appendChild(extraclose);
	var extraclosebut = document.createTextNode('Close');
		extraclose.appendChild(extraclosebut);				
//  add eventlistener to close readmore
	YAHOO.util.Event.addListener(extraclose, 'click', hidereadmore ); 	
		
//
//////////    set up scroller
//

// id of the container element 
	var id = "readmorepanel";
	var popupbodyclass = "bd";
// navigation buttons text
	var nav = ["scrollup.gif", "scrolldown.gif", "scrolltotop.gif", "scrolltobot.gif"];
//	id for each navigation button 
	var navId = ["btnUp", "btnDown", "btnReset","btnEnd"];
// movement speed
	var speed = 5;
// desired height of the container element (in pixels)
// depends on whether author exists 
    if (authorind) 
	    {var height = 407;
		var testObjHeighta = 428;
		var testObjHeightb = 427;
		}
	else
	    {var height = 421;
		var testObjHeighta = 442;
		var testObjHeightb = 441;
	    }

	var obj = getElementsByClass("bd");
	obj[0].up = false;
	obj[0].down = false;
	obj[0].fast = false;
	var parent = obj[0].parentNode;

//  check if scroller already exists
    var scrollcontainer = document.getElementById("scroller");
	if (scrollcontainer == null) 
		{ 
		scrollcontainer = document.createElement("div");
		scrollcontainer.id="scroller";
		parent.insertBefore(scrollcontainer,obj[0]);
		}
       else
       {
	   obj[0].style.top = "0px";
       }		
//  set position of top of scroller depending on whether auythor exists 
    if (authorind) 
	    {scrollcontainer.style.top="49px";}
	else
	    {scrollcontainer.style.top="35px";}
	   
	scrollcontainer.style.height = height + "px";
	obj[0].style.position = "absolute";
	obj[0].style.top = "0px";
	obj[0].style.left = "0px";
	scrollcontainer.appendChild(obj[0]);		
// create buttons if required	
if (obj[0].offsetHeight > testObjHeightb) {
	var btns = new Array();
	for (var i=0;i<nav.length;i++)
		{
		var btnimage = document.createElement("img");
		btnimage.setAttribute("src", "/images/" + nav[i]);
		btnimage.id = navId[i];
		btns.push(btnimage);
		parent.insertBefore(btnimage,scrollcontainer);
		};
	}	
//  set on click handler for top and bottom		
	var botBut = document.getElementById("btnEnd");
	var goToBot = function(){ 
		obj[0].style.top = "-" + (obj[0].offsetHeight - height) + "px";
    };
    YAHOO.util.Event.addListener(botBut, 'click', goToBot );

	var topBut = document.getElementById("btnReset");
	var goToTop = function(){obj[0].style.top = "0px"; 
     };
YAHOO.util.Event.addListener(topBut, 'click', goToTop );
	
	btns[0].onmouseover = function(){
		obj[0].up = true;
		this.className = "over";
	};
	btns[0].onmouseout = function(){
		obj[0].up = false;
		this.className = "";
	};
	
	btns[1].onmouseover = function(){
		obj[0].down = true;
//alert("down");
		className = "over";		
	};
	btns[1].onmouseout = function(){
		obj[0].down = false;
		this.className = "";
	};		
	
	btns[1].onmouseout = function(){
		obj[0].down = false;
		this.className = "";
	};
		
	btns[0].onmousedown = btns[1].onmousedown = function(){
		obj[0].fast = true;
	};	
	btns[0].onmouseup = btns[1].onmouseup = function(){
		obj[0].fast = false;
	};		

	btns[2].onmouseover = function(){ 	
		this.className = "over";
	};	
	btns[2].onmouseout = function(){ 		
		this.className = "";
	};		
	btns[3].onmouseover = function(){ 		
		this.className = "over";
	};	
	btns[3].onmouseout = function(){ 		
		this.className = "";
	};		

checkScroll = function()
	{
	  var newTop;
		var objHeight = obj[0].offsetHeight;
		var top = obj[0].offsetTop;
		var fast = (obj[0].fast) ? 2 : 1;
		if(obj[0].down){
			newTop = ((objHeight+top) > height) ? top-(speed*fast) : top;	
			obj[0].style.top = newTop + "px";
		};	
		if(obj[0].up){	
			newTop = (top < 0) ? top+(speed*fast) : top;
			obj[0].style.top = newTop + "px";
	    	};
      };
		
    obj[0].interval = setInterval("checkScroll()",50);				

		
//  end of moreText function		
};
		
//
//  build image number buttons
//	
	var buildNav = function() {
	var ul = document.createElement('UL');	
	var li = document.createElement('LI');
	var a = document.createElement('A');

//  build caption for first slide
//  create paragraph tag from item atributes	 for current image -  caption
	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;
		}
// end of caption

	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 txt		= document.createTextNode((i+1).toString());
			a.appendChild(txt);
			a.setAttribute('href', '#');
			li.appendChild(a);
			items[i].link	= ul.appendChild(li);
			YAHOO.util.Event.addListener(items[i].link, 'click', STA.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');
					}
			}
		}
		container.appendChild(ul);
		}
	
	
	var show		= function(e) {   
		YAHOO.util.Event.stopEvent(e);
		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;
		}				
//   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;
 };
 return false;
	}	
	
	
	var show1		= function(e) { 
		for (i=0, l=items.length; i<l; i++)
			{if (items[i].visible) {this.index1=i;} }
		if ((this.index1 +1)  == items.length)
			{this.index1 = 0;}
		else
			{this.index1 = this.index1+1;}	
		YAHOO.util.Event.stopEvent(e);
		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.index1], {opacity: {to: 1}}, 1);
				
				outgoing.animate();
				incoming.animate();
				
				items[i].visible	= false;
				items[this.index1].visible		= true;

//  set index for caption and readmore to match image index
				captionindex=this.index1;
			    readmoreindex=0;
			}
	}	
		YAHOO.util.Dom.addClass(items[this.index1].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;
		}				
//   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;
 };


 return false;
	}
	
	
	return {
		init: init,
		callback: callback,
		show: show,
		show1: show1
	}
	
}();
