Index: thickbox.css
===================================================================
--- thickbox.css	(Revision 213)
+++ thickbox.css	(Arbeitskopie)
@@ -25,12 +25,16 @@
 	z-index:100;
 	top: 0px;
 	left: 0px;
+	height:100%;
+	width:100%;
+}
+
+.TB_overlayMacFFBGHack {background: url(macFFBgHack.png) repeat;}
+.TB_overlayBG {
 	background-color:#000;
 	filter:alpha(opacity=75);
 	-moz-opacity: 0.75;
 	opacity: 0.75;
-	height:100%;
-	width:100%;
 }
 
 * html #TB_overlay { /* ie6 hack */
Index: thickbox.js
===================================================================
--- thickbox.js	(Revision 213)
+++ thickbox.js	(Arbeitskopie)
@@ -1,7 +1,7 @@
 // $Id: thickbox.js,v 1.2.4.2 2007/06/21 02:19:44 frjo Exp $
 
 /*
- * Thickbox 3 - One Box To Rule Them All.
+ * Thickbox 3.1 - One Box To Rule Them All.
  * By Cody Lindley (http://www.codylindley.com)
  * Copyright (c) 2007 cody lindley
  * Licensed under the MIT License: http://www.opensource.org/licenses/mit-license.php
@@ -12,7 +12,6 @@ if (Drupal.jsEnabled) {
 	//on page load call tb_init
 	$(document).ready(function(){
 		tb_init('a.thickbox, area.thickbox, input.thickbox');//pass where to apply thickbox
-		imgLoader = new Image();// preload image
 	});
 }
 
@@ -42,11 +41,17 @@ function tb_show(caption, url, imageGrou
 			}
 		}else{//all others
 			if(document.getElementById("TB_overlay") === null){
-				$("body").append("<div id='TB_overlay'></div><div id='TB_window'>");
+				$("body").append("<div id='TB_overlay'></div><div id='TB_window'></div>");
 				$("#TB_overlay").click(tb_remove);
 			}
 		}
 
+		if(tb_detectMacXFF()){
+			$("#TB_overlay").addClass("TB_overlayMacFFBGHack");//use png overlay so hide flash
+		}else{
+			$("#TB_overlay").addClass("TB_overlayBG");//use background and opacity
+		}
+
 		if(caption===null){caption="";}
 		$("body").append("<div id='TB_load'></div>");//add loader to the page
 		$('#TB_load').show();//show loader
@@ -58,7 +63,7 @@ function tb_show(caption, url, imageGrou
 	   		baseURL = url;
 	   }
 
-	   var urlString = /\.jpg|\.jpeg|\.png|\.gif|\.bmp/g;
+	   var urlString = /\.jpg$|\.jpeg$|\.png$|\.gif$|\.bmp$/;
 	   var urlType = baseURL.toLowerCase().match(urlString);
 
 		if(urlType == '.jpg' || urlType == '.jpeg' || urlType == '.png' || urlType == '.gif' || urlType == '.bmp'){//code to show images
@@ -144,9 +149,6 @@ function tb_show(caption, url, imageGrou
 					return false;
 				}
 				$("#TB_next").click(goNext);
-				$("#TB_ImageOff").click(goNext);
-			} else {
-				$("#TB_ImageOff").click(tb_remove);
 			}
 
 			document.onkeydown = function(e){
@@ -172,11 +174,12 @@ function tb_show(caption, url, imageGrou
 
 			tb_position();
 			$("#TB_load").remove();
+			$("#TB_ImageOff").click(tb_remove);
 			$("#TB_window").css({display:"block"}); //for safari using css instead of show
 			};
 
 			imgPreloader.src = url;
-		}else{//code to show html pages
+		}else{//code to show html
 
 			var queryString = url.replace(/^[^\?]+\??/,'');
 			var params = tb_parseQuery( queryString );
@@ -186,18 +189,24 @@ function tb_show(caption, url, imageGrou
 			ajaxContentW = TB_WIDTH - 30;
 			ajaxContentH = TB_HEIGHT - 45;
 
-			if(url.indexOf('TB_iframe') != -1){
+			if(url.indexOf('TB_iframe') != -1){// either iframe or ajax window		
 					urlNoQuery = url.split('TB_');
-					$("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+caption+"</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton' title='" + settings.close + "'>" + settings.close + "</a> " + settings.esc_key + "</div></div><iframe frameborder='0' hspace='0' src='"+urlNoQuery[0]+"' id='TB_iframeContent' name='TB_iframeContent' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH + 17)+"px;' onload='tb_showIframe()'> </iframe>");
-				}else{
-					if($("#TB_window").css("display") != "block"){
-						if(params['modal'] != "true"){
-						$("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+caption+"</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton'>" + settings.close + "</a> " + settings.esc_key + "</div></div><div id='TB_ajaxContent' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px'></div>");
-						}else{
+					$("#TB_iframeContent").remove();
+					if(params['modal'] != "true"){//iframe no modal
+						$("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+caption+"</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton' title='" + settings.close + "'>" + settings.close + "</a> " + settings.esc_key + "</div></div><iframe frameborder='0' hspace='0' src='"+urlNoQuery[0]+"' id='TB_iframeContent' name='TB_iframeContent"+Math.round(Math.random()*1000)+"' onload='tb_showIframe()' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH + 17)+"px;' > </iframe>");
+					}else{//iframe modal
 						$("#TB_overlay").unbind();
-						$("#TB_window").append("<div id='TB_ajaxContent' class='TB_modal' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px;'></div>");
+						$("#TB_window").append("<iframe frameborder='0' hspace='0' src='"+urlNoQuery[0]+"' id='TB_iframeContent' name='TB_iframeContent"+Math.round(Math.random()*1000)+"' onload='tb_showIframe()' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH + 17)+"px;'> </iframe>");
+					}
+			}else{// not an iframe, ajax
+					if($("#TB_window").css("display") != "block"){
+						if(params['modal'] != "true"){//ajax no modal
+							$("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+caption+"</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton'>" + settings.close + "</a> " + settings.esc_key + "</div></div><div id='TB_ajaxContent' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px'></div>");
+						}else{//ajax modal
+							$("#TB_overlay").unbind();
+							$("#TB_window").append("<div id='TB_ajaxContent' class='TB_modal' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px;'></div>");
 						}
-					}else{
+					}else{//this means the window is already up, we are just loading new content via ajax
 						$("#TB_ajaxContent")[0].style.width = ajaxContentW +"px";
 						$("#TB_ajaxContent")[0].style.height = ajaxContentH +"px";
 						$("#TB_ajaxContent")[0].scrollTop = 0;
@@ -208,16 +217,18 @@ function tb_show(caption, url, imageGrou
 			$("#TB_closeWindowButton").click(tb_remove);
 
 				if(url.indexOf('TB_inline') != -1){
-					$("#TB_ajaxContent").html($('#' + params['inlineId']).html());
+					$("#TB_ajaxContent").append($('#' + params['inlineId']).children());
+					$("#TB_window").unload(function () {
+						$('#' + params['inlineId']).append( $("#TB_ajaxContent").children() ); // move elements back when you're finished
+					});
 					tb_position();
 					$("#TB_load").remove();
 					$("#TB_window").css({display:"block"});
 				}else if(url.indexOf('TB_iframe') != -1){
 					tb_position();
-					if(frames['TB_iframeContent'] === undefined){//be nice to safari
+					if($.browser.safari){//safari needs help because it will not fire iframe onload
 						$("#TB_load").remove();
 						$("#TB_window").css({display:"block"});
-						$(document).keyup( function(e){ var key = e.keyCode; if(key == 27){tb_remove();}});
 					}
 				}else{
 					$("#TB_ajaxContent").load(url += "&random=" + (new Date().getTime()),function(){//to do a post change this load method
@@ -225,6 +236,9 @@ function tb_show(caption, url, imageGrou
 						$("#TB_load").remove();
 						tb_init("#TB_ajaxContent a.thickbox");
 						$("#TB_window").css({display:"block"});
+						if($("#TB_ajaxContent :input").length) {
+							$("#TB_ajaxContent :input").get(0).focus(); // focus first form element
+						}
 					});
 				}
 
@@ -256,21 +270,21 @@ function tb_showIframe(){
 
 function tb_remove() {
  	$("#TB_imageOff").unbind("click");
-	$("#TB_overlay").unbind("click");
 	$("#TB_closeWindowButton").unbind("click");
-	$("#TB_window").fadeOut("fast",function(){$('#TB_window,#TB_overlay,#TB_HideSelect').remove();});
+	$("#TB_window").fadeOut("fast",function(){$('#TB_window,#TB_overlay,#TB_HideSelect').trigger("unload").unbind().remove();});
 	$("#TB_load").remove();
 	if (typeof document.body.style.maxHeight == "undefined") {//if IE 6
 		$("body","html").css({height: "auto", width: "auto"});
 		$("html").css("overflow","");
 	}
 	document.onkeydown = "";
+	document.onkeyup = "";
 	return false;
 }
 
 function tb_position() {
 $("#TB_window").css({marginLeft: '-' + parseInt((TB_WIDTH / 2),10) + 'px', width: TB_WIDTH + 'px'});
-	if ( !(jQuery.browser.msie && typeof XMLHttpRequest == 'function')) { // take away IE6
+	if ( !(jQuery.browser.msie && jQuery.browser.version < 7)) { // take away IE6
 		$("#TB_window").css({marginTop: '-' + parseInt((TB_HEIGHT / 2),10) + 'px'});
 	}
 }
@@ -297,3 +311,13 @@ function tb_getPageSize(){
 	arrayPageSize = [w,h];
 	return arrayPageSize;
 }
+
+function tb_detectMacXFF() {
+  var userAgent = navigator.userAgent.toLowerCase();
+  if (/firefox[\/\s](\d+\.\d+)/.test(userAgent)) {
+    var ffversion = new Number(RegExp.$1);
+    if (ffversion < 3 && userAgent.indexOf('mac') != -1) {
+      return true;
+    }
+  }
+}
