open-science-observatory-ui/src/assets/js/altair_lp_common.js

165 lines
6.8 KiB
JavaScript
Executable File

// variables
var $body = $('body'),
$html = $('html'),
$window = $(window),
$document = $(document),
$header_main = $('#header_main'),
header_main_height = $header_main.height(),
easing_swiftOut = [ 0.35,0,0.25,1 ];
bez_easing_swiftOut = $.bez(easing_swiftOut);
/* Detect hi-res devices */
function isHighDensity() {
return ((window.matchMedia && (window.matchMedia('only screen and (min-resolution: 124dpi), only screen and (min-resolution: 1.3dppx), only screen and (min-resolution: 48.8dpcm)').matches || window.matchMedia('only screen and (-webkit-min-device-pixel-ratio: 1.3), only screen and (-o-min-device-pixel-ratio: 2.6/2), only screen and (min--moz-device-pixel-ratio: 1.3), only screen and (min-device-pixel-ratio: 1.3)').matches)) || (window.devicePixelRatio && window.devicePixelRatio > 1.3));
}
/*
* Dynamically loading an external JavaScript or CSS file
* http://www.javascriptkit.com/javatutors/loadjavascriptcss.shtml
*/
function loadjscssfile(b,c){if("js"==c){var a=document.createElement("script");a.setAttribute("type","text/javascript");a.setAttribute("src",b)}else"css"==c&&(a=document.createElement("link"),a.setAttribute("rel","stylesheet"),a.setAttribute("type","text/css"),a.setAttribute("href",b));"undefined"!=typeof a&&document.getElementsByTagName("head")[0].appendChild(a)};
/* detect touch devices */
function isTouchDevice() {
return 'ontouchstart' in document.documentElement;
}
$(function() {
// header main
altair_header_main.init();
// inputs
altair_md.init();
});
$window.on('load',function () {
if(isHighDensity()) {
loadjscssfile("bower_components/dense/src/dense.js", "js");
// enable hires images
$('img').dense({
glue: "@"
});
}
if (isTouchDevice()) {
// fastClick (touch devices)
FastClick.attach(document.body);
}
});
altair_header_main = {
init: function () {
// sticky header
altair_header_main.sticky_header();
// main navigation
altair_header_main.main_navigation();
},
sticky_header: function () {
$body.addClass('header_sticky');
$(window).on("scroll touchmove", function () {
$body.toggleClass('header_shadow', $(document).scrollTop() > 0);
});
},
main_navigation: function() {
$('#main_navigation').onePageNav({
currentClass: 'current_active',
changeHash: false,
scrollSpeed: 840,
scrollThreshold: 0.4,
filter: '',
scrollOffset: -header_main_height,
easing: bez_easing_swiftOut,
begin: function() {
//Hack so you can click other menu items after the initial click (IOS)
//$('body').append('<div id="device-dummy" style="height: 1px;"></div>');
},
end: function() {
$('#device-dummy').remove();
},
scrollChange: function($currentListItem) {
//I get fired when you enter a section and I pass the list item of the section
}
});
}
};
altair_md = {
init: function () {
altair_md.inputs();
},
inputs: function(parent) {
var $mdInput = (typeof parent === 'undefined') ? $('.md-input') : $(parent).find('.md-input');
$mdInput.each(function() {
if(!$(this).closest('.md-input-wrapper').length) {
var $this = $(this),
extraClass = '';
if($this.is('[class*="uk-form-width-"]')) {
var elClasses = $this.attr('class').split (' ');
for(var i = 0; i < elClasses.length; i++){
var classPart = elClasses[i].substr(0,14);
if(classPart == "uk-form-width-"){
var extraClass = elClasses[i];
}
}
}
if( $this.prev('label').length ) {
$this.prev('label').andSelf().wrapAll('<div class="md-input-wrapper"/>');
} else if($this.siblings('[data-uk-form-password]').length) {
$this.siblings('[data-uk-form-password]').andSelf().wrapAll('<div class="md-input-wrapper"/>');
} else {
$this.wrap('<div class="md-input-wrapper"/>');
}
$this.closest('.md-input-wrapper').append('<span class="md-input-bar '+extraClass+'"/>');
altair_md.update_input($this);
}
$body
.on('focus', '.md-input', function() {
$(this).closest('.md-input-wrapper').addClass('md-input-focus')
})
.on('blur', '.md-input', function() {
$(this).closest('.md-input-wrapper').removeClass('md-input-focus');
if(!$(this).hasClass('label-fixed')) {
if($(this).val() != '') {
$(this).closest('.md-input-wrapper').addClass('md-input-filled')
} else {
$(this).closest('.md-input-wrapper').removeClass('md-input-filled')
}
}
})
.on('change', '.md-input', function() {
altair_md.update_input($(this));
});
})
},
update_input: function(object) {
// clear wrapper classes
object.closest('.uk-input-group').removeClass('uk-input-group-danger uk-input-group-success');
object.closest('.md-input-wrapper').removeClass('md-input-wrapper-danger md-input-wrapper-success md-input-wrapper-disabled');
if(object.hasClass('md-input-danger')) {
if(object.closest('.uk-input-group').length) {
object.closest('.uk-input-group').addClass('uk-input-group-danger')
}
object.closest('.md-input-wrapper').addClass('md-input-wrapper-danger')
}
if(object.hasClass('md-input-success')) {
if(object.closest('.uk-input-group').length) {
object.closest('.uk-input-group').addClass('uk-input-group-success')
}
object.closest('.md-input-wrapper').addClass('md-input-wrapper-success')
}
if(object.prop('disabled')) {
object.closest('.md-input-wrapper').addClass('md-input-wrapper-disabled')
}
if(object.hasClass('label-fixed')) {
object.closest('.md-input-wrapper').addClass('md-input-filled')
}
if(object.val() != '') {
object.closest('.md-input-wrapper').addClass('md-input-filled')
}
}
};