WindowManager = function() {
  var enabled = true;
  var self = this;
  var animFront = false;
  var animBack = false;
  
  sendBack = function(obj) {
    animBack = true;    
    var y = $j(obj).css("top");
    var x = $j(obj).css("left");
    var z = $j(obj).css("z-index");
  
    var active = $j(".active").get(0);
    var animDone = function() { animBack = false; animationComplete(); }
    $j(active).css("z-index", z);
    $j(".midback", active).removeClass("autoheight");
    $j(active).animate({top: y}, "normal").animate({left: x}, "normal", animDone);
    $j(".box").removeClass("active").addClass("inactive");
  }
  
  bringToFront = function(obj) {
    animFront = true;
    var animDone = function() { animFront = false; animationComplete(); }
    $j(obj).css("z-index", "7");
    $j(obj).removeClass("inactive").addClass("active");
    $j(obj).animate({top: 270, left: 300}, "slow", "easeOutBounce", animDone);
    $j(".midback", obj).addClass("autoheight");
  }
  
  animationComplete = function() {
    enabled = (!(animFront || animBack));
    if (enabled)
      self.init();
  }
  
  this.animate = function(o)
  {
    if (enabled) {
      $j(".box").unbind('click');
      enabled = false;
      sendBack(o);
      bringToFront(o);
    }
  }
  
  this.init = function() {
    $j(".box").click(function(o) { self.animate(this) } );
  }
}

var wm = new WindowManager();
$j(document).ready(wm.init);
