var Concorde = {

  BlenderIsWorking: 0,
  FilmsPage: 1,
  FilmsPosition: 0,
  BlenderIsWorkingHD: 0,
  FilmsPageHD: 1,
  FilmsPositionHD: 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(){
          Concorde.FilmsPage = $(element).opt.page;

            if(($(element).opt.type == 'films')){

              // default
              Concorde.FilmsPage = $(element).opt.page;

              // --
              if( $(element).opt.back && Concorde.FilmsPosition > 0) Concorde.FilmsPage = Concorde.FilmsPosition - 1;

              // ++
              if( $(element).opt.next && Concorde.FilmsPosition < $(element).opt.max) Concorde.FilmsPage = Concorde.FilmsPosition + 1;

              // at the end
              if( Concorde.FilmsPage == $(element).opt.max ) $$('.header-right')[0].style.visibility='hidden';
              else $$('.header-right')[0].style.visibility='visible';

              // at the start
              if( Concorde.FilmsPage == 0 ) $$('.header-left')[0].style.visibility='hidden';
              else $$('.header-left')[0].style.visibility='visible';

              // normal step
              if( $(element).opt.page > -1 ) Concorde.FilmsPage = $(element).opt.page

              // case studio
              if(Concorde.FilmsPage == Concorde.FilmsPosition)  this.x = 0;
              else this.x =  - $(element).opt.size * (Concorde.FilmsPage - Concorde.FilmsPosition);

              for(var i = 0; i <= $(element).opt.max; i++){
                var block = 'block-'+i;
                if( i == Concorde.FilmsPage ) {
                  $(block).src = $(block).src.gsub('/unselected','/selected');
                } else {
                  $(block).src = $(block).src.gsub('/unselected','/selected');
                  $(block).src = $(block).src.gsub('/selected','/unselected');
                }
              }

              Concorde.FilmsPosition = Concorde.FilmsPage;

            } else { // standard news
              var shift = $(element).opt.size * ($(element).opt.page - 1);
              $$('#tab-boxes .paging').each( function(node){

                  node.shift = shift;
                  node.size = $(element).opt.size;
                  node.onclick = function(){
                   Concorde.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(){
                 Concorde.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(){
                 Concorde.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);
    }
  },

MoveOrizontalHD: 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(){
          Concorde.FilmsPageHD = $(element).opt.page;

            if(($(element).opt.type == 'films')){

              // default
              Concorde.FilmsPageHD = $(element).opt.page;

              // --
              if( $(element).opt.back && Concorde.FilmsPositionHD > 0) Concorde.FilmsPageHD = Concorde.FilmsPositionHD - 1;

              // ++
              if( $(element).opt.next && Concorde.FilmsPositionHD < $(element).opt.max) Concorde.FilmsPageHD = Concorde.FilmsPositionHD + 1;

              // at the end
              if( Concorde.FilmsPageHD == $(element).opt.max ) $$('.filmsHD .header-right')[0].style.visibility='hidden';
              else $$('.filmsHD .header-right')[0].style.visibility='visible';

              // at the start
              if( Concorde.FilmsPageHD == 0 ) $$('.filmsHD .header-left')[0].style.visibility='hidden';
              else $$('.filmsHD .header-left')[0].style.visibility='visible';

              // normal step
              if( $(element).opt.page > -1 ) Concorde.FilmsPageHD = $(element).opt.page

              // case studio
              if(Concorde.FilmsPageHD == Concorde.FilmsPositionHD)  this.x = 0;
              else this.x =  - $(element).opt.size * (Concorde.FilmsPageHD - Concorde.FilmsPositionHD);

              for(var i = 0; i <= $(element).opt.max; i++){
                var block = 'blockHD-'+i;
                if( i == Concorde.FilmsPageHD ) {
                  $(block).src = $(block).src.gsub('/unselected','/selected');
                } else {
                  $(block).src = $(block).src.gsub('/unselected','/selected');
                  $(block).src = $(block).src.gsub('/selected','/unselected');
                }
              }

              Concorde.FilmsPositionHD = Concorde.FilmsPageHD;

            } else { // standard news
              var shift = $(element).opt.size * ($(element).opt.page - 1);
              $$('#tab-boxes .paging').each( function(node){

                  node.shift = shift;
                  node.size = $(element).opt.size;
                  node.onclick = function(){
                   Concorde.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(){
                 Concorde.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(){
                 Concorde.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 == 'tab-'+type){
                  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;

                    var tabBox = $$('.tab-box');

                    var boxItem = new Array();
                    tabBox.each(
                      function(ele){
                        boxItem.push( $$('#' + ele.id + ' .box-item') );
                      }
                    );

                    var height = new Array(0,0);
                    // check the max height
                    boxItem.each(
                      function(ele){
                        if( ele[0].offsetHeight > height[0]) {
                          height[0] = ele[0].offsetHeight;
                        }
                        if( ele[1].offsetHeight > height[1]) {
                          height[1] = ele[1].offsetHeight;
                        }
                      }
                    );
                    // set the max height
                    boxItem.each(
                      function(ele){
                        $(ele[0]).setStyle({height: (height[0] - $(ele[0]).getStyle('padding-top').gsub('px','') - $(ele[0]).getStyle('padding-bottom').gsub('px','') ) + 'px' });
                        $(ele[1]).setStyle({height: (height[1] - $(ele[1]).getStyle('padding-top').gsub('px','') - $(ele[1]).getStyle('padding-bottom').gsub('px','') ) + 'px' });
                      }
                    );
                  }
                });
              }

              retval = null;
            },
            onException: function(exception){
              loggi(exception);
            }
        }


        new Effect.BlindUp('tab-boxes',{
          afterFinish:function(){
            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).each(
              function(e){
                $(e).style.display = 'block';
              }
            );
            $('home').style.visibility = 'visible';
          }
          status = 1;
      }, 0.1);

    }

  },


  AddHomeLink: function () {
    if ( $('topNavi') ) {
      new Insertion.Top('topNavi', '<li><a href="index.php?StoryID=1" title="Home">'+homeTitle+'</a></li>');
    }
  },

  Blind:function(id){

    try{

      if( Element.visible($(id)) ){
        new Effect.BlindUp(id,{});
      } else {
        new Effect.BlindDown(id,{});
      }

    } catch(e){
      loggi(e);
    }
  },

  FormCheck: function(required,form,option){

    var ret = true;
    var or = option.or || '0';

    try{
      form.effect.cancel();
    } catch(e){}

    required.each( function(e){

      if( or == '0' ){
        if( !Form.Element.present(form[e]) || form[e].defaultValue == form[e].value ){
          ret = ret && false;
        }
      } else {
        if( Form.Element.present(form[e]) ){
          ret = true;
          throw $break;
        } else {
          ret = false;
        }
      }
    }
    )

    if(!ret) form.effect = new Effect.Shake($(form.getElementsByTagName('button')[0]));

    return ret;
  },


  LightWindowTrailerInit: function(){

    try{
      var lw_elements = $$('.set-from-user');
      var player_link = 'templates/html/master/flash/concorde_bigInterface.swf';

      lw_elements.each(function(ele){
          var link = ele.pathname;
          if( link.indexOf('.flv') >= 0 ){

            link = link.gsub('/'+projectName+'/','');
            link = link.gsub(''+projectName+'/','');

            ele.setAttribute('href', player_link +'?videourl='+ link);
            ele.setAttribute('params', 'lightwindow_width=560,lightwindow_height=438');
          }

        }
      );


    }catch(e){
      loggi(e);
    }

  }

  /* END */

}

Event.observe(window, 'load', Concorde.GetTabBoxContent);
Event.observe(window, 'load', Concorde.AddHomeLink);
Event.observe(window, 'load', Concorde.CreateLeftMenu);
Event.observe(window, 'load', Concorde.LightWindowTrailerInit);

Event.observe(window, 'load', base64_init);


// over write shake function
Effect.Shake = function(element) {
  element = $(element);
  var oldStyle = {
    top: element.getStyle('top'),
    left: element.getStyle('left') };
    return new Effect.Move(element,
      { x:  5, y: 0, duration: 0.05, afterFinishInternal: function(effect) {
    new Effect.Move(effect.element,
      { x: -5, y: 0, duration: 0.1,  afterFinishInternal: function(effect) {
    new Effect.Move(effect.element,
      { x:  5, y: 0, duration: 0.1,  afterFinishInternal: function(effect) {
    new Effect.Move(effect.element,
      { x: -5, y: 0, duration: 0.1,  afterFinishInternal: function(effect) {
    new Effect.Move(effect.element,
      { x:  5, y: 0, duration: 0.1,  afterFinishInternal: function(effect) {
    new Effect.Move(effect.element,
      { x: -5, y: 0, duration: 0.05, afterFinishInternal: function(effect) {
        effect.element.undoPositioned().setStyle(oldStyle);
  }}) }}) }}) }}) }}) }});
}

// script.aculo.us EffectResize.js

// Copyright(c) 2007 - Frost Innovation AS, http://ajaxwidgets.com
//
// EffectResize.js is freely distributable under the terms of an MIT-style license.
// For details, see the script.aculo.us web site: http://script.aculo.us/

/* Helper Effect for resizing elements...
 */
Effect.ReSize = Class.create();
Object.extend(Object.extend(Effect.ReSize.prototype, Effect.Base.prototype), {
  initialize: function(element) {
    this.element = element;
    if(!this.element) throw(Effect._elementDoesNotExistError);
    var options = Object.extend({ amount: 100, direction: 'vert', toSize:null }, arguments[1] || {});
    if( options.direction == 'vert' )
      this.originalSize = options.originalSize || parseInt(this.element.style.height);
    else
      this.originalSize = options.originalSize || parseInt(this.element.style.width);

    if( options.toSize != null )
      options.amount = options.toSize - this.originalSize;

    this.start(options);
  },
  setup: function() {
    // Prevent executing on elements not in the layout flow
    if(this.element.getStyle('display')=='none') { this.cancel(); return; }
  },
  update: function(position) {
    if( this.options.direction == 'vert' ){
      this.element.setStyle({height: this.originalSize+(this.options.amount*position)+'px'});
    } else {
      this.element.setStyle({width: this.originalSize+(this.options.amount*position)+'px'});
    }
  },
  finish: function(){
    if( this.options.direction == 'vert' ){
      this.element.setStyle({height: this.originalSize+this.options.amount+'px'});
    } else {
      this.element.setStyle({width: this.originalSize+this.options.amount+'px'});
    }
  }
});
