/*
  Feedback Popup functions
  (c) Development for the Masses, 2009
*/

var FEEDBACK = {};

FEEDBACK.__queue = new Array();

FEEDBACK.hide = function( id ) {
  document.getElementById( 'fb_w_' + id ).style.display = 'none';
  FEEDBACK.__queue[ id ].is_done = true;
  FEEDBACK.slide();
} // FEEDBACK.hide

FEEDBACK.add = function( header, content ) {

  var id = FEEDBACK.__queue.length;
  var tout = (FEEDBACK.__queue.length + 2) * 2000;

  var me = {};

  me.header = header;
  me.content = content;
	me.tout = tout;
	me.is_done = false;

  var d = document;
  var b = d.body;

  // wrapper div
  me.wrapper = d.createElement( 'div' );
  me.wrapper.id = 'fb_w_' + id;
  me.wrapper.className = 'feedback_wrapper';
  b.appendChild( me.wrapper );

  // header div
  var hdr = d.createElement( 'div' );
  hdr.className = 'hdr';
  hdr.appendChild( d.createTextNode( me.header ) );
  me.wrapper.appendChild(hdr);

  // span ttl [X]
  xclose = d.createElement( 'span' );
  xclose.className = 'x';
  xclose.onclick = function() {
    d.getElementById('fb_w_' + id).style.display = 'none';
  }
  xclose.appendChild( d.createTextNode('X') );
  hdr.appendChild(xclose);

  // content div
  xcontent = d.createElement( 'div' );
  xcontent.className = 'content';
  xcontent.innerHTML = '<span>' + me.content + '</span>';
  me.wrapper.appendChild(xcontent);

  // 2 - from top to header
  // 2 - from header to content
  // 2 - from content to bottom
  // 2 - bottom borders
  me.h = xcontent.clientHeight + hdr.clientHeight + 2 + 2 + 2 + 2;
  me.wrapper.style.height = me.h + 'px';

  // Set timeout
  if( tout > 0 )
    setTimeout( "FEEDBACK.hide("+ id +")", tout);

  FEEDBACK.__queue.push( me );
} // FEEDBACK.add

FEEDBACK.slide = function() {

  var prev = 0;
  for( var i = FEEDBACK.__queue.length - 1; i >= 0; i-- ) {
    if( false == FEEDBACK.__queue[ i ].is_done ) {
      prev = i;
      FEEDBACK.__queue[ i ].b = 10;
      FEEDBACK.__queue[ i ].wrapper.style.bottom = FEEDBACK.__queue[ i ].b + 'px';
      break;
    }
  }

  for( var i = prev - 1; i >= 0; i-- ) {
    if( false == FEEDBACK.__queue[ i ].is_done ) {
      FEEDBACK.__queue[ i ].b = FEEDBACK.__queue[ prev ].b + FEEDBACK.__queue[ prev ].h + 10;
      FEEDBACK.__queue[ i ].wrapper.style.bottom = FEEDBACK.__queue[ i ].b + 'px';
      prev = i;
    }

  } // for

} // FEEDBACK.slide