IZI.loader = {
  width: 300,
  height: 140,
  loading: false,
  loaderCount: 0,

  show: function ()
  {
    this.loaderCount++;
    if ( IZI.loader.loading ) return;
    var div = document.createElement( "div" );
    var header = document.createElement( "div" );
    var overlay = document.createElement( "div" );
    header = $(header);
    overlay = $(overlay);
    div = $(div);

    div.setAttribute( 'id', 'IZI_Loader_Container' );
    overlay.setAttribute( 'id', 'IZI_Loader_Overlay' );
    header.addClass( 'header' );
    header.addClass( 'greenHeader' );
    header.innerHTML = "loading...";

    overlay.setStyle('position', 'absolute');
    div.setStyle('position', 'absolute');

    var winSize = window.getSize();
    overlay.setStyle( 'height', winSize.scrollSize.y );
    overlay.setStyle( 'width', winSize.scrollSize.x );
    div.setStyle( 'height', IZI.loader.height );
    div.setStyle( 'width', IZI.loader.width );

    overlay.setStyle( 'top', 0 );
    overlay.setStyle( 'left', 0 );
    div.setStyle( 'top', ((window.getHeight() / 2) - (IZI.loader.height / 2)) + winSize.scroll.y );
    div.setStyle( 'left', ((window.getWidth() / 2) - (IZI.loader.width / 2)) + winSize.scroll.x );

    overlay.setStyle( 'background-color', "#000000" );
    overlay.setStyle( 'visibility', 'hidden' );

    document.body.appendChild( overlay );
    div.appendChild( header );
    document.body.appendChild( div );
    IZI.toolbox.hideSelects();
    $('IZI_Loader_Overlay').setOpacity( 0.6 );
    IZI.loader.loading = true;
  },

  hide: function ()
  {
    if ( !IZI.loader.loading ) return;
    IZI.loader.loaderCount--;
    if ( IZI.loader.loaderCount <= 0 ) {
      $('IZI_Loader_Overlay').remove();
      $('IZI_Loader_Container').remove();
      IZI.toolbox.showSelects();
      IZI.loader.loading = false;
      IZI.loader.loaderCount = 0;
    }
  },

  message: function ( data )
  {
    var className;
    if ( !data.success ) {
      message = data.error;
      className = 'error';
    } else {
      message = data.message;
      className = 'success'
    }
    var div = $('IZI_Loader_Container');
    div.setStyle("background-image", "none");
    var button = new Element( 'button' ).setHTML( "OK" );
    button.addEvent( 'click', IZI.loader.hide );
    div.appendChild( new Element( 'p', {'class':className} ).setText( message ) );
    div.appendChild( button );
    button.focus();
  }
};