function makeHttpRequest( url, callback_function, callback_param ) 
{ 
	var http_request = false; 

	if (window.XMLHttpRequest) { // Mozilla, Safari,... 
		 http_request = new XMLHttpRequest(); 
		 if (http_request.overrideMimeType) { 
			  http_request.overrideMimeType('text/plain'); 
		 } 
	} else if (window.ActiveXObject) { // IE 
		 try { 
			  http_request = new ActiveXObject("Msxml2.XMLHTTP"); 
		 } catch (e) { 
			  try { 
					http_request = new ActiveXObject("Microsoft.XMLHTTP"); 
			  } catch (e) {} 
		 } 
	} 

	if (!http_request) { 
		 alert('Unfortunatelly you browser doesn\'t support this feature.'); 
		 return false; 
	} 
	http_request.onreadystatechange = function() { 
		 if (http_request.readyState == 4) { 
			  if (http_request.status == 200) { 
					 eval(callback_function + '(http_request.responseText,callback_param)' ); 
			  } else { 
					//alert('There was a problem with the request.(Code: ' + http_request.status + ')\n' + url); 
			  } 
		 } 
	} 
	http_request.open('GET', url, true); 
	http_request.send(null);
}

function ce( t ) { return document.createElement( t ); }

function $( s ) { return document.getElementById( s ); }

function nocache( url )
{
	var ret;
	if( url.indexOf('?') > 0 )
		ret = url + '&rpar=' + Math.random();
	else
		ret = url + '?rpar=' + Math.random();
	return ret;
}

function result( txt, obj )
{
	obj.innerHTML = txt;

	var s = obj.getElementsByTagName("SCRIPT");

	for( i = 0 ; i < s.length ; i++ )
	{
		var ns = ce('SCRIPT');
		ns.type = 'text/javascript';
		ns.text = s[i].text;
		document.body.appendChild( ns );
	}
	for( i = 0 ; i < s.length ; i++ )
		s[i].parentNode.removeChild( s[i] );
}

function getCookie (name) {
var dcookie = document.cookie; 
var cname = name + "=";
var clen = dcookie.length;
var cbegin = 0;
        while (cbegin < clen) {
        var vbegin = cbegin + cname.length;
                if (dcookie.substring(cbegin, vbegin) == cname) { 
                var vend = dcookie.indexOf (";", vbegin);
                        if (vend == -1) vend = clen;
                return unescape(dcookie.substring(vbegin, vend));
                }
        cbegin = dcookie.indexOf(" ", cbegin) + 1;
                if (cbegin == 0) break;
        }
return '';
}


function setCookie (name, value)
{
delCookie(name);
document.cookie = name + "=" + escape (value) + 
"; expires=" + expdate.toGMTString() +  "; path=/";
}

function delCookie (name) {
var expireNow = new Date();
document.cookie = name + "=" +
"; expires=Thu, 01-Jan-70 00:00:01 GMT" +  "; path=/";
}

function json( str )
{
	try
	{
		return eval( '(' + str + ')' );
	}
	catch( err )
	{
		debug( 'bad json response:<br><b>' + str + '</b>');
		return new Object;
	}
}

var expdate = new Date(); expdate.setTime(expdate.getTime() +  (60 * 60 * 1000 * 24 * 365 )); // 1 dia

