function TabGroup(name) {
  this.name=name;
  this.inputs=new Array();
}

TabGroup.prototype.addInput = function(input) {
  this.inputs[this.inputs.length]=input;
}

TabGroup.create = function (name) {
  if (typeof (this.groups) == "undefined" || this.groups == null) {
    this.groups=new Array();
  }
  this.groups[name]=new TabGroup(name);
}

TabGroup.addElement = function (input) {
  if (typeof (this.groups) == "undefined" || this.groups == null) {
    this.groups=new Array();
  }
  if ("string" == typeof input) {
    input=document.getElementById(input);
  }
  name=input.getAttribute("tabGroup");
  if (typeof (this.groups[name]) == "undefined" || this.groups[name] == null ) {
    this.groups[name]=new TabGroup(name);
  }
  this.groups[name].addInput(input);
  input.onkeyup=tabSwitch;
}

TabGroup.prototype.getArrayIndex = function (input) {
  for (var i=0;i<this.inputs.length;i++) {
    if (this.inputs[i] == input) {
      return i;
    }
  }
  return -1;
}     

TabGroup.inArray = function(filter, which) {
  var found = false, index = 0;
  while(!found && index < filter.length)
    if(filter[index] == which)
      found = true;
    else
      index++;                                                                                                                                   return found;                                                                                                                                }

function tabSwitch(e) {
  var input = null;
  var which = null;
  var filter = null;
  var tabgroup = null;
  if (ie4) {
    input = window.event.srcElement;
    which = window.event.keyCode;
    filter = [0,8,9,16,17,18,37,38,39,40,46];
  } else {
    input = e.target;
    which = e.which;
    filter = [0,8,9];
  }
  tabgroup = TabGroup.groups[input.getAttribute("tabGroup")];
  if (input.value.length >= input.size && !TabGroup.inArray(filter,which)) {
    var index=tabgroup.getArrayIndex(input);;
    if (index>-1 && tabgroup.inputs.length>0 && (index+1 < tabgroup.inputs.length) && tabgroup.inputs[index+1].disabled == false) {
      tabgroup.inputs[index+1].focus();
      if (tabgroup.inputs[index+1].type!="select-one") {
        tabgroup.inputs[index+1].select();
      }
    }
  } else if (which==8 && input.value.length == 0) {
    //megyünk az előzőre
    var index=tabgroup.getArrayIndex(input);;
    //alert(input.name+"::"+index);
    if (index > 0 && tabgroup.inputs[index-1].disabled == false) {
      tabgroup.inputs[index-1].focus();
      if (tabgroup.inputs[index-1].type!="select-one") {
        tabgroup.inputs[index-1].select();
      }
    }
  }
  return true;
}
