//Copyright 2011, Al Tenhundfeld
//Feel free to reuse and modify, but please keep reference to tenhundfeld.org

var acornDrop = (function() {

    var dropCount = 0;

    function beginWiggle(idx) {
        var $element = $('#acorn-container-' + idx);

        $element.wiggle('start', {wiggleDegrees: ['4','8','2','0','-2','-8','-2','0']});
        //$('#acorn-container-2').wiggle('start', {wiggleDegrees: ['4','8','2','0','-2','-8','-2','0']});

        setTimeout(function() {
            beginHardWiggle($element);
        }, 2000);
    }

    function beginHardWiggle($element) {
        $element.wiggle('stop');
        $element.wiggle('start', {wiggleDegrees: ['30','15','0','-15','-30','-15','0', '15']});

        setTimeout(function() {
            stopAndDrop($element);
        }, 1000);
    }

    function stopAndDrop($element) {
        var dropDistance = 400 - $element.position().top;

        $element.wiggle('stop');
        $element.animate({"top": "+=" + dropDistance + "px"}, "slow");

        dropCount++;

        if (dropCount === 10) {
            beginDanceQuestions();
        }
    }

    function beginDanceQuestions() {
        $('#question-container').show();
    }

    var init = function() {
        for (var i = 1; i <= 10; i++) {
            var randomTimeoutInterval = Math.floor(Math.random() * 11) * 1000;

            //Create a wrapper function to provide closure of i
            var delayedBeginWiggle = function(idx) {
                return function() {
                    beginWiggle(idx);
                }
            }(i);

            setTimeout(delayedBeginWiggle, randomTimeoutInterval);
        }
    };


    //Return an object with public methods/fields. #RevealingModulePattern
    return {
        init:init
    };

})();
