<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.0" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
	<title>Comments for Feedmarker Blog</title>
	<link>http://blog.feedmarker.com</link>
	<description></description>
	<pubDate>Thu, 16 Oct 2008 06:40:35 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0</generator>

	<item>
		<title>Comment on Chalksite.com - a total web package for teachers by Aaron</title>
		<link>http://blog.feedmarker.com/2006/03/01/chalksitecom-a-total-web-package-for-teachers/#comment-3725</link>
		<pubDate>Wed, 05 Apr 2006 12:58:23 +0000</pubDate>
		<guid>http://blog.feedmarker.com/2006/03/01/chalksitecom-a-total-web-package-for-teachers/#comment-3725</guid>
					<description>Is this a competitor to Nuvvo?</description>
		<content:encoded><![CDATA[<p>Is this a competitor to Nuvvo?</p>
]]></content:encoded>
				</item>
	<item>
		<title>Comment on Ruby Users of Minnesota meeting by Seth Thomas Rasmussen</title>
		<link>http://blog.feedmarker.com/2006/03/29/ruby-users-of-minnesota-meeting/#comment-3660</link>
		<pubDate>Wed, 29 Mar 2006 17:14:35 +0000</pubDate>
		<guid>http://blog.feedmarker.com/2006/03/29/ruby-users-of-minnesota-meeting/#comment-3660</guid>
					<description>Nice write-up... and nice use of the famfamfam! Just discovered 'the fam' recently, and am very impressed at such quality from a free library.</description>
		<content:encoded><![CDATA[<p>Nice write-up&#8230; and nice use of the famfamfam! Just discovered &#8216;the fam&#8217; recently, and am very impressed at such quality from a free library.</p>
]]></content:encoded>
				</item>
	<item>
		<title>Comment on Ruby Users of Minnesota meeting by Tom Brice</title>
		<link>http://blog.feedmarker.com/2006/03/29/ruby-users-of-minnesota-meeting/#comment-3659</link>
		<pubDate>Wed, 29 Mar 2006 16:59:20 +0000</pubDate>
		<guid>http://blog.feedmarker.com/2006/03/29/ruby-users-of-minnesota-meeting/#comment-3659</guid>
					<description>Great write-up!  I should have read my feeds before writing mine.</description>
		<content:encoded><![CDATA[<p>Great write-up!  I should have read my feeds before writing mine.</p>
]]></content:encoded>
				</item>
	<item>
		<title>Comment on Rails 1.1 is Out by Olav</title>
		<link>http://blog.feedmarker.com/2006/03/28/rails-11-is-out/#comment-3654</link>
		<pubDate>Tue, 28 Mar 2006 18:07:44 +0000</pubDate>
		<guid>http://blog.feedmarker.com/2006/03/28/rails-11-is-out/#comment-3654</guid>
					<description>Yeah, it's a great release - I can't wait to try out the RJS stuff. :) Good luck with your apps!</description>
		<content:encoded><![CDATA[<p>Yeah, it&#8217;s a great release &#8211; I can&#8217;t wait to try out the <span class="caps">RJS</span> stuff. <img src='http://blog.feedmarker.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Good luck with your apps!</p>
]]></content:encoded>
				</item>
	<item>
		<title>Comment on How to Make Better Modal Windows with Lightbox by Matt</title>
		<link>http://blog.feedmarker.com/2006/02/12/how-to-make-better-modal-windows-with-lightbox/#comment-3652</link>
		<pubDate>Mon, 27 Mar 2006 21:47:16 +0000</pubDate>
		<guid>http://blog.feedmarker.com/2006/02/12/how-to-make-better-modal-windows-with-lightbox/#comment-3652</guid>
					<description>I've been playing around with Bruno's script in IE 6 and Firefox 1.5.  Everything works fine in Firefox 1.5, but in IE6 the overlay does not cover the entire page and in some cases I don't see it at all.  The problem occurs in IE when you put a 'lightbox' div (div that you will popup using lightbox) within another div that does not cover the entire page.  If you put the lightbox code right after the '' tag and make sure that it's not within any other div, then you shouldn't have problems.  Unfortunately I could not do that since I created web pages on the fly from a servlet and moving the divs to the top would require a lot of changes.
  Also in IE, selects aren't hidden and display above the 'lightbox' div, so I fixed that by hiding all selects within the page then showing any selects within the 'lightbox' div.
  Another issue I saw in IE is you could scroll up and down the page and since the lightbox doesn't cover the entire length of the page, I had to prevent the user from being able to do so.  So I prevented that from using code I've seen in other lightbox implementations.
  So after a little bit of work and testing, I made the lightbox work on my system in IE 6 and Firefox 1.5 no matter if you put the 'lightbox' div within another div.  I also check for CSS styles top, left, width and height and added code to work with percentage and/or pixel values.  This is something I just hacked together, so there are definitely many enhancements, fixes one could make.  The code is shown below.

