// Чтение ini файла в объект со свойствами идентичными именам ключей
function ReadIniFile(ini_file) {
	var oINI = {};
	var text = ReadTextFile(ini_file);
	if (text) {
		var arr_lines = text.match(/[^\r\n]+/g);
		var section, param, value;
		for(var i = 0, line; line = arr_lines[i++];) {
			line = line.replace(/^\s*/, '').replace(/\s*$/, '');
			if (!/^[;#]/.test(line)) {        // comment
				if (/^\[(.+)\]/.test(line)) { // section
					section = RegExp.$1;
					if ((section) && (!oINI[section])) oINI[section] = {};
				}
				else if (/^(.+?)\s*=\s*(.+)/.test(line)){ // param=value
					param = RegExp.$1;
					value = RegExp.$2;
					oINI[section][param] = value;
					if ((section.slice(0,4)=="host") && (!IsContainArray(arrProps, param))) arrProps[arrProps.length] = param; // добавляем уникальное значение в массив параметров
				}
			}
		}
	}
	return oINI;
}

// Сохранение объекта INI в ini-файл
function SaveINI(){
	function WriteArray(arr){
		for (var i in arr){
			var value = arr[i];
			if (typeof(value)=='object') {
				file.Write('[' + i + ']\r\n');
				WriteArray(value);
			}else{
				if (typeof(value) != 'undefined') {
					file.Write(i + '=' + value + '\r\n');
				}
			}
		}
	}
	FSO.CopyFile(ini_file, ini_file.replace(/\.ini$/i, '.bak'), true);
	var file = FSO.OpenTextFile(ini_file, 2, true);
	WriteArray(INI);
	file.Close();
}

// Возвращает кол-во хостов
function GetHostsCount(){
	var i = 0;
	while(INI['host'+i]) i++;
	return i;
}

var arrProps = []; // массив с именами всех используемых host-параметров
var ini_file = "LANAdmin.ini";
var cmdline = HTAApp.commandLine.replace(/^".*?" */,'');
if (cmdline.length > 4) {
	ini_file = cmdline.replace(/^"?(.*?)"?$/,'$1');
	document.title = GetFileName(ini_file) + ' - ' + app_name + ' v.' + HTAApp.version;
}
if (!/\\/.test(ini_file)) ini_file = WshShell.CurrentDirectory + '\\' + ini_file;

var INI = ReadIniFile(ini_file);
if (!INI.main) INI.main = {};

if (!INI.main.width) INI.main.width = 600;
if (!INI.main.height) INI.main.height = 400;
window.resizeTo(INI.main.width, INI.main.height);

var host_types = INI.main.host_types;
if (host_types) {
	host_types = INI.main.host_types.split(',');
} else {
	host_types = ['computer','server','notebook','printer','router','netcard','webcamera','ATS'];
	INI.main.host_types = host_types.join(',');
}

var column_width = INI.main.column_width;
if (column_width) {
	column_width = INI.main.column_width.split(',');
} else {
	column_width = [];
}

var column_headers = INI.main.column_headers;
if (column_headers) {
	column_headers = INI.main.column_headers.split(',');
} else {
	column_headers = ['Description','IP','Computer Name','Current User','OS'];
	INI.main.column_headers = column_headers.join(',');
}

var column_contents = INI.main.column_contents;
if (column_contents) {
	column_contents = INI.main.column_contents.split(',');
} else {
	column_contents = ['<host.description>','<host.ip>','<host.name>@<host.domain>','<host.username>','<host.OSVersion>'];
	INI.main.column_contents = column_contents.join(',');
}

var hosts_count = GetHostsCount();
if (!INI.main.ping_interval) INI.main.ping_interval = 60;
if (!INI.main.util_dir) INI.main.util_dir = 'utils';
var util_dir = script_path + '\\' + INI.main.util_dir;

var tmpAdminName = INI.main.admin_name ? INI.main.admin_name : "Administrator";
var tmpAdminPass = INI.main.admin_pass;

if (!INI.main.username_without_domain) INI.main.username_without_domain = '0';
if (!INI.main.response_time_max) INI.main.response_time_max = 6;