
function isDocumentSelected() {
    if (isGeckoBreed()) {
        return window.getSelection() != "";
    }
    return document.selection.type == "Text"
}

function isGeckoBreed() {
    return agentType == "Gecko" ||
           agentType == "Gecko_1_0_1"|| 
           agentType == "Gecko_1_0_2"|| 
           agentType == "Gecko_1_4"  ||
           agentType == "Gecko_1_7";
}


function constrainText(input, maxLength) {
    if (input.value.length >= maxLength) {
        input.value = input.value.slice( 0, maxLength );
    }
}

function getValidElements() {
    var validElements = new Array();
    var elements = document.forms[0].elements;
    var element, i = 0;
    for(i = 0; i < elements.length; i++) {
        element = elements[i];
        if (element.type == "hidden" || element.type == "HIDDEN") {
            continue;
        }
        validElements[validElements.length] = element;
    }
    return validElements;
}

function getFirstElement() {
  //look for a component with tabIndex=1
  var elements = getValidElements();
  var i = 0;
  for(i = 0; i < elements.length; i++) {
    comp = elements[i];
    if (comp.getAttribute("tabIndex") == 1) {
      return comp;
    }
  }
  //return the first naturally ordered component
  return elements[0];
}

function containsElement(arr, ele) {
  var found = false, index = 0;
  while(!found && index < arr.length)
  if(arr[index] == ele) {
    found = true;
  } else {
    index++;
  }
  return found;
}

function getNaturalOrderIndex(input) {
  var index = -1, i = 0, found = false;
  var elements = getValidElements();
  while (i < elements.length && index == -1) {
    if (elements[i] == input) {
      index = i;
    } else {
      i++;
    }
  }
  return index;
}
