/*

	VSAL: Very Simple AJAX Library V 1.0
	Copyright (C) by Samuel Zallocco
	All right reserved
	For more information please visit http://www.zallocco.net

*/

function vsal_GetVars() {
	var getVars = new Array();
	var qString = top.location.search.substring(1);
	var pairs   = qString.split(/\&/);
	for (var i in pairs) {
		var nameVal = pairs[i].split(/\=/);
		getVars[nameVal[0]] = unescape(nameVal[1]);
	};
	return getVars;
}

function vsal_RequireSLL()
{
	if (top.location.protocol == "http:") top.location = "https://"+top.location.hostname+top.location.pathname+top.location.search;
}

function vsal_Create_Ajax_Object()
{
	var httprequest=false;
	if (window.XMLHttpRequest) // if Mozilla, Safari etc
	{
		httprequest=new XMLHttpRequest();
		if (httprequest.overrideMimeType) httprequest.overrideMimeType('text/xml');
	} else if (window.ActiveXObject) { // if IE
		try {
			httprequest=new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				httprequest=new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {};
		};
	};
	return httprequest;
}

var vsal_AjaxObj = vsal_Create_Ajax_Object(); // Create an AJAX Object Instance

function vsal_invoke(baseurl, parameters, destdiv, creatediv)
{

	if (vsal_AjaxObj)
	{
		if (creatediv) document.write('<div id="'+destdiv+'"></div>');					
		vsal_AjaxObj.onreadystatechange=function(){ 
			if (vsal_AjaxObj.readyState == 4) //if request of file completed
			{
				if (vsal_AjaxObj.status==200) //if request was successful
				{
					var ddiv = document.getElementById(destdiv);
					if (ddiv.hasChildNodes()) {
						ddiv.removeChild(ddiv.childNodes[0]);
					};
					ddiv.innerHTML = vsal_AjaxObj.responseText;
				} else {
					alert("VSAL INVOKE ERROR: Spiacente si è verificato un errore!	La richiesta fatta al server non è andata a buon fine. AJAX STATUS="+vsal_AjaxObj.status+" READY STATE="+vsal_AjaxObj.readyState+ " URL="+escape(baseurl)+escape("?"+parameters));
				}
			}
		}; // ajaxobj.onreadystatechange
		
		vsal_AjaxObj.open('GET', baseurl+"?"+parameters+"&bustcache="+new Date().getTime(), true);
		vsal_AjaxObj.send(null);
	}
	
}

function vsal_invoke_alert(baseurl, parameters) //, destdiv, creatediv)
{
	var AjaxObj=false;
	if (window.XMLHttpRequest) // if Mozilla, Safari etc
	{
		AjaxObj=new XMLHttpRequest();
		//if (AjaxObj.overrideMimeType) AjaxObj.overrideMimeType('text/xml');
	} else if (window.ActiveXObject) { // if IE
		try {
			AjaxObj=new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				AjaxObj=new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {};
		};
	};

	if (AjaxObj)
	{
		AjaxObj.onreadystatechange=function(){ 
			if (AjaxObj.readyState == 4) //if request of file completed
			{
				if (AjaxObj.status==200) //if request was successful
				{
					alert(AjaxObj.responseText);
				} else {
					alert("VSAL INVOKE ALERT ERROR: Spiacente si è verificato un errore!	La richiesta fatta al server non è andata a buon fine. AJAX STATUS="+AjaxObj.status+" READY STATE="+AjaxObj.readyState+ " URL="+escape(baseurl)+escape("?"+parameters));
				}
			}
		}; // ajaxobj.onreadystatechange
		
		AjaxObj.open('GET', baseurl+"?"+parameters+"&bustcache="+new Date().getTime(), true);
		AjaxObj.send(null);
	}

}

function vsal_invoke_(baseurl, parameters, destdiv, creatediv)
{
	var AjaxObj=false;
	if (window.XMLHttpRequest) // if Mozilla, Safari etc
	{
		AjaxObj=new XMLHttpRequest();
		//if (AjaxObj.overrideMimeType) AjaxObj.overrideMimeType('text/xml');
	} else if (window.ActiveXObject) { // if IE
		try {
			AjaxObj=new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				AjaxObj=new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {};
		};
	};

	if (AjaxObj)
	{
		if (creatediv) document.write('<div id="'+destdiv+'"></div>');					
		AjaxObj.onreadystatechange=function(){ 
			if (AjaxObj.readyState == 4) //if request of file completed
			{
				if (AjaxObj.status==200) //if request was successful
				{
					var ddiv = document.getElementById(destdiv);
					if (ddiv.hasChildNodes()) {
						ddiv.removeChild(ddiv.childNodes[0]);
					};
					ddiv.innerHTML = AjaxObj.responseText;
				} else {
					alert("VSAL INVOKE_ ERROR: Spiacente si è verificato un errore!	La richiesta fatta al server non è andata a buon fine. AJAX STATUS="+AjaxObj.status+" READY STATE="+AjaxObj.readyState+ " URL="+escape(baseurl)+escape("?"+parameters));
				}
			}
		}; // ajaxobj.onreadystatechange
		
		AjaxObj.open('GET', baseurl+"?"+parameters+"&bustcache="+new Date().getTime(), true);
		AjaxObj.send(null);
	}

}

// generate a waiting effect
function vsal_please_wait(destdiv, animated_gif)
{
	var pwdiv = document.getElementById(destdiv);
	if (pwdiv.hasChildNodes()) { pwdiv.removeChild(pwdiv.childNodes[0]); };
	pwdiv.innerHTML = "<center><img src='"+animated_gif+"'></center>";
}


