146 lines
4.2 KiB
JavaScript
146 lines
4.2 KiB
JavaScript
/* global trackGeoLocation, jqueryReady */
|
|
|
|
/* exported resourceLoadedSuccessfully */
|
|
|
|
function requestGeoPosition() {
|
|
// console.log('Requesting GeoLocation data from the browser...');
|
|
if (navigator.geolocation) {
|
|
navigator.geolocation.getCurrentPosition(showGeoPosition, logGeoLocationError,
|
|
{maximumAge: 600000, timeout: 5000, enableHighAccuracy: true});
|
|
} else {
|
|
// console.log('Browser does not support Geo Location');
|
|
}
|
|
}
|
|
|
|
function logGeoLocationError(error) {
|
|
switch (error.code) {
|
|
case error.PERMISSION_DENIED:
|
|
// console.log('User denied the request for GeoLocation.');
|
|
break;
|
|
case error.POSITION_UNAVAILABLE:
|
|
// console.log('Location information is unavailable.');
|
|
break;
|
|
case error.TIMEOUT:
|
|
// console.log('The request to get user location timed out.');
|
|
break;
|
|
default:
|
|
// console.log('An unknown error occurred.');
|
|
break;
|
|
}
|
|
}
|
|
|
|
function showGeoPosition(position) {
|
|
$('[name="geolocation"]').val(position.coords.latitude + ','
|
|
+ position.coords.longitude + ',' + position.coords.accuracy + ',' + position.timestamp);
|
|
}
|
|
|
|
|
|
function preserveAnchorTagOnForm() {
|
|
$('#fm1').submit(function () {
|
|
var location = self.document.location;
|
|
var hash = decodeURIComponent(location.hash);
|
|
|
|
if (hash != undefined && hash != '' && hash.indexOf('#') === -1) {
|
|
hash = '#' + hash;
|
|
}
|
|
|
|
var action = $('#fm1').attr('action');
|
|
if (action == undefined) {
|
|
action = location.href;
|
|
} else {
|
|
var qidx = location.href.indexOf('?');
|
|
if (qidx != -1) {
|
|
var queryParams = location.href.substring(qidx);
|
|
action += queryParams;
|
|
}
|
|
}
|
|
action += hash;
|
|
$('#fm1').attr('action', action);
|
|
|
|
});
|
|
}
|
|
|
|
function areCookiesEnabled() {
|
|
if ($.cookie == undefined) {
|
|
return;
|
|
}
|
|
|
|
$.cookie('cookiesEnabled', 'true');
|
|
var value = $.cookie('cookiesEnabled');
|
|
$.removeCookie('cookiesEnabled');
|
|
return value != undefined;
|
|
|
|
}
|
|
|
|
function disableEmptyInputFormSubmission() {
|
|
var fields = $('#fm1 input[name="username"],[name="password"]');
|
|
|
|
if (fields.length == 2) {
|
|
fields.on('input', function (event) {
|
|
var enableSubmission = $('#fm1 input[name="username"]').val().trim() &&
|
|
$('#fm1 input[name="password"]').val().trim();
|
|
|
|
if (enableSubmission) {
|
|
$('#fm1 input[name=submit]').removeAttr('disabled');
|
|
event.stopPropagation();
|
|
} else {
|
|
$('#fm1 input[name=submit]').attr('disabled', 'true');
|
|
}
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Handle auto-complete events to the extent possible.
|
|
*/
|
|
if ($('#fm1 input[name="username"]').length > 0) {
|
|
setTimeout(function () {
|
|
var uid = $('#username').val();
|
|
if (uid != null && uid != '') {
|
|
$('#username').change();
|
|
$('#username').focus();
|
|
$('#fm1 input[name=submit]').removeAttr('disabled');
|
|
}
|
|
|
|
}, 100);
|
|
}
|
|
}
|
|
|
|
function resourceLoadedSuccessfully() {
|
|
$(document).ready(function () {
|
|
|
|
if (trackGeoLocation) {
|
|
requestGeoPosition();
|
|
}
|
|
|
|
if ($(':focus').length === 0) {
|
|
$('input:visible:enabled:first').focus();
|
|
}
|
|
|
|
if (areCookiesEnabled()) {
|
|
$('#cookiesDisabled').hide();
|
|
} else {
|
|
$('#cookiesDisabled').show();
|
|
}
|
|
|
|
disableEmptyInputFormSubmission();
|
|
preserveAnchorTagOnForm();
|
|
|
|
$('#capslock-on').hide();
|
|
$('#fm1 input[name="username"],[name="password"]').trigger('input');
|
|
$('#fm1 input[name="username"]').focus();
|
|
|
|
$('#password').keypress(function (e) {
|
|
var s = String.fromCharCode(e.which);
|
|
if (s.toUpperCase() === s && s.toLowerCase() !== s && !e.shiftKey) {
|
|
$('#capslock-on').show();
|
|
} else {
|
|
$('#capslock-on').hide();
|
|
}
|
|
});
|
|
if (typeof(jqueryReady) == 'function') {
|
|
jqueryReady();
|
|
}
|
|
});
|
|
|
|
}
|