| Current Path : /home/happyrenas/old/devis-huissier.fr/old/assets/base/js/ |
Linux webd005.cluster105.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64 |
| Current File : /home/happyrenas/old/devis-huissier.fr/old/assets/base/js/app.js |
/**
Core script to handle the entire theme and core functions
**/
var App = function() {
// IE mode
var isRTL = false;
var isIE9 = false;
var isIE10 = false;
var isIE = false;
var resizeHandlers = [];
// initializes main settings
var handleInit = function() {
isIE9 = !!navigator.userAgent.match(/MSIE 9.0/);
isIE10 = !!navigator.userAgent.match(/MSIE 10.0/);
isIE = navigator.userAgent.indexOf("MSIE ") > -1 || navigator.userAgent.indexOf("Trident/") > -1;
if (isIE10) {
$('html').addClass('ie10'); // detect IE10 version
}
if (isIE9) {
$('html').addClass('ie9'); // detect IE10 version
}
if (isIE) {
$('html').addClass('ie'); // detect IE10 version
}
};
// runs callback functions set by Jango.addResponsiveHandler().
var _runResizeHandlers = function() {
// reinitialize other subscribed elements
for (var i = 0; i < resizeHandlers.length; i++) {
var each = resizeHandlers[i];
each.call();
}
};
// handle group element heights
var handleHeight = function() {
$('[data-auto-height]').each(function() {
var parent = $(this);
var items = $('[data-height]', parent);
var height = 0;
var mode = parent.attr('data-mode');
var offset = parseInt(parent.attr('data-offset') ? parent.attr('data-offset') : 0);
items.each(function() {
if ($(this).attr('data-height') == "height") {
$(this).css('height', '');
} else {
$(this).css('min-height', '');
}
var height_ = (mode == 'base-height' ? $(this).outerHeight() : $(this).outerHeight(true));
if (height_ > height) {
height = height_;
}
});
height = height + offset;
items.each(function() {
if ($(this).attr('data-height') == "height") {
$(this).css('height', height);
} else {
$(this).css('min-height', height);
}
});
if(parent.attr('data-related')) {
$(parent.attr('data-related')).css('height', parent.height());
}
});
}
// handle the layout reinitialization on window resize
var handleOnResize = function() {
var resize;
$(window).resize(function() {
if (resize) {
clearTimeout(resize);
}
resize = setTimeout(function() {
_runResizeHandlers();
}, 50); // wait 50ms until window resize finishes.
});
};
// Handles custom checkboxes & radios using jQuery Uniform plugin
var handleCheckboxRadios = function() {
// Material design ckeckbox and radio effects
$('body').on('click', '.c-checkbox > label, .c-radio > label', function() {
var the = $(this);
// find the first span which is our circle/bubble
var el = $(this).children('span:first-child');
// add the bubble class (we do this so it doesnt show on page load)
el.addClass('inc');
// clone it
var newone = el.clone(true);
// add the cloned version before our original
el.before(newone);
// remove the original so that it is ready to run on next click
$("." + el.attr("class") + ":last", the).remove();
});
};
// Handles Bootstrap Accordions.
var handleAccordions = function() {
$('body').on('shown.bs.collapse', '.accordion.scrollable', function(e) {
Jango.scrollTo($(e.target));
});
};
// Handles Bootstrap Tabs.
var handleTabs = function() {
//activate tab if tab id provided in the URL
if (encodeURI(location.hash)) {
var tabid = encodeURI(location.hash.substr(1));
$('a[href="#' + tabid + '"]').parents('.tab-pane:hidden').each(function() {
var tabid = $(this).attr("id");
$('a[href="#' + tabid + '"]').click();
});
$('a[href="#' + tabid + '"]').click();
}
};
// Handles Bootstrap Modals.
var handleModals = function() {
// fix stackable modal issue: when 2 or more modals opened, closing one of modal will remove .modal-open class.
$('body').on('hide.bs.modal', function() {
if ($('.modal:visible').size() > 1 && $('html').hasClass('modal-open') === false) {
$('html').addClass('modal-open');
} else if ($('.modal:visible').size() <= 1) {
$('html').removeClass('modal-open');
}
});
// fix page scrollbars issue
$('body').on('show.bs.modal', '.modal', function() {
if ($(this).hasClass("modal-scroll")) {
$('body').addClass("modal-open-noscroll");
}
});
// fix page scrollbars issue
$('body').on('hide.bs.modal', '.modal', function() {
$('body').removeClass("modal-open-noscroll");
});
// remove ajax content and remove cache on modal closed
$('body').on('hidden.bs.modal', '.modal:not(.modal-cached)', function() {
$(this).removeData('bs.modal');
});
};
// Handles Bootstrap Tooltips.
var handleTooltips = function() {
// global tooltips
$('.tooltips').tooltip();
};
// Handles Bootstrap Dropdowns
var handleDropdowns = function() {
/*
Hold dropdown on click
*/
$('body').on('click', '.dropdown-menu.hold-on-click', function(e) {
e.stopPropagation();
});
};
var handleAlerts = function() {
$('body').on('click', '[data-close="alert"]', function(e) {
$(this).parent('.alert').hide();
$(this).closest('.note').hide();
e.preventDefault();
});
$('body').on('click', '[data-close="note"]', function(e) {
$(this).closest('.note').hide();
e.preventDefault();
});
$('body').on('click', '[data-remove="note"]', function(e) {
$(this).closest('.note').remove();
e.preventDefault();
});
};
// Handle Hower Dropdowns
var handleDropdownHover = function() {
$('[data-hover="dropdown"]').not('.hover-initialized').each(function() {
$(this).dropdownHover();
$(this).addClass('hover-initialized');
});
};
// Handles Bootstrap Popovers
// last popep popover
var lastPopedPopover;
var handlePopovers = function() {
$('.popovers').popover();
// close last displayed popover
$(document).on('click.bs.popover.data-api', function(e) {
if (lastPopedPopover) {
lastPopedPopover.popover('hide');
}
});
};
// Fix input placeholder issue for IE9 and IE10
var handleFixInputPlaceholderForIE = function() {
//fix html5 placeholder attribute for ie9 & ie10
if (isIE9 || isIE10) {
// this is html5 placeholder fix for inputs, inputs with placeholder-no-fix class will be skipped(e.g: we need this for password fields)
$('input[placeholder]:not(.placeholder-no-fix), textarea[placeholder]:not(.placeholder-no-fix)').each(function() {
var input = $(this);
if (input.val() === '' && input.attr("placeholder") !== '') {
input.addClass("placeholder").val(input.attr('placeholder'));
}
input.focus(function() {
if (input.val() == input.attr('placeholder')) {
input.val('');
}
});
input.blur(function() {
if (input.val() === '' || input.val() == input.attr('placeholder')) {
input.val(input.attr('placeholder'));
}
});
});
}
};
//* END:CORE HANDLERS *//
return {
//main function to initiate the theme
init: function() {
//IMPORTANT!!!: Do not modify the core handlers call order.
//Core handlers
handleHeight();
this.addResizeHandler(handleHeight); // handle auto calculating height on window resize
handleInit(); // initialize core variables
handleOnResize(); // set and handle responsive
//UI Component handlers
//handleAnimate(); // handle animate
handleCheckboxRadios() // handle checkbox & radios
handleAlerts(); //handle closabled alerts
handleDropdowns(); // handle dropdowns
handleTooltips(); // handle bootstrap tooltips
handlePopovers(); // handles bootstrap popovers
handleAccordions(); //handles accordions
handleModals(); // handle modals
// Hacks
handleFixInputPlaceholderForIE(); //IE9 & IE10 input placeholder issue fix
},
changeLogo: function(filename) {
var path = '../assets/jango/img/layout/logos/' + filename + '.png';
$('.c-brand img.c-desktop-logo').attr('src', path);
},
//public function to remember last opened popover that needs to be closed on click
setLastPopedPopover: function(el) {
lastPopedPopover = el;
},
//public function to add callback a function which will be called on window resize
addResizeHandler: function(func) {
resizeHandlers.push(func);
},
//public functon to call _runresizeHandlers
runResizeHandlers: function() {
_runResizeHandlers();
},
// wrJangoer function to scroll(focus) to an element
scrollTo: function(el, offeset) {
var pos = (el && el.size() > 0) ? el.offset().top : 0;
if (el) {
if ($('body').hasClass('page-header-fixed')) {
pos = pos - $('.page-header').height();
}
pos = pos + (offeset ? offeset : -1 * el.height());
}
$('html,body').animate({
scrollTop: pos
}, 'slow');
},
// function to scroll to the top
scrollTop: function() {
Jango.scrollTo();
},
//public function to initialize the fancybox plugin
initFancybox: function() {
handleFancybox();
},
//public helper function to get actual input value(used in IE9 and IE8 due to placeholder attribute not supported)
getActualVal: function(el) {
el = $(el);
if (el.val() === el.attr("placeholder")) {
return "";
}
return el.val();
},
//public function to get a paremeter by name from URL
getURLParameter: function(paramName) {
var searchString = window.location.search.substring(1),
i, val, params = searchString.split("&");
for (i = 0; i < params.length; i++) {
val = params[i].split("=");
if (val[0] == paramName) {
return unescape(val[1]);
}
}
return null;
},
// check for device touch support
isTouchDevice: function() {
try {
document.createEvent("TouchEvent");
return true;
} catch (e) {
return false;
}
},
// To get the correct viewport width based on http://andylangton.co.uk/articles/javascript/get-viewport-size-javascript/
getViewPort: function() {
var e = window,
a = 'inner';
if (!('innerWidth' in window)) {
a = 'client';
e = document.documentElement || document.body;
}
return {
width: e[a + 'Width'],
height: e[a + 'Height']
};
},
// generate unique ID
getUniqueID: function(prefix) {
return 'prefix_' + Math.floor(Math.random() * (new Date()).getTime());
},
// check IE9 mode
isIE: function() {
return isIE;
},
// check IE9 mode
isIE9: function() {
return isIE9;
},
// check IE9 mode
isIE10: function() {
return isIE10;
},
// responsive breakpoints
getBreakpoint: function(size) {
// bootstrap responsive breakpoints
var sizes = {
'xs': 480, // extra small
'sm': 768, // small
'md': 992, // medium
'lg': 1200 // large
};
return sizes[size] ? sizes[size] : 0;
}
};
}();