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

// Used when editing complex master-details forms
function mark_for_destroy( css_class, element )
{
  $(element).next( '.should_destroy' ).value = 1;
  $(element).up( '.' + css_class ).hide();
}

// Setups spinner indicator shown on ajax requests
function set_ajax_spinner()
{
  var myGlobalHandlers = {
    onCreate: function(){
      Element.show( 'spinner' );
    },
    
    onComplete: function() {
      //if(Ajax.activeRequestCount == 0){
        Element.hide( 'spinner' );
      //}
    }
  };
  Ajax.Responders.register( myGlobalHandlers );
  Event.observe( document, "mousemove", follow_spinner );
}

function follow_spinner( e ) 
{
  // Wrapped in try-catch, because on page unload
  // hg stops existing at some undefined point
  // and all actions on it result in error.
  try
  {
    hg = $( 'spinner' )
    if ( hg == null )
      return;
    hg.style.position = 'absolute'
    hg.style.top = Event.pointerY( e ) + 10 + "px"
    hg.style.left = Event.pointerX( e ) + 10 + "px"
  }
  catch ( e )
  {
    if ( !(e instanceof ReferenceError) )
      throw e;
  }
}

var Cookie = {
  set: function(name, value, daysToExpire) {
    var expire = '';
    if (daysToExpire != undefined) {
      var d = new Date();
      d.setTime(d.getTime() + (86400000 * parseFloat(daysToExpire)));
      expire = '; expires=' + d.toGMTString();
    }
    return (document.cookie = escape(name) + '=' + escape(value || '') + expire);
  },
  get: function(name) {
    var cookie = document.cookie.match(new RegExp('(^|;)\\s*' + escape(name) + '=([^;\\s]*)'));
    return (cookie ? unescape(cookie[2]) : null);
  },
  erase: function(name) {
    var cookie = Cookie.get(name) || true;
    Cookie.set(name, '', -1);
    return cookie;
  },
  accept: function() {
    if (typeof navigator.cookieEnabled == 'boolean') {
      return navigator.cookieEnabled;
    }
    Cookie.set('_test', '1');
    return (Cookie.erase('_test') === '1');
  }
};

// Used to achieve XHTML 1.1 conformant target='_blank'
function add_target_blank()
{
  $$( '[rel=external]' ).each( function( a_tag ) { a_tag.target = "_blank" } );
}
