v_keyb.keysNormalArray = new Array();
v_keyb.keysCapsArray = new Array();

v_keyb.KeysNormal1Array = new Array();
v_keyb.KeysNormal1Array[0] = '1';
v_keyb.KeysNormal1Array[1] = '2';
v_keyb.KeysNormal1Array[2] = '3';
v_keyb.KeysNormal1Array[3] = '4';
v_keyb.KeysNormal1Array[4] = '5';
v_keyb.KeysNormal1Array[5] = '6';
v_keyb.KeysNormal1Array[6] = '7';
v_keyb.KeysNormal1Array[7] = '8';
v_keyb.KeysNormal1Array[8] = '9';
v_keyb.KeysNormal1Array[9] = '0';
v_keyb.KeysNormal1Array[10] = '-';
v_keyb.KeysNormal1Array[11] = '=';
v_keyb.KeysNormal1Array[12] = '<-';

v_keyb.KeysNormal2Array = new Array();
v_keyb.KeysNormal2Array[0] = 'q';
v_keyb.KeysNormal2Array[1] = 'w';
v_keyb.KeysNormal2Array[2] = 'e';
v_keyb.KeysNormal2Array[3] = 'r';
v_keyb.KeysNormal2Array[4] = 't';
v_keyb.KeysNormal2Array[5] = 'y';
v_keyb.KeysNormal2Array[6] = 'u';
v_keyb.KeysNormal2Array[7] = 'i';
v_keyb.KeysNormal2Array[8] = 'o';
v_keyb.KeysNormal2Array[9] = 'p';
v_keyb.KeysNormal2Array[10] = '[';
v_keyb.KeysNormal2Array[11] = ']'

v_keyb.KeysNormal3Array = new Array();
v_keyb.KeysNormal3Array[0] = 'a';
v_keyb.KeysNormal3Array[1] = 's';
v_keyb.KeysNormal3Array[2] = 'd';
v_keyb.KeysNormal3Array[3] = 'f';
v_keyb.KeysNormal3Array[4] = 'g';
v_keyb.KeysNormal3Array[5] = 'h';
v_keyb.KeysNormal3Array[6] = 'j';
v_keyb.KeysNormal3Array[7] = 'k';
v_keyb.KeysNormal3Array[8] = 'l';
v_keyb.KeysNormal3Array[9] = ';';
v_keyb.KeysNormal3Array[10] = '&#39';
v_keyb.KeysNormal3Array[11] = '\\';
v_keyb.KeysNormal3Array[12] = 'Enter';

v_keyb.KeysNormal4Array = new Array();
v_keyb.KeysNormal4Array[0] = 'Shift';
v_keyb.KeysNormal4Array[1] = 'z';
v_keyb.KeysNormal4Array[2] = 'x';
v_keyb.KeysNormal4Array[3] = 'c';
v_keyb.KeysNormal4Array[4] = 'v';
v_keyb.KeysNormal4Array[5] = 'b';
v_keyb.KeysNormal4Array[6] = 'n';
v_keyb.KeysNormal4Array[7] = 'm';
v_keyb.KeysNormal4Array[8] = ',';
v_keyb.KeysNormal4Array[9] = '.';
v_keyb.KeysNormal4Array[10] = '/';
v_keyb.KeysNormal4Array[11] = '';
v_keyb.KeysNormal4Array[12] = '';

v_keyb.keysNormalArray[0] = v_keyb.KeysNormal1Array;
v_keyb.keysNormalArray[1] = v_keyb.KeysNormal2Array;
v_keyb.keysNormalArray[2] = v_keyb.KeysNormal3Array;
v_keyb.keysNormalArray[3] = v_keyb.KeysNormal4Array;

v_keyb.KeysCaps1Array = new Array();
v_keyb.KeysCaps1Array[0] = '!';
v_keyb.KeysCaps1Array[1] = '@';
v_keyb.KeysCaps1Array[2] = '#';
v_keyb.KeysCaps1Array[3] = '$';
v_keyb.KeysCaps1Array[4] = '%';
v_keyb.KeysCaps1Array[5] = '^';
v_keyb.KeysCaps1Array[6] = '&';
v_keyb.KeysCaps1Array[7] = '*';
v_keyb.KeysCaps1Array[8] = '(';
v_keyb.KeysCaps1Array[9] = ')';
v_keyb.KeysCaps1Array[10] = '_';
v_keyb.KeysCaps1Array[11] = '+';
v_keyb.KeysCaps1Array[12] = '<-';

