var Trackster = {
  included: [],

  require: function(libraryName) {
    document.write('<script type="text/javascript" src="' + libraryName + '"><\/script>');
  },
  
  load: function() {
    // Load the other libraries
    $A(document.getElementsByTagName("script")).findAll( function(s) {
      return (s.src && s.src.match(/application\.js(\?.*)?$/))
    }).each( function(s) {
      var path = s.src.replace(/application\.js(\?.*)?$/,'');
      var includes = s.src.match(/\?.*load=([a-z,]*)/);
      
      (includes ? includes[1] : 'notes', 'injuries').split(',').each(
        function(include) {
          Trackster.require(path + include + '.js') 
          Trackster.included.push(include);
        });
    });
  },

  bindVideo: function() {
    var video = $('video');
    if(video) {
      video.observe('click', function(e) {
        e.stop();

        var overlay = $(document.createElement('div'));
        overlay.id = "overlay";
        overlay.setStyle("opacity: 0.8");
        document.body.appendChild(overlay);
       
        var video = $(document.createElement('div'));
        video.id = "tour-video";
        video.style.width = "700";
        video.style.height = "600";

        video.innerHTML =
          "<div class=\"panel\">" +
          " <h5>Video <span class=\"close\"><a href=\"#\" id=\"close\">Close</a></span></h5>" +
          " <object width=\"640\" height=\"498\">" +
          "  <param name=\"movie\" value=\"http://content.screencast.com/users/CraigMillman/folders/Default/media/8d8566ed-ad13-4a0d-a60e-2c3a0c02e0f8/flvplayer.swf\"></param>" +
          "  <param name=\"quality\" value=\"high\"></param>" +
          "  <param name=\"bgcolor\" value=\"#FFFFFF\"></param>" +
          "  <param name=\"flashVars\" value=\"thumb=http://content.screencast.com/users/CraigMillman/folders/Default/media/8d8566ed-ad13-4a0d-a60e-2c3a0c02e0f8/FirstFrame.jpg&containerwidth=640&containerheight=498&content=http://content.screencast.com/users/CraigMillman/folders/Default/media/8d8566ed-ad13-4a0d-a60e-2c3a0c02e0f8/Trackster-tour.mp4\></param>" +

          "  <param name=\"allowFullScreen\" value=\"true\"></param>" +
          "  <param name=\"scale\" value=\showall\"></param>" +
          "  <param name=\"allowScriptAccess\" value=\"always\"></param>" +
          "  <param name=\"base\" value=\http://content.screencast.com/users/CraigMillman/folders/Default/media/8d8566ed-ad13-4a0d-a60e-2c3a0c02e0f8/\></param>" +
          "  <embed src=\"http://content.screencast.com/users/CraigMillman/folders/Default/media/8d8566ed-ad13-4a0d-a60e-2c3a0c02e0f8/flvplayer.swf\ quality=\"high\" bgcolor=\"#FFFFFF\" width=\"640\" height=\"498\" type=\"application/x-shockwave-flash\" allowScriptAccess=\"always\" flashVars=\"thumb=http://content.screencast.com/users/CraigMillman/folders/Default/media/8d8566ed-ad13-4a0d-a60e-2c3a0c02e0f8/FirstFrame.jpg&containerwidth=640&containerheight=498&content=http://content.screencast.com/users/CraigMillman/folders/Default/media/8d8566ed-ad13-4a0d-a60e-2c3a0c02e0f8/Trackster-tour.mp4\" allowFullScreen=\"true\" base=\"http://content.screencast.com/users/CraigMillman/folders/Default/media/8d8566ed-ad13-4a0d-a60e-2c3a0c02e0f8/\" scale=\"showall\"></embed>" +
          " </object>" +
          "</div>";
        document.body.appendChild(video);
        this.center(video); 

        $('close').observe('click', function(e) {
          e.stop();
          var overlay = $('overlay');
          var video = $('tour-video');

          if(overlay) {
            overlay.parentNode.removeChild(overlay);
          }

          if(video) {
            video.parentNode.removeChild(video);
          }
        });
      }.bindAsEventListener(this));
    } 
  },

  center: function(el) {
    var dimensions = Element.getDimensions(el);
    el.setStyle("left: " + ((this.winWidth() / 2) - dimensions.width / 2) + 'px');
    this.move(el, (this.winWidth() / 2  - dimensions.width / 2), (this.winHeight() / 2 - dimensions.height / 2), true);
  },

  winWidth: function() {
    if (typeof window.innerWidth != 'undefined')
       return window.innerWidth;
    if (typeof document.documentElement != 'undefined' && typeof document.documentElement.clientWidth != 'undefined' && document.documentElement.clientWidth != 0)
       return document.documentElement.clientWidth;
    return document.getElementsByTagName('body')[0].clientWidth
  },
  
  winHeight: function() {
    if (typeof window.innerHeight != 'undefined')
      return window.innerHeight
    if (typeof document.documentElement != 'undefined' && typeof document.documentElement.clientHeight != 'undefined' && document.documentElement.clientHeight != 0)
      return document.documentElement.clientHeight;
    return document.getElementsByTagName('body')[0].clientHeight;
  },
  
  getScrollTop: function() {
    return (window.pageYOffset) ? window.pageYOffset : (document.documentElement && document.documentElement.scrollTop) ? document.documentElement.scrollTop : document.body.scrollTop;
  },
  
  move: function(el, left, top) {
    el.setStyle("left: " + left + "px");
    el.setStyle("top: " + top + "px");
  }
};

FastInit.addOnLoad(function() {
  Trackster.Utilities.bindOpenid();
  Trackster.Utilities.AutoDomain.bind();
  Trackster.Utilities.bindTimezone();
  Trackster.bindVideo();
});

