var request;

function handleLinkClick(evt, url, objectId)
{
    _cancelEvent(evt);
    
    // Ajax stuff... (needs to return null if not a file (or something!))
    doAjaxRequest('/Ajax/InternalLinkHandler.ashx',
     'url=' + url + '&id=' + objectId, 
     linkClickAjaxHandler );
}

function linkClickReturnHandler(isFile, newUrl, vanityName)
{
    if (isFile)
    {
        // call google-analytics
        pageTracker._trackPageview(vanityName);
    }
    
    document.location = newUrl;
}

function _cancelEvent (evt) {
    if(window.event) {
        window.event.returnValue = false;
    } else if(evt) {
        evt.preventDefault();
    }
}

doAjaxRequest = function(url, params, completeHandler) {
    var req = request = getXmlHttpRequest();
    req.onreadystatechange = completeHandler;
	req.open("POST", url, true);
	req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	req.send(params);
}

releaseXmlRequest = function() {
    this.req = null;
}

function linkClickAjaxHandler() {
    var xhr = request;
	if(xhr.readyState == 4) {
	    try {
		    eval(xhr.responseText);
		    releaseXmlRequest();
		} catch(e) {
		    alert("Something went wrong with the AJAX request \n" + e.message);
		}
	}
}

// AJAX helpers
function getXmlHttpRequest() {
	var xhr = null;
	
	try {
		xhr = new ActiveXObject("MSXML2.XMLHTTP");
	} catch(e) { 
		try {
			xhr = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch(e) {
			xhr = false;
		}
	}
	
	if(!xhr && typeof XMLHttpRequest != 'undefined') {
		xhr = new XMLHttpRequest();
	}
	
	return xhr;
}