﻿
function StatusBar(sel,options)
{
    var _I = this;       
    var _sb = null;
    
    // options     
    this.elementId = "_showstatus";
    this.prependMultiline = true;    
    this.afterTimeoutText = null;

    this.cssClass = "statusbar";
    this.highlightClass = "statusbarhighlight";
    this.errorClass = "statuserror";
    this.closeButtonClass = "statusbarclose";
    this.additive = true;   
    
    $.extend(this,options);
        
    if (sel)
      _sb = $(sel);
    
    // create statusbar object manually
    if (!_sb)
    {
        _sb = $("<div id='_statusbar' class='" + _I.cssClass + "'>" +
                "<div class='" + _I.closeButtonClass +  "'>")
                 .appendTo(document.body)                   
                 .show();
    }
    if (_I.showCloseButton)
        $("." + _I.cssClass).click(function(e) { $(_sb).hide(); });


    this.show = function(message, timeout, type, isError) {
        if (_I.additive) {
            if (type == 'genericRefresh')
                var html = "<div style='margin-bottom: 10px;' ><img src='/images/statusbar/statusbarSpinner.gif' class='statusicon' />" + message + "</div>";
            else if (type == 'twitterRefresh')
                var html = "<div style='margin-bottom: 10px;' ><img src='/images/statusbar/twitter_t_16x16.png' class='statusicon' />" + message + "</div>";
            else if (type == 'flickrRefresh')
                var html = "<div style='margin-bottom: 10px;' ><img src='/images/statusbar/camera.png' class='statusicon' />" + message + "</div>";
            else if (type == 'error')
                var html = "<div style='margin-bottom: 10px;' ><img src='images/statusbar/error.png' class='statusicon' />" + message + "</div>";

            _sb.append(html);
        }
        else {
            var t = _sb.find("div.statusbarclose");
            _sb.text("" + message).prepend(t);
        }

        _sb.slideDown(600);

        if (timeout) {
            if (isError)
                _sb.addClass(_I.errorClass);
            else
                _sb.addClass(_I.highlightClass);

            setTimeout(
                function() {
                    _sb.removeClass(_I.highlightClass);
                    _sb.slideUp(800);
                    if (_I.afterTimeoutText)
                        _I.show(_I.afterTimeoutText);
                },
                 timeout);
        }
    }  
    this.release = function()
    {
        if(_statusbar)
            $(_statusbar).remove();
    }       
}
// use this as a global instance to customize constructor
// or do nothing and get a default status bar
var _statusbar = null;
function showStatus(message,timeout,type,additive,isError)
{
    if (!_statusbar)
        _statusbar = new StatusBar();
    _statusbar.show(message,timeout,type,additive,isError);
}