v_keyb.KeysCaps2Array = new Array();
v_keyb.KeysCaps2Array[0] = 'Q';
v_keyb.KeysCaps2Array[1] = 'W';
v_keyb.KeysCaps2Array[2] = 'E';
v_keyb.KeysCaps2Array[3] = 'R';
v_keyb.KeysCaps2Array[4] = 'T';
v_keyb.KeysCaps2Array[5] = 'Y';
v_keyb.KeysCaps2Array[6] = 'U';
v_keyb.KeysCaps2Array[7] = 'I';
v_keyb.KeysCaps2Array[8] = 'O';
v_keyb.KeysCaps2Array[9] = 'P';
v_keyb.KeysCaps2Array[10] = '{';
v_keyb.KeysCaps2Array[11] = '}';

v_keyb.KeysCaps3Array = new Array();
v_keyb.KeysCaps3Array[0] = 'A';
v_keyb.KeysCaps3Array[1] = 'S';
v_keyb.KeysCaps3Array[2] = 'D';
v_keyb.KeysCaps3Array[3] = 'F';
v_keyb.KeysCaps3Array[4] = 'G';
v_keyb.KeysCaps3Array[5] = 'H';
v_keyb.KeysCaps3Array[6] = 'J';
v_keyb.KeysCaps3Array[7] = 'K';
v_keyb.KeysCaps3Array[8] = 'L';
v_keyb.KeysCaps3Array[9] = ':';
v_keyb.KeysCaps3Array[10] = '&quot;';
v_keyb.KeysCaps3Array[11] = '|';
v_keyb.KeysCaps3Array[12] = 'Enter';

v_keyb.KeysCaps4Array = new Array();
v_keyb.KeysCaps4Array[0] = 'Shift';
v_keyb.KeysCaps4Array[1] = 'Z';
v_keyb.KeysCaps4Array[2] = 'X';
v_keyb.KeysCaps4Array[3] = 'C';
v_keyb.KeysCaps4Array[4] = 'V';
v_keyb.KeysCaps4Array[5] = 'B';
v_keyb.KeysCaps4Array[6] = 'N';
v_keyb.KeysCaps4Array[7] = 'M';
v_keyb.KeysCaps4Array[8] = '<';
v_keyb.KeysCaps4Array[9] = '>';
v_keyb.KeysCaps4Array[10] = '?';
v_keyb.KeysCaps4Array[11] = '';
v_keyb.KeysCaps4Array[12] = '';

v_keyb.keysCapsArray[0] = v_keyb.KeysCaps1Array;
v_keyb.keysCapsArray[1] = v_keyb.KeysCaps2Array;
v_keyb.keysCapsArray[2] = v_keyb.KeysCaps3Array;
v_keyb.keysCapsArray[3] = v_keyb.KeysCaps4Array;

function v_keyb(id, inputFieldId, maskMessage, name){
   v_keyb.maskMessage = maskMessage;
   this.id = id;
   this.name = name;
   this.popup_box = new popup_box(id); 
   this.caps = false;
   this.inputFieldId = inputFieldId;
   this.maskInput = true;
   this.value = '';
   
   this.fillKeyboard(id + '_content');   
}

v_keyb.prototype._maskInput = function(id, mask){
   this.maskInput = mask;
   this.displayValue(id);
}

