function slideshow()
{       
	this.page = 1;
    this.last_page = 1;
    this.pages = 0;
	this.xml = '';

	this.load_xml = function(xml)
    {	
        var urlString = '';
        var myConn = new XHConn();
        if (!myConn) alert("XMLHTTP not available. Try a newer/better browser.");
        
        var fnWhenDone = function(oXML){ slide.xml2obj(oXML.responseText); slide.load_buttons(); slide.load_slides(); }

        myConn.connect("includes/"+xml, "GET", urlString, fnWhenDone);
    }
    
    this.xml2obj = function(xml)
    {
    	this.xml = xml2json.parser(xml);
    }
    
    this.load_buttons = function()
    {
    	var buttons = document.getElementById('buttons');
        
    	sections = slide.xml.sections.section;
        
    	//remove prev
        document.getElementById('prev').className = 'nocursor';
        document.getElementById('prev').onclick = function(){ return false; };
        document.getElementById('prev').src = 'images/scl_arrow_left_off.gif';
        
        //next
        document.getElementById('next').className = 'cursor';
	    document.getElementById('next').onclick = function(){ slide.next(); };
        
        this.page = 1;
        this.pages = Math.ceil(sections.length / 4);
        
    	//load buttons
        for(var i = 1; i <= this.pages; i++)
        {
        	var img = document.createElement('img');
            	img.src = (i == 1 ? 'images/scl_'+i+'_on.gif' : 'images/scl_'+i+'.gif');
                img.num = i; 
                img.id = 'img_'+i;
                img.style.border = 0;
                img.style.cursor = 'pointer';
                img.onclick = function(){ slide.goto(this.num); }
                
           	var li = document.createElement('li');
            	li.appendChild(img);

            buttons.insertBefore(li, document.getElementById('next').parentNode);
		}
    }
    
    this.load_slides = function()
    {
    	sections = slide.xml.sections.section;
        
    	var slides = document.getElementById('slides');

    	//load slides
        var start = (parseInt(this.page)-1)*4;
        var end  = start+4;
        
        for(var i = start; i < end; i++)
        {
        	var div = document.createElement('div');
            	div.className = 'slide';
                
                var h3 = document.createElement('h3');
                    h3.innerHTML = sections[i].title;
                
                var descr = sections[i].descr;
                	descr = descr.replace(/\[/g, '<');
                    descr = descr.replace(/\]/g, '>');

                var p = document.createElement('p');
                    p.innerHTML = descr;
                    
                var a = document.createElement('a');
                    a.href = sections[i].learn_more;
                    
                var img = document.createElement('img');
                    img.src = 'images/learn_more.gif';
                    
                    a.appendChild(img);

				var photo_a = document.createElement('a');
                    photo_a.href = sections[i].learn_more;
					photo_a.className ='img';
                        
                var photo = document.createElement('img');
                    photo.src = sections[i].image;
                    photo.onclick = function(){ location.href = sections[i].learn_more; }

					photo_a.appendChild(photo);
            
            div.appendChild(h3);
            div.appendChild(p);
            div.appendChild(a);
            div.appendChild(photo_a);
            
			slides.appendChild(div);
		}
    }
    
    this.clear_slides = function()
    {
    	var buttons = document.getElementById('slides').getElementsByTagName('div');
        var button_len = buttons.length;
        
        for(var i = 1; i <= button_len; i++)
        {
        	document.getElementById('slides').removeChild(buttons[0]);
        }
    }
    
    this.load_page = function(page)
    {
    	var urlString = '';
        var myConn = new XHConn();
        if (!myConn) alert("XMLHTTP not available. Try a newer/better browser.");
        
        var fnWhenDone = function(oXML){ document.getElementById('content').innerHTML = oXML.responseText; }

        myConn.connect("_pages/"+page, "GET", urlString, fnWhenDone);
    }
}

function prev()
{  
    slide.goto(this.page - 1);
}

function next()
{
	slide.goto(this.page + 1);
}

function goto(num)
{    
	this.page = num;
    slide.clear_slides();
	slide.load_slides();
    
    //set buttons
    document.getElementById('img_'+this.last_page).src = 'images/scl_'+this.last_page+'.gif';
    document.getElementById('img_'+this.page).src = 'images/scl_'+this.page+'_on.gif';
    
    this.last_page = num;
    
    
    //adjust prev and next buttons
    if( parseInt(this.page) - 1 <= 0 ) //prev
    {
        document.getElementById('prev').className = 'nocursor';
        document.getElementById('prev').onclick = function(){ return false; };
        document.getElementById('prev').src = 'images/scl_arrow_left_off.gif';
    }
    else
    {
    	document.getElementById('prev').className = 'cursor';
    	document.getElementById('prev').onclick = function(){ slide.prev(); };
        document.getElementById('prev').src = 'images/scl_arrow_left.gif';
    }
    
    if( parseInt(this.page) + 1 > this.pages ) //next
    {
        document.getElementById('next').className = 'nocursor';
        document.getElementById('next').onclick = function(){ return false; };
        document.getElementById('next').src = 'images/scl_arrow_right_off.gif';
    }
    else
    {
    	document.getElementById('next').className = 'cursor';
    	document.getElementById('next').onclick = function(){ slide.next(); };
        document.getElementById('next').src = 'images/scl_arrow_right.gif';
    }
}

slideshow.prototype.prev   = prev;
slideshow.prototype.next   = next;
slideshow.prototype.goto   = goto;

var slide = new slideshow();
if(window.attachEvent)
{
    window.attachEvent("onload",function(){
	slide.load_xml('xml.slideshow.php');
    });
}
else
{
    window.addEventListener("load", function(){ 
	slide.load_xml('xml.slideshow.php');
    },false);
}