summaryrefslogtreecommitdiff
path: root/js/jqt.offline.js
diff options
context:
space:
mode:
authorAlib <aliboba@free.fr>2010-03-23 11:36:08 +0100
committerAlib <aliboba@free.fr>2010-03-23 11:36:08 +0100
commitce0fc110e6285d56200c9dc25375ebcc32ded8bd (patch)
tree6f329006f90dca9fdf16b1746a503cbbb91d0f72 /js/jqt.offline.js
parent6e22fcf1e3bea39806291e70361bf4ddfdb0d40e (diff)
downloadistreamdev-ce0fc110e6285d56200c9dc25375ebcc32ded8bd.tar.gz
istreamdev-ce0fc110e6285d56200c9dc25375ebcc32ded8bd.tar.bz2
added missing file in git
Diffstat (limited to 'js/jqt.offline.js')
-rw-r--r--js/jqt.offline.js97
1 files changed, 97 insertions, 0 deletions
diff --git a/js/jqt.offline.js b/js/jqt.offline.js
new file mode 100644
index 0000000..b333a16
--- /dev/null
+++ b/js/jqt.offline.js
@@ -0,0 +1,97 @@
+/*
+
+ _/ _/_/ _/_/_/_/_/ _/
+ _/ _/ _/ _/_/ _/ _/ _/_/_/ _/_/_/
+ _/ _/ _/_/ _/ _/ _/ _/ _/ _/ _/ _/
+ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/
+ _/ _/_/ _/ _/ _/_/ _/_/_/ _/_/_/ _/ _/
+ _/
+ _/
+
+ Created by David Kaneda <http://www.davidkaneda.com>
+ Documentation and issue tracking on Google Code <http://code.google.com/p/jqtouch/>
+
+ Special thanks to Jonathan Stark <http://jonathanstark.com/>
+
+ Lots of this code is specifically derived from Jonathan's book,
+ "Building iPhone Apps with HTML, CSS, and JavaScript"
+
+ (c) 2009 by jQTouch project members.
+ See LICENSE.txt for license.
+
+*/
+
+(function($) {
+ if ($.jQTouch)
+ {
+ $.jQTouch.addExtension(function Offline(){
+
+ // Convenience array of status values
+ var cacheStatusValues = [];
+ cacheStatusValues[0] = 'uncached';
+ cacheStatusValues[1] = 'idle';
+ cacheStatusValues[2] = 'checking';
+ cacheStatusValues[3] = 'downloading';
+ cacheStatusValues[4] = 'updateready';
+ cacheStatusValues[5] = 'obsolete';
+
+ // Listeners for all possible events
+ var cache = window.applicationCache;
+ cache.addEventListener('cached', logEvent, false);
+ cache.addEventListener('checking', logEvent, false);
+ cache.addEventListener('downloading', logEvent, false);
+ cache.addEventListener('error', logEvent, false);
+ cache.addEventListener('noupdate', logEvent, false);
+ cache.addEventListener('obsolete', logEvent, false);
+ cache.addEventListener('progress', logEvent, false);
+ cache.addEventListener('updateready', logEvent, false);
+
+ // Log every event to the console
+ function logEvent(e) {
+ var online, status, type, message;
+ online = (isOnline()) ? 'yes' : 'no';
+ status = cacheStatusValues[cache.status];
+ type = e.type;
+ message = 'online: ' + online;
+ message+= ', event: ' + type;
+ message+= ', status: ' + status;
+ if (type == 'error' && navigator.onLine) {
+ message+= ' There was an unknown error, check your Cache Manifest.';
+ }
+ console.log(message);
+ }
+
+ function isOnline() {
+ return navigator.onLine;
+ }
+
+ if (!$('html').attr('manifest')) {
+ console.log('No Cache Manifest listed on the <html> tag.')
+ }
+
+ // Swap in newly download files when update is ready
+ cache.addEventListener('updateready', function(e){
+ // Don't perform "swap" if this is the first cache
+ if (cacheStatusValues[cache.status] != 'idle') {
+ cache.swapCache();
+ console.log('Swapped/updated the Cache Manifest.');
+ }
+ }
+ , false);
+
+ // These two functions check for updates to the manifest file
+ function checkForUpdates(){
+ cache.update();
+ }
+ function autoCheckForUpdates(){
+ setInterval(function(){cache.update()}, 10000);
+ }
+
+ return {
+ isOnline: isOnline,
+ checkForUpdates: checkForUpdates,
+ autoCheckForUpdates: autoCheckForUpdates
+ }
+ });
+ }
+})(jQuery); \ No newline at end of file