var $write;
var $writeForm;
var inputIds;
var inputIndex;

$(function (){
	var shift = false,
		capslock = false;
	
	$('#keyboard li').click(function(){
		var $this = $(this),
			character = $this.html(); // If it's a lowercase letter, nothing happens to this variable
		
		// Shift keys
		if ($this.hasClass('left-shift') || $this.hasClass('right-shift')) {
			$('.letter').toggleClass('uppercase');
			$('.symbol span').toggle();
			
			shift = (shift === true) ? false : true;
			capslock = false;
			return false;
		}
		
		// Caps lock
		if ($this.hasClass('capslock')) {
			$('.letter').toggleClass('uppercase');
			capslock = true;
			return false;
		}
		
		// Delete
		if ($this.hasClass('delete')) {
			var html = $write.val();
			
			$write.val(html.substr(0, html.length - 1));
			return false;
		}
		
		// Special characters
		if ($this.hasClass('symbol')) character = $('span:visible', $this).html();
		if ($this.hasClass('space')) character = ' ';

                // Tab
		if ($this.hasClass('tab')) {
                  nextInput($write.attr('id'));
                  return 0;
                }

                // Return
		if ($this.hasClass('return')) {
                  hideOnScreenKeyboard();
                  return 0;
                }

                // Enter
		if ($this.hasClass('enter')) {
                  if ($writeForm != null) {
                    $writeForm.submit();
                  }
                  hideOnScreenKeyboard();
                  return 0;
                }
		
		// Uppercase letter
		if ($this.hasClass('uppercase')) character = character.toUpperCase();
		
		// Remove shift once a key is clicked.
		if (shift === true) {
			$('.symbol span').toggle();
			if (capslock === false) $('.letter').toggleClass('uppercase');
			
			shift = false;
		}
		
		// Add the character
		$write.val($write.val() + character);
	});
});

function gatherInputs(formId) {
  inputIds = new Array();
  $(':input').each(function(i){
    var currentInput = $($(':input')[i]);
    if (currentInput.attr('form') != null) {
      if (currentInput.attr('form').id == formId && (
          (currentInput.attr('type') == 'text') ||
          (currentInput.attr('type') == 'textarea') ||
          (currentInput.attr('type') == 'password'))) {
        inputIds[inputIds.length] = currentInput.attr('id');
      }
    }
  });
}

function teszt() {
  return $write.attr('id');
}

function nextInput(inputId) {
  for (var i=0; i<inputIds.length; i++) {
    if (inputIds[i] == inputId) {
      if (i+1<inputIds.length) {
        setWrite(inputIds[i+1]);
      } else {
        setWrite(inputIds[0]);
      }
    }
  }
}

function setWrite(inputId) {
  $write = $('#'+inputId);
}

function resetWrite() {
  $write = null;
}

function setWriteForm(writeFormId) {
  if (writeFormId != null) {
    $writeForm = $('#'+writeFormId);
  } else {
    $writeForm = null;
  }
}

function resetWriteForm() {
  $writeForm = null;
}
