function do_ajax( ajax_url, successfunc, failfunc ) {
	var req = null;
	if (window.XMLHttpRequest)  {
		req = new XMLHttpRequest();
		if (req.overrideMimeType) {
			req.overrideMimeType('application/json');
		}
	}
	else if (window.ActiveXObject) {
		try {
			req = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				req = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {
				alert("Your browser does not support AJAX - please use a different browser.");
				return;
			}
		}
	}

	req.onreadystatechange = function() {
		if(req.readyState == 4) {
			if(req.status == 200) {
				if (successfunc) { 
					successfunc(req.responseText);
				}
			} else {
				if (failfunc) {
					failfunc(req.responseText); 
				}
			}
		}
	};
	req.open("GET", ajax_url, true);
	req.send(null);
}
function showHide(show, hide) {
	document.getElementById(hide).style.display = "none";
	document.getElementById(show).style.display = "block";
}

function setInnerHTMLbyName(name, inner) {
	var els = document.getElementsByName(name);
	for (var i = 0; i < els.length; i++) {
		els[i].innerHTML = inner;
	}
}

function replaceHrefById(id, new_href) {
	var lnk = document.getElementById(id);
	if(lnk) { 
		lnk.href = new_href;
	}
}

function setAllBrandText() {
	//span names
	var spans = [
	'brand_copyright',
	'brand_gdo_product_name',
	'brand_help_button_text',
	'brand_provisioning_url_text',
	'brand_serial_number_header',
	'brand_serial_number_name',
	'brand_hub_product_name',
	'brand_app_name'   ];

	for (var i = 0; i < spans.length; i++) {
		var a = spans[i];
		setInnerHTMLbyName(a, eval(a + "_" + language));
	}
}

function buildTableFromObject(results) {
	var keys = [];
	for(var k in results) { keys.push(k); }

	var tablestring = '<table border="1" width="100%" cellpadding="2" cellspacing="0">';
	for(var i = 0; i < keys.length; i++) {
		tablestring +=  "<tr><td>" + results[keys[i]].pretty + "</td><td>" + results[keys[i]].value + "</td></tr>";
	}
	tablestring += '</table>';
	return tablestring;
}

var supportedLangs = ['langEN', 'langES', 'langDE', 'langFR', 'langNL'];

function setLang(lang) {
	if (isValidLang(lang)) {
		language = lang;
		do_ajax("/jlang_set?lang=" + lang, null, null);
	}
	showLanguage();
	setAllBrandText();
}

function isValidLang(lang) {
	return (supportedLangs.indexOf(lang) >= 0);
}

function showLanguage() {
	for (var i = 0; i < supportedLangs.length; i++) {
		var show = false;
		if (supportedLangs[i] == language) {
			show = true;
		}
		showHideAllDivsByClassName(supportedLangs[i], show);
	}
}

function showDiv(el) {
	el.style.display = "block";
}

function hideDiv(el) {
	el.style.display = "none";
}

function showHideAllDivsByClassName(className, show) {
	var x = document.getElementsByClassName(className);
	for (var el = 0; el < x.length; el++) {
		if (show) {
			showDiv(x[el]);
		}
		else {
			hideDiv(x[el]);
		}
	}
}

var SIGNAL_EXCELLENT    = "Excellent",
    SIGNAL_GOOD         = "Good",
    SIGNAL_FAIR         = "Fair",
    SIGNAL_POOR         = "Poor",
    SIGNAL_UNKNOWN      = "Unknown";

var SECURE_OPEN         = "Open",       //0
    SECURE_WEP_PSK      = "WEP-PSK",    //1
    SECURE_WPA_TKIP     = "WPA-TKIP",   //2
    SECURE_WPA_AES      = "WPA-AES",    //3
    SECURE_WPA2_AES     = "WPA2-AES",   //4
    SECURE_WPA2_TKIP    = "WPA2-TKIP",  //5
    SECURE_WPA2_MIXED   = "WPA2-MIXED", //6
	SECURE_UNKNOWN      = "Unknown";    //7
	SECURE_WPA3			= "WPA3"		//8

var CONNECTION_TRYING   = "Trying",
    CONNECTION_SUCCESS  = "Success",
    CONNECTION_FAILED   = "Failed",
    CONNECTION_NOT_ENABLED = "NotEnabled";
    
