var PRSearchUtil = new Object();
PRSearchUtil.form = null;
PRSearchUtil.animalOpts = new Array();
PRSearchUtil.byAnimal = false;
PRSearchUtil.byCountry = false;

PRSearchUtil.classNames = new Array
(
  "all_dates_selected",
  "all_dates_not_selected",
  "choose_dates",
  "date_range_selected",
  "date_from_display",
  "date_to_display",
  "change_dates",
  "date_range_selector",

  "animal_names_display",
  "all_animals_selected",
  "all_animals_not_selected",
  "choose_animals",
  "animals_selected",
  "animal_range_selector",

  "country_names_display",
  "all_countries_selected",
  "all_countries_not_selected",
  "choose_countries",
  "country_selected",
  "country_range_selector"
);
PRSearchUtil.els = new Array();

PRSearchUtil.setDisplay = function()
{
  /*
   Select by date
  */
  if (!PRSearchUtil.form.date_from.value ||
      !PRSearchUtil.form.date_to.value)
  // All dates is selected
  {
    PRSearchUtil.els["all_dates_selected"].style.display = "inline";
    PRSearchUtil.els["all_dates_not_selected"].style.display = "none";

    PRSearchUtil.els["date_range_selected"].style.display = "none";
    PRSearchUtil.els["choose_dates"].style.display = "inline";
  }
  else if (PRSearchUtil.form.date_to.value &&
           PRSearchUtil.form.date_to.value)
  // A date range is selected
  {
    PRSearchUtil.els["date_from_display"].innerHTML =
     PRSearchUtil.form.date_from.value;
    PRSearchUtil.els["date_to_display"].innerHTML =
     PRSearchUtil.form.date_to.value;

    PRSearchUtil.els["all_dates_selected"].style.display = "none";
    PRSearchUtil.els["all_dates_not_selected"].style.display = "inline";

    PRSearchUtil.els["date_range_selected"].style.display = "inline";
    PRSearchUtil.els["choose_dates"].style.display = "none";
  }

  /*
   Select by animal
  */
  /*
  if (PRSearchUtil.byAnimal)
  {
    PRSearchUtil.els["all_animals_selected"].style.display = "none";
    PRSearchUtil.els["all_animals_not_selected"].style.display = "inline";

    PRSearchUtil.els["choose_animals"].style.display = "none";
    PRSearchUtil.els["animals_selected"].style.display = "inline";
  }
  else
  {
    PRSearchUtil.els["all_animals_selected"].style.display = "inline";
    PRSearchUtil.els["all_animals_not_selected"].style.display = "none";

    PRSearchUtil.els["choose_animals"].style.display = "inline";
    PRSearchUtil.els["animals_selected"].style.display = "none";
  }
  */

  /*
   Select by country
  */
 /*
  if (PRSearchUtil.byCountry)
  {
    PRSearchUtil.els["all_countries_selected"].style.display = "none";
    PRSearchUtil.els["all_countries_not_selected"].style.display = "inline";

    PRSearchUtil.els["choose_countries"].style.display = "none";
    PRSearchUtil.els["country_selected"].style.display = "inline";
  }
  else
  {
    PRSearchUtil.els["all_countries_selected"].style.display = "inline";
    PRSearchUtil.els["all_countries_not_selected"].style.display = "none";

    PRSearchUtil.els["choose_countries"].style.display = "inline";
    PRSearchUtil.els["country_selected"].style.display = "none";
  }
  */
}

PRSearchUtil.initXV = function(node)
{
  var i, c;
  if ((node.nodeType == "1") &&
      (node.className.length))
  {
    for (i = 0, c = this.classNames.length; i < c; i++)
    {
      if (IFAWUtil.classNameMatch(node.className, this.classNames[i]))
      {
        PRSearchUtil.els[this.classNames[i]] = node;
this.classNames.splice(i, 1);
        break;
      }
    }
  }
  return true;
}

PRSearchUtil.init = function(form, widgetFrom, widgetTo)
{
  var h, c, i, n;

  /*
   Attach date selector to different node
  */
  for (n = form.parentNode; n; n = n.parentNode)
{
    if (IFAWUtil.classNameMatch(n.className, "content_right_col"))
    {
      break;
    }
  }

  h = new Object();
  h.handleXVerse = PRSearchUtil.initXV;
h.classNames = PRSearchUtil.classNames.slice(0);
IFAWUtil.xVerseNode(n, h);
  PRSearchUtil.form = form;
PRSearchUtil.widgetFrom = widgetFrom;
PRSearchUtil.widgetTo = widgetTo;

/*
   Init choose by animal stuff
  */
  /*for (i = 0, c = form.animal_type.options.length; i < c; i++)
  {
    PRSearchUtil.animalOpts[i] = form.animal_type.options[i].selected;
  }
  PRSearchUtil.animalSelectOnChange(form.animal_type); */

  /*
   Init choose by country stuff
  */
  /* PRSearchUtil.countrySelectOnChange(form.country_names); */
    
  PRSearchUtil.setDisplay();
}

