function FormUtils(){
	this.addTabSimulation = function( argForm ){
		var objForm = null;

		if( typeof(argForm) == "string" ){
			objForm = document.forms[argForm];
		}else{
			objForm = argForm;
		}
		
		if( !objForm ) return false;
		
		for( var i=0; i<objForm.elements.length; i++ ){
			
			objForm.elements[i].formElement = objForm;
		}
		
		objForm.addEventListener('keypress', this.simulateTab, false);
		for( var i=0; i<objForm.elements.length; i++ ){
			if( parseInt(objForm.elements[i].tabIndex) == 1 ){
				objForm.elements[i].focus();
				break;
			}
		}
	}
	
	this.simulateTab = function( e ){
		if (window.event){
	        e = window.event;
	        var fieldValue = event.srcElement.value;
	        var fieldElement = event.srcElement;
	        var lastEntry = String.fromCharCode(e.keyCode);
	    }else{
	        var fieldValue = e.target.value;
	        var fieldElement = e.target;
	        var lastEntry = String.fromCharCode(e.charCode);
	    }
				
		if( e.keyCode == 13 || e.keyCode == 9 ){
		}else{
			return;
		};
		
		var elementIndex = -1;
		var objForm = fieldElement.formElement;
		var nextTabIndex = -1;
		for( var i=0; i<objForm.elements.length; i++ ){
			if( objForm.elements[i] == fieldElement ){
				elementIndex = i;
			}
		}
			
		var lastTabIndex = null;
		nextTabIndex = parseInt( fieldElement.tabIndex )+1;
		for( var i=0; i<objForm.elements.length; i++ ){
			switch( objForm.elements[i].type ){
				case 'hidden':
					continue;
			}
			
			if( objForm.elements[i].readOnly || objForm.elements[i].disabled || ( objForm.elements[i].style.visibility && objForm.elements[i].style.visibility.toLowerCase=='hidden' ) || ( objForm.elements[i].style.display && objForm.elements[i].style.display.toLowerCase=='none' ) ){
				continue;
			}
		
			
			if( ( !lastTabIndex || parseInt( objForm.elements[i].tabIndex ) < lastTabIndex ) && parseInt( objForm.elements[i].tabIndex ) >= nextTabIndex ){
				lastTabIndex = parseInt( objForm.elements[i].tabIndex );
				nextElementIndex = i;
			}
		}
		
		switch( fieldElement.type ){
			case 'submit':
			case 'button':
				break;
			default:
				if (window.event){
					window.event.returnValue = null;
			    }else{
			        e.preventDefault(); 
			    }
		}
		
		if( nextElementIndex > -1 ){
			objForm.elements[nextElementIndex].focus();
		}
		
	}
}