 /*****************************************************************************
 *   Radio Control Framework by RemoteHams.com                               *
 *                                                                           *
 *   View COPYING for full license details.                                  *
 *                                                                           *
 *   While RCF is free software you are not allowed to modify or distribute  *
 *   RCF in any form, without express written permission. You may direct     *
 *   others to http://download.remotehams.com/ for downloading RCF.          *
 *                                                                           *
 *   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+='<option value="'+items[ii]+'" selected="selected">'+items[ii]+'</option>';
						} else {
							tmpStr+='<option value="'+items[ii]+'">'+items[ii]+'</option>';
						}
					}
				}
				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 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=="&nbsp;") {
		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 += '<input class="radio_tx_button_on" id="btn-'+items[i]+'" type="button" value="'+items[i]+'" />';
					} else {
						divObj.innerHTML += '<input class="radio_tx_button_off" id="btn-'+items[i]+'" type="button" value="'+items[i]+'" />';
					}
				} else {
					if (tmpData=="1") {
						divObj.innerHTML += '<input class="radio_button_on" id="btn-'+items[i]+'" type="button" value="'+items[i]+'" />';
					} else {
						divObj.innerHTML += '<input class="radio_button_off" id="btn-'+items[i]+'" type="button" value="'+items[i]+'" />';
					}
				}
			} 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 += '<br />';
		}
	}
	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]+' <select id="dpdw-'+items[i]+'">'+get_dropdown_list(items[i], xmlData, tmpData)+'</select><br />';
		}
	}
	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]+' [<b>'+tmpData[1]+ '</b>] <input id="sldr-'+items[i]+'" type="" value="'+tmpData[0]+'" /> ['+get_slider_range(items[i], xmlData)+']<br />';
		}
	}
	return;
}

/* Div 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";
	}
}

/* Flash Helpers */
function EmbedFlashMovie(szDivID, Url, Width, Height) {
	var obj = document.getElementById(szDivID);
	obj.innerHTML='<embed type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" src="'+Url+'" width="'+Width+'" height="'+Height+'"></embed>';
}
function EmbedAudio(szDivID, Url) {
	var obj = document.getElementById(szDivID);
	obj.innerHTML='<object classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" type="application/x-oleobject" width="200" height="32">\
<param name="url" value="'+Url+'" />\
<param name="uimode" value="mini" />\
<param name="showcontrols" value="true" />\
<param name="showstatusbar" value="true" />\
<param name="showdisplay" value="false" />\
<embed type="application/x-mplayer2" src="'+Url+'" width="200" height="32" autostart="false"></embed></object>';
}
