/*
Drop Down Menu
*/
jQuery.fn.ownmenu = function(options){
var settings = {
indicator :true, // indicator that indicates a submenu
speed :100, // submenu speed
delay :0, // submenu show delay
hideDelay :100, // submenu hide delay
hideClickOut :true, // hide submenus when click outside menu
align :"left", // menu alignment (left/right)
submenuTrigger :"hover" // defines if submenu appears after hover/click
}
$.extend( settings, options );
var menu = $(".ownmenu");
var lastScreenWidth = window.innerWidth;
var bigScreen = false;
$(menu).prepend("
");
if(settings.indicator == true){
$(menu).find("a").each(function(){
if($(this).siblings(".dropdown, .megamenu").length > 0){
$(this).append("");
}
});
}
screenSize();
$(window).resize(function() {
if(lastScreenWidth <= 767 && window.innerWidth > 767){
unbindEvents();
hideCollapse();
bindHover();
if(settings.align == "right" && bigScreen == false){
rightAlignMenu();
bigScreen = true;
}
}
if(lastScreenWidth > 767 && window.innerWidth <= 767){
unbindEvents();
showCollapse();
bindClick();
if(bigScreen == true){
rightAlignMenu();
bigScreen = false;
}
}
if(settings.align == "right"){
if(lastScreenWidth > 767 && window.innerWidth > 767)
fixSubmenuRight();
}
else{
if(lastScreenWidth > 767 && window.innerWidth > 767)
fixSubmenuLeft();
}
lastScreenWidth = window.innerWidth;
});
function screenSize(){
if(window.innerWidth <= 767){
showCollapse();
bindClick();
if(bigScreen == true){
rightAlignMenu();
bigScreen = false;
};
}
else{
hideCollapse();
bindHover();
if(settings.align == "right"){
rightAlignMenu();
bigScreen = true;
}
else{
fixSubmenuLeft();
}
}
}
function bindHover(){
if (navigator.userAgent.match(/Mobi/i) || window.navigator.msMaxTouchPoints > 0 || settings.submenuTrigger == "click"){
$(menu).find("a").on("click touchstart", function(e){
e.stopPropagation();
e.preventDefault();
$(this).parent("li").siblings("li").find(".dropdown, .megamenu").stop(true, true).fadeOut(settings.speed);
if($(this).siblings(".dropdown, .megamenu").css("display") == "none"){
$(this).siblings(".dropdown, .megamenu").stop(true, true).delay(settings.delay).fadeIn(settings.speed);
return false;
}
else{
$(this).siblings(".dropdown, .megamenu").stop(true, true).fadeOut(settings.speed);
$(this).siblings(".dropdown").find(".dropdown").stop(true, true).fadeOut(settings.speed);
}
window.location.href = $(this).attr("href");
});
$(menu).find("li").bind("mouseleave", function(){
$(this).children(".dropdown, .megamenu").stop(true, true).fadeOut(settings.speed);
});
if(settings.hideClickOut == true){
$(document).bind("click.menu touchstart.menu", function(ev){
if($(ev.target).closest(menu).length == 0){
$(menu).find(".dropdown, .megamenu").fadeOut(settings.speed);
}
});
}
}
else{
$(menu).find("li").bind("mouseenter", function(){
$(this).children(".dropdown, .megamenu").stop(true, true).delay(settings.delay).fadeIn(settings.speed);
}).bind("mouseleave", function(){
$(this).children(".dropdown, .megamenu").stop(true, true).delay(settings.hideDelay).fadeOut(settings.speed);
});
}
}
function bindClick(){
$(menu).find("li:not(.showhide)").each(function(){
if($(this).children(".dropdown, .megamenu").length > 0){
$(this).children("a").bind("click", function(e){
if($(this).siblings(".dropdown, .megamenu").css("display") == "none"){
$(this).siblings(".dropdown, .megamenu").delay(settings.delay).slideDown(settings.speed).focus();
$(this).parent("li").siblings("li").find(".dropdown, .megamenu").slideUp(settings.speed);
return false;
}
else{
$(this).siblings(".dropdown, .megamenu").slideUp(settings.speed).focus();
firstItemClick = 1;
}
});
}
});
}
function showCollapse(){
$(menu).children("li:not(.showhide)").hide(0);
$(menu).children("li.showhide").show(0);
$(menu).children("li.showhide").bind("click", function(){
if($(menu).children("li").is(":hidden")){
$(menu).children("li").slideDown(settings.speed);
}
else{
$(menu).children("li:not(.showhide)").slideUp(settings.speed);
$(menu).children("li.showhide").show(0);
$(menu).find(".dropdown, .megamenu").hide(settings.speed);
}
});
}
function hideCollapse(){
$(menu).children("li").show(0);
$(menu).children("li.showhide").hide(0);
}
function rightAlignMenu(){
$(menu).children("li").addClass("jsright");
var items = $(menu).children("li");
$(menu).children("li:not(.showhide)").detach();
for(var i = items.length; i >= 1; i--){
$(menu).append(items[i]);
}
fixSubmenuRight();
}
function fixSubmenuRight(){
$(menu).children("li").removeClass("last");
var items = $(menu).children("li");
for(var i = 1; i <= items.length; i++){
if($(items[i]).children(".dropdown, .megamenu").length > 0){
var lastItemsWidth = 0;
for(var y = 1; y <= i; y++){
lastItemsWidth = lastItemsWidth + $(items[y]).outerWidth();
}
if($(items[i]).children(".dropdown, .megamenu").outerWidth() > lastItemsWidth){
$(items[i]).addClass("last");
}
}
}
}
function fixSubmenuLeft(){
$(menu).children("li").removeClass("fix-sub");
var items = $(menu).children("li");
var menuWidth = $(menu).outerWidth();
var itemsWidth = 0;
for(var i = 1; i <= items.length; i++){
if($(items[i]).children(".dropdown, .megamenu").length > 0){
if($(items[i]).position().left + $(items[i]).children(".dropdown, .megamenu").outerWidth() > menuWidth){
$(items[i]).addClass("fix-sub");
}
}
}
}
function unbindEvents(){
$(menu).find("li, a").unbind();
$(document).unbind("click.menu touchstart.menu");
$(menu).find(".dropdown, .megamenu").hide(0);
}
}
$().ownmenu();