/* Ultimate Fade-in slideshow (v2.1)
* Last updated: Sept 10th, 2009. This notice must stay intact for usage 
* Author: Dynamic Drive at http://www.dynamicdrive.com/
* Visit http://www.dynamicdrive.com/ for full source code
*/
var fadeSlideShow_descpanel={
controls: [['images/x.png',7,7], ['images/restore.png',10,11], ['images/loading.gif',54,55]], 
fontStyle: 'normal 11px Verdana', 
slidespeed: 200 
}
jQuery.noConflict()
function fadeSlideShow(searg){
this.se=searg
searg=null
var se=this.se
se.fadeduration=se.fadeduration? parseInt(se.fadeduration) : 500
se.curimage=(se.persist)? fadeSlideShow.routines.getCookie("gallery-"+se.wrapperid) : 0
se.curimage=se.curimage || 0 
se.currentstep=0 
se.totalsteps=se.imagearray.length*(se.displaymode.cycles>0? se.displaymode.cycles : Infinity) 
se.fglayer=0, se.bglayer=1 
se.oninit=se.oninit || function(){}
se.onslide=se.onslide || function(){}
if (se.displaymode.randomize) 
se.imagearray.sort(function() {return 0.5 - Math.random()})
var preloadimages=[] 
se.longestdesc="" 
for (var i=0; i<se.imagearray.length; i++){ 
preloadimages[i]=new Image()
preloadimages[i].src=se.imagearray[i][0]
if (se.imagearray[i] && se.imagearray[i][3] && se.imagearray[i][3].length>se.longestdesc.length)
se.longestdesc=se.imagearray[i][3]
}
var closebutt=fadeSlideShow_descpanel.controls[0] 

se.closebutton = ''
var slideshow=this
jQuery(document).ready(function($){ 
var se=slideshow.se
var fullhtml=fadeSlideShow.routines.getFullHTML(se.imagearray) 
se.$wrapperdiv=$('#'+se.wrapperid).css({position:'relative', visibility:'visible', background:'black', overflow:'hidden', width:se.dimensions[0], height:se.dimensions[1]}).empty() 
if (se.$wrapperdiv.length==0){ 
alert("Error: DIV with ID \""+se.wrapperid+"\" not found on page.")
return
}
se.$gallerylayers=$('<div class="gallerylayer"></div><div class="gallerylayer"></div>') 
.css({position:'absolute', left:0, top:0, width:'100%', height:'100%', background:'#064185'})
.appendTo(se.$wrapperdiv)
var $loadingimg=$('<img src="'+fadeSlideShow_descpanel.controls[2][0]+'" style="position:absolute;width:'+fadeSlideShow_descpanel.controls[2][1]+';height:'+fadeSlideShow_descpanel.controls[2][2]+'" />')
.css({left:se.dimensions[0]/2-fadeSlideShow_descpanel.controls[2][1]/2, top:se.dimensions[1]/2-fadeSlideShow_descpanel.controls[2][2]}) 
.appendTo(se.$wrapperdiv)
var $curimage=se.$gallerylayers.html(fullhtml).find('img').hide().eq(se.curimage) 
if (se.longestdesc!=""){ 
fadeSlideShow.routines.adddescpanel($, se)
if (se.descreveal=="always"){ 
se.$descpanel.css({top:se.dimensions[1]-se.panelheight})
se.$descinner.click(function(e){ 
if (e.target.className=="close"){
slideshow.showhidedescpanel('hide')
}
})
se.$restorebutton.click(function(e){ 
slideshow.showhidedescpanel('show')
$(this).css({visibility:'hidden'})
})
}
else{ 
se.$wrapperdiv.bind('mouseenter', function(){slideshow.showhidedescpanel('show')})
se.$wrapperdiv.bind('mouseleave', function(){slideshow.showhidedescpanel('hide')})
}
}
se.$wrapperdiv.bind('mouseenter', function(){se.ismouseover=true}) 
se.$wrapperdiv.bind('mouseleave', function(){se.ismouseover=false})
if ($curimage.get(0).complete){ 
$loadingimg.hide()
slideshow.paginateinit($)
slideshow.showslide(se.curimage)
}
else{ 
$loadingimg.hide()
slideshow.paginateinit($)
$curimage.bind('load', function(){slideshow.showslide(se.curimage)})
}
se.oninit.call(slideshow) 
$(window).bind('unload', function(){ 
if (slideshow.se.persist) 
fadeSlideShow.routines.setCookie("gallery-"+se.wrapperid, se.curimage)
jQuery.each(slideshow.se, function(k){
if (slideshow.se[k] instanceof Array){
for (var i=0; i<slideshow.se[k].length; i++){
if (slideshow.se[k][i].tagName=="DIV") 
slideshow.se[k][i].innerHTML=null
slideshow.se[k][i]=null
}
}
})
slideshow=slideshow.se=null
})
})
}

