notify = new function()
{
  this.arrMessages = {};
  this.timeout = null;
  
  this.message = function(message, level)
  {
    if(!level)
      level = 1;
    this.arrMessages = [[level, 0, message]];
    this.show6secs();
  }
  this.messages = function(messages)
  {
    this.arrMessages = messages;
    this.show6secs();
  }
  this.show = function ()
  {
	  if(this.arrMessages.length == undefined || this.arrMessages.length == 0)
	    return;
	    
    if($('#notifies').size())
    {
      $('#notifies').remove();
    }
    inner = '<div class="notifies" id="notifies">' +
  '<div class="bg">' +
  '<div class="header">' + 
  '<span><a href="#" onclick="notify.hide(); return false">Закрыть X</a></span>' + 
  '</div>' + 
  '<div class="messages">';
    for ( i in this.arrMessages )
    {
      switch(this.arrMessages[i][0])
      {
        case 1:
          inner = inner + '<p class="message green">' + this.arrMessages[i][2] + '</p>';
        break; 
        case 2:
          inner = inner + '<p class="message yellow">' + this.arrMessages[i][2] + '</p>';
        break; 
        default:
          inner = inner + '<p class="message red">' + this.arrMessages[i][2] + '</p>';
        break; 
      }    
    }
    inner = inner + '</div></div></div>';
    $('body').append(inner);
  }
  this.show6secs = function ()
  {
    if(this.timeout != null)
      window.clearTimeout(this.timeout);
    this.show();
    this.timeout = window.setTimeout(this.hide, 6000);
  }
  
  this.hide = function ()
  {
    $('#notifies').animate(
      { 
        opacity: 'toggle'
      }, 
      "slow");
    if(this.timeout != null)
    {
      window.clearTimeout(this.timeout);
      this.timeout = null;
    }
  }
}

myFile = new function()
{
  this.loadHandlers = [];

  this.messages = {};
  this.processMessages = function (messages)
  {
    notify.messages(messages);
  }
  this.processMessage = function (message)
  {
    if(typeof(message) == 'string')
    {
      // alert(message);
      notify.message(message)
    }
    else
    {
      // alert(message[2]);
      notify.message(message[2], 1);
    }
  }
  this.processError = function (message)
  {
    if(typeof(message) == 'string')
    {
      // alert(message);
      notify.message(message, 4)
    }
    else if(typeof(message) == 'array' && message.length > 2)
    {
      // alert(message[2]);
      notify.message(message[2], message[0]);
    }
  }
  
  this.load = function ()
  {
    this.processMessages(this.messages);
    for( i in this.loadHandlers)
      this.loadHandlers[i]();
  }
  this.registerLoadFunction = function (handler)
  {
    this.loadHandlers.push(handler);
  }
  this.confirm = function (message, handler)
  {
    if(confirm(message)) 
    { 
      handler(); 
    }
  }
}

$(document).ready (function() { myFile.load() } );
