/*
 * Properties and methods to slide in and out from right side of screen.
 *
 * Trays have several properties associated with them.
 *   slide.pinned = is the tray pinned open
 *   

 */

corewars.slidey = {};

corewars.slidey.setMotion = function (direction) {
    gamepropSet(this, 'slide.inMotion', direction);
};

corewars.slidey.setAtRest = function () {
    gamepropSet(this, 'slide.inMotion', 'stopped');

};

corewars.slidey.pinOpen = function() {
    gamepropSet(this, 'slide.pinned', true);
};

corewars.slidey.unpin = function() {
    gamepropSet(this, 'slide.pinned', false);
};

corewars.slidey.conceal = function(deck) {
    corewars.slidey.setMotion(this, 'conceal');
    $(deck).animate({left:"684px", width:"50px"},
		    {duration: 50,
		     complete: corewars.slidey.setAtRest});
    // Do halo effect here...
};

corewars.slidey.reveal = function(deck) {
    corewars.slidey.setMotion(this, 'reveal');
    $(deck).animate({left:"484px", width:"250px"},
		    {duration: 50,
		     complete: corewars.slidey.setAtRest});
    // Do halo effect here...
};

corewars.slidey.hoverOver = function() {
    var pinned = gameprop(this, 'slide.pinned');
    var moving = gameprop(this, 'slide.inMotion');

    if (!pinned && moving == 'stopped') {
	corewars.slidey.reveal();
    }
};

corewars.slidey.hoverDone = function() {
    var moving = gameprop(this, 'slide.inMotion');
    var pinned = gameprop(this, 'slide.pinned');
    if (!pinned && moving == 'reveal') {
	corewars.slidey.conceal();
    }
};

corewars.slidey.clickSlide = function() {
    var pinned = gamepropToggle(this, 'slide.pinned');
    if (pinned) {
	corewars.slidey.reveal(this);
    } else {
	corewars.slidey.conceal(this);
    }
};

corewars.slidey.init = function() {
    $(".slidy").click(corewars.slidey.clickSlide);
/*    $(".slidy").hover(corewars.slidey.hoverSlide); */
};
