function Goat(source)
{
    this.source = $(source);
    this.el = this.source[0];
    this.randomize(4000);
    
    //this.run(-($(window).width() / 2), parseInt(this.source.css('left')), 3000)
}

Goat.prototype.randomize = function(time)
{
    var animations = ['']
    var self = this;
    this.timeout = setTimeout(function() {
        var r = Math.random();
        if (r < .3)
            self.jump();
        else if (r < .6)
            self.eat();
        else
            self.sleep();
        self.randomize();
    }, Math.random() * (time || (12000 + 6000)));
}

Goat.prototype.setSprite = function(name, position)
{
    this.source[0].style.backgroundImage = 'url(' + MEDIA_URL + 'img/goats/goat-' + name + '.gif' + ')';
    this.source[0].style.backgroundPosition = position || '0 0';
}

Goat.prototype.sprite = function(name, css)
{
    var self = this;
    return function () { self.setSprite(name, css); $(this).dequeue(); }
}

Goat.prototype.run = function(start, end, seconds) {
    return this.rest()
                  .queue(this.sprite('run'))
                  .css({left: start})
                  .animate({left: end}, seconds, 'linear')
                  .queue(this.sprite('rest'));
}

Goat.prototype.eat = function() {
    return this.rest().queue(this.sprite('eat', '-19px 0px')).delay(2000).queue(this.sprite('rest'));
}

Goat.prototype.jump = function() {
    return this.rest().queue(this.sprite('jump', '-4px -11px')).delay(1000).queue(this.sprite('rest'));
}

Goat.prototype.sleep = function() {
    return this.rest().queue(this.sprite('sleep', '1px -13px')).delay(3000).queue(this.sprite('rest'));
}

Goat.prototype.rest = function() {
    return this.source.stop(true).queue(this.sprite('rest')).delay(1);
}

$(function()
{
    window.goat = new Goat('#logo .goat');
})
