var TXI = {};

Prototip.Styles['thinkglink'] = {
  border: 6,
  borderColor: '#c7c7c7',
  className: 'thinkglink',
  closeButton: true,
  hideAfter: false,
  hideOn: { element: 'closeButton', event: 'click' },
  hideOthers: true,
  hook: { target: 'leftMiddle', tip: 'topRight' },
  offset: { x: 0, y: -10 },
  radius: 6,
  showOn: 'click',
  stem: {
    position: 'rightTop',
    height: 12,
    width: 15
  }
};

AudioPlayer.setup(TG_BASE + 'static/flash/mp3-player.swf', {
  width: 220,
  transparentpagebg: 'yes',
  animation: 'no'
});

Tips.activeTip = null;
TXI.defaultValues = $H({
  'top_query': 'Search Here',
  'signup_input': 'username@domain.com'
});

document.observe('prototip:hidden', function() {
  Tips.activeTip = null;
});
document.observe('keydown', function(event) {
  if (event.keyCode == 27) {
    Tips.hideAll();
  }
});
if (! Prototype.Browser.IE) {
  document.observe('dom:loaded', load_stuff);
}

function load_stuff() {
  // Audio player
  if ($('audio_file')) {
    var a    = $('audio_file');
    var link = a.href;

    AudioPlayer.embed(a.id, {
      soundFile: link,
      width: 450,
      bg: 'c2dafc',
      leftbg: 'c2dafc',
      rightbg: 'c2dafc',
      rightbghover: 'c2dafc',
      righticonhover: 'ffffff',
      righticon: '78a0d5',
      lefticon: '78a0d5',
      border: '93b6eb',
      loader: '93b6eb',
      volslider: '78a0d5',
      voltrack: 'ffffff'
    });
  }

  // Default input values
  TXI.defaultValues.keys().each(function(name) {
    var input = $(name);
    if (input) {
      if ($F(input) == '') {
        input.value = TXI.defaultValues.get(name);
      }

      $(input).observe('focus', function(e) {
          input.value = '';
      });
    }
  });

  // Search sort dropdown
  if ($('result_sort_details')) {
    $('result_sort_details').down().observe('change', function(event) {
      event.findElement('form').submit();
    });
  }

  // Glossary links
//  $$('a.glossary').each(function(el) {
//    new Tip(el, {
//      hook: { target: 'topLeft', tip: 'bottomLeft' },
//      stem: 'bottomLeft',
//      showOn: 'click',
//      offset: { x: 0, y: 0 },
//      hideOthers: true,
//      width: 275,
//      style: 'thinkglink',
//      borderColor: '#7baa3f',
//      title: el.title.replace(/^Definition of/, ''),
//      ajax: {
//        url: el.href + "/ajax"
//      }
//    });
//    el.href = 'javascript:void(0)';
//  });

  // Video block
  if ($('related_videos_nav')) {
    $('related_videos_nav').show().observe('click', function(event) {
      var el = event.findElement('li');
      var id = el.id.replace(/_toggle$/, '');

      $('recent_video_block').hide();
      $('top_rated_video_block').hide();
      $('related_video_block').hide();
      $('recent_video_block_toggle').down().removeClassName('selected');
      $('top_rated_video_block_toggle').down().removeClassName('selected');
      $('related_video_block_toggle').down().removeClassName('selected');

      switch (id) {
        case 'recent_video_block':
          $('recent_video_block').show();
          $('recent_video_block_toggle').down().addClassName('selected');
          break;
        case 'top_rated_video_block':
          $('top_rated_video_block').show();
          $('top_rated_video_block_toggle').down().addClassName('selected');
          break;
        case 'related_video_block':
          $('related_video_block').show();
          $('related_video_block_toggle').down().addClassName('selected');
          break;
      }
    });
  }

  // rating
  if ($('rating_list')) {
    var ul = $('rating_list').down('ul');

    if (! ul.hasClassName('rated')) {
      ul.observe('mouseover', function(event) {
        if (ul.hasClassName('rated')) {
          return;
        }

        var el = event.element();

        if (el.tagName.toLowerCase() == 'a') {
          ul.className = ul.className.replace(/rate_(default|green)_0[0-5]/g, '');
          ul.addClassName(el.name);
        }
      });

      ul.observe('mouseout', function(event) {
        if (ul.hasClassName('rated')) {
          return;
        }

        var el = event.findElement('ul');

        el.className = el.className.replace(/rate_(default|green)_0[0-5]/g, '');
      });

      ul.observe('click', function(event) { 
        if (ul.hasClassName('rated')) {
          return;
        }

        var el = event.findElement();

        if (el.tagName.toLowerCase() == 'a') {
          new Ajax.Request(window.location.toString().replace(/\/$/, '') + '/rate', {
            parameters: 'rating=' + el.name.replace(/[^0-9]/g, ''),
            onComplete: function(transport) {
              if (transport.responseText == '1') {
                ul.addClassName('rated');
                ul.className = ul.className.replace(/(default|green)_0[0-5]/, el.name.replace(/rate_/, ''));
                ul.childElements().last().down().update('Your rating has been recorded');
              } else {
                alert('There was a problem rating. Please try again later.');
              }
            }
          });
        }
      });
    }
  }

  var flaggers = $$('#comments .flag a');
  if (flaggers.length) {
    $('comments').observe('click', function(event) {
      var el = event.element();

      if (el.tagName.toLowerCase() != 'a' || ! el.name.match(/^flag-/)) {
        return;
      }

      new Ajax.Request(window.location.toString().split(/#/)[0] + '/flagcomment/' + el.name.split(/-/)[1], {
        onComplete: function(transport) {
          if (transport.responseText == '1') {
            $(el.parentNode).update('Comment flagged');
          } else {
            alert('There was a problem flagging. Please try again later.');
          }
        }
      });
    });
  }
}
