[Picfinity-commit] SF.net SVN: picfinity: [11] .themes/ajax/ajax.js
Status: Beta
Brought to you by:
espadav8
From: <esp...@us...> - 2007-07-19 03:16:02
|
Revision: 11 http://picfinity.svn.sourceforge.net/picfinity/?rev=11&view=rev Author: espadav8 Date: 2007-07-18 20:16:05 -0700 (Wed, 18 Jul 2007) Log Message: ----------- Update getLayoutNode. Still no Safari support. IE6 partly works but still badly broken. Modified Paths: -------------- .themes/ajax/ajax.js Modified: .themes/ajax/ajax.js =================================================================== --- .themes/ajax/ajax.js 2007-07-19 03:13:05 UTC (rev 10) +++ .themes/ajax/ajax.js 2007-07-19 03:16:05 UTC (rev 11) @@ -6,7 +6,7 @@ { if (document.implementation && document.implementation.createDocument) { - xmlDoc = document.implementation.createDocument("", "", null); + xmlDoc = document.implementation.createDocument("", "layout", null); } else if (window.ActiveXObject) { @@ -17,9 +17,72 @@ alert('Your browser can\'t handle this script'); return; } + xmlDoc.load("gallery.xml"); } +function getLayoutNode(element) +{ + + // this is the best way, but nothing supports this (yet) + if ((xmlDoc.getElementById) && (xmlDoc.getElementById(element.getAttribute("id")) != null)) + { + return xmlDoc.getElementById(element.getAttribute("id")); + } + + // this is the next best way, but only Firefox and Opera support this at the moment + else if (document.createTreeWalker) + { + var nodes = document.createTreeWalker(xmlDoc.documentElement, NodeFilter.SHOW_ELEMENT, null, false); + + while ((node = nodes.nextNode()) != null) + { + if (node.getAttribute("id") == element.getAttribute("id")) + { + return node; + } + else + { + continue; + } + } + } + + // this is possibly the worse way, and it's still not supported by Safari + else + { + if (xmlDoc.documentElement.getAttribute("id") == element.getAttribute("id")) + { + return xmlDoc.documentElement; + } + else + { + // this causes a problem with Safari + // xmlDocFolders.length == 0 + var xmlDocFolders = xmlDoc.getElementsByTagName("folder"); + + for (var i = 0; i < xmlDocFolders.length; i++) + { + if (xmlDocFolders[i].getAttribute("id") == element.getAttribute("id")) + { + return xmlDocFolders[i]; + } + } + + var xmlDocImages = xmlDoc.getElementsByTagName("image"); + + for (var i = 0; i < xmlDocImages.length; i++) + { + if (xmlDocImages[i].getAttribute("id") == element.getAttribute("id")) + { + return xmlDocImages[i]; + } + } + } + } + return null; +} + function addEvent(elm, evType, fn, useCapture) { if (elm.addEventListener) { @@ -74,29 +137,8 @@ } } -function getLayoutNode(element) -{ - if (document.createTreeWalker) { - var nodes = document.createTreeWalker(xmlDoc.documentElement, NodeFilter.SHOW_ELEMENT, null, false); - - while ((node = nodes.nextNode()) != null) - { - if (node.getAttribute("id") == element.getAttribute("id")) - { - return node; - } - else - { - continue; - } - } - } - - return null; -} - function openFolder(element) -{ +{ var nodePath = getNodePath(getLayoutNode(element), ''); var breadcrumbDiv; @@ -444,7 +486,6 @@ function selectLayoutNodeFromPath(path, node) { node = (node == undefined) ? xmlDoc.documentElement : node; - if(path == "./") { @@ -456,7 +497,9 @@ var currentPath = path.split('/')[0]; - if (document.createTreeWalker) { + // FIXME: doesn't work with IE or Safari + if (document.createTreeWalker) + { var nodes = document.createTreeWalker(node, NodeFilter.SHOW_ELEMENT, null, false); while ((selectedNode = nodes.nextNode()) != null) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |