/*
* Notify Bar - jQuery plugin
*
* Copyright (c) 2009-2010 Dmitri Smirnov
*
* Licensed under the MIT license:
* http://www.opensource.org/licenses/mit-license.php
*
* Version: 1.2.1
*
* Project home:
* http://www.dmitri.me/blog/notify-bar
*/

/**
* param Object
*/
jQuery.notifyBar = function(settings) {

    (function($) {

        var bar = notifyBarNS = {};
        notifyBarNS.shown = false;

        if (!settings) {
            settings = {};
        }
        // HTML inside bar
        notifyBarNS.html = settings.html || "Your message here";

        notifyBarNS.html += "<div id='jquery-notify-bar-hide-button' class='hide_button'><a href='#'>x</a></div>";

        //How long bar will be delayed, doesn't count animation time.
        notifyBarNS.delay = settings.delay || 2000;

        //How long notifyBarNS bar will be slided up and down
        notifyBarNS.animationSpeed = settings.animationSpeed || 200;

        //Use own jquery object usually DIV, or use default
        notifyBarNS.jqObject = settings.jqObject;

        //Set up own class
        notifyBarNS.cls = settings.cls || "";

        if (notifyBarNS.jqObject) {
            bar = notifyBarNS.jqObject;
            notifyBarNS.html = bar.html();
        } else {
            bar = $("<div></div>")
                      .addClass("jquery-notify-bar")
                      .addClass(notifyBarNS.cls)
                      .attr("id", "__notifyBar");
        }

        bar.html(notifyBarNS.html).hide();
        var id = bar.attr("id");
        switch (notifyBarNS.animationSpeed) {
            case "slow":
                asTime = 600;
                break;
            case "normal":
                asTime = 400;
                break;
            case "fast":
                asTime = 200;
                break;
            default:
                asTime = notifyBarNS.animationSpeed;
        }

        if (bar != 'object');
        {
            // For multiple message before time out
            var oldBar = document.getElementById("__notifyBar");
            if (oldBar) {
                $(oldBar).html(notifyBarNS.html);
            }
            else {
                $("body").prepend(bar);
            }
        }

        bar.slideDown(asTime);

        if (true == settings.bAutoHide) {

            // If taken from DOM dot not remove just hide
            if (bar.attr("id") == "__notifyBar") {
                setTimeout("$('#" + id + "').slideUp(" + asTime + ", function() {$('#" + id + "').remove()});", notifyBarNS.delay + asTime);
            } else {
                setTimeout("$('#" + id + "').slideUp(" + asTime + ", function() {$('#" + id + "')});", notifyBarNS.delay + asTime);
            }
        }
        else {
            // Add button to close bar if not use auto hide
            $("#jquery-notify-bar-hide-button").bind("click", function(e) {
                e.preventDefault();
                if (bar.attr("id") == "__notifyBar") {
                    setTimeout("$('#" + id + "').slideUp(" + asTime + ", function() {$('#" + id + "').remove()});", 50);
                } else {
                    setTimeout("$('#" + id + "').slideUp(" + asTime + ", function() {$('#" + id + "')});", 50);
                }
            });
        }

    })(jQuery)
};

