var Tmg = {

  BlenderIsWorking: 0,
  FilmsPage: 1,
  FilmsPosition: 0,

  MoveOrizontal: function(element,opt){

    try {

    if( $(element).isWorking == 1 ) return false;
    $(element).isWorking = 1;

    $(element).opt = opt || {};

    new Effect.Move(element,{
          x: opt.distance,
          duration: 0.6,
          transition: Effect.Transitions.sinoidal,
          beforeStart: function(){
          Tmg.FilmsPage = $(element).opt.page;

            if(($(element).opt.type == 'films')){

              // default
              Tmg.FilmsPage = $(element).opt.page;

              // --
              if( $(element).opt.back && Tmg.FilmsPosition > 0) Tmg.FilmsPage = Tmg.FilmsPosition - 1;

              // ++
              if( $(element).opt.next && Tmg.FilmsPosition < $(element).opt.max) Tmg.FilmsPage = Tmg.FilmsPosition + 1;

              // at the end
              if( Tmg.FilmsPage == $(element).opt.max ) $$('.header-right')[0].style.visibility='hidden';
              else $$('.header-right')[0].style.visibility='visible';

              // at the start
              if( Tmg.FilmsPage == 0 ) $$('.header-left')[0].style.visibility='hidden';
              else $$('.header-left')[0].style.visibility='visible';

              // normal step
              if( $(element).opt.page > -1 ) Tmg.FilmsPage = $(element).opt.page

              // case studio
              if(Tmg.FilmsPage == Tmg.FilmsPosition)  this.x = 0;
              else this.x =  - $(element).opt.size * (Tmg.FilmsPage - Tmg.FilmsPosition);

              for(var i = 0; i <= $(element).opt.max; i++){
                var block = 'block-'+i;
                if( $(block) ){
                  if( i == Tmg.FilmsPage ) {
                    $(block).src = $(block).src.gsub('/unselected','/selected');
                  } else {
                    $(block).src = $(block).src.gsub('/unselected','/selected');
                    $(block).src = $(block).src.gsub('/selected','/unselected');
                  }
                }
              }

              Tmg.FilmsPosition = Tmg.FilmsPage;

            } else { // standard news
              var shift = $(element).opt.size * ($(element).opt.page - 1);
              $('tab-boxes').getElementsByClassName('paging').each( function(node){

                  node.shift = shift;
                  node.size = $(element).opt.size;
                  node.onclick = function(){
                   Tmg.MoveOrizontal('box-container',{distance: this.shift , page:this.id.gsub('page-','') , size:this.size});
                  }

                  shift -= $(element).opt.size;

                  if( node.id == 'page-' + $(element).opt.page){
                    node.addClassName('selected');
                  } else {
                    node.removeClassName('selected');
                  }
                }
              );

              var preID = Number($(element).opt.page) - 1 || 0;
              var nextID = Number($(element).opt.page) + 1 || 1;

              if ( $('page-'+preID) ) {
                $('previous-page').preID = preID;
                $('previous-page').size = $(element).opt.size;
                $('previous-page').onclick = function(){
                 Tmg.MoveOrizontal('box-container',{distance: this.size , page:this.preID , size:this.size});
                }
                $('previous-page').style.visibility = "visible";
              } else {
                $('previous-page').style.visibility = "hidden";
              }

              if ( $('page-'+nextID) ) {
                $('next-page').nextID = nextID;
                $('next-page').size = $(element).opt.size;
                $('next-page').onclick = function(){
                 Tmg.MoveOrizontal('box-container',{distance: -(this.size) , page:this.nextID , size:this.size});
                }
                $('next-page').style.visibility = "visible";
              } else {
                $('next-page').style.visibility = "hidden";
              }
            }

          },
          afterFinish: function(){
            $(element).isWorking =0;
          }
        });
    } catch(e){
      loggi(e);
    }
  },



  GetTabBoxContent: function(type) {

    if($('box-container')) {

    var pagesize = 280;

    if($('box-container').isWorking == 1 ) return false;
    $('box-container').isWorking = 1;

    var opt = {
        method: 'post',
        postBody: 'pagesize=' + pagesize,
        onSuccess: function(t) {

          var retval = eval( '(' + t.responseText + ')' );

          $('box-container').style.width = retval.pages * pagesize + 'px';
          $('box-container').update(base64_decode(retval.text));

          $$('.tablink').each(
            function(node){
              if( node.id == type+'Tab'){
                node.style.background = '#e7e7e7';
              } else {
                node.style.background = '#c3c3c3';
                }
              }
            );

            if( retval.paging == '' ){
              $('tab-paging').style.display = 'none';
            } else {
              $('tab-paging').style.display = 'block';
              $('tab-paging').update(base64_decode(retval.paging));
            }

            $('box-container').style.left = 0 +'px';
            $('tab-boxes').style.height = '';

            if( $('box-container').notFirst ){
              new Effect.BlindDown('tab-boxes',{
                afterFinish: function(){

                  $('box-container').isWorking = 0;
                }
              });
            } else {
              new Effect.BlindDown('tab-boxes',{
                transition: Effect.Transitions.full,
                afterFinish: function(){

                  $('box-container').notFirst = 1;
                  $('box-container').isWorking = 0;
                }
              });
            }

            retval = null;
          },
          onException: function(exception){
          }
      }


      new Effect.BlindUp('tab-boxes',{
        afterFinish:function(){

          switch (type){
            case 'podcast':
              new Ajax.Request('templates/html/master/php/ajax_podcast.php', opt);

            break;
            case 'news':
              new Ajax.Request('templates/html/master/php/ajax_news.php', opt);

            break;
            default :
              type = 'news';
              new Ajax.Request('templates/html/master/php/ajax_news.php', opt);
          }
        }
      });
    }
  },

  CreateLeftMenu: function(){

    var menuname = 'left-menu';

    // to prevert dont displayed menu
    if($(menuname) && Engine.isMSIE7){
      $(menuname).style.display = 'block';
      $('home').style.visibility = 'visible';
    }

    if($(menuname)) {

      runningEffect = new Array();

      level0 = $$('li.level0');
      level0active = $$('li.level0active');
      level0 = level0.concat(level0active);

      level1 = $$('li.level1');
      level1active = $$('li.level1active');
      level1 = level1.concat(level1active);

      level2 = $$('li.level2');
      level2active = $$('li.level2active');
      level2 = level2.concat(level2active);


      function effect(node,classname,level,childIndex){

         node.childId = node.className + '-' + classname + '-' + childIndex;

          subMenu = node.down(1);

          if ( typeof subMenu != 'undefined' ){

            subMenu.setAttribute('id', node.childId) ;

            if( node.className.indexOf("active") < 0 ){
              var init = new Effect.BlindUp( subMenu,
                                {
                                  transition: Effect.Transitions.full
                                }
                                );
              runningEffect.push(init);
            } else {
              node.isOpen = 1;
              node.style.display = 'block';
              subMenu.style.display = 'block';
            }

            node.onclick = function(event){

              // stop onclick bubbling
              event = event || window.event;
              if (event.stopPropagation) event.stopPropagation();
              else event.cancelBubble = true;

              if( this.isOpen ) {

                // close li child
                closeLi = new Effect.BlindUp(
                  this.childId,
                  {
                    duration:0.2,
                    afterFinish:function(effect){effect.element.up(0).isOpen = 0}
                  }
                );

                var elements = this.getElementsBySelector('ul');

                elements.each(
                  function(node){

                    if( node.nodeName == 'UL' && node.up(0).isOpen){

                      // close li subchild
                      new Effect.BlindUp(
                        node,
                        {
                          duration:0.1,
                          afterFinish:function(effect){effect.element.up(0).isOpen = 0}
                        }
                      );
                    }
                  }
                );

              } else {

                level.each(
                  function(n){
                    if( n.isOpen ) {
                      // reset li opened
                      resetLi = new Effect.BlindUp(
                        n.childId,
                      {
                        delay:0.3,
                        duration:0.2,
                        afterFinish:function(effect){n.isOpen = 0}
                      }
                      );

                      var elements = n.getElementsBySelector('ul');

                      elements.each(
                        function(node){

                          if( node.nodeName == 'UL' && node.up(0).isOpen){

                            // close li subchild
                            new Effect.BlindUp(
                              node,
                              {
                                duration:0.1,
                                afterFinish:function(effect){effect.element.up(0).isOpen = 0}
                              }
                            );
                          }
                        }
                      );
                    }
                  }
                );

                // open li child
                openLi = new Effect.BlindDown(
                  this.childId,
                  {
                    duration:0.2,
                    afterFinish:function(effect){effect.element.up(0).isOpen = 1;}
                  }
                );
              }

              return false;
            }

          } else {

            node.onclick = function(event){
              // stop onclick bubbling
              event = event || window.event;
              if (event.stopPropagation) event.stopPropagation();
              else event.cancelBubble = true;
            }
          }

      }


      childIndex = 1; // set

      level0.each(
        function(node){
          effect(node,'child',level0,childIndex);
          childIndex++;
        }
      );

      childIndex = 1; // reset

      level1.each(
        function(node){
          effect(node,'subchild',level1,childIndex);
          childIndex++;
        }
      );

      level2.each(
        function(node){
            node.onclick = function(event){
              // stop onclick bubbling
              event = event || window.event;
              if (event.stopPropagation) event.stopPropagation();
              else event.cancelBubble = true;
            }
          }
        );


      status = 1;
      new PeriodicalExecuter(function(pe) {

        runningEffect.each(
          function(element){
            if(element.state == "finished" ){
              status = status && 1;
            } else {
              status = status && 0;
            }
          }
        )
          if( status ){
            pe.stop();
            $(menuname).style.display = 'block';
            $('home').style.visibility = 'visible';
          }
          status = 1;
      }, 0.1);

    }

  },

  LoadHistory: function(year){

    if( $('history-module') ) {

    if($('history-module').isWorking == 1 ) return false;
    $('history-module').isWorking = 1;

    var yearlist = $('h-list').getElementsBySelector('a');

    if (isNaN(year)) {
      var year = yearlist[0].id.gsub('year-','');
    }

    var opt = {
      method: 'post',
      postBody: 'year=' + year,
      onSuccess: function(t) {
        var retval = eval( '(' + t.responseText + ')' );

        $('h-text').update(base64_decode(retval.text));
        $('h-title').update(base64_decode(retval.title));

        $('h-year').update(retval.year);

        $('h-images').update(base64_decode(retval.images));

        if( retval.images == '' ){
            $('history-module').addClassName('noimage');
        }


        new Effect.BlindDown('history-module',{

          afterFinish: function(){

            if( $('year-' + retval.year).previous(0) ){
              $('go-up').onclick = function(){
                Tmg.LoadHistory($('year-' + retval.year).previous(0).id.gsub('year-',''))
              };
            } else {
              $('go-up').onclick = function(){
                Tmg.LoadHistory(yearlist[ ( yearlist.length - 1 ) ].id.gsub('year-',''))
              };
            }

            if( $('year-' + retval.year).next(0) ){
              $('go-down').onclick = function(){
                Tmg.LoadHistory($('year-' + retval.year).next(0).id.gsub('year-','') + '')
              };
            } else {
              $('go-down').onclick = function(){
                Tmg.LoadHistory(yearlist[0].id.gsub('year-',''))
              };
            }

            // update year list
            $('h-list').getElementsBySelector('a').each(
              function(element){
                element.removeClassName('selected')
              }
            );
            $('year-' + retval.year).addClassName('selected');

           // if( Engine.isMSIE) self.resizeBy(0,-1);

            $('history-module').isWorking = 0;
          }
        });

        },
        onException: function(exception){
          loggi(exception)
        }
      };

      if ( $('h-year').innerHTML != '' ) {
        new Effect.BlindUp('history-module',{
          afterFinish: function(){
            new Ajax.Request('templates/html/master/php/ajax_history.php', opt);
          }
        });
      } else {
            $('history-module').style.display = 'none';
            new Ajax.Request('templates/html/master/php/ajax_history.php', opt);
      }
    }
  },

  /* LBOX */
  Blend: function (option)
  {
    selectA = $$('select');

    var duration = option.duration || Effect.DefaultOptions.duration;
    var from = option.from || Effect.DefaultOptions.from;
    var to = option.to || Effect.DefaultOptions.to;

    if ( this.BlenderIsWorking == 1) return false;
    this.BlenderIsWorking = 1;

    if ( $('blender') ) {

      new Effect.Appear('blender', { transition: Effect.Transitions.reverse, duration: duration, from: from, to: to, delay:0.5, afterFinish:function(event){ Tmg.BlenderIsWorking = 0; Element.remove('blender')}});

      // fix problem with IE and select tag
      if( Engine.isMSIE ){
        for( key in selectA ){
          if ( selectA[key].style !== undefined ) {
            selectA[key].style.visibility = 'visible';
          }
        }
      }

    } else {

      // fix problem with IE and select tag
      if( Engine.isMSIE ){
        for( key in selectA ){
          if ( selectA[key].style !== undefined ) {
           selectA[key].style.visibility = 'hidden';
          }
        }
      }

      blender = document.createElement('div');
      blender.id = 'blender';
      blender.option = option;
      blender.onclick = function() { Tmg.RemoveDialog(this.option) };

      var height = document.body.clientHeight + 'px';

      Element.setStyle(blender, {
        left: '0px',
        top: '0px',
        background: option.background || '#000',
        height: height || '100%',
        width: '100%',
        position: 'absolute',
        zIndex: '1100',
        display: 'none'
      });

      document.body.appendChild(blender);

      new Effect.Appear('blender', { duration: duration, from: from, to: to, afterFinish:function(event){ Tmg.BlenderIsWorking = 0;}});
    }
  },


  GetDialog: function (dialog,post,option) {

    var opt = {
      method: 'post',
      parameters: post,
      onSuccess: function(t) {
        if (!$('blender')) {
          Tmg.Blend(option);
        }
        if (!$('blendedDialog')) {
          dialogElement    = document.createElement('div');
          dialogElement.id = 'blendedDialog';

          dialogElement.innerHTML = t.responseText;
          document.body.appendChild(dialogElement);

          // SPECIAL CASE
          switch (dialog){
            case 'playerlb':

              StopFlashMovie();

              var lbplay = new SWFObject("templates/html/master/flash/tmg-player-big.swf", "bigplayer", "560", "438", "8", "#000000");
              lbplay.addVariable("videourl", ""+so.getVariable('videourl')+""); // get the video from the origianl player in the page
              lbplay.addVariable("autoplay", 'true');
              lbplay.addParam("quality", "high");
              lbplay.addParam("wmode", "opaque");
              lbplay.addParam("name", "bigplayer");
              lbplay.addParam("menu", "false");
              lbplay.write("player2x");



            break;
            default :
            '';
          }
          // SPECIAL CASE


          windowsSize = getBrowserSize(); // {width:myWidth,height:myHeight}
          dialogSize = $(dialog).getDimensions();

          Element.setStyle(dialogElement, {
            left: Math.round( ( ( windowsSize.width - dialogSize.width ) / 2 )  ) +'px',
            top: Math.round( ( ( windowsSize.height - dialogSize.height ) / 2 ) * 0.76)+'px',
            position: 'absolute',
            zIndex: '1300',
            display: 'none'
          });

          new Effect.Appear('blendedDialog', { delay:0.5});
        }
      },

      onException: function(t, exception) {
      }
    }

    new Ajax.Request('templates/html/master/dialogs/'+dialog+'.php', opt);
  },

  RemoveDialog: function (option)
  {
    if ($('blendedDialog')) {
      new Effect.Appear('blendedDialog', { from:1, to:0, afterFinish:function(){ Element.remove('blendedDialog');}});
    }
    if ($('blender')) {
      Tmg.Blend(option);
    }
  }
  /* END */

}

Event.observe(window, 'load', base64_init);
Event.observe(window, 'load', Tmg.GetTabBoxContent);
Event.observe(window, 'load', Tmg.LoadHistory);
Event.observe(window, 'load', Tmg.CreateLeftMenu);
