var fb_link_request = false;

var zaDebounceNow = false;

function zaDebounceTimeout( )
{
    zaDebounceNow = false;
}

function zaStartDebouncing()
{
  zaDebounceNow = true;
  setTimeout("zaDebounceTimeout( )",2000); // Allow another click in 2 seconds
}

// Request a FB connect. Upon completion, completely reload the current page
function facebook_onlogin() {
//    if (!zaDebounceNow)
//    {
//      zaStartDebouncing();
      makeFacebookLinkRequest("http://www.zoomatlas.com/mediawiki/skins/za_skin/FacebookLink.php", "");
//    }
}

// Request a FB connect. Upon completion, update FBID with local call to 
function facebook_onlogin_json() {
    if (!zaDebounceNow)
    {
      zaStartDebouncing();
      makeFacebookLinkRequest("http://www.zoomatlas.com/mediawiki/skins/za_skin/FacebookLink.php?REFRESH=N", "");
    }
}

function makeFacebookLinkRequest(url, parameters) {
    fb_link_request = false;
    if (window.XMLHttpRequest) { // Mozilla, Safari,...
	fb_link_request = new XMLHttpRequest();
	if (fb_link_request.overrideMimeType) {
	    fb_link_request.overrideMimeType('text/html');
	}
    } else if (window.ActiveXObject) { // IE
	try {
	    fb_link_request = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
	    try {
		fb_link_request = new ActiveXObject("Microsoft.XMLHTTP");
	    } catch (e) {}
	}
    }
    if (!fb_link_request) {
	alert('Cannot create XMLHTTP instance');
	return false;
    }
    
    fb_link_request.onreadystatechange = fbLinkResponse;
    
    fb_link_request.open('POST', noCache(url), true);
    fb_link_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    fb_link_request.setRequestHeader("Content-length", parameters.length);
    fb_link_request.setRequestHeader("Connection", "close");
    fb_link_request.send(parameters);
}

function fbLinkResponse() {
    if (fb_link_request.readyState == 4) {
	if (fb_link_request.status == 200) {
	    result = fb_link_request.responseText;
	    if (result == "REFRESH") {
	        refresh_page();
	    }
	    if ((result.length > 4) && (result.substring(0,4) == 'FBID')) {
		var uid_first_last = result.substring(4);
		var tokenArr = uid_first_last.split(',');
	        onUpdateFBid(tokenArr[0],tokenArr[1],tokenArr[2]);
	    }
	}
    }
}

// This should get overridden by client
function onUpdateFBid(newFBid,newFname,newLname) {
//  alert("Facebook ID: "+newFBid);
}

function refresh_page() {
  window.location.reload();
}
