|
/* Copyright 2007 Codevendor.com */
// For registering namespaces
var Namespace = {
Register : function(_Name)
{
var o = window;
var x = false;
for (var a = _Name.split("."); a.length > 0;)
{
var s = a.shift();
if(a.length==0){ if(o[s]){x=true;} }
if(!o[s]){o[s]={};}
o = o[s];
}
if(x){ return 1; }
}
}
//Create Namespaces----------------------------------------
Namespace.Register("System.Net.Ajax");
//---------------------------------------------------------
//Enumeration-----------------
System.Net.Ajax.RequestMethod = { Get:"GET", Post:"POST" };
//----------------------------
//Handles page requests in a collection----------------
System.Net.Ajax.PageRequests = function(){ return {
Requests : null,
//Gets the type of object---------------------------------------------
GetType : function(){ return "System.Net.Ajax.PageRequests"; },
//--------------------------------------------------------------------
//Initializer---------------------------------------------------------
Init : function()
{
this.Requests = new Array();
if(arguments[0].length==1){ this.Requests.push(arguments[0][0]); }
return this;
},
//--------------------------------------------------------------------
//Adds Requests to the collection
AddRequest : function()
{
if(arguments.length==0 || arguments[0].GetType()!="System.Net.Ajax.Request"){ return; }
this.Requests.push(arguments[0]);
}
}.Init(arguments);}
//Single Page Request
System.Net.Ajax.Request = function(){ return {
Method : null,
URL : null,
Params : null,
Callback : null,
Async : false,
UserObject : null,
//Gets the type of object---------------------------------------------
GetType : function(){ return "System.Net.Ajax.Request"; },
//--------------------------------------------------------------------
//Initializer---------------------------------------------------------
Init : function()
{
switch(arguments[0].length)
{
case 1 : this.Method = arguments[0][0]; break;
case 2 : this.Method = arguments[0][0]; this.URL = arguments[0][1]; break;
case 3 : this.Method = arguments[0][0]; this.URL = arguments[0][1]; this.Callback = arguments[0][2]; break;
case 4 : this.Method = arguments[0][0]; this.URL = arguments[0][1]; this.Callback = arguments[0][2]; this.Async = arguments[0][3]; break;
case 5 : this.Method = arguments[0][0]; this.URL = arguments[0][1]; this.Callback = arguments[0][2]; this.Async = arguments[0][3]; this.UserObject = arguments[0][4]; break;
}
this.Params = new Array();
return this;
},
//--------------------------------------------------------------------
//Adds Parameters to the parameter array collection
AddParam : function()
{
switch(arguments.length)
{
case 1 : this.Params.push(arguments[0]); break;
case 2 : this.Params.push(new System.Net.Ajax.Parameter(arguments[0], arguments[1])); break;
}
}
}.Init(arguments);}
//Page Request Parameter Object
System.Net.Ajax.Parameter = function(){ return {
Name : null,
Value : null,
//Gets the type of object---------------------------------------------
GetType : function(){ return "System.Net.Ajax.Parameter"; },
//--------------------------------------------------------------------
//Initializer---------------------------------------------------------
Init : function()
{
if(arguments[0].length==2){ this.Name = arguments[0][0]; this.Value = arguments[0][1]; }
return this;
}
//--------------------------------------------------------------------
}.Init(arguments);}
System.Net.Ajax.ActiveObject = 0; //For knowing what type of active X object.
//For handling ajax connections
System.Net.Ajax.Connection = function(){ return {
ActiveXObject : null,
PageRequests : null,
Current : null,
//Gets the type of object---------------------------------------------
GetType : function(){ return "System.Net.Ajax.Connection"; },
//--------------------------------------------------------------------
//Initializer---------------------------------------------------------
Init : function()
{
if(arguments[0].length==1){ this.PageRequests = arguments[0][0]; }
return this;
},
//--------------------------------------------------------------------
//Creates the active x object for use
Create : function()
{
switch(System.Net.Ajax.ActiveObject)
{
case 0:
if(window.ActiveXObject)
{
try
{
System.Net.Ajax.ActiveObject = 2;
return new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
System.Net.Ajax.ActiveObject = 3;
return new ActiveXObject("Microsoft.XMLHTTP");
}
}
else
{
if(window.XMLHttpRequest)
{
System.Net.Ajax.ActiveObject = 1;
return new XMLHttpRequest();
}
}
case 1: return new XMLHttpRequest();
case 2: return new ActiveXObject("Msxml2.XMLHTTP");
case 3: return new ActiveXObject("Microsoft.XMLHTTP");
default: break;
}
//No Ajax Object Found-----------
System.Net.Ajax.ActiveObject = -1;
throw "Missing a required ajax object.";
return false;
//-------------------------------
},
Open : function()
{
//Check if page requests has something------
if(this.PageRequests==null){ return; }
//------------------------------------------
//Create Variables--------------------------
var obj = this;
var Data = "";
//------------------------------------------
//Create ActiveX----------------------------
this.ActiveXObject = this.Create();
//------------------------------------------
//Get Request-------------------------------
this.Current = this.PageRequests.Requests.shift();
//------------------------------------------
//Open Connection---------------------------
this.ActiveXObject.open(this.Current.Method, this.Current.URL, this.Current.Async);
//------------------------------------------
//Create ActiveX Callback-------------------
this.ActiveXObject.onreadystatechange = function() {obj.OnReadyStateChange();}
//------------------------------------------
//Open Ajax Request-------------------------------------------------------------------
if(this.Current.Method=="POST")
{
this.ActiveXObject.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
if(this.Current.Params!=null && this.Current.Params.length!=0)
{
for(var Param in this.Current.Params)
{
Data += (Data=="") ? this.Current.Params[Param].Name + "=" + this.Current.Params[Param].Value : "&" + this.Current.Params[Param].Name + "=" + this.Current.Params[Param].Value;
}
}
this.ActiveXObject.send(encodeURI(Data));
}
else
{
this.ActiveXObject.send(null);
}
//------------------------------------------------------------------------------------
},
//ActiveXObject callback
OnReadyStateChange : function()
{
//Get Ajax objects for return-----------------
var r = {};
r.ReadyState = this.ActiveXObject.readyState;
r.ResponseText = (this.ActiveXObject.readyState==4)?this.ActiveXObject.responseText:null;
r.Status = (this.ActiveXObject.readyState==4)?this.ActiveXObject.status:null;
r.URL = this.Current.URL;
r.UserObject = this.Current.UserObject;
r.Complete = (this.ActiveXObject.readyState==4 && this.PageRequests.Requests.length==0) ? true : false;
//--------------------------------------------
//Call Callback Method---------------
if(this.Current.Callback!=null){this.Current.Callback(r);}
//-----------------------------------
//Loop For Many URLS
if(this.ActiveXObject.readyState==4)
{
if(r.Complete){ this.PageRequests=null; this.ActiveXObject.abort(); this.Current=null; }
else{ this.Open();}
}
}
}.Init(arguments);}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.