<!-- javascript functions needed to preform web requests START -->
var req;
var enabled = true; 
var timerID;
var gl_url = false;
var a_tries = 0;



function send(url, flag, callback) {
	if (!enabled && flag == false)	return;
        gl_url = url;
        enabled = false;
        url = url + '&' + Math.random(0,100);
        if(ga_helper.debug === true) console.log('Category: ', ga_helper.getCategory(), 'Action: ', ga_helper.getAction(url));
        if (_gaq) _gaq.push(['_trackEvent', ga_helper.getCategory(), ga_helper.getAction(url)]);
        new Ajax.Request(url, {
            method: 'get',
            onComplete: function(response) {
                req = response;
                if(typeof(callback) == "undefined") callback = "processCells";
                processReqChange(callback,'get');
          }
        });        	
}

function sendPost(url, parameters, flag, callback) {
    if (!enabled && flag == false)	return;
        gl_url = url
        enabled = false;
        if(ga_helper.debug === true) console.log('Category: ', ga_helper.getCategory(), 'Action: ', ga_helper.getAction(parameters));
        if (_gaq) _gaq.push(['_trackEvent', ga_helper.getCategory(), ga_helper.getAction(parameters)]);
        new Ajax.Request(url, {
            method: 'post',
            parameters: parameters,
            onComplete: function(response) {
                req = response;
                if(typeof(callback) == "undefined") callback = "processCells";
                processReqChange(callback,'post');
          }
        });
}

function processReqChange(callback,type)
{
	//timerID = window.setTimeout("req.abort();", 100000000);
	if (req.readyState == 4)
	{
		//clearTimeout(timerID);
		if (req.status == 200)
		{
            a_tries = 0;
            if(typeof(window[callback]) === 'function') {
                window[callback](req.responseText);
            }
            enabled = true;
		}
		else
		{
			a_tries = a_tries + 1;
			enabled = false;
			timerID = window.setTimeout(function(){replaySend(type);}, 1000);
		}
	}
} 

function replaySend(type) {
	if (a_tries >= 5) {
		clearTimeout(timerID);
		a_tries = 0;
		req.transport.abort();
		enabled = true;
		processFailure('');
		return false;
	} else {
        if (type == 'get') {
            send(gl_url, true);
        } else {
            sendPost(gl_url, true);
        }

	}
}

<!-- javascript functions needed to preform web requests END -->
