
/****** Hide/Show a div by id *****/
function shdiv(divid,divstate){
    if (document.getElementById)
    {
        document.getElementById(divid).style.visibility = divstate;
    }
    else 
    {
        document[divid].visibility = divstate;
    }
}

// holds an instance of XMLHttpRequest
var xmlHttp = createXmlHttpRequestObject();

// creates an XMLHttpRequest instance
function createXmlHttpRequestObject()
{ 
    // will store the reference to the XMLHttpRequest object
    var xmlHttp;
    // this should work for all browsers except IE6 and older
    try
    {
        // try to create XMLHttpRequest object
        xmlHttp = new XMLHttpRequest();
    }
    catch(e)
    {
        // assume IE6 or older
        var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
                                                                    "MSXML2.XMLHTTP.5.0",
                                                                    "MSXML2.XMLHTTP.4.0",
                                                                    "MSXML2.XMLHTTP.3.0", 
                                                                    "MSXML2.XMLHTTP", 
                                                                    "Microsoft.XMLHTTP");
        // try every prog id until one works
        for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++)
        {
            try
            { 
                // try to create XMLHttpRequest object 
                xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
            }
            catch (e) {} 
        }
    }
    // return the created object or display an error message
    if (!xmlHttp)
        alert("Error creating the XMLHttpRequest object.");
    else
        return xmlHttp;
}

// called to read a file from the server
function process()
{ 
    // only continue if xmlHttp isn't void
    if (xmlHttp)
    { 
        // try to connect to the server
        try
        {
            // initiate reading the async.txt file from the server
            xmlHttp.open("GET", "quotes.xml", true);
            xmlHttp.onreadystatechange = handleRequestStateChange;
            xmlHttp.send(null);
        }
        // display the error in case of failure
        catch (e)
        {
            alert("Can't connect to server:\n" + e.toString());
        }
    }
}

// function called when the state of the HTTP request changes
function handleRequestStateChange()
{
    // when readyState is 4, we are ready to read the server response
    if (xmlHttp.readyState == 4)
    { 
        // continue only if HTTP status is "OK" 
        if (xmlHttp.status == 200)
        {
            try
            { 
                // do something with the response from the server
                handleServerResponse();
            }
            catch(e)
            { 
                // display error message
                alert("Error reading the response: " + e.toString());
            }
        }
        else
        {
            // display status message
            alert("There was a problem retrieving the data:\n" +               xmlHttp.statusText);
        }
    }
}

function getRandom(min,max)
{
    return (Math.round(Math.random()*(max-min)))+min;
}

function rotate() { /*  initializes the rotate function */
    
        process();
        setTimeout("rotate()", 15000);
    
}


// handles the response received from the server
function handleServerResponse()
{ 
    // read the message from the server
    var xmlResponse = xmlHttp.responseXML;
    // catching potential errors with IE and Opera
    if (!xmlResponse || !xmlResponse.documentElement)
        throw("Invalid XML structure:\n" + xmlHttp.responseText);
    // catching potential errors with Firefox
    var rootNodeName = xmlResponse.documentElement.nodeName;
    if (rootNodeName == "parsererror")
        throw("Invalid XML structure:\n" + xmlHttp.responseText);
    // obtain the XML's document element
    xmlRoot = xmlResponse.documentElement;
    // obtain arrays with book titles and ISBNs
    titleArray = xmlRoot.getElementsByTagName("description");
    isbnArray = xmlRoot.getElementsByTagName("people");
    // generate HTML output 
    var quote;
    var num = getRandom(0,titleArray.length-1);
    
    // iterate through the arrays and create an HTML structure
    //for (var i=0; i<titleArray.length; i++)
        quote = "<p class=body_italic style=\"width: 480px; text-align: center; margin: 2px;\">\"" + titleArray.item(num).firstChild.data + "\"</p><p class=bodytext style=\"font-size: 10pt; text-align: center; margin-top: 1px; padding-top: 0px;\">" + isbnArray.item(num).firstChild.data + "</p>";
    
    // obtain a reference to the <div> element on the page
    myDiv = document.getElementById("myDivElement"); 
    // display the HTML output
    myDiv.innerHTML = quote;
}  

function findPos(obj) {
        var curleft = curtop = 0;
        if (obj.offsetParent) {
                curleft = obj.offsetLeft
                curtop = obj.offsetTop
                while (obj = obj.offsetParent) {
                        curleft += obj.offsetLeft
                        curtop += obj.offsetTop
                }
        }
        return [curleft,curtop];
}
