var Keyboard = function(type, placeholder) {

	// ** Свойства клавиатуры

	// Тип клавиатуры
	switch(type) {

		// Полная
		case 'full':
			this.type = type;
			break;

		// Числовая с поддержкой дробных чисел
		case 'numeric':
			this.type = type;
			break;

		// Числовая, только целые числа
		case 'integer':
			this.type = type;
			break;

		// Неизвестный тип
		default:
			alert('Неизвестный тип клавиатуры');
			return;
			break;

	}

	// Идентификатор поля, в которое будем помещать значение
	this.target = null;

	// Контейнер (идентификатор), куда поместить клавиатуру
	this.placeholder = placeholder;


}

// Устанавливаем цель, куда будем помещать набираемые символы
// id - идентификатор текстового поля
Keyboard.prototype.setTarget = function(id) {

	// Помещаем идентификатор
	this.target = id;

}


// Генерирует HTML клавиатуры и помещает его в DOM-контейнер
Keyboard.prototype.place = function() {

	// В зависимости от типа требуемой клавиатуры генерируем соответствующий HTML
	var html = '<div class="keyboard">';

	switch(this.type) {


		// Целочисленная клавиатура
		case 'integer':

			html += '<div class="row">';
			html += '<button onclick="Nakopitel.keyboard.click(0)">0</button>';
			html += '<button onclick="Nakopitel.keyboard.click(1)">1</button>';
			html += '<button onclick="Nakopitel.keyboard.click(2)">2</button>';
			html += '<button onclick="Nakopitel.keyboard.click(3)">3</button>';
			html += '<button onclick="Nakopitel.keyboard.click(4)">4</button>';
			html += '<button onclick="Nakopitel.keyboard.click(5)">5</button>';
			html += '<button onclick="Nakopitel.keyboard.click(6)">6</button>';
			html += '<button onclick="Nakopitel.keyboard.click(7)">7</button>';
			html += '<button onclick="Nakopitel.keyboard.click(8)">8</button>';
			html += '<button onclick="Nakopitel.keyboard.click(9)">9</button>';
			html += '<button onclick="Nakopitel.keyboard.correct()">стереть</button>';
			html += '</div>'

			break;


		// Дробная клавиатура
		case 'numeric':

			html += '<div class="row">';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'.'" + ')">,</button>';
			html += '<button onclick="Nakopitel.keyboard.click(0)">0</button>';
			html += '<button onclick="Nakopitel.keyboard.click(1)">1</button>';
			html += '<button onclick="Nakopitel.keyboard.click(2)">2</button>';
			html += '<button onclick="Nakopitel.keyboard.click(3)">3</button>';
			html += '<button onclick="Nakopitel.keyboard.click(4)">4</button>';
			html += '<button onclick="Nakopitel.keyboard.click(5)">5</button>';
			html += '<button onclick="Nakopitel.keyboard.click(6)">6</button>';
			html += '<button onclick="Nakopitel.keyboard.click(7)">7</button>';
			html += '<button onclick="Nakopitel.keyboard.click(8)">8</button>';
			html += '<button onclick="Nakopitel.keyboard.click(9)">9</button>';
			html += '<button onclick="Nakopitel.keyboard.correct()">стереть</button>';
			html += '</div>'

			break;


		// Полная клавиатура
		case 'full':

			html += '<div class="row">';
			html += '<button onclick="Nakopitel.keyboard.click(0)">0</button>';
			html += '<button onclick="Nakopitel.keyboard.click(1)">1</button>';
			html += '<button onclick="Nakopitel.keyboard.click(2)">2</button>';
			html += '<button onclick="Nakopitel.keyboard.click(3)">3</button>';
			html += '<button onclick="Nakopitel.keyboard.click(4)">4</button>';
			html += '<button onclick="Nakopitel.keyboard.click(5)">5</button>';
			html += '<button onclick="Nakopitel.keyboard.click(6)">6</button>';
			html += '<button onclick="Nakopitel.keyboard.click(7)">7</button>';
			html += '<button onclick="Nakopitel.keyboard.click(8)">8</button>';
			html += '<button onclick="Nakopitel.keyboard.click(9)">9</button>';
			html += '<button onclick="Nakopitel.keyboard.correct()">стереть</button>';
			html += '</div>'

			html += '<div class="row">';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'.'" + ')">.</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "','" + ')">,</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'-'" + ')">-</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'+'" + ')">+</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "':'" + ')">:</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'('" + ')">(</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "')'" + ')">)</button>';
			html += '<button class="space" onclick="Nakopitel.keyboard.click(' + "' '" + ')">&nbsp;</button>';
			html += '<button class="ru" onclick="$(' + "'.keyboard .en'" + ').show(); $(' + "'.keyboard .ru'" + ').hide();">английский</button>';
			html += '<button class="en" onclick="$(' + "'.keyboard .en'" + ').hide(); $(' + "'.keyboard .ru'" + ').show();">русский</button>';
			html += '</div>'

			html += '<div class="row ru">';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'А'" + ')">А</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'Б'" + ')">Б</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'В'" + ')">В</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'Г'" + ')">Г</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'Д'" + ')">Д</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'Е'" + ')">Е</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'Ё'" + ')">Ё</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'Ж'" + ')">Ж</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'З'" + ')">З</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'И'" + ')">И</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'Й'" + ')">Й</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'К'" + ')">К</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'Л'" + ')">Л</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'М'" + ')">М</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'Н'" + ')">Н</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'О'" + ')">О</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'П'" + ')">П</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'Р'" + ')">Р</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'С'" + ')">С</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'Т'" + ')">Т</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'У'" + ')">У</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'Ф'" + ')">Ф</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'Х'" + ')">Х</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'Ц'" + ')">Ц</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'Ч'" + ')">Ч</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'Ш'" + ')">Ш</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'Щ'" + ')">Щ</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'Ъ'" + ')">Ъ</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'Ы'" + ')">Ы</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'Ь'" + ')">Ь</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'Э'" + ')">Э</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'Ю'" + ')">Ю</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'Я'" + ')">Я</button>';
			html += '</div>'


			html += '<div class="row en">';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'A'" + ')">A</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'B'" + ')">B</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'C'" + ')">C</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'D'" + ')">D</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'E'" + ')">E</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'F'" + ')">F</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'G'" + ')">G</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'H'" + ')">H</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'I'" + ')">I</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'J'" + ')">J</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'K'" + ')">K</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'L'" + ')">L</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'M'" + ')">M</button>';
			html += '</div>'

			html += '<div class="row en">';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'N'" + ')">N</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'O'" + ')">O</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'P'" + ')">P</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'Q'" + ')">Q</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'R'" + ')">R</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'S'" + ')">S</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'T'" + ')">T</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'U'" + ')">U</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'V'" + ')">V</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'W'" + ')">W</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'X'" + ')">X</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'Y'" + ')">Y</button>';
			html += '<button onclick="Nakopitel.keyboard.click(' + "'Z'" + ')">Z</button>';
			html += '</div>'


			break;


	}

	html += '</div>';

	// Помещаем HTML на экран
	$('#' + this.placeholder).html( html );

}


