// **************************************************************
// @Name: JavaScript jQuery Latawiec v.1.0
// @Autor: Tomasz Łabacki
// @Email: tomasz@labacki.com
// @www: http://labacki.com
// @Date: 20 July 2010
// @Last-change: 22 July 2010
// @License: Licensed to Agencja Reklamowa MiroArt
// @Require: jQuery (1.4 tested)
// @Language: pl
// **************************************************************
(function($) {
    $.fn.latawiec = function(options) {
        //budowanie obiektu będącego opcjami
        var opts = $.extend({}, $.fn.latawiec.defaults, options);
        //obsługa pozycji - display: fixed (pozycja stała) lub absolute (niestała, ale określona)
        if(opts.lockposition) {opts.position="fixed";}
        else {opts.position="absolute";}
        //obsługa położenia na osi x i y, są dwie opcje - albo pozycjonowanie określone (w px) albo wycentrowane
        if(options.center) {
            opts.x=0.5*$(window).width();
            opts.y=0.5*$(window).height();
        } else if(options===undefined || (options.x===undefined && options.y===undefined)){
            opts.x=Math.floor(Math.random()*$(window).width());
            opts.y=Math.floor(Math.random()*$(window).height());
        }
        //obsługa rozmiaru początkowego czcionki (wzięcie pod uwagę także czynnika skalującego)
        if(opts.maxfontsize) {opts.startfontsize=parseFloat(opts.fontfactor)*$(window).height();}
        else {opts.startfontsize*=parseFloat(opts.fontfactor);}
        //kontrola maksymalnego rozmiaru czcionki, po rozmiarze 2000px w firefoxie i po rozmiarze 2048px w Operze dzieją się dziwne rzeczy
        if(opts.startfontsize>2000) {opts.startfontsize=2000;}
        //iteracja po każdym wybranym elemencie dla tego pluginu
        return this.each(function() {
            //dodawanie wymaganych elementów css
            $(this).css({"display":"inline","font-size":opts.startfontsize,"position":opts.position,"cursor":"default","z-index":999});
            //wysokość i szerokość
            var height=$(this).innerHeight(), width=$(this).innerWidth();
            //poprawka wysokosci i szerokości
            $(this).css({"top":opts.y-0.5*height,"left":opts.x-0.5*width});
            //animacja
            $(this).animate({"font-size":opts.endfontsize,"opacity":!opts.fading,"top":opts.y,"left":opts.x}, opts.time, function(){$(this).remove();});
        });
    };

    //domyślne wartości parametrów
    $.fn.latawiec.defaults = {
        startfontsize: 900,        //początkowa (startowa) wielkość czcionki (tutaj w px, ale można podać inną, np. `em`)
        endfontsize: 0,            //końcowa wielkosć czcionki (tutaj w px, ale można podać inną, np. `em`)
        maxfontsize:false,         //jeśli przyjmie wartość "max" - czcionka będzie maksymalna w zależności od wielkości okna
        fontfactor:1,              //skalowanie początkowej wielkości czcionki, przydatne przy stosowaniu razem z maxfontsize=true
        time: 9000,                //czas wykonania animacji w ms
        x: null,                   //domyślna pozycja w poziomie do której zwinie się latawiec
        y: null,                   //domyślna pozycja w pionie do której zwinie się latawiec
        center:false,              //czy wyśrodkować napis na ekranie?
        lockposition: false,       //czy element ma być w stałym położeniu, niezależnie od przesuwania strony (css display:fixed - nie działa na IE!) czy nie (css display: absolute)?
        fading: false              //czy wraz z przyrostem animacji napis ma robić się przezroczysty?
    };
})(jQuery);
