// http://akelpad.sourceforge.net/forum/viewtopic.php?p=1994#1994
// Description(1033): File conversion "TXT with TAB" -> "Mnemosyne XML1"
// 	To workaround the bug refusal to import a text file into AnyMemo.
// 	Works correctly for TXT-files with quotes, as is in *.csv.
// Description(1049): Конвертирование файла "TXT с TAB-разделителем" в "Mnemosyne XML1"
// 	Для обхода бага отказа импорта текстового файла в AnyMemo.
// 	Корректно работает для TXT-файлов с кавычками, как в *.csv.
// Version: 1.0 (2014.11.28)
// Author: VladSh 

if (! AkelPad.Include("ProcessRowText.js")) WScript.Quit();
if (! AkelPad.Include("CommonFunctions.js")) WScript.Quit();
var ext = "xml";
var fileNameFull = AkelPad.GetEditFile(0);
var fileName = getFileNameOnly(fileNameFull) + "." + ext;
fileNameFull = getParentClosed(fileNameFull) + fileName;

var pContent = AkelPad.GetTextRange(0, -1);
var pBreak = '\r';
//вызываем основную функцию обработчика всего файла
var pContent = processRowText(pContent, '\t""' + pBreak, pBreak);

pContent = '<?xml version="1.0" encoding="UTF-8"?>' + pBreak + '<mnemosyne core_version="1" time_of_start="946728000" >' + pBreak + '<category active="1">' + pBreak + '<name>' + fileName + '</name>' + pBreak + '</category>' + pBreak + pContent + pBreak + '</mnemosyne>'

fso = new ActiveXObject("Scripting.FileSystemObject");
if (fso.FileExists(fileNameFull) == true) {
	//файл существует - открываем
	AkelPad.OpenFile(fileNameFull);
	AkelPad.SetSel(0, -1);
}
else {
	//файл не существует - создаём
	createFile(getFileFormat(0), ext);
}
AkelPad.ReplaceSel(pContent, -2);
AkelPad.SaveFile(0, fileNameFull);

//функция обработки отдельной строки
function processString(row) {
	var pResult = "";
	row = row.replace(/"/g, '');
	var arr = row.split('\t');
	if (arr != null) {
		if (!arr[2])
			arr[2] = fileName;
		pResult = "<cat>" + arr[2] + "</cat>" + pBreak;
		pResult = pResult + "<Q>" + arr[0] + "</Q>" + pBreak;
		pResult = pResult + "<A>" + arr[1] + "</A>" + pBreak;
		pResult = '<item id="' + (index + 1) + '">' + pBreak + pResult + "</item>";
	}
	return pResult;
}

function addToResult(arrOutput, vResult) {
	//condition and code added value in the resulting array
	arrOutput[arrOutput.length] = vResult;		//by default return all values (with empty)
}