diff options
author | isjusterin <erinproductions@gmail.com> | 2015-07-22 19:06:03 -0500 |
---|---|---|
committer | isjusterin <erinproductions@gmail.com> | 2015-07-22 19:06:03 -0500 |
commit | eda26599175299cd1481bc93ecfc57c4840f8705 (patch) | |
tree | 5bb7fed81f5788ed955bcc1f341667466d3c6d0c /comiccontrol/draganddrop/core.js | |
parent | 2e1397a1c1ee6bde877c351010e0fdaed43efd25 (diff) | |
download | ComicControl-3.0-master.zip ComicControl-3.0-master.tar.gz ComicControl-3.0-master.tar.bz2 |
ComicControl files to be dumped in root folderHEADorigin/masterorigin/HEADmaster
Diffstat (limited to 'comiccontrol/draganddrop/core.js')
-rw-r--r-- | comiccontrol/draganddrop/core.js | 170 |
1 files changed, 170 insertions, 0 deletions
diff --git a/comiccontrol/draganddrop/core.js b/comiccontrol/draganddrop/core.js new file mode 100644 index 0000000..494b9ec --- /dev/null +++ b/comiccontrol/draganddrop/core.js @@ -0,0 +1,170 @@ +/* +Copyright (c) 2005 Tim Taylor Consulting <http://tool-man.org/> + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +*/ + +var ToolMan = { + events : function() { + if (!ToolMan._eventsFactory) throw "ToolMan Events module isn't loaded"; + return ToolMan._eventsFactory + }, + + css : function() { + if (!ToolMan._cssFactory) throw "ToolMan CSS module isn't loaded"; + return ToolMan._cssFactory + }, + + coordinates : function() { + if (!ToolMan._coordinatesFactory) throw "ToolMan Coordinates module isn't loaded"; + return ToolMan._coordinatesFactory + }, + + drag : function() { + if (!ToolMan._dragFactory) throw "ToolMan Drag module isn't loaded"; + return ToolMan._dragFactory + }, + + dragsort : function() { + if (!ToolMan._dragsortFactory) throw "ToolMan DragSort module isn't loaded"; + return ToolMan._dragsortFactory + }, + + helpers : function() { + return ToolMan._helpers + }, + + cookies : function() { + if (!ToolMan._cookieOven) throw "ToolMan Cookie module isn't loaded"; + return ToolMan._cookieOven + }, + + junkdrawer : function() { + return ToolMan._junkdrawer + } + +} + +ToolMan._helpers = { + map : function(array, func) { + for (var i = 0, n = array.length; i < n; i++) func(array[i]) + }, + + nextItem : function(item, nodeName) { + if (item == null) return + var next = item.nextSibling + while (next != null) { + if (next.nodeName == nodeName) return next + next = next.nextSibling + } + return null + }, + + previousItem : function(item, nodeName) { + var previous = item.previousSibling + while (previous != null) { + if (previous.nodeName == nodeName) return previous + previous = previous.previousSibling + } + return null + }, + + moveBefore : function(item1, item2) { + var parent = item1.parentNode + parent.removeChild(item1) + parent.insertBefore(item1, item2) + }, + + moveAfter : function(item1, item2) { + var parent = item1.parentNode + parent.removeChild(item1) + parent.insertBefore(item1, item2 ? item2.nextSibling : null) + } +} + +/** + * scripts without a proper home + * + * stuff here is subject to change unapologetically and without warning + */ +ToolMan._junkdrawer = { + serializeList : function(list) { + var items = list.getElementsByTagName("li") + var array = new Array() + for (var i = 0, n = items.length; i < n; i++) { + var item = items[i] + + array.push(item.id) + } + return array; + }, + + inspectListOrder : function(id) { + alert(ToolMan.junkdrawer().serializeList(document.getElementById(id))) + }, + + restoreListOrder : function(listID) { + var list = document.getElementById(listID) + if (list == null) return + + var cookie = ToolMan.cookies().get("list-" + listID) + if (!cookie) return; + + var IDs = cookie.split('|') + var items = ToolMan.junkdrawer()._itemsByID(list) + + for (var i = 0, n = IDs.length; i < n; i++) { + var itemID = IDs[i] + if (itemID in items) { + var item = items[itemID] + list.removeChild(item) + list.insertBefore(item, null) + } + } + }, + + _identifier : function(item) { + var trim = ToolMan.junkdrawer().trim + var identifier + + identifier = trim(item.getAttribute("id")) + if (identifier != null && identifier.length > 0) return identifier; + + identifier = trim(item.getAttribute("itemID")) + if (identifier != null && identifier.length > 0) return identifier; + + // FIXME: strip out special chars or make this an MD5 hash or something + return trim(item.innerHTML) + }, + + _itemsByID : function(list) { + var array = new Array() + var items = list.getElementsByTagName('li') + for (var i = 0, n = items.length; i < n; i++) { + var item = items[i] + array[ToolMan.junkdrawer()._identifier(item)] = item + } + return array + }, + + trim : function(text) { + if (text == null) return null + return text.replace(/^(\s+)?(.*\S)(\s+)?$/, '$2') + } +} |