<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: Sprsquish's Code Snippets</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Sat, 26 Jul 2008 15:16:47 GMT</pubDate>
    <description>DZone Snippets: Sprsquish's Code Snippets</description>
    <item>
      <title>Get XPath</title>
      <link>http://snippets.dzone.com/posts/show/4349</link>
      <description>Given a node this will return an array containing the XPath&lt;br /&gt;Usage:&lt;br /&gt;&lt;br /&gt;getXPath(document.getElementById('myelement'));&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;      function getXPath(node, path) {&lt;br /&gt;        path = path || [];&lt;br /&gt;        if(node.parentNode) {&lt;br /&gt;          path = getXPath(node.parentNode, path);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        if(node.previousSibling) {&lt;br /&gt;          var count = 1;&lt;br /&gt;          var sibling = node.previousSibling&lt;br /&gt;          do {&lt;br /&gt;            if(sibling.nodeType == 1 &amp;&amp; sibling.nodeName == node.nodeName) {count++;}&lt;br /&gt;            sibling = sibling.previousSibling;&lt;br /&gt;          } while(sibling);&lt;br /&gt;          if(count == 1) {count = null;}&lt;br /&gt;        } else if(node.nextSibling) {&lt;br /&gt;          var sibling = node.nextSibling;&lt;br /&gt;          do {&lt;br /&gt;            if(sibling.nodeType == 1 &amp;&amp; sibling.nodeName == node.nodeName) {&lt;br /&gt;              var count = 1;&lt;br /&gt;              sibling = null;&lt;br /&gt;            } else {&lt;br /&gt;              var count = null;&lt;br /&gt;              sibling = sibling.previousSibling;&lt;br /&gt;            }&lt;br /&gt;          } while(sibling);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        if(node.nodeType == 1) {&lt;br /&gt;          path.push(node.nodeName.toLowerCase() + (node.id ? "[@id='"+node.id+"']" : count &gt; 0 ? "["+count+"]" : ''));&lt;br /&gt;        }&lt;br /&gt;        return path;&lt;br /&gt;      };&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Mon, 23 Jul 2007 20:57:04 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4349</guid>
      <author>sprsquish (Jeff Smick)</author>
    </item>
    <item>
      <title>Javascript Dialog box based on Prototype and Scriptaculous</title>
      <link>http://snippets.dzone.com/posts/show/3411</link>
      <description>This makes it super simple to create a modal dialog box. The page will be dimmed into the background and the dialog box popped up over top of it. The overlay can be clicked to close out of the box.&lt;br /&gt;&lt;br /&gt;Use it thusly:&lt;br /&gt;new Dialog.box([element ID]);&lt;br /&gt;$([element ID]).show();&lt;br /&gt;$([element ID]).hide();&lt;br /&gt;&lt;br /&gt;Simple right?&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;var Dialog = {};&lt;br /&gt;Dialog.Box = Class.create();&lt;br /&gt;Object.extend(Dialog.Box.prototype, {&lt;br /&gt;  initialize: function(id) {&lt;br /&gt;    this.createOverlay();&lt;br /&gt;&lt;br /&gt;    this.dialog_box = $(id);&lt;br /&gt;    this.dialog_box.show = this.show.bind(this);&lt;br /&gt;    this.dialog_box.hide = this.hide.bind(this);&lt;br /&gt;&lt;br /&gt;    this.parent_element = this.dialog_box.parentNode;&lt;br /&gt;&lt;br /&gt;    var e_dims = Element.getDimensions(this.dialog_box);&lt;br /&gt;    var b_dims = Element.getDimensions(this.overlay);&lt;br /&gt;    this.dialog_box.style.left = ((b_dims.width/2) - (e_dims.width/2)) + 'px';&lt;br /&gt;    this.dialog_box.style.top = '12px';&lt;br /&gt;  },&lt;br /&gt;&lt;br /&gt;  createOverlay: function() {&lt;br /&gt;    if($('dialog_overlay')) {&lt;br /&gt;      this.overlay = $('dialog_overlay');&lt;br /&gt;    } else {&lt;br /&gt;      this.overlay = document.createElement('div');&lt;br /&gt;      this.overlay.id = 'dialog_overlay';&lt;br /&gt;      Object.extend(this.overlay.style, {&lt;br /&gt;      	position: 'absolute',&lt;br /&gt;      	top: 0,&lt;br /&gt;      	left: 0,&lt;br /&gt;      	zIndex: 90,&lt;br /&gt;      	width: '100%',&lt;br /&gt;      	backgroundColor: '#000',&lt;br /&gt;      	display: 'none'&lt;br /&gt;      });&lt;br /&gt;      document.body.insertBefore(this.overlay, document.body.childNodes[0]);&lt;br /&gt;    }&lt;br /&gt;  },&lt;br /&gt;&lt;br /&gt;  moveDialogBox: function(where) {&lt;br /&gt;    Element.remove(this.dialog_box);&lt;br /&gt;    if(where == 'back')&lt;br /&gt;      this.dialog_box = this.parent_element.appendChild(this.dialog_box);&lt;br /&gt;    else&lt;br /&gt;      this.dialog_box = this.overlay.parentNode.insertBefore(this.dialog_box, this.overlay);&lt;br /&gt;  },&lt;br /&gt;&lt;br /&gt;  show: function() {&lt;br /&gt;    this.overlay.style.height = $('body').getHeight()+'px';&lt;br /&gt;    this.moveDialogBox('out');&lt;br /&gt;    this.overlay.onclick = this.hide.bind(this);&lt;br /&gt;    this.selectBoxes('hide');&lt;br /&gt;    new Effect.Appear(this.overlay, {duration: 0.1, from: 0.0, to: 0.3});&lt;br /&gt;    this.dialog_box.style.display = ''&lt;br /&gt;  },&lt;br /&gt;&lt;br /&gt;  hide: function() {&lt;br /&gt;    this.selectBoxes('show');&lt;br /&gt;    new Effect.Fade(this.overlay, {duration: 0.1});&lt;br /&gt;    this.dialog_box.style.display = 'none';&lt;br /&gt;    this.moveDialogBox('back');&lt;br /&gt;    $A(this.dialog_box.getElementsByTagName('input')).each(function(e){if(e.type!='submit')e.value=''});&lt;br /&gt;  },&lt;br /&gt;&lt;br /&gt;  selectBoxes: function(what) {&lt;br /&gt;    $A(document.getElementsByTagName('select')).each(function(select) {&lt;br /&gt;      Element[what](select);&lt;br /&gt;    });&lt;br /&gt;&lt;br /&gt;    if(what == 'hide')&lt;br /&gt;      $A(this.dialog_box.getElementsByTagName('select')).each(function(select){Element.show(select)})&lt;br /&gt;  }&lt;br /&gt;});&lt;/code&gt;</description>
      <pubDate>Sun, 04 Feb 2007 23:23:44 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/3411</guid>
      <author>sprsquish (Jeff Smick)</author>
    </item>
  </channel>
</rss>
