+
+ deleteElement: function($editable)
+ {
+ var relatedThemes = $("*[x-node='begin'], *[x-node='end']", $editable);
+
+ var themeMarks = relatedThemes.map(function() {
+ return $(".motyw[theme-class='"+$(this).attr('theme-class')+"']");
+ });
+
+ if($editable.is("*.motyw"))
+ {
+ console.log($editable);
+ var selector = "[theme-class='"+$editable.attr('theme-class')+"']";
+ relatedThemes = relatedThemes.add("*[x-node='begin']"+selector+", *[x-node='end']"+selector);
+ }
+
+ console.log(relatedThemes, themeMarks);
+
+ var del = confirm("Usunięcie elementu jest nieodwracalne.\n"
+ +" Czy na pewno chcesz usunąć ten element, wraz z zawartymi motywami ?\n");
+
+ if(del) {
+ relatedThemes.remove();
+ themeMarks.remove();
+ $editable.remove();
+ }
+ },
+
+ // Theme related stuff
+ verifyThemeInsertPoint: function(node) {
+
+ if(node.nodeType == 3) { // Text Node
+ node = node.parentNode;
+ }
+
+ if(node.nodeType != 1) return false;
+
+ console.log('Selection point:', node);
+
+ node = $(node);
+ var xtype = node.attr('x-node');
+
+ if(!xtype || (xtype.search(':') >= 0) ||
+ xtype == 'motyw' || xtype == 'begin' || xtype == 'end')
+ return false;
+
+ // this is hopefully redundant
+ //if(! node.is('*.utwor *') )
+ // return false;
+
+ // don't allow themes inside annotations
+ if( node.is('*[x-annotation-box] *') )
+ return false;
+
+ return true;
+ },