v_keyb.prototype.fillKeyboard = function (id){
	var keys = this.caps ? v_keyb.keysCapsArray : v_keyb.keysNormalArray;
	obj = document.getElementById(id);
	var html = '';
	html += '<table style="position: relative;">';
	
	html += '<thead>';	
	html += '<tr>';	
	html += '<td class="title" style="cursor: move;" onmousedown="' + this.name + '.dragStart(event)" width="90%"></td>';
	html += '<td class="title" style="cursor: pointer;" onclick="' + this.name + '.close()" title="Zamknij" width="10%">X</td>';
	html += '</tr>';
	html += '</thead>';	
	html += '<tbody>';
	html += '<tr>';
	html += '<td colspan="2">';
	html += '<table style="border: 0px none ; position: relative;">';
	html += '<tbody>';	
	
	html += '<tr>';
	html += '<td colspan="14" width="100%"><nobr><input id="' + id + '_disp" readonly="true" ' +  'size="50" \>&#160;<input ' + ( this.maskInput ? 'checked' : '' ) + ' type="checkbox" onClick="' + this.name + '._maskInput(\'' +  id + '\', this.checked);" style="position:relative;top:3px">' + v_keyb.maskMessage + '</nobr></td>';
	html += '</tr>';

	for(i=0; i < keys.length; i++){
		var array = keys[i];
		html += '<tr>';		
		for(y=0; y < array.length; y++){		
			if( array[y] != '' ){
				var className = '';
			    var outClassName = '';
				var hiliteClassName = '';
			    if( array[y]=='Shift' && this.caps ){
					className = 'hilite';
					outClassName = 'hilite';
					hiliteClassName = 'hilite';
				}
				else {
					className = 'key';
					outClassName = 'key';
					hiliteClassName = 'hilite';				
				}								
								
				val = '<td class="' + className + '" onmouseover="className=' + '\'' + hiliteClassName + '\'" ' + ' onmouseout="className=' + '\'' + outClassName + '\'" style="cursor:pointer;" ';
				
				if( array[y] == 'Shift' || array[y] == '<-' || array[y]=='Enter'){
					val += 'onClick="' + this.name + '.keypress_fun(\'' + id + '\', \'' + array[y] + '\');"';					
				}
				else {
					var code = array[y].charCodeAt();										
					val += 'onClick="' + this.name + '.keypress(\'' + id + '\', ' + code + ');"';					
				}
				
				if(array[y]=='Enter')
					val += 'rowspan="2" colspan="2" valign="center"';
				else if (array[y]=='Shift')
					val += 'colspan="2"';
				else if (array[y]=='<-')
					val +='colspan="2"';
				val += '>' + array[y] + '</td>';		
			}
			else
				val = "<td/>";
			html += val;
		}
		
		html += '</tr>';
	}

	html += '<tr><td colspan="2"/><td colspan="10" class="key" onmouseover="className=' + '\'' + 'hilite' + '\'" ' + 
				' onmouseout="className=' + '\'key\'" onClick="' + this.name + '.keypress(\'' + id + '\', ' + ' '.charCodeAt() + ');" style="cursor:pointer;" >&#160;</td></tr>';
	
	html += '</tbody>';
	html += '</table>';
	html += '</td>';
	html += '</tr>';
	html += '</tbody>';
	html += '</table>';
	
	obj.innerHTML = html;
}

v_keyb.prototype.displayValue = function(id){
  var obj = document.getElementById(id + '_disp');

	if( this.maskInput ){
		var tval = '';
		for( i = 0;  i < this.value.length; i++ )
			tval += '*';
		obj.value = tval;
	}
	else 
		obj.value = this.value;
}

v_keyb.prototype.keypress_fun = function(id, keyValue) {
  var caps = this.caps;
  var val = this.value;
  if(keyValue=='Shift'){
    this.caps = !this.caps;
		this.fillKeyboard(id);	
  }
  else if( keyValue=='<-' ){
    val = val.substring(0,val.length-1);
  }
  else if (keyValue == "Enter"){
		document.getElementById(this.inputFieldId).value = this.value;
		this.close();
		return;
	}
	
  this.value = val;		
  this.displayValue(id);
  
}

v_keyb.prototype.keypress = function(id, keyCode) {
  var caps = this.caps;
  var keyValue = String.fromCharCode(keyCode);
  var val = this.value;
	
  val += keyValue;
  
  this.value = val;	
  this.displayValue(id);
}

v_keyb.prototype.open=function(obj){  
	this.value = ''; 
	this.maskInput = true;
	this.caps = false;
  this.fillKeyboard(this.id + '_content');

  if( this.popup_box )
		this.popup_box.open(obj, this.id);
}

v_keyb.prototype.close=function (){
  if(this.popup_box)
	this.popup_box.close();
}

v_keyb.prototype.dragStart=function(ev){
 if(this.popup_box){
 	this.popup_box._dragStart(ev);
 }
}