// Функция, срабатывающая при нажатии на кнопку с символом
Keyboard.prototype.click = function(value) {

	// Если цель не указана, выходим
	if( this.target == null ) {
		return;
	}
	
	// Если максимальная длина поля достигнута, ничего не добавляем
	if( $('#' + this.target).val().length >= $('#' + this.target).attr('maxlength') && $('#' + this.target).attr('maxlength') > 0 ) {
		return;
	}

	// Добавляем значение в поле
	$('#' + this.target).val( $('#' + this.target).val() + value );

	// Вызываем событие change для сохранения данных поля
	$('#' + this.target).change();

	// Фокусируемся на поле, чтобы показать курсор
	$('#' + this.target).focus();

}



// Функция, срабатывающая при нажатии на кнопку "удалить последний символ"
Keyboard.prototype.correct = function() {

	// Если цель не указана, выходим
	if( this.target == null ) {
		return;
	}

	// Берем значение элемента
	var value = $('#' + this.target).val();

	// Если содержимое есть
	if(value.length > 0) {

		// Укорачиваем на 1
		value = value.substr(0, value.length - 1);

	}

	// Помещаем значение обратно
	$('#' + this.target).val(value);

	// Вызываем событие change для сохранения данных поля
	$('#' + this.target).change();

	// Фокусируемся на поле, чтобы показать курсор
	$('#' + this.target).focus();

}





