Sindbad~EG File Manager
jQuery(document).ready(function(jQuery) {
var window_w = jQuery(window).width();
var device = detectMobileBrowser();
if (window_w >= 980 && device) {
// First level
jQuery('.dropdown > a').bind('tap', detectTap);
// Deeper levels
jQuery('.dropdown-submenu > a').bind('tap', detectTap);
jQuery('body').bind( 'tap', closeDropdowns);
}
jQuery(window).resize(function() {
window_w = jQuery(window).width();
if (window_w >= 980 && device) {
// First level
jQuery('.dropdown > a').bind('tap', detectTap);
// Deeper levels
jQuery('.dropdown-submenu > a').bind('tap', detectTap);
jQuery('body').bind( 'tap', closeDropdowns);
} else {
// First level
jQuery('.dropdown > a').unbind('tap', detectTap);
// Deeper levels
jQuery('.dropdown-submenu > a').unbind('tap', detectTap);
jQuery('body').unbind('tap', closeDropdowns);
}
});
});
function detectMobileBrowser() {
if (/Android|webOS|iPhone|iPod|BlackBerry|IEMobile|Opera Mini|Mobile|mobile/i.test(navigator.userAgent))
return true;
return false;
}
function detectTap(event) {
var window_w = jQuery(window).width();
var clickedElement = jQuery(event.target);
var parentElement = jQuery(clickedElement.parent());
var dropdown = parentElement.find('.dropdown-menu').first();
var isLink = clickedElement.attr('href');
var max_width = 0;
var animated = 'animated-ltr';
// Fit submenu items inside window
clickedElement.closest('.dropdown').find('.dropdown-menu').each(function() {
jQuery(this).css('display', 'block');
jQuery(this).css('visibility', 'hidden');
if (jQuery(this).outerWidth() >= max_width) {
max_width = jQuery(this).outerWidth();
}
jQuery(this).removeAttr('style');
});
if (jQuery('html').attr('dir') == 'ltr') {
if ((window_w - clickedElement.closest('.dropdown').offset().left - clickedElement.closest('.dropdown').find('.dropdown-menu').length * max_width) < 0) {
animated = 'animated-rtl';
}
} else if (jQuery('html').attr('dir') == 'rtl') {
if ((clickedElement.closest('.dropdown').offset().left - clickedElement.closest('.dropdown').find('.dropdown-menu').length * max_width) > 0) {
animated = 'animated-rtl';
}
}
// Close other opened dropdowns
if (isLink) {
if (parentElement.hasClass('dropdown')) {
jQuery('.dropdown').each(function() {
var dropdown = jQuery(this).find('.dropdown-menu');
if (dropdown.hasClass('animated-ltr') && parentElement.attr("class") !== dropdown.parent().attr("class") && dropdown.parent().hasClass("current")) {
dropdown.removeClass('animated-ltr');
} else if (dropdown.hasClass('animated-ltr') && parentElement.attr("class") !== dropdown.parent().attr("class")) {
dropdown.parent().removeClass('active');
dropdown.removeClass('animated-ltr');
} else if (dropdown.hasClass('animated-rtl') && parentElement.attr("class") !== dropdown.parent().attr("class") && dropdown.parent().hasClass("current")) {
dropdown.parent().removeClass('active');
dropdown.removeClass('animated-rtl');
} else if (dropdown.hasClass('animated-rtl') && parentElement.attr("class") !== dropdown.parent().attr("class")) {
dropdown.parent().removeClass('active');
dropdown.removeClass('animated-rtl');
}
});
}
}
// First tap -> open dropdown and second tap -> open dropdown parent url
if ((parentElement.hasClass('dropdown') || parentElement.hasClass('dropdown-submenu')) && parentElement.hasClass('active') && dropdown.hasClass(animated)) {
return true;
} else if (parentElement.hasClass('dropdown') || parentElement.hasClass('dropdown-submenu')) {
parentElement.addClass('active');
parentElement.find('.dropdown-menu').first().addClass(animated);
return false;
}
}
function closeDropdowns(event) {
var clickedElement = jQuery(event.target);
var parentElement = clickedElement.parent();
var isLink = clickedElement.attr('href');
// Close dropdowns when the tap is outside the menu
if (!isLink) {
if (!parentElement.hasClass('dropdown') || !parentElement.hasClass('dropdown-submenu')) {
jQuery('.dropdown').each(function() {
var dropdown = jQuery(this).find('.dropdown-menu');
if (dropdown.hasClass('animated-ltr') && dropdown.parent().hasClass('current')) {
dropdown.removeClass('animated-ltr');
} else if (dropdown.hasClass('animated-ltr')) {
dropdown.parent().removeClass('active');
dropdown.removeClass('animated-ltr');
} else if (dropdown.hasClass('animated-rtl') && dropdown.parent().hasClass('current')) {
dropdown.removeClass('animated-rtl');
} else if (dropdown.hasClass('animated-rtl')) {
dropdown.parent().removeClass('active');
dropdown.removeClass('animated-rtl');
}
});
}
}
}
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists