this.objXML = null;
this.objTXT = "";


this.div_text = "&nbsp;Attendere";
this.div_background = '#F00';
this.div_color='#FFF';
this.div_top = "2px";
this.div_left = "2px";
this.div_width = "90px";
this.div_heigth = "20px";
this.view = false;
this.dot = 0;

this.div_left_temp = '2px';
this.div_top_temp = '2px'; 


function ajaxProvider()
{
  
}

ajaxProvider.prototype.dotloading = function ()
{
	if(view) 
	{
	   	var punti = '';
		for(i = 0; i<= dot; i++)
		{
			if(i != 0)
				punti += '.';
		}		
		document.getElementById("loading").innerHTML = div_text + punti + '&nbsp;';
		if(dot == 4)
		{
			dot = 0;	
		} else {
			dot++;	
		}		
		setTimeout('ajaxProvider.prototype.dotloading()', 200);
	}
}

ajaxProvider.prototype.viewloading = function(what)
{
	if(what)
	{
		var div = document.createElement("div");
		div.id = "loading";
		div.innerHTML = div_text;
		div.align = "left";
		div.style.display = '';
		div.style.backgroundColor = div_background ;
		div.style.color = div_color;
		div.style.position = 'absolute';
		div.style.zIndex = '101';
		div.style.top = div_top;
		div.style.left = div_left;
		div.style.width = div_width;
		div.style.heigth = div_heigth;
		document.body.appendChild(div);	
		setTimeout('ajaxProvider.prototype.dotloading()', 100);
	} else {
		document.body.removeChild(document.getElementById("loading"));	
		div_left = div_left_temp;
        div_top = div_top_temp;
	}
	view = what;
}

ajaxProvider.prototype.getXMLHttpRequest = function() {
	var XHR = null;
	var browserUtente = navigator.userAgent.toUpperCase();	
 	if(typeof(XMLHttpRequest) === "function" || typeof(XMLHttpRequest) === "object")
  		XHR = new XMLHttpRequest();
 	else if(window.ActiveXObject &&  browserUtente.indexOf("MSIE 4") < 0) 
	{
		if(browserUtente.indexOf("MSIE 5") < 0)
   			XHR = new ActiveXObject("Msxml2.XMLHTTP");
  		else
   			XHR = new ActiveXObject("Microsoft.XMLHTTP");
 	}
 	return XHR;
}


ajaxProvider.prototype.getTxtResponse = function(url, params, funzione)
{
    div_left = div_left_temp;
    div_top = div_top_temp;
	ajaxProvider.prototype.getResponse(url, params, 'TXT', funzione);
}

ajaxProvider.prototype.getTxtResponseWidthCoordinat = function(url, params, funzione, top, left)
{
    div_top = top + "px";
    div_left = left + "px";
	ajaxProvider.prototype.getResponse(url, params, 'TXT', funzione);
}

ajaxProvider.prototype.getXmlDocument = function(url, params, funzione)
{
    div_left = div_left_temp;
    div_top = div_top_temp;
	ajaxProvider.prototype.getResponse(url, params, 'XML', funzione);
}

ajaxProvider.prototype.getXmlDocumentWidthCoordinat = function(url, params, funzione, top, left)
{
    div_top = top + "px";
    div_left = left + "px";
	ajaxProvider.prototype.getResponse(url, params, 'XML', funzione);
}

ajaxProvider.prototype.getResponse = function(url, params, response, funzione)
{
	var req = ajaxProvider.prototype.getXMLHttpRequest();
	ajaxProvider.prototype.viewloading(true);
	req.onreadystatechange = function(){
			if(req.readyState == 4)
			{
				ajaxProvider.prototype.viewloading(false)
				isResponse = true;
				if (req.status == 200) {
					if(response == 'XML')
					{
						ajaxProvider.objXML = req.responseXML;	
						funzione(ajaxProvider.objXML);
					} else {
						ajaxProvider.objTXT = req.responseText;
						funzione(ajaxProvider.objTXT);
					}				
				} else {
					//alert('Error: ' + req.status);
				}
			}			
		};
	
	req.open("post", url + '?'+ params, true);
	req.setRequestHeader("content-type", "application/x-www-form-urlencoded");
	var par = params;
	req.send('');
}

ajaxProvider.prototype.getXmlParse = function()
{
    var adapter = '';
	if ('undefined' != typeof ActiveXObject) {
		adapter = 'MS';
	} else if ('undefined' != typeof document
		&& document.implementation
		&& document.implementation.createDocument
		&& 'undefined' != typeof DOMParser)
	{
		adapter = 'default';
	}
	switch (adapter) {
		case 'MS':
			return new (function () {
				this.createDocument = function () {
					var names = ["Msxml2.DOMDocument.6.0",
						"Msxml2.DOMDocument.3.0", "MSXML2.DOMDocument",
						"MSXML.DOMDocument", "Microsoft.XMLDOM"];
					for (var key in names) {
						try {
							return new ActiveXObject(names[key]);
						} catch (e) {}
					}
					throw new Error('Unable to create DOMDocument');
				};
				this.serialize = function (doc) {
					return doc.xml;
				};
				this.parseXml = function (xmlResult) {
					var doc = this.createDocument();
					if (!doc.loadXML(xmlResult)) {
						throw new Error('Parse error');
					}
					return doc;
				};
			})();
		case 'default':
			return new (function () {
				this.createDocument = function () {
					return document.implementation.createDocument("", "", null);
				};
				this.serialize = function (doc) {
					return ;
				};
				this.parseXml = function (xmlResult) {
					var doc = new DOMParser().parseFromString(xmlResult, "text/xml");
					if ("parsererror" == doc.documentElement.nodeName) {
						throw new Error('Parse error');
					}
					return doc;
				};
			})();
		default:
			throw new Error('Unable to select the DOM adapter');
	}

}
