Modifications to phonegap-core.js (compassAPI) and compass.js (adapted from accelerometer.js) are
Copyright 2012 Hewlett-Packard Development Company, L.P.

This product includes thumbs.js developed by Michael Brooks
Copyright 2010 Michael Brooks (https://github.com/mwbrooks/thumbs.js)

Apache Cordova
Copyright 2012 The Apache Software Foundation

This product includes software developed by
The Apache Software Foundation (http://www.apache.org)
