


var Fjs = new function () {
  Debug.msg( "Start Fjs" );
  var pkgEl = this;

  var crSlLL = function () {
    var llOb = new Array();
    var currEl;

    llOb.addEl = function ( nEl, elNm ) {
      var slEl = new Array();
      slEl.gEl = nEl;
      slEl.prev;
      slEl.next;
      if ( defined( currEl ) ) {
	slEl.prev = currEl;
	currEl.next = slEl;
      }

      currEl = slEl;

      slEl.show = function () {
	Efct.chOpaEf( currEl.gEl, 15, 10, 100, 0, function () {
			inherit( currEl.gEl.style, { "display":"none" } );
			Efct.setOpa( slEl.gEl, 0 );
			inherit( slEl.gEl.style, { "display":"block" } );
			Efct.chOpaEf( slEl.gEl, 15, 10, 0, 100 );
			currEl = slEl;
		      } );
      };

      var crSlNx = function () {
	var slNx = new Array();
	var crNx;
	slNx.add = function ( nHdl, pHdl ) {
	  var snpr = new Array();
	  snpr.shFl = 0;
	  if ( defined( crNx ) ) {
	    crNx.next = snpr;
	    snpr.prev = crNx;
	  }
	  else {
	    slNx.frsn = snpr;
	  }
	  crNx = snpr;
	  snpr.nHdl = function () { nHdl(); snpr.shFl=1; if ( defined( snpr.next ) ) slNx.frsn=snpr.next; };
	  snpr.pHdl = function () { pHdl(); snpr.shFl=0; if ( defined( snpr.prev ) ) slNx.frsn=snpr.prev; };
	};

	return slNx;
      };
      slEl.nx = crSlNx();

      return slEl;
    };


    llOb.shNext = function () {
      if ( defined( currEl.nx.frsn ) && ! currEl.nx.frsn.shFl ) {
	currEl.nx.frsn.nHdl();
      }
      else if( defined( currEl.next ) ) {
	currEl.next.show();
      }
    };
    llOb.shPrev = function () {
      if ( defined( currEl.nx.frsn ) && currEl.nx.frsn.shFl ) {
	currEl.nx.frsn.pHdl();
      }
      else if( defined( currEl.prev ) ) {
	currEl.prev.show();
      }
    };

    return llOb;
  };
  var slideLs = crSlLL();



  var procPdt = function ( pdt ) {
//     Debug.msg( "PDT" );
    var frSl;
    Utils.foreach( pdt, function ( key, el ) {
	       var slName = el[0];
	       var slElLs = el[1];

	       var slWin = document.createElement( 'div' );
	       inherit( slWin.style, { "position":"absolute", "top":0, "left":0, "width":"100%", "height":"100%", "overflow":"auto", "display":"none" } );
	       var nSl = slideLs.addEl( slWin, slName );
	       if ( ! defined( frSl ) ) frSl = nSl;

	       addElems( nSl, slElLs );
	       document.body.appendChild( slWin );
	     } );
    frSl.show();
  };
  pkgEl.procPdt = procPdt;


  var addElems = function ( nSl, slElLs ) {
    var slWin = nSl.gEl;
    Utils.foreach( slElLs, function ( key, el ) {
		     var elTp = el.shift();
		     var elHdl = Tpls.dt[ elTp ];
		     var eldv = elHdl( el );

		     if ( defined( eldv.nextHdl ) ) {
		       nSl.nx.add( eldv.nextHdl, eldv.prevHdl );
		     }
		     slWin.appendChild( eldv );

		   } );

  };



//   document.onclick = function () { slideLs.shNext(); };
  document.onkeypress = function (en) {
    var evt=(en)?en:(window.event)?window.event:null;
    var key=(evt.charCode)?evt.charCode: ((evt.keyCode)?evt.keyCode:((evt.which)?evt.which:0));

//     Debug.msg( "Key: "+key );

    if ( key == 39 ) { slideLs.shNext(); }
    else if ( key == 37 ) { slideLs.shPrev(); }
    else if ( key == 32 ) { slideLs.shNext(); }
    else if ( key == 13 ) { slideLs.shNext(); }

  };


  var nImg = Imgpr.preloadImg( "go-next.png", 48, 48 );
  document.body.appendChild( nImg );
  inherit( nImg.style, { "position":"absolute", "top":0, "right":0, "zIndex":900 } );
  nImg.onmousedown = function () { slideLs.shNext(); };

  var pImg = Imgpr.preloadImg( "go-previous.png", 48, 48 );
  document.body.appendChild( pImg );
  inherit( pImg.style, { "position":"absolute", "top":0, "left":0, "zIndex":900 } );
  pImg.onmousedown = function () { slideLs.shPrev(); };

};