/*
 Choose by date
*/
  PRSearchUtil.closeDateSelector = function()
{
    PRSearchUtil.els["date_range_selector"].style.display = "none";
  
    PRSearchUtil.setDisplay();
  
    return false;
  }
  
  PRSearchUtil.openDateSelector = function()
{
    var pos;
    
    PRSearchUtil.els["all_dates_not_selected"].style.display = "inline";
    pos = IFAWUtil.getXYOffset(PRSearchUtil.els["all_dates_not_selected"]);
PRSearchUtil.els["date_range_selector"].style.left = (pos["x"] - 48)+"px";
    PRSearchUtil.els["date_range_selector"].style.top = (pos["y"] - 16)+"px";

    PRSearchUtil.els["all_dates_selected"].style.display = "none";
    PRSearchUtil.els["date_range_selector"].style.display = "block";

    return false;
  }
  
  PRSearchUtil.chooseAllDates = function()
{
    PRSearchUtil.form.date_from.value = "";
    PRSearchUtil.form.date_to.value = "";
  
    PRSearchUtil.widgetFrom.clear();
    PRSearchUtil.widgetTo.clear();
  
    PRSearchUtil.setDisplay();
  
    return false;
  }

/*
 Choose by animal
*/
  PRSearchUtil.chooseAllAnimals = function()
{
    var i, c, opt;
    var el = PRSearchUtil.form.animal_type;
PRSearchUtil.byAnimal = false;
for (i = 0, c = el.options.length; i < c; i++)
    {
      el.options[i].selected = false;
}
    PRSearchUtil.setDisplay();
    return false;
  }

  PRSearchUtil.openAnimalSelector = function()
{
    var pos;
    
    PRSearchUtil.els["all_animals_not_selected"].style.display = "inline";
    pos = IFAWUtil.getXYOffset(PRSearchUtil.els["all_animals_not_selected"]);
PRSearchUtil.els["animal_range_selector"].style.left = (pos["x"] - 48)+"px";
    PRSearchUtil.els["animal_range_selector"].style.top = (pos["y"] - 16)+"px";

    PRSearchUtil.els["all_animals_selected"].style.display = "none";
    PRSearchUtil.els["animal_range_selector"].style.display = "block";

    return false;
  }

  PRSearchUtil.closeAnimalSelector = function()
{
    PRSearchUtil.els["animal_range_selector"].style.display = "none";
  
    PRSearchUtil.setDisplay();
    return false;
  }
  
  PRSearchUtil.animalSelectOnChange = function(el)
{
    var i, c, opt, selectionChange, selected;
    var cache = PRSearchUtil.animalOpts;
var lastAnimalGroup = null;

selectionChange = "none";
    for (i = 0, c = el.options.length; i < c; i++)
    {
      opt = el.options[i];

if (opt.className == "animal_group")
      {
        lastAnimalGroup = opt;
if (opt.selected != cache[i])
// Has changed
        {
          if (opt.selected)
          {
            selectionChange = "select";
          }
          else
          {
            selectionChange = "deselect";
          }
        }
        else
        {
          selectionChange = "none";
        }
      }
      else
      {
        if (selectionChange == "select")
        {
          opt.selected = true;
}
        else if (selectionChange == "deselect")
        {
          opt.selected = false;
}
        else if (opt.selected != cache[i])
// Has changed
        {
          if (!opt.selected && lastAnimalGroup.selected)
          {
            lastAnimalGroup.selected = false;
}
        }
      }
    }

    PRSearchUtil.byAnimal = false;
selected = "";
    for (i = 0, c = el.options.length; i < c; i++)
    {
      opt = el.options[i];
if (opt.selected && (opt.className != "animal_group"))
      {
        PRSearchUtil.byAnimal = true;
selected += ", "+opt.innerHTML.replace(/\&nbsp;/g, "").replace(/^\s+/, "").replace(/\s+$/, "");
      }
      cache[i] = opt.selected;
}
    
    if (PRSearchUtil.byAnimal)
    {
      PRSearchUtil.els["animal_names_display"].innerHTML
       = selected.substr(2);
}
    else
    {
      PRSearchUtil.els["animal_names_display"].innerHTML = "";
    }

    PRSearchUtil.setDisplay();
  }

/*
 Choose by country
*/
  PRSearchUtil.chooseAllCountries = function()
{
    var i, c, opt;
    var el = PRSearchUtil.form.country_names;
PRSearchUtil.byCountry = false;
for (i = 0, c = el.options.length; i < c; i++)
    {
      el.options[i].selected = false;
}
    PRSearchUtil.setDisplay();
    return false;
  }

  PRSearchUtil.openCountrySelector = function()
{
    var pos;
    
    PRSearchUtil.els["all_countries_not_selected"].style.display = "inline";
    pos = IFAWUtil.getXYOffset(PRSearchUtil.els["all_countries_not_selected"]);
PRSearchUtil.els["country_range_selector"].style.left = (pos["x"] - 48)+"px";
    PRSearchUtil.els["country_range_selector"].style.top = (pos["y"] - 16)+"px";

    PRSearchUtil.els["all_countries_selected"].style.display = "none";
    PRSearchUtil.els["country_range_selector"].style.display = "block";

    return false;
  }

  PRSearchUtil.closeCountrySelector = function()
{
    PRSearchUtil.els["country_range_selector"].style.display = "none";
  
    PRSearchUtil.setDisplay();
  
    return false;
  }

  PRSearchUtil.countrySelectOnChange = function(el)
{
    var i, c, opt, selected;
    PRSearchUtil.byCountry = false;
selected = "";
    for (i = 0, c = el.options.length; i < c; i++)
    {
      opt = el.options[i];
if (opt.selected)
      {
        PRSearchUtil.byCountry = true;
selected += ", "+opt.innerHTML.replace(/^\s+/, "").replace(/\s+$/, ""); 
      }
    }
    
    if (PRSearchUtil.byCountry)
    {
      PRSearchUtil.els["country_names_display"].innerHTML
       = selected.substr(2);
}
    else
    {
      PRSearchUtil.els["country_names_display"].innerHTML = "";
    }

    PRSearchUtil.setDisplay();
  }