// retrieve XML document (reusable generic function);
// parameter is URL string (relative or complete) to
// an .xml file whose Content-Type is a valid XML
// type, such as text/xml; XML source must be from
// same domain as HTML file
function loadXMLDoc(url) {
    new Ajax.Request(url, {
        method: 'get',
        onSuccess: InitializeRotation,
        onFail: xhrError
    });
}


// retrieve text of an XML document element, including
// elements using namespaces
function getElementTextNS(prefix, local, parentElem, index) {
    var result = "";
    if (prefix && isIE) {
        // IE/Windows way of handling namespaces
        result = parentElem.getElementsByTagName(prefix + ":" + local)[index];
    } else {
        // the namespace versions of this method 
        // (getElementsByTagNameNS()) operate
        // differently in Safari and Mozilla, but both
        // return value with just local name, provided 
        // there aren't conflicts with non-namespace element
        // names
        result = parentElem.getElementsByTagName(local)[index];
    }
    if (result) {
        // get text, accounting for possible
        // whitespace (carriage return) text nodes 
        if (result.childNodes.length > 1) {
            return result.childNodes[1].nodeValue;
        } else {
            return result.firstChild.nodeValue;         
        }
    } else {
        return "n/a";
    }
}

// global flag
var isIE = false;

// global request and XML document objects
var req;
 
//
// Work our way through the xml and start rotating the images.
//

var grouparray;	// array of groups. Get count by grouparray.length
var currentgroup = 0;	// current group counter.

var currentdrawitem = 0;
var currentclearitem = 0;
var nextfunctioninterval;

var draworder = new Array();
draworder[0] = new Array(1,2,3,4,5,6,7,8,9);

var longpause = 5100;
var shortpause = 270;

var largeimageurl;
var largeimagelink;

var hover = 0;


function InitializeRotation(req){

	// Collect Array of DisplayGroup Entities

	grouparray = req.responseXML.getElementsByTagName('displaygroup');
	currentgroup = Math.floor(Math.random() * grouparray.length);

	largeimageurl = getElementTextNS("", "largeimage", grouparray[currentgroup], 0);
	largeimagelink = grouparray[currentgroup].getElementsByTagName('largeimage')[0].getAttribute('url');

    $('marquee').setStyle({backgroundImage: 'url(' + largeimageurl + ')'});

	ClearSmallImage(1); // This will set up links for the back image and we can get into the flow; ClearSmallImage will call DrawSmallImage, etc.

}


function DrawSmallImage(init){

	if (init){
		currentdrawitem = 0;
		randomval = Math.floor(Math.random() * draworder.length);
		localdraworder = draworder[randomval];
	}
	
	
	element = $('area' + localdraworder[currentdrawitem]);

	var smallimagearray = grouparray[currentgroup].getElementsByTagName('smallimage');
	var imageurl = smallimagearray[currentdrawitem].firstChild.nodeValue;
	var imagelink = smallimagearray[currentdrawitem].getAttribute('url');
	
	element.innerHTML = '<a href="' + imagelink + '"><img border="0" src="' + imageurl + '" /></a>';
	
	if (currentdrawitem >= 8){
		nextfunctioninterval = setTimeout('ClearSmallImage(1)',longpause);
	} else {
		currentdrawitem++;
		nextfunctioninterval = setTimeout('DrawSmallImage(0)',shortpause);
	}

}


function ClearSmallImage(init){

	if (init){
		currentclearitem = 0;
		currentgroup++;
		if (currentgroup >= grouparray.length){
			currentgroup = 0;
		}
			
		largeimageurl = getElementTextNS('','largeimage',grouparray[currentgroup], 0);
		largeimagelink = grouparray[currentgroup].getElementsByTagName('largeimage')[0].getAttribute('url');
		
		element = document.getElementById('marquee');		
		element.onmouseover = '';
		element.onmouseout = '';
		element.style.backgroundImage = 'url(' + largeimageurl + ')';

		randomval = Math.floor(Math.random() * draworder.length);
		localclearorder = draworder[randomval];	
	
	}
	
	element = document.getElementById('area' + localclearorder[currentclearitem]);
	element.innerHTML = '<a href="' + largeimagelink + '"><img src="/images/frontpage_images/empty.gif" width="140" height="98" /></a>';
	
	if (currentclearitem >= 8){
		nextfunctioninterval = setTimeout('DrawSmallImage(1)',longpause);
	} else {
		currentclearitem++;
		nextfunctioninterval = setTimeout('ClearSmallImage(0)',shortpause);
	}

}