fadeSlideShow.prototype={

navigate:function(keyword){
var se=this.se
clearTimeout(se.playtimer)
if (se.displaymode.type=="auto"){ 
se.displaymode.type="manual" 
se.displaymode.wraparound=true 
}
if (!isNaN(parseInt(keyword))){ 
this.showslide(parseInt(keyword))
}
else if (/(prev)|(next)/i.test(keyword)){ 
this.showslide(keyword.toLowerCase())
}
},

showslide:function(keyword){
var slideshow=this
var se=slideshow.se
if (se.displaymode.type=="auto" && se.ismouseover && se.currentstep<=se.totalsteps){ 
se.playtimer=setTimeout(function(){slideshow.showslide('next')}, se.displaymode.pause)
return
}
var totalimages=se.imagearray.length
var imgindex=(keyword=="next")? (se.curimage<totalimages-1? se.curimage+1 : 0)
: (keyword=="prev")? (se.curimage>0? se.curimage-1 : totalimages-1)
: Math.min(keyword, totalimages-1)
var $slideimage=se.$gallerylayers.eq(se.bglayer).find('img').hide().eq(imgindex).show() 
var imgdimensions=[$slideimage.width(), $slideimage.height()] 
if (navigator.appName.indexOf("Netscape")!=-1)
$slideimage.css({marginLeft: (imgdimensions[0]>0 && imgdimensions[0]<se.dimensions[0])? se.dimensions[0]/2-imgdimensions[0]/2 : 0})
else
$slideimage.css({marginLeft: 0})
$slideimage.css({marginTop: (imgdimensions[1]>0 && imgdimensions[1]<se.dimensions[1])? se.dimensions[1]/2-imgdimensions[1]/2 : 0})
se.$gallerylayers.eq(se.bglayer).css({zIndex:1000, opacity:0}) 
.stop().css({opacity:0}).animate({opacity:1}, se.fadeduration, function(){ 
clearTimeout(se.playtimer)
try{
se.onslide.call(slideshow, se.$gallerylayers.eq(se.fglayer).get(0), se.curimage)
}catch(e){
alert("Fade In Slideshow error: An error has occured somwhere in your code attached to the \"onslide\" event: "+e)
}
se.currentstep+=1
if (se.displaymode.type=="auto"){
if (se.currentstep<=se.totalsteps || se.displaymode.cycles==0)
se.playtimer=setTimeout(function(){slideshow.showslide('next')}, se.displaymode.pause)
}
}) 
se.$gallerylayers.eq(se.fglayer).css({zIndex:999}) 
se.fglayer=se.bglayer
se.bglayer=(se.bglayer==0)? 1 : 0
se.curimage=imgindex


if (se.$descpanel)
se.$descpanel.css({visibility:(se.imagearray[imgindex][3])? 'visible' : 'hidden'})
if (se.imagearray[imgindex][3])
se.$descinner.empty().html(se.closebutton + se.imagearray[imgindex][3])
if (se.displaymode.type=="manual" && !se.displaymode.wraparound){
this.paginatecontrol()
}
if (se.$status) 
se.$status.html(se.curimage+1 + "/" + totalimages)
},

showhidedescpanel:function(state, showcontrol){
var se=this.se
var endpoint=(state=="show")? se.dimensions[1]-se.panelheight : this.se.dimensions[1]
se.$descpanel.stop().animate({top:endpoint}, fadeSlideShow_descpanel.slidespeed, function(){
if (se.descreveal=="always" && state=="hide")
se.$restorebutton.css({visibility:'visible'}) 
})
},

paginateinit:function($){
var slideshow=this
var se=this.se
if (se.togglerid){ 
se.$togglerdiv=$("#"+se.togglerid)
se.$prev=se.$togglerdiv.find('.prev').data('action', 'prev')
se.$next=se.$togglerdiv.find('.next').data('action', 'next')
se.$prev.add(se.$next).click(function(e){ 
var $target=$(this)
slideshow.navigate($target.data('action'))
e.preventDefault()
})
se.$status=se.$togglerdiv.find('.status')
}
},

paginatecontrol:function(){
var se=this.se
se.$prev.css({opacity:(se.curimage==0)? 0.4 : 1}).data('action', (se.curimage==0)? 'none' : 'prev')
se.$next.css({opacity:(se.curimage==se.imagearray.length-1)? 0.4 : 1}).data('action', (se.curimage==se.imagearray.length-1)? 'none' : 'next')
if (document.documentMode==8){ 
se.$prev.find('img:eq(0)').css({opacity:(se.curimage==0)? 0.4 : 1})
se.$next.find('img:eq(0)').css({opacity:(se.curimage==se.imagearray.length-1)? 0.4 : 1})
}
}
}

