<?php
//////////////////////////////////////////////////////////////
/// phpThumb() by James Heinrich <info@silisoftware.com> //
// available at http://phpthumb.sourceforge.net ///
//////////////////////////////////////////////////////////////
/// //
// See: phpthumb.readme.txt for usage instructions //
// ///
//////////////////////////////////////////////////////////////
// //
// phpThumb.demo.showpic.php //
// James Heinrich <info@silisoftware.com> //
// 23 Feb 2004 //
// //
// This code is useful for popup pictures (e.g. thumbnails //
// you want to show larger, such as a larger version of a //
// product photo for example) but you don't know the image //
// dimensions before popping up. This script displays the //
// image with no window border, and resizes the window to //
// the size it needs to be (usually better to spawn it //
// large (600x400 for example) and let it auto-resize it //
// smaller), and if the image is larger than 90% of the //
// current screen area the window respawns itself with //
// scrollbars. //
// //
// Usage: //
// window.open('showpic.php?src=big.jpg&title=Big+picture', //
// 'popupwindowname', //
// 'width=600,height=400,menubar=no,toolbar=no') //
// //
// See demo linked from http://phpthumb.sourceforge.net ///
//////////////////////////////////////////////////////////////
?>
<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title><?php echo @$_GET['title']; ?></title>
<script language="Javascript">
<!--
// http://www.xs4all.nl/~ppk/js/winprop.html
function CrossBrowserResizeInnerWindowTo(newWidth, newHeight) {
if (self.innerWidth) {
frameWidth = self.innerWidth;
frameHeight = self.innerHeight;
} else if (document.documentElement && document.documentElement.clientWidth) {
frameWidth = document.documentElement.clientWidth;
frameHeight = document.documentElement.clientHeight;
} else if (document.body) {
frameWidth = document.body.clientWidth;
frameHeight = document.body.clientHeight;
} else {
return false;
}
if (document.layers) {
newWidth -= (parent.outerWidth - parent.innerWidth);
newHeight -= (parent.outerHeight - parent.innerHeight);
}
// original code
//parent.window.resizeTo(newWidth, newHeight);
// fixed code: James Heinrich, 20 Feb 2004
parent.window.resizeBy(newWidth - frameWidth, newHeight - frameHeight);
return true;
}
// -->
</script>
</head>
<body style="margin: 0px;">
<?php
if (get_magic_quotes_gpc()) {
$_GET['src'] = stripslashes($_GET['src']);
}
echo '<img src="'.$_GET['src'].'" border="0">';
flush();
if ($imgdata = @getimagesize($_GET['src'])) {
// this would be an excellent place to put some caching stuff to avoid re-scanning every picture every time
// check for maximum dimensions to allow no-scrollbar window
echo '<script language="Javascript">'."\n";
echo 'if (((screen.width * 1.1) > '.$imgdata[0].') || ((screen.height * 1.1) > '.$imgdata[1].')) {'."\n";
// screen is large enough to fit whole picture on screen with 10% margin
echo 'CrossBrowserResizeInnerWindowTo('.$imgdata[0].', '.$imgdata[1].');'."\n";
echo '} else {'."\n";
if (!isset($_REQUEST['norespawn'])) {
// image is too large for screen: respawn with scrollbars
echo 'window.open("'.$_SERVER['PHP_SELF'].'?src='.urlencode($_GET['src']).'&title='.urlencode(@$_GET['title']).'&norespawn=1", "respawn", "width="+Math.round(screen.width * 0.9)+",height="+Math.round(screen.height * 0.9)+",resizable=yes,status=no,menubar=no,toolbar=no,scrollbars=yes");'."\n";
echo 'self.close();'."\n";
}
echo '}'."\n";
echo '</script></body></html>';
} elseif (!isset($_REQUEST['norespawn'])) {
// cannot determine correct window size, or correct size too large: respawn with scrollbars
echo '<script language="Javascript">window.open("'.$_SERVER['PHP_SELF'].'?src='.urlencode($_GET['src']).'&title='.urlencode(@$_GET['title']).'&norespawn=1", "respawn", "width=600,height=400,resizable=yes,status=no,menubar=no,toolbar=no,scrollbars=yes"); self.close();</script>';
}
?>
</body>
</html>