/****************************************************************************
* Radio Control Framework Personal Use and Evaluation License (PUEL) *
* *
* View COPYING for full license details. *
* *
* In summary, your allowed to use Radio Control Framework *
* * for personal use or, alternatively, *
* * for product evaluation. *
* *
* In summary, your not allowed to use Radio Control Framework *
* * for commercial, distribution, or modification purposes. *
* * for government purposes. *
* *
* If you do not belong to either category, you will have to purchase a *
* commercial license. Do not hesitate to contact RemoteHams for details. *
* *
* RemoteHams provides this product "as is" without warranty of any kind, *
* either expressed or implied, including, but not limited to, the *
* implied warranties of merchantability and fitness for a particular *
* purpose. The entire risk as to the quality and performance of the *
* product is with you. Should it prove defective, you assume the cost *
* of all necessary servicing, repair, or correction. In addition, *
* RemoteHams shall be allowed to provide updates to the product in *
* urgent cases. You are then obliged to install such updates. *
* *
* Copyright (C) 2008 by Brandon Hansen, Brad DeMorrow *
* kg6ypi@remotehams.com, syllogism711@gmail.com *
* *
****************************************************************************/
/* HTML Data Loader */
function loadHTMLData(url, divID) {
var httpData=false;
if(window.XMLHttpRequest) {
httpData = new XMLHttpRequest();
} else if(window.ActiveXObject) {
httpData = new ActiveXObject("Microsoft.XMLHTTP");
}
if(httpData) {
var obj = document.getElementById(divID);
httpData.open("GET",url);
httpData.onreadystatechange = function() {
if(httpData.readyState==4) {
obj.innerHTML = httpData.responseText;
}
}
httpData.send("");
return true;
}
alert("Sorry, loading HTML data dynamically is not supported by your web browser.");
return null;
}
/* XML Data Loader */
function loadXMLData(file) {
var xmlData;
if (window.XMLHttpRequest) {
xmlData=new window.XMLHttpRequest();
xmlData.open("GET",file,false);
xmlData.send("");
return xmlData.responseXML;
} else if (ActiveXObject("Microsoft.XMLDOM")) {
xmlData=new ActiveXObject("Microsoft.XMLDOM");
xmlData.async=false;
xmlData.load(dname);
return xmlData;
}
alert("Sorry, loading XML data dynamically is not supported by your web browser.");
return null;
}
/* XML Data Processor */
function process_data(xmlData) {
if (xmlData.getElementsByTagName("frequency")[0].childNodes.length>0) {
update_frequency(xmlData.getElementsByTagName("frequency")[0].childNodes[0].nodeValue);
}
if (xmlData.getElementsByTagName("smeter")[0].childNodes.length>0) {
update_smeter(xmlData.getElementsByTagName("smeter")[0].childNodes[0].nodeValue);
}
if (xmlData.getElementsByTagName("buttons")[0].childNodes.length>0) {
update_buttons(document.getElementById("UIbuttons"),xmlData.getElementsByTagName("buttons")[0].childNodes[0].nodeValue, xmlData);
}
if (xmlData.getElementsByTagName("dropdowns")[0].childNodes.length>0) {
update_dropdowns(document.getElementById("UIdropdowns"),xmlData.getElementsByTagName("dropdowns")[0].childNodes[0].nodeValue, xmlData);
}
if (xmlData.getElementsByTagName("sliders")[0].childNodes.length>0) {
update_sliders(document.getElementById("UIsliders"), xmlData.getElementsByTagName("sliders")[0].childNodes[0].nodeValue, xmlData);
}
return;
}
/* XML Data Helpers */
function get_buttons_data(strItem, xmlData) {
var tmpData = xmlData.getElementsByTagName("buttons_data")[0].childNodes;
if (tmpData.length>0) {
for(var i = 0; i < tmpData.length; ++i) {
if (tmpData[i].nodeName==strItem) {
return tmpData[i].childNodes[0].nodeValue;
}
}
}
return "";
}
function get_dropdown_data(strItem, xmlData) {
var tmpData = xmlData.getElementsByTagName("dropdowns_data")[0].childNodes;
if (tmpData.length>0) {
for(var i = 0; i < tmpData.length; ++i) {
if (tmpData[i].nodeName==strItem) {
return tmpData[i].childNodes[0].nodeValue;
}
}
}
return "";
}
function get_dropdown_list(strItem, xmlData, ItemSelected) {
var tmpStr="";
var tmpData = xmlData.getElementsByTagName("dropdowns_list")[0].childNodes;
if (tmpData.length>0) {
for(var i = 0; i < tmpData.length; ++i) {
if (tmpData[i].nodeName==strItem) {
// get the list!
var items = tmpData[i].childNodes[0].nodeValue.split(',');
if (items.length>0) {
for(var ii = 0; ii < items.length; ++ii) {
if (items[ii]==ItemSelected) {
tmpStr+='';
} else {
tmpStr+='';
}
}
}
return tmpStr;
}
}
}
return tmpStr;
}
function get_slider_data(strItem, xmlData) {
var tmpData = xmlData.getElementsByTagName("sliders_data")[0].childNodes;
if (tmpData.length>0) {
for(var i = 0; i < tmpData.length; ++i) {
if (tmpData[i].nodeName==strItem) {
return tmpData[i].childNodes[0].nodeValue;
}
}
}
return "";
}
function get_slider_range(strItem, xmlData) {
var tmpData = xmlData.getElementsByTagName("sliders_range")[0].childNodes;
if (tmpData.length>0) {
for(var i = 0; i < tmpData.length; ++i) {
if (tmpData[i].nodeName==strItem) {
return tmpData[i].childNodes[0].nodeValue;
}
}
}
return "";
}
/* Visual Helpers */
function hide_div(szDivID) {
if(document.getElementById) {
var obj = document.getElementById(szDivID);
obj.style.display = "none";
obj.style.visibility = "hidden";
}
}
function show_div(szDivID) {
if(document.getElementById) {
var obj = document.getElementById(szDivID);
obj.style.display = "inline";
obj.style.visibility = "visible";
}
}
/* Visual Data Element Updaters */
function update_frequency(val) {
val=val.split('.');
document.getElementById("UIfreq").innerHTML=val[0];
return;
}
function update_smeter(val) {
document.getElementById("UIsmeter").innerHTML=val;
return;
}
function update_buttons(divObj, strList, xmlData) {
if (divObj.innerHTML==" ") {
divObj.innerHTML='';
}
var created=false;
var items = strList.split(',');
if (items.length>0) {
for(var i = 0; i < items.length; ++i) {
var tmpData = get_buttons_data(items[i], xmlData);
if (document.getElementById("btn-"+items[i])==null) {
/* Create the button */
created=true;
if (items[i]=="TX") {
if (tmpData=="1") {
divObj.innerHTML += '';
} else {
divObj.innerHTML += '';
}
} else {
if (tmpData=="1") {
divObj.innerHTML += '';
} else {
divObj.innerHTML += '';
}
}
} else {
/* Update the button */
var obj = document.getElementById("btn-"+items[i]);
if (items[i]=="TX") {
if (tmpData=="1") {
obj.className="radio_tx_button_on";
} else {
obj.className="radio_tx_button_off";
}
} else {
if (tmpData=="1") {
obj.className="radio_button_on";
} else {
obj.className="radio_button_off";
}
}
}
}
if (created) {
divObj.innerHTML += ' ';
}
}
return;
}
function update_dropdowns(divID, strList, xmlData) {
divID.innerHTML='';
var items = strList.split(',');
if (items.length>0) {
for(var i = 0; i < items.length; ++i) {
var tmpData = get_dropdown_data(items[i], xmlData);
divID.innerHTML += items[i]+' ';
}
}
return;
}
function update_sliders(divID, strList, xmlData) {
divID.innerHTML='';
var items = strList.split(",");
if (items.length>0) {
for(var i = 0; i < items.length; ++i) {
var tmpData = get_slider_data(items[i], xmlData).split(',');
divID.innerHTML += items[i]+' ['+tmpData[1]+ '] ['+get_slider_range(items[i], xmlData)+'] ';
}
}
return;
}
/* Tab Controls */
function HideTabs() {
hide_div("UIbuttons");
hide_div("UIdropdowns");
hide_div("UIsliders");
}
function TabSwitcher(tab) {
HideTabs();
if (tab=="buttons") {
show_div("UIbuttons");
} else if (tab=="dropdowns") {
show_div("UIdropdowns");
} else if (tab=="sliders") {
show_div("UIsliders");
} else if (tab=="all") {
show_div("UIbuttons");
show_div("UIdropdowns");
show_div("UIsliders");
}
}
/* Flash Helpers */
function EmbedFlashMovie(szDivID, Url) {
var obj = document.getElementById(szDivID);
obj.innerHTML='';
}