/*!
 * initializer frontend
 * Version 1.0
 * Author MFE
 * Copyright (c) 2008 Denbel, www.denbel.nl
 */

var skinName = 'default';
var isAlt = false;

YAHOO.util.Event.onDOMReady( function( e )
{ 
  //Denbel.Website.init();
  
  _global.initActiveContent();
  _global.initVacancy();
  _global.initTestForm();
  _global.initAnchors();
  _global.initPopups();
  
  YAHOO.util.Event.onContentReady( 'wrapper', function( e )
  {
    //YAHOO.lang.later( 1200, this, _global.correctHeights );
    _global.correctHeights();
  } );
} );
  
_global =
{
  /**
   * initializes vacancy
   * @return void
   */
  initVacancy: function()
  {
    if( !YAHOO.util.Dom.inDocument( 'lines-carousel' ) )
    {
      return;
    }
    
    var car = new YAHOO.widget.Carousel( 'lines-carousel',
    {
      carouselEl: 'UL',
      numVisible: 1,
      isCircular: true,
      animation:
      {
        speed: 1,
        effect: YAHOO.util.Easing.easeOut
      },
      autoPlayInterval: 5000,
      revealAmount: 0
    } );
    
    car.render();
    car.show();
    
    car.startAutoPlay();
  },
    
  /**
   * initializes test form
   * @return void
   */
  initTestForm: function()
  {
    if( !YAHOO.util.Dom.inDocument( 'test-container' ) )
    {
      return;
    }
    
    YAHOO.util.Event.addListener( 'fTest', 'submit', function( e )
    {
      YAHOO.util.Event.stopEvent( e );
      
      var fieldCount = 5;
      var fields = [];
      var checked = [];
      
      var i = 0;
      var j = 0;
      
      for( i = 0; i < fieldCount; i++ )
      {
        fields.push( 'iQ' + ( i + 1 ) );
      }
      
      for( i = 0; i < fields.length; i++ )
      {
        for( j = 0; j < this.elements.length; j++ )
        {
          if( this.elements[j].getAttribute( 'type' ) != 'radio' )
          {
            continue;
          }
          
          if( this.elements[j].getAttribute( 'name' ) == fields[i] && this.elements[j].checked )
          {
            checked.push( true );
            break;
          }
        }
      }
      
      if( checked.length != fieldCount )
      {
        alert( 'Je hebt niet alle vragen beantwoord.' );
        return;
      }
      
      var target = 'test-container';
      
      var rpc = new Denbel.rpc.XmlRpcClient();
      var msg = rpc.createMessage( 'postTest' );
      msg.addForm( this );

      YAHOO.util.Dom.get( target ).innerHTML = '<h2>Resultaten Novo Nordisk kliktest</h2><p>&nbsp;</p><p><img alt="" src="/media/img/loader_test.gif" class="middle" />&nbsp;Bezig met berekenen van de resultaten...</p>';
      
      rpc.callService( msg,
      {
        success: function( res )
        {
          YAHOO.lang.later( 4000, this, function()
          {
            YAHOO.util.Dom.get( res.argument.target ).innerHTML = res.data[0];
          } );
        },
        failure: function( res )
        {
          YAHOO.util.Dom.get( res.argument.target ).innerHTML = '<h2>Resultaten Novo Nordisk kliktest</h2><p>&nbsp;</p><p>Er is helaas iets misgegaan. Probeer het later nogmaals.</p>';
        },
        argument:
        {
          target: target
        }
      } );
    } );
  },
  
  /**
   * initializes active content
   * @return void
   */
  initActiveContent: function()
  {
    if( !swfobject || !YAHOO.util.Dom.inDocument( 'no-flash' ) )
    {
      return;
    }
    
    var uri = '';
    
    if( YAHOO.lang.isString( window.location ) )
    {
      uri = window.location;
    }
    else
    {
      uri = window.location.toString();
    }
    
    swfobject.embedSWF( '/media/swf/videoplayer.swf', 'no-flash', '640', '360', '7.0', '/media/swf/expressInstall.swf',
    {
      'url': Denbel.Website.getDomain() + '/video/?ref=' + encodeURIComponent( uri )
    },
    {
      'wmode': 'window',
      'menu': 'false',
      'quality': 'high',
      'play': 'true',
      'bgcolor': '#ffffff'
    } );
  },
  
  /**
   * corrects column heights
   * @return void
   */
  correctHeights: function()
  {
    var lftBar = YAHOO.util.Dom.get( 'layout-body-left' );
    var ctrBar = YAHOO.util.Dom.get( 'layout-body-center' );
    var rgtBar = YAHOO.util.Dom.get( 'layout-body-right' );
    
    var lftHeight = YAHOO.util.Dom.getRegion( lftBar ).height;
    var ctrHeight = YAHOO.util.Dom.getRegion( ctrBar ).height;
    var rgtHeight = YAHOO.util.Dom.getRegion( rgtBar ).height;
    
    var boxes = null;
    var boxContent = null;
    
    var boxOffset = ( 12 + 14 + 10 );
    var extOffset = 0;
    
    var clickTest = 200;
    
    if( lftHeight >= ctrHeight && lftHeight >= rgtHeight )
    {
      // master is LEFT
      
      // align center box
      boxes       = YAHOO.util.Dom.getElementsByClassName( 'column-box', 'div', ctrBar );
      boxContent  = YAHOO.util.Dom.getElementsByClassName( 'layout-body-column-inner', 'div', boxes[0] );
      
      extOffset = 0;
      
      if( YAHOO.util.Dom.inDocument( 'videobox' ) )
      {
        extOffset = ( 360 + 10 );
      }
      
      YAHOO.util.Dom.setStyle( boxContent[0], 'height', ( lftHeight - ( boxOffset + extOffset ) ) + 'px' );
      
      // align right box
      boxes       = YAHOO.util.Dom.getElementsByClassName( 'column-box', 'div', rgtBar );
      boxContent  = YAHOO.util.Dom.getElementsByClassName( 'layout-body-small-column-inner', 'div', boxes[0] );
      
      extOffset = 0;
      
      if( YAHOO.util.Dom.inDocument( 'certificate' ) )
      {
        extOffset = ( 98 + 10 );
      }
      
      if( YAHOO.util.Dom.inDocument( 'clicktest' ) )
      {
        extOffset += ( clickTest + 10 );
      }
      
      YAHOO.util.Dom.setStyle( boxContent[0], 'height', ( lftHeight - ( boxOffset + extOffset ) ) + 'px' );
      
      if( YAHOO.util.Dom.getElementsByClassName( 'showpic' ).length > 0 )
      {
        if( YAHOO.util.Dom.inDocument( 'vacancies' ) )
        {
          extOffset += ( YAHOO.util.Dom.getRegion( 'vacancies' ).height + 10 );
        }
        
        YAHOO.util.Dom.setStyle( YAHOO.util.Dom.getElementsByClassName( 'showpic' )[0], 'height', ( lftHeight - ( boxOffset + extOffset ) ) + 'px' );
      }
    }
    else if( ctrHeight >= lftHeight && ctrHeight >= rgtHeight )
    {
      // master is CENTER
      
      // align left box
      boxes       = YAHOO.util.Dom.getElementsByClassName( 'column-box', 'div', lftBar );
      boxContent  = YAHOO.util.Dom.getElementsByClassName( 'layout-body-small-column-inner', 'div', boxes[0] );
      
      YAHOO.util.Dom.setStyle( boxContent[0], 'height', ( ctrHeight - boxOffset ) + 'px' );
      
      // align right box
      boxes       = YAHOO.util.Dom.getElementsByClassName( 'column-box', 'div', rgtBar );
      boxContent  = YAHOO.util.Dom.getElementsByClassName( 'layout-body-small-column-inner', 'div', boxes[0] );
      
      extOffset = 0;
      
      if ( YAHOO.util.Dom.inDocument( 'news' ) ) {
          extOffset += ( YAHOO.util.Dom.getRegion( 'news' ).height + 30 );
      }
      
      if( YAHOO.util.Dom.inDocument( 'certificate' ) )
      {
        extOffset += ( 98 + 10 );
      }

      if( YAHOO.util.Dom.inDocument( 'clicktest' ) )
      {
        extOffset += ( clickTest + 10 );
      }
      
      YAHOO.util.Dom.setStyle( boxContent[0], 'height', ( ctrHeight - ( boxOffset + extOffset ) ) + 'px' );
      
      if( YAHOO.util.Dom.getElementsByClassName( 'showpic' ).length > 0 )
      {
        if( YAHOO.util.Dom.inDocument( 'vacancies' ) )
        {
          extOffset += ( YAHOO.util.Dom.getRegion( 'vacancies' ).height + 10 );
        }
        
        YAHOO.util.Dom.setStyle( YAHOO.util.Dom.getElementsByClassName( 'showpic' )[0], 'height', ( ctrHeight - ( boxOffset + extOffset ) ) + 'px' );
      }
    }
    else if( rgtHeight >= lftHeight && rgtHeight >= ctrHeight )
    {
      // master is RIGHT
      
      // align left box
      boxes       = YAHOO.util.Dom.getElementsByClassName( 'column-box', 'div', lftBar );
      boxContent  = YAHOO.util.Dom.getElementsByClassName( 'layout-body-small-column-inner', 'div', boxes[0] );
      
      YAHOO.util.Dom.setStyle( boxContent[0], 'height', ( rgtHeight - boxOffset ) + 'px' );
      
      // align center box
      boxes       = YAHOO.util.Dom.getElementsByClassName( 'column-box', 'div', ctrBar );
      boxContent  = YAHOO.util.Dom.getElementsByClassName( 'layout-body-column-inner', 'div', boxes[0] );
      
      extOffset = 0;
      
      if( YAHOO.util.Dom.inDocument( 'videobox' ) )
      {
        extOffset = ( 360 + 10 );
      }
      
      YAHOO.util.Dom.setStyle( boxContent[0], 'height', ( rgtHeight - ( boxOffset + extOffset ) ) + 'px' );
    }
  },
  
  /**
   * initializes anchors
   * @return void
   */
  initAnchors: function()
  {
    var i = null;
    var a = YAHOO.util.Dom.getElementsByClassName( 'target_blank', 'a' );
    
    for( i = 0; i < a.length; i++ )
    {
      a[i].setAttribute( 'target', '_blank' );
    }
    
    a = YAHOO.util.Dom.getElementsByClassName( 'print', 'a' );
    
    for( i = 0; i < a.length; i++ )
    {
      YAHOO.util.Event.addListener( a[i], 'click', function( e )
      {
        YAHOO.util.Event.stopEvent( e );
        
        if( window.print )
        {
          window.print();
        }
        else
        {
          alert( 'Klik op Afdrukken in het menu Bestand van uw browser.' );
        }
      } );
    }
  },
  
  initPopups: function() {
      var anchors = YAHOO.util.Dom.getElementsBy( function ( element ) {
              return !YAHOO.util.Dom.hasClass( element, 'redirect' ) && !YAHOO.util.Dom.hasClass( element, 'news' );
          }, 'a', YAHOO.util.Dom.getElementsByClassName( 'layout-body-column-inner' )[ 0 ] ),
          domain = window.location.protocol + '//' + document.domain,
          domainLen = domain.length,
          href = null;
      
      for ( var i = 0; i < anchors.length; i++ ) {
          href = anchors[ i ].getAttribute( 'href' );
          
          if ( href.substring( 0, domainLen ) != domain && href.substring( 0, 1 ) != '/' && href.substring( 0, 7 ) != 'mailto:' ) {
              if ( anchors[ i ].getAttribute( 'target' ) == '_blank' ) {
                  anchors[ i ].setAttribute( 'href', '/redirect?uri=' + encodeURIComponent( href ) );
              }
              else {
                  anchors[ i ].setAttribute( 'target', '_blank' );
              }
          }
      }
  }
};

