var dataURL = "/";
var xmlHttp;
var xmlConfig;
var xmlLanguage;
var currentLanguageFile;
var pendingLanguageFile;
var currentDevice;
var devices = new Array();
// Part from Prolon generic REST script library
var current;
function RESTFunction(name)
{
this.functionName = name;
this.parameterList = new Array();
this.cbSuccess = null;
this.cbFailure = null;
this.parameter = null;
return this;
}
RESTFunction.prototype.AddParameter = function(name, value)
{
var param = new Object();
param.name = name;
param.value = value;
this.parameterList[this.parameterList.length] = param;
}
RESTFunction.prototype.Invoke = function(successCallback, failureCallback, parameter)
{
var request = "";
var i;
current = this;
this.cbSuccess = successCallback;
this.cbFailure = failureCallback;
this.parameter = parameter;
if (this.parameterList.length > 0)
{
for (i=0; i<this.parameterList.length; i++)
{
var param = this.parameterList[i];
if (i > 0)
request += "&";
request += param.name + "=" + param.value;
}
}
if (xmlHttp == null)
xmlHttp = new ActiveXObject("MSXML2.XMLHTTP");
if (xmlHttp.readyState != 4)
xmlHttp.abort();
if (request.length == 0)
xmlHttp.Open("GET", dataURL + this.functionName, true);
else
xmlHttp.Open("POST", dataURL + this.functionName, true);
xmlHttp.OnReadyStateChange = RESTStateChange;
xmlHttp.setRequestHeader("Content-type", "text/xml");
xmlHttp.setRequestHeader("Cache-control","No-cache");
xmlHttp.setRequestHeader('If-modified-since','Thu, 22 Nov 1962 12:00:00 GMT');
xmlHttp.Send(request);
}
function RESTStateChange()
{
if (xmlHttp.readyState == 4)
{
var docElement = xmlHttp.responseXML;
var result = RESTGetElementTag(docElement, "Result");
if (current)
{
try
{
if (xmlHttp.status == 200)
{
if (current.cbSuccess)
current.cbSuccess(result, docElement, current.parameter);
}
else
{
if (current.cbFailure)
current.cbFailure(current.parameter);
}
}
catch (e) {}
}
}
}
function RESTGetElementTag(xmlElement, tagName)
{
var results = xmlElement.getElementsByTagName(tagName);
if (results.length > 0)
{
var result = results.item(0);
return result.text;
}
}
function LanguageGetPageElement(languageDoc, pageName)
{
var pageElement;
pageElements = languageDoc.getElementsByTagName("page");
if (pageElements)
{
for (i=0; i<pageElements.length; i++)
{
pageElement = pageElements.item(i);
if (pageElement.getAttribute("id") == pageName)
break;
pageElement = null;
}
}
return pageElement;
}
function LanguageGetText(pageElement, textId)
{
var pageItem;
var text;
if (pageElement)
{
pageItem = pageElement.firstChild;
while (pageItem)
{
if (pageItem.getAttribute("id") == textId)
{
text = pageItem.text;
break;
}
pageItem = pageItem.nextSibling;
}
}
return text;
}
function LanguageParseSVGPage(languageDoc, svgDoc, pageName)
{
var pageElement;
var svgText;
var pageItem;
var i;
pageElement = LanguageGetPageElement(languageDoc, pageName);
if (pageElement)
{
pageItem = pageElement.firstChild;
while (pageItem)
{
svgText = svgDoc.getElementById(pageItem.getAttribute("id"));
if (svgText)
svgText.firstChild.nodeValue = pageItem.text;
pageItem = pageItem.nextSibling;
}
}
}
function LoadLanguage(from)
{
if (xmlLanguage)
{
try
{
window.frames(0).LoadLanguage(xmlLanguage);
}
catch (e) {alert("Exception in ev_main.js : LoadLanguage(0)\n" + e.description);}
try
{
window.frames.item(1).LoadLanguage(xmlLanguage);
}
catch (e) {alert("Exception in ev_main.js : LoadLanguage(1)\n" + e.description);}
}
}
function SetLanguageFile(languageFile)
{
pendingLanguageFile = languageFile;
CheckLanguage();
}
function InitPage()
{
xmlHttp = new ActiveXObject("MSXML2.XMLHTTP");
xmlConfig = new ActiveXObject("Microsoft.XMLDOM");
xmlConfig.validateOnParse = false;
xmlConfig.resolveExternals = false;
xmlConfig.preserveWhiteSpace = false;
xmlLanguage = new ActiveXObject("Microsoft.XMLDOM");
xmlLanguage.validateOnParse = false;
xmlLanguage.resolveExternals = false;
xmlLanguage.preserveWhiteSpace = false;
xmlHttp.Open("GET", dataURL + "FS/FLASH0/web/config.xml", true);
xmlHttp.OnReadyStateChange = LoadConfigStateChange;
xmlHttp.setRequestHeader("Content-type", "text/xml");
xmlHttp.setRequestHeader("Cache-control","No-cache");
xmlHttp.setRequestHeader('If-modified-since','Thu, 22 Nov 1962 12:00:00 GMT');
xmlHttp.Send();
window.status = "Loading config.xml";
}
function FindConfigElement(tagName, defaultValue)
{
var element;
var elements = xmlConfig.getElementsByTagName(tagName);
if (elements.length > 0)
{
element = elements.item(0);
}
else
{
element = xmlConfig.createElement(tagName);
element.text = defaultValue;
xmlConfig.documentElement.appendChild(element);
}
return element;
}
function LoadConfigStateChange()
{
if (xmlHttp.readyState == 4)
{
if (xmlHttp.status == 200)
{
var doc = xmlHttp.responseXML.documentElement;
if (doc && doc.nodeName == "iToolConfig")
xmlConfig = xmlHttp.responseXML;
}
if (xmlConfig.documentElement == null)
xmlConfig.documentElement = xmlConfig.createElement("iToolConfig");
CheckConfig();
}
}
function LoadLanguageStateChange()
{
if (xmlHttp.readyState == 4)
{
if (xmlHttp.status == 200)
{
window.status = "Exhausto iTool setting language";
xmlLanguage.load(xmlHttp.responseStream);
currentLanguageFile = pendingLanguageFile;
pendingLanguageFile = "";
LoadLanguage("LoadLanguageStateChange()");
window.status = "Exhausto iTool selecting device";
SetCurrentDevice(GetCurrentDeviceIndex());
window.status = "Exhausto iTool loaded";
}
else
{
alert("Failed to load language file from iTool");
}
}
}
function LoadLanguageFile(filename)
{
xmlHttp.Open("GET", dataURL + filename, true);
xmlHttp.OnReadyStateChange = LoadLanguageStateChange;
xmlHttp.setRequestHeader("Content-type", "text/xml");
xmlHttp.setRequestHeader("Cache-control","No-cache");
xmlHttp.setRequestHeader('If-modified-since','Thu, 22 Nov 1962 12:00:00 GMT');
xmlHttp.Send();
window.status = "Loading " + filename;
}
function GetCurrentDevice()
{
return devices[currentDevice];
}
function GetCurrentDeviceIndex()
{
return currentDevice;
}
function SetCurrentDevice(deviceIndex)
{
currentDevice = deviceIndex;
try
{
window.frames(0).AdjustToCurrentDevice(devices[currentDevice]);
}
catch (e) {alert("Exception in ev_main.js : SetCurrentDevice(0)\n" + e.description);}
try
{
window.frames(1).AdjustToCurrentDevice(devices[currentDevice]);
}
catch (e) {alert("Exception in ev_main.js : SetCurrentDevice(1)\n" + e.description);}
}
function RunStartupGuide()
{
var width= "480px";
var height= "360px";
var options = "dialogWidth:" + width + ";dialogHeight:" + height + ";edge:raised;center:yes;help:no;resizable:no;status:no;scroll:no;";
var str = showModalDialog('ev_wizard.htm', window, options);
CheckLanguage();
}
function CheckConfig()
{
ParseConfiguration();
if (devices.length == 0)
RunStartupGuide();
}
function CheckLanguage()
{
if (pendingLanguageFile.length > 0 && pendingLanguageFile != currentLanguageFile)
LoadLanguageFile(pendingLanguageFile);
}
function InsertDevice(device)
{
devices[device.id] = device;
if (currentDevice == null)
currentDevice = device.id;
}
function ParseConfiguration()
{
devices = new Array();
var lang = FindConfigElement("Language", "English");
if (lang)
{
var filenameElement = lang.attributes.getNamedItem("filename");
if (filenameElement)
pendingLanguageFile = filenameElement.text;
else
pendingLanguageFile = "ev_english.xml";
CheckLanguage();
}
var deviceElements = xmlConfig.getElementsByTagName("VexDevice");
for (i=0; i<deviceElements.length; i++)
InsertDevice(new Vex100Device(deviceElements.item(i)));
deviceElements = xmlConfig.getElementsByTagName("Vex100Device");
for (i=0; i<deviceElements.length; i++)
InsertDevice(new Vex100Device(deviceElements.item(i)));
deviceElements = xmlConfig.getElementsByTagName("Vex200Device");
for (i=0; i<deviceElements.length; i++)
InsertDevice(new Vex200Device(deviceElements.item(i)));
deviceElements = xmlConfig.getElementsByTagName("MacDevice");
for (i=0; i<deviceElements.length; i++)
InsertDevice(new MacDevice(deviceElements.item(i)));
}

