var g_MenuCallbacks = {};

$(document).ready(function(){

  // Menu
  $('.header .menu').clickMenu({
    onClick: function(){
      g_MenuCallbacks[$(this).attr('id')]($(this));
    }
  });

  // Setup windows

  // Make windows draggable
  $('.window').draggable({
    handle: '.title'
  });
  // Set cursor for titlebar to indicate that it is draggable
  $('.window .title').css('cursor', 'move');

  // Make windows resizable
  $('.window').resizable({
    minWidth: 120,
    minHeight: 120,
    transparent: true,
    proxy: 'window-proxy',
    // Resize client area
    stop:	function(e, ui) {
      var client = $(this).children('.client');
      var title = $(this).children('.title');
      client.width(
        parseInt($(this).width())
        - parseInt(client.css('padding-left'))
        - parseInt(client.css('padding-right'))
        - parseInt(client.css('border-left-width'))
        - parseInt(client.css('border-right-width'))
      );
      client.height(
        parseInt($(this).height())
        - parseInt(client.css('padding-top'))
        - parseInt(client.css('padding-bottom'))
        - parseInt(client.css('border-top-width'))
        - parseInt(client.css('border-bottom-width'))
        - parseInt(title.css('height'))
        - parseInt(title.css('margin-top'))
      );
    }
  });

  // Click handlers for window controls
  
  // Shade
  $('.window .title .shade a').toggle(window_shade, window_unshade);
  // Unshade
  $('.window .title .unshade a').toggle(window_unshade, window_shade);
  // Close
  $('.window .title .close a').click(function(){
    if ( $(this).parent().children('.unshade').size() )
      window_unshade();
    $(this).parent().parent().parent().parent().hide();
  });

});

// Menu callbacks

g_MenuCallbacks.menu_view_tiles = function (jqElement) {
  var win = $('#window_tiles');
  win.toggle();
  if ( win.is(':visible') )
    jqElement.addClass('checked');
  else
    jqElement.removeClass('checked');
}

g_MenuCallbacks.menu_view_map = function (jqElement) {
  var win = $('#window_map');
  win.toggle();
  if ( win.is(':visible') )
    jqElement.addClass('checked');
  else
    jqElement.removeClass('checked');
}

// Window shade button
function window_shade() {
  var li = $(this).parent();
  var win = li.parent().parent().parent();
  win.data('org_height', win.height());
  win.height(20);
  li.removeClass('shade');
  li.addClass('unshade');
  $(this).attr('title', 'Unshade');
  win.children('.client').hide();
}

// Window unshade button
function window_unshade() {
  var li = $(this).parent();
  var win = li.parent().parent().parent();
  win.height(win.data('org_height'));
  li.removeClass('unshade');
  li.addClass('shade');
  $(this).attr('title', 'Shade');
  win.children('.client').show();
}


