// AZJIO, 03.09.2019
// Description(1033): Insert HTML table
// Description(1049): Вставка HTML-таблицы.
//
// Usage:
//   Call("Scripts::Main", 1, "ins_html_table.js")
// Примечание:
// Заполнение имеет режим 1, в остальных случаях заполняется тем, что введено.
// Режим 1 удобен заполнять ячейки двойным кликом на тексте, а текст показывает номер колонки
// По умолчанию в колонку 1 генерируются номера. Чтобы игнорировать задать колонку 0, которой  нет в таблице
if(!AkelPad.Include("InputBox_function.js")) WScript.Quit();

var hMainWnd = AkelPad.GetMainWnd();
var hEditWnd = AkelPad.GetEditWnd();
var oSys = AkelPad.SystemFunction();
var nSelStart = AkelPad.GetSelStart();
var nSelEnd = AkelPad.GetSelEnd();

var sLng = AkelPad.GetLangId(0 /*LANGID_FULL*/ );
if(sLng == 1049) // Русский
{
	var vLabel = ["Колонок:", "Строк:", "Заполнение (1=режим1):", "Колонка с № (0-игнор):", "Отсчёт от:", "Инкремент (-1):", "Заголовок th", "colspan"];
	var vMsgBox = "Заполните правильно поле ";
}
else // English
{
	var vLabel = ["Columns:", "Lines:", "Filling (1=mode1):", "Column No. (0-ignore):", "Countdown from:", "Increment (-1):", "Title th:", "colspan"];
	var vMsgBox = "Fill in the correct field ";
}

var vRetVal = InputBox(
	hMainWnd,
	"ins html table",
	vLabel, ["", "", "1", "1", "1", "1", "1", "1"]);
if(vRetVal == undefined)
	WScript.Quit();

var nCol = parseInt(Number(vRetVal[0])); // Колонок
var nLin = parseInt(Number(vRetVal[1])); // Строк
var nFill = vRetVal[2]; // Заполнение
var nNCol = parseInt(Number(vRetVal[3])); // Колонка с №
// if (nWidth <= 1)
// nWidth = 0;
var nNStart = parseInt(Number(vRetVal[4])); // Отсчёт
var nNStep = parseInt(Number(vRetVal[5])); // Инкремент
var nTitle = parseInt(Number(vRetVal[6])); // th-заголовок
var nColspan = parseInt(Number(vRetVal[7])); // colspan
var nMode = 2

if((nCol < 1) || (nLin < 1)) {
	ExitError("1, 2")
}
// режимы
// пусто, режим 0 -  без заполения
// 1 заполение числами 111, 222
// 2 заполение тем, что введено
switch(nFill) {
	case "":
		nMode = 0;
		break;
	case "1":
		nMode = 1;
		break;
	default:
		nMode = 2;
};

var res
res = "\n" + '<table class="param" cellspacing="0" cellpadding="3">' + "\n"

if(nTitle) {
	res += '<tr>'
	for(var j = 1; j <= nCol; j++) { // колонок
		res += '<th>'
		switch(nMode) {
			case 1: // разными числами
				// res += StringReplace('000', '0', j)
				for(var a = 1; a <= 3; a++) {
					res += j;
				}
				break;
			case 2: // тем что введено
				res += nFill
				break;
		};
		res += '</th>'
	}
	res += '</tr>' + "\n"
}

for(var i = 1; i <= nLin; i++) { // строк
	res += '<tr>'
	for(var j = 1; j <= nCol; j++) { // колонок
		res += '<td>'
		if(nNCol && (nNCol == j)) {
			res += (nNStart + (i - 1) * nNStep)
		}
		else {
			switch(nMode) {
				// case 0: // не заполняем
				// res += ''
				// break;
				case 1: // разными числами
					// res += StringReplace('000', '0', j)
					for(var a = 1; a <= 3; a++) {
						res += j;
					}
					break;
				case 2: // тем что введено
					res += nFill
					break;
			};
		};
		res += '</td>'
	};
	res += '</tr>' + "\n"
};

if(nColspan) {
	res += '<tr><td colspan=' + nCol + '></td></tr>' + "\n"
}
res += '</table>' + "\n"

AkelPad.ReplaceSel(res);

function ExitError(err) {
	AkelPad.MessageBox(hMainWnd, vMsgBox + err, "ins_html_table.js", 48);
	WScript.Quit();
}

function SendMessage(hWnd, uMsg, wParam, lParam) {
	return oSys.Call("User32::SendMessage" + _TCHAR, hWnd, uMsg, wParam, lParam);
}