if (top.System) {
	setInterval("KeepAlive()", 30000); // every 30 seconds
}
function KeepAlive() {
	var myDate = new Date();
	var i = new Image();
	i.src = "KeepAlive.aspx?t=" + myDate.getTime();
}

if (top && !top.WshShell) {
	try {
		top.WshShell = new ActiveXObject("WScript.Shell");
		top.FileSysObj = new ActiveXObject("Scripting.FileSystemObject");
	}
	catch (e) { }
}

function ReadRegistryString(name) {
	return top.WshShell.RegRead("HKEY_CURRENT_USER\\Software\\VSM Software\\Registration\\" + name);
}

function WriteRegistryString(name, value) {
	top.WshShell.RegWrite("HKEY_CURRENT_USER\\Software\\VSM Software\\Registration\\" + name, value, "REG_SZ");
}

function GetProductCode(system) {
	if (system == null)
		system = _SystemCode;

	var regPathUser, regPathMach;
	switch (system) {
		case "3D":
			regPathUser = "";
			regPathMach = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\VikingEmnet\\7.0\\Information\\Product";
			break;

		case "4D":
			regPathUser = "";
			regPathMach = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\VikingEmnet\\8.0\\Information\\Product";
			break;

		case "Q4":
			return 2;

		case "Q4_QBOT":
			return 2;

		case "Q5":
			regPathUser = "HKEY_CURRENT_USER\\Software\\VSM Software\\QuiltDesign3.0\\Information\\Product";
			regPathMach = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\VSM Software\\QuiltDesign3.0\\Information\\Product";
			break;
			
		default: // Default to 5D
			regPathUser = "HKEY_CURRENT_USER\\Software\\VSM Software\\Embroidery9.0\\Information\\Product";
			regPathMach = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\VSM Software\\Embroidery9.0\\Information\\Product";
			break;
	}

	var product = 99;
	if (regPathUser != "") {
		try {
			product = parseInt(top.WshShell.RegRead(regPathUser));
		}
		catch (e) { }
	}
	if (product == 99) {
		try {
			product = parseInt(top.WshShell.RegRead(regPathMach));
		}
		catch (e) {
			try {
				product = parseInt(top.WshShell.RegRead(regPathMach.replace("\\Wow6432Node", "")));
			}
			catch (e) { }
		}
	}

	return product;
}

function GetProgramFolder(system) {
	if (system == null)
		system = _SystemCode;

	var regPath;
	switch (system) {
		case "3D":
			regPath = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\VikingEmnet\\7.0\\Information\\ApplicationPath";
			break;

		case "4D":
			regPath = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\VikingEmnet\\8.0\\Information\\ApplicationPath";
			break;

		case "Q4":
			regPath = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\VikingEmnet\\QDesign8.5\\Information\\ApplicationPath";
			break;

		case "Q4_QBOT":
			regPath = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\VikingEmnet\\QBOT8.0\\Information\\ApplicationPath";
			break;

		case "Q5":
			regPath = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\VSM Software\\QuiltDesign3.0\\Information\\ApplicationPath";
			break;
			
		default: // Default to 5D
			regPath = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\VSM Software\\Embroidery9.0\\Information\\ApplicationPath";
			break;
	}

	var path;
	try {
		path = top.WshShell.RegRead(regPath);
	}
	catch (e) {
		try {
			path = top.WshShell.RegRead(regPath.replace("\\Wow6432Node", ""));
		}
		catch (e) {
			path = "";
		}
	}

	return path;
}

function GetTempFolder(system) {
	var folder = top.WshShell.ExpandEnvironmentStrings("%LOCALAPPDATA%");
	if (folder == "%LOCALAPPDATA%") // XP does not recognise this
		folder = top.WshShell.ExpandEnvironmentStrings("%USERPROFILE%\\Local Settings\\Application Data")
	if (!top.FileSysObj.FolderExists(folder))
		folder = top.FileSysObj.GetSpecialFolder(2);

	if (system == null)
		system = _SystemCode;

	switch (system) {
		case "Q5": // 5D QuiltDesign Creator
			// Ensure temp folder exists
			folder += "\\VSMSoftware";
			if (!top.FileSysObj.FolderExists(folder)) {
				top.FileSysObj.CreateFolder(folder);
			}
			folder += "\\5DQuiltDesign";
			if (!top.FileSysObj.FolderExists(folder)) {
				top.FileSysObj.CreateFolder(folder);
			}
			folder += "\\Temp";
			if (!top.FileSysObj.FolderExists(folder)) {
				top.FileSysObj.CreateFolder(folder);
			}
			break;
			
		default: // Default to 5D
			// Ensure temp folder exists
			folder += "\\VSMSoftware";
			if (!top.FileSysObj.FolderExists(folder)) {
				top.FileSysObj.CreateFolder(folder);
			}
			folder += "\\5DEmbroidery";
			if (!top.FileSysObj.FolderExists(folder)) {
				top.FileSysObj.CreateFolder(folder);
			}
			folder += "\\Temp";
			if (!top.FileSysObj.FolderExists(folder)) {
				top.FileSysObj.CreateFolder(folder);
			}
			break;
	}

	return folder + "\\";
}

