﻿jQuery.fn.statusBarInit = function() {

   return this.each(function() {

      var owner = this;
      $('<div class="sbMain"/>').appendTo(owner);
      var main = $(".sbMain", owner);

      if (!main.length)
         return;

      $('.sbMain').after('<div class="sbTooltip"/>');
      $('<div class="sbContent"/>').appendTo(main);
      $(document).bind('keyup', 'esc', function(event) {
         hideTip();
         return true; //Continue with other escape stuff if any
      });
   });
};

var toolTipHandler = 0;
function hideTip() {
   $('.statusIcon', $('.sbContent')).removeClass('icon16mailopened');
   $('.statusIcon', $('.sbContent')).addClass('icon16mailclosed');
   $(".sbTooltip").fadeOut(200);
}

function showTip(fadeTo) {
   $('.close', $('.sbTooltip')).click(function() {
      hideTip();
   });
   $(".sbTooltip").stop();
   $('.statusIcon', $('.sbContent')).removeClass('icon16mailclosed');
   $('.statusIcon', $('.sbContent')).addClass('icon16mailopened');
   $('.sbTooltip').show(0);
   $('.sbTooltip').fadeTo(10, fadeTo !== undefined ? fadeTo : 0.9);
}
function statusBarSetComplete(statusText, tooltip, success, tooltipPosition) {
   if (success === undefined)
      success = true;
   $(".sbTooltip").empty().removeClass('sbTooltipActive');

   $(".sbContent").html(statusText + '<div class="complete"/>' + '<span class="statusIcon"/>');
   if (tooltip) {
      $('.sbTooltip').html(tooltip + '<span title="Close" class="close icon16close"></span>');
      $('.statusIcon', $('.sbContent')).addClass('icon16mailopened');
   }
   else
      $('.statusIcon', $('.sbContent')).addClass('icon16complete');

   if (success)
      $('.sbTooltip').removeClass('ui-state-error');
   else
      $('.sbTooltip').addClass('ui-state-error');

   if (tooltip) {
      if (tooltipPosition === undefined)
         tooltipPosition = 'default';
      $(".sbContent").mouseover(function() {
         showTip();
      });
      $(".sbTooltip").addClass('sbTooltipActive');
      var pos = $(".sbMain").position();
      if (success) {

         $('.sbTooltip').css('z-index', '1000');

         switch (tooltipPosition) {
            case 'center':
               $('.sbTooltip').css('top', '45%');
               $('.sbTooltip').css('left', '40%');
               showTip(1);
               break;
            default: //'default' and all other variants
               $('.sbTooltip').css('right', 18);
               $('.sbTooltip').css('bottom', 23);
               $('.sbTooltip').css('top', '');
               $('.sbTooltip').css('left', '');
               showTip();
               break;
         }
      }
      else {
         $('.sbTooltip').css('top', '45%');
         $('.sbTooltip').css('left', '40%');
         showTip(1);
      }

      if (toolTipHandler)
         clearTimeout(toolTipHandler);
      toolTipHandler = setTimeout(hideTip, (tooltipPosition == 'center' || !success ? 500 * 1000 : 5 * 1000));
   }
}

function statusBarShow(text) {

   var MAX_LENGTH = 45;
   var content = $(".sbContent");

   var message = $("#statusmessage span[name='" + text + "']").html();

   if (text == '' || text == null)
      message = $("#statusmessage span[name='default']").html();
   else if (message == null)
      message = text;


   content.html(stringClipper(message, MAX_LENGTH) + '<div class="loading"/>');
   content.fadeIn(500);

   function stringClipper(text, maxLength) {

      if (text.length > maxLength)
         return text.substring(0, (maxLength - 2)) + "...";

      return text;
   };
};