* Note - remember that this requires the prototype.js script
* Note - I did test this in Opera 8.52 and the overlay does not completely cover the page and completely disappear.

Lightbox code:

&lt;pre&gt;
&lt;code&gt;
/*--------------------------------------------------------------------------*/
/*	Lightbox	
*	This is a script for creating modal dialog windows 
*	 (like the ones your operating system uses)
*	
*/

var Lightbox = {

	yPos : 0,
	isIE : (navigator.userAgent.toLowerCase().indexOf('msie') != -1) ? true : false,
	
	/* hideAll - closes all open lightbox windows */
	hideAll: function(){
		lboxes = document.getElementsByClassName('lbox')
		lboxes.each(function(box){
				Element.hide(box)
			}
		)
		if ($('overlay')){
			Element.remove('overlay');
			}
		
		// if ie
		if(Lightbox.isIE) {
			Lightbox.setScroll(0,Lightbox.yPos);
			Lightbox.prepareIE(&quot;auto&quot;, &quot;auto&quot;);
			
			// show all the document's selects since we are hiding the lightbox
			Lightbox.toggleSelects('visible');
		}
	},
	
	toggleSelects: function(visibility){
	    selects = document.getElementsByTagName('select');
	    for(i = 0; i &lt; selects.length; i++) {
	        selects[i].style.visibility = visibility;
	    }
	},
	
	// Ie requires height to 100% and overflow hidden or else you can scroll down past the lightbox
	prepareIE: function(height, overflow){
		bod = document.getElementsByTagName('body')[0];
		bod.style.height = height;
		bod.style.overflow = overflow;
  
		htm = document.getElementsByTagName('html')[0];
		htm.style.height = height;
		htm.style.overflow = overflow; 
	},
	
	// Taken from lightbox implementation found at http://www.huddletogether.com/projects/lightbox/
	getScroll: function(){
		if (self.pageYOffset) {
			this.yPos = self.pageYOffset;
		} else if (document.documentElement &amp;&amp; document.documentElement.scrollTop){
			this.yPos = document.documentElement.scrollTop; 
		} else if (document.body) {
			this.yPos = document.body.scrollTop;
		}
	},
	
	setScroll: function(x, y){
		window.scrollTo(x, y);
	}
}

