// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults
FirebugLogger = Class.create();
FirebugLogger.prototype = {
	initialize: function() {},
	
	debug: function() { 
		if (console != null) {
			console.debug.apply(this, arguments);
		} 
	},
	info: function() { 
		if (console != null) {
			console.info.apply(this, arguments);
		} 
	},
	error: function() { 
		if (console != null) {
			console.error.apply(this, arguments);
		} 
	}	
	
};

var logger = null;

NullLogger = Class.create();
NullLogger.prototype = {
	initialize: function() {},
	debug: function() {},
	info: function() {},
	error: function() {}
};


/** Install the logger. **/
try
{
	if (console && console.debug)
	{
		logger = new FirebugLogger();
	  logger.debug("Log created.");
	} else {
		logger = new NullLogger();
	}
}
catch(ex)
{
	// Firebug not installed, use null logger.
	logger = new NullLogger();
}

var SectionForm = {
  // yes, i use setTimeout for a reason
  init: function(id, parentId) {
    if ($('section_parent_id').value == parentId) {      
      $(id).hide();
      this.setParent(null);
    } else {
      $(id).show();
      this.setParent(parentId);      
    }
    
    $('section_name').focus();
  },

  setParent: function(parentId) {
    $('section_parent_id').value = parentId;
  }
}

AppManager = Class.create();
AppManager.prototype = {
	initialize: function() {
		try
		{
		  this.checkRequiredFields();
	  }
	  catch(e)
	  {
	  	logger.error(e.toString());
	  }
	},
	
  checkRequiredField: function(field, is_element) {
    if (is_element != null) {
      field = $(field);
    } else {
      field = field.target
    }
  	if (field.value != null && field.value != '') {
	    field.addClassName("valid");
	  } else {
	    field.removeClassName("valid");
	  }    
  },
  
	checkRequiredFields: function() {
    var required_fields = $A($$("input.required"));

  	required_fields.each(function(f) {
    	this.checkRequiredField(f, true);
      Event.observe($(f), "blur", this.checkRequiredField.bindAsEventListener(this));
	  }.bind(this));
  },
  
  checkEnabled: function(checkbox, element, enabled) {
    checkbox = $(checkbox);
    element = $(element);
    if (checkbox.checked == enabled) {
      element.disabled = false;
    } else {
      element.disabled = true;
    }
  }
}

function mark_for_destroy(element, kind) { 
  $(element).next('.should_destroy').value = 1 
  $(element).up(kind).hide(); 
}