/**
 * @author Ryan Johnson <http://syntacticx.com/>
 * @copyright 2008 PersonalGrid Corporation <http://personalgrid.com/>
 * @package LivePipe UI
 * @license MIT
 * @url http://livepipe.net/controls/hotkey/
 * @attribution http://www.quirksmode.org/js/cookies.html
 */
 
/*global document, Prototype, $A */
 
if(typeof(Prototype) == "undefined") {
  throw "Cookie requires Prototype to be loaded."; }

var Cookie = {
  build: function() {
    return $A(arguments).compact().join("; ");
  },
  secondsFromNow: function(seconds) {
    var d = new Date();
    d.setTime(d.getTime() + (seconds * 1000));
    return d.toGMTString();
  },
  set: function(name,value,seconds){
    var expiry = seconds ? 'expires=' + Cookie.secondsFromNow(seconds) : null;
    document.cookie = Cookie.build(name + "=" + value, expiry, "path=/");
  },
  get: function(name){
    var valueMatch = new RegExp(name + "=([^;]+)").exec(document.cookie);
    return valueMatch ? valueMatch[1] : null;
  },
  unset: function(name){
    Cookie.set(name,'',-1);
  }
};


if ( typeof( originalMenuitem ) != 'string' )
  originalMenuitem = 'menuhome';

Event.observe( document, 'dom:loaded', function() {
  
  $$('#menu a').each( function( elem ) {
    Event.observe( elem, 'mouseover', function(e) { setMenu( Event.element( e ).up(), false, e ); } );
    Event.observe( elem, 'mouseout',  function(e) { setMenu( $( originalMenuitem ), false, e ); } );
  });

  arrow = new Element('img', {'src': BASE_URI + 'images/arrow.png'} );
  arrow.setStyle( {'position':'absolute', 'top':'99px', 'left':'80px' } );
  $('menu').insert( arrow );

  setMenu( $( originalMenuitem ), true );
  
  var title; //i hope we dont have multiple pointers
  $$('.help').each(function( elem ){
    $(elem).observe('mouseover', function() {
      
      title = $(elem).readAttribute('title');
      $(elem).writeAttribute('title', '');
      
      overlib( title, OFFSETY, 0 );
    });
    $(elem).observe('mouseout', function() {
      
      $(elem).writeAttribute('title', title);
      
      nd();
    });
    
  });
  
  $$('#content #affiliatelogin input').each( function( elem, i ) {
    
    if ( !/text|password/.test( elem.getAttribute('type') ) )
      return;
    
    elem.observe('focus', function( e ) {
      if ( this.getValue() == this.getAttribute('value') )
        this.setValue('');
    });
    
    elem.observe('blur', function( e ) {
      if ( this.getValue() == '' )
        this.setValue( this.getAttribute('value') );
    });
    
  });
});

function setMenu( element, setArrow, e ) {

  if ( !element )
    return;
    
  ul = element.up( 1 );

  switch ( element.id ) {
    case 'menuhome':
      ul.setStyle({backgroundPosition: '0 -44px'});
      if ( setArrow ) arrow.setStyle({'top':'99px','left': '80px'} );
      break;
    case 'menufeatures':
      ul.setStyle({backgroundPosition: '0 -88px'});
      if ( setArrow ) arrow.setStyle({'top':'99px','left': '155px'} );
      break;
    case 'menuexamples':  
      ul.setStyle({backgroundPosition: '0 -132px'}); 
      if ( setArrow ) arrow.setStyle({'top':'98px','left': '240px'} );
      break;
    case 'menureference': 
      ul.setStyle({backgroundPosition: '0 -176px'}); 
      if ( setArrow ) arrow.setStyle({'top':'98px','left': '335px'} );
      break;
    case 'menudownload':  
      ul.setStyle({backgroundPosition: '0 -220px'}); 
      if ( setArrow ) arrow.setStyle({'top':'97px','left': '445px'} );
      break;
    case 'menuforum':     
      ul.setStyle({backgroundPosition: '0 -264px'}); 
      if ( setArrow ) arrow.setStyle({'top':'96px','left': '540px'} );
      break;
  }

}

function expandSource( name ) {

  if ( myLightWindow.windowActive )
   
    myLightWindow.deactivate();

  else {

    myLightWindow.activateWindow({
      href: '#lightwindowbox',
      type: 'inline',
      //caption: 'Source',
      title: 'View source - ' + name,
      left: 700,
      width: 600,
      height: 600,
      finalCallback: function() {
        registerSourcehovering();
      }
    });

  }

  return false;

}

function registerSourcehovering() {

    $$('a.sourceHovering').each(function(element){

      Event.observe( element, 'mouseover', function(e){
        highlightFormElement( Event.element( e ).id.substr( 4 ) );
      });

      Event.observe( element, 'click', function(e){
        e.stop();
        highlightFormElement( Event.element( e ).id.substr( 4 ) );
      });

    });

}

function highlightFormElement( id ) {
  if ( $( id ) && $( id ).up('tr') ) {
    
    $( id ).up('tr').scrollTo();
    new Effect.Highlight( $( id ).up('tr'), { 
      queue: { 
        position: 'end',
        limit: 1,
        scope: $( id ).id
      }
    });
    
  } 
  else {

    var element = $(document.forms.input).getInputs('radio', id)[0];
    
    if ( !element )
      return;
      
    var uniqueid = element.id;

    // nested tables
    if ( element.up('table tr', 1 ) )
      element = element.up('table');

    element.up('tr').scrollTo();
    new Effect.Highlight( element.up('tr'), { 
      queue: { 
        position: 'end',
        limit: 1,
        scope: uniqueid
      }
    });

  }
}
