$().ready(function() {  

  // Setup fixed logo on sidebar
  $(window).scroll(function (event) {
    var y = $(this).scrollTop();
    if (y > 60 && $('#sidelogo').css('display') == 'none') { $('#sidelogo').fadeIn(200); }
    else if (y <= 60 && $('#sidelogo').css('display') != 'none') { $('#sidelogo').fadeOut(200); }
  });

  // Setup selectors
  $('#search #page, #lightbox #page').selectable({
    filter: '.asset',
    cancel: '.asset',
    tolerance: 'touch',
    selecting: function(e,ui) {
      $(ui.selecting).removeClass('ui-selected');
      var span = $(ui.selecting).find('.toolbelt span');
      $(span).click();
    },
    unselecting: function(e,ui) {
      var span = $(ui.unselecting).find('.toolbelt span');
      $(span).click();
    },
    selected: function(e,ui) {
      $(ui.selected).removeClass('ui-selected');
    },
    start: function (e,ui) {
      $('input').blur();
    },
    stop: function (e,ui) {
      $('.count').html($('#page .asset.selected').length);
    }
  });
  $('.toolbelt input, .toolbelt span').click(function() {
    var asset = $(this).parents('.asset');
    var input;
    
    if ($(this).is('input')) { 
      input = this;
    } else {
      input = $(asset).find('input');
      if ($(input).is(':checked')) {
        $(input).removeAttr('checked');
      } else {
        $(input).attr('checked', 'checked');
      }
    } 
    if ($(input).is(':checked')) {
      if (!$(asset).hasClass('selected')) {
        $(asset).addClass('selected');
        show_bumpers();
      }
    } else { 
      if ($(asset).hasClass('selected')) {
        $(asset).removeClass('selected');
        hide_bumpers();
      }
    }
    $(':focus').blur();
    $('.count').html($('#page .asset.selected').length);
  });
  
  // Reset the page initially
  reset_page();
  
  // Enable all form elements last
  $('input[name="search"]').removeAttr('readonly');

});


// Show bumpers
function show_bumpers(always) {
  if (always || $('.toolbelt input:checked').length) {
    if (!$('#userbar').hasClass('bumper_opening')) {
      $('#userbar').addClass('bumper_opening');
      $('.bumper').css('display', 'block');
      $('.bumper').find('.icon').fadeIn(100);
      $('.bumper').stop(false, true).animate( { width: '26px' }, 200, 'easeOutQuart', function() { $('#userbar').removeClass('bumper_opening'); } );
    }
  }
}

// Hide bumpers
function hide_bumpers(always) {
  if (always || !$('.toolbelt input:checked').length) {
    if (!$('#userbar').hasClass('bumper_closing')) {
      $('#userbar').addClass('bumper_closing');
      $('.bumper').find('.icon').fadeOut(100, function() { $('.bumper').css('display', 'none'); } );
      $('.bumper').stop(false, true).animate( { width: '0px' }, 200, 'easeInQuad', function() { $('#userbar').removeClass('bumper_closing'); } );
    }
  }
}

// Reset the page
function reset_page() {

  // Setup draggable items
  $('.asset').has('.toolbelt').add( $('.asset img').parent('.asset') ).draggable({
    distance: 10,
    revert: 'invalid',
    opacity: 0.4,
    helper: 'clone',
    containment: 'body',
    cursor: 'pointer',
    cursorAt: { top: 147, left: 91 },
    appendTo: 'body',
    zIndex: 10,
    start: function(e, ui) {
      if (!$(ui.helper).hasClass('selected')) {
        $(ui.helper).addClass('selected');
      }
    }
  });

  // Setup drop zones
	$('.lightbox, .tool').droppable({
		accept: ".asset",
		tolerance: 'pointer',
		hoverClass: 'selected',
		activate: function(e, ui) {
      show_bumpers(true);
      var helper = $(ui.helper).find('input');
      var selector = $(ui.draggable).find('input');
      if (!$(selector).is(':checked')) {
        $(selector).attr('checked', 'checked');
        $(helper).attr('checked', 'checked');
        $(ui.draggable).addClass('selected');
        $('.count').html($('#page .asset.selected').length);
      }
		},
		deactivate: function(e, ui) {
		  if (!$(ui.helper).hasClass('drop_success')) {
        hide_bumpers();
      }
		},
		drop: function(e, ui) {
		  var self = this;
      var icon = $(self).find('.bumper .icon');
      if ($(icon).length) {
        var clone = $(icon).clone();
        var bumper = $(self).find('.bumper');
        $(clone).appendTo(bumper);
        $(icon).stop(true, true).hide('puff', { percent: 500 }, 00, function() {
          $(icon).remove();
          hide_bumpers();
          $(bumper).click();
        });
      }
      $(ui.helper).addClass('drop_success');
		},
		over: function(e, ui) {
		  $(ui.helper).stop().fadeTo(200, '0.7');
		},
		out: function(e, ui) {
		  $(ui.helper).stop().fadeTo(200, '0.4');
		}
	});

  // Show bumpers if necessary
  show_bumpers();
}