Lightbox.base = Class.create();
Lightbox.base.prototype = {

	initialize: function(element, options){
		//start by getting the current scroll position and hiding all lightboxes
		Lightbox.getScroll();
		Lightbox.hideAll();
	
		this.element = $(element);
		this.options = Object.extend({
			lightboxClassName : 'lightbox',
			closeOnOverlayClick : false,
			externalControl : false
		}, options &amp;#124;&amp;#124; {} )

		//create the overlay
		new Insertion.Before(this.element, &quot;&lt;div id='overlay' style='display:none;'&gt;&quot;);
		
		if(Lightbox.isIE) {
			// find out if the css style is a percentage or not
			var overlayWidthCSS = null;
			var overlayHeightCSS = null;
			var overlayTopCSS = null;
			var overlayLeftCSS = null;
			
			this.widthPercent = null;
			this.heightPercent = null;
			this.leftPercent = null;
			this.topPercent = null;

			try {
				overlayWidthCSS = Element.getStyle(overlay, &quot;width&quot;).toString();
				
				var percIndex = overlayWidthCSS.indexOf(&quot;%&quot;);
				if(percIndex != -1 &amp;&amp; percIndex == this.widthPercent = parseInt(overlayWidthCSS);
				}
			} catch(err) { }			
			
			try {
				overlayHeightCSS = Element.getStyle(overlay, &quot;height&quot;).toString();
				
				var percIndex = overlayHeightCSS.indexOf(&quot;%&quot;);
				if(percIndex != -1 &amp;&amp; percIndex == overlayHeightCSS.length-1) {
					this.heightPercent = parseInt(overlayHeightCSS);
				}
			} catch(err) { }			

			try {
				overlayTopCSS = Element.getStyle(overlay, &quot;top&quot;).toString();
				
				var percIndex = overlayTopCSS.indexOf(&quot;%&quot;);
				if(percIndex != -1 &amp;&amp; percIndex == overlayTopCSS.length - 1) {
					this.topPercent = parseInt(overlayTopCSS);
				} else {
				}
			} catch(err) { }
			
			try {
				overlayLeftCSS = Element.getStyle(overlay, &quot;left&quot;).toString();
				
				var percIndex = overlayLeftCSS.indexOf(&quot;%&quot;);
				if(percIndex != -1 &amp;&amp; percIndex == overlayLeftCSS.length-1) {
					this.leftPercent = parseInt(overlayLeftCSS);
				} else {
				}
			} catch(err) { }
		}
		
		Element.addClassName(this.element, this.options.lightboxClassName)
	
		//also add a default lbox class to the lightbox div so we can find and close all lightboxes if we need to
		Element.addClassName(this.element, 'lbox')
		
		//Tip: make sure the path to the close.gif image below is correct for your setup
		closer = '&lt;img id=&quot;close&quot; src=&quot;/images/close.gif&quot; alt=&quot;Close&quot; title=&quot;Close this window&quot; /&gt;'

		//insert the closer image into the div
		new Insertion.Top(this.element, closer);
		
		Event.observe($('close'), 'click', this.hideBox.bindAsEventListener(this) );
		
		if (this.options.closeOnOverlayClick){
			Event.observe($('overlay'), 'click', this.hideBox.bindAsEventListener(this) );
		}
		if (this.options.externalControl){
			Event.observe($(this.options.externalControl), 'click', this.hideBox.bindAsEventListener(this) );
		}
		
		this.showBox();	
	},
	
	showBox : function(){
		// if ie
		if(Lightbox.isIE) {
			Lightbox.getScroll();
			Lightbox.prepareIE('100%', 'hidden');
			Lightbox.setScroll(0,0);
			
			// hide all the document's selects since you're showing the lightbox
			Lightbox.toggleSelects('hidden');
			
			// show the local selects
			this.toggleBoxSelects('visible');
			
			var bodyDim = Element.getDimensions(document.getElementsByTagName('body')[0]);
			var overlay = $('overlay');
			var overlayDim = Element.getDimensions(overlay);
			var cumulativeOffset = Position.cumulativeOffset(overlay);
			var realOffset = Position.realOffset(overlay);
			
			if(this.widthPercent != null &amp;&amp; !isNaN(this.widthPercent)) {
				overlay.style.width = bodyDim.width*this.widthPercent/100;
			}
			
			if(this.heightPercent != null &amp;&amp; !isNaN(this.heightPercent)) {
				overlay.style.height = bodyDim.height*this.heightPercent/100;
			}
			
			if(this.leftPercent != null &amp;&amp; !isNaN(this.leftPercent) &amp;&amp; !isNaN(bodyDim.width)) {
				overlay.style.left = parseInt(bodyDim.width*this.leftPercent/100);
			} else {
				try {
					var left = parseInt(Element.getStyle(overlay,'left'));
					if(!isNaN(left))
						overlay.style.left = parseInt(-cumulativeOffset[0])+2*left; // value of body left is included in cumulativeOffset
				} catch(err) {}
			}

			if(this.topPercent != null &amp;&amp; !isNaN(this.topPercent) &amp;&amp; !isNaN(bodyDim.height)) {
				//alert(&quot;Calculating new top:\nthis.topPercent: &quot;+ this.topPercent +
				//	&quot;\nbodyDim.height: &quot; + bodyDim.height +
				//	&quot;\ncumulativeOffset[1]: &quot; + cumulativeOffset[1]); 
				//alert(&quot;new top = &quot; + parseInt(bodyDim.height*this.topPercent/100));
				overlay.style.top = parseInt(bodyDim.height*this.topPercent/100);
			} else {
				try {
					var top = parseInt(Element.getStyle(overlay, 'top'));
					//alert(&quot;top=&quot; + top + &quot;, cumulativeOffset[1]=&quot; + cumulativeOffset[1] + &quot;, realOffset[1]=&quot; + realOffset[1]);
					if(!isNaN(top)) {
						overlay.style.top = top; // value of body top is NOT included in cumulativeOffset
					}
				} catch(err) {}
			}
		}
		
		//show the overlay
	   Element.show('overlay');

		//center the lightbox
	   this.center();
	   
	   //show the lightbox
	   Element.show(this.element);
	   return false;
	},
	
	toggleBoxSelects : function(visibility) {
		// Must have try catch because not all elements have the function getElementsByTagName
		try {
			var selects = this.element.getElementsByTagName('select');
		    for(i = 0; i &lt; selects.length; i++) {
		    	//alert(&quot;toggling visibility to '&quot; + visibility + &quot;' of select '&quot; + selects[i].name + &quot;', currently set at '&quot; + selects[i].style.visibility + &quot;'&quot;);
		        selects[i].style.visibility = visibility;
		    }
	    } catch (err) {}
	},
	
	hideBox : function(evt){
		// if ie
		if(Lightbox.isIE) {
			Lightbox.setScroll(0,Lightbox.yPos);
			Lightbox.prepareIE(&quot;auto&quot;, &quot;auto&quot;);
			
			// show all the document's selects since we are hiding the lightbox
			Lightbox.toggleSelects('visible');
		}
		
		Element.removeClassName(this.element, this.options.lightboxClassName)
		Element.hide(this.element);
		//remove the overlay element from the DOM completely
		Element.remove('overlay');
		return false;
	},
	
	center : function(){
		var my_width  = 0;
		var my_height = 0;
		
		if ( typeof( window.innerWidth ) == 'number' ){
			my_width  = window.innerWidth;
			my_height = window.innerHeight;
		}else if ( document.documentElement &amp;&amp; 
				 ( document.documentElement.clientWidth &amp;#124;&amp;#124;
				   document.documentElement.clientHeight ) ){
			my_width  = document.documentElement.clientWidth;
			my_height = document.documentElement.clientHeight;
		}
		else if ( document.body &amp;&amp; 
				( document.body.clientWidth &amp;#124;&amp;#124; document.body.clientHeight ) ){
			my_width  = document.body.clientWidth;
			my_height = document.body.clientHeight;
		}
		
		this.element.style.position = 'absolute';
		this.element.style.zIndex   = 99;
		
		var scrollY = 0;
		
		if ( document.documentElement &amp;&amp; document.documentElement.scrollTop ){
			scrollY = document.documentElement.scrollTop;
		}else if ( document.body &amp;&amp; document.body.scrollTop){
			scrollY = document.body.scrollTop;
		}else if ( window.pageYOffset ){
			scrollY = window.pageYOffset;
		}else if ( window.scrollY ){
			scrollY = window.scrollY;
		}
		
		var elementDimensions = Element.getDimensions(this.element);
		
		var setX = ( my_width  - elementDimensions.width  )/ 2;
		var setY = ( my_height - elementDimensions.height )/ 2 + scrollY;
		
		setX = ( setX &lt; 0 ) ? 0 : setX;
		setY = ( setY &lt; 0 ) ? 0 : setY;
		
		this.element.style.left = setX + &quot;px&quot;;
		this.element.style.top  = setY + &quot;px&quot;;
		
	}
}
&lt;/code&gt;
&lt;/code&gt;&lt;/pre&gt;</description>
		<content:encoded><![CDATA[<p>I&#8217;ve been playing around with Bruno&#8217;s script in <span class="caps">IE 6</span> and Firefox 1.5.  Everything works fine in Firefox 1.5, but in <span class="caps">IE6</span> the overlay does not cover the entire page and in some cases I don&#8217;t see it at all.  The problem occurs in IE when you put a &#8216;lightbox&#8217; div (div that you will popup using lightbox) within another div that does not cover the entire page.  If you put the lightbox code right after the &#8216;&#8217; tag and make sure that it&#8217;s not within any other div, then you shouldn&#8217;t have problems.  Unfortunately I could not do that since I created web pages on the fly from a servlet and moving the divs to the top would require a lot of changes.<br />
Also in IE, selects aren&#8217;t hidden and display above the &#8216;lightbox&#8217; div, so I fixed that by hiding all selects within the page then showing any selects within the &#8216;lightbox&#8217; div.<br />
Another issue I saw in IE is you could scroll up and down the page and since the lightbox doesn&#8217;t cover the entire length of the page, I had to prevent the user from being able to do so.  So I prevented that from using code I&#8217;ve seen in other lightbox implementations.<br />
So after a little bit of work and testing, I made the lightbox work on my system in <span class="caps">IE 6</span> and Firefox 1.5 no matter if you put the &#8216;lightbox&#8217; div within another div.  I also check for <span class="caps">CSS</span> styles top, left, width and height and added code to work with percentage and/or pixel values.  This is something I just hacked together, so there are definitely many enhancements, fixes one could make.  The code is shown below.</p>
<ul>
<li>Note &#8211; remember that this requires the prototype.js script</li>
<li>Note &#8211; I did test this in Opera 8.52 and the overlay does not completely cover the page and completely disappear.</li>
</ul>
<p>Lightbox code:</p>
<pre>
<code>
/*--------------------------------------------------------------------------*/
/*Lightbox
*This is a script for creating modal dialog windows
* (like the ones your operating system uses)
*
*/

var Lightbox = {

yPos : 0,
isIE : (navigator.userAgent.toLowerCase().indexOf('msie') != -1) ? true : false,

/* hideAll - closes all open lightbox windows */
hideAll: function(){
lboxes = document.getElementsByClassName('lbox')
lboxes.each(function(box){
Element.hide(box)
}
)
if ($('overlay')){
Element.remove('overlay');
}

// if ie
if(Lightbox.isIE) {
Lightbox.setScroll(0,Lightbox.yPos);
Lightbox.prepareIE("auto", "auto");

// show all the document's selects since we are hiding the lightbox
Lightbox.toggleSelects('visible');
}
},

toggleSelects: function(visibility){
selects = document.getElementsByTagName('select');
for(i = 0; i &lt; selects.length; i++) {
selects[i].style.visibility = visibility;
}
},

// Ie requires height to 100% and overflow hidden or else you can scroll down past the lightbox
prepareIE: function(height, overflow){
bod = document.getElementsByTagName('body')[0];
bod.style.height = height;
bod.style.overflow = overflow;

htm = document.getElementsByTagName('html')[0];
htm.style.height = height;
htm.style.overflow = overflow;
},

// Taken from lightbox implementation found at <a href='http://www.huddletogether.com/projects/lightbox/' rel='nofollow'>http://www.huddletogether.com/projects/lightbox/</a>
getScroll: function(){
if (self.pageYOffset) {
this.yPos = self.pageYOffset;
} else if (document.documentElement &#38;&#38; document.documentElement.scrollTop){
this.yPos = document.documentElement.scrollTop;
} else if (document.body) {
this.yPos = document.body.scrollTop;
}
},

setScroll: function(x, y){
window.scrollTo(x, y);
}
}

Lightbox.base = Class.create();
Lightbox.base.prototype = {

initialize: function(element, options){
//start by getting the current scroll position and hiding all lightboxes
Lightbox.getScroll();
Lightbox.hideAll();

this.element = $(element);
this.options = Object.extend({
lightboxClassName : 'lightbox',
closeOnOverlayClick : false,
externalControl : false
}, options || {} )

//create the overlay
new Insertion.Before(this.element, "&lt;div id='overlay' style='display:none;'&gt;");

if(Lightbox.isIE) {
// find out if the css style is a percentage or not
var overlayWidthCSS = null;
var overlayHeightCSS = null;
var overlayTopCSS = null;
var overlayLeftCSS = null;

this.widthPercent = null;
this.heightPercent = null;
this.leftPercent = null;
this.topPercent = null;

try {
overlayWidthCSS = Element.getStyle(overlay, "width").toString();

var percIndex = overlayWidthCSS.indexOf("%");
if(percIndex != -1 &#38;&#38; percIndex  this.widthPercent = parseInt(overlayWidthCSS);
}
} catch(err) { }

try {
overlayHeightCSS = Element.getStyle(overlay, "height").toString();

var percIndex = overlayHeightCSS.indexOf("%");
if(percIndex != &lt;del&gt;1 &#38;&#38; percIndex  overlayHeightCSS.length</del>1) {
this.heightPercent = parseInt(overlayHeightCSS);
}
} catch(err) { }

try {
overlayTopCSS = Element.getStyle(overlay, &#8220;top&#8221;).toString();

var percIndex = overlayTopCSS.indexOf(&#8220;%&#8221;);
if(percIndex != -1 &#38;&#38; percIndex  overlayTopCSS.length - 1) {
this.topPercent = parseInt(overlayTopCSS);
} else {
}
} catch(err) { }

try {
overlayLeftCSS = Element.getStyle(overlay, "left").toString();

var percIndex = overlayLeftCSS.indexOf("%");
if(percIndex != &lt;del&gt;1 &#38;&#38; percIndex  overlayLeftCSS.length</del>1) {
this.leftPercent = parseInt(overlayLeftCSS);
} else {
}
} catch(err) { }
}

Element.addClassName(this.element, this.options.lightboxClassName)

//also add a default lbox class to the lightbox div so we can find and close all lightboxes if we need to
Element.addClassName(this.element, &#8216;lbox&#8217;)

//Tip: make sure the path to the close.gif image below is correct for your setup
closer = &#8216;<img id="close" src="/images/close.gif" alt="Close" title="Close this window" />&#8217;

//insert the closer image into the div
new Insertion.Top(this.element, closer);

Event.observe($(&#8216;close&#8217;), &#8216;click&#8217;, this.hideBox.bindAsEventListener(this) );

if (this.options.closeOnOverlayClick){
Event.observe($(&#8216;overlay&#8217;), &#8216;click&#8217;, this.hideBox.bindAsEventListener(this) );
}
if (this.options.externalControl){
Event.observe($(this.options.externalControl), &#8216;click&#8217;, this.hideBox.bindAsEventListener(this) );
}

this.showBox();
},

showBox : function(){
// if ie
if(Lightbox.isIE) {
Lightbox.getScroll();
Lightbox.prepareIE(&#8216;100%&#8217;, &#8216;hidden&#8217;);
Lightbox.setScroll(0,0);

// hide all the document&#8217;s selects since you&#8217;re showing the lightbox
Lightbox.toggleSelects(&#8216;hidden&#8217;);

// show the local selects
this.toggleBoxSelects(&#8216;visible&#8217;);

var bodyDim = Element.getDimensions(document.getElementsByTagName(&#8216;body&#8217;)[0]);
var overlay = $(&#8216;overlay&#8217;);
var overlayDim = Element.getDimensions(overlay);
var cumulativeOffset = Position.cumulativeOffset(overlay);
var realOffset = Position.realOffset(overlay);

if(this.widthPercent != null &#38;&#38; !isNaN(this.widthPercent)) {
overlay.style.width = bodyDim.width*this.widthPercent/100;
}

if(this.heightPercent != null &#38;&#38; !isNaN(this.heightPercent)) {
overlay.style.height = bodyDim.height*this.heightPercent/100;
}

if(this.leftPercent != null &#38;&#38; !isNaN(this.leftPercent) &#38;&#38; !isNaN(bodyDim.width)) {
overlay.style.left = parseInt(bodyDim.width*this.leftPercent/100);
} else {
try {
var left = parseInt(Element.getStyle(overlay,&#8217;left&#8217;));
if(!isNaN(left))
overlay.style.left = parseInt(-cumulativeOffset[0])+2*left; // value of body left is included in cumulativeOffset
} catch(err) {}
}

if(this.topPercent != null &#38;&#38; !isNaN(this.topPercent) &#38;&#38; !isNaN(bodyDim.height)) {
//alert(&#8220;Calculating new top:nthis.topPercent: &#8220;+ this.topPercent +
//&#8221;nbodyDim.height: &#8221; + bodyDim.height +
//&#8221;ncumulativeOffset[1]: &#8221; + cumulativeOffset[1]);
//alert(&#8220;new top = &#8221; + parseInt(bodyDim.height*this.topPercent/100));
overlay.style.top = parseInt(bodyDim.height*this.topPercent/100);
} else {
try {
var top = parseInt(Element.getStyle(overlay, &#8216;top&#8217;));
//alert(&#8220;top=&#8221; + top + &#8220;, cumulativeOffset[1]=&#8221; + cumulativeOffset[1] + &#8220;, realOffset[1]=&#8221; + realOffset[1]);
if(!isNaN(top)) {
overlay.style.top = top; // value of body top is <span class="caps">NOT</span> included in cumulativeOffset
}
} catch(err) {}
}
}

//show the overlay
Element.show(&#8216;overlay&#8217;);

//center the lightbox
this.center();

//show the lightbox
Element.show(this.element);
return false;
},

toggleBoxSelects : function(visibility) {
// Must have try catch because not all elements have the function getElementsByTagName
try {
var selects = this.element.getElementsByTagName(&#8216;select&#8217;);
for(i = 0; i < selects.length; i++) {
//alert(&#8220;toggling visibility to &#8216;&#8221; + visibility + &#8220;&#8217; of select &#8216;&#8221; + selects[i].name + &#8220;&#8217;, currently set at &#8216;&#8221; + selects[i].style.visibility + &#8220;&#8217;&#8221;);
selects[i].style.visibility = visibility;
}
} catch (err) {}
},

hideBox : function(evt){
// if ie
if(Lightbox.isIE) {
Lightbox.setScroll(0,Lightbox.yPos);
Lightbox.prepareIE(&#8220;auto&#8221;, &#8220;auto&#8221;);

// show all the document&#8217;s selects since we are hiding the lightbox
Lightbox.toggleSelects(&#8216;visible&#8217;);
}

Element.removeClassName(this.element, this.options.lightboxClassName)
Element.hide(this.element);
//remove the overlay element from the <span class="caps">DOM</span> completely
Element.remove(&#8216;overlay&#8217;);
return false;
},

center : function(){
var my_width  = 0;
var my_height = 0;

if ( typeof( window.innerWidth ) == &#8216;number&#8217; ){
my_width  = window.innerWidth;
my_height = window.innerHeight;
}else if ( document.documentElement &#38;&#38;
( document.documentElement.clientWidth ||
document.documentElement.clientHeight ) ){
my_width  = document.documentElement.clientWidth;
my_height = document.documentElement.clientHeight;
}
else if ( document.body &#38;&#38;
( document.body.clientWidth || document.body.clientHeight ) ){
my_width  = document.body.clientWidth;
my_height = document.body.clientHeight;
}

this.element.style.position = &#8216;absolute&#8217;;
this.element.style.zIndex   = 99;

var scrollY = 0;

if ( document.documentElement &#38;&#38; document.documentElement.scrollTop ){
scrollY = document.documentElement.scrollTop;
}else if ( document.body &#38;&#38; document.body.scrollTop){
scrollY = document.body.scrollTop;
}else if ( window.pageYOffset ){
scrollY = window.pageYOffset;
}else if ( window.scrollY ){
scrollY = window.scrollY;
}

var elementDimensions = Element.getDimensions(this.element);

var setX = ( my_width  &#8211; elementDimensions.width  )/ 2;
var setY = ( my_height &#8211; elementDimensions.height )/ 2 + scrollY;

setX = ( setX < 0 ) ? 0 : setX;
setY = ( setY < 0 ) ? 0 : setY;

this.element.style.left = setX + &#8220;px&#8221;;
this.element.style.top  = setY + &#8220;px&#8221;;

}
}
</code>
</code></pre>
]]></content:encoded>
				</item>
	<item>
		<title>Comment on FCGI Errors with Ruby on Rails by Kenn Christ</title>
		<link>http://blog.feedmarker.com/2006/01/11/fcgi-errors-with-ruby-on-rails/#comment-3587</link>
		<pubDate>Fri, 17 Mar 2006 15:05:27 +0000</pubDate>
		<guid>http://blog.feedmarker.com/2006/01/11/fcgi-errors-with-ruby-on-rails/#comment-3587</guid>
					<description>Thank you! I spent a good hour yesterday googling this very problem, only to find a) a bunch of unanswered forum, blog, and mailing list posts, and b) a lot of seemingly random suggestions about checking permissions on logs, etc, that didn't do any good. This is what fixed it for me.</description>
		<content:encoded><![CDATA[<p>Thank you! I spent a good hour yesterday googling this very problem, only to find a) a bunch of unanswered forum, blog, and mailing list posts, and b) a lot of seemingly random suggestions about checking permissions on logs, etc, that didn&#8217;t do any good. This is what fixed it for me.</p>
]]></content:encoded>
				</item>
	<item>
		<title>Comment on Tagging in MySQL by chris.is-a-geek.net &#187; Blog Archive &#187; Schémas de bases de données pour la gestion de tags</title>
		<link>http://blog.feedmarker.com/2005/04/26/tagging-in-mysql/#comment-3567</link>
		<pubDate>Thu, 16 Mar 2006 18:50:37 +0000</pubDate>
		<guid>http://blog.feedmarker.com/2005/04/26/tagging-in-mysql/#comment-3567</guid>
					<description>[...] blog.feedmarker.com/2005/04/26/tagging-in-mysql [...]</description>
		<content:encoded><![CDATA[<p>[...] blog.feedmarker.com/2005/04/26/tagging-in-mysql [...]</p>
]]></content:encoded>
				</item>
	<item>
		<title>Comment on How to do natural alpha-numeric sort in MySQL by Bruno</title>
		<link>http://blog.feedmarker.com/2006/02/01/how-to-do-natural-alpha-numeric-sort-in-mysql/#comment-3451</link>
		<pubDate>Fri, 10 Mar 2006 04:32:40 +0000</pubDate>
		<guid>http://blog.feedmarker.com/2006/02/01/how-to-do-natural-alpha-numeric-sort-in-mysql/#comment-3451</guid>
					<description>Well, it depends on how you want to order your result. If you want to order by last name, you'd put &quot;order by last_name&quot;. If you wanted to order by the concatenated field, you'd do &quot;SELECT concat(first_name, last_name) as full_name ORDER by full_name. In either case you can add &quot;   0&quot; to force MySQL to sort naturally.</description>
		<content:encoded><![CDATA[<p>Well, it depends on how you want to order your result. If you want to order by last name, you&#8217;d put &#8220;order by last_name&#8221;. If you wanted to order by the concatenated field, you&#8217;d do &#8220;SELECT concat(first_name, last_name) as full_name <span class="caps">ORDER</span> by full_name. In either case you can add &#8221;   0&#8221; to force MySQL to sort naturally.</p>
]]></content:encoded>
				</item>
	<item>
		<title>Comment on How to do natural alpha-numeric sort in MySQL by richard</title>
		<link>http://blog.feedmarker.com/2006/02/01/how-to-do-natural-alpha-numeric-sort-in-mysql/#comment-3447</link>
		<pubDate>Fri, 10 Mar 2006 01:59:10 +0000</pubDate>
		<guid>http://blog.feedmarker.com/2006/02/01/how-to-do-natural-alpha-numeric-sort-in-mysql/#comment-3447</guid>
					<description>What about when you are concatanating fields... eg
select concat(first name, last name) from names order by ???

what do you put in the question marks??</description>
		<content:encoded><![CDATA[<p>What about when you are concatanating fields&#8230; eg<br />
select concat(first name, last name) from names order by ???</p>
<p>what do you put in the question marks??</p>
]]></content:encoded>
				</item>
	<item>
		<title>Comment on How to Make Better Modal Windows with Lightbox by Corigo</title>
		<link>http://blog.feedmarker.com/2006/02/12/how-to-make-better-modal-windows-with-lightbox/#comment-3429</link>
		<pubDate>Thu, 09 Mar 2006 06:52:04 +0000</pubDate>
		<guid>http://blog.feedmarker.com/2006/02/12/how-to-make-better-modal-windows-with-lightbox/#comment-3429</guid>
					<description>I've been struggling a little bit with Lightbox.js and have even seen it crash Mozilla completely. Your implementation looks interesting, I am testing it now and I see that in Opera 8.52 the background does not completely disappear when I close the lightbox overlay. I have either scroll the window to get back the native page colors, or change focus to another window and back again.</description>
		<content:encoded><![CDATA[<p>I&#8217;ve been struggling a little bit with Lightbox.js and have even seen it crash Mozilla completely. Your implementation looks interesting, I am testing it now and I see that in Opera 8.52 the background does not completely disappear when I close the lightbox overlay. I have either scroll the window to get back the native page colors, or change focus to another window and back again.</p>
]]></content:encoded>
				</item>
</channel>
</rss>
