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

document.observe('dom:loaded', function() {
  function alertTargetsChanged(changed, status) {
    var number = (changed == 0 ? 'No' : changed);
    var statuses = (changed == 1 ? 'status' : 'statuses');
    alert(number + ' ' + statuses + ' changed to ' + status + '.');
  }
  
  var promptToSave = true;
  
  // put onload code in here
  if ($('save_link_targets')) {
    var authenticity_token = $('save_link_targets').authenticity_token.value;
    
    // radio button handling
    $('save_link_targets').observe('click', function(event) {
      var element = event.element();
      
      // if this isn't a radio button, ignore it
      if (!element.match('input[type=radio]'))
        return;
      
      // user didn't hit SHIFT so we won't do an async save, but we'll darken the row
      if (!event.shiftKey) {
        element.up('tr').addClassName('dirty');
        return;
      }
      
      // user hit SHIFT so we'll save this URL, undirtify, and highlight it
      new Ajax.Request($('save_link_targets').action, {
        method: 'post',
        parameters: (function() {
          var params = {};
          params['authenticity_token'] = authenticity_token;
          params[element.name] = element.value;
          return params;
        }()),
        
        onSuccess: function() {
          var url = element.up('tr').down('td.link_url a').innerHTML;
          element.up('tr').removeClassName('dirty').highlight({
            afterFinish: function(effect) {
              effect.element.setStyle({ background: '' });
            }
          });
        }
      })
    });
    
    // enable status switcher links on column headers
    $$('#save_link_targets a.status-switcher').each(function(a) {
      var status = a.title;
      var status_class = status.toLowerCase().gsub(/[^a-z]/, '-') + '-status-radio-button';
      
      a.observe('click', function(event) {
        event.stop();
        
        var changed = 0;
        $$('input.' + status_class).each(function(radio) {
          if (!radio.checked) {
            radio.checked = true;
            radio.up('tr').addClassName('dirty');
            changed += 1;
          }
        });
        
        alertTargetsChanged(changed, status);
      });
    });
    
    // trap submit event for confirmation
    $('save_link_targets').observe('submit', function(event) {
      if (confirm('Saves All Changes')) {
        promptToSave = false;
      } else {
        event.stop();
      }
    });
  }
  
  if ($('search_link')) {
    $('search_link').observe('click', function(event) {
      event.stop();
    
      $('tag_results').hide();
      $('search').toggle();
    });
  }
  
  if ($('url_search_string')) {
    $('url_search_string').observe('change', function() {
      if($('url_search_string').value == ':free_text_search:') {
        $('free-text-search').toggle();
      } else {
        $('free-text-search').hide();
      }
    });
    
    if ($('url_search_string').value == ':free_text_search:') {
      $('free-text-search').show();
    }
  }
  
  
  if ($('tag_results_link')) {
    $('tag_results_link').observe('click', function(event) {
      event.stop();
    
      $('search').hide();
      $('tag_results').toggle();
    });
  }
  


  if ($('toggle_guides_link')) {
    $('toggle_guides_link').observe('click', function(event) {
      event.stop();
    
      $('toggle_guides').appear();
    });
  }


  if ($('hide_guides_link')) {
    $('hide_guides_link').observe('click', function(event) {
      event.stop();
    
      $('toggle_guides').hide();
      $('toggle_help').hide();
      $('toggle_seo').hide();
      $('toggle_adv').hide();
    });
  }


  if ($('toggle_help_link')) {
    $('toggle_help_link').observe('click', function(event) {
      event.stop();
    
      $('toggle_help').appear();
      $('toggle_seo').hide();
      $('toggle_adv').hide();
    });
  }


  if ($('hide_help_link')) {
    $('hide_help_link').observe('click', function(event) {
      event.stop();

      $('toggle_help').fade();
    });
  }


  if ($('toggle_seo_link')) {
    $('toggle_seo_link').observe('click', function(event) {
      event.stop();
    
      $('toggle_seo').appear();
      $('toggle_help').hide();
      $('toggle_adv').hide();
    });
  }


  if ($('hide_seo_link')) {
    $('hide_seo_link').observe('click', function(event) {
      event.stop();
    
      $('toggle_seo').fade();
    });
  }


  if ($('toggle_adv_link')) {
    $('toggle_adv_link').observe('click', function(event) {
      event.stop();
    
      $('toggle_adv').appear();
      $('toggle_help').hide();
      $('toggle_seo').hide();
    });
  }


  if ($('hide_adv_link')) {
    $('hide_adv_link').observe('click', function(event) {
      event.stop();
    
      $('toggle_adv').fade();
    });
  }

  // change all raw statuses to investigate
  if ($('move_to_investigate')) {
    $('move_to_investigate').observe('click', function(event) {
      event.stop();
      
      var changed = 0;
      $$('input.raw-status-radio-button').each(function(button) {
        if (button.checked == true) {
          $(button.id.gsub('raw', 'investigate')).checked = true;
          $(button).up('tr').addClassName('dirty');
          changed += 1;
        }
      });
      
      alertTargetsChanged(changed, 'Investigate');
    });
  }
  
  // change all raw statuses to rejected
  if ($('move_to_rejected')) {
    $('move_to_rejected').observe('click', function(event) {
      event.stop();
      
      var changed = 0;
      $$('input.raw-status-radio-button').each(function(button) {
        if (button.checked == true) {
          $(button.id.gsub('raw', 'rejected')).checked = true;
          $(button).up('tr').addClassName('dirty');
          changed += 1;
        }
      });
      
      alertTargetsChanged(changed, 'Rejected');
    });
  }

  if ($('comparison_site_download')) {
    $('comparison_site_download').observe('click', function(event) {
      event.stop();
      
      location.href = 'http://siteexplorer.search.yahoo.com/export'
        + '?p=' + encodeURIComponent($F('comparison_site_url'))
        + '&bwm=i&bwmf=u&bwms=p';
    });
  }
  
  window.onbeforeunload = function() {
    if (promptToSave && $$('#save_link_targets tr.dirty').length > 0) {
      return 'Reminder: unsaved changes!';
    } else {
      return;
    }
  };
});
