/**
* Copyright (c) 2009-2010, As Is Software, dba Media Lab Inc.
* http://www.medialab.com
*/
var com;
if(!com) { com = {}; } else if(typeof(com) != "object") { throw new Error("can't initialize...com is not an object."); }
if(!com.medialab) { com.medialab = {}; } else if(typeof(com.medialab) != "object") { throw new Error("can't initialize...com.medialab is not an object."); }
if(!com.medialab.sg) { com.medialab.sg = {}; }
if (!com.medialab.sg.gallery1) {
com.medialab.sg.gallery1 = {};
}
com.medialab.sg.gallery1.pictureboxSiteGrinderCSSAnim = function(pictureboxXMLIn, docentIn){
var that = this;
var debug = false;
var sgalert = function(msg){
if (debug) {
alert(msg);
}
};
var docent = docentIn;
var xml = pictureboxXMLIn;
var myWidth = 0;
var myHeight = 0;
var myDivID = "not set yet";
var myClickAction = "not set yet";
var myHoverAction = "not set yet";
var rightClickBlock = false;
var curImageUrl = "not set yet";
var halfPreloader = 15;
var preloadImgHTML = null;
var exhibitArray = [];
var fadeTime = 500;
var delay = 5000;
var goNextTimerID = null;
var checkLoadTimerID = null;
var autoPlay = false;
var endAction = 'loop';
var endUrl = 'index.html';
var viewDiv = null;
var pboxAlign = "not set yet";
function getPictureboxQuery() {
// sample : '#divname img'
return '#'+myDivID+' img';
}
this.getRightClickBlock = function () { return rightClickBlock; }
this.displayByUrl = function(imageUrl) {
var pbq = getPictureboxQuery();
//$ml(pbq).attr('src', imageUrl);
}
this.displayByNum = function(exhibitNum, viewNum) {
docent.sgconsole('CSS PICTUREBOX displayByNum()');
autoPlayed = false;
if (viewNum != 0) {
autoPlay = false;
}
gotoPicNum(exhibitNum,viewNum);
//this.displayByUrl(getUrlFromNum(exhibitNum,viewNum));
}
function getUrlFromNum(exhibitNum, viewNum){
return $ml('exhibits exhibit:eq('+ exhibitNum +') views view:eq('+ viewNum +') picturebox url',xml).text();
}
function getPictureDiv(urlIn) {
var left = 0;
var top = 0;
var cursorString = "";
if(myClickAction!="none") { cursorString="cursor:pointer;"; }
return "";
}
/* function startShow() {
$ml('#'+myDivID+' img:eq(0)').css('display','block');
setInterval(function(){
$ml('#'+myDivID+' :first-child').fadeOut()
.next('img').fadeIn()
.end().appendTo('#'+myDivID);},
6000);
}
*/
function gotoPicNum(exhibitNum, viewNum) {
clearTimeout(goNextTimerID);
if(typeof viewNum == 'undefined') { viewNum = 0; }
if (exhibitNum <= exhibitArray.length - 1) {
var imageHero = exhibitArray[exhibitNum].images[viewNum];
if(typeof imageHero == 'undefined') {
//if(typeof imageHero == 'undefined') {
exhibitArray[exhibitNum].images[viewNum] = new Object();
exhibitArray[exhibitNum].images[viewNum].img = new Image();
exhibitArray[exhibitNum].images[viewNum].img.src = getUrlFromNum(exhibitNum,viewNum);
exhibitArray[exhibitNum].images[viewNum].aligned = false;
exhibitArray[exhibitNum].images[viewNum].html = $ml(getPictureDiv(exhibitArray[exhibitNum].images[viewNum].img.src));
imageHero = exhibitArray[exhibitNum].images[viewNum];
//}
}
if (!imageHero.img.width!=0) {
goNextTimerID = setTimeout(function(){
gotoPicNum(exhibitNum,viewNum);
exhibitNum = null;
}, 10);
}
else {
if (!imageHero.aligned) { alignInPicturebox(imageHero); }
setNextImgHTML(imageHero.html);
$ml(getDivContainerString() + ' :first-child')
.fadeOut(fadeTime, function(){fadeDone(exhibitNum);})
.next('img').fadeIn(fadeTime)
.end().appendTo(getDivContainerString());
if (autoPlayed) {
docent.pictureboxSelectByNum(exhibitNum, false);
}
}
}
// viewDiv = $ml(getPictureDiv(getUrlFromNum(nextNum,nextView)));
}
/* // This one works well without views
function gotoPicNum(nextNum) {
clearTimeout(goNextTimerID);
if (nextNum <= imgArray.length - 1) {
if (!imgArray[nextNum].img.complete) {
goNextTimerID = setTimeout(function(){
gotoPicNum(nextNum);
nextNum = null;
}, 10);
}
else {
if (!imgArray[nextNum].centered) { centerInPicturebox(nextNum); }
setNextImgHTML(imgArray[nextNum].html);
$ml('#' + myDivID + ' :first-child')
.fadeOut(fadeTime, function(){fadeDone(nextNum);nextNum=null;})
.next('img').fadeIn(fadeTime)
.end().appendTo('#' + myDivID);
if (autoPlayed) {
docent.pictureboxSelectByNum(nextNum, false);
}
}
}
// viewDiv = $ml(getPictureDiv(getUrlFromNum(nextNum,nextView)));
}
*/
function alignInPicturebox(imageObjToAlign) {
var pboxWidth = $ml('#'+myDivID).width();
var pboxHeight = $ml('#'+myDivID).height();
// assume center h & v
var top = Math.floor(pboxHeight/2) - Math.floor(imageObjToAlign.img.height/2);
var left = Math.floor(pboxWidth/2) - Math.floor(imageObjToAlign.img.width/2);
// check for non centered
if(pboxAlign.indexOf("left") != -1) {
left = 0;
}
if(pboxAlign.indexOf("right") != -1) {
left = pboxWidth-imageObjToAlign.img.width;
}
if(pboxAlign.indexOf("top") != -1) {
top = 0;
}
if(pboxAlign.indexOf("bottom") != -1) {
top = pboxHeight-imageObjToAlign.img.height;
}
imageObjToAlign.html.css('top',top+'px');
imageObjToAlign.html.css('left',left+'px');
imageObjToAlign.aligned = true;
}
function setNextImgHTML(htmlIn) {
$ml(getDivContainerString() + ' :eq(1)').remove();
htmlIn.appendTo(getDivContainerString());
}
function fadeDone(replacedByNum) {
var targetNum = replacedByNum + 1;
if (autoPlay) {
if (targetNum == docent.getExhibitCount()) {
if (endAction == 'loop') {
targetNum = 0;
} else {
if(endAction=='gotourl') {
if(endUrl!=null && endUrl!='') {
docent.gotoUrl(endUrl);
}
}
}
}
autoPlayNext(targetNum);
}
}
function preload() {
for(var curSlide = 0; curSlide < docent.getExhibitCount(); curSlide++) {
var victim = new Object();
victim.images = [];
victim.images[0] = new Object();
victim.images[0].img = new Image();
var imgSrc = getUrlFromNum(curSlide,0);
victim.images[0].img.src = imgSrc;
victim.images[0].html = $ml(getPictureDiv(imgSrc));
victim.images[0].positioned = false;
exhibitArray[curSlide] = victim;
}
checkLoad();
}
function autoPlayNext(nextToPlay) {
autoPlayed = true;
clearTimeout(goNextTimerID);
goNextTimerID = setTimeout(function(){
gotoPicNum(nextToPlay); nextToPlay = null;
}, delay);
}
function checkLoad() {
var startImgNum = docent.getCurrentExhibit();
var nextImgNum = docent.getCurrentExhibit()+1;
if(nextImgNum == docent.getExhibitCount()) { nextImgNum = 0; }
if (typeof exhibitArray[startImgNum] != "undefined" && typeof exhibitArray[nextImgNum] != "undefined") {
if (exhibitArray[startImgNum].images[0].img.width != 0 && exhibitArray[nextImgNum].images[0].img.width != 0) {
alignInPicturebox(exhibitArray[startImgNum].images[0]);
preloadImgHTML.remove();
exhibitArray[startImgNum].images[0].html.appendTo(getDivContainerString());
exhibitArray[nextImgNum].images[0].html.appendTo(getDivContainerString());
exhibitArray[startImgNum].images[0].html.fadeIn(fadeTime);
if (autoPlay) {
autoPlayNext(nextImgNum);
}
}
else {
checkLoadTimerID = setTimeout(checkLoad, 10)
}
}
}
function getDivContainerString() {
return '#' + myDivID + ' > div';
}
function initPictureBox() {
var ptop = Math.floor(myHeight/2) - halfPreloader;
var pleft = Math.floor(myWidth/2) - halfPreloader;
preloadImgHTML= $ml("");
var container = $ml('