// Копирование в буфер обмена
var copy_text = ''; // глобальная переменная, получающая текст ячейки при открытии на ней контекстного меню
function CopyToClipboard(){
	clipboardData.setData("Text", copy_text);
	HHCtrl.TextPopup(copy_text, "MS Sans Serif, 8, , plain", 4, 4, -1, -1);
}

// HTTP подключение к удаленному хосту
function HTTPConnect(i) {
	window.open ('http://' + (INI['host'+i].name || INI['host'+i].ip));
}

// Возвращает массив из номеров или имен выбранных хостов
// если нет отмеченных хостов, то возвращает текущий
function GetSelectedHosts(names){
	var SelectedHosts = [];
	for (var i=0; i<hosts_count; i++) {
		if (document.getElementsByName('idMarkHost')[i].checked) {
			if (names) {
				SelectedHosts[SelectedHosts.length] = INI['host'+i].name || INI['host'+i].ip;
			} else {
				SelectedHosts[SelectedHosts.length] = i;
			}
		}
	}
	if (SelectedHosts.length==0) {
		if (names) {
			SelectedHosts[0] = INI['host'+oCM.row].name || INI['host'+oCM.row].ip;
		} else {
			SelectedHosts[0] = oCM.row;
		}
	}
	return SelectedHosts;
}

// Запрос инфы о выбранных хостах
function GetSelHostInfo(){
	var sel_hosts = GetSelectedHosts();
	if (!sel_hosts) return;
	StopTimer();
	idStatus.innerText = 'Get info from selected hosts...';
	for (var i=0; i<sel_hosts.length; i++) {
		pending++;
		setTimeout('GetHostInfo('+sel_hosts[i]+')', 10);
	}
}

// Удаление выбранных хостов
function RemoveSelHost(){
	var sel_hosts = GetSelectedHosts(true);
	if (!sel_hosts) return;
	if (WshShell.Popup('Are you sure you want to delete the host:\n' + sel_hosts.join(','), 0, app_name, 36) == 6) {
		StopTimer();
		sel_hosts = GetSelectedHosts();
		for (var i=sel_hosts.length-1; i>=0; i--) {
			RowDelete(sel_hosts[i]);
		}
		ShowHostsTable();
	}
}

var sHosts = ""; // Строка со списком выбранных хостов (через запятую)
// Запуск команды на удаленных ПК
function ExecRemote(){
	var sel_hosts = GetSelectedHosts(true);
	if (sel_hosts) {
		sHosts = sel_hosts.join(',');
		StopTimer();
		showModalDialog('code/exec.remote.html', self, 'status:no; help:no; dialogWidth:10px; dialogHeight:30px;');
		StartTimer();
		UncheckAll();
	}
}

// Экспорт инфы в Excel
function ExportToExcel(){
	var sel_hosts = GetSelectedHosts();
	if (!sel_hosts) return;

	StopTimer();
	var objXL = new ActiveXObject("Excel.Application");
	objXL.Visible = true;
	objXL.WorkBooks.Add;

	var column = [];
	function GetColumn(name){
		for (var col=1; col<column.length; col++) {
			if (column[col] == name) return col; // exist header
		}
		// new header
		column[col] = name;

		var cell = objXL.Cells(1, col);
		cell.Value = name;
		cell.HorizontalAlignment = -4108; //xlCenter
		cell.Font.Bold = true;

		return col;
	}

	var row = 2;
	for (var i=0; i<sel_hosts.length; i++) {
		var host = INI['host'+sel_hosts[i]];
		for (var j in host){
			with (objXL.Cells(row, GetColumn(j))) {
				NumberFormat = "@";
				Value = host[j];
			}
		}
		row++;
	}
	objXL.Cells.Columns.AutoFit;
	StartTimer();
	UncheckAll();
}

// Импорт инфы из Excel
function ImportFromExcel(){
	StopTimer();
	var objXL = new ActiveXObject("Excel.Application");
	objXL.Visible = true;
	var filename = objXL.GetOpenFilename("Excel files (*.xls*), *.xls*");
	if ((filename) && (WshShell.Popup("Warning:\nAll your data will be replaced by data from Excel !", 5, "Import from Excel", 4388) == 6)){
		objXL.Visible = false;
		objXL.Workbooks.Open(filename);

		for (var i=hosts_count-1; i>=0; i--) {
			idHostsList.deleteRow();
			delete INI['host'+i];
		}
		hosts_count = 0;

		var host, name, val;
		for (var row = 2; row <= objXL.ActiveSheet.UsedRange.Rows.Count; row++) {
			host = {};
			for (var col = 1; col <= objXL.ActiveSheet.UsedRange.Columns.Count; col++) {
				name = objXL.Cells(1, col).Value;
				val = objXL.Cells(row, col).Value;
				if (val) host[name] = val;
			}
			INI['host'+(row-2)] = host;
			AddRow();
			FillRow(hosts_count);
			hosts_count++;
		}
		objXL.Workbooks.Close();
	}
	StartTimer();
}

function EditContextMenu(){
	StopTimer();
	showModalDialog('code/edit.context.menu.html', self, 'status:no; help:no; resizable:yes; dialogWidth:600px; dialogHeight:500px;');
	StartTimer();
}

// Редактирование инфы о хосте (вызов диалога)
function EditHostInfo(){
	StopTimer();
	idHostsList.rows[oCM.row].style.backgroundColor = "infobackground";
	showModalDialog('code/edit.host.info.html', self, 'status:no; help:no; resizable:yes; dialogWidth:450px; dialogHeight:500px;');
	idHostsList.rows[oCM.row].style.backgroundColor = "";
	StartTimer();
}

// Добавление новых хостов (вызов диалога)
function AddHosts(){
	StopTimer();
	showModalDialog('code/add.hosts.html', self, 'status:no; help:no; scroll:no; center:yes; dialogWidth:10px; dialogHeight:30px;');
	ShowHostsTable();
}

// Добавление нового хоста в список (вызывается из диалога add.hosts.html)
function AddScanResult(host_id, host_online, host_type, host_descript, host_port){
	INI['host'+hosts_count] = {
		type: host_type,
		description: host_descript,
		online: host_online,
		port_check: host_port
	};
	host_id = String(host_id);
	if (host_id.indexOf(' ') == 0) {
		INI['host'+hosts_count].name = host_id.substr(1);
	} else {
		INI['host'+hosts_count].ip = host_id;
	}
	AddRow();
	FillRow(hosts_count);
	hosts_count++;
}

// Создание ярлыка на Рабочем столе
function CreateShortcut(){
	var shortcut_name = WshShell.SpecialFolders("Desktop") + "\\" + app_name;
	if (ini_file != script_path + "LANAdmin.ini") {
		shortcut_name += " [" + GetFileName(ini_file) + "]";
	}
	shortcut_name += ".lnk";

	with (WshShell.CreateShortcut(shortcut_name)){
		TargetPath = unescape(document.URL).replace(/.*([A-Z]:\\.+)$/i, '"$1"');
		if (ini_file != script_path + "LANAdmin.ini") {
			Arguments = ini_file;
		}
		IconLocation = script_path + "images\\admin.ico";
		Description = "Network administrator tools";
		Save();
	}
	WshShell.Popup("Shortcut to start the application\nput on your desktop!", 3, app_name, 64);
	INI.main.shortcut = 1;
}

var winInfo;
var isInfoShow = false;
// Показ окна с фотографией пользователя
function ShowInfo() {
	winInfo = showModelessDialog('code/info.html', self, 'status:no; help:no; dialogWidth:10px; dialogHeight:30px;');
}