// filter_summary.js for dithered.com
// show/hide functionality for filter summary pages
// code by Chris Nott (chris[at]dithered[dot]com)

function isDefined(property) {
  return (typeof property != 'undefined');
}

function hideSelectBrowsers() {
   if (isDefined(document.getElementById)) {
      
      var selectBrowsers = document.getElementById('selectBrowsers');
      selectBrowsers.style.display = 'none';
      
      var showSelectBrowsersButton = document.getElementById('showSelectBrowsersButton');
      showSelectBrowsersButton.style.display = 'block';
   }
   return false;
}

function hideLegend() {
   if (isDefined(document.getElementById)) {
      
      var legend = document.getElementById('legend');
      legend.style.display = 'none';
      
      var showLegendButton = document.getElementById('showLegendButton');
      showLegendButton.style.display = 'block';
   }
   return false;
}

function showSelectBrowsers() {
   if (isDefined(document.getElementById)) {
      
      var selectBrowsers = document.getElementById('selectBrowsers');
      selectBrowsers.style.display = 'block';
      
      var showSelectBrowsersButton = document.getElementById('showSelectBrowsersButton');
      showSelectBrowsersButton.style.display = 'none';
   }
   return false;
}

function showLegend() {
   if (isDefined(document.getElementById)) {
      
      var legend = document.getElementById('legend');
      legend.style.display = 'block';
      
      var showLegendButton = document.getElementById('showLegendButton');
      showLegendButton.style.display = 'none';
   }
   return false;
}

function selectAllBrowserCheckboxes() {
   var form = document.getElementById('selectBrowsersForm');
   var numFormElements = form.elements.length;
   for (var elementIndex = 0; elementIndex < numFormElements; elementIndex++) {
      var formElement = form.elements[elementIndex];
      if (formElement.type == 'checkbox') {
         formElement.checked = true;
      }
   }
   return false;
}

function unselectAllBrowserCheckboxes() {
   var form = document.getElementById('selectBrowsersForm');
   var numFormElements = form.elements.length;
   for (var elementIndex = 0; elementIndex < numFormElements; elementIndex++) {
      var formElement = form.elements[elementIndex];
      if (formElement.type == 'checkbox') {
         formElement.checked = false;
      }
   }
   return false;
}

function doOnPageLoad() {
   if (isDefined(document.getElementById)) {

      // adding the "hide select browsers form" button
      var hideSelectBrowsersButton = document.createElement('button');
      hideSelectBrowsersButton.className = 'clickable';
      hideSelectBrowsersButton.onclick = hideSelectBrowsers;
      hideSelectBrowsersButton.appendChild(document.createTextNode('Hide'));
      
      var selectBrowsers = document.getElementById('selectBrowsers');
      var selectBrowsersHeader = document.getElementById('selectBrowsersHeader');
      selectBrowsersHeader.appendChild(hideSelectBrowsersButton);
      
      // adding the "hide legend" button
      var hideLegendButton = document.createElement('button');
      hideLegendButton.className = 'clickable';
      hideLegendButton.onclick = hideLegend;
      hideLegendButton.appendChild(document.createTextNode('Hide'));
      
      var legend = document.getElementById('legend');
      var legendHeader = document.getElementById('legendHeader');
      legendHeader.appendChild(hideLegendButton);
      
      // adding the "show select browsers form" button
      var showSelectBrowsersButton = document.createElement('button');
      showSelectBrowsersButton.id = 'showSelectBrowsersButton';
      showSelectBrowsersButton.className = 'clickable';
      showSelectBrowsersButton.onclick = showSelectBrowsers;
      showSelectBrowsersButton.appendChild(document.createTextNode('Select browsers to show.'));
      selectBrowsers.parentNode.insertBefore(showSelectBrowsersButton, legend);
      
      // adding the "show legend" button
      var showLegendButton = document.createElement('button');
      showLegendButton.id = 'showLegendButton';
      showLegendButton.className = 'clickable';
      showLegendButton.onclick = showLegend;
      showLegendButton.appendChild(document.createTextNode('Show table legend.'));
      legend.parentNode.insertBefore(showLegendButton, document.getElementById('summaryTable'));

      // adding the "select all" button
      var selectAllButton = document.createElement('button');
      selectAllButton.id = 'selectAllButton';
      selectAllButton.className = 'clickable';
      selectAllButton.onclick = selectAllBrowserCheckboxes;
      selectAllButton.appendChild(document.createTextNode('Select all'));
      var selectBrowsersFieldset = document.getElementById('selectBrowsersFieldset');
      selectBrowsersFieldset.insertBefore(selectAllButton, document.getElementById('updateTableButton'));

      // adding the "select none" button
      var selectNoneButton = document.createElement('button');
      selectNoneButton.id = 'selectNoneButton';
      selectNoneButton.className = 'clickable';
      selectNoneButton.style.marginLeft = '1em';
      selectNoneButton.onclick = unselectAllBrowserCheckboxes;
      selectNoneButton.appendChild(document.createTextNode('Select none'));
      selectBrowsersFieldset.insertBefore(selectNoneButton, document.getElementById('updateTableButton'));

      // hide form and legend
      hideSelectBrowsers();
      hideLegend();
   }
}

// call doOnPageLoad when document finishes loading
if (isDefined(window.addEventListener)) {
   window.addEventListener('load', doOnPageLoad, false);
}
else if (isDefined(window.attachEvent)) {
   window.attachEvent('onload', doOnPageLoad);
}
