// Auto tab function
var isNN = (navigator.appName.indexOf("Netscape")!=-1);

function tabNext(input,len,e,next_id){
  var keyCode = (isNN) ? e.which : e.keyCode;
  var filter = (isNN) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];
  if(input.value.length >= len && !containsElement(filter,keyCode)) {
    input.value = input.value.slice(0, len);
    document.getElementById(next_id).focus();
  }

  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 getIndex(input) {
    var index = -1, i = 0, found = false;
    while (i < input.form.length && index == -1)
    if (input.form[i].name == input.name)
      index = i;
    else
      i++;
    return index;
  }

  return true;
}

// Picklist (2 multiple selects)

function picklist_move(fromBox, toBox) {
     var fromBoxArr = new Array();
     var toBoxArr = new Array();
     var arrLookup = new Array();
     var i;
     
     for(i=0; i<toBox.options.length; i++) {
          arrLookup[toBox.options[i].text] = toBox.options[i].value;
          toBoxArr[i] = toBox.options[i].text;
     }
     var fLength = 0;
     var tLength = toBoxArr.length
     for(i=0; i<fromBox.options.length; i++) {
          arrLookup[fromBox.options[i].text] = fromBox.options[i].value;
          if(fromBox.options[i].selected && fromBox.options[i].value != "") {
               toBoxArr[tLength] = fromBox.options[i].text;
               tLength++;
          } else {
               fromBoxArr[fLength] = fromBox.options[i].text;
               fLength++;
          }
     }
     fromBoxArr.sort();
     toBoxArr.sort();
     fromBox.length = 0;
     toBox.length = 0;
     var c;
     for(c=0; c<fromBoxArr.length; c++) {
          var no = new Option();
          no.value = arrLookup[fromBoxArr[c]];
          no.text = fromBoxArr[c];
          fromBox[c] = no;
     }
     for(c=0; c<toBoxArr.length; c++) {
     	var no = new Option();
     	no.value = arrLookup[toBoxArr[c]];
     	no.text = toBoxArr[c];
     	toBox[c] = no;
     }
}

function picklist_selectAll(box) {
     for(var i=0; i<box.length; i++) {
     box[i].selected = true;
     }
}

// Textarea maxlength
function textarea_setMaxLength() {
	var x = document.getElementsByTagName('textarea');
	var counter = document.createElement('div');
	counter.className = 'textarea_counter';
	for (var i=0;i<x.length;i++) {
		if (x[i].getAttribute('maxlength')) {
			var counterClone = counter.cloneNode(true);
			counterClone.relatedElement = x[i];
			counterClone.innerHTML = '<span>0</span> / '+x[i].getAttribute('maxlength');
			x[i].parentNode.insertBefore(counterClone,x[i].nextSibling);
			x[i].relatedElement = counterClone.getElementsByTagName('span')[0];

			x[i].onkeyup = x[i].onchange = checkMaxLength;
			x[i].onkeyup();
		}
	}
}

function checkMaxLength() {
	var maxLength = this.getAttribute('maxlength');
	var currentLength = this.value.length;
	if (currentLength > maxLength){
		this.value = this.value.substr(0,maxLength);
		currentLength = this.value.length;
	}
	this.relatedElement.firstChild.nodeValue = currentLength;
	// not innerHTML
}

womAdd('textarea_setMaxLength()');
