function displayPage(sPage, iXPixels, iYPixels) {
//  alert(sPage);
//  var sBackgroundPosition = "'" + iXPixels + "% " + iYPixels + "%'";
//  setTimeout(document.body.style.backgroundPosition="'" + iXPixels + "% " + iYPixels + "%'", 4000);

  //setTimeout("document.body.style.backgroundPosition = '33% 40%'", 4000);

//setTimeout('alert("Hello, World")', 4000);
//alert('Hello, Web');
//  iTimeoutId = setTimeout(document.body.style.backgroundPosition='33% 40%', 4000); // clearTimeout(iTimeoutId);
  if (window.getComputedStyle) {
    var oStyle = document.defaultView.getComputedStyle(document.body, 'null');
    // var stijl = window.getComputedStyle(document.body, '');
    var sBackgroundPosition = oStyle.getPropertyValue('background-position');
//    alert(sBackgroundPosition);
    var sBackgroundPositionX = sBackgroundPosition.substring(0, sBackgroundPosition.indexOf("px"));
//    alert('|' + sBackgroundPositionX + '|');
    var sBackgroundPositionY = sBackgroundPosition.substring(sBackgroundPosition.indexOf("px") + 2, sBackgroundPosition.lastIndexOf("px"));
//    alert('|' + sBackgroundPositionY + '|');
  } else if (document.body.currentStyle) {
    var sBackgroundPositionX = document.body.currentStyle.backgroundPositionX;
    var sBackgroundPositionY = document.body.currentStyle.backgroundPositionY;
//    alert ('posx = ' + sBackgroundPositionX + ' & posy = ' + sBackgroundPositionY);
    sBackgroundPositionX = sBackgroundPositionX.substring(0, sBackgroundPositionX.indexOf("px"));
//    alert('|' + sBackgroundPositionX + '|');
    sBackgroundPositionY = sBackgroundPositionY.substring(0, sBackgroundPositionY.indexOf("px"));
//    alert('|' + sBackgroundPositionY + '|');
  } else {
  //  alert('Your browser does not support this');
  }
  if ((iXPixels == 0 && iYPixels ==0) && sBackgroundPositionX == '' && sBackgroundPositionY == '') {
    location.reload(true);
    return;
//    sBackgroundPositionX = -1200;
//    sBackgroundPositionY = -1200;
  }
  if (iXPixels == sBackgroundPositionX && iYPixels == sBackgroundPositionY) {
    return;
  }
  
  Effect.Fade('container', { duration: 0.50 });    
//  $('bottom_img').hide();
  
  sOriginalBackgroundPositionX = sBackgroundPositionX;
  sOriginalBackgroundPositionY = sBackgroundPositionY;
//  alert('sOriginalBackgroundPositionX: ' + sOriginalBackgroundPositionX);
//  alert('sOriginalBackgroundPositionY: ' + sOriginalBackgroundPositionY);
  iXDifference = iXPixels - sOriginalBackgroundPositionX;
  iYDifference = iYPixels - sOriginalBackgroundPositionY;
//  iPanSpeed = 1500/Math.max(Math.abs(iXDifference), Math.abs(iYDifference));
  iDuration = 150; //2500; 2000; 1000
  iPanSpeed = 3; //15; 25; 5/3/4
  iSlowPanSpeed = 3; //15; 25; 5/3/4
  iSlowDuration = 150;
  iSlowTransitions = 10;
  nTransitions = Math.round(iDuration/iPanSpeed);
  iIteration = 1;
  bFinalTransition = false;
//  alert('iNewVariable: ' + iNewVariable);
/*  // Randomly load the position
  iXDifference = 0;
  while (iXDifference < 20) {
    iXPixels = Math.round(Math.random()*100);
    iXDifference = Math.abs(iXPixels - sBackgroundPositionX);
  }
  while (iYDifference < 5) {
    iYPixels = Math.round(Math.random()*55);
    iYDifference = Math.abs(iYPixels - sBackgroundPositionY);
  }
//  iXPixels = Math.round(Math.random()*100);
//  iYPixels = Math.round(Math.random()*50);
//  iXDifference = Math.abs(iXPixels - sBackgroundPositionX);
//  iYDifference = Math.abs(iYPixels - sBackgroundPositionY);
  iPanSpeed = 1500/Math.max(iXDifference, iYDifference);*/
//  alert('iPanSpeed: ' + iPanSpeed);
//  alert ('iXPixels: ' + iXPixels);
//  alert ('iYPixels: ' + iYPixels);
//  alert ('iXDifference: ' + iXDifference);
//  alert ('iYDifference: ' + iYDifference);
  iIntervalId = setInterval("moveBackground(" + iXPixels + ", " + iYPixels + ", " + iXDifference + ", " + iYDifference + ")", iPanSpeed);
//  clearInterval(iIntervalId);


  var sURL = 'processAjaxRequest.php?type=updatePage&page=' + sPage;
  var sParameters;
//  if ($(sPage.toLowerCase() + 'Form') != null) {
//    sParameters = $(sPage.toLowerCase() + 'Form').serialize(true);
//  }
//alert('sParameters: ' + sParameters);

  // Ajax request that expects HTML back
  var oAjaxRequest = new Ajax.Updater(
  	{success: 'wrapper'}, 
  	sURL, 
  	{
  		method: 'GET', 
  		parameters: sParameters,
  		evalScripts: true,
  		onFailure: showError
  	});
  	
//  clearTimeout(iTimeoutId);


//  iTimeoutId = setTimeout("Effect.Appear('container', { duration: 1.0 })", 5250); 
}

