﻿// JScript File
//
// No so Simple Ajax
var requestList	= new Array();
var xmlHttpObj  = null;
var objTarget   = null;
var isActive    = false;
var s_timeout	= 500;
var tmpParam
var tmpURL
var tmpObjTarget
var tmpMessage


function simpleAjax(url, target, msg)
{
    if(!isActive)
    {
        isActive   = true;
        objTarget  = target;
        xmlHttpObj = XMLHttpRequestObj();
        
        if( typeof(xmlHttpObj) == 'object' )
        {
            xmlHttpObj.open("GET", url, true);
            xmlHttpObj.onreadystatechange = processRequest;
            xmlHttpObj.send(null);
        }
        else
        {
            isActive = false;
        }
    }
    else
    {
        handleRecall(url, target, msg);
    }
}
function recallSimpleAjax()
{
    simpleAjax(tmpURL, tmpObjTarget, tmpMessage);
}
function handleRecall(url, target, msg)
{
    requestList[target]					= new Array();
    requestList[target]["url"]          = url;
    requestList[target]["objTarget"]    = target;    
    
    for (var elem in requestList)
    {
        if( msg != "" )
        {                
            document.getElementById(elem).innerHTML = msg;
        }
        tmpURL          = requestList[elem]["url"];
        tmpObjTarget    = requestList[elem]["objTarget"];
        tmpMessage      = msg;

        setTimeout("recallSimpleAjax()",s_timeout)
        
        delete requestList[elem];
    }
}
function XMLHttpRequestObj()
{
    if (window.XMLHttpRequest)         //Handle other browsers where XMLHttpRequest function is native
    {
        return new XMLHttpRequest() ;
    }
    else
    if (window.ActiveXObject)        //handle IE or where ActiveX objects are not native
    {
        return new ActiveXObject("Microsoft.XMLHTTP"); // MSXML2.xmlHttpObj.3.0  -- Microsoft.xmlHttpObj
    }   
}
function processRequest()
{
    if (xmlHttpObj.readyState==4)
    {
        if (xmlHttpObj.status==200)
        {
            var responseXML    = xmlHttpObj.responseXML;
            var error         = null;
   
            if( responseXML.getElementsByTagName('error').length > 0 && responseXML.getElementsByTagName('error')[0].hasChildNodes() )
            {
                error        = responseXML.getElementsByTagName('error')[0].firstChild.nodeValue;
            }
            if (! error )
            {
                if( responseXML.getElementsByTagName('alert').length > 0 && responseXML.getElementsByTagName('alert')[0].hasChildNodes() )
                {
                    alert( responseXML.getElementsByTagName('alert')[0].firstChild.nodeValue );
                }
                if( typeof(objTarget) == "function" )
                {
                    objTarget(responseXML);
                }
                else
                if( objTarget )
                {
                    var obj    = document.getElementById(objTarget);
                    if( responseXML.getElementsByTagName('hideoutput').length > 0 && responseXML.getElementsByTagName('hideoutput')[0].firstChild.nodeValue == 1 )
                    {
                        obj.innerHTML = '';
                        obj.style.display = 'none';
                    }
                    else
                    {
                        obj.innerHTML = responseXML.getElementsByTagName('content')[0].firstChild.data;
                    }
                }               
                isActive = false;
            }
        }
        else
        {
            //alert("Processsing Error");
            setTimeout("recallSimpleAjax()",s_timeout);
            isActive = false;
        }
    }
}

//---------------------------------------------------------------------
// ENABLE - DISABLE THE HOURGLASS CURSOR
//---------------------------------------------------------------------
function simple_enable_wait(){
    document.body.style.cursor = 'wait';
}
function simple_disable_wait(){
    document.body.style.cursor = 'default';
}
//-->


//Example simpleAjax call
function example_callSimpleAjax(elem,id)
{
        simple_enable_wait();
        var param = ''            
        param = param + "elem=" + elem;
       
        simpleAjax('/scriptname.asp?' + param, example_returnFunc, '');        
        
        simple_disable_wait();
}
//Example return function
function example_returnFunc(responseXML)
{
    var obj;
    var elem
    if( responseXML.getElementsByTagName('element').length > 0 && responseXML.getElementsByTagName('element')[0].hasChildNodes() )
    {    
        elem = responseXML.getElementsByTagName('element')[0].firstChild.data
        obj = document.getElementById( elem+"template" )
    }        
}

//example return xml
//<%
//response.ContentType="text/xml"
//response.Write("<?xml version='1.0' encoding='UTF-8'?>")
//'response.Write("<root>")
//'response.Write("<content>")
//response.Write("<![CDATA[")
//response.Write "Session Updated - Server Time:" & now()
//response.Write("]]>")
//'response.Write("</content>")   
//%>


