
/*
    Portions of this file are the JavaScript zXml Library described below
    Portions are UMSS routines to interface the library with the EVIPRO
*/
/*------------------------------------------------------------------------------
 * JavaScript zXml Library
 * Version 1.0.2
 * by Nicholas C. Zakas, http://www.nczonline.net/
 * Copyright (c) 2004-2006 Nicholas C. Zakas. All Rights Reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation; either version 2.1 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 *------------------------------------------------------------------------------
 */  

 
var zXml /*:Object*/ = {
    useActiveX: (typeof ActiveXObject != "undefined"),
    useDom: document.implementation && document.implementation.createDocument,
    useXmlHttp: (typeof XMLHttpRequest != "undefined")
};

zXml.ARR_XMLHTTP_VERS /*:Array*/ = ["MSXML2.XmlHttp.6.0","MSXML2.XmlHttp.3.0"];

zXml.ARR_DOM_VERS /*:Array*/ = ["MSXML2.DOMDocument.6.0","MSXML2.DOMDocument.3.0"];
                   
/**
 * Static class for handling XMLHttp creation.
 * @class
 */                     
function zXmlHttp() {
}

/**
 * Creates an XMLHttp object.
 * @return An XMLHttp object.
 */
zXmlHttp.createRequest = function ()/*:XMLHttp*/ {

    //if it natively supports XMLHttpRequest object
    if (zXml.useXmlHttp) {
        return new XMLHttpRequest();
    } else if (zXml.useActiveX) { //IE < 7.0 = use ActiveX
  
        if (!zXml.XMLHTTP_VER) {
            for (var i=0; i < zXml.ARR_XMLHTTP_VERS.length; i++) {
                try {
                    new ActiveXObject(zXml.ARR_XMLHTTP_VERS[i]);
                    zXml.XMLHTTP_VER = zXml.ARR_XMLHTTP_VERS[i];
                    break;
                } catch (oError) {                
                }
            }
        }
        
        if (zXml.XMLHTTP_VER) {
            return new ActiveXObject(zXml.XMLHTTP_VER);
        } else {
            throw new Error("Could not create XML HTTP Request.");
        }
    } else {
        throw new Error("Your browser doesn't support an XML HTTP Request.");
    }

};

/**
 * Indicates if XMLHttp is available.
 * @return True if XMLHttp is available, false if not.
 */
zXmlHttp.isSupported = function ()/*:Boolean*/ {
    return zXml.useXmlHttp || zXml.useActiveX;
};


/*
    EVIPRO Additions to AJAX
*/

var ajaxCalls = new Array();
var lastcontent;

function ajaxEVIPRO(idcontent,element,callback,var1,var2)
    {
    var params="";
    var arglength=arguments.length;
    if (arguments.length < 2)
        {
        alert("ajaxEVIPRO reqEVIPROs 2, 3, 5, 7, 9, ... arguments!");
        return;
        }
    if (arguments.length > 3)
        {
        if (Math.floor(arguments.length/2)*2 == arguments.length)
            {
            alert("ajaxEVIPRO requires 2, 3, 5, 7, 9, ... arguments!");
            return;
            }
        for (var i=3;i<arguments.length;i+=2)
            {
            params=params+"/"+arguments[i]+"/"+arguments[i+1];
            }
        } 
objurl = "/AJAX/e/"+element+params+"/tt/"+new Date().getTime();
//alert(objurl);
//window.open(objurl,null);
        ajaxCalls[idcontent]=zXmlHttp.createRequest();
        ajaxCalls[idcontent].open("GET",objurl,true);
        ajaxCalls[idcontent].onreadystatechange = function ()
        {
        if (ajaxCalls[idcontent].readyState == 4)
            {
            if (ajaxCalls[idcontent].status == 200)
                {
                 obj=document.getElementById(idcontent);
                result = ajaxCalls[idcontent].responseText;
                // obj.innerHTML= ajaxCalls[idcontent].responseText;
                obj.innerHTML= result;
                evalScripts( result );
                lastcontent=ajaxCalls[idcontent].responseText;
                if ((arglength > 2) && callback)
                    callback();
                }
            else{
                //alert("An error occurred: " + ajaxCalls[idcontent].statusText);
			}
            }
        };
    ajaxCalls[idcontent].send(null);
    }

    function evalScripts(scripts)
    {    try
        {    if(scripts != ' ')    
            {    var script = "";
                scripts = scripts.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi, function(){
                                            if (scripts !== null) script += arguments[1] + '\n';
                                             return ' ';});
                if(script) (window.execScript) ? window.execScript(script) : window.setTimeout(script, 0);
            }
            return false;
        }
        catch(e)
        {    alert(e)
        }
    }

    


