Initial commit of Thomas Rybak's original version
22
.gitattributes
vendored
Normal file
|
@ -0,0 +1,22 @@
|
|||
# Auto detect text files and perform LF normalization
|
||||
* text=auto
|
||||
|
||||
# Custom for Visual Studio
|
||||
*.cs diff=csharp
|
||||
*.sln merge=union
|
||||
*.csproj merge=union
|
||||
*.vbproj merge=union
|
||||
*.fsproj merge=union
|
||||
*.dbproj merge=union
|
||||
|
||||
# Standard to msysgit
|
||||
*.doc diff=astextplain
|
||||
*.DOC diff=astextplain
|
||||
*.docx diff=astextplain
|
||||
*.DOCX diff=astextplain
|
||||
*.dot diff=astextplain
|
||||
*.DOT diff=astextplain
|
||||
*.pdf diff=astextplain
|
||||
*.PDF diff=astextplain
|
||||
*.rtf diff=astextplain
|
||||
*.RTF diff=astextplain
|
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
photos/
|
15
README.md
Normal file
|
@ -0,0 +1,15 @@
|
|||
Minigal Nano SSE
|
||||
================
|
||||
|
||||
MiniGal Nano is a very simple image gallery. It only requires php and GD (no database, no special libraries like PEAR or ImageMagick). MiniGal Nano does not have a web admin interface: You only have to upload your images in the photo folder.
|
||||
|
||||
This fork (Minigal Nano SSE) is based on Thomas Rybak's version which seems to have been abandonned in 2010: http://www.minigal.dk/minigal-nano.html
|
||||
|
||||
This fork holds some improvements, like thumbnail cache and folder/image description.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
MiniGal Nano SSE by Sébastien SAUVAGE is licensed under a Creative Commons Attribution-Share Alike.
|
||||
https://creativecommons.org/licenses/by-sa/2.5/
|
||||
|
||||
------------------------------------------------------------------------------
|
43
config.php
Normal file
|
@ -0,0 +1,43 @@
|
|||
<?php
|
||||
/*
|
||||
MINIGAL NANO
|
||||
- A PHP/HTML/CSS based image gallery script
|
||||
|
||||
This script and included files are subject to licensing from Creative Commons (http://creativecommons.org/licenses/by-sa/2.5/)
|
||||
You may use, edit and redistribute this script, as long as you pay tribute to the original author by NOT removing the linkback to www.minigal.dk ("Powered by MiniGal Nano x.x.x")
|
||||
|
||||
MiniGal Nano is created by Thomas Rybak
|
||||
|
||||
Copyright 2010 by Thomas Rybak
|
||||
Support: www.minigal.dk
|
||||
Community: www.minigal.dk/forum
|
||||
|
||||
Please enjoy this free script!
|
||||
*/
|
||||
|
||||
// EDIT SETTINGS BELOW TO CUSTOMIZE YOUR GALLERY
|
||||
$thumbs_pr_page = "28"; //Number of thumbnails on a single page
|
||||
$gallery_width = "900px"; //Gallery width. Eg: "500px" or "70%"
|
||||
$backgroundcolor = "white"; //This provides a quick way to change your gallerys background to suit your website. Use either main colors like "black", "white", "yellow" etc. Or HEX colors, eg. "#AAAAAA"
|
||||
$templatefile = "mano"; //Template filename (must be placed in 'templates' folder)
|
||||
$title = "MiniGal Nano Testsite"; // Text to be displayed in browser titlebar
|
||||
$author = "Rybber";
|
||||
$folder_color = "black"; // Color of folder icons: blue / black / vista / purple / green / grey
|
||||
$sorting_folders = "name"; // Sort folders by: [name][date]
|
||||
$sorting_files = "name"; // Sort files by: [name][date][size]
|
||||
$sortdir_folders = "ASC"; // Sort direction of folders: [ASC][DESC]
|
||||
$sortdir_files = "ASC"; // Sort direction of files: [ASC][DESC]
|
||||
|
||||
//LANGUAGE STRINGS
|
||||
$label_home = "Home"; //Name of home link in breadcrumb navigation
|
||||
$label_new = "New"; //Text to display for new images. Use with $display_new variable
|
||||
$label_page = "Page"; //Text used for page navigation
|
||||
$label_all = "All"; //Text used for link to display all images in one page
|
||||
$label_noimages = "No images"; //Empty folder text
|
||||
$label_loading = "Loading..."; //Thumbnail loading text
|
||||
|
||||
//ADVANCED SETTINGS
|
||||
$thumb_size = 120; //Thumbnail height/width (square thumbs). Changing this will most likely require manual altering of the template file to make it look properly!
|
||||
$label_max_length = 30; //Maximum chars of a folder name that will be displayed on the folder thumbnail
|
||||
$display_exif = 1;
|
||||
?>
|
43
config_default.php
Normal file
|
@ -0,0 +1,43 @@
|
|||
<?php
|
||||
/*
|
||||
MINIGAL NANO
|
||||
- A PHP/HTML/CSS based image gallery script
|
||||
|
||||
This script and included files are subject to licensing from Creative Commons (http://creativecommons.org/licenses/by-sa/2.5/)
|
||||
You may use, edit and redistribute this script, as long as you pay tribute to the original author by NOT removing the linkback to www.minigal.dk ("Powered by MiniGal Nano x.x.x")
|
||||
|
||||
MiniGal Nano is created by Thomas Rybak
|
||||
|
||||
Copyright 2010 by Thomas Rybak
|
||||
Support: www.minigal.dk
|
||||
Community: www.minigal.dk/forum
|
||||
|
||||
Please enjoy this free script!
|
||||
*/
|
||||
|
||||
// EDIT SETTINGS BELOW TO CUSTOMIZE YOUR GALLERY
|
||||
$thumbs_pr_page = "18"; //Number of thumbnails on a single page
|
||||
$gallery_width = "900px"; //Gallery width. Eg: "500px" or "70%"
|
||||
$backgroundcolor = "white"; //This provides a quick way to change your gallerys background to suit your website. Use either main colors like "black", "white", "yellow" etc. Or HEX colors, eg. "#AAAAAA"
|
||||
$templatefile = "mano"; //Template filename (must be placed in 'templates' folder)
|
||||
$title = "My Gallery"; // Text to be displayed in browser titlebar
|
||||
$author = "Me :)";
|
||||
$folder_color = "black"; // Color of folder icons: blue / black / vista / purple / green / grey
|
||||
$sorting_folders = "name"; // Sort folders by: [name][date]
|
||||
$sorting_files = "name"; // Sort files by: [name][date][size]
|
||||
$sortdir_folders = "ASC"; // Sort direction of folders: [ASC][DESC]
|
||||
$sortdir_files = "ASC"; // Sort direction of files: [ASC][DESC]
|
||||
|
||||
//LANGUAGE STRINGS
|
||||
$label_home = "Home"; //Name of home link in breadcrumb navigation
|
||||
$label_new = "New"; //Text to display for new images. Use with $display_new variable
|
||||
$label_page = "Page"; //Text used for page navigation
|
||||
$label_all = "All"; //Text used for link to display all images in one page
|
||||
$label_noimages = "No images"; //Empty folder text
|
||||
$label_loading = "Loading..."; //Thumbnail loading text
|
||||
|
||||
//ADVANCED SETTINGS
|
||||
$thumb_size = 120; //Thumbnail height/width (square thumbs). Changing this will most likely require manual altering of the template file to make it look properly!
|
||||
$label_max_length = 30; //Maximum chars of a folder name that will be displayed on the folder thumbnail
|
||||
$display_exif = 0;
|
||||
?>
|
92
createthumb.php
Normal file
|
@ -0,0 +1,92 @@
|
|||
<?php
|
||||
/*
|
||||
MINIGAL NANO
|
||||
- A PHP/HTML/CSS based image gallery script
|
||||
|
||||
This script and included files are subject to licensing from Creative Commons (http://creativecommons.org/licenses/by-sa/2.5/)
|
||||
You may use, edit and redistribute this script, as long as you pay tribute to the original author by NOT removing the linkback to www.minigal.dk ("Powered by MiniGal Nano x.x.x")
|
||||
|
||||
MiniGal Nano is created by Thomas Rybak
|
||||
|
||||
Copyright 2010 by Thomas Rybak
|
||||
Support: www.minigal.dk
|
||||
Community: www.minigal.dk/forum
|
||||
|
||||
Please enjoy this free script!
|
||||
|
||||
|
||||
USAGE EXAMPLE:
|
||||
File: createthumb.php
|
||||
Example: <img src="createthumb.php?filename=photo.jpg&width=100&height=100">
|
||||
*/
|
||||
// error_reporting(E_ALL);
|
||||
|
||||
if (preg_match("/.jpg$|.jpeg$/i", $_GET['filename'])) header('Content-type: image/jpeg');
|
||||
if (preg_match("/.gif$/i", $_GET['filename'])) header('Content-type: image/gif');
|
||||
if (preg_match("/.png$/i", $_GET['filename'])) header('Content-type: image/png');
|
||||
|
||||
// Display error image if file isn't found
|
||||
if (!is_file($_GET['filename'])) {
|
||||
header('Content-type: image/jpeg');
|
||||
$errorimage = ImageCreateFromJPEG('images/questionmark.jpg');
|
||||
ImageJPEG($errorimage,null,90);
|
||||
}
|
||||
|
||||
// Display error image if file exists, but can't be opened
|
||||
if (substr(decoct(fileperms($_GET['filename'])), -1, strlen(fileperms($_GET['filename']))) < 4 OR substr(decoct(fileperms($_GET['filename'])), -3,1) < 4) {
|
||||
header('Content-type: image/jpeg');
|
||||
$errorimage = ImageCreateFromJPEG('images/cannotopen.jpg');
|
||||
ImageJPEG($errorimage,null,90);
|
||||
}
|
||||
|
||||
// Define variables
|
||||
$target = "";
|
||||
$xoord = 0;
|
||||
$yoord = 0;
|
||||
|
||||
if ($_GET['size'] == "") $_GET['size'] = 120; //
|
||||
$imgsize = GetImageSize($_GET['filename']);
|
||||
$width = $imgsize[0];
|
||||
$height = $imgsize[1];
|
||||
if ($width > $height) { // If the width is greater than the height it’s a horizontal picture
|
||||
$xoord = ceil(($width-$height)/2);
|
||||
$width = $height; // Then we read a square frame that equals the width
|
||||
} else {
|
||||
$yoord = ceil(($height-$width)/2);
|
||||
$height = $width;
|
||||
}
|
||||
|
||||
// Rotate JPG pictures
|
||||
if (preg_match("/.jpg$|.jpeg$/i", $_GET['filename'])) {
|
||||
if (function_exists('exif_read_data') && function_exists('imagerotate')) {
|
||||
$exif = exif_read_data($_GET['filename']);
|
||||
$ort = $exif['IFD0']['Orientation'];
|
||||
$degrees = 0;
|
||||
switch($ort)
|
||||
{
|
||||
case 6: // 90 rotate right
|
||||
$degrees = 270;
|
||||
break;
|
||||
case 8: // 90 rotate left
|
||||
$degrees = 90;
|
||||
break;
|
||||
}
|
||||
if ($degrees != 0) $target = imagerotate($target, $degrees, 0);
|
||||
}
|
||||
}
|
||||
|
||||
$target = ImageCreatetruecolor($_GET['size'],$_GET['size']);
|
||||
if (preg_match("/.jpg$/i", $_GET['filename'])) $source = ImageCreateFromJPEG($_GET['filename']);
|
||||
if (preg_match("/.gif$/i", $_GET['filename'])) $source = ImageCreateFromGIF($_GET['filename']);
|
||||
if (preg_match("/.png$/i", $_GET['filename'])) $source = ImageCreateFromPNG($_GET['filename']);
|
||||
imagecopyresampled($target,$source,0,0,$xoord,$yoord,$_GET['size'],$_GET['size'],$width,$height);
|
||||
imagedestroy($source);
|
||||
|
||||
if (preg_match("/.jpg$/i", $_GET['filename'])) ImageJPEG($target,null,90);
|
||||
if (preg_match("/.gif$/i", $_GET['filename'])) ImageGIF($target,null,90);
|
||||
if (preg_match("/.png$/i", $_GET['filename'])) ImageJPEG($target,null,90); // Using ImageJPEG on purpose
|
||||
imagedestroy($target);
|
||||
|
||||
|
||||
|
||||
?>
|
167
css/mediaboxAdvBlack21.css
Normal file
|
@ -0,0 +1,167 @@
|
|||
/* mediaboxAdvanced Black theme */
|
||||
/* version 2.1 - August 2010 */
|
||||
/* for mediaboxAdvanced v.1.3.1 */
|
||||
|
||||
/* Overlay background styling */
|
||||
|
||||
#mbOverlay {
|
||||
position: fixed;
|
||||
z-index: 9998;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: #000;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/* Legacy fix for older browsers */
|
||||
|
||||
#mbOverlay.mbOverlayFF {
|
||||
background: transparent url(../images/80.png) repeat;
|
||||
}
|
||||
|
||||
#mbOverlay.mbOverlayIE {
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
/* Overlay panel styling */
|
||||
|
||||
#mbCenter {
|
||||
position: absolute;
|
||||
z-index: 9999;
|
||||
left: 50%;
|
||||
overflow: hidden;
|
||||
background-color: #000;
|
||||
-webkit-border-radius: 10px;
|
||||
-khtml-border-radius: 10px;
|
||||
-moz-border-radius: 10px;
|
||||
border-radius: 10px;
|
||||
-webkit-box-shadow: 0px 5px 20px rgba(0,0,0,0.50);
|
||||
-khtml-box-shadow: 0px 5px 20px rgba(0,0,0,0.50);
|
||||
-moz-box-shadow: 0px 5px 20px rgba(0,0,0,0.50);
|
||||
box-shadow: 0px 5px 20px rgba(0,0,0,0.50);
|
||||
/* For IE 8 */
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.Shadow(Strength=5, Direction=180, Color='#000000')";
|
||||
/* For IE 5.5 - 7 */
|
||||
filter: progid:DXImageTransform.Microsoft.Shadow(Strength=5, Direction=180, Color='#000000');
|
||||
}
|
||||
|
||||
#mbCenter.mbLoading {
|
||||
background: #000 url(../images/loading2.gif) no-repeat center;
|
||||
/* This style is applied only during animation. */
|
||||
/* For example, the next lines turn off shadows */
|
||||
/* improving browser performance on slow systems. */
|
||||
/* To leave shadows on, just remove the following: */
|
||||
-webkit-box-shadow: none;
|
||||
-khtml-box-shadow: none;
|
||||
-moz-box-shadow: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
#mbImage {
|
||||
position: relative;
|
||||
left: 0;
|
||||
top: 0;
|
||||
|
||||
/* Inline content styling */
|
||||
|
||||
font-family: Myriad, Verdana, Arial, Helvetica, sans-serif;
|
||||
line-height: 20px;
|
||||
font-size: 12px;
|
||||
color: #fff;
|
||||
text-align: left;
|
||||
background-position: center center;
|
||||
background-repeat: no-repeat;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
/* Title, Caption and Button styling */
|
||||
|
||||
#mbBottom {
|
||||
min-height: 20px;
|
||||
font-family: Myriad, Verdana, Arial, Helvetica, sans-serif;
|
||||
line-height: 20px;
|
||||
font-size: 12px;
|
||||
color: #999;
|
||||
text-align: left;
|
||||
padding: 0 10px 10px;
|
||||
}
|
||||
|
||||
#mbTitle, #mbPrevLink, #mbNextLink, #mbCloseLink {
|
||||
display: inline;
|
||||
color: #fff;
|
||||
font-weight: bold;
|
||||
line-height: 20px;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
#mbNumber {
|
||||
display: inline;
|
||||
color: #999;
|
||||
line-height: 14px;
|
||||
font-size: 10px;
|
||||
margin: auto 10px;
|
||||
}
|
||||
|
||||
#mbCaption {
|
||||
display: block;
|
||||
color: #999;
|
||||
line-height: 14px;
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
#mbPrevLink, #mbNextLink, #mbCloseLink {
|
||||
float: right;
|
||||
outline: none;
|
||||
margin: 0 0 0 10px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
#mbPrevLink b, #mbNextLink b, #mbCloseLink b {
|
||||
color: #eee;
|
||||
font-weight: bold;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
#mbPrevLink big, #mbNextLink big, #mbCloseLink big {
|
||||
color: #eee;
|
||||
font-size: 16px;
|
||||
line-height: 14px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#mbBottom a, #mbBottom a:link, #mbBottom a:visited { /* Thanks to Danny Jung for feedback and corrections */
|
||||
text-decoration: none;
|
||||
color: #ddd;
|
||||
}
|
||||
|
||||
#mbBottom a:hover, #mbBottom a:active {
|
||||
text-decoration: underline;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
|
||||
/* Error message styling */
|
||||
|
||||
#mbError {
|
||||
position: relative;
|
||||
font-family: Myriad, Verdana, Arial, Helvetica, sans-serif;
|
||||
line-height: 20px;
|
||||
font-size: 12px;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
border: 10px solid #700;
|
||||
padding: 10px 10px 10px;
|
||||
margin: 20px;
|
||||
-webkit-border-radius: 5px;
|
||||
-khtml-border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
#mbError a, #mbError a:link, #mbError a:visited, #mbError a:hover, #mbError a:active {
|
||||
color: #d00;
|
||||
font-weight: bold;
|
||||
text-decoration: underline;
|
||||
}
|
167
css/mediaboxAdvWhite.css
Normal file
|
@ -0,0 +1,167 @@
|
|||
/* mediaboxAdvanced Black theme */
|
||||
/* version 2.1 - August 2010 */
|
||||
/* for mediaboxAdvanced v.1.3.1 */
|
||||
|
||||
/* Overlay background styling */
|
||||
|
||||
#mbOverlay {
|
||||
position: fixed;
|
||||
z-index: 9998;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: #000;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/* Legacy fix for older browsers */
|
||||
|
||||
#mbOverlay.mbOverlayFF {
|
||||
background: transparent url(../images/80.png) repeat;
|
||||
}
|
||||
|
||||
#mbOverlay.mbOverlayIE {
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
/* Overlay panel styling */
|
||||
|
||||
#mbCenter {
|
||||
position: absolute;
|
||||
z-index: 9999;
|
||||
left: 50%;
|
||||
overflow: hidden;
|
||||
background-color: #fff;
|
||||
-webkit-border-radius: 10px;
|
||||
-khtml-border-radius: 10px;
|
||||
-moz-border-radius: 10px;
|
||||
border-radius: 10px;
|
||||
-webkit-box-shadow: 0px 5px 20px rgba(0,0,0,0.50);
|
||||
-khtml-box-shadow: 0px 5px 20px rgba(0,0,0,0.50);
|
||||
-moz-box-shadow: 0px 5px 20px rgba(0,0,0,0.50);
|
||||
box-shadow: 0px 5px 20px rgba(0,0,0,0.50);
|
||||
/* For IE 8 */
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.Shadow(Strength=5, Direction=180, Color='#000000')";
|
||||
/* For IE 5.5 - 7 */
|
||||
filter: progid:DXImageTransform.Microsoft.Shadow(Strength=5, Direction=180, Color='#000000');
|
||||
}
|
||||
|
||||
#mbCenter.mbLoading {
|
||||
background: #fff url(../images/WhiteLoading.gif) no-repeat center;
|
||||
/* This style is applied only during animation. */
|
||||
/* For example, the next lines turn off shadows */
|
||||
/* improving browser performance on slow systems. */
|
||||
/* To leave shadows on, just remove the following: */
|
||||
-webkit-box-shadow: none;
|
||||
-khtml-box-shadow: none;
|
||||
-moz-box-shadow: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
#mbImage {
|
||||
position: relative;
|
||||
left: 0;
|
||||
top: 0;
|
||||
|
||||
/* Inline content styling */
|
||||
|
||||
font-family: Myriad, Verdana, Arial, Helvetica, sans-serif;
|
||||
line-height: 20px;
|
||||
font-size: 12px;
|
||||
color: #333;
|
||||
text-align: left;
|
||||
background-position: center center;
|
||||
background-repeat: no-repeat;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
/* Title, Caption and Button styling */
|
||||
|
||||
#mbBottom {
|
||||
min-height: 20px;
|
||||
font-family: Myriad, Verdana, Arial, Helvetica, sans-serif;
|
||||
line-height: 20px;
|
||||
font-size: 12px;
|
||||
color: #000;
|
||||
text-align: left;
|
||||
padding: 0 10px 10px;
|
||||
}
|
||||
|
||||
#mbTitle, #mbPrevLink, #mbNextLink, #mbCloseLink {
|
||||
display: inline;
|
||||
color: #000;
|
||||
font-weight: bold;
|
||||
line-height: 20px;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
#mbNumber {
|
||||
display: inline;
|
||||
color: #333;
|
||||
line-height: 14px;
|
||||
font-size: 10px;
|
||||
margin: auto 10px;
|
||||
}
|
||||
|
||||
#mbCaption {
|
||||
display: block;
|
||||
color: #000;
|
||||
line-height: 14px;
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
#mbPrevLink, #mbNextLink, #mbCloseLink {
|
||||
float: right;
|
||||
outline: none;
|
||||
margin: 0 0 0 10px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
#mbPrevLink b, #mbNextLink b, #mbCloseLink b {
|
||||
color: #333;
|
||||
font-weight: bold;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
#mbPrevLink big, #mbNextLink big, #mbCloseLink big {
|
||||
color: #333;
|
||||
font-size: 16px;
|
||||
line-height: 14px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#mbBottom a, #mbBottom a:link, #mbBottom a:visited { /* Thanks to Danny Jung for feedback and corrections */
|
||||
text-decoration: none;
|
||||
color: #ddd;
|
||||
}
|
||||
|
||||
#mbBottom a:hover, #mbBottom a:active {
|
||||
text-decoration: underline;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
|
||||
/* Error message styling */
|
||||
|
||||
#mbError {
|
||||
position: relative;
|
||||
font-family: Myriad, Verdana, Arial, Helvetica, sans-serif;
|
||||
line-height: 20px;
|
||||
font-size: 12px;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
border: 10px solid #700;
|
||||
padding: 10px 10px 10px;
|
||||
margin: 20px;
|
||||
-webkit-border-radius: 5px;
|
||||
-khtml-border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
#mbError a, #mbError a:link, #mbError a:visited, #mbError a:hover, #mbError a:active {
|
||||
color: #d00;
|
||||
font-weight: bold;
|
||||
text-decoration: underline;
|
||||
}
|
BIN
images/50.gif
Normal file
After Width: | Height: | Size: 77 B |
BIN
images/80.png
Normal file
After Width: | Height: | Size: 146 B |
BIN
images/WhiteLoading.gif
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
images/cannotopen.jpg
Normal file
After Width: | Height: | Size: 9.9 KiB |
BIN
images/close.png
Normal file
After Width: | Height: | Size: 417 B |
BIN
images/filetype_DOCX.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
images/filetype_GZ.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
images/filetype_PDF.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
images/filetype_PPTX.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
images/filetype_RAR.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
images/filetype_TAR.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
images/filetype_XLXS.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
images/filetype_ZIP.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
images/folder_black.png
Normal file
After Width: | Height: | Size: 7.6 KiB |
BIN
images/folder_blue.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
images/folder_green.png
Normal file
After Width: | Height: | Size: 9.6 KiB |
BIN
images/folder_grey.png
Normal file
After Width: | Height: | Size: 8.3 KiB |
BIN
images/folder_purple.png
Normal file
After Width: | Height: | Size: 9.6 KiB |
BIN
images/folder_vista.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
images/loading.gif
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
images/loading2.gif
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
images/loading3.gif
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
images/questionmark.jpg
Normal file
After Width: | Height: | Size: 10 KiB |
409
index.php
Normal file
|
@ -0,0 +1,409 @@
|
|||
<?php
|
||||
/*
|
||||
MINIGAL NANO
|
||||
- A PHP/HTML/CSS based image gallery script
|
||||
|
||||
This script and included files are subject to licensing from Creative Commons (http://creativecommons.org/licenses/by-sa/2.5/)
|
||||
You may use, edit and redistribute this script, as long as you pay tribute to the original author by NOT removing the linkback to www.minigal.dk ("Powered by MiniGal Nano x.x.x")
|
||||
|
||||
MiniGal Nano is created by Thomas Rybak
|
||||
|
||||
Copyright 2010 by Thomas Rybak
|
||||
Support: www.minigal.dk
|
||||
Community: www.minigal.dk/forum
|
||||
|
||||
Please enjoy this free script!
|
||||
*/
|
||||
|
||||
// Do not edit below this section unless you know what you are doing!
|
||||
|
||||
|
||||
//-----------------------
|
||||
// Debug stuff
|
||||
//-----------------------
|
||||
error_reporting(E_ERROR);
|
||||
// error_reporting(E_ALL);
|
||||
// error_reporting(0);
|
||||
/*
|
||||
$mtime = microtime();
|
||||
$mtime = explode(" ",$mtime);
|
||||
$mtime = $mtime[1] + $mtime[0];
|
||||
$starttime = $mtime;
|
||||
*/
|
||||
|
||||
$version = "0.3.5";
|
||||
ini_set("memory_limit","256M");
|
||||
|
||||
require("config_default.php");
|
||||
include("config.php");
|
||||
//-----------------------
|
||||
// DEFINE VARIABLES
|
||||
//-----------------------
|
||||
$page_navigation = "";
|
||||
$breadcrumb_navigation = "";
|
||||
$thumbnails = "";
|
||||
$new = "";
|
||||
$images = "";
|
||||
$exif_data = "";
|
||||
$messages = "";
|
||||
|
||||
//-----------------------
|
||||
// PHP ENVIRONMENT CHECK
|
||||
//-----------------------
|
||||
if (!function_exists('exif_read_data') && $display_exif == 1) {
|
||||
$display_exif = 0;
|
||||
$messages = "Error: PHP EXIF is not available. Set $display_exif = 0; in config.php to remove this message";
|
||||
}
|
||||
|
||||
//-----------------------
|
||||
// FUNCTIONS
|
||||
//-----------------------
|
||||
function is_directory($filepath) {
|
||||
// $filepath must be the entire system path to the file
|
||||
if (!@opendir($filepath)) return FALSE;
|
||||
else {
|
||||
return TRUE;
|
||||
closedir($filepath);
|
||||
}
|
||||
}
|
||||
|
||||
function padstring($name, $length) {
|
||||
global $label_max_length;
|
||||
if (!isset($length)) $length = $label_max_length;
|
||||
if (strlen($name) > $length) {
|
||||
return substr($name,0,$length) . "...";
|
||||
} else return $name;
|
||||
}
|
||||
function getfirstImage($dirname) {
|
||||
$imageName = false;
|
||||
$ext = array("jpg", "png", "jpeg", "gif", "JPG", "PNG", "GIF", "JPEG");
|
||||
if($handle = opendir($dirname))
|
||||
{
|
||||
while(false !== ($file = readdir($handle)))
|
||||
{
|
||||
$lastdot = strrpos($file, '.');
|
||||
$extension = substr($file, $lastdot + 1);
|
||||
if ($file[0] != '.' && in_array($extension, $ext)) break;
|
||||
}
|
||||
$imageName = $file;
|
||||
closedir($handle);
|
||||
}
|
||||
return($imageName);
|
||||
}
|
||||
function readEXIF($file) {
|
||||
$exif_data = "";
|
||||
$exif_idf0 = exif_read_data ($file,'IFD0' ,0 );
|
||||
$emodel = $exif_idf0['Model'];
|
||||
|
||||
$efocal = $exif_idf0['FocalLength'];
|
||||
list($x,$y) = split('/', $efocal);
|
||||
$efocal = round($x/$y,0);
|
||||
|
||||
$exif_exif = exif_read_data ($file,'EXIF' ,0 );
|
||||
$eexposuretime = $exif_exif['ExposureTime'];
|
||||
|
||||
$efnumber = $exif_exif['FNumber'];
|
||||
list($x,$y) = split('/', $efnumber);
|
||||
$efnumber = round($x/$y,0);
|
||||
|
||||
$eiso = $exif_exif['ISOSpeedRatings'];
|
||||
|
||||
$exif_date = exif_read_data ($file,'IFD0' ,0 );
|
||||
$edate = $exif_date['DateTime'];
|
||||
if (strlen($emodel) > 0 OR strlen($efocal) > 0 OR strlen($eexposuretime) > 0 OR strlen($efnumber) > 0 OR strlen($eiso) > 0) $exif_data .= "::";
|
||||
if (strlen($emodel) > 0) $exif_data .= "$emodel";
|
||||
if ($efocal > 0) $exif_data .= " | $efocal" . "mm";
|
||||
if (strlen($eexposuretime) > 0) $exif_data .= " | $eexposuretime" . "s";
|
||||
if ($efnumber > 0) $exif_data .= " | f$efnumber";
|
||||
if (strlen($eiso) > 0) $exif_data .= " | ISO $eiso";
|
||||
return($exif_data);
|
||||
}
|
||||
function checkpermissions($file) {
|
||||
global $messages;
|
||||
if (substr(decoct(fileperms($file)), -1, strlen(fileperms($file))) < 4 OR substr(decoct(fileperms($file)), -3,1) < 4) $messages = "At least one file or folder has wrong permissions. Learn how to <a href='http://minigal.dk/faq-reader/items/how-do-i-change-file-permissions-chmod.html' target='_blank'>set file permissions</a>";
|
||||
}
|
||||
|
||||
//-----------------------
|
||||
// CHECK FOR NEW VERSION
|
||||
//-----------------------
|
||||
if (ini_get('allow_url_fopen') == "1") {
|
||||
$file = @fopen ("http://www.minigal.dk/minigalnano_version.php", "r");
|
||||
$server_version = fgets ($file, 1024);
|
||||
if (strlen($server_version) == 5 ) { //If string retrieved is exactly 5 chars then continue
|
||||
if (version_compare($server_version, $version, '>')) $messages = "MiniGal Nano $server_version is available! <a href='http://www.minigal.dk/minigal-nano.html' target='_blank'>Get it now</a>";
|
||||
}
|
||||
fclose($file);
|
||||
}
|
||||
|
||||
if (!defined("GALLERY_ROOT")) define("GALLERY_ROOT", "");
|
||||
$thumbdir = rtrim('photos' . "/" .$_REQUEST["dir"],"/");
|
||||
$thumbdir = str_replace("/..", "", $thumbdir); // Prevent looking at any up-level folders
|
||||
$currentdir = GALLERY_ROOT . $thumbdir;
|
||||
|
||||
//-----------------------
|
||||
// READ FILES AND FOLDERS
|
||||
//-----------------------
|
||||
$files = array();
|
||||
$dirs = array();
|
||||
if ($handle = opendir($currentdir))
|
||||
{
|
||||
while (false !== ($file = readdir($handle)))
|
||||
{
|
||||
// 1. LOAD FOLDERS
|
||||
if (is_directory($currentdir . "/" . $file))
|
||||
{
|
||||
if ($file != "." && $file != ".." )
|
||||
{
|
||||
checkpermissions($currentdir . "/" . $file); // Check for correct file permission
|
||||
// Set thumbnail to folder.jpg if found:
|
||||
if (file_exists("$currentdir/" . $file . "/folder.jpg"))
|
||||
{
|
||||
$dirs[] = array(
|
||||
"name" => $file,
|
||||
"date" => filemtime($currentdir . "/" . $file . "/folder.jpg"),
|
||||
"html" => "<li><a href='?dir=" .ltrim($_GET['dir'] . "/" . $file, "/") . "'><em>" . padstring($file, $label_max_length) . "</em><span></span><img src='" . GALLERY_ROOT . "createthumb.php?filename=$currentdir/" . $file . "/folder.jpg&size=$thumb_size' alt='$label_loading' /></a></li>");
|
||||
} else
|
||||
{
|
||||
// Set thumbnail to first image found (if any):
|
||||
unset ($firstimage);
|
||||
$firstimage = getfirstImage("$currentdir/" . $file);
|
||||
if ($firstimage != "") {
|
||||
$dirs[] = array(
|
||||
"name" => $file,
|
||||
"date" => filemtime($currentdir . "/" . $file),
|
||||
"html" => "<li><a href='?dir=" . ltrim($_GET['dir'] . "/" . $file, "/") . "'><em>" . padstring($file, $label_max_length) . "</em><span></span><img src='" . GALLERY_ROOT . "createthumb.php?filename=$thumbdir/" . $file . "/" . $firstimage . "&size=$thumb_size' alt='$label_loading' /></a></li>");
|
||||
} else {
|
||||
// If no folder.jpg or image is found, then display default icon:
|
||||
$dirs[] = array(
|
||||
"name" => $file,
|
||||
"date" => filemtime($currentdir . "/" . $file),
|
||||
"html" => "<li><a href='?dir=" . ltrim($_GET['dir'] . "/" . $file, "/") . "'><em>" . padstring($file) . "</em><span></span><img src='" . GALLERY_ROOT . "images/folder_" . strtolower($folder_color) . ".png' width='$thumb_size' height='$thumb_size' alt='$label_loading' /></a></li>");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 2. LOAD CAPTIONS
|
||||
if (file_exists($currentdir ."/captions.txt"))
|
||||
{
|
||||
$file_handle = fopen($currentdir ."/captions.txt", "rb");
|
||||
while (!feof($file_handle) )
|
||||
{
|
||||
$line_of_text = fgets($file_handle);
|
||||
$parts = explode('/n', $line_of_text);
|
||||
foreach($parts as $img_capts)
|
||||
{
|
||||
list($img_filename, $img_caption) = explode('|', $img_capts);
|
||||
$img_captions[$img_filename] = $img_caption;
|
||||
}
|
||||
}
|
||||
fclose($file_handle);
|
||||
}
|
||||
|
||||
// 3. LOAD FILES
|
||||
if ($file != "." && $file != ".." && $file != "folder.jpg")
|
||||
{
|
||||
// JPG, GIF and PNG
|
||||
if (preg_match("/.jpg$|.gif$|.png$/i", $file))
|
||||
{
|
||||
//Read EXIF
|
||||
if ($display_exif == 1) $img_captions[$file] .= readEXIF($currentdir . "/" . $file);
|
||||
|
||||
checkpermissions($currentdir . "/" . $file);
|
||||
$files[] = array (
|
||||
"name" => $file,
|
||||
"date" => filemtime($currentdir . "/" . $file),
|
||||
"size" => filesize($currentdir . "/" . $file),
|
||||
"html" => "<li><a href='" . $currentdir . "/" . $file . "' rel='lightbox[billeder]' title='$img_captions[$file]'><span></span><img src='" . GALLERY_ROOT . "createthumb.php?filename=" . $thumbdir . "/" . $file . "&size=$thumb_size' alt='$label_loading' /></a></li>");
|
||||
}
|
||||
// Other filetypes
|
||||
$extension = "";
|
||||
if (preg_match("/.pdf$/i", $file)) $extension = "PDF"; // PDF
|
||||
if (preg_match("/.zip$/i", $file)) $extension = "ZIP"; // ZIP archive
|
||||
if (preg_match("/.rar$|.r[0-9]{2,}/i", $file)) $extension = "RAR"; // RAR Archive
|
||||
if (preg_match("/.tar$/i", $file)) $extension = "TAR"; // TARball archive
|
||||
if (preg_match("/.gz$/i", $file)) $extension = "GZ"; // GZip archive
|
||||
if (preg_match("/.doc$|.docx$/i", $file)) $extension = "DOCX"; // Word
|
||||
if (preg_match("/.ppt$|.pptx$/i", $file)) $extension = "PPTX"; //Powerpoint
|
||||
if (preg_match("/.xls$|.xlsx$/i", $file)) $extension = "XLXS"; // Excel
|
||||
|
||||
if ($extension != "")
|
||||
{
|
||||
$files[] = array (
|
||||
"name" => $file,
|
||||
"date" => filemtime($currentdir . "/" . $file),
|
||||
"size" => filesize($currentdir . "/" . $file),
|
||||
"html" => "<li><a href='" . $currentdir . "/" . $file . "' title='$file'><em-pdf>" . padstring($file, 20) . "</em-pdf><span></span><img src='" . GALLERY_ROOT . "images/filetype_" . $extension . ".png' width='$thumb_size' height='$thumb_size' alt='$file' /></a></li>");
|
||||
}
|
||||
}
|
||||
}
|
||||
closedir($handle);
|
||||
} else die("ERROR: Could not open $currentdir for reading!");
|
||||
|
||||
//-----------------------
|
||||
// SORT FILES AND FOLDERS
|
||||
//-----------------------
|
||||
if (sizeof($dirs) > 0)
|
||||
{
|
||||
foreach ($dirs as $key => $row)
|
||||
{
|
||||
if($row["name"] == "") unset($dirs[$key]); //Delete empty array entries
|
||||
$name[$key] = strtolower($row['name']);
|
||||
$date[$key] = strtolower($row['date']);
|
||||
}
|
||||
if (strtoupper($sortdir_folders) == "DESC") array_multisort($$sorting_folders, SORT_DESC, $name, SORT_DESC, $dirs);
|
||||
else array_multisort($$sorting_folders, SORT_ASC, $name, SORT_ASC, $dirs);
|
||||
}
|
||||
if (sizeof($files) > 0)
|
||||
{
|
||||
foreach ($files as $key => $row)
|
||||
{
|
||||
if($row["name"] == "") unset($files[$key]); //Delete empty array entries
|
||||
$name[$key] = strtolower($row['name']);
|
||||
$date[$key] = strtolower($row['date']);
|
||||
$size[$key] = strtolower($row['size']);
|
||||
}
|
||||
if (strtoupper($sortdir_files) == "DESC") array_multisort($$sorting_files, SORT_DESC, $name, SORT_ASC, $files);
|
||||
else array_multisort($$sorting_files, SORT_ASC, $name, SORT_ASC, $files);
|
||||
}
|
||||
|
||||
//-----------------------
|
||||
// OFFSET DETERMINATION
|
||||
//-----------------------
|
||||
$offset_start = ($_GET["page"] * $thumbs_pr_page) - $thumbs_pr_page;
|
||||
if (!isset($_GET["page"])) $offset_start = 0;
|
||||
$offset_end = $offset_start + $thumbs_pr_page;
|
||||
if ($offset_end > sizeof($dirs) + sizeof($files)) $offset_end = sizeof($dirs) + sizeof($files);
|
||||
|
||||
if ($_GET["page"] == "all")
|
||||
{
|
||||
$offset_start = 0;
|
||||
$offset_end = sizeof($dirs) + sizeof($files);
|
||||
}
|
||||
|
||||
//-----------------------
|
||||
// PAGE NAVIGATION
|
||||
//-----------------------
|
||||
if (!isset($_GET["page"])) $_GET["page"] = 1;
|
||||
if (sizeof($dirs) + sizeof($files) > $thumbs_pr_page)
|
||||
{
|
||||
$page_navigation .= "$label_page ";
|
||||
for ($i=1; $i <= ceil((sizeof($files) + sizeof($dirs)) / $thumbs_pr_page); $i++)
|
||||
{
|
||||
if ($_GET["page"] == $i)
|
||||
$page_navigation .= "$i";
|
||||
else
|
||||
$page_navigation .= "<a href='?dir=" . $_GET["dir"] . "&page=" . ($i) . "'>" . $i . "</a>";
|
||||
if ($i != ceil((sizeof($files) + sizeof($dirs)) / $thumbs_pr_page)) $page_navigation .= " | ";
|
||||
}
|
||||
//Insert link to view all images
|
||||
if ($_GET["page"] == "all") $page_navigation .= " | $label_all";
|
||||
else $page_navigation .= " | <a href='?dir=" . $_GET["dir"] . "&page=all'>$label_all</a>";
|
||||
}
|
||||
|
||||
//-----------------------
|
||||
// BREADCRUMB NAVIGATION
|
||||
//-----------------------
|
||||
if ($_GET['dir'] != "")
|
||||
{
|
||||
$breadcrumb_navigation .= "<a href='?dir='>" . $label_home . "</a> > ";
|
||||
$navitems = explode("/", $_REQUEST['dir']);
|
||||
for($i = 0; $i < sizeof($navitems); $i++)
|
||||
{
|
||||
if ($i == sizeof($navitems)-1) $breadcrumb_navigation .= $navitems[$i];
|
||||
else
|
||||
{
|
||||
$breadcrumb_navigation .= "<a href='?dir=";
|
||||
for ($x = 0; $x <= $i; $x++)
|
||||
{
|
||||
$breadcrumb_navigation .= $navitems[$x];
|
||||
if ($x < $i) $breadcrumb_navigation .= "/";
|
||||
}
|
||||
$breadcrumb_navigation .= "'>" . $navitems[$i] . "</a> > ";
|
||||
}
|
||||
}
|
||||
} else $breadcrumb_navigation .= $label_home;
|
||||
|
||||
//Include hidden links for all images BEFORE current page so lightbox is able to browse images on different pages
|
||||
for ($y = 0; $y < $offset_start - sizeof($dirs); $y++)
|
||||
{
|
||||
$breadcrumb_navigation .= "<a href='" . $currentdir . "/" . $files[$y]["name"] . "' rel='lightbox[billeder]' class='hidden' title='" . $img_captions[$files[$y]["name"]] . "'></a>";
|
||||
}
|
||||
|
||||
//-----------------------
|
||||
// DISPLAY FOLDERS
|
||||
//-----------------------
|
||||
if (count($dirs) + count($files) == 0) {
|
||||
$thumbnails .= "<li>$label_noimages</li>"; //Display 'no images' text
|
||||
if($currentdir == "photos") $messages = "It looks like you have just installed MiniGal Nano. Please run the <a href='system_check.php'>system check tool</a>";
|
||||
}
|
||||
$offset_current = $offset_start;
|
||||
for ($x = $offset_start; $x < sizeof($dirs) && $x < $offset_end; $x++)
|
||||
{
|
||||
$offset_current++;
|
||||
$thumbnails .= $dirs[$x]["html"];
|
||||
}
|
||||
|
||||
//-----------------------
|
||||
// DISPLAY FILES
|
||||
//-----------------------
|
||||
for ($i = $offset_start - sizeof($dirs); $i < $offset_end && $offset_current < $offset_end; $i++)
|
||||
{
|
||||
if ($i >= 0)
|
||||
{
|
||||
$offset_current++;
|
||||
$thumbnails .= $files[$i]["html"];
|
||||
}
|
||||
}
|
||||
|
||||
//Include hidden links for all images AFTER current page so lightbox is able to browse images on different pages
|
||||
for ($y = $i; $y < sizeof($files); $y++)
|
||||
{
|
||||
$page_navigation .= "<a href='" . $currentdir . "/" . $files[$y]["name"] . "' rel='lightbox[billeder]' class='hidden' title='" . $img_captions[$files[$y]["name"]] . "'></a>";
|
||||
}
|
||||
|
||||
//-----------------------
|
||||
// OUTPUT MESSAGES
|
||||
//-----------------------
|
||||
if ($messages != "") {
|
||||
$messages = "<div id=\"topbar\">" . $messages . " <a href=\"#\" onclick=\"document.getElementById('topbar').style.display = 'none';\";><img src=\"images/close.png\" /></a></div>";
|
||||
}
|
||||
|
||||
//PROCESS TEMPLATE FILE
|
||||
if(GALLERY_ROOT != "") $templatefile = GALLERY_ROOT . "templates/integrate.html";
|
||||
else $templatefile = "templates/" . $templatefile . ".html";
|
||||
if(!$fd = fopen($templatefile, "r"))
|
||||
{
|
||||
echo "Template $templatefile not found!";
|
||||
exit();
|
||||
}
|
||||
else
|
||||
{
|
||||
$template = fread ($fd, filesize ($templatefile));
|
||||
fclose ($fd);
|
||||
$template = stripslashes($template);
|
||||
$template = preg_replace("/<% title %>/", $title, $template);
|
||||
$template = preg_replace("/<% messages %>/", $messages, $template);
|
||||
$template = preg_replace("/<% author %>/", $author, $template);
|
||||
$template = preg_replace("/<% gallery_root %>/", GALLERY_ROOT, $template);
|
||||
$template = preg_replace("/<% images %>/", "$images", $template);
|
||||
$template = preg_replace("/<% thumbnails %>/", "$thumbnails", $template);
|
||||
$template = preg_replace("/<% breadcrumb_navigation %>/", "$breadcrumb_navigation", $template);
|
||||
$template = preg_replace("/<% page_navigation %>/", "$page_navigation", $template);
|
||||
$template = preg_replace("/<% bgcolor %>/", "$backgroundcolor", $template);
|
||||
$template = preg_replace("/<% gallery_width %>/", "$gallery_width", $template);
|
||||
$template = preg_replace("/<% version %>/", "$version", $template);
|
||||
echo "$template";
|
||||
}
|
||||
|
||||
//-----------------------
|
||||
//Debug stuff
|
||||
//-----------------------
|
||||
/* $mtime = microtime();
|
||||
$mtime = explode(" ",$mtime);
|
||||
$mtime = $mtime[1] + $mtime[0];
|
||||
$endtime = $mtime;
|
||||
$totaltime = ($endtime - $starttime);
|
||||
echo "This page was created in ".$totaltime." seconds";
|
||||
*/
|
||||
?>
|
7
integrate.php
Normal file
|
@ -0,0 +1,7 @@
|
|||
<?php
|
||||
$path_to_minigalnano = "minigalnano/"; // <- Enter RELATIVE path to MiniGal Nano here (eg. "subfolder/minigalnano") - DO NOT END WITH /
|
||||
|
||||
// DO NOT EDIT BELOW THIS LINE!
|
||||
define("GALLERY_ROOT", $path_to_minigalnano);
|
||||
require(GALLERY_ROOT . "index.php");
|
||||
?>
|
956
js/mediaboxAdv-1.3.4b.js
Normal file
|
@ -0,0 +1,956 @@
|
|||
/*
|
||||
mediaboxAdvanced v1.3.4b - The ultimate extension of Slimbox and Mediabox; an all-media script
|
||||
updated 2010.09.21
|
||||
(c) 2007-2010 John Einselen <http://iaian7.com>
|
||||
based on Slimbox v1.64 - The ultimate lightweight Lightbox clone
|
||||
(c) 2007-2008 Christophe Beyls <http://www.digitalia.be>
|
||||
MIT-style license.
|
||||
*/
|
||||
|
||||
var Mediabox;
|
||||
|
||||
(function() {
|
||||
// Global variables, accessible to Mediabox only
|
||||
var options, images, activeImage, prevImage, nextImage, top, mTop, left, mLeft, winWidth, winHeight, fx, preload, preloadPrev = new Image(), preloadNext = new Image(), foxfix = false, iefix = false,
|
||||
// DOM elements
|
||||
overlay, center, image, bottom, captionSplit, title, caption, prevLink, number, nextLink,
|
||||
// Mediabox specific vars
|
||||
URL, WH, WHL, elrel, mediaWidth, mediaHeight, mediaType = "none", mediaSplit, mediaId = "mediaBox", mediaFmt, margin;
|
||||
|
||||
/* Initialization */
|
||||
|
||||
window.addEvent("domready", function() {
|
||||
// Create and append the Mediabox HTML code at the bottom of the document
|
||||
document.id(document.body).adopt(
|
||||
$$([
|
||||
overlay = new Element("div", {id: "mbOverlay"}).addEvent("click", close),
|
||||
center = new Element("div", {id: "mbCenter"})
|
||||
]).setStyle("display", "none")
|
||||
);
|
||||
|
||||
image = new Element("div", {id: "mbImage"}).injectInside(center);
|
||||
bottom = new Element("div", {id: "mbBottom"}).injectInside(center).adopt(
|
||||
closeLink = new Element("a", {id: "mbCloseLink", href: "#"}).addEvent("click", close),
|
||||
nextLink = new Element("a", {id: "mbNextLink", href: "#"}).addEvent("click", next),
|
||||
prevLink = new Element("a", {id: "mbPrevLink", href: "#"}).addEvent("click", previous),
|
||||
title = new Element("div", {id: "mbTitle"}),
|
||||
number = new Element("div", {id: "mbNumber"}),
|
||||
caption = new Element("div", {id: "mbCaption"})
|
||||
);
|
||||
|
||||
fx = {
|
||||
overlay: new Fx.Tween(overlay, {property: "opacity", duration: 360}).set(0),
|
||||
image: new Fx.Tween(image, {property: "opacity", duration: 360, onComplete: captionAnimate}),
|
||||
bottom: new Fx.Tween(bottom, {property: "opacity", duration: 240}).set(0)
|
||||
};
|
||||
});
|
||||
|
||||
/* API */
|
||||
|
||||
Mediabox = {
|
||||
close: function(){
|
||||
close(); // Thanks to Yosha on the google group for fixing the close function API!
|
||||
},
|
||||
|
||||
open: function(_images, startImage, _options) {
|
||||
options = $extend({
|
||||
text: ['<big>«</big>','<big>»</big>','<big>×</big>'], // Set "previous", "next", and "close" button content (HTML code should be written as entity codes or properly escaped)
|
||||
// text: ['<big>«</big>','<big>»</big>','<big>×</big>'], // Set "previous", "next", and "close" button content (HTML code should be written as entity codes or properly escaped)
|
||||
// example text: ['<b>P</b>rev','<b>N</b>ext','<b>C</b>lose'],
|
||||
loop: true, // Allows to navigate between first and last images
|
||||
keyboard: true, // Enables keyboard control; escape key, left arrow, and right arrow
|
||||
alpha: true, // Adds 'x', 'c', 'p', and 'n' when keyboard control is also set to true
|
||||
stopKey: false, // Stops all default keyboard actions while overlay is open (such as up/down arrows)
|
||||
// Does not apply to iFrame content, does not affect mouse scrolling
|
||||
overlayOpacity: 0.7, // 1 is opaque, 0 is completely transparent (change the color in the CSS file)
|
||||
resizeOpening: true, // Determines if box opens small and grows (true) or starts at larger size (false)
|
||||
resizeDuration: 240, // Duration of each of the box resize animations (in milliseconds)
|
||||
resizeTransition: false, // Mootools transition effect (false leaves it at the default)
|
||||
initialWidth: 320, // Initial width of the box (in pixels)
|
||||
initialHeight: 180, // Initial height of the box (in pixels)
|
||||
defaultWidth: 640, // Default width of the box (in pixels) for undefined media (MP4, FLV, etc.)
|
||||
defaultHeight: 360, // Default height of the box (in pixels) for undefined media (MP4, FLV, etc.)
|
||||
showCaption: true, // Display the title and caption, true / false
|
||||
showCounter: true, // If true, a counter will only be shown if there is more than 1 image to display
|
||||
counterText: '({x} / {y})', // Translate or change as you wish
|
||||
// Image options
|
||||
imgBackground: false, // Embed images as CSS background (true) or <img> tag (false)
|
||||
// CSS background is naturally non-clickable, preventing downloads
|
||||
// IMG tag allows automatic scaling for smaller screens
|
||||
// (all images have no-click code applied, albeit not Opera compatible. To remove, comment lines 212 and 822)
|
||||
imgPadding: 100, // Clearance necessary for images larger than the window size (only used when imgBackground is false)
|
||||
// Change this number only if the CSS style is significantly divergent from the original, and requires different sizes
|
||||
// Inline options
|
||||
// overflow: 'auto', // If set, overides CSS settings for inline content only
|
||||
// Global media options
|
||||
html5: 'true', // HTML5 settings for YouTube and Vimeo, false = off, true = on
|
||||
scriptaccess: 'true', // Allow script access to flash files
|
||||
fullscreen: 'true', // Use fullscreen
|
||||
fullscreenNum: '1', // 1 = true
|
||||
autoplay: 'true', // Plays the video as soon as it's opened
|
||||
autoplayNum: '1', // 1 = true
|
||||
autoplayYes: 'yes', // yes = true
|
||||
volume: '100', // 0-100, used for NonverBlaster and Quicktime players
|
||||
medialoop: 'true', // Loop video playback, true / false, used for NonverBlaster and Quicktime players
|
||||
bgcolor: '#000000', // Background color, used for flash and QT media
|
||||
wmode: 'opaque', // Background setting for Adobe Flash ('opaque' and 'transparent' are most common)
|
||||
// NonverBlaster
|
||||
useNB: true, // use NonverBlaster (true) or JW Media Player (false) for .flv and .mp4 files
|
||||
playerpath: '/js/NonverBlaster.swf', // Path to NonverBlaster.swf
|
||||
controlColor: '0xFFFFFF', // set the controlbar color
|
||||
controlBackColor: '0x000000', // set the controlbar color
|
||||
showTimecode: 'false', // turn timecode display off or on
|
||||
// JW Media Player settings and options
|
||||
JWplayerpath: '/js/player.swf', // Path to the mediaplayer.swf or flvplayer.swf file
|
||||
backcolor: '000000', // Base color for the controller, color name / hex value (0x000000)
|
||||
frontcolor: '999999', // Text and button color for the controller, color name / hex value (0x000000)
|
||||
lightcolor: '000000', // Rollover color for the controller, color name / hex value (0x000000)
|
||||
screencolor: '000000', // Rollover color for the controller, color name / hex value (0x000000)
|
||||
controlbar: 'over', // bottom, over, none (this setting is ignored when playing audio files)
|
||||
// Quicktime options
|
||||
controller: 'true', // Show controller, true / false
|
||||
// Flickr options
|
||||
flInfo: 'true', // Show title and info at video start
|
||||
// Revver options
|
||||
revverID: '187866', // Revver affiliate ID, required for ad revinue sharing
|
||||
revverFullscreen: 'true', // Fullscreen option
|
||||
revverBack: '000000', // Background color
|
||||
revverFront: 'ffffff', // Foreground color
|
||||
revverGrad: '000000', // Gradation color
|
||||
// Ustream options
|
||||
usViewers: 'true', // Show online viewer count (true/false)
|
||||
// Youtube options
|
||||
ytBorder: '0', // Outline (1=true, 0=false)
|
||||
ytColor1: '000000', // Outline color
|
||||
ytColor2: '333333', // Base interface color (highlight colors stay consistent)
|
||||
ytQuality: '&ap=%2526fmt%3D18', // Leave empty for standard quality, use '&ap=%2526fmt%3D18' for high quality, and '&ap=%2526fmt%3D22' for HD (note that not all videos are availible in high quality, and very few in HD)
|
||||
ytRel: '0', // Show related videos (1=true, 0=false)
|
||||
ytInfo: '1', // Show video info (1=true, 0=false)
|
||||
ytSearch: '0', // Show search field (1=true, 0=false)
|
||||
// Viddyou options
|
||||
vuPlayer: 'basic', // Use 'full' or 'basic' players
|
||||
// Vimeo options
|
||||
vmTitle: '1', // Show video title
|
||||
vmByline: '1', // Show byline
|
||||
vmPortrait: '1', // Show author portrait
|
||||
vmColor: 'ffffff' // Custom controller colors, hex value minus the # sign, defult is 5ca0b5
|
||||
}, _options || {});
|
||||
|
||||
prevLink.set('html', options.text[0]);
|
||||
nextLink.set('html', options.text[1]);
|
||||
closeLink.set('html', options.text[2]);
|
||||
|
||||
margin = center.getStyle('padding-left').toInt()+image.getStyle('margin-left').toInt()+image.getStyle('padding-left').toInt();
|
||||
|
||||
if ((Browser.Engine.gecko) && (Browser.Engine.version<19)) { // Fixes Firefox 2 and Camino 1.6 incompatibility with opacity + flash
|
||||
foxfix = true;
|
||||
options.overlayOpacity = 1;
|
||||
overlay.className = 'mbOverlayFF';
|
||||
}
|
||||
|
||||
if ((Browser.Engine.trident) && (Browser.Engine.version<5)) { // Fixes IE 6 and earlier incompatibilities with CSS position: fixed;
|
||||
iefix = true;
|
||||
overlay.className = 'mbOverlayIE';
|
||||
overlay.setStyle("position", "absolute");
|
||||
position();
|
||||
}
|
||||
|
||||
if (typeof _images == "string") { // Used for single images only, with URL and Title as first two arguments
|
||||
_images = [[_images,startImage,_options]];
|
||||
startImage = 0;
|
||||
}
|
||||
|
||||
images = _images;
|
||||
options.loop = options.loop && (images.length > 1);
|
||||
|
||||
size();
|
||||
setup(true);
|
||||
top = window.getScrollTop() + (window.getHeight()/2);
|
||||
left = window.getScrollLeft() + (window.getWidth()/2);
|
||||
fx.resize = new Fx.Morph(center, $extend({duration: options.resizeDuration, onComplete: imageAnimate}, options.resizeTransition ? {transition: options.resizeTransition} : {}));
|
||||
center.setStyles({top: top, left: left, width: options.initialWidth, height: options.initialHeight, marginTop: -(options.initialHeight/2)-margin, marginLeft: -(options.initialWidth/2)-margin, display: ""});
|
||||
fx.overlay.start(options.overlayOpacity);
|
||||
return changeImage(startImage);
|
||||
}
|
||||
};
|
||||
|
||||
Element.implement({
|
||||
mediabox: function(_options, linkMapper) {
|
||||
$$(this).mediabox(_options, linkMapper); // The processing of a single element is similar to the processing of a collection with a single element
|
||||
|
||||
return this;
|
||||
}
|
||||
});
|
||||
|
||||
Elements.implement({
|
||||
/*
|
||||
options: Optional options object, see Mediabox.open()
|
||||
linkMapper: Optional function taking a link DOM element and an index as arguments and returning an array containing 3 elements:
|
||||
the image URL and the image caption (may contain HTML)
|
||||
linksFilter:Optional function taking a link DOM element and an index as arguments and returning true if the element is part of
|
||||
the image collection that will be shown on click, false if not. "this" refers to the element that was clicked.
|
||||
This function must always return true when the DOM element argument is "this".
|
||||
*/
|
||||
mediabox: function(_options, linkMapper, linksFilter) {
|
||||
linkMapper = linkMapper || function(el) {
|
||||
elrel = el.rel.split(/[\[\]]/);
|
||||
elrel = elrel[1];
|
||||
return [el.href, el.title, elrel];
|
||||
};
|
||||
|
||||
linksFilter = linksFilter || function() {
|
||||
return true;
|
||||
};
|
||||
|
||||
var links = this;
|
||||
|
||||
links.addEvent('contextmenu', function(e){
|
||||
if (this.toString().match(/\.gif|\.jpg|\.jpeg|\.png/i)) e.stop();
|
||||
});
|
||||
|
||||
links.removeEvents("click").addEvent("click", function() {
|
||||
// Build the list of images that will be displayed
|
||||
var filteredArray = links.filter(linksFilter, this);
|
||||
var filteredLinks = [];
|
||||
var filteredHrefs = [];
|
||||
|
||||
filteredArray.each(function(item, index){
|
||||
if(filteredHrefs.indexOf(item.toString()) < 0) {
|
||||
filteredLinks.include(filteredArray[index]);
|
||||
filteredHrefs.include(filteredArray[index].toString());
|
||||
};
|
||||
});
|
||||
|
||||
return Mediabox.open(filteredLinks.map(linkMapper), filteredHrefs.indexOf(this.toString()), _options);
|
||||
});
|
||||
|
||||
return links;
|
||||
}
|
||||
});
|
||||
|
||||
/* Internal functions */
|
||||
|
||||
function position() {
|
||||
overlay.setStyles({top: window.getScrollTop(), left: window.getScrollLeft()});
|
||||
}
|
||||
|
||||
function size() {
|
||||
winWidth = window.getWidth();
|
||||
winHeight = window.getHeight();
|
||||
overlay.setStyles({width: winWidth, height: winHeight});
|
||||
}
|
||||
|
||||
function setup(open) {
|
||||
// Hides on-page objects and embeds while the overlay is open, nessesary to counteract Firefox stupidity
|
||||
if (Browser.Engine.gecko) {
|
||||
["object", window.ie ? "select" : "embed"].forEach(function(tag) {
|
||||
Array.forEach(document.getElementsByTagName(tag), function(el) {
|
||||
if (open) el._mediabox = el.style.visibility;
|
||||
el.style.visibility = open ? "hidden" : el._mediabox;
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
overlay.style.display = open ? "" : "none";
|
||||
|
||||
var fn = open ? "addEvent" : "removeEvent";
|
||||
if (iefix) window[fn]("scroll", position);
|
||||
window[fn]("resize", size);
|
||||
if (options.keyboard) document[fn]("keydown", keyDown);
|
||||
}
|
||||
|
||||
function keyDown(event) {
|
||||
if (options.alpha) {
|
||||
switch(event.code) {
|
||||
case 27: // Esc
|
||||
case 88: // 'x'
|
||||
case 67: // 'c'
|
||||
close();
|
||||
break;
|
||||
case 37: // Left arrow
|
||||
case 80: // 'p'
|
||||
previous();
|
||||
break;
|
||||
case 39: // Right arrow
|
||||
case 78: // 'n'
|
||||
next();
|
||||
}
|
||||
} else {
|
||||
switch(event.code) {
|
||||
case 27: // Esc
|
||||
close();
|
||||
break;
|
||||
case 37: // Left arrow
|
||||
previous();
|
||||
break;
|
||||
case 39: // Right arrow
|
||||
next();
|
||||
}
|
||||
}
|
||||
if (options.stopKey) { return false; };
|
||||
}
|
||||
|
||||
function previous() {
|
||||
return changeImage(prevImage);
|
||||
}
|
||||
|
||||
function next() {
|
||||
return changeImage(nextImage);
|
||||
}
|
||||
|
||||
function changeImage(imageIndex) {
|
||||
if (imageIndex >= 0) {
|
||||
image.set('html', '');
|
||||
activeImage = imageIndex;
|
||||
prevImage = ((activeImage || !options.loop) ? activeImage : images.length) - 1;
|
||||
nextImage = activeImage + 1;
|
||||
if (nextImage == images.length) nextImage = options.loop ? 0 : -1;
|
||||
stop();
|
||||
center.className = "mbLoading";
|
||||
|
||||
/* mediaboxAdvanced link formatting and media support */
|
||||
|
||||
if (!images[imageIndex][2]) images[imageIndex][2] = ''; // Thanks to Leo Feyer for offering this fix
|
||||
WH = images[imageIndex][2].split(' ');
|
||||
WHL = WH.length;
|
||||
if (WHL>1) {
|
||||
mediaWidth = (WH[WHL-2].match("%")) ? (window.getWidth()*((WH[WHL-2].replace("%", ""))*0.01))+"px" : WH[WHL-2]+"px";
|
||||
mediaHeight = (WH[WHL-1].match("%")) ? (window.getHeight()*((WH[WHL-1].replace("%", ""))*0.01))+"px" : WH[WHL-1]+"px";
|
||||
} else {
|
||||
mediaWidth = "";
|
||||
mediaHeight = "";
|
||||
}
|
||||
URL = images[imageIndex][0];
|
||||
// URL = encodeURI(URL).replace("(","%28").replace(")","%29");
|
||||
captionSplit = images[activeImage][1].split('::');
|
||||
|
||||
// Quietube and yFrog support
|
||||
if (URL.match(/quietube\.com/i)) {
|
||||
mediaSplit = URL.split('v.php/');
|
||||
URL = mediaSplit[1];
|
||||
} else if (URL.match(/\/\/yfrog/i)) {
|
||||
mediaType = (URL.substring(URL.length-1));
|
||||
if (mediaType.match(/b|g|j|p|t/i)) mediaType = 'image';
|
||||
if (mediaType == 's') mediaType = 'flash';
|
||||
if (mediaType.match(/f|z/i)) mediaType = 'video';
|
||||
URL = URL+":iphone";
|
||||
}
|
||||
|
||||
/* Specific Media Types */
|
||||
|
||||
// GIF, JPG, PNG
|
||||
if (URL.match(/\.gif|\.jpg|\.jpeg|\.png|twitpic\.com/i) || mediaType == 'image') {
|
||||
mediaType = 'img';
|
||||
URL = URL.replace(/twitpic\.com/i, "twitpic.com/show/full");
|
||||
preload = new Image();
|
||||
preload.onload = startEffect;
|
||||
preload.src = URL;
|
||||
// FLV, MP4
|
||||
} else if (URL.match(/\.flv|\.mp4/i) || mediaType == 'video') {
|
||||
mediaType = 'obj';
|
||||
mediaWidth = mediaWidth || options.defaultWidth;
|
||||
mediaHeight = mediaHeight || options.defaultHeight;
|
||||
if (options.useNB) {
|
||||
preload = new Swiff(''+options.playerpath+'?mediaURL='+URL+'&allowSmoothing=true&autoPlay='+options.autoplay+'&buffer=6&showTimecode='+options.showTimecode+'&loop='+options.medialoop+'&controlColor='+options.controlColor+'&controlBackColor='+options.controlBackColor+'&defaultVolume='+options.volume+'&scaleIfFullScreen=true&showScalingButton=true&crop=false', {
|
||||
id: 'MediaboxSWF',
|
||||
width: mediaWidth,
|
||||
height: mediaHeight,
|
||||
params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen}
|
||||
});
|
||||
} else {
|
||||
preload = new Swiff(''+options.JWplayerpath+'?file='+URL+'&backcolor='+options.backcolor+'&frontcolor='+options.frontcolor+'&lightcolor='+options.lightcolor+'&screencolor='+options.screencolor+'&autostart='+options.autoplay+'&controlbar='+options.controlbar, {
|
||||
id: 'MediaboxSWF',
|
||||
width: mediaWidth,
|
||||
height: mediaHeight,
|
||||
params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen}
|
||||
});
|
||||
}
|
||||
startEffect();
|
||||
// MP3, AAC
|
||||
} else if (URL.match(/\.mp3|\.aac|tweetmic\.com|tmic\.fm/i) || mediaType == 'audio') {
|
||||
mediaType = 'obj';
|
||||
mediaWidth = mediaWidth || options.defaultWidth;
|
||||
mediaHeight = mediaHeight || "20px";
|
||||
if (URL.match(/tweetmic\.com|tmic\.fm/i)) {
|
||||
URL = URL.split('/');
|
||||
URL[4] = URL[4] || URL[3];
|
||||
URL = "http://media4.fjarnet.net/tweet/tweetmicapp-"+URL[4]+'.mp3';
|
||||
}
|
||||
if (options.useNB) {
|
||||
preload = new Swiff(''+options.playerpath+'?mediaURL='+URL+'&allowSmoothing=true&autoPlay='+options.autoplay+'&buffer=6&showTimecode='+options.showTimecode+'&loop='+options.medialoop+'&controlColor='+options.controlColor+'&controlBackColor='+options.controlBackColor+'&defaultVolume='+options.volume+'&scaleIfFullScreen=true&showScalingButton=true&crop=false', {
|
||||
id: 'MediaboxSWF',
|
||||
width: mediaWidth,
|
||||
height: mediaHeight,
|
||||
params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen}
|
||||
});
|
||||
} else {
|
||||
preload = new Swiff(''+options.JWplayerpath+'?file='+URL+'&backcolor='+options.backcolor+'&frontcolor='+options.frontcolor+'&lightcolor='+options.lightcolor+'&screencolor='+options.screencolor+'&autostart='+options.autoplay, {
|
||||
id: 'MediaboxSWF',
|
||||
width: mediaWidth,
|
||||
height: mediaHeight,
|
||||
params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen}
|
||||
});
|
||||
}
|
||||
startEffect();
|
||||
// SWF
|
||||
} else if (URL.match(/\.swf/i) || mediaType == 'flash') {
|
||||
mediaType = 'obj';
|
||||
mediaWidth = mediaWidth || options.defaultWidth;
|
||||
mediaHeight = mediaHeight || options.defaultHeight;
|
||||
preload = new Swiff(URL, {
|
||||
id: 'MediaboxSWF',
|
||||
width: mediaWidth,
|
||||
height: mediaHeight,
|
||||
params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen}
|
||||
});
|
||||
startEffect();
|
||||
// MOV, M4V, M4A, MP4, AIFF, etc.
|
||||
} else if (URL.match(/\.mov|\.m4v|\.m4a|\.aiff|\.avi|\.caf|\.dv|\.mid|\.m3u|\.mp3|\.mp2|\.mp4|\.qtz/i) || mediaType == 'qt') {
|
||||
mediaType = 'qt';
|
||||
mediaWidth = mediaWidth || options.defaultWidth;
|
||||
mediaHeight = (parseInt(mediaHeight)+16)+"px" || options.defaultHeight;
|
||||
preload = new Quickie(URL, {
|
||||
id: 'MediaboxQT',
|
||||
width: mediaWidth,
|
||||
height: mediaHeight,
|
||||
container: 'mbImage',
|
||||
attributes: {controller: options.controller, autoplay: options.autoplay, volume: options.volume, loop: options.medialoop, bgcolor: options.bgcolor}
|
||||
});
|
||||
startEffect();
|
||||
|
||||
/* Social Media Sites */
|
||||
|
||||
// Blip.tv
|
||||
} else if (URL.match(/blip\.tv/i)) {
|
||||
mediaType = 'obj';
|
||||
mediaWidth = mediaWidth || "640px";
|
||||
mediaHeight = mediaHeight || "390px";
|
||||
preload = new Swiff(URL, {
|
||||
src: URL,
|
||||
width: mediaWidth,
|
||||
height: mediaHeight,
|
||||
params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen}
|
||||
});
|
||||
startEffect();
|
||||
// Break.com
|
||||
} else if (URL.match(/break\.com/i)) {
|
||||
mediaType = 'obj';
|
||||
mediaWidth = mediaWidth || "464px";
|
||||
mediaHeight = mediaHeight || "376px";
|
||||
mediaId = URL.match(/\d{6}/g);
|
||||
preload = new Swiff('http://embed.break.com/'+mediaId, {
|
||||
width: mediaWidth,
|
||||
height: mediaHeight,
|
||||
params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen}
|
||||
});
|
||||
startEffect();
|
||||
// DailyMotion
|
||||
} else if (URL.match(/dailymotion\.com/i)) {
|
||||
mediaType = 'obj';
|
||||
mediaWidth = mediaWidth || "480px";
|
||||
mediaHeight = mediaHeight || "381px";
|
||||
preload = new Swiff(URL, {
|
||||
id: mediaId,
|
||||
width: mediaWidth,
|
||||
height: mediaHeight,
|
||||
params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen}
|
||||
});
|
||||
startEffect();
|
||||
// Facebook
|
||||
} else if (URL.match(/facebook\.com/i)) {
|
||||
mediaType = 'obj';
|
||||
mediaWidth = mediaWidth || "320px";
|
||||
mediaHeight = mediaHeight || "240px";
|
||||
mediaSplit = URL.split('v=');
|
||||
mediaSplit = mediaSplit[1].split('&');
|
||||
mediaId = mediaSplit[0];
|
||||
preload = new Swiff('http://www.facebook.com/v/'+mediaId, {
|
||||
movie: 'http://www.facebook.com/v/'+mediaId,
|
||||
classid: 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000',
|
||||
width: mediaWidth,
|
||||
height: mediaHeight,
|
||||
params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen}
|
||||
});
|
||||
startEffect();
|
||||
// Flickr
|
||||
} else if (URL.match(/flickr\.com/i)) {
|
||||
mediaType = 'obj';
|
||||
mediaWidth = mediaWidth || "500px";
|
||||
mediaHeight = mediaHeight || "375px";
|
||||
mediaSplit = URL.split('/');
|
||||
mediaId = mediaSplit[5];
|
||||
preload = new Swiff('http://www.flickr.com/apps/video/stewart.swf', {
|
||||
id: mediaId,
|
||||
classid: 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000',
|
||||
width: mediaWidth,
|
||||
height: mediaHeight,
|
||||
params: {flashvars: 'photo_id='+mediaId+'&show_info_box='+options.flInfo, wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen}
|
||||
});
|
||||
startEffect();
|
||||
// GameTrailers Video
|
||||
} else if (URL.match(/gametrailers\.com/i)) {
|
||||
mediaType = 'obj';
|
||||
mediaWidth = mediaWidth || "480px";
|
||||
mediaHeight = mediaHeight || "392px";
|
||||
mediaId = URL.match(/\d{5}/g);
|
||||
preload = new Swiff('http://www.gametrailers.com/remote_wrap.php?mid='+mediaId, {
|
||||
id: mediaId,
|
||||
width: mediaWidth,
|
||||
height: mediaHeight,
|
||||
params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen}
|
||||
});
|
||||
startEffect();
|
||||
// Google Video
|
||||
} else if (URL.match(/google\.com\/videoplay/i)) {
|
||||
mediaType = 'obj';
|
||||
mediaWidth = mediaWidth || "400px";
|
||||
mediaHeight = mediaHeight || "326px";
|
||||
mediaSplit = URL.split('=');
|
||||
mediaId = mediaSplit[1];
|
||||
preload = new Swiff('http://video.google.com/googleplayer.swf?docId='+mediaId+'&autoplay='+options.autoplayNum, {
|
||||
id: mediaId,
|
||||
width: mediaWidth,
|
||||
height: mediaHeight,
|
||||
params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen}
|
||||
});
|
||||
startEffect();
|
||||
// Megavideo - Thanks to Robert Jandreu for suggesting this code!
|
||||
} else if (URL.match(/megavideo\.com/i)) {
|
||||
mediaType = 'obj';
|
||||
mediaWidth = mediaWidth || "640px";
|
||||
mediaHeight = mediaHeight || "360px";
|
||||
mediaSplit = URL.split('=');
|
||||
mediaId = mediaSplit[1];
|
||||
preload = new Swiff('http://wwwstatic.megavideo.com/mv_player.swf?v='+mediaId, {
|
||||
id: mediaId,
|
||||
width: mediaWidth,
|
||||
height: mediaHeight,
|
||||
params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen}
|
||||
});
|
||||
startEffect();
|
||||
// Metacafe
|
||||
} else if (URL.match(/metacafe\.com\/watch/i)) {
|
||||
mediaType = 'obj';
|
||||
mediaWidth = mediaWidth || "400px";
|
||||
mediaHeight = mediaHeight || "345px";
|
||||
mediaSplit = URL.split('/');
|
||||
mediaId = mediaSplit[4];
|
||||
preload = new Swiff('http://www.metacafe.com/fplayer/'+mediaId+'/.swf?playerVars=autoPlay='+options.autoplayYes, {
|
||||
id: mediaId,
|
||||
width: mediaWidth,
|
||||
height: mediaHeight,
|
||||
params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen}
|
||||
});
|
||||
startEffect();
|
||||
// Myspace
|
||||
} else if (URL.match(/vids\.myspace\.com/i)) {
|
||||
mediaType = 'obj';
|
||||
mediaWidth = mediaWidth || "425px";
|
||||
mediaHeight = mediaHeight || "360px";
|
||||
preload = new Swiff(URL, {
|
||||
id: mediaId,
|
||||
width: mediaWidth,
|
||||
height: mediaHeight,
|
||||
params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen}
|
||||
});
|
||||
startEffect();
|
||||
// Revver
|
||||
} else if (URL.match(/revver\.com/i)) {
|
||||
mediaType = 'obj';
|
||||
mediaWidth = mediaWidth || "480px";
|
||||
mediaHeight = mediaHeight || "392px";
|
||||
mediaSplit = URL.split('/');
|
||||
mediaId = mediaSplit[4];
|
||||
preload = new Swiff('http://flash.revver.com/player/1.0/player.swf?mediaId='+mediaId+'&affiliateId='+options.revverID+'&allowFullScreen='+options.revverFullscreen+'&autoStart='+options.autoplay+'&backColor=#'+options.revverBack+'&frontColor=#'+options.revverFront+'&gradColor=#'+options.revverGrad+'&shareUrl=revver', {
|
||||
id: mediaId,
|
||||
width: mediaWidth,
|
||||
height: mediaHeight,
|
||||
params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen}
|
||||
});
|
||||
startEffect();
|
||||
// Rutube
|
||||
} else if (URL.match(/rutube\.ru/i)) {
|
||||
mediaType = 'obj';
|
||||
mediaWidth = mediaWidth || "470px";
|
||||
mediaHeight = mediaHeight || "353px";
|
||||
mediaSplit = URL.split('=');
|
||||
mediaId = mediaSplit[1];
|
||||
preload = new Swiff('http://video.rutube.ru/'+mediaId, {
|
||||
movie: 'http://video.rutube.ru/'+mediaId,
|
||||
width: mediaWidth,
|
||||
height: mediaHeight,
|
||||
params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen}
|
||||
});
|
||||
startEffect();
|
||||
// Seesmic
|
||||
} else if (URL.match(/seesmic\.com/i)) {
|
||||
mediaType = 'obj';
|
||||
mediaWidth = mediaWidth || "435px";
|
||||
mediaHeight = mediaHeight || "355px";
|
||||
mediaSplit = URL.split('/');
|
||||
mediaId = mediaSplit[5];
|
||||
preload = new Swiff('http://seesmic.com/Standalone.swf?video='+mediaId, {
|
||||
id: mediaId,
|
||||
width: mediaWidth,
|
||||
height: mediaHeight,
|
||||
params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen}
|
||||
});
|
||||
startEffect();
|
||||
// Tudou
|
||||
} else if (URL.match(/tudou\.com/i)) {
|
||||
mediaType = 'obj';
|
||||
mediaWidth = mediaWidth || "400px";
|
||||
mediaHeight = mediaHeight || "340px";
|
||||
mediaSplit = URL.split('/');
|
||||
mediaId = mediaSplit[5];
|
||||
preload = new Swiff('http://www.tudou.com/v/'+mediaId, {
|
||||
width: mediaWidth,
|
||||
height: mediaHeight,
|
||||
params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen}
|
||||
});
|
||||
startEffect();
|
||||
// Twitvcam
|
||||
} else if (URL.match(/twitcam\.com/i)) {
|
||||
mediaType = 'obj';
|
||||
mediaWidth = mediaWidth || "320px";
|
||||
mediaHeight = mediaHeight || "265px";
|
||||
mediaSplit = URL.split('/');
|
||||
mediaId = mediaSplit[3];
|
||||
preload = new Swiff('http://static.livestream.com/chromelessPlayer/wrappers/TwitcamPlayer.swf?hash='+mediaId, {
|
||||
width: mediaWidth,
|
||||
height: mediaHeight,
|
||||
params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen}
|
||||
});
|
||||
startEffect();
|
||||
// Twiturm
|
||||
} else if (URL.match(/twiturm\.com/i)) {
|
||||
mediaType = 'obj';
|
||||
mediaWidth = mediaWidth || "402px";
|
||||
mediaHeight = mediaHeight || "48px";
|
||||
mediaSplit = URL.split('/');
|
||||
mediaId = mediaSplit[3];
|
||||
preload = new Swiff('http://twiturm.com/flash/twiturm_mp3.swf?playerID=0&sf='+mediaId, {
|
||||
width: mediaWidth,
|
||||
height: mediaHeight,
|
||||
params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen}
|
||||
});
|
||||
startEffect();
|
||||
// Twitvid
|
||||
} else if (URL.match(/twitvid\.com/i)) {
|
||||
mediaType = 'obj';
|
||||
mediaWidth = mediaWidth || "600px";
|
||||
mediaHeight = mediaHeight || "338px";
|
||||
mediaSplit = URL.split('/');
|
||||
mediaId = mediaSplit[3];
|
||||
preload = new Swiff('http://www.twitvid.com/player/'+mediaId, {
|
||||
width: mediaWidth,
|
||||
height: mediaHeight,
|
||||
params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen}
|
||||
});
|
||||
startEffect();
|
||||
// Ustream.tv
|
||||
} else if (URL.match(/ustream\.tv/i)) {
|
||||
mediaType = 'obj';
|
||||
mediaWidth = mediaWidth || "400px";
|
||||
mediaHeight = mediaHeight || "326px";
|
||||
preload = new Swiff(URL+'&viewcount='+options.usViewers+'&autoplay='+options.autoplay, {
|
||||
width: mediaWidth,
|
||||
height: mediaHeight,
|
||||
params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen}
|
||||
});
|
||||
startEffect();
|
||||
// YouKu
|
||||
} else if (URL.match(/youku\.com/i)) {
|
||||
mediaType = 'obj';
|
||||
mediaWidth = mediaWidth || "480px";
|
||||
mediaHeight = mediaHeight || "400px";
|
||||
mediaSplit = URL.split('id_');
|
||||
mediaId = mediaSplit[1];
|
||||
preload = new Swiff('http://player.youku.com/player.php/sid/'+mediaId+'=/v.swf', {
|
||||
width: mediaWidth,
|
||||
height: mediaHeight,
|
||||
params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen}
|
||||
});
|
||||
startEffect();
|
||||
// YouTube Video (now includes HTML5 option)
|
||||
} else if (URL.match(/youtube\.com\/watch/i)) {
|
||||
mediaSplit = URL.split('v=');
|
||||
if (options.html5) {
|
||||
mediaType = 'url';
|
||||
mediaWidth = mediaWidth || "640px";
|
||||
mediaHeight = mediaHeight || "385px";
|
||||
mediaId = "mediaId_"+new Date().getTime(); // Safari may not update iframe content with a static id.
|
||||
preload = new Element('iframe', {
|
||||
'src': 'http://www.youtube.com/embed/'+mediaSplit[1],
|
||||
'id': mediaId,
|
||||
'width': mediaWidth,
|
||||
'height': mediaHeight,
|
||||
'frameborder': 0
|
||||
});
|
||||
startEffect();
|
||||
} else {
|
||||
mediaType = 'obj';
|
||||
mediaId = mediaSplit[1];
|
||||
if (mediaId.match(/fmt=22/i)) {
|
||||
mediaFmt = '&ap=%2526fmt%3D22';
|
||||
mediaWidth = mediaWidth || "640px";
|
||||
mediaHeight = mediaHeight || "385px";
|
||||
} else if (mediaId.match(/fmt=18/i)) {
|
||||
mediaFmt = '&ap=%2526fmt%3D18';
|
||||
mediaWidth = mediaWidth || "560px";
|
||||
mediaHeight = mediaHeight || "345px";
|
||||
} else {
|
||||
mediaFmt = options.ytQuality;
|
||||
mediaWidth = mediaWidth || "480px";
|
||||
mediaHeight = mediaHeight || "295px";
|
||||
}
|
||||
preload = new Swiff('http://www.youtube.com/v/'+mediaId+'&autoplay='+options.autoplayNum+'&fs='+options.fullscreenNum+mediaFmt+'&border='+options.ytBorder+'&color1=0x'+options.ytColor1+'&color2=0x'+options.ytColor2+'&rel='+options.ytRel+'&showinfo='+options.ytInfo+'&showsearch='+options.ytSearch, {
|
||||
id: mediaId,
|
||||
width: mediaWidth,
|
||||
height: mediaHeight,
|
||||
params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen}
|
||||
});
|
||||
startEffect();
|
||||
}
|
||||
// YouTube Playlist
|
||||
} else if (URL.match(/youtube\.com\/view/i)) {
|
||||
mediaType = 'obj';
|
||||
mediaSplit = URL.split('p=');
|
||||
mediaId = mediaSplit[1];
|
||||
mediaWidth = mediaWidth || "480px";
|
||||
mediaHeight = mediaHeight || "385px";
|
||||
preload = new Swiff('http://www.youtube.com/p/'+mediaId+'&autoplay='+options.autoplayNum+'&fs='+options.fullscreenNum+mediaFmt+'&border='+options.ytBorder+'&color1=0x'+options.ytColor1+'&color2=0x'+options.ytColor2+'&rel='+options.ytRel+'&showinfo='+options.ytInfo+'&showsearch='+options.ytSearch, {
|
||||
id: mediaId,
|
||||
width: mediaWidth,
|
||||
height: mediaHeight,
|
||||
params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen}
|
||||
});
|
||||
startEffect();
|
||||
// Veoh
|
||||
} else if (URL.match(/veoh\.com/i)) {
|
||||
mediaType = 'obj';
|
||||
mediaWidth = mediaWidth || "410px";
|
||||
mediaHeight = mediaHeight || "341px";
|
||||
URL = URL.replace('%3D','/');
|
||||
mediaSplit = URL.split('watch/');
|
||||
mediaId = mediaSplit[1];
|
||||
preload = new Swiff('http://www.veoh.com/static/swf/webplayer/WebPlayer.swf?version=AFrontend.5.5.2.1001&permalinkId='+mediaId+'&player=videodetailsembedded&videoAutoPlay='+options.AutoplayNum+'&id=anonymous', {
|
||||
id: mediaId,
|
||||
width: mediaWidth,
|
||||
height: mediaHeight,
|
||||
params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen}
|
||||
});
|
||||
startEffect();
|
||||
// Viddler
|
||||
} else if (URL.match(/viddler\.com/i)) {
|
||||
mediaType = 'obj';
|
||||
mediaWidth = mediaWidth || "437px";
|
||||
mediaHeight = mediaHeight || "370px";
|
||||
mediaSplit = URL.split('/');
|
||||
mediaId = mediaSplit[4];
|
||||
preload = new Swiff(URL, {
|
||||
id: 'viddler_'+mediaId,
|
||||
movie: URL,
|
||||
classid: 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000',
|
||||
width: mediaWidth,
|
||||
height: mediaHeight,
|
||||
params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen, id: 'viddler_'+mediaId, movie: URL}
|
||||
});
|
||||
startEffect();
|
||||
// Viddyou
|
||||
} else if (URL.match(/viddyou\.com/i)) {
|
||||
mediaType = 'obj';
|
||||
mediaWidth = mediaWidth || "416px";
|
||||
mediaHeight = mediaHeight || "312px";
|
||||
mediaSplit = URL.split('=');
|
||||
mediaId = mediaSplit[1];
|
||||
preload = new Swiff('http://www.viddyou.com/get/v2_'+options.vuPlayer+'/'+mediaId+'.swf', {
|
||||
id: mediaId,
|
||||
movie: 'http://www.viddyou.com/get/v2_'+options.vuPlayer+'/'+mediaId+'.swf',
|
||||
width: mediaWidth,
|
||||
height: mediaHeight,
|
||||
params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen}
|
||||
});
|
||||
startEffect();
|
||||
// Vimeo (now includes HTML5 option)
|
||||
} else if (URL.match(/vimeo\.com/i)) {
|
||||
mediaWidth = mediaWidth || "640px"; // site defualt: 400px
|
||||
mediaHeight = mediaHeight || "360px"; // site defualt: 225px
|
||||
mediaSplit = URL.split('/');
|
||||
mediaId = mediaSplit[3];
|
||||
|
||||
if (options.html5) {
|
||||
mediaType = 'url';
|
||||
mediaId = "mediaId_"+new Date().getTime(); // Safari may not update iframe content with a static id.
|
||||
preload = new Element('iframe', {
|
||||
'src': 'http://player.vimeo.com/video/'+mediaSplit[3]+'?portrait='+options.vmPortrait,
|
||||
'id': mediaId,
|
||||
'width': mediaWidth,
|
||||
'height': mediaHeight,
|
||||
'frameborder': 0
|
||||
});
|
||||
startEffect();
|
||||
} else {
|
||||
mediaType = 'obj';
|
||||
preload = new Swiff('http://www.vimeo.com/moogaloop.swf?clip_id='+mediaId+'&server=www.vimeo.com&fullscreen='+options.fullscreenNum+'&autoplay='+options.autoplayNum+'&show_title='+options.vmTitle+'&show_byline='+options.vmByline+'&show_portrait='+options.vmPortrait+'&color='+options.vmColor, {
|
||||
id: mediaId,
|
||||
width: mediaWidth,
|
||||
height: mediaHeight,
|
||||
params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen}
|
||||
});
|
||||
startEffect();
|
||||
}
|
||||
// 12seconds
|
||||
} else if (URL.match(/12seconds\.tv/i)) {
|
||||
mediaType = 'obj';
|
||||
mediaWidth = mediaWidth || "430px";
|
||||
mediaHeight = mediaHeight || "360px";
|
||||
mediaSplit = URL.split('/');
|
||||
mediaId = mediaSplit[5];
|
||||
preload = new Swiff('http://embed.12seconds.tv/players/remotePlayer.swf', {
|
||||
id: mediaId,
|
||||
width: mediaWidth,
|
||||
height: mediaHeight,
|
||||
params: {flashvars: 'vid='+mediaId+'', wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen}
|
||||
});
|
||||
startEffect();
|
||||
|
||||
/* Specific Content Types */
|
||||
|
||||
// INLINE
|
||||
} else if (URL.match(/\#mb_/i)) {
|
||||
mediaType = 'inline';
|
||||
mediaWidth = mediaWidth || options.defaultWidth;
|
||||
mediaHeight = mediaHeight || options.defaultHeight;
|
||||
URLsplit = URL.split('#');
|
||||
preload = document.id(URLsplit[1]).get('html');
|
||||
startEffect();
|
||||
// HTML
|
||||
} else {
|
||||
mediaType = 'url';
|
||||
mediaWidth = mediaWidth || options.defaultWidth;
|
||||
mediaHeight = mediaHeight || options.defaultHeight;
|
||||
mediaId = "mediaId_"+new Date().getTime(); // Safari may not update iframe content with a static id.
|
||||
preload = new Element('iframe', {
|
||||
'src': URL,
|
||||
'id': mediaId,
|
||||
'width': mediaWidth,
|
||||
'height': mediaHeight,
|
||||
'frameborder': 0
|
||||
});
|
||||
startEffect();
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function startEffect() {
|
||||
if (mediaType == "img"){
|
||||
mediaWidth = preload.width;
|
||||
mediaHeight = preload.height;
|
||||
if (options.imgBackground) {
|
||||
image.setStyles({backgroundImage: "url("+URL+")", display: ""});
|
||||
} else { // Thanks to Dusan Medlin for fixing large 16x9 image errors in a 4x3 browser
|
||||
if (mediaHeight >= winHeight-options.imgPadding && (mediaHeight / winHeight) >= (mediaWidth / winWidth)) {
|
||||
mediaHeight = winHeight-options.imgPadding;
|
||||
mediaWidth = preload.width = parseInt((mediaHeight/preload.height)*mediaWidth);
|
||||
preload.height = mediaHeight;
|
||||
} else if (mediaWidth >= winWidth-options.imgPadding && (mediaHeight / winHeight) < (mediaWidth / winWidth)) {
|
||||
mediaWidth = winWidth-options.imgPadding;
|
||||
mediaHeight = preload.height = parseInt((mediaWidth/preload.width)*mediaHeight);
|
||||
preload.width = mediaWidth;
|
||||
}
|
||||
if (Browser.Engine.trident) preload = document.id(preload);
|
||||
preload.addEvent('mousedown', function(e){ e.stop(); }).addEvent('contextmenu', function(e){ e.stop(); });
|
||||
image.setStyles({backgroundImage: "none", display: ""});
|
||||
preload.inject(image);
|
||||
}
|
||||
} else if (mediaType == "obj") {
|
||||
if (Browser.Plugins.Flash.version<8) {
|
||||
image.setStyles({backgroundImage: "none", display: ""});
|
||||
image.set('html', '<div id="mbError"><b>Error</b><br/>Adobe Flash is either not installed or not up to date, please visit <a href="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" title="Get Flash" target="_new">Adobe.com</a> to download the free player.</div>');
|
||||
mediaWidth = options.DefaultWidth;
|
||||
mediaHeight = options.DefaultHeight;
|
||||
} else {
|
||||
image.setStyles({backgroundImage: "none", display: ""});
|
||||
preload.inject(image);
|
||||
}
|
||||
} else if (mediaType == "qt") {
|
||||
image.setStyles({backgroundImage: "none", display: ""});
|
||||
preload;
|
||||
} else if (mediaType == "inline") {
|
||||
// if (options.overflow) image.setStyles({overflow: options.overflow});
|
||||
image.setStyles({backgroundImage: "none", display: ""});
|
||||
image.set('html', preload);
|
||||
} else if (mediaType == "url") {
|
||||
image.setStyles({backgroundImage: "none", display: ""});
|
||||
preload.inject(image);
|
||||
} else {
|
||||
image.setStyles({backgroundImage: "none", display: ""});
|
||||
image.set('html', '<div id="mbError"><b>Error</b><br/>A file type error has occoured, please visit <a href="iaian7.com/webcode/mediaboxAdvanced" title="mediaboxAdvanced" target="_new">iaian7.com</a> or contact the website author for more information.</div>');
|
||||
mediaWidth = options.defaultWidth;
|
||||
mediaHeight = options.defaultHeight;
|
||||
}
|
||||
image.setStyles({width: mediaWidth, height: mediaHeight});
|
||||
caption.setStyles({width: mediaWidth});
|
||||
|
||||
title.set('html', (options.showCaption) ? captionSplit[0] : "");
|
||||
caption.set('html', (options.showCaption && (captionSplit.length > 1)) ? captionSplit[1] : "");
|
||||
number.set('html', (options.showCounter && (images.length > 1)) ? options.counterText.replace(/{x}/, activeImage + 1).replace(/{y}/, images.length) : "");
|
||||
|
||||
if ((prevImage >= 0) && (images[prevImage][0].match(/\.gif|\.jpg|\.jpeg|\.png|twitpic\.com/i))) preloadPrev.src = images[prevImage][0].replace(/twitpic\.com/i, "twitpic.com/show/full");
|
||||
if ((nextImage >= 0) && (images[nextImage][0].match(/\.gif|\.jpg|\.jpeg|\.png|twitpic\.com/i))) preloadNext.src = images[nextImage][0].replace(/twitpic\.com/i, "twitpic.com/show/full");
|
||||
|
||||
mediaWidth = image.offsetWidth;
|
||||
mediaHeight = image.offsetHeight+bottom.offsetHeight;
|
||||
if (mediaHeight >= top+top) { mTop = -top } else { mTop = -(mediaHeight/2) };
|
||||
if (mediaWidth >= left+left) { mLeft = -left } else { mLeft = -(mediaWidth/2) };
|
||||
if (options.resizeOpening) { fx.resize.start({width: mediaWidth, height: mediaHeight, marginTop: mTop-margin, marginLeft: mLeft-margin});
|
||||
} else { center.setStyles({width: mediaWidth, height: mediaHeight, marginTop: mTop-margin, marginLeft: mLeft-margin}); imageAnimate(); }
|
||||
}
|
||||
|
||||
function imageAnimate() {
|
||||
fx.image.start(1);
|
||||
}
|
||||
|
||||
function captionAnimate() {
|
||||
center.className = "";
|
||||
if (prevImage >= 0) prevLink.style.display = "";
|
||||
if (nextImage >= 0) nextLink.style.display = "";
|
||||
fx.bottom.start(1);
|
||||
}
|
||||
|
||||
function stop() {
|
||||
if (preload) preload.onload = $empty;
|
||||
fx.resize.cancel();
|
||||
fx.image.cancel().set(0);
|
||||
fx.bottom.cancel().set(0);
|
||||
$$(prevLink, nextLink).setStyle("display", "none");
|
||||
}
|
||||
|
||||
function close() {
|
||||
if (activeImage >= 0) {
|
||||
preload.onload = $empty;
|
||||
image.set('html', '');
|
||||
for (var f in fx) fx[f].cancel();
|
||||
center.setStyle("display", "none");
|
||||
fx.overlay.chain(setup).start(0);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
})();
|
||||
|
||||
/* Autoload code block */
|
||||
|
||||
Mediabox.scanPage = function() {
|
||||
// $$('#mb_').each(function(hide) { hide.set('display', 'none'); });
|
||||
var links = $$("a").filter(function(el) {
|
||||
return el.rel && el.rel.test(/^lightbox/i);
|
||||
});
|
||||
$$(links).mediabox({/* Put custom options here */}, null, function(el) {
|
||||
var rel0 = this.rel.replace(/[[]|]/gi," ");
|
||||
var relsize = rel0.split(" ");
|
||||
return (this == el) || ((this.rel.length > 8) && el.rel.match(relsize[1]));
|
||||
});
|
||||
};
|
||||
window.addEvent("domready", Mediabox.scanPage);
|
5800
js/mootools.js
Normal file
127
system_check.php
Normal file
|
@ -0,0 +1,127 @@
|
|||
<?php
|
||||
ini_set("memory_limit","256M");
|
||||
|
||||
$exif = "No";
|
||||
$gd = "No";
|
||||
$update = "No";
|
||||
if (function_exists('exif_read_data')) $exif = "Yes";
|
||||
if (extension_loaded('gd') && function_exists('gd_info')) $gd = "Yes";
|
||||
if (ini_get("allow_url_fopen") == 1) $update = "Yes";
|
||||
|
||||
?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<title>MiniGal Nano system check</title>
|
||||
<style type="text/css">
|
||||
body {
|
||||
background-color: #daddd8;
|
||||
font: 12px Arial, Tahoma, "Times New Roman", serif;
|
||||
}
|
||||
h1 {
|
||||
font-size: 30px;
|
||||
margin: 20px 0 5px 0;
|
||||
letter-spacing: -2px;
|
||||
}
|
||||
div {
|
||||
line-height: 20px;
|
||||
}
|
||||
.left {
|
||||
width: 300px;
|
||||
display: inline-table;
|
||||
background-color: #fdffbe;
|
||||
padding: 2px;
|
||||
}
|
||||
.middle-neutral {
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
width: 100px;
|
||||
display: inline-table;
|
||||
background-color: #fdffbe;
|
||||
padding: 2px;
|
||||
}
|
||||
.middle-no {
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
width: 100px;
|
||||
display: inline-table;
|
||||
background-color: #ff8181;
|
||||
padding: 2px;
|
||||
}
|
||||
.middle-yes {
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
width: 100px;
|
||||
display: inline-table;
|
||||
background-color: #98ffad;
|
||||
padding: 2px;
|
||||
}
|
||||
.right {
|
||||
width: 600px;
|
||||
display: inline-table;
|
||||
background-color: #eaf1ea;
|
||||
padding: 2px;
|
||||
}
|
||||
</style>
|
||||
<body>
|
||||
<h1>MiniGal Nano system check</h1>
|
||||
<div class="left">
|
||||
PHP Version
|
||||
</div>
|
||||
<div class="<?php if(version_compare(phpversion(), "4.0", '>')) echo 'middle-yes'; else echo 'middle-no' ?>">
|
||||
<?php echo phpversion(); ?>
|
||||
</div>
|
||||
<div class="right">
|
||||
<a href="http://www.php.net/" target="_blank">PHP</a> scripting language version 4.0 or greater is needed
|
||||
</div>
|
||||
<br />
|
||||
|
||||
<div class="left">
|
||||
GD library support
|
||||
</div>
|
||||
<div class="<?php if($gd == "Yes") echo 'middle-yes'; else echo 'middle-no' ?>">
|
||||
<?php echo $gd; ?>
|
||||
</div>
|
||||
<div class="right">
|
||||
<a href="http://www.boutell.com/gd/" target="_blank">GD image manipulation</a> library is used to create thumbnails. Bundled since PHP 4.3
|
||||
</div>
|
||||
<br />
|
||||
|
||||
<div class="left">
|
||||
EXIF support
|
||||
</div>
|
||||
<div class="<?php if($exif == "Yes") echo 'middle-yes'; else echo 'middle-neutral' ?>">
|
||||
<?php echo $exif; ?>
|
||||
</div>
|
||||
<div class="right">
|
||||
Ability to extract and display <a href="http://en.wikipedia.org/wiki/Exif" target="_blank">EXIF information</a>. The script will work without it, but not display image information
|
||||
</div>
|
||||
<br />
|
||||
|
||||
<div class="left">
|
||||
PHP memory limit
|
||||
</div>
|
||||
<div class="middle-neutral">
|
||||
<?php echo ini_get("memory_limit"); ?>
|
||||
</div>
|
||||
<div class="right">
|
||||
Memory is needed to create thumbnails. Bigger images uses more memory
|
||||
</div>
|
||||
<br />
|
||||
|
||||
<div class="left">
|
||||
New version check
|
||||
</div>
|
||||
<div class="middle-neutral">
|
||||
<?php echo $update ?>
|
||||
</div>
|
||||
<div class="right">
|
||||
The ability to check for new version and display this automatically. The script will work without it
|
||||
</div>
|
||||
<br /><br />
|
||||
<a href="http://www.minigal.dk/minigal-nano.html" target="_blank">Support website</a>
|
||||
| <a href="http://www.minigal.dk/forum" target="_blank">Support forum</a>
|
||||
</body>
|
||||
</html>
|
181
templates/exhibition.html
Normal file
|
@ -0,0 +1,181 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<title><% title %></title>
|
||||
<link rel="stylesheet" href="<% gallery_root %>css/mediaboxAdvWhite.css" type="text/css" media="screen" />
|
||||
<link rel="alternate" type="application/rss+xml" title="<% title %>" href="rss/" /><link>
|
||||
<script src="<% gallery_root %>js/mootools.js" type="text/javascript"></script>
|
||||
<script src="<% gallery_root %>js/mediaboxAdv-1.3.4b.js" type="text/javascript"></script>
|
||||
<style type="text/css">
|
||||
body {
|
||||
margin: 0 auto;
|
||||
padding: 0;
|
||||
width: <% gallery_width %>;
|
||||
font: 12px Lucida Sans Unicode, Georgia, sans-serif, Georgia, "Times New Roman", Times, serif;
|
||||
background: black;
|
||||
color: #eee;
|
||||
}
|
||||
h1 {
|
||||
font: normal 220%/100% Georgia, Verdana, Arial, sans-serif Unicode, Georgia, "Times New Roman", Times, serif;
|
||||
margin: 20px 0 5px 0;
|
||||
letter-spacing: 5px;
|
||||
}
|
||||
.credits {
|
||||
padding-bottom: 5px;
|
||||
margin: 0 0 30px 0;
|
||||
font: 120% Georgia, Lucida Sans Unicode, Garamond, Georgia, serif;
|
||||
}
|
||||
.credits em {
|
||||
color: #999;
|
||||
}
|
||||
.backlink a {
|
||||
font-size: 10px;
|
||||
text-decoration: none;
|
||||
color: #AAA;
|
||||
}
|
||||
.backlink a:hover,
|
||||
.backlink a:visited:hover {
|
||||
color: #555;
|
||||
}
|
||||
img {
|
||||
border: none;
|
||||
}
|
||||
#page_nav {
|
||||
color: #999;
|
||||
clear:both;
|
||||
text-align: center;
|
||||
}
|
||||
#page_nav a:link, #page_nav a:visited, #page_nav a:hover, #page_nav a:visited:hover {
|
||||
text-decoration: none;
|
||||
color: #eee;
|
||||
}
|
||||
#breadcrumb_nav {
|
||||
color: #999;
|
||||
}
|
||||
#breadcrumb_nav a:link, #breadcrumb_nav a:visited, #breadcrumb_nav a:hover, #breadcrumb_nav a:visited:hover {
|
||||
text-decoration: none;
|
||||
color: #eee;
|
||||
}
|
||||
a {
|
||||
color: #eee;
|
||||
}
|
||||
#container {
|
||||
overflow: auto;
|
||||
width: 100%
|
||||
}
|
||||
.hidden {
|
||||
visibility: hidden;
|
||||
position:absolute;
|
||||
top:0;
|
||||
left:0;
|
||||
display:inline;
|
||||
}
|
||||
#topbar {
|
||||
border-bottom-color: #afafaf;
|
||||
border-style: none;
|
||||
color: black;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
margin: 0;
|
||||
padding-top: 5px;
|
||||
float: none;
|
||||
width: 100%;
|
||||
height: 25px;
|
||||
text-align: center;
|
||||
background-color: #FFFF99;
|
||||
border-bottom: 1px solid;
|
||||
}
|
||||
#topbar a:link, #topbar a:visited, #topbar a:hover, #topbar a:visited:hover {
|
||||
text-decoration: underline;
|
||||
color: #000;
|
||||
}
|
||||
#topbar img{
|
||||
position: absolute;
|
||||
right: 6;
|
||||
top: 6;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
/* ---------- gallery styles start here ----------------------- */
|
||||
.gallery {
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.gallery li {
|
||||
padding: 1px;
|
||||
margin: 0;
|
||||
float: left;
|
||||
position: relative;
|
||||
width: 120px;
|
||||
height: 120px;
|
||||
overflow:hidden;
|
||||
}
|
||||
.gallery li:hover img {
|
||||
background: #ddd;
|
||||
filter: alpha(opacity=70);
|
||||
filter: progid:DXImageTransform.Microsoft.Alpha(opacity=70);
|
||||
-moz-opacity: 0.70;
|
||||
opacity:0.7;
|
||||
}
|
||||
.gallery img {
|
||||
background: #000;
|
||||
color: #666;
|
||||
}
|
||||
.gallery em {
|
||||
background: #000;
|
||||
color: #fff;
|
||||
font-style: normal;
|
||||
font-size: 12px;
|
||||
padding: 2px 2px;
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 90px;
|
||||
left: 1px;
|
||||
width: 116px;
|
||||
height: 20px;
|
||||
filter: alpha(opacity=60);
|
||||
filter: progid:DXImageTransform.Microsoft.Alpha(opacity=60);
|
||||
-moz-opacity: 0.60;
|
||||
opacity:0.6;
|
||||
}
|
||||
.gallery em-pdf {
|
||||
color: #666;
|
||||
font-style: normal;
|
||||
font-size: 10px;
|
||||
padding: 3px 7px;
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 100px;
|
||||
left: 0px;
|
||||
}
|
||||
.gallery a {
|
||||
text-decoration: none;
|
||||
}
|
||||
.gallery a:hover em {
|
||||
background: grey;
|
||||
color: black;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1><% title %></h1>
|
||||
<% messages %>
|
||||
<p class="credits"><em>by: </em><% author %></p>
|
||||
<span id="breadcrumb_nav"><% breadcrumb_navigation %></span>
|
||||
<br /><br />
|
||||
<div id="container">
|
||||
<ul class="gallery">
|
||||
<% thumbnails %>
|
||||
</ul>
|
||||
</div>
|
||||
<br />
|
||||
<div id="page_nav"><% page_navigation %></div>
|
||||
<br />
|
||||
<!-- CREDITS - DO NOT REMOVE OR YOU WILL VOID MiniGal Nano TERMS OF USE -->
|
||||
<div class="backlink" align="center"><a href="http://www.minigal.dk" title="Powered by MiniGal Nano" target="_blank">Powered by MiniGal Nano <% version %></a></div>
|
||||
<br /><br />
|
||||
</body>
|
||||
</html>
|
149
templates/integrate.html
Normal file
|
@ -0,0 +1,149 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<title><% title %></title>
|
||||
<link rel="stylesheet" href="<% gallery_root %>css/mediaboxAdvBlack21.css" type="text/css" media="screen" />
|
||||
<script src="<% gallery_root %>js/mootools.js" type="text/javascript"></script>
|
||||
<script src="<% gallery_root %>js/mediaboxAdv-1.3.4b.js" type="text/javascript"></script>
|
||||
<style type="text/css">
|
||||
body {
|
||||
margin: 0 auto;
|
||||
padding: 0;
|
||||
width: <% gallery_width %>;
|
||||
font: 14px Georgia, "Times New Roman", Times, serif;
|
||||
}
|
||||
h1 {
|
||||
font: normal 320%/100% Georgia, "Times New Roman", Times, serif;
|
||||
margin: 20px 0 5px 0;
|
||||
letter-spacing: -2px;
|
||||
}
|
||||
.credits {
|
||||
border-bottom: solid 1px #ccc;
|
||||
padding-bottom: 5px;
|
||||
margin: 0 0 30px 0;
|
||||
font: 120% Garamond, Georgia, serif;
|
||||
}
|
||||
.credits em {
|
||||
color: #999;
|
||||
}
|
||||
.backlink a {
|
||||
font-size: 10px;
|
||||
text-decoration: none;
|
||||
color: #AAA;
|
||||
}
|
||||
.backlink a:hover,
|
||||
.backlink a:visited:hover {
|
||||
color: #000;
|
||||
}
|
||||
img {
|
||||
border: none;
|
||||
}
|
||||
#page_nav {
|
||||
color: #999;
|
||||
clear:both;
|
||||
text-align: center;
|
||||
}
|
||||
#page_nav a:link, #page_nav a:visited, #page_nav a:hover, #page_nav a:visited:hover {
|
||||
text-decoration: none;
|
||||
color: #222;
|
||||
}
|
||||
#breadcrumb_nav {
|
||||
color: #999;
|
||||
}
|
||||
#breadcrumb_nav a:link, #breadcrumb_nav a:visited, #breadcrumb_nav a:hover, #breadcrumb_nav a:visited:hover {
|
||||
text-decoration: none;
|
||||
color: #222;
|
||||
}
|
||||
a {
|
||||
color: black;
|
||||
}
|
||||
#container {
|
||||
overflow: auto;
|
||||
width: 100%
|
||||
}
|
||||
.hidden {
|
||||
visibility: hidden;
|
||||
position:absolute;
|
||||
top:0;
|
||||
left:0;
|
||||
display:inline;
|
||||
}
|
||||
|
||||
/* ---------- gallery styles start here ----------------------- */
|
||||
.gallery {
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.gallery li {
|
||||
padding: 10px;
|
||||
margin: 0;
|
||||
float: left;
|
||||
position: relative;
|
||||
width: 130px;
|
||||
height: 130px;
|
||||
}
|
||||
.gallery li:hover img {
|
||||
border-color: #000;
|
||||
background: #ddd;
|
||||
}
|
||||
.gallery img {
|
||||
background: #fff;
|
||||
border: solid 1px #888;
|
||||
padding: 5px;
|
||||
}
|
||||
.gallery em {
|
||||
background: #fff url(images/grey-gradient.gif) repeat-y;
|
||||
color: #000;
|
||||
font-style: normal;
|
||||
padding: 2px 10px;
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 110px;
|
||||
left: 9px;
|
||||
border: 1px solid #999;
|
||||
border-left-color: #888;
|
||||
}
|
||||
.gallery a {
|
||||
text-decoration: none;
|
||||
}
|
||||
.gallery a:hover em {
|
||||
background: #ffdb01 url(images/orange-gradient.gif) repeat-y;
|
||||
border-color: #c25b08;
|
||||
}
|
||||
.newversion {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: none;
|
||||
float: none;
|
||||
}
|
||||
.newversion a img {
|
||||
background-color: transparent;
|
||||
color: white;
|
||||
border: none;
|
||||
text-decoration: none;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1><em><% title %></em></h1>
|
||||
<p class="credits"><em>by:</em> <% author %></p>
|
||||
<span id="breadcrumb_nav"><% breadcrumb_navigation %></span>
|
||||
<div id="container">
|
||||
<ul class="gallery">
|
||||
<% thumbnails %>
|
||||
</ul>
|
||||
</div>
|
||||
<br />
|
||||
<div id="page_nav"><% page_navigation %></div>
|
||||
<br />
|
||||
<!-- CREDITS - DO NOT REMOVE OR YOU WILL VOID MiniGal Nano TERMS OF USE -->
|
||||
<div class="backlink" align="center"><a href="http://www.minigal.dk" title="Powered by MiniGal Nano" target="_blank">Powered by MiniGal Nano <% version %></a></div>
|
||||
<br /><br />
|
||||
</body>
|
||||
</html>
|
167
templates/mano.html
Normal file
|
@ -0,0 +1,167 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<title><% title %></title>
|
||||
<link rel="stylesheet" href="<% gallery_root %>css/mediaboxAdvBlack21.css" type="text/css" media="screen" />
|
||||
<script src="<% gallery_root %>js/mootools.js" type="text/javascript"></script>
|
||||
<script src="<% gallery_root %>js/mediaboxAdv-1.3.4b.js" type="text/javascript"></script>
|
||||
<style type="text/css">
|
||||
body {
|
||||
margin: 0 auto;
|
||||
padding: 0;
|
||||
width: <% gallery_width %>;
|
||||
font: 12px geneva, century gothic, Georgia, "Times New Roman", Times, serif;
|
||||
background: <% bgcolor %>;
|
||||
}
|
||||
h1 {
|
||||
font: italic 320%/100% Georgia, "Times New Roman", Times, serif;
|
||||
margin: 20px 0 5px 0;
|
||||
letter-spacing: -2px;
|
||||
}
|
||||
.credits {
|
||||
border-bottom: solid 1px #ccc;
|
||||
padding-bottom: 5px;
|
||||
margin: 0 0 30px 0;
|
||||
font: 120% Garamond, Georgia, serif;
|
||||
}
|
||||
.credits em {
|
||||
color: #999;
|
||||
}
|
||||
#bottom {
|
||||
color: #FFF;
|
||||
border: 0;
|
||||
border-top: solid 1px #ccc;
|
||||
}
|
||||
.backlink a {
|
||||
font-size: 10px;
|
||||
text-decoration: none;
|
||||
color: #AAA;
|
||||
}
|
||||
.backlink a:hover,
|
||||
.backlink a:visited:hover {
|
||||
color: #000;
|
||||
}
|
||||
img {
|
||||
border: none;
|
||||
}
|
||||
#page_nav {
|
||||
color: #999;
|
||||
clear:both;
|
||||
text-align: center;
|
||||
}
|
||||
#page_nav a:link, #page_nav a:visited, #page_nav a:hover, #page_nav a:visited:hover {
|
||||
text-decoration: none;
|
||||
color: #222;
|
||||
}
|
||||
#breadcrumb_nav {
|
||||
color: #999;
|
||||
}
|
||||
#breadcrumb_nav a:link, #breadcrumb_nav a:visited, #breadcrumb_nav a:hover, #breadcrumb_nav a:visited:hover {
|
||||
text-decoration: none;
|
||||
color: #222;
|
||||
}
|
||||
a {
|
||||
color: black;
|
||||
}
|
||||
#container {
|
||||
overflow: auto;
|
||||
width: 100%
|
||||
}
|
||||
.hidden {
|
||||
visibility: hidden;
|
||||
position:absolute;
|
||||
top:0;
|
||||
left:0;
|
||||
display:inline;
|
||||
}
|
||||
#topbar {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
margin: 0;
|
||||
padding-top: 5px;
|
||||
border: none;
|
||||
float: none;
|
||||
width: 100%;
|
||||
height: 25px;
|
||||
text-align: center;
|
||||
background-color: #FFFF99;
|
||||
border-bottom: 1px solid #DDD;
|
||||
}
|
||||
#topbar img{
|
||||
position: absolute;
|
||||
right: 6;
|
||||
top: 6;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
/* ---------- gallery styles start here ----------------------- */
|
||||
.gallery {
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.gallery li {
|
||||
padding: 10px;
|
||||
margin: 0;
|
||||
float: left;
|
||||
position: relative;
|
||||
width: 130px;
|
||||
height: 160px;
|
||||
overflow:hidden;
|
||||
}
|
||||
.gallery li:hover img {
|
||||
border-color: #000;
|
||||
background: #ddd;
|
||||
}
|
||||
.gallery img {
|
||||
background: #fff;
|
||||
border: solid 1px #888;
|
||||
padding: 5px;
|
||||
}
|
||||
.gallery em {
|
||||
color: #000;
|
||||
font-style: normal;
|
||||
padding: 2px 5px;
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 140px;
|
||||
left: 9px;
|
||||
}
|
||||
.gallery em-pdf {
|
||||
color: #666;
|
||||
font-style: normal;
|
||||
font-size: 10px;
|
||||
padding: 3px 7px;
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 118px;
|
||||
left: 9px;
|
||||
}
|
||||
.gallery a {
|
||||
text-decoration: none;
|
||||
}
|
||||
.gallery a:hover em {
|
||||
color: #666;
|
||||
}
|
||||
</style>
|
||||
<body>
|
||||
<h1><% title %></h1>
|
||||
<% messages %>
|
||||
<p class="credits"><em>by: </em><% author %></p>
|
||||
<span id="breadcrumb_nav"><% breadcrumb_navigation %></span>
|
||||
<div id="container">
|
||||
<ul class="gallery">
|
||||
<% thumbnails %>
|
||||
</ul>
|
||||
</div>
|
||||
<br />
|
||||
<div id="page_nav"><% page_navigation %></div>
|
||||
<br />
|
||||
<!-- CREDITS - DO NOT REMOVE OR YOU WILL VOID MiniGal Nano TERMS OF USE -->
|
||||
<hr id="bottom" />
|
||||
<div class="backlink" align="center"><a href="http://www.minigal.dk" title="Powered by MiniGal Nano" target="_blank">Powered by MiniGal Nano <% version %></a></div>
|
||||
<br /><br />
|
||||
</body>
|
||||
</html>
|