function moveBackground(iXPixels, iYPixels, iXDifference, iYDifference) {
  sBackgroundPositionX = (iXDifference/nTransitions)*iIteration + Math.round(sOriginalBackgroundPositionX);
  sBackgroundPositionY = (iYDifference/nTransitions)*iIteration + Math.round(sOriginalBackgroundPositionY);
  sNewBackgroundPosition = sBackgroundPositionX + "px " + sBackgroundPositionY + "px";
//  alert('sNewBackgroundPosition: ' + sNewBackgroundPosition);
  document.body.style.backgroundPosition = sNewBackgroundPosition;
  
  // If we have reached the last iteration, reposition to our exact location just to make sure and then clear the interval
  if (iIteration == nTransitions) {
    clearInterval(iIntervalId);
    sNewBackgroundPosition = iXPixels + "px " + iYPixels + "px";
    document.body.style.backgroundPosition = sNewBackgroundPosition;
//    $('bottom_img').show();
    Effect.Appear('container', { duration: 0.5 });
  }
  iIteration++;
  
  // IF WE ARE WITHIN 5 ITERATIONS OF THE DESTINATION, CLEAR THE INTERVAL AND SET A NEW ONE WITH THE SPEED SLOWING DOWN
  if ((nTransitions - iIteration == iSlowTransitions) && !bFinalTransition) {
    clearInterval(iIntervalId);
//    alert('clearing interval');
    setTransitions(sBackgroundPositionX, sBackgroundPositionY, iXPixels, iYPixels, iSlowDuration, iSlowPanSpeed);
    bFinalTransition = true;
  }
}

function setTransitions(sBackgroundPositionX, sBackgroundPositionY, iXPixels, iYPixels, iDuration, iPanSpeed) {
//  alert('sBackgroundPositionX: ' + sBackgroundPositionX);
//  alert('sBackgroundPositionY: ' + sBackgroundPositionY);
  sOriginalBackgroundPositionX = sBackgroundPositionX;
  sOriginalBackgroundPositionY = sBackgroundPositionY;
  iXDifference = iXPixels - sBackgroundPositionX;
  iYDifference = iYPixels - sBackgroundPositionY;
  nTransitions = Math.round(iDuration/iPanSpeed);
  iIteration = 1;
  
  iIntervalId = setInterval("moveBackground(" + iXPixels + ", " + iYPixels + ", " + iXDifference + ", " + iYDifference + ")", iPanSpeed);
}

function sendInvite() {
  
//alert('validateSave');  
  var sURL = 'processAjaxRequest.php?type=sendInvite';
  var sParameters = $('tellafriend').serialize(true);
//alert('sParameters: ' + sParameters);

  // Ajax request that expects HTML back
  var oAjaxRequest = new Ajax.Updater(
  	{success: 'wrapper'}, 
  	sURL, 
  	{
  		method: 'GET', 
  		parameters: sParameters,
  		evalScripts: true,
  		onFailure: showError
  	});
  
//alert('completed validateSave');
  return false; // necessary so that the form won't submit
}

function ajaxSave(sObject) {
  
//alert('validateSave');  
  var sURL = 'processAjaxRequest.php?type=save' + sObject;
  var sParameters = $(sObject.toLowerCase() + 'Form').serialize(true);
//alert('sParameters: ' + sParameters);

  // Ajax request that expects HTML back
  var oAjaxRequest = new Ajax.Updater(
  	{success: 'tableContent'}, 
  	sURL, 
  	{
  		method: 'GET', 
  		parameters: sParameters,
  		evalScripts: true,
  		onFailure: showError
  	});
  
alert('completed validateSave');
//  return false; // necessary so that the form won't submit

}


function showError() {
	// Update the error notification field
	$('error').update('There was a problem submitting the Ajax request.');
}


function ajaxDelete(iId, sObject) {
//    var spinner = document.getElementById('spinner'+iEventId);

  var sURL = 'processAjaxRequest.php?type=delete' + sObject + '&objectName=' + sObject;
  var sParameters = 'id=' + iId;
//alert('url: ' + sURL + ' ' + sParameters);
  
  var oAjaxRequest = new Ajax.Request(
  	sURL, 
  	{
  		method: 'GET', 
  		parameters: sParameters,
  		onSuccess: deleteRow,
  		onFailure: showError
  	});

//    document.getElementById('delete'+iId).style.display = "none";
//    spinner.style.display = "inline";
return false; // necessary so that the form won't submit
}


function deleteRow(originalRequest) {
	// Delete the appropriate row
  var objXML = originalRequest.responseXML;
  var iResponse = "";
  var sDivId = "";
  try {
    iResponse = objXML.getElementsByTagName('data')[0].getAttribute('response');
    sObject = objXML.getElementsByTagName('data')[0].getAttribute('objectName');
    sDivId = 'tr' + sObject + objXML.getElementsByTagName('data')[0].getAttribute('id');
  }
  catch (sErr) { alert('An error occurred. Please try again.'); }

  if (iResponse == 1) {
    //delete the TR for this date
    Effect.Fade(sDivId, { duration: 1.5 });
  }
  else {
    alert("There was a problem deleting the " + sObject.toLowerCase() + ". Please try again.");
    //Hide the spinner, show the delete link
//    $('spinner'+iEventDateId).hide();
//    $('imgDelete'+iEventDateId).show();
  }

}