function GetUpdatesFolder(system) {
	var folder = top.WshShell.ExpandEnvironmentStrings("%LOCALAPPDATA%");
	if (folder == "%LOCALAPPDATA%") // XP does not recognise this
		folder = top.WshShell.ExpandEnvironmentStrings("%USERPROFILE%\\Local Settings\\Application Data")
	if (!top.FileSysObj.FolderExists(folder))
		folder = top.FileSysObj.GetSpecialFolder(2);

	if (system == null)
		system = _SystemCode;

	switch (system) {
		case "Q5": // 5D QuiltDesign Creator
			// Ensure temp folder exists
			folder += "\\VSMSoftware";
			if (!top.FileSysObj.FolderExists(folder)) {
				top.FileSysObj.CreateFolder(folder);
			}
			folder += "\\5DQuiltDesign";
			if (!top.FileSysObj.FolderExists(folder)) {
				top.FileSysObj.CreateFolder(folder);
			}
			folder += "\\Updates";
			if (!top.FileSysObj.FolderExists(folder)) {
				top.FileSysObj.CreateFolder(folder);
			}
			break;
			
		default: // Default to 5D
			// Ensure temp folder exists
			folder += "\\VSMSoftware";
			if (!top.FileSysObj.FolderExists(folder)) {
				top.FileSysObj.CreateFolder(folder);
			}
			folder += "\\5DEmbroidery";
			if (!top.FileSysObj.FolderExists(folder)) {
				top.FileSysObj.CreateFolder(folder);
			}
			folder += "\\Updates";
			if (!top.FileSysObj.FolderExists(folder)) {
				top.FileSysObj.CreateFolder(folder);
			}
			break;
	}
	
	return folder + "\\";
}

function GetAppDataFolder(system) {
	var folder = "";
	try {
		folder = top.WshShell.ExpandEnvironmentStrings("%APPDATA%");

		if (system == null)
			system = _SystemCode;

		switch (system) {
			case "Q5": // 5D QuiltDesign Creator
				// Ensure folder exists
				folder += "\\VSMSoftware";
				if (!top.FileSysObj.FolderExists(folder)) {
					top.FileSysObj.CreateFolder(folder);
				}
				folder += "\\5DQuiltDesign";
				if (!top.FileSysObj.FolderExists(folder)) {
					top.FileSysObj.CreateFolder(folder);
				}
				break;
			
			default: // Default to 5D
				// Ensure folder exists
				folder += "\\VSMSoftware";
				if (!top.FileSysObj.FolderExists(folder)) {
					top.FileSysObj.CreateFolder(folder);
				}
				folder += "\\5DEmbroidery";
				if (!top.FileSysObj.FolderExists(folder)) {
					top.FileSysObj.CreateFolder(folder);
				}
				break;
		} 
	}
	catch (e) { }

	return folder + "\\";
}

function ReadFile(filename) {
	text = "";
	try {
		f = top.FileSysObj.OpenTextFile(filename, 1, false, 0); // 1 = ForReading; false = DontCreateNew; 0 = TristateFalse(ascii)
		var text = f.ReadAll();
		f.Close();
	}
	catch (e) {
		text = "#" + e.number + " - " + e.description;
	}
	return text;
}

function WriteFile(filename, text) {
	try {
		f = top.FileSysObj.OpenTextFile(filename, 2, true, 0); // 2 = ForWriting; true = CreateNew; 0 = TristateFalse(ascii)
		f.Write(text);
		f.Close();
		return 0;
	}
	catch (e) {
		return "#" + e.number + " - " + e.description;
	}
}

function CallExec(executable, param1, param2, windowType, waitUntilClosed) {
	var windowStyle = (windowType == "show") ? 5 : 7;
	if (waitUntilClosed == null)
		waitUntilClosed = true;

	if (param2 != null)
		param1 += " \"" + param2 + "\"";

	return top.WshShell.Run("\"" + executable + "\" " + param1, windowStyle, waitUntilClosed);
}

function ConvertToSafeXml(s) {
	return s.replace(/\</g, "[").replace(/\>/g, "]").replace(/\"/g, "^");
}

function ConvertFromSafeXml(s) {
	return s.replace(/\[/g, "<").replace(/\]/g, ">").replace(/\^/g, "\"");
}

function OpenClosePanel(panelName) {
	var panelObj = document.getElementById(panelName);
	if (panelObj.className == "panelopen")
		panelObj.className = "panelavailable";
	else
		panelObj.className = "panelopen";
}

function OpenHelp(page, folderUp) {
	var helpPage = "Help.aspx?page=" + page;
	if (folderUp) {
		for (var i = 0; i < folderUp; i++)
			folderUp = "../" + folderUp;
	}
	window.open(helpPage, "VSMRegistration_Help", "location=no, menubar=no, toolbar=no, width=804, height=569", true);
}
