﻿function ReceiveServerAck(arg, context)
{
    var args = arg.split('|');
    switch(args[0])
    {
        case "Alert":
            if(typeof setStatusImage == "function"){setStatusImage(0);}
            var str = "" + arg;
            alert(str.substring(6,str.length));
            //odaAlert(str.substring(6,str.length));
            break;
        case "Error":
            if(typeof setStatusImage == "function"){setStatusImage(2);}
            var str = "" + arg;
            eval(str.substring(6,str.length));
            break;
        case "Eval":
            if(typeof setStatusImage == "function"){setStatusImage(0);}
            var str = "" + arg;
            eval(str.substring(5,str.length));
            break;
        case "Redirect":
            if(typeof setStatusImage == "function"){setStatusImage(0);}
            var str = "" + arg;
            window.location.href = str.substring(9,str.length);
            break;
        case "NOOP":
            if(typeof setStatusImage == "function"){setStatusImage(0);}
        case "":
            if(typeof setStatusImage == "function"){setStatusImage(0);}
            break;
        default:
            if(typeof setStatusImage == "function"){setStatusImage(0);}
            var str = "" + arg;
            var len = "" + args[0];
            eval("if(typeof(" + args[0] + ") == 'function'){" + args[0] + "('" + str.substring(len.length + 1,str.length) + "','" + context + "');}");
            break;
    }
}

function CallBackError(arg, context)
{
    if(typeof setStatusImage == "function"){setStatusImage(2);}
    alert('Error: Server call back failed!\r\n' + arg);
}

//**********************************************************************************************
//**********************To Call a Different Page or Web Service**********************************
//**********************************************************************************************

var __functionName
var __passThroughContext
function processReqChange() 
{
    // only if req shows "loaded"
    if (req.readyState == 4) 
    {
        // only if "OK"
        if (req.status == 200) 
        {
			requestReturned(req, __functionName, __passThroughContext);
        }
        else 
        {
            alert("There was a problem retrieving the XML data:\n" + req.statusText);
        }
    }
}

function loadXMLDoc(url, returnFunction, context) 
{
    __functionName = returnFunction;
    __passThroughContext = context;
    req = false;
    // branch for native XMLHttpRequest object
    if(window.XMLHttpRequest && !(window.ActiveXObject)) 
    {
    	try 
    	{
			req = new XMLHttpRequest();
        }
        catch(e) 
        {
			req = false;
        }
    // branch for IE/Windows ActiveX version
    }
    else if(window.ActiveXObject) 
    {
       	try 
       	{
        	req = new ActiveXObject("Msxml2.XMLHTTP");
      	}
      	catch(e) 
      	{
        	try 
        	{
          		req = new ActiveXObject("Microsoft.XMLHTTP");
        	}
        	catch(e) 
        	{
          		req = false;
        	}
		}
    }
	if(req) 
	{
		req.onreadystatechange = processReqChange;
		req.open("GET", url, true);
		req.send("");
	}
}

function requestReturned(response,functionName,context)
{
    if(typeof setStatusImage == "function"){setStatusImage(0);}
    eval(functionName + "('" + response.responseText + "', '" + context + "');");
}


///////////////////////////////////////////////////////////////////////////////////////////
/////////       Prototype AJAX CALLS
///////////////////////////////////////////////////////////////////////////////////////////

function ajaxUpdate(IdToUpdate,url,params,onCompleteMethod,context)
{
    if(typeof setStatusImage == "function"){setStatusImage(1);}
    if(onCompleteMethod == null)
    {
        new Ajax.Updater(
            {success: IdToUpdate, failure: 'errorNotice'}
            ,url 
            ,{ /* Optional Params*/
                parameters: params
                ,evalScripts: true
                ,onComplete: function(transport){
                        if(typeof setStatusImage == "function"){setStatusImage(0);}
                    }
            }
        );
    }
    else
    {
        new Ajax.Updater(
        /* success and failure elements to update */
        {success: IdToUpdate, failure: 'errorNotice'}
        /* Ajax Service URL */
        ,url 
        ,{ /* Optional Params*/
            parameters: params
            ,evalScripts: true
             ,onComplete: function(transport){
                if(typeof setStatusImage == "function"){setStatusImage(0);}
                onCompleteMethod(transport.responseText, context);}
         }
        );
    }

    
}

function ajaxRequest(url,params,onSuccessMethod,context){
    if(typeof setStatus == "function"){setStatus(1);}
    new Ajax.Request(url, 
    { 
        method: 'post'
        ,parameters:  params
        ,onSuccess: function(transport){
            if(typeof setStatusImage == "function"){setStatusImage(0);}
            onSuccessMethod(transport.responseText, context);}
    });
}

function getEmbededForm(idToUpdate, entityTypeName, entityID, onCompleteMethod, context)
{
    var params = "EmbeddedEntityType=" + entityTypeName + "&EmbeddedObjectID=" + entityID;
    ajaxUpdate(idToUpdate,'Embed.aspx',params,onCompleteMethod,context);
}

function getPluginForm(idToUpdate, pluginClass, queryString, onCompleteMethod, context)
{
    var params = "PluginClass=" + pluginClass + '&' + queryString
    ajaxUpdate(idToUpdate,'UpdaterPluginHost.aspx',params,onCompleteMethod,context);
}