fadeSlideShow.routines={
getSlideHTML:function(imgelement){
var layerHTML=(imgelement[1])? '<a href="'+imgelement[1]+'" target="'+imgelement[2]+'">\n' : '' 
layerHTML+='<img src="'+imgelement[0]+'" style="border-width:0; line-height:0; margin:0px; padding:0px;" />\n'
layerHTML+=(imgelement[1])? '</a>\n' : ''
return layerHTML 
},

getFullHTML:function(imagearray){
var preloadhtml=''
for (var i=0; i<imagearray.length; i++)
preloadhtml+=this.getSlideHTML(imagearray[i])
return preloadhtml
},

adddescpanel:function($, se){
se.$descpanel=$('<div class="fadeslidedescdiv"></div>')
.css({position:'absolute', visibility:'hidden', width:'100%', left:0, top:se.dimensions[1], font:fadeSlideShow_descpanel.fontStyle, zIndex:'1001'})
.appendTo(se.$wrapperdiv)
$('<div class="descpanelbg" style="text-align:center; line-height: 100%;"></div><div class="descpanelfg" style="text-align:center"; line-height: 100%;></div>') 
.css({position:'absolute', left:0, top:0, width:se.$descpanel.width()-8, padding:'4px'})
.eq(0).css({background:'#064185', opacity:0.55}).end() 
.eq(1).css({color:'white'}).html(se.closebutton + se.longestdesc).end() 
.appendTo(se.$descpanel)
se.$descinner=se.$descpanel.find('div.descpanelfg')
se.panelheight=se.$descinner.outerHeight()
se.$descpanel.css({height:se.panelheight}).find('div').css({height:'100%'})
if (se.descreveal=="always"){ 
se.$restorebutton=$('<img class="restore" title="Restore Description" src="' + fadeSlideShow_descpanel.controls[1][0] +'" style="position:absolute;visibility:hidden;right:0;bottom:0;z-index:1002;width:'+fadeSlideShow_descpanel.controls[1][1]+'px;height:'+fadeSlideShow_descpanel.controls[1][2]+'px;cursor:pointer;cursor:hand" />')
.appendTo(se.$wrapperdiv)
}
},
getCookie:function(Name){ 
var re=new RegExp(Name+"=[^;]+", "i"); 
if (document.cookie.match(re)) 
return document.cookie.match(re)[0].split("=")[1] 
return null
},
setCookie:function(name, value){
document.cookie = name+"=" + value + ";path=/"
}
}

