// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults

function loadMovie(clip) {
  if ($('quote').style.display != 'none')
    new Effect.toggle('quote',  'blind',  {queue: {scope:'explain', position:'end'}, duration: 0.4});
  $('multiviewer').show();
  var fo = new SWFObject("/flash/flv_player.swf", "multiviewer","480", "360", "8", "0xfff");
  fo.addVariable("videoPath", clip);
  fo.write("multiviewer");
}

function loadSpacesForTag(tag) {
  new Ajax.Request('/spaces/list_for_tag/' + tag, {asynchronous:true, evalScripts:true});
}

function toggleExplainationText(direction) {
  if (direction == 'down') {
    if ($('quote').style.display != 'none')
      new Effect.toggle('quote',  'blind',  {queue: {scope:'explain', position:'end'}, duration: 0.4});
    new Effect.toggle('flashBox', 'appear', {queue: {scope:'explain', position:'end'}, duration: 0.0});
    new Effect.toggle('explain',  'blind',  {queue: {scope:'explain', position:'end'}, duration: 0.4});
  }
  else {
    new Effect.toggle('explain',  'blind',  {queue: {scope:'explain', position:'end'}, duration: 0.4});
    new Effect.toggle('flashBox', 'appear', {queue: {scope:'explain', position:'end'}, duration: 0.0});
  }
  new Effect.toggle('explainRollDown', 'appear', {queue: {scope:'explain', position:'end'}, duration: 0.0});
  new Effect.toggle('explainRollUp',   'appear', {queue: {scope:'explain', position:'end'}, duration: 0.0});
  return false;
}

function resetExplainationText() {
  if($('explain').style.display != 'none')
    toggleExplainationText('up');
  if ($('quote').style.display != 'none')
    new Effect.toggle('quote',  'blind',  {queue: {scope:'explain', position:'end'}, duration: 0.4});
  return false;
}

// Analyses the given Ajax request. URLs in the exclusions list will match
// the request URL and the function will return false.
// Use to prevent standard Ajax behavior for special URLs
function notExcludedRequest(request)
{
  var notExcluded = true
  exclusions = new Array('/comment/edit',
                         '/comment/create',
                         '/comment/destroy',
                         '/comment/update')
  for (var i = 0; i < (exclusions.length); i++) {
    if(request.url == exclusions[i])
      notExcluded = false
    else {
      // request begins with exclusion?
      if(request.url.substr(0, exclusions[i].length) == exclusions[i])
        notExcluded = false
    }
  }
  return notExcluded
}

//
// Global AJAX Responder.
// Blind_down leftOverlay and show/hide requestIndicator.
// Blind_up leftOverlayContent
// extended with URL-Filter support.
// @see: http://ajaxian.com/archives/debugging-ajax-requests-in-prototype
Ajax.Responders.register({
 onCreate: function(request) {
//   alert('create for ' + request.url)
   if(notExcludedRequest(request)) {
     if (Ajax.activeRequestCount > 0) {
       new Effect.Appear('ajaxLoader', {duration:0.2});
       new Effect.ScrollTo('canvas', {duration: 0.6});
     }
   }
 },
 onComplete: function(request) {
//   alert('complete for ' + request.url)
   if(notExcludedRequest(request)) {
     if (Ajax.activeRequestCount == 0) {
       setTimeout(function() {
         new Effect.Fade('ajaxLoader', {duration:0.6} );
//         new Effect.Highlight('ajaxContainer', {startcolor:'#252929', endcolor:'#DD1200', duration:0.5})
//         new Effect.Highlight('topLeft', {startcolor:'#252929', endcolor:'#DD1200', duration:0.5})
       }, 400)
     }
   }
 }
});

var SpecialEffects = {
  highlightRed: function(id) {
    new Effect.Highlight(id, {startcolor:'#252929', endcolor:'#DD1200', duration:0.5})
  }
}

/* newsletter */
function addNewletterRecipient() {
  new Ajax.Request('/newsletter/addRecipient', {asynchronous:true, evalScripts:true, parameters:Form.serialize($('newsletter')) });
}
function removeNewletterRecipient() {
  new Ajax.Request('/newsletter/removeRecipient', {asynchronous:true, evalScripts:true, parameters:Form.serialize($('newsletter')) });
}

