﻿/*************************JAVASCRIPT ROTATING IMAGES****************************\
This file contains the initiating function for rotating images as well as the 
ajax functions required to retrieve image data. This script works in union with
the following four scripts to create multiple rotating images on one page:
       -RIclass.js   -preLoader.js   -Tween.js   -OpacityTween.js
\******************************************************************************/

var numRIs; //RI count
var RIs = new Array(); //array to hold RI objects
var req = null; //XMLHttpRequest/ActiveX Object
var browser = null; //browser indicator: 0 = IE / 1 = Firefox/Other

//timer values = period between image changes
var timers = new Array(); timers[0] = 5; timers[1] = 4;


/**************Initiation Functions****************/

function initRIs(howmany){//initiate RI objects and retrieval of data from xml file 
    
    numRIs = howmany;
    
    
    for(var i = 0; i < numRIs; i++)
    {
        RIs[i] = new imageRotator(i, "loadBar_"+i, "RILink_"+i, "RIcontrols_"+i, "IMAGE_"+i, timers[i]);
    }
    
    req = getXMLHttpObject();
        
    switch(browser){//serperate function calls for each browser (IE/Firefox)
        case 0: req.onreadystatechange=grabData0;
                req.load("RI/RIcontent.xml"); break; 
        case 1: req.onreadystatechange=grabData1; 
                req.open("GET", "RI/RIcontent.xml", true); 
                req.send(null); break;
        case 3: alert("Javascript: Error Loading Content");break;}
}


/****************AJAX Functions*******************/

function grabData0(){//IE ajax function
    if (req.readyState==4)
    { 
        req.setProperty("SelectionLanguage", "XPath");
                
        var i;
        var xmlDoc = req.documentElement;
        var dataHolder = new Object();   
        var node;    
        var tempArray = new Array();
        
        for(var i = 0; i < numRIs; i++)
        {
            strXpathExp = "/RIContent/RI[@id='" + i + "']/Image/@src";
            dataHolder = xmlDoc.selectNodes(strXpathExp); 
            node = dataHolder.nextNode();
            for(var j = 0; j < dataHolder.length; j++)
            {tempArray.push(node.text);
            node = dataHolder.nextNode();}
            
            RIs[i].paths = tempArray;
            
            tempArray = new Array();
            
            strXpathExp = "/RIContent/RI[@id='" + i + "']/Image/@name";
            dataHolder = xmlDoc.selectNodes(strXpathExp); 
            
            node = dataHolder.nextNode();
            for(var j = 0; j < dataHolder.length; j++)
            {tempArray.push(node.text);
            node = dataHolder.nextNode();}
            RIs[i].names = tempArray;
            
            tempArray = new Array();
            strXpathExp = "/RIContent/RI[@id='" + i + "']/Image/@link";
            dataHolder = xmlDoc.selectNodes(strXpathExp); 
            
            node = dataHolder.nextNode();
            for(var j = 0; j < dataHolder.length; j++)
            {tempArray.push(node.text);
            node = dataHolder.nextNode();}
            RIs[i].urls = tempArray;
            tempArray = new Array();
            
            tempArray = new Array();
            strXpathExp = "/RIContent/RI[@id='" + i + "']/Image/@target";
            dataHolder = xmlDoc.selectNodes(strXpathExp); 
            
            node = dataHolder.nextNode();
            for(var j = 0; j < dataHolder.length; j++)
            {tempArray.push(node.text);
            node = dataHolder.nextNode();}
            RIs[i].targets = tempArray;
            
            RIs[i].preload();
        }        
        req.close;
    }
}

function grabData1(){//Mozilla ajax function
    var i = 0;
    var strXpathExp;
    var xmlDoc = req.responseXML;
    var dataSnapShot = new Object();
    var nsResolver = new Object();
    var tempArray = new Array();
    if (req.readyState==4)
    {              
        for(var i = 0; i < numRIs; i++)
        {    
            strXpathExp = "/RIContent/RI[@id='" + i + "']/Image/@src";
            nsResolver = xmlDoc.createNSResolver( xmlDoc.ownerDocument == null ? xmlDoc.documentElement : xmlDoc.ownerDocument.documentElement);
            dataSnapShot = xmlDoc.evaluate(strXpathExp, xmlDoc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null );
            for (var j=0 ; j < dataSnapShot.snapshotLength; j++ )
            {tempArray.push( dataSnapShot.snapshotItem(j).textContent );}
            
            RIs[i].paths = tempArray;
            tempArray = new Array();
            
            strXpathExp = "/RIContent/RI[@id='" + i + "']/Image/@name";
            nsResolver = xmlDoc.createNSResolver(xmlDoc.ownerDocument == null ? xmlDoc.documentElement : xmlDoc.ownerDocument.documentElement);
            dataSnapShot = xmlDoc.evaluate(strXpathExp, xmlDoc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null );
            for (var j=0 ; j < dataSnapShot.snapshotLength; j++ )
            {tempArray.push( dataSnapShot.snapshotItem(j).textContent );} 
            RIs[i].names = tempArray;
            
            tempArray = new Array();           
            strXpathExp = "/RIContent/RI[@id='" + i + "']/Image/@link";
            nsResolver = xmlDoc.createNSResolver( xmlDoc.ownerDocument == null ? xmlDoc.documentElement : xmlDoc.ownerDocument.documentElement);
            dataSnapShot = xmlDoc.evaluate(strXpathExp, xmlDoc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null );
            for (var j=0 ; j < dataSnapShot.snapshotLength; j++ )
            {tempArray.push( dataSnapShot.snapshotItem(j).textContent );}
            RIs[i].urls = tempArray;
            
            tempArray = new Array();
            strXpathExp = "/RIContent/RI[@id='" + i + "']/Image/@target";
            nsResolver = xmlDoc.createNSResolver( xmlDoc.ownerDocument == null ? xmlDoc.documentElement : xmlDoc.ownerDocument.documentElement);
            dataSnapShot = xmlDoc.evaluate(strXpathExp, xmlDoc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null );
            for (var j=0 ; j < dataSnapShot.snapshotLength; j++ )
            {tempArray.push( dataSnapShot.snapshotItem(j).textContent );}
            RIs[i].targets = tempArray;
            
            RIs[i].preload();
        }
        req.close;
      }
}

function getXMLHttpObject(){//determine browser and apply correct XMLHttpRequest/activeXobject
    var xmlHttp = null;
    var browserName = navigator.appName;
    
    if(browserName == "Netscape")
    {
        try
        {xmlHttp = new XMLHttpRequest(); browser = 1;}
        catch(e)
        {browser = 3;}
    }
    else if(browserName == "Microsoft Internet Explorer")
    {
        try//IE new
        {xmlHttp = new ActiveXObject("MSXML2.DOMDocument.6.0"); browser = 0;}
        catch (e)
        {
            try//IE old
            {xmlHttp = new ActiveXObject("MSXML2.DOMDocument.3.0"); browser = 0;}
            catch (e)
            {browser = 3;}
        }
    }
      
    return xmlHttp;
}