var keybYN            = new keybEdit('yn','Valid values are \'Y\' or \'N\'.');
var keybNumeric       = new keybEdit('01234567890');
var keybPrice					= new keybEdit('01234567890,');
var keybPhone         = new keybEdit('01234567890/-+()');
var keybAlpha         = new keybEdit('abcdefghijklmnopqurstuvwxy');
var keybAlphaNumeric  = new keybEdit('abcdefghijklmnopqurstuvwxy01234567890 ', 'Alpha-numeric input only.');
var keybDecimal       = new keybEdit('01234567890.');
var keybDate          = new keybEdit('01234567890/', 'Date input only');

var kbIsMoz = 0;
var kbIsIE = 0;

function keybEdit(strValid, strMsg) {
  var reWork = new RegExp('[a-z]','gi'); //	Regular expression\

  if(reWork.test(strValid))
    this.valid = strValid.toLowerCase() + strValid.toUpperCase();
  else
    this.valid = strValid;

  if((strMsg == null) || (typeof(strMsg) == 'undefined'))
  	this.message = '';
  else
  	this.message = strMsg;

  //	Methods
  this.getValid = keybEditGetValid;
  this.getMessage = keybEditGetMessage;
  
  function keybEditGetValid() {
  	return this.valid.toString();
  }
  
  function keybEditGetMessage() {
  	return this.message;
  }
}

function editKeyBoard(objForm, objKeyb, evt) {

	strWork = objKeyb.getValid();
	strMsg = ''; // Error message
	blnValidChar = false; // Valid character flag

	// Part 1: Validate input
	if (!blnValidChar) {
		c = getKeyCode( evt );
		if (c == 0 || c == 8 || c == 13) {
			blnValidChar = true;
		}
		for (i=0;i < strWork.length;i++) {
			if ( c == strWork.charCodeAt(i)) {
				blnValidChar = true;
				break;
			}
		}
	}

  // Part 2: Build error message
  if(!blnValidChar) {
  	if(objKeyb.getMessage().toString().length != 0)
  		alert('Error: ' + objKeyb.getMessage());

	setReturnValue(evt, false); // Clear invalid character
  	objForm.focus(); // Set focus
  }
}

function getKeyCode(evt)
{
  if (kbIsIE) { 
    return evt.keyCode; 
  } else if (kbIsMoz) { 
    return evt.which; 
  }
}

function setReturnValue(evt, b) {
	if ( kbIsIE == 1 ){
		evt.returnValue = b;
	} else {
		evt.preventDefault();
	}
}


function eHandler( evt ) {
	if (evt) {
		kbIsMoz = 1;
		e = evt;
	} else {
		kbIsIE = 1;
		e = window.event;
	}
	return e;
}

function kbNumeric( evt ) {
	editKeyBoard(this, keybNumeric, eHandler(evt) )
}
function kbPrice( evt ) {
	editKeyBoard(this, keybPrice, eHandler(evt) )
}
function kbPhone( evt ) {
	editKeyBoard(this, keybPhone, eHandler(evt) )
}
function kbAlpha( evt ) {
	editKeyBoard(this, keybAlpha, eHandler(evt) )
}
function kbYN( evt ) {
	editKeyBoard(this, keybYN, eHandler(evt) )
}
function kbAlphaNumeric( evt ) {
	editKeyBoard(this, keybAlphaNumeric, eHandler(evt) )
}
function kbDecimal( evt ) {
	editKeyBoard(this, keybDecimal, eHandler(evt) )
}
function kbDate( evt ) {
	editKeyBoard(this, keybDate, eHandler(evt) )
}

