(function($){
$.prettyPhoto={version:'2.5.4'};
$.fn.prettyPhoto=function(settings){
settings=jQuery.extend({
animationSpeed:'normal',
padding:40,
opacity:0.80,
showTitle:false,
allowresize:true,
counter_separator_label:'/',
theme:'light_rounded',
hideflash:false,
modal:false,
changepicturecallback:function(){},
callback:function(){} 
},settings);
if($.browser.msie && $.browser.version==6){
settings.theme="light_square";
}
if($('.pp_overlay').size()==0){
_buildOverlay(); 
}else{
$pp_pic_holder=$('.pp_pic_holder');
$ppt=$('.ppt');
}
var doresize=true,percentBased=false,correctSizes,
$pp_pic_holder,$ppt,
pp_contentHeight,pp_contentWidth,pp_containerHeight,pp_containerWidth,pp_type='image',
setPosition=0,
$scrollPos=_getScroll();
$(window).scroll(function(){$scrollPos=_getScroll(); _centerOverlay(); _resizeOverlay(); });
$(window).resize(function(){_centerOverlay(); _resizeOverlay(); });
$(document).keydown(function(e){
if($pp_pic_holder.is(':visible'))
switch(e.keyCode){
case 37:
$.prettyPhoto.changePage('previous');
break;
case 39:
$.prettyPhoto.changePage('next');
break;
case 27:
if(!settings.modal)
$.prettyPhoto.close();
break;
};
});
$(this).each(function(){
$(this).bind('click',function(){
link=this; 
theRel=$(this).attr('rel');
galleryRegExp=/\[(?:.*)\]/;
theGallery=galleryRegExp.exec(theRel);
var images=new Array(),titles=new Array(),descriptions=new Array();
if(theGallery){
$('a[rel*='+theGallery+']').each(function(i){
if($(this)[0]===$(link)[0]) setPosition=i; 
images.push($(this).attr('href'));
titles.push($(this).find('img').attr('alt'));
descriptions.push($(this).attr('title'));
});
}else{
images=$(this).attr('href');
titles=($(this).find('img').attr('alt')) ? $(this).find('img').attr('alt') :'';
descriptions=($(this).attr('title')) ? $(this).attr('title') :'';
}
$.prettyPhoto.open(images,titles,descriptions);
return false;
});
});

$.prettyPhoto.open=function(gallery_images,gallery_titles,gallery_descriptions){
if($.browser.msie && $.browser.version==6){
$('select').css('visibility','hidden');
};
if(settings.hideflash) $('object,embed').css('visibility','hidden');
images=$.makeArray(gallery_images);
titles=$.makeArray(gallery_titles);
descriptions=$.makeArray(gallery_descriptions);
if($('.pp_overlay').size()==0){
_buildOverlay(); 
}else{
$pp_pic_holder=$('.pp_pic_holder');
$ppt=$('.ppt');
}
$pp_pic_holder.attr('class','pp_pic_holder ' + settings.theme);
isSet=($(images).size() > 0) ? true :false;
_getFileType(images[setPosition]);
_centerOverlay();
_checkPosition($(images).size());
$('.pp_loaderIcon').show(); 
$('div.pp_overlay').show().fadeTo(settings.animationSpeed,settings.opacity,function(){
$pp_pic_holder.fadeIn(settings.animationSpeed,function(){
$pp_pic_holder.find('p.currentTextHolder').text((setPosition+1) + settings.counter_separator_label + $(images).size());
if(descriptions[setPosition]){
$pp_pic_holder.find('.pp_description').show().html(unescape(descriptions[setPosition]));
}else{
$pp_pic_holder.find('.pp_description').hide().text('');
};
if(titles[setPosition] && settings.showTitle){
hasTitle=true;
$ppt.html(unescape(titles[setPosition]));
}else{
hasTitle=false;
};
if(pp_type=='image'){
imgPreloader=new Image();
nextImage=new Image();
if(isSet && setPosition > $(images).size()) nextImage.src=images[setPosition + 1];
prevImage=new Image();
if(isSet && images[setPosition - 1]) prevImage.src=images[setPosition - 1];
pp_typeMarkup='<img id="fullResImage" src="" />'; 
$pp_pic_holder.find('#pp_full_res')[0].innerHTML=pp_typeMarkup;
$pp_pic_holder.find('.pp_content').css('overflow','hidden');
$pp_pic_holder.find('#fullResImage').attr('src',images[setPosition]);
imgPreloader.onload=function(){
correctSizes=_fitToViewport(imgPreloader.width,imgPreloader.height);
_showContent();
};
imgPreloader.src=images[setPosition];
}else{
movie_width=( parseFloat(grab_param('width',images[setPosition])) ) ? grab_param('width',images[setPosition]) :"425";
movie_height=( parseFloat(grab_param('height',images[setPosition])) ) ? grab_param('height',images[setPosition]) :"344";
if(movie_width.indexOf('%') !=-1 || movie_height.indexOf('%') !=-1){
movie_height=($(window).height() * parseFloat(movie_height) / 100) - 100;
movie_width=($(window).width() * parseFloat(movie_width) / 100) - 100;
percentBased=true;
}
movie_height=parseFloat(movie_height);
movie_width=parseFloat(movie_width);
if(pp_type=='quicktime') movie_height+=15; 
correctSizes=_fitToViewport(movie_width,movie_height);
if(pp_type=='youtube'){
pp_typeMarkup='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+correctSizes['width']+'" height="'+correctSizes['height']+'"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://www.youtube.com/v/'+grab_param('v',images[setPosition])+'" /><embed src="http://www.youtube.com/v/'+grab_param('v',images[setPosition])+'" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="'+correctSizes['width']+'" height="'+correctSizes['height']+'"></embed></object>';
}else if(pp_type=='quicktime'){
pp_typeMarkup='<object classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" codebase="http://www.apple.com/qtactivex/qtplugin.cab" height="'+correctSizes['height']+'" width="'+correctSizes['width']+'"><param name="src" value="'+images[setPosition]+'"><param name="autoplay" value="true"><param name="type" value="video/quicktime"><embed src="'+images[setPosition]+'" height="'+correctSizes['height']+'" width="'+correctSizes['width']+'" autoplay="true" type="video/quicktime" pluginspage="http://www.apple.com/quicktime/download/"></embed></object>';
}else if(pp_type=='flash'){
flash_vars=images[setPosition];
flash_vars=flash_vars.substring(images[setPosition].indexOf('flashvars') + 10,images[setPosition].length);
filename=images[setPosition];
filename=filename.substring(0,filename.indexOf('?'));
pp_typeMarkup='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+correctSizes['width']+'" height="'+correctSizes['height']+'"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="'+filename+'?'+flash_vars+'" /><embed src="'+filename+'?'+flash_vars+'" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="'+correctSizes['width']+'" height="'+correctSizes['height']+'"></embed></object>';
}else if(pp_type=='iframe'){
movie_url=images[setPosition];
movie_url=movie_url.substr(0,movie_url.indexOf('iframe')-1);
pp_typeMarkup='<iframe src="'+movie_url+'" width="'+(correctSizes['width']-10)+'" height="'+(correctSizes['height']-10)+'" frameborder="no"></iframe>';
}

_showContent();
}
});
});
};
$.prettyPhoto.changePage=function(direction){
if(direction=='previous'){
setPosition--;
if (setPosition<0){
setPosition=0;
return;
}
}else{
if($('.pp_arrow_next').is('.disabled')) return;
setPosition++;
};

if(!doresize) doresize=true;
_hideContent();
$('a.pp_expand,a.pp_contract').fadeOut(settings.animationSpeed,function(){
$(this).removeClass('pp_contract').addClass('pp_expand');
$.prettyPhoto.open(images,titles,descriptions);
});
};

$.prettyPhoto.close=function(){
$pp_pic_holder.find('object,embed').css('visibility','hidden');
$('div.pp_pic_holder,div.ppt').fadeOut(settings.animationSpeed);
$('div.pp_overlay').fadeOut(settings.animationSpeed,function(){
$('div.pp_overlay,div.pp_pic_holder,div.ppt').remove();
if($.browser.msie && $.browser.version==6){
$('select').css('visibility','visible');
};
if(settings.hideflash) $('object,embed').css('visibility','visible');
setPosition=0;
settings.callback();
});
doresize=true;
};

_showContent=function(){
$('.pp_loaderIcon').hide();
if($.browser.opera){
windowHeight=window.innerHeight;
windowWidth=window.innerWidth;
}else{
windowHeight=$(window).height();
windowWidth=$(window).width();
};

projectedTop=$scrollPos['scrollTop'] + ((windowHeight/2) - (correctSizes['containerHeight']/2));
if(projectedTop<0) projectedTop=0 + $pp_pic_holder.find('.ppt').height();
$pp_pic_holder.find('.pp_content').animate({'height':correctSizes['contentHeight']},settings.animationSpeed);
$pp_pic_holder.animate({
'top':projectedTop,
'left':((windowWidth/2) - (correctSizes['containerWidth']/2)),
'width':correctSizes['containerWidth']
},settings.animationSpeed,function(){
$pp_pic_holder.width(correctSizes['containerWidth']);
$pp_pic_holder.find('.pp_hoverContainer,#fullResImage').height(correctSizes['height']).width(correctSizes['width']);
$pp_pic_holder.find('#pp_full_res').fadeIn(settings.animationSpeed);
if(isSet && pp_type=="image"){$pp_pic_holder.find('.pp_hoverContainer').fadeIn(settings.animationSpeed); }else{$pp_pic_holder.find('.pp_hoverContainer').hide(); }
$pp_pic_holder.find('.pp_details').fadeIn(settings.animationSpeed);
if(settings.showTitle && hasTitle){
$ppt.css({
'top' :$pp_pic_holder.offset().top - 20,
'left' :$pp_pic_holder.offset().left + (settings.padding/2),
'display' :'none'
});
$ppt.fadeIn(settings.animationSpeed);
};
if(correctSizes['resized']) $('a.pp_expand,a.pp_contract').fadeIn(settings.animationSpeed);
if(pp_type !='image') $pp_pic_holder.find('#pp_full_res')[0].innerHTML=pp_typeMarkup;
settings.changepicturecallback();
});
};
function _hideContent(){
$pp_pic_holder.find('#pp_full_res object,#pp_full_res embed').css('visibility','hidden');
$pp_pic_holder.find('.pp_hoverContainer,.pp_details').fadeOut(settings.animationSpeed);
$pp_pic_holder.find('#pp_full_res').fadeOut(settings.animationSpeed,function(){
$('.pp_loaderIcon').show();
});

$ppt.fadeOut(settings.animationSpeed);
}

function _checkPosition(setCount){
if(setPosition==setCount-1){
$pp_pic_holder.find('a.pp_next').css('visibility','hidden');
$pp_pic_holder.find('a.pp_arrow_next').addClass('disabled').unbind('click');
}else{
$pp_pic_holder.find('a.pp_next').css('visibility','visible');
$pp_pic_holder.find('a.pp_arrow_next.disabled').removeClass('disabled').bind('click',function(){
$.prettyPhoto.changePage('next');
return false;
});
};
if(setPosition==0){
$pp_pic_holder.find('a.pp_previous').css('visibility','hidden');
$pp_pic_holder.find('a.pp_arrow_previous').addClass('disabled').unbind('click');
}else{
$pp_pic_holder.find('a.pp_previous').css('visibility','visible');
$pp_pic_holder.find('a.pp_arrow_previous.disabled').removeClass('disabled').bind('click',function(){
$.prettyPhoto.changePage('previous');
return false;
});
};
if(setCount > 1){
$('.pp_nav').show();
}else{
$('.pp_nav').hide();
}
};

function _fitToViewport(width,height){
hasBeenResized=false;
_getDimensions(width,height);
imageWidth=width;
imageHeight=height;
windowHeight=$(window).height();
windowWidth=$(window).width();
if( ((pp_containerWidth > windowWidth) || (pp_containerHeight > windowHeight)) && doresize && settings.allowresize && !percentBased){
hasBeenResized=true;
notFitting=true;
while (notFitting){
if((pp_containerWidth > windowWidth)){
imageWidth=(windowWidth - 200);
imageHeight=(height/width) * imageWidth;
}else if((pp_containerHeight > windowHeight)){
imageHeight=(windowHeight - 200);
imageWidth=(width/height) * imageHeight;
}else{
notFitting=false;
};
pp_containerHeight=imageHeight;
pp_containerWidth=imageWidth;
};
_getDimensions(imageWidth,imageHeight);
};
return{
width:imageWidth,
height:imageHeight,
containerHeight:pp_containerHeight,
containerWidth:pp_containerWidth,
contentHeight:pp_contentHeight,
contentWidth:pp_contentWidth,
resized:hasBeenResized
};
};

function _getDimensions(width,height){
$pp_pic_holder.find('.pp_details').width(width).find('.pp_description').width(width - parseFloat($pp_pic_holder.find('a.pp_close').css('width'))); /* To have the correct height */
pp_contentHeight=height + $pp_pic_holder.find('.pp_details').height() + parseFloat($pp_pic_holder.find('.pp_details').css('marginTop')) + parseFloat($pp_pic_holder.find('.pp_details').css('marginBottom'));
pp_contentWidth=width;
pp_containerHeight=pp_contentHeight + $pp_pic_holder.find('.ppt').height() + $pp_pic_holder.find('.pp_top').height() + $pp_pic_holder.find('.pp_bottom').height();
pp_containerWidth=width + settings.padding;
}
function _getFileType(itemSrc){
if (itemSrc.match(/youtube\.com\/watch/i)){
pp_type='youtube';
}else if(itemSrc.indexOf('.mov') !=-1){
pp_type='quicktime';
}else if(itemSrc.indexOf('.swf') !=-1){
pp_type='flash';
}else if(itemSrc.indexOf('iframe') !=-1){
pp_type='iframe'
}else{
pp_type='image';
};
};
function _centerOverlay(){
if($.browser.opera){
windowHeight=window.innerHeight;
windowWidth=window.innerWidth;
}else{
windowHeight=$(window).height();
windowWidth=$(window).width();
};
if(doresize){
$pHeight=$pp_pic_holder.height();
$pWidth=$pp_pic_holder.width();
$tHeight=$ppt.height();
projectedTop=(windowHeight/2) + $scrollPos['scrollTop'] - ($pHeight/2);
if(projectedTop<0) projectedTop=0 + $tHeight;
$pp_pic_holder.css({
'top':projectedTop,
'left':(windowWidth/2) + $scrollPos['scrollLeft'] - ($pWidth/2)
});
$ppt.css({
'top' :projectedTop - $tHeight,
'left' :(windowWidth/2) + $scrollPos['scrollLeft'] - ($pWidth/2) + (settings.padding/2)
});
};
};
function _getScroll(){
if (self.pageYOffset){
scrollTop=self.pageYOffset;
scrollLeft=self.pageXOffset;
} else if (document.documentElement && document.documentElement.scrollTop){// Explorer 6 Strict
scrollTop=document.documentElement.scrollTop;
scrollLeft=document.documentElement.scrollLeft;
} else if (document.body){
scrollTop=document.body.scrollTop;
scrollLeft=document.body.scrollLeft; 
}
return{scrollTop:scrollTop,scrollLeft:scrollLeft};
};
function _resizeOverlay(){
$('div.pp_overlay').css({
'height':$(document).height(),
'width':$(window).width()
});
};
function _buildOverlay(){
toInject="";
toInject +="<div class='pp_overlay'></div>";
toInject +='<div class="pp_pic_holder"><div class="pp_top"><div class="pp_left"></div><div class="pp_middle"></div><div class="pp_right"></div></div><div class="pp_content"><a href="#" class="pp_expand" title="Expand the image">Expand</a><div class="pp_loaderIcon"></div><div class="pp_hoverContainer"><a class="pp_next" href="#">next</a><a class="pp_previous" href="#">previous</a></div><div id="pp_full_res"></div><div class="pp_details clearfix"><a class="pp_close" href="#">Close</a><p class="pp_description"></p><div class="pp_nav"><a href="#" class="pp_arrow_previous">Previous</a><p class="currentTextHolder">0'+settings.counter_separator_label+'0</p><a href="#" class="pp_arrow_next">Next</a></div></div></div><div class="pp_bottom"><div class="pp_left"></div><div class="pp_middle"></div><div class="pp_right"></div></div></div>';
toInject +='<div class="ppt"></div>';
$('body').append(toInject);
$('div.pp_overlay').css('opacity',0);
$pp_pic_holder=$('.pp_pic_holder');
$ppt=$('.ppt');
$('div.pp_overlay').css('height',$(document).height()).hide().bind('click',function(){
if(!settings.modal)
$.prettyPhoto.close();
});
$('a.pp_close').bind('click',function(){$.prettyPhoto.close(); return false; });
$('a.pp_expand').bind('click',function(){
$this=$(this); 
if($this.hasClass('pp_expand')){
$this.removeClass('pp_expand').addClass('pp_contract');
doresize=false;
}else{
$this.removeClass('pp_contract').addClass('pp_expand');
doresize=true;
};
_hideContent();
$pp_pic_holder.find('.pp_hoverContainer,.pp_details').fadeOut(settings.animationSpeed);
$pp_pic_holder.find('#pp_full_res').fadeOut(settings.animationSpeed,function(){
$.prettyPhoto.open(images,titles,descriptions);
});
return false;
});
$pp_pic_holder.find('.pp_previous,.pp_arrow_previous').bind('click',function(){
$.prettyPhoto.changePage('previous');
return false;
});
$pp_pic_holder.find('.pp_next,.pp_arrow_next').bind('click',function(){
$.prettyPhoto.changePage('next');
return false;
});
$pp_pic_holder.find('.pp_hoverContainer').css({
'margin-left':settings.padding/2
});
};
};
function grab_param(name,url){
name=name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS="[\\?&]"+name+"=([^&#]*)";
var regex=new RegExp( regexS );
var results=regex.exec( url );
if( results==null )
return "";
else
return results[1];
}
})(jQuery);
