/*!
* jquery tree menu
* dTree.js v1.0.0
* mefe@mefe.net
* 2014-09-03
*
*/
(function($) {
$.fn.dTree = function(options) {
var defaults = {
closeSameLevel: true,
useCookie: true,
};
var settings = $.extend({}, defaults, options);
//.css({"color":"red","border":"2px solid red"});
return this.each(function() {
var $ul = $(this).find('ul');
var $li = $(this).find('li');
var $folder = $li.has("ul");
$folder.prepend("");
$li.not($folder).prepend("");
$ul.parent("li").addClass("folder-group");
$ul.children('li:last-child').not($folder).addClass("join-last");
$.fn.dTree.tree_first_element($li.first());
$ul.children('li.folder-group:last-child').addClass("last");
if (settings.useCookie && $.fn.dTree.check_cookie("dTree")) {
var object_index = JSON.parse($.fn.dTree.get_cookie("dTree"));
$.each(object_index, function(key, value) {
$this = $ul.find("li.folder-group").eq(value);
$.fn.dTree.set_icons($this.children('span:first'));
$this.children('ul:first').toggle();
});
} else if ($li.hasClass("active")) {
$active = $ul.find("li.folder-group.active");
$active.each(function() {
$.fn.dTree.set_icons($(this).children('span:first'));
$(this).children('ul:first').toggle();
});
$active.parentsUntil("div", ".folder-group").each(function() {
$.fn.dTree.set_icons($(this).children('span:first'));
$(this).children('ul:first').toggle();
});
}
$(this).on('click', '.plus, .minus', function() {
if (settings.useCookie) {
var obect_index = [];
$(this).parentsUntil("div", ".folder-group").each(function() {
obect_index.push($(this).index(".folder-group"));
});
$.fn.dTree.set_cookie("dTree", JSON.stringify(obect_index));
}
if (settings.closeSameLevel) {
$.fn.dTree.close_same_level($(this));
}
$.fn.dTree.set_icons($(this));
$(this).parent().children('ul:first').toggle(250);
});
});
};
$.fn.dTree.set_cookie = function(name, value) {
document.cookie = name + "=" + value;
};
$.fn.dTree.get_cookie = function(name) {
var value = "; " + document.cookie;
var parts = value.split("; " + name + "=");
if (parts.length === 2) return parts.pop().split(";").shift();
};
$.fn.dTree.check_cookie = function(name) {
var _cookie = document.cookie;
var pattern = new RegExp("" + name + "=([^;=]+)[;\\b]?");
if (pattern.test(_cookie)) {
return true;
}
}
$.fn.dTree.set_icons = function($selected) {
if (!$selected.parent().children('ul:first').is(':visible')) {
$selected.removeClass("plus").addClass("minus");
$selected.siblings("span").removeClass("folder").addClass("folder-open");
} else {
$selected.removeClass("minus").addClass("plus");
$selected.siblings("span").removeClass("folder-open").addClass("folder");
}
};
$.fn.dTree.close_same_level = function($selected) {
var $same_level = $selected.parent().siblings(".folder-group").children('ul:first');
if ($same_level.is(':visible')) {
$same_level.toggle(250);
$.fn.dTree.set_icons($selected.parent().siblings(".folder-group").children('span:first'));
}
};
$.fn.dTree.tree_first_element = function($selected) {
$selected.children("span.join").remove();
$selected.children("span").addClass("main").removeClass("page-tree");
};
}(jQuery));