text: (function(e){"use strict";var t=function(t){return t!=null||t!=e},n=function(e,t){var n=i._callbacks[e];for(var r=0;r<n.length;r++)n[r].apply(window,t)},r=function(e){var t=0;for(var n=e.length-1;n>e.length-6;n--)t+=e[n];return t/5},i=window.Compass={method:e,watch:function(e){var t=++i._lastId;return i.init(function(n){if(n=="phonegap")i._watchers[t]=i._nav.compass.watchHeading(e);else if(n=="webkitOrientation"){var r=function(t){e(t.webkitCompassHeading)};i._win.addEventListener("deviceorientation",r),i._watchers[t]=r}else if(n=="orientationAndGPS"){var s,r=function(t){s=-t.alpha+i._gpsDiff,s<0?s+=360:s>360&&(s-=360),e(s)};i._win.addEventListener("deviceorientation",r),i._watchers[t]=r}}),t},unwatch:function(e){return i.init(function(t){t=="phonegap"?i._nav.compass.clearWatch(i._watchers[e]):(t=="webkitOrientation"||t=="orientationAndGPS")&&i._win.removeEventListener("deviceorientation",i._watchers[e]),delete i._watchers[e]}),i},needGPS:function(e){return i._callbacks.needGPS.push(e),i},needMove:function(e){return i._callbacks.needMove.push(e),i},noSupport:function(e){return i.method===!1?e():t(i.method)||i._callbacks.noSupport.push(e),i},init:function(e){if(t(i.method)){e(i.method);return}i._callbacks.init.push(e);if(i._initing)return;return i._initing=!0,i._nav.compass?i._start("phonegap"):i._win.DeviceOrientationEvent?(i._checking=0,i._win.addEventListener("deviceorientation",i._checkEvent),setTimeout(function(){i._checking!==!1&&i._start(!1)},500)):i._start(!1),i},_lastId:0,_watchers:{},_win:window,_nav:navigator,_callbacks:{init:[],noSupport:[],needGPS:[],needMove:[]},_initing:!1,_gpsDiff:e,_start:function(e){i.method=e,i._initing=!1,n("init",[e]),i._callbacks.init=[],e===!1&&n("noSupport",[]),i._callbacks.noSupport=[]},_checking:!1,_checkEvent:function(e){i._checking+=1;var n=!1;t(e.webkitCompassHeading)?i._start("webkitOrientation"):t(e.alpha)&&i._nav.geolocation?i._gpsHack():i._checking>1?i._start(!1):n=!0,n||(i._checking=!1,i._win.removeEventListener("deviceorientation",i._checkEvent))},_gpsHack:function(){var e=!0,s=[],o=[];n("needGPS");var u=function(e){s.push(e.alpha)};i._win.addEventListener("deviceorientation",u);var a=function(a){var f=a.coords;if(!t(f.heading))return;e&&(e=!1,n("needMove")),f.speed>1?(o.push(f.heading),o.length>=5&&s.length>=5&&(i._win.removeEventListener("deviceorientation",u),i._nav.geolocation.clearWatch(l),i._gpsDiff=r(o)+r(s),i._start("orientationAndGPS"))):o=[]},f=function(){i._win.removeEventListener("deviceorientation",u),i._start(!1)},l=i._nav.geolocation.watchPosition(a,f,{enableHighAccuracy:!0})}}})();