<html manifest="manifest-for-appcache.manifest">
<head>
<script>
function log(msg)
{
    let c = document.getElementById("console");
    c.innerHTML = c.innerHTML + msg + "<br>";
}

function updateAppCache(callback) {
	appCacheCallback = callback;
	window.applicationCache.update();
}

window.applicationCache.onnoupdate = function(e) {
	log("Application cache loaded");
	if (window.appCacheCallback) {
		appCacheCallback(true);
	}
}

window.applicationCache.oncached = function(e) {
	log("Application cache loaded");
	if (window.appCacheCallback) {
		appCacheCallback(true);
	}
}

window.applicationCache.onupdateready = function(e) {
	log("Application cache loaded");
	if (window.appCacheCallback) {
		appCacheCallback(true);
	}
}

window.applicationCache.onerror = function(e) {
	log("Application cache not loaded");
	if (window.appCacheCallback) {
		appCacheCallback(false);
	}
}
</script>
</head>
<body>
<div id="console"></div>
<img src="abe.png">
</body>
</html>
