function displayPlanitTreeNodes(setting)
{                      
  //
  // - not support in IE6 !!!
  //var treenodes = document.getElementsByID("treenode");
  //
  var treenodes = document.getElementsByTagName("div");
  
  for (x = 0;x < treenodes.length;x++)
  {
      // may require additional checking - only treenodes have the id
      // attribute set though.
      if(treenodes[x].id)
      {
         treenode = treenodes[x];
         treenode.style.display=setting;
      }
   }
}

function displayPlanitTreeNode(id, display)
{
   var ele = document.getElementById(id);
   
   
   if (typeof(display) == "undefined")
   {
      var mode = ele.style.display;
      if (mode == "none")
         ele.style.display="inline";
      else
         ele.style.display="none";
   }
   else
   {
      if (display == true)
          ele.style.display="inline";
      else
          ele.style.display="none";
   }    
}

function enablePlanitRollUp(position_id, attribute_id)
{
  // set rollup value
  var rollup = document.getElementById("rollup_" + attribute_id);
  rollup.value="1";

  // set image
  changePlanitRollupImage(attribute_id, 1);
  
  // collapse tree 
  displayPlanitTreeNode(position_id, false);
  
  // enable current node (disable its child nodes)
  setPlanitTreeNode(position_id, attribute_id, true , false);
  
  // disable checkbox
  var checkbox     = document.getElementById(attribute_id);
  checkbox.disabled = true;
}

function disablePlanitRollUp(position_id, attribute_id)
{
  // set rollup value
  var rollup = document.getElementById("rollup_" + attribute_id);
  rollup.value="0";
  
  // set image
  changePlanitRollupImage(attribute_id, 0);

  // expand tree 
  displayPlanitTreeNode(position_id, true);
  
  // enable current nodes child nodes
  setPlanitTreeNode(position_id, attribute_id, true , true);
  
  // enable checkbox
  var checkbox     = document.getElementById(attribute_id);
  checkbox.disabled = false;
}

function checkPlanitRollUp(attribute_id)
{
   var rollup = document.getElementById("rollup_" + attribute_id);
   if (rollup.value == "1")
   {
       alert("This value is currently rolled up, please click the padlock icon");
       return false;
   }
   return true;
}

function selectPlanitRollUp(position_id, attribute_id)
{
   // reference to checkbox
   var checkbox     = document.getElementById(attribute_id);

   // current value
   var rollup = document.getElementById("rollup_" + attribute_id);
  
   // swap value
   if (rollup.value == "1")
   {
     disablePlanitRollUp(position_id, attribute_id);
   }
   else 
   {
      enablePlanitRollUp(position_id, attribute_id);
   }
  
   // set roll up text
   setFilterSelectionText();
}

function changePlanitRollupImage(attribute_id, rolled_up)
{
   var img = document.getElementById("rollup_img_" + attribute_id);

   if (rolled_up == "1")
   {
      img.src = "/images/compere/padlock.jpg";
   }
   else
   {
      img.src = "/images/compere/padlock_off.jpg";
   }

}

function setPlanitTreeNode(position_id, attribute_id, checked_value, child_checked_value)
{
   // reference to checkbox
   var checkbox     = document.getElementById(attribute_id);
   checkbox.checked = checked_value;
   
   selectChildNodes(position_id, child_checked_value);
}

function selectPlanitTreeNode(position_id, attribute_id, force_checked)
{
   // reference to checkbox
   var checkbox     = document.getElementById(attribute_id);

   is_checked = checkbox.checked;
   
   if (force_checked)
      is_checked = "1";
      
   selectChildNodes(position_id, is_checked);
   
   setFilterSelectionText(attribute_id);
}

function selectChildNodes(id, checked_value)
{
   // get surrounding div tag
   var obj = document.getElementById(id);
   // get checkboxes in this tag
   var checkboxes = obj.getElementsByTagName("input");

   for (i=0;i<checkboxes.length;i++)
   {
       checkboxes[i].checked=checked_value;
   }
}

function setFilterSelectionText()
{
   // get text of selected
   
   var filter_selection = document.getElementById("filter_details");

   if (typeof(filter_selection) != "undefined")
   {
       filter_selection.innerHTML="";
   
       var inputs = document.getElementsByTagName("input");

       var selection = "";

       for (i=0;i<inputs.length;i++)
       {
          var require_sep = false;
          if (inputs[i].type == "checkbox")
          {
             if (inputs[i].checked == true)
             {
                var desc = document.getElementById("id_" + inputs[i].id).value;
                
                if (inputs[i].disabled == true)
                {
                   desc+=" (rolled up)";
                }
                
                if (require_sep)
                {
                   selection+=",";
                   selection+=desc;
                    
                   require_sep = false;
                }
                else
                {
                   selection+=desc;
                   selection+="<br>";
                }            
             }
          }
       }    
   
       filter_selection.innerHTML = selection;
    }
}


