var panak = {
    _o: null, //objekt jQuery
    _oo: null, //objekt jQuery
    _w: 100,
    _h: 151,
    top: 0,
    left: 0,
    _scrollTimeout: null,
    _working: false,
    _home: null,
    _infowindow: null,
    init: function () {
        this._o = $('<div id="panak"></div>');
        this._o.width(this._w).height(this._h);
        this._o.css({
            position: 'absolute',
            top: 0,
            left: 0
        });
        this._o.hide();
        //do stvorca vlozime panacika
        this._oo = this._o.clone();
        this._oo.removeAttr('id');
        this._oo.addClass('panak');
        this._oo.show();
        this._o.append(this._oo);
        //cely objekt vlozime do body
        $('body').append(this._o);
        //zapozicujeme ho nad domov
        this._home = $('#panakHome');
        this.goHome();
        //eventy na scrolovanie okna a resize okna
        var scrolresTimeout = null;
        $(window).scroll(function () {
            if (panak.isAtWork()) {
                window.clearTimeout(scrolresTimeout);
                scrolresTimeout = window.setTimeout(function () {
                    panak.stayAtWork();
                }, 500);
            }
        });
        $(window).resize(function () {
            if (panak.isAtWork()) {
                window.clearTimeout(scrolresTimeout);
                scrolresTimeout = window.setTimeout(function () {
                    panak.stayAtWork();
                }, 500);
            }
        });
    },
    isAtWork: function () {
        return this._working;
    },
    hide: function () {
        this._o.hide();
    },
    show: function () {
        this._o.show();
    },
    move: function (top, left, callback, speed) {
        if (typeof speed == 'undefined') {
            speed = 1000;
        }
        this.top = top;
        this.left = left;
        this._o.animate({
            left: this.left,
            top: this.top
        },{
            duration: speed,
            complete: callback
        });
    },
    appear: function (top, left, callback, speed) {
        if (typeof speed == 'undefined') {
            speed = 1000;
        }
        this.top = top;
        this.left = left;
        this._o.css({
            left: this.left,
            top: this.top
        });
        if (typeof(callback) == 'function') {
            callback.call(this);
        }
    },
    go: function (top, left) {
        this.top = top;
        this.left = left;
        this._o.stop().css({
            top: top,
            left: left
        });
    },
    pohov: function () {
        this._oo.css('backgroundPosition','0px 0px');
    },
    ukazPrstom: function () {
        this._oo.css('backgroundPosition','0px -' + this._h + 'px');
    },
    zmurkni1okom: function () {
        this._oo.css('backgroundPosition','-' + this._w + 'px 0px');
    },
    zmurkni: function () {
        this._oo.css('backgroundPosition','-' + this._w + 'px -' + this._h + 'px');
    },
    getHomePos: function () {
        var homeOffset = this._home.offset();
        var top = homeOffset.top + (this._home.height() / 2) - (this._h / 2);
        var left = homeOffset.left + (this._home.width() / 2) - (this._w / 2);
        return {top: top, left: left};
    },
    goHome: function () {
        var homePos = this.getHomePos();
        this.go(homePos.top, homePos.left);
    },
    move2Work: function (callback) {
        this._working = true;
        this.appear(($(window).height() + $(window).scrollTop() - this._h - 2), ($(window).width() + $(window).scrollLeft() - this._w - 2), callback, 700);
    },
    stayAtWork: function () {
        this.move(($(window).height() + $(window).scrollTop() - this._h - 2), ($(window).width() + $(window).scrollLeft() - this._w - 2), null, 200);
    },
    startWorking: function (callback) {
        //uvedieme panacika do provozu
        this.goHome();
        // this._o.fadeIn(500);
        this._o.show();
        panak.move2Work(callback);
    },
    stopWorking: function () {
        //skryjeme panacika
        this._working = false;
        var homePos = this.getHomePos();
        this.move(homePos.top, homePos.left, null, 500);
        this._o.fadeOut(500);
    },
    _zmurkajTimeout: null,
    zmurkaj: function () {
        this._zmurkajTimeout = window.setTimeout(function () {
            panak.zmurkni();
            window.setTimeout(function () {
                panak.pohov();
            },300);
            panak.zmurkaj();
        }, Math.round(Math.random() * 10000 + 400));
    },
    rozpravaj: function (html, akoDlho, callback) {
        //vytvorime infowindow
        if (!this._infowindow) {
            var w = 202;
            this._infowindow = $('<div class="infowindow"></div>');
            this._infowindow.css({
                position: 'absolute',
                width: w,
                height: 'auto',
                left: (-w + this._w - 5) + 'px'
            });
            this._infowindow.hide();
            this._infowindow.appendTo(this._o);
            //zaoblenia hore
            var t = $('<div></div>');
            t.css({
                'background': 'url(/public/themes/images/buble-top-ie.png) no-repeat top left',
                height: '11px',
                width: '202px',
                overflow: 'hidden'
            });
            this._infowindow.append(t);
            //text
            var mluva = $('<div class="mluva"></div>');
            mluva.css({
                background: '#36b34c',
                color: '#FFF',
                borderLeft: '1px solid #0f8a24',
                borderRight: '1px solid #0f8a24',
                padding: '0 10px',
                margin: 0
            });
            this._infowindow.append(mluva);
            //zaoblenia dole
            var b = $('<div></div>');
            b.css({
                'background': 'url(/public/themes/images/buble-bottom-ie.png) no-repeat top left',
                height: '11px',
                width: '202px',
                overflow: 'hidden'
            });
            this._infowindow.append(b);
            //kvacka
            var kvacka = $('<img src="/public/images/kvacka.png" alt="" />');
            kvacka.css({
                    position: 'absolute',
                    left: '50%',
                    bottom: '-19px'
            });
            this._infowindow.append(kvacka);
        }
        //prestaneme zmurkat a zobrazime infowindow
        window.clearTimeout(this._zmurkajTimeout);
        this.pohov();
        this.ukazPrstom();
        this._infowindow.find('.mluva').html(html);
        this._infowindow.fadeIn();
        this._infowindow.css('top', -this._infowindow.height() - 15);
        window.setTimeout(function () {
            panak.hawk();
            if (typeof(callback) == 'function') {
                callback.call(panak);
            }
        }, akoDlho);
    },
    hawk: function () {
        if (this._infowindow) {
            this._infowindow.fadeOut();
        }
        this.pohov();
        this.zmurkaj();
    },
    rozpravajPostupne: function (vety, idx) {
        if (!vety.length) {
            return false;
        }
        if (!idx || idx >= vety.length) {
            idx = 0;
        }
        var casZdrzania = Math.round(Math.random() * 5000) + 5000;
        window.setTimeout(function () {
            panak.rozpravaj(vety[idx].html, vety[idx].duration, function () {
                panak.rozpravajPostupne(vety, idx+1);
            });
        }, casZdrzania);
    }
};
$(function () {
    panak.init();
});