// Load an XML File "First Method": Work with IE, FF, OPERA, don't work with SAFARI
function vsal_load_xml_1(baseurl, parameters)
{
	var vsal_xml_doc = false;
	var bustcache = new Date().getTime();
	
    // Standard W3C Method
	if (document.implementation && document.implementation.createDocument) {
		vsal_xml_doc = document.implementation.createDocument("","",null);
		vsal_xml_doc.async = false;
		if (vsal_xml_doc.load) {
			vsal_xml_doc.load(baseurl+"?"+parameters+"&bustcache="+bustcache);
		} else {
			vsal_xml_doc = null;
			//alert("VSAL ALERT: This Browser (probably Safari) does not support the DOM Load Method. Use IE or Firefox instead.");
		};

	// MSIE
	} else if (window.ActiveXObject) {
		vsal_xml_doc = new ActiveXObject("Microsoft.XMLDOM");
		vsal_xml_doc.async=false;
		vsal_xml_doc.load(baseurl+"?"+parameters+"&bustcache="+bustcache);
	};
	
	return vsal_xml_doc;
}

// Load an XML File "Second Method": Work with IE, FF, SAFARI, don't work with OPERA
function vsal_load_xml_2(baseurl, parameters)
{
	var AjaxObj=false;
	var vsal_xml_doc = null;
	var bustcache = new Date().getTime();

	if (window.XMLHttpRequest) // if Mozilla, Safari etc
	{
		AjaxObj=new XMLHttpRequest();
		if (AjaxObj.overrideMimeType) AjaxObj.overrideMimeType('text/xml');
	} else if (window.ActiveXObject) { // if IE
		try {
			AjaxObj=new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				AjaxObj=new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {};
		};
	};

	if (AjaxObj)
	{
		AjaxObj.onreadystatechange=function(){ 
			if (AjaxObj.readyState == 4) //if request of file completed
			{
				if (AjaxObj.status==200) //if request was successful
				{
					vsal_xml_doc = AjaxObj.responseXML;
				} else {
					vsal_xml_doc = null;
					//alert("VSAL ERROR: Spiacente si è verificato un errore! La richiesta fatta al server non è andata a buon fine. AJAX STATUS="+AjaxObj.status+" READY STATE="+AjaxObj.readyState);
				}
			}
		}; // ajaxobj.onreadystatechange
		
		AjaxObj.open('GET', baseurl+"?"+parameters+"&bustcache="+bustcache, false);
		AjaxObj.send(null);
		return vsal_xml_doc;
	} else {
		return null;
	};
	
	
}

// Load an XML file
function vsal_load_xml(baseurl, parameters)
{
	var vsal_xml_doc = vsal_load_xml_2(baseurl, parameters);
	if (vsal_xml_doc == null) {
		vsal_xml_doc = vsal_load_xml_1(baseurl, parameters);
	};
	return vsal_xml_doc;
}


// special sink version of invoke return text only
function vsal_invokest_original(baseurl, parameters) // Non funziona con FF a causa del fatto che per le chiamate sincrone non viene invocata la funzione onreadystatechange
{
	var AjaxObj=false;
	var res = "";
	if (window.XMLHttpRequest) // if Mozilla, Safari etc
	{
		AjaxObj=new XMLHttpRequest();
		//if (AjaxObj.overrideMimeType) AjaxObj.overrideMimeType('text/xml');
	} else if (window.ActiveXObject) { // if IE
		try {
			AjaxObj=new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				AjaxObj=new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {};
		};
	};

	if (AjaxObj)
	{
		AjaxObj.onreadystatechange=function(){ 
			if (AjaxObj.readyState == 4) //if request of file completed
			{
				if (AjaxObj.status==200) //if request was successful
				{
					res = AjaxObj.responseText;
				} else {
					res = "VSAL ERROR: Spiacente si è verificato un errore!	La richiesta fatta al server non è andata a buon fine. AJAX STATUS="+AjaxObj.status+" READY STATE="+AjaxObj.readyState;
				}
			}
		}; // ajaxobj.onreadystatechange
		
		AjaxObj.open('GET', baseurl+"?"+parameters+"&bustcache="+new Date().getTime(), false);
		AjaxObj.send(null);
	};
	return res;

}

// special sink version of invoke return text only
function vsal_invokest(baseurl, parameters)
{
	var AjaxObj=false;
	var browser = "UNK";
	var res = "";
	if (window.XMLHttpRequest) // if Mozilla, Safari etc
	{
		AjaxObj=new XMLHttpRequest();
		browser = "FF";
		//if (AjaxObj.overrideMimeType) AjaxObj.overrideMimeType('text/xml');
	} else if (window.ActiveXObject) { // if IE
		try {
			AjaxObj=new ActiveXObject("Msxml2.XMLHTTP");
			browser = "IE";
		} catch (e) {
			try{
				AjaxObj=new ActiveXObject("Microsoft.XMLHTTP");
				browser = "OTHER";
			} catch (e) {};
		};
		
	};

	if (AjaxObj)
	{

		AjaxObj.onreadystatechange=function(){ 
			if (AjaxObj.readyState == 4) //if request of file completed
			{
				if (AjaxObj.status==200) //if request was successful
				{
					res = AjaxObj.responseText;
				} else {
					res = "VSAL ERROR: Spiacente si è verificato un errore!	La richiesta fatta al server non è andata a buon fine. AJAX STATUS="+AjaxObj.status+" READY STATE="+AjaxObj.readyState;
				}
			}
		}; // ajaxobj.onreadystatechange
		
		AjaxObj.open('GET', baseurl+"?"+parameters+"&bustcache="+new Date().getTime(), false);
		AjaxObj.send(null);
		if (browser=="FF") res = AjaxObj.responseText;
	};
	return res;

}
