var gatewayUrl = "/ajax/gateway.php";
var sessionUpdateInterval = 1000*60*1; //om de minuut
var refreshLobbyInterval = 1000*30;
var ajaxUpdateSession = new sack();
var ajaxCheckUsername = new sack();
var ajaxRefreshLobby = new sack();
var ajaxTableDetails = new sack();

window.onload = start;

function start() {
  if(typeof fixPng == 'function')  fixPng();
  setTimeout('updateSession()', sessionUpdateInterval);

  //preload images
  image1 = new Image();
  image1.src = "/images/buttons/blue_right_hover.gif";
  image2 = new Image();
  image2.src = "/images/buttons/blue_left_hover.gif";
}

//deze functie wordt automatisch opgeroepen om de X seconden, en gaat de php session alive houden
function updateSession() {
  ajaxUpdateSession.setVar("task", "updateSession");
	ajaxUpdateSession.requestFile = gatewayUrl;
	ajaxUpdateSession.method = "GET";
	ajaxUpdateSession.onCompletion = updateSessionResult;
	ajaxUpdateSession.runAJAX();
	
  setTimeout('updateSession()', sessionUpdateInterval);
}

//wordt opgeroepen wanneer de session geupdate is
function updateSessionResult() {
  responseStatusCode = ajaxUpdateSession.responseStatus[0];
  responseStatusText = ajaxUpdateSession.responseStatus[1];
  responseText = ajaxUpdateSession.response;
}

//wordt opgeroepen als we op de lobby pagina zitten en gaat een timer starten
function startRefreshLobby() {
  setTimeout('refreshLobby()', refreshLobbyInterval);
}

//wordt opgeroepen om de lobby te refreshen
function refreshLobby() {
  ajaxRefreshLobby.setVar("task", "refreshLobby");
	ajaxRefreshLobby.requestFile = gatewayUrl;
	ajaxRefreshLobby.method = "GET";
	ajaxRefreshLobby.onCompletion = updateLobbyTables;
	ajaxRefreshLobby.runAJAX();
	
  setTimeout('refreshLobby()', refreshLobbyInterval);
}

//wordt opgeroepen wanneer we een antwoord via ajax hebben toegekregen
function updateLobbyTables() {
  responseStatusCode = ajaxRefreshLobby.responseStatus[0];
  responseStatusText = ajaxRefreshLobby.responseStatus[1];
  responseText = ajaxRefreshLobby.response;
  
  if(responseStatusCode == "200" && responseStatusText == "OK") {
    var table_span = document.getElementById("lobby_tables");
    table_span.innerHTML = responseText;
  }
}

//wordt opgeropen wanneer iemand op een tafel klikt
function showTableDetails(table_id) {
  ajaxTableDetails.setVar("task", "getTableInfo");
  ajaxTableDetails.setVar("table_id", table_id);
	ajaxTableDetails.requestFile = gatewayUrl;
	ajaxTableDetails.method = "GET";
	ajaxTableDetails.onCompletion = updateTableDetails;
	ajaxTableDetails.runAJAX();
}

//wordt opgeroepen wanneer we een antwoord via ajax hebben toegekregen
function updateTableDetails() {
  responseStatusCode = ajaxTableDetails.responseStatus[0];
  responseStatusText = ajaxTableDetails.responseStatus[1];
  responseText = ajaxTableDetails.response;
  
  if(responseStatusCode == "200" && responseStatusText == "OK") {
    var table_span = document.getElementById("table_details");
    table_span.innerHTML = responseText;
    jQuery('#table_details').slideDown();
  }
}

//wordt gebruikt om een  javascript popup venster te openen
function openPopupWindow(url, name, width, height) {
  var middleLeft = 10;
  var middleTop = 30;  
  if (window.screen) middleLeft = (screen.availWidth / 2) - (width / 2);	      
  window.open(url, name, 'scrollbars=0,resizable=1,menubar=0,toolbar=0,location=0,status=0,top='+middleTop+',left='+middleLeft+',width='+width+',height='+height);
}

//wordt opgeroepen wanneer er een letter in username of password textfield wordt getypt
function checkLoginSubmit() {
  if(document.all) {
    if(window.event.keyCode == 13) {
      document.loginform.submit();
    }
  }
}

//wordt opgeroepen door de flash client wanneer iemand inlogt
function loggedInFromFlash() {
  if(typeof(window.opener) != "undefined") {
    if(typeof(window.opener.tryLoginFromFlash) != "undefined") {
      window.opener.tryLoginFromFlash();
    }
  }
}

//wordt opgeroepen door javascript functie om een automatische submit te doen van loginform
function tryLoginFromFlash() {
  if(typeof(document.flashloginform) != "undefined") {
    document.flashloginform.submit();
  }
}

//wordt opgeroepen door de flash client wanneer een speler op de leave knop klikt
function closeWindow() {
  window.close();
}

//wordt gebruikt om de tafel in een popup te openen
function joinTable(table_id) {
  openPopupWindow('/table/'+table_id, 'table'+table_id, 700, 600);
  return false;
}

//deze functie gaat controleren dat de username geldig en nog beschikbaar is
function checkUsername(username) {
  ajaxCheckUsername.setVar("task", "checkUsername");
  ajaxCheckUsername.setVar("username", username);
	ajaxCheckUsername.requestFile = gatewayUrl;
	ajaxCheckUsername.method = "GET";
	ajaxCheckUsername.onCompletion = checkUsernameResult;
	ajaxCheckUsername.runAJAX();
	return false;
}

//wordt opgeroepen wanneer de session geupdate is
function checkUsernameResult() {
  responseStatusCode = ajaxCheckUsername.responseStatus[0];
  responseStatusText = ajaxCheckUsername.responseStatus[1];
  responseText = ajaxCheckUsername.response;
  if(responseText == 'Y') {
    document.getElementById('register_username').style.backgroundColor = '#CCFFCC';
  }
  else {
    document.getElementById('register_username').style.backgroundColor = '#FFB3A8';
  }
}

//wordt opgeroepen door de flash client wanneer een speler op de register knop klikt
function register() {
  if(typeof(window.opener) != "undefined") {
    window.opener.location = "http://www.freepokerhub.com/register";
  }
  window.close();
}

//debug functies die opgeroepen worden door de flash
function debugReceived(message) {
  document.getElementById("debugwindow").innerHTML = document.getElementById("debugwindow").innerHTML + '<== ' + message + "\n";
  document.getElementById("debugwindow").scrollTop = document.getElementById("debugwindow").scrollHeight; 
}
function debugSent(message) {
  document.getElementById("debugwindow").innerHTML = document.getElementById("debugwindow").innerHTML + '==> ' + message + "\n";
  document.getElementById("debugwindow").scrollTop = document.getElementById("debugwindow").scrollHeight; 
}

//wordt opgeroepen door de flash wanneer het de beurt is aan de speler
function myTurn() {
  if(window.opener && !window.opener.closed) 
    window.opener.focusPopupWindow(this);
}
//wordt opgeroepen door de de table popup wanneer het de beurt is aan de speler
function focusPopupWindow(popup) {
  popup.focus();
}