// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults
function new_comment() {
  if (!$('comment-entry').visible()) {
    new Effect.SlideDown('comment-entry', {
      duration: 0.2,
      afterFinish: function() {
        new Effect.ScrollTo('comment-entry');
      }
    });
  }
}

function cancel_comment() {
  if ($('comment-entry').visible()) {
    new Effect.SlideUp('comment-entry', {duration: 0.4});
  }
}

function submit_comment() {
  $("status").hide();
  new Ajax.Updater('status', '/comments/create', {
    method: 'post',
    parameters: Form.serialize('comment_elements'),
    onComplete: function(transport) {
      if (!transport.responseText.match(/^Error/)) {
        new Effect.SlideUp('comment-entry', {
          duration: 0.4,
          afterFinish: function() {
            show_comments();
          }
        });
      } else {
        Recaptcha.reload('r');
        new Effect.Appear('status', {duration: 0.6});
      }
      return false;
    }
  });
  return false;
}

function show_comments(page) {
  if (!page) page = 1;
  if ($('comments-list').visible()) {
    new Effect.SlideUp('comments-list', {
      duration: 0.4,
      afterFinish: function() {
        new Ajax.Updater('comments-list', '/comments/list', {
          method: 'post',
          parameters: 'page=' + page,
          onComplete: function() {
            new Effect.SlideDown('comments-list', {
              duration: 0.6,
              afterFinish: function() {
                new Effect.ScrollTo('comments-list', {duration: 0.4});
              }
            });
          }
        });
      }
    });
  } else {
    new Ajax.Updater('comments-list', '/comments/list', {
      method: 'post',
      parameters: 'page=' + page,
      onComplete: function() {
        new Effect.SlideDown('comments-list', {duration: 0.6});
      }
    })
  }
}

function show_image(image_location) {
  set_display_background();
  var image = new Image();
  image.src = image_location;
  var image_tag = '<img src="' + image.src + '" alt="" />';
  start_display(image_tag);
  new Effect.ScrollTo('content-wrapper', {duration: 0.6});
}

function show_video(video_location) {
  set_display_background();
  var video_tag = generate_video_tag(video_location);
  start_display(video_tag);
  new Effect.ScrollTo('content-wrapper', {duration: 0.6});
}

/*
{width, height} get_window_dimensions()

Returns size of window content area.
*/
function get_window_dimensions() {
  var dimensions = {width: 0, height: 0};
  if (typeof(window.innerWidth) == 'number') {
    //Non-IE
    dimensions.width = window.innerWidth;
    dimensions.height = window.innerHeight;
  }
  else if(document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
    //IE 6+ in 'standards compliant mode'
    dimensions.width = document.documentElement.clientWidth;
    dimensions.height = document.documentElement.clientHeight;
  }
  else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    dimensions.width = document.body.clientWidth;
    dimensions.height = document.body.clientHeight;
  }
  dimensions.height = Math.max(dimensions.height, parseInt(Element.getHeight('content')));
  return dimensions;
}

/*
void set_display_background()

Sets the dimensions of display background. Should be called on load and resize.
*/
function set_display_background() {
  var window_dimensions = get_window_dimensions();
  var content_dimensions = Element.getDimensions('content-wrapper');
  var final_dimensions = window_dimensions;
  if (final_dimensions.width < content_dimensions.width) final_dimensions.width = content_dimensions.width;
  if (final_dimensions.height < content_dimensions.height) final_dimensions.height = content_dimensions.height;
  Element.setStyle('display-wrapper', {
    width: final_dimensions.width-15 + "px",
    height: final_dimensions.height + "px"
  });
}

function clear_display() {
  $('display').innerHTML = "";
  $('close').hide();
  $('display').hide();
}

function close_display() {
  new Effect.Fade('display-wrapper', {
    duration: 0.4,
    beforeStart: function() {
      clear_display();
    }
  });
}

function start_display(snippet) {
  Element.show('display');
  new Effect.Appear('display-wrapper', {
    duration: 0.4,
    afterFinish: function() {
      $('display').update(snippet);
      Element.show('close');
    }
  });
}

function generate_video_tag(video_location) {
  var tag = "";
  tag += '<object classid="clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b" codebase="http://www.apple.com/qtactivex/qtplugin.cab" height="502" width="864">';
  tag += '<param name="src" value="' + video_location + '" />';
  tag += '<embed src="' + video_location + '" height="502" width="864" type="video/quicktime" pluginspage="http://www.apple.com/quicktime/download/" />';
  tag += '</object>';
  return tag;
}