
function XHConn()
	{
	var xmlhttp, bComplete = false;
	try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }
	catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
	catch (e) { try { xmlhttp = new XMLHttpRequest(); }
	catch (e) { xmlhttp = false; }}}
	if (!xmlhttp) return null;
	this.connect = function(sURL, sMethod, sVars, fnDone)
	{
	if (!xmlhttp) return false;
	bComplete = false;
	sMethod = sMethod.toUpperCase();
	
	try {
	  if (sMethod == "GET")
	  {
		xmlhttp.open(sMethod, sURL+"?"+sVars, true);
		sVars = "";
	  }
	  else
	  {
		xmlhttp.open(sMethod, sURL, true);
		xmlhttp.setRequestHeader("Method", "POST "+sURL+" HTTP/1.1");
		xmlhttp.setRequestHeader("Content-Type",
		  "application/x-www-form-urlencoded");
	  }
	  xmlhttp.onreadystatechange = function(){
		if (xmlhttp.readyState == 4 && !bComplete)
		{
		  bComplete = true;
		  fnDone(xmlhttp);
		}};
	  xmlhttp.send(sVars);
	}
	catch(z) { return false; }
	return true;
	};
	return this;
	}

function wddxAjaxBlog() {		
		var myConn = new XHConn();
		var callBack = null;
		var useSession = false;
		var debugMode = false;
		var className = 'wddxAjaxBlog';
		
		this.ajaxResponse = function (oXML) {  
			if (oXML.responseText != '') {
				var Des = new WddxDeserializer();
				Des.defaultVarCase = "lower";
				evalued = Des.deserialize(oXML.responseText); 
				if (evalued == null || evalued.result == null)  {
					alert('ajaxGateway error:\nInternal component error ');
					document.write(oXML.responseText);
					}
				else 
				try {
					// Verifica che non ci sia un errore					
					if (evalued.errormessage != '') alert ('ajaxGateway error:\n' + evalued.errormessage.replace(/<br>/g,'\n'));
					// Oggetto risposta del metodo
					resultObject = evalued.result;
					callBack(resultObject);
					}
				catch(e)
					{	
					alert('ajaxGateway error:\nError in response function' );			
					}					
				}
			};
			
	this.ajaxCall = function(method,param,callback) {
		var callURL = '../modules/wddxAjaxCommunity/ajaxGateway.cfm';
		var ajaxParameters = '';
		var wddxParam = '';
		var Ses = new WddxSerializer();
		// if use session, build url for retrieve session on ajaxEngine
		if (useSession) {
			var cfid = readCookie('CFID');
			var cftoken = readCookie('CFTOKEN');
			callURL += '?CFID=' + cfid + '&CFTOKEN=' + cftoken;
			}
		// Init
		callBack = callback;			
		ajaxParameters = 'method=' + method;
		ajaxParameters += '&param=' + Ses.serialize(param);
		if (debugMode) ajaxParameters += '&debug=true';
		// HttpRequest
		myConn.connect(callURL, "POST", ajaxParameters, this.ajaxResponse);
		}
	
	this.call = function(method,callback) {
		var callURL = '../modules/wddxAjaxCommunity/ajaxGateway.cfm';
		var ajaxParameters = '';
		var wddxParam = '';
		var params = new Array();
		// Copy params in array
		if (arguments.length > 2) for (i = 2; i < arguments.length; i++) params.push(arguments[i]);
		var Ses = new WddxSerializer();
		// if use session, build url for retrieve session on ajaxEngine
		if (useSession) {
			var cfid = readCookie('CFID');
			var cftoken = readCookie('CFTOKEN');
			callURL += '?CFID=' + cfid + '&CFTOKEN=' + cftoken;
			}
		// Init
		callBack = callback;			
		ajaxParameters = 'method=' + method+'&version=2&className='+className;
		ajaxParameters += '&param=' + Ses.serialize(params);
		if (debugMode) ajaxParameters += '&debug=true';
		// HttpRequest
		myConn.connect(callURL, "POST", ajaxParameters, this.ajaxResponse);
		}			
	function writeCookie(name, value, hours) {
		var expire = "";
		if(hours != null) {
			expire = new Date((new Date()).getTime() + hours * 3600000);
			expire = "; expires=" + expire.toGMTString();
			}
		document.cookie = name + "=" + escape(value) + expire;
		}
	function readCookie(name) {
		var cookieValue = "";
		var search = name + "=";
		if(document.cookie.length > 0) { 
			offset = document.cookie.indexOf(search);
			if (offset != -1) { 
			  offset += search.length;
			  end = document.cookie.indexOf(";", offset);
			  if (end == -1) end = document.cookie.length;
			  cookieValue = unescape(document.cookie.substring(offset, end))
			}
		  }
		  return cookieValue;
		}							
		return this;
		};
		
		
	function readCookie(name) { // Read a cookie
		var cookieValue = "";
		var search = name + "=";		
		if(document.cookie.length > 0) { 
			offset = document.cookie.indexOf(search);
			if (offset != -1) { 
				offset += search.length;
				end = document.cookie.indexOf(";", offset);
				if (end == -1) end = document.cookie.length;
				cookieValue = unescape(document.cookie.substring(offset, end))
				}
			}
		return cookieValue;
		}