var searchResultArea;
function processReqChange()
{
  // only if req shows "complete"
  // 4=complete, 3=interactive, 2=loaded, 1=loading, 0=uninitialized
  if (requestSearch.readyState == 4)
  {
    // only if "OK"
    if (requestSearch.status == 200)
    {
       searchResultArea.innerHTML = requestSearch.responseText;
    }
    else
    {
       searchResultArea.innerHTML = "<p class='c' style='display:inline;'>There was a problem retrieving the search:<br/>" + requestSearch.statusText + "</p>";
    }
    timeSearch = 0;
  }
  else
  {
    timeSearch++;
    if (timeSearch > 150)
    {
      requestSearch.abort();
      searchResultArea.innerHTML = "<p class='c' style='display:inline;'>Too many results; try again.</p>";
    }
  }
}


function processReqChangeFlickr()
{
  // only if req shows "complete"
  // 4=complete, 3=interactive, 2=loaded, 1=loading, 0=uninitialized
  if (requestFlickr.readyState == 4)
  {
    // only if "OK"
    if (requestFlickr.status == 200)
    {
       flickrResultArea.innerHTML = requestFlickr.responseText;
    }
    else
    {
       flickrResultArea.innerHTML = "<p class='c' style='display:inline;'>Flickr.com images are not available:<br/>" + requestFlickr.statusText + "</p>";
    }
    timeFlickr = 0;
  }
  else
  {
    timeFlickr++;
    if (timeFlickr > 500)
    {
      requestFlickr.abort();
      flickrResultArea.innerHTML = "<p class='c' style='display:inline;'>Flickr.com server timed out.</p>";
    }
  }
}


function processReqChangeFriend()
{
  // only if req shows "complete"
  // 4=complete, 3=interactive, 2=loaded, 1=loading, 0=uninitialized
  if (requestFriend.readyState == 4)
  {
    // only if "OK"
    if (requestFriend.status == 200)
    {
       friendArea.innerHTML = requestFriend.responseText;
    }
    else
    {
       friendArea.innerHTML = "Site problem:" + requestFriend.statusText;
    }
    friendDone = true;
  }
}
var friendArea;
var friendDone = true;
var friendsDone = 0;
var friendWait = 0;
function renderFriends()
{
    if (friendDone)
    {
       friendDone = false;
       friendsDone++;
       switch (friendsDone)
       {
          case 1:
             friendRender("qyv");
             break; 
          case 2:
             friendRender("themediaman");
             break; 
          case 3:
             friendRender("k");
             break; 
          case 4:
             friendRender("ninjalicker");
             break; 
          case 5:
             friendRender("girl");
             break; 
          default:
             friendDone = true;
             break;
       }
    }

    if (!friendDone)
    {
/*
    friendWait++;
    if (friendWait > 20)
    {
       requestFriend.abort();
       friendArea.innerHTML = "Site slow or not responding.";
       friendDone = false;
    }
*/
       setTimeout("renderFriends()", 250);
    }
}
function friendRender(friend)
{
   friendArea = document.getElementById("div_" + friend);
   friendArea.innerHTML = "Loading ....";
   friendWait = 0;
   loadFriend('php/friend_blog.php?q=' + friend, processReqChangeFriend);
}

function searchRender(searchtext, areaId)
{
   searchResultArea = document.getElementById(areaId);
   timeSearch=0;
   loadSearch('php/journal_search.php?q=' + searchtext, processReqChange);
}

var timeFlickr;
function flickrRender(areaId)
{
   flickrResultArea = document.getElementById(areaId);
   timeFlickr = 0;
   loadFlickr('php/flickr.html', processReqChangeFlickr);
}

var doSearch = false;
var oldSearch = "";
var timeSearch = 0;
var isTyping = false;
function searchFocus(textbox, areaId)
{
  doSearch = true;
  setTimeout("searchOn('" + textbox.id + "', '" + areaId + "');", 2000);
}
function searchBlur(textbox)
{
  doSearch = false;
}
function searchKeyPress(textbox)
{
  isTyping = true;
  return true;
}
function searchOn(textboxId, areaId)
{
  var textbox = document.getElementById(textboxId);
  var area = document.getElementById(areaId);
// trim whitespace
  var search = (textbox.value.replace(/^\W+/,'')).replace(/\W+$/,'');
  if (isTyping)
  {
    isTyping = false;
  }
  else
  {
    if (search.length > 2)
    {
      if (oldSearch != search)
      {
        area.innerHTML = "<p class='c' style='display:inline;'>Searching....</p>";
        searchRender(search, areaId);
        oldSearch = search;
      }
    }
    else
    {
      area.innerHTML = "";    
    }
  }
  if (doSearch)
  {
    setTimeout("searchOn('" + textboxId + "', '" + areaId + "');", 1000);
  }
}
function toggleArea(id, button)
{
  var area = document.getElementById('area' + id);
  if (area.className == 'areaHidden')
  {
  // 20070301 make sure to renderfriends only when area is exposed
  if (id == "FriendsOnTheWeb")
  {
    if (!renderedFriends)
    {
       renderFriends();
    }
    renderedFriends = true;
  }
    area.className = 'areaVisible';
    button.innerHTML = '&nbsp;-&nbsp;';
    var posn = hiddenSidebarItems.indexOf(id);
    if (posn >= 0)
    {
      var temp = new Array();
      temp = hiddenSidebarItems.split("_");
      hiddenSidebarItems = "";
      for (i=1; i<temp.length; i++)
      {
        if (temp[i].indexOf(id) < 0)
        {
          hiddenSidebarItems += "_" + temp[i]; 
        }
      } 
    }
  } 
  else
  {
    area.className = 'areaHidden';
    button.innerHTML = '&nbsp;+&nbsp;';
    hiddenSidebarItems += "_" + id;
  }
}


function processReqChangeFavourite()
{
  // only if req shows "complete"
  // 4=complete, 3=interactive, 2=loaded, 1=loading, 0=uninitialized
  if (requestFavourites.readyState == 4)
  {
    // only if "OK"
    if (requestFavourites.status == 200)
    {
       favouriteArea.innerHTML = requestFavourites.responseText;
    }
    else
    {
       favouriteArea.innerHTML = "Site problem:" + requestFavourites.statusText;
    }
    favouriteDone = true;
  }
}
var favouriteArea;
var favouriteDone = true;
var favouritesDone = 0;
var favouriteWait = 0;
function renderFavourites()
{
    if (favouriteDone)
    {
       favouriteDone = false;
       favouritesDone++;
       switch (favouritesDone)
       {
          case 1:
             favouriteRender("andrew");
             break; 
          case 2:
             favouriteRender("blogto");
             break; 
          case 3:
             favouriteRender("qwantz");
             break; 
          case 4:
             favouriteRender("shorpy");
             break; 
          case 4:
             favouriteRender("twentysided");
             break; 
          default:
             favouriteDone = true;
             break;
       }
    }

    if (!favouriteDone)
    {
       setTimeout("renderFavourites()", 250);
    }
}
function favouriteRender(favourite)
{
   favouriteArea = document.getElementById("div_" + favourite);
   favouriteArea.innerHTML = "Loading ....";
   favouriteWait = 0;
   loadFavourite('php/favourites.php?q=' + favourite, processReqChangeFavourite);
}
