
		function changeColor(tableCellRef,color) {
			tableCellRef.style.backgroundColor = '#'+color+'';
		}
		function goURL(url) {
			window.location = url;
		}
		function getElementsByClassName(className, tag, elm){
			var testClass = new RegExp("(^|\\\\s)" + className + "(\\\\s|$)");
			var tag = tag || "*";
			var elm = elm || document;
			var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
			var returnElements = [];
			var current;
			var length = elements.length;
			for(var i=0; i<length; i++){
				current = elements[i];
				if(testClass.test(current.className)){
					returnElements.push(current);
				}
			}
			return returnElements;
		}


		function more(item,cssOn,cssOff) {
			var onArr = new Array();
			var offArr = new Array();
			onArr = getElementsByClassName(cssOn,"*",document);
			offArr = getElementsByClassName(cssOff,"*",document);
			if(onArr.length > offArr.length)
			{
				for(i=0;i<onArr.length;i++) onArr[i].className = cssOff;
				document.getElementById(item).innerHTML = "&raquo;&nbsp;View More";
			} else {
				for(i=0;i<offArr.length;i++) offArr[i].className = cssOn;
				document.getElementById(item).innerHTML = "&raquo;&nbsp;View Less";
			}
		}


    
    /*global variables*/
    var curTab=0;
    var delay;
    var totalTabs;
    var intv=0;
    var tileContainer = 250;
    var tileWidth = 160;
    /*padding for nav tiles*/
    var tpt = 2;
    var tpl = 2;
    var tpb = 2;
    var tpr = 2;
    var onColor = '#999999';
    var offColor = '#444444';
    var onClass = 'navTileOn';
    var offClass = 'navTile';
    
    //status
    var playing=false;
    var firstElement=false;
    var imgLoading=false;
    var ie = (document.all)?true:false;
    var opera = (navigator.userAgent.indexOf("Opera")!=-1)?true:false;
    var xmlDoc;
    var arrImg = new Array();
    var arrImgLink = new Array();
    var arrTitle = new Array();
    var arrTeaser = new Array();
    var arrSummary = new Array();
    var arrLink = new Array();
    
    //PRELOAD IMAGES---------------------------------------------------------
    function ImagePreload( p_aImages, p_pfnFinished )
	{   // Call-back routines
	this.m_pfnFinished = p_pfnFinished;

	// Class Member Vars
	this.m_nLoaded = 0;
	this.m_nProcessed = 0;
	this.m_aImages = new Array;
	this.m_nICount = p_aImages.length;

	// Preload Array of Images
	for( var i = 0; i < p_aImages.length; i++ )
		this.Preload( p_aImages[i] );
	}

	ImagePreload.prototype.Preload = function( p_oImage )
	{   var oImage = new Image;
	this.m_aImages.push( oImage );

	oImage.onload = ImagePreload.prototype.OnLoad;
	oImage.onerror = ImagePreload.prototype.OnError;
	oImage.onabort = ImagePreload.prototype.OnAbort;

	oImage.oImagePreload = this;
	oImage.bLoaded = false;
	oImage.source = p_oImage;
	oImage.src = p_oImage;
	}

	ImagePreload.prototype.OnComplete = function()
	{   this.m_nProcessed++;
	if ( this.m_nProcessed == this.m_nICount )
		this.m_pfnFinished();
	}

	ImagePreload.prototype.OnLoad = function()
	{   // 'this' pointer points to oImage Object
	this.bLoaded = true;
	this.oImagePreload.m_nLoaded++;
	this.oImagePreload.OnComplete();
	}

	ImagePreload.prototype.OnError = function()
	{   // 'this' pointer points to oImage Object
	this.bError = true;
	this.oImagePreload.OnComplete();
	}

	ImagePreload.prototype.OnAbort = function()
	{   // 'this' pointer points to oImage Object
	this.bAbort = true;
	this.oImagePreload.OnComplete();
	}

    function OnCompletion() {
		$("ajaxLoad").style.display='none';
		$("ajaxDiv").style.display='none';
		imgLoading=false; 
		intv=setInterval('play()',delay);
        activateTab(0);
        firstElement=true;
	}
    
       
    function loadFeaturesXML()
	{
		var url = 'spotlight.asp'
		var pars = '';
		
		var myAjax = new Ajax.Request(
			url, 
			{
				method: 'get', 
				parameters: pars, 
				onComplete: showResponse
			});
	}

	function showResponse(originalRequest)
	{
		parseDoc(originalRequest.responseXML);
	}

    function parseDoc(xmlDoc)
    {
		var numItems = xmlDoc.getElementsByTagName("features")[0].getAttribute("numItems");
		totalTabs = numItems;
        var delayTime = xmlDoc.getElementsByTagName("features")[0].getAttribute("delayTime");
        delay = delayTime;
		//dynamic fomatting
        var h = Math.floor(tileContainer/numItems);
        var p = tpt + ' ' + tpr + ' ' + tpb + ' ' + tpl;
        //account for border width
        if(h*numItems+numItems>tileContainer) {h=h-1;}
        var w = (ie&&!opera)?tileWidth:tileWidth - tpr - tpl;
        h = (ie&&!opera)?h:h - tpt - tpb;


		//get image urls to preload        
        var feature = xmlDoc.getElementsByTagName("feature");
        for(i=0;i<feature.length;i++)
        {
            arrImgLink[i] = xmlDoc.getElementsByTagName("image")[i].firstChild.nodeValue;
        }
        
        //Call preloader
        //imgLoading=true;
		//var preloader = new ImagePreload(arrImgLink, OnCompletion);
        
        for(i=0;i<feature.length;i++)
        {
            arrTitle[i] = xmlDoc.getElementsByTagName("title")[i].firstChild.nodeValue;
            arrImgLink[i] = xmlDoc.getElementsByTagName("image")[i].firstChild.nodeValue;
            //arrTeaser[i] = xmlDoc.getElementsByTagName("teaser")[i].firstChild.nodeValue;
            arrSummary[i] = xmlDoc.getElementsByTagName("summary")[i].firstChild.nodeValue;
            arrLink[i] = xmlDoc.getElementsByTagName("link")[i].firstChild.nodeValue;
            //Create image nodes
            imgNode = Builder.node('div',{id:'img'+i,className:'mainImage',style:'background-image:url('+arrImgLink[i]+');',
				onclick:'goURL(\''+arrLink[i]+'\');'});
			imgNode = $(imgNode);
            Element.hide(imgNode);
            $("mainImage").appendChild(imgNode);
            
            footerNode = Builder.node('div',{id:'imgFooter'+i,className:'imgFooter',onclick:'goURL(\''+arrLink[i]+'\');'},
            [Builder.node('div',{id:'imgSubFooter'+i},
				[Builder.node('span',{id:'footTitle'+i,className:'footTitle'}),
				Builder.node('br'),
				Builder.node('span',{id:'footSummary'+i,className:'footTeaser'}),
				])
			]);
			
			footerNode = $(footerNode);
            Element.hide(footerNode);
            $("mainImage").appendChild(footerNode);
            
            //Create nav nodes
            navNode = Builder.node('div',{id:'nav'+i,className:'navTile',style:'height:'+h+'px;width:'+w+'px;padding:'+p+';',
				onmouseover:'Element.removeClassName(\'nav'+i+'\',offClass);Element.addClassName(\'nav'+i+'\',onClass);',
				onmouseout:'if(curTab!='+i+'){Element.removeClassName(\'nav'+i+'\',onClass);Element.addClassName(\'nav'+i+'\',offClass);}',
				onclick:'activateTab(\''+i+'\',1);'
				},[
				Builder.node('div',{style:'height:'+h+'px;width:'+w-12+'px;margin-left:6px;padding-top:6px;padding-right:6px;'},[
				Builder.node('span',{className:'navTileTitle'},arrTitle[i]),
				//Builder.node('br'),
				//Builder.node('span',{className:'navTileTeaser'},arrTeaser[i]),
				])
            ]);

            $("navTileContainer").appendChild(navNode);
        }
        //finished loading
        
        //Call preloader
        //imgLoading=true;
		//var preloader = new ImagePreload(arrImgLink, OnCompletion);
		$("ajaxLoad").style.display='none';
		$("ajaxDiv").style.display='none';
		imgLoading=false; 
		intv=setInterval('play()',delay);
        activateTab(0);
        firstElement=true;
    }

	function goURL(url) {
		window.location = url;
	}
	
	var myGlobalHandlers = {
		onCreate: function(){ $("mainImage").style.backgroundImage='d500.jpg'; },

		onComplete: function() {
			if(Ajax.activeRequestCount == 0){
				//Element.hide('mainImageOff');
				//Element.show('mainImage')
			}
		}
	};

	//Ajax.Responders.register(myGlobalHandlers);
	
	function showFailureMessage() {   
alert("oops...we seem to be having some trouble loading a portion of the page.  Try again soon.");    
} 
	
	Ajax.Responders.register({   
        onCreate: function(request) {   
            request['timeoutId'] = window.setTimeout(   
            function() {   
                // If we have hit the timeout and the <acronym title="Asynchronous Javascript And XML">AJAX</acronym> request is active, abort it and let the user know   
                var inProgress;
                switch (request.transport.readyState) {   
                    case 1: case 2: case 3:   
                        inProgress=true;   
                        break;   
                    // Case 4 and 0   
                    default:   
                        inProgress=false;   
                    break;   
                } 
                if (inProgress) {   
                request.transport.abort();   
                alert("oops...we seem to be having some trouble loading a portion of the page.  Try again soon.");   
                    // Run the onFailure method if we set one up when creating the <acronym title="Asynchronous Javascript And XML">AJAX</acronym> object   
                    if (request.options['onFailure']) {   
                    request.options['onFailure'](request.transport, request.json);   
                    }   
                }   
            },   
            10000 // Ten seconds   
            );   
            },   
            onComplete: function(request) {   
                // Clear the timeout, the request completed ok   
                window.clearTimeout(request['timeoutId']);   
            }   
    }); 
	
	
	function activateTab(i,isClick)
	{
	    if(isClick==1)
	    {
	        playing=false;
	        clearInterval(intv);
	        curTab=i;
	        Element.update('pausebtn','play');
	    }
	    for(j=0;j<totalTabs;j++)
	    {
	        Element.removeClassName('nav'+j,onClass);
	        Element.addClassName('nav'+j,offClass);
	        Element.hide('img'+j);
	        Element.hide('imgFooter'+j);
	        Element.hide('footTitle'+j);
	        Element.hide('footSummary'+j);
	    }
	    Element.update('footTitle'+i,arrTitle[i]);
	    Element.update('footSummary'+i,arrSummary[i]);
	    Effect.Appear('img'+i, {duration:0.4});
	    //Effect.BlindDown('img'+i, {duration:0.4});
	    //Element.show('img'+i);
	    Effect.Appear('imgFooter'+i, {duration:1.0, from:0.0, to:.7});
	    Effect.Appear('footTitle'+i, {duration:1.0, from:0.0, to:1.0});
	    Effect.Appear('footSummary'+i, {duration:1.0, from:0.0, to:1.0});
	    //Element.show('imgFooter'+i);
	    //Element.show('footTitle'+i);
	    //Element.show('footSummary'+i);
	    //Event.observe('nav'+i,'onmouseover',stopEvent);
	    //Event.observe('nav'+i,'onmouseout',stopEvent);
	    Element.removeClassName('nav'+i,offClass);
	    Element.addClassName('nav'+i,onClass);
	}
	
	function play()
	{
	    firstElement=false;
        if(curTab==totalTabs-1) { curTab=0; }
        else { curTab++; }
        activateTab(curTab);
	    if(!playing) { playing=true; }
	}
	
	function pause()
	{
	    if(!firstElement)
	    {
	        if(playing)
	        {
	            playing=false;
	            clearInterval(intv);
	            Element.update('pausebtn','play');
	        }
	        else
	        {
	            playing=true;
	            intv=setInterval('play()',delay);
	            Element.update('pausebtn','pause');
	        }
	    }
	    else
	    {
	        clearInterval(intv);
	        Element.update('pausebtn','play');
	        firstElement=false;
	    }
	}
	
	/*1 to go forward, -1 to go back*/
	function next(dir)
	{
	    playing=false;
	    clearInterval(intv);
	    if(dir==1)
	    {
	        if(curTab==totalTabs-1) { curTab=0; }
            else { curTab++; }
        }
        else if(dir==-1)
        {
            if(curTab==0) { curTab=totalTabs-1; }
            else { curTab--; }
        }
        activateTab(curTab);
        Element.update('pausebtn','play');
	}
	
	function loadFeatures()
	{
	    loadFeaturesXML();
	}
	
	
	//window.onload = loadFeatures;
	//Load function
	    // Dean Edwards/Matthias Miller/John Resigfunction 
    	function init()
        {
        // quit if this function has already been called
        if (arguments.callee.done) return;
        // flag this function so we don’t do the same thing twice
        arguments.callee.done = true;
        // kill the timer
        if (_timer) clearInterval(_timer);
        //do stuff
        loadFeatures();
        }/* for Mozilla/Opera9 */
        if (document.addEventListener) {
        document.addEventListener("DOMContentLoaded", init, false);}
        /* for Internet Explorer */
        /*@cc_on @*/

        /* for Safari */
        if (/WebKit/i.test(navigator.userAgent)) {
            //alert("safari in use");
        // sniff
        var _timer = setInterval(function() {
        if (/loaded|complete/.test(document.readyState)) {
        init();
        // call the onload handler
        }
        }, 10);
        }
        /* for other browsers */
        window.onload = init;

    
