cas-service-ja/overlays/org.apereo.cas.cas-server-w.../WEB-INF/classes/static/js/cas.js

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();
}
});
}