/**
* @author Stefan van Zanden <svz@yes-co.nl>
*
* Function that compares 2 selectboxes and makes sure 1 is always higher then the other
*
* @param string lowerElemId
* @param string higherElemId
* @param initiatorElemId
* return void
*/
function compareLowerHigher(lowerElemId, higherElemId, initiatorElemId)
{
  if (!lowerElemId)
    return;

  if (!higherElemId)
    return;

  if (!initiatorElemId)
    return;

  if (initiatorElemId != lowerElemId && initiatorElemId != higherElemId)
    return;

  var lowerElem = null;
  var higherElem = null;

  if (lowerElem = document.getElementById(lowerElemId))
  {
    if (higherElem = document.getElementById(higherElemId))
    {
      // Check if both options are of type SELECT
      if (!lowerElem.tagName == 'SELECT' && !higherElem.tagName == 'SELECT')
        return;

      var lowerElemSelectedValue = lowerElem.options[lowerElem.selectedIndex].value;
      var higherElemSelectedValue = higherElem.options[higherElem.selectedIndex].value;

      // In case the item that needs to be lower is actually higher
      // then we should addept that one until it is fixed.
      if (lowerElemSelectedValue >= higherElemSelectedValue)
      {
        var i = null;
        var selectedValue = 0;
        var currentValue = null;

        if (initiatorElemId == lowerElemId)
        {
          var selectedIndex = (higherElem.options.length - 1);

          for (i = 0; i < higherElem.options.length; i++)
          {
            currentValue = higherElem.options[i].value;

            if (currentValue > lowerElemSelectedValue)
            {
              selectedValue = currentValue;
              selectedIndex = i;
              break;
            }

          }

          higherElem[selectedIndex].selected = true;
        }
        else // In this case the initiator is the higherElement
        {
          var selectedIndex = 0;

          for (i = 0; i < lowerElem.options.length; i++)
          {
            currentValue = lowerElem.options[i].value;

            if (currentValue < higherElemSelectedValue && currentValue > selectedValue)
            {
              selectedValue = currentValue;
              selectedIndex = i;
            }

          }

          lowerElem[selectedIndex].selected = true;
        }
      }

    }
  }
}
