/**
* Created by Tom Curran
* An JavaScript Ajax object
* Usage:
*   var myAjax = new Ajax();
*   myAjax.url = "/the.Relative.Url";
*   myAjax.handleResponse = function() {
*       alert("Handle your "+myAjax.request.responseTest+" here.");
*   }
*   myAjax.init();
*/
var Ajax = function(){
    this.url = "";
    this.handleResponse = function() {
        if (this.request.readyState==4) {
            alert("This AJAX script has no event handler.");
        }
    }

    this.method  = "GET";
    this.async   = true;
    this.request = null;
    this.init = function(){
        try        {
            // Firefox, Opera 8.0+, Safari
            this.request = new XMLHttpRequest();
        } catch (e) {
            // Internet Explorer
            try {
                this.request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                this.request = new ActiveXObject("Microsoft.XMLHTTP");
            }
        }
        if(this.request) {
            var self = this;
            this.request.onreadystatechange = function() {
                if (self.request.readyState==4) {
                    if(self.request.status>=300 && self.request.status<400) {
                        alert("Your session has ended.\nAny unsaved data has been lost.");
                        window.parent.location = window.parent.location;
                    } else {
                        self.handleResponse();
                    }
                }
            }
            try{
                this.request.open(this.method, this.url, this.async);
                this.request.send(null);

                if (!this.async && self.request.readyState==4) { // && this.request.onreadystatechange==null && self.request.readyState==4) { // hack for FF synchronous calls
                    self.handleResponse();
                }
            } catch(err){
                alert("Permission denied for AJAX lookup of "+this.url);
            }
        }
    }
}

function XMLTranspose(element, xsl, xml){
    if(window.xsl == null || window.xsl[element] == null){
        var xslAjax = new Ajax();
        xslAjax.url = xsl;
        xslAjax.async = false;
        xslAjax.name = element;
        xslAjax.handleResponse = function(){
            if(window.xsl == null)
                window.xsl = new Object();
            window.xsl[xslAjax.name] = xslAjax.request.responseXML;
        }
        xslAjax.init();
    }

    var myAjax = new Ajax();
    myAjax.url = xml;
    myAjax.type = element;
    myAjax.element = document.getElementById(element);
    myAjax.handleResponse = function() {
        var xml = myAjax.request.responseXML;
        if (window.ActiveXObject) {
            var ex = xml.transformNode(window.xsl[myAjax.type]);
            myAjax.element.innerHTML = ex;
        } else if (document.implementation && document.implementation.createDocument) {
            // code for Mozilla, Firefox, Opera, etc.
            xsltProcessor=new XSLTProcessor();
            xsltProcessor.importStylesheet(window.xsl[myAjax.type]);
            resultDocument = xsltProcessor.transformToFragment(xml,document);
            myAjax.element.innerHTML = "";
            myAjax.element.appendChild(resultDocument);
        }
        window.mediaRelease = new MediaRelease();
    }
    myAjax.init();
}

document.write("<span style='display:block;height:125px;overflow:hidden;'>");
document.write("<span style='display:block;'>");
document.write("    <h3 style='width:170px;float:left;'>Media Releases</h3>");
document.write("    <img onclick='mediaRelease.prev();' src='/images/prev.gif' alt='prev' style='padding:4px 2px 2px 2px;float:left;'/>");
document.write("    <img onclick='mediaRelease.play_pause();' src='/images/pause.gif' alt='pause' style='padding:4px 2px 2px 2px;float:left;' id='media_release_pause'/>");
document.write("    <img onclick='mediaRelease.next();' src='/images/next.gif' alt='next' style='padding:4px 2px 2px 2px;float:left;'/>");
document.write("</span>");
document.write("<div id='media_release'>&nbsp;</div>");
document.write("</span>");
document.write("<div class='cols3rd' style='padding-top:5px;'><ul><li><a href='/publications/news/media_releases.page'>View all Media Releases</a></li></ul></div>");
document.write("<div class='hr'>&nbsp;</div>");

XMLTranspose("media_release",
	"/templatedata/System/Metadata/presentation/rss.xsl",
	"/sites/ClaytonWWW/publications/news/media_releases.rss");

var MediaRelease = function(){
	this.next = function(){
		if(this.current >= 0){
			Effect.Fade(this.items[this.current]);
			this.current = (this.current + 1) % this.items.length;
			Effect.Appear(this.items[this.current],{delay:2});
		} else {
			this.current = 0;
		}
	}
	this.prev = function(){
		if(this.current >= 0)
			Effect.Fade(this.items[this.current]);
		if(this.current <= 0)
			this.current = this.items.length - 1;
		else
			this.current--;
		Effect.Appear(this.items[this.current]);
	}
	this.play = function(){
		this.next();
		this.timer = setTimeout("mediaRelease.play()",7000);
	}
	this.play_pause = function(){
		var div = $('media_release_pause');
		if(div.alt == "play"){
			this.play();
			div.src = "/images/pause.gif";
			div.alt = "pause";
		} else {
			clearTimeout(this.timer);
			div.src = "/images/unpause.gif";
			div.alt = "play"
		}
	}
	
	var divs = $('media_release').getElementsByTagName("div");
	this.items = new Array();
	for(var i=0; i<divs.length; i++)
	    if(divs[i].className == "media_release_item")
	        this.items.push(divs[i]);
	
	for(var i=0; i<this.items.length; i++){
		limitLines(this.items[i].getElementsByTagName("div")[0],4);
		if(i>0)
                    this.items[i].style.display="none";
	}

	this.current = -1;
	this.play();
}