function setRollUpSelectionText()
{
   // get text of selected
   
   var rollup_selection = document.getElementById("rollup_details");
   rollup_selection.innerHTML="";
   
   // <input type="hidden" id="rollup_{attribute::id}" value="0" />
   
   var inputs = document.getElementsByTagName("input");

   var rollup_text = "";

   for (i=0;i<inputs.length;i++)
   {
      var require_sep = false;
      var input = inputs[i];
      var input_id = input.id;
      
      if (input.type == "hidden" && (input_id.substr(0,7) == "rollup_"))
      {         
         var id = input_id.substr(7, input_id.length);
         if (input.value == "1")
         {            
            var desc = document.getElementById("id_" + id);
            
            if (require_sep)
            {               
               rollup_text+=",";
               rollup_text+=desc.value;
                
               require_sep = false;
            }
            else
            {
               rollup_text+=desc.value;
               rollup_text+="<br>";
            }            
         }
      }
   }
   
   rollup_selection.innerHTML = rollup_text;
}


function submitPlanitFilterSelection(planit_field)
{
  // get selected values from filter selection form store them in parent form
  
  // selected_ids will store a comma seperated list of checked values
  var selected_ids = "";

  // reference to our checkboxes
  var inputs = document.getElementsByTagName("input");

  for (i=0;i<inputs.length;i++)
  {
    if (inputs[i].type == "checkbox" && inputs[i].checked == true)
    {
      // append id
      selected_ids += (inputs[i].id + ",");                    
    }
  }

  if (selected_ids.length)
  {
    // reference to parent document
    var parent_document = window.opener.document;
    
    // reference to form on parent document
    var form = parent_document.forms["planit_form"];
        
    // set hidden field on parent form
    form[planit_field + "_selected_ids"].value=selected_ids;
    
    // close window         
    window.close();
  }        
  else
  {
    // ooops, nothing selected
    alert("No values selected to filter on");    
  }
}


function enableCustomFilter(input, grouping)
{
   var enabled = input.checked;
   
   if (enabled)
   {
      // display options for this field
      if (!showPlanitRefine(grouping, "/sinatra/compere/planit_filter"))
      {
         input.checked = false;
      }
   }
   else
   {
      // disabling the thing!
      if (confirm("You are about to remove any filters on this field, continue?"))
      {
         // remove filters
         removePlanitRefine(grouping);        
      }
      else
      { 
         input.checked = true;
      }
   }
}


function showPlanitRefine(selected_field, window_url)
{
    var planit_form         = document.forms["planit_form"];
    var filter_form         = document.forms["planit_results_form"];
    var field               = planit_form[selected_field].value;
    var restrict_field      = planit_form[selected_field + "_selected_ids"];
    
    if (field.length && field != "-")
    {
        //var restrict_option     = planit_form.restrict_option;
        //var restrict_mode       = restrict_option.options[restrict_option.selectedIndex].value;

        //filter_form.fieldname.value = fieldname;
        //filter_form.grouping.value = selected_field;
        //filter_form.descriptions.value = restrict_field.value;

        // append fieldname e.g. 'cuisine_type'
        window_url += "/&field=" + field; 

        // append planit grouping field e.g. 'grouping_0'
        window_url += "&planit_field=" + selected_field;

        // append currently filtered values for this field
        
        window_url += "&selection=" + restrict_field.value;
        
        var params = "width=600,height=550,menubar=no,top=150,left=150," +
                    "resizable=yes,toolbar=no,scrollbars=no";

        var filter_win = window.open("", "filter", params);
        
        filter_form.action = window_url;
        filter_form.target = "filter";
        filter_form.submit();
        
        return true;
    }
    else
    {
        alert("Please select a field to filter");
        return false;
    }
}

function removePlanitRefine(selected_field)
{
  var planit_form        = document.forms["planit_form"];
  var restrict_field     = planit_form[selected_field + "_selected_ids"];
  var fieldname          = planit_form[selected_field].value;

  if ((fieldname.length && fieldname != "-"))
  {
    // clear restrict field
    restrict_field.value="";
  }
}


function setDisplayFilterMode()
{
  var restrict_option = document.forms["planit_form"].restrict_option;
  var value = restrict_option.options[restrict_option.selectedIndex].value;

  var filter_options_list = document.getElementsByName("planit_filter");

  for(i=0;i<filter_options_list.length;i++)
  {
    if (filter_options_list[i].name="planit_filter")
    {
      if (value == "planit")
      {
        // show the planit specific filter options
        filter_options_list[i].style.display="";
      }
      else
      {
        // hide the planit specific filter options
        filter_options_list[i].style.display="none";
      }
    }
  }
}


function showHideDrill(id)
{
    var tags = document.getElementsByTagName('div');
    for (var i = 0; i < tags.length; ++i)
    {
        if (tags[i].id == id)
        {
            tags[i].style.display = (tags[i].style.display == '' ? 'none' : '');
        }
        else if (tags[i].id.substr(0, 13) == "drill_detail_")
        {
            tags[i].style.display = 'none';
        }
    }
}

