// Display spinner on Ajax calls
Ajax.Responders.register({
  onCreate: function() {
    if (Ajax.activeRequestCount > 0)
      Element.show('spinner');
    },
  onComplete: function() {
    if (Ajax.activeRequestCount == 0)
      Element.hide('spinner');
    }
})

// Benchmark form
// Add grid function
function benchmarkAddGrid(){
  reset_error_message_for("error-for-grids");
  // Check if a grid is selected
  if (selected_is_valid($F("grids-select")) == false){
    set_error_message_for("error-for-grids", "Please select a grid");
    return ; // Exit function
  }
  // Get all immediate descendants of "grids" -> each <li></li>
  gridsItems = $("grids").immediateDescendants();
  // Boolean value init
  gridIsPresent = false ;
  // Loop to find if this grid already belongs to benchmark
  gridsItems.each(function(item) {
    if (item.readAttribute("id") == "grid_" + $F("grids-select")){
      gridIsPresent = true ;
    }
  });
  // If grid not present, build new <li>
  if ( gridIsPresent == false ) {
    // Template
    var tagToInsert = new Template("<li class='grid' id='grid_#{id}'><img src='/images/drag.gif' class='handle'>&nbsp;<span class='blue'>#{gridTitle}</span> <a href='#' onclick='benchmarkRemoveGrid(#{id}); return false;'><img alt='Del' src='/images/ico/del.gif' /></a></li>");
    // Get grid name
    gridName = $("select_grid_" + $F("grids-select")).innerHTML
    // our data to be formatted by the template
    var gridInfo = {id: $F("grids-select"), gridTitle: gridName};
    // Insert newly created tag
    new Insertion.Bottom("grids", tagToInsert.evaluate(gridInfo));
    // Make the list sortable
    Sortable.create("grids", {handle: "handle"});
    // Highlight added grid
    new Effect.Highlight("grid_" + $F("grids-select"));
  }else{
    set_error_message_for("error-for-grids", "You already have selected this list");
  }
}
function benchmarkRemoveGrid(grid_id){
  reset_error_message_for("error-for-grids");
  Element.remove($("grid_" + grid_id));
}
// getGridsOrder
function getGridsOrder(){
  $("benchmarkr_grids").value = "";
  $("benchmarkr_grids").value = Sortable.sequence('grids');
}
// Analyse page
// Display overDiv based on overLib
function display_over_div(criterion_id, thing){
  // Initialisation des variables
  content = "";
  launch_over = false;
  // L'utilisateur veut-il voir le nom des sites ?
  if ($("over_for_things").checked == true)
  {
    launch_over = true;
    content += thing + "<br />";
  }
  // L'utilisateur veut-il voir les critères ?
  if ($("over_for_criterions").checked == true)
  {
    launch_over = true;
    content += "<strong>";
    content += $F("criterion_name_" + criterion_id);
    content += "</strong><br /><span>"; 
    content += $F("criterion_desc_" + criterion_id);
    content += "</span>";
  }
  // Doit-on lancer la overbox ?
  if (launch_over == true)
  {
    return overlib(content);
  }
}
function display_over_img(url){
  content = "<img src='" + url +"' alt='*' />";
  return overlib(content);
}
function toggle_thing(id, checked, swf){
	var url = "/things/" + id + ";toggle?checked=" + checked + "&swf=" + swf;
	// notice the use of a proxy to circumvent the Same Origin Policy.

	new Ajax.Request(url, {method: 'get'});
}

// Tool functions
// Set error message for..
function set_error_message_for(el, message){
	$(el).innerHTML = message;
	$(el).removeClassName("hidden");
}

// Reset error message for..
function reset_error_message_for(el){
	$(el).innerHTML = null ;
	$(el).addClassName("hidden");
}

// Check for non selected item
function selected_is_valid(el){
  if ( el > 0 ){
    return true ;
  }else{
    return false ;
  }
}

// Empty an input depending on its default value
function empty_field_by_value(el, current_value, value_to_delete)
{
  if (current_value == value_to_delete)
  {
    $(el).value = "";
    $(el).removeClassName("default-value");
  }
  $(el).focus();
}
function fill_field_on_empty(el, current_value, default_value)
{
  if (current_value == "")
  {
    $(el).value = default_value;
    $(el).addClassName("default-value");
  }
}
