var g_BrowserType = getBrowserType();

function getBrowserType()
{
    var ua = navigator.userAgent;

    if(ua.split('AppleWebKit/')[1])
        return "safari";
    else if(ua.split('Konqueror/')[1])
        return "konqueror";
    else if(ua.split('Gecko/')[1])
        return "gecko";
    else if (!!window.opera && (typeof XMLHttpRequest) == 'function')
        return "opera";
    else if (!!window.ActiveXObject)
        return "msie";
    else 
        return "unknown";

}

function checkAjaxBrowser()
{
	var a, ua = navigator.userAgent;

	this.bw = 
	{
		safari : ((a=ua.split('AppleWebKit/')[1]) ? a.split('(')[0]:0) >=124,
		konqueror : ((a=ua.split('Konqueror/')[1]) ? a.split('(')[0]:0) >=124,
		mozes : ((a=ua.split('Gecko/')[1]) ? a.split('(')[0]:0) >=124,
		opera : (!!window.opera) && ((typeof XMLHttpRequest) == 'function'),
		msie : (!!window.ActiveXObject) ? (!!createHttpRequest()) : false
	}

	return (this.bw.safari || this.bw.konqueror || this.bw.mozes || this.bw.opera || this.bw.msie);
}

function createHttpRequest()
{
	if(window.ActiveXObject)
	{
		try
		{
			return new ActiveObject("Msxml2.XMLHTTP");
		}
		catch(e)
		{
			try
			{
				return new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(e2)
			{
				return null;
			}
		}
	}
	else if(window.XMLHttpRequest)
	{
		return new XMLHttpRequest();
	}
	else
		return null;
}

function sendRequest(callback, data, method, url, async, sload, user, password)
{
	var oj = createHttpRequest();

	if(oj == null)
		return null;

	var sload = (!!sendRequest.arguments[5]) ? sload:false;
	if(sload || method.toUpperCase() == 'GET')
		url += "?";
	if(sload)
		url = url + "t=" + (new Date()).getTime();

	var bwoj = new checkAjaxBrowser();

	var opera = bwoj.bw.opera;
	var safari = bwoj.bw.safari;
	var konqueror = bwoj.bw.konqueror;
	var mozes = bwoj.bw.mozes;
		
	if(opera || safari || mozes)
	{
		oj.onload = function()
		{
			callback(oj);
		}
	}	
	else
	{
		oj.onreadystatechange = function()
		{
			if(oj.readyState == 4)
			{
				callback(oj);
			}
		}
	}

	data = uriEncode(data);

	if(method.toUpperCase() == 'GET')
		url += data;

	oj.open(method, url, async, user, password);
	setEncHeader(oj);
	oj.send(data);

	function setEncHeader(oj)
	{
		//var contentTypeUrlenc = 'application/x-www-form-urlencoded; charset=UTF-8';
		var contentTypeUrlenc = 'application/x-www-form-urlencoded';
		if(!window.opera)
		{
			oj.setRequestHeader('Content-Type', contentTypeUrlenc);
		}
		else
		{
			if((typeof oj.setRequestHeader) == 'function')
			{
				oj.setRequestHeader('Content-Type', contentTypeUrlenc);
			}
		}
		return oj;
	}

	function uriEncode(data)
	{
		if(data != '')
		{
			var encdata = '';
			var datas = data.split('&');

			for(i = 1; i < datas.length; i++)
			{
				var dataq = datas[i].split('=');
				encdata += '&' + encodeURIComponent(dataq[0]) + '=' + encodeURIComponent(dataq[1]);
			}
		}
		else
		{
			encdata = '';
		}
		return encdata;
	}

	return oj;
}
