(function($){$.facebox=function(data){facebox_init()
facebox_loading()
$.isFunction(data)?data.call(this,$):facebox_reveal(data)
return $}
$.facebox.settings={loading_image:'/facebox/loading.gif',close_image:'/facebox/closelabel.gif',image_types:['png','jpg','jpeg','gif'],next_image:'/facebox/next.gif',prev_image:'/facebox/prev.gif',play_image:'/facebox/play.gif',pause_image:'/facebox/pause.gif',slide_duration:6,facebox_html:'\
  <div id="cmscode-facebox" style="display:none;"> \
    <div class="cmscode-popup"> \
      <table> \
        <tbody> \
          <tr> \
            <td class="cmscode-tl"/><td class="cmscode-b"/><td class="cmscode-tr"/> \
          </tr> \
          <tr> \
            <td class="cmscode-b"/> \
            <td class="cmscode-body"> \
              <div class="cmscode-content"> \
              </div> \
              <div class=""> \
                  <div class="cmscode-info"></div> \
                  <div class="cmscode-title"></div> \
              </div> \
              <div class="cmscode-footer"> \
                <div class="cmscode-navigation"></div> \
                <a href="#" class="cmscode-close"> \
                  <img src="/facebox/loading.gif" title="close" class="cmscode-close_image" /> \
                </a> \
                <div class="cmscode-caption"></div> \
              </div> \
            </td> \
            <td class="cmscode-b"/> \
          </tr> \
          <tr> \
            <td class="cmscode-bl"/><td class="cmscode-b"/><td class="cmscode-br"/> \
          </tr> \
        </tbody> \
      </table> \
    </div> \
  </div>'}
var $s=$.facebox.settings
$.fn.facebox=function(settings){facebox_init(settings)
var image_types=$s.image_types.join('|')
image_types=new RegExp('\.'+image_types+'$','i')
var images=[];var images_info=[];$(this).each(function(){if(this.href.match(image_types)&&$.inArray(this.href,images)==-1){images.push(this.href)
var last_index=images.length-1;var $image=$('img',this);var title=$image.attr('title')?$image.attr('title'):'';var caption=$image.attr('alt')?$image.attr('alt'):'';var image_info={title:title,caption:caption};images_info[last_index]=image_info;}})
if(images.length==1)images=null
function click_handler(){if($('#cmscode-facebox .cmscode-loading').length==1)return false
facebox_loading()
var klass=this.rel.match(/facebox\[\.(\w+)\]/)
if(klass)klass=klass[1]
if(this.href.match(/#/)){var url=window.location.href.split('#')[0]
var target=this.href.replace(url,'')
facebox_reveal($(target).clone().show(),klass)}else if(this.href.match(image_types)){facebox_reveal_image(this.href,images,klass,images_info)}else{$.get(this.href,function(data){facebox_reveal(data,klass)})}
return false}
return this.click(click_handler)}
function facebox_init(settings){if($s.inited&&typeof settings=='undefined')
return true
else
$s.inited=true
if(settings)$.extend($s,settings)
$('body').append($s.facebox_html)
var preload=[new Image(),new Image()]
preload[0].src=$s.close_image
preload[1].src=$s.loading_image
$('#cmscode-facebox').find('.cmscode-b:first, .cmscode-bl, .cmscode-br, .cmscode-tl, .cmscode-tr').each(function(){preload.push(new Image())
preload.slice(-1).src=$(this).css('background-image').replace(/url\((.+)\)/,'$1')})
$('#cmscode-facebox .cmscode-close').click(facebox_close)
$('#cmscode-facebox .cmscode-close_image').attr('src',$s.close_image)}
function facebox_loading(){if($('#cmscode-facebox .cmscode-loading').length==1)return true
$(document).unbind('.facebox')
$('#cmscode-facebox .cmscode-content, #cmscode-facebox .cmscode-info, #cmscode-facebox .cmscode-navigation, #cmscode-facebox .cmscode-title, #cmscode-facebox .cmscode-caption').empty()
$('#cmscode-facebox .cmscode-body').children().hide().end().append('<div class="cmscode-loading"><img src="'+$s.loading_image+'"/></div>')
var pageScroll=getPageScroll()
$('#cmscode-facebox').css({top:pageScroll[1]+(getPageHeight()/10),left:pageScroll[0]}).show()
$(document).bind('keydown.facebox',function(e){if(e.keyCode==27)facebox_close()})}
function facebox_reveal(data,klass,extra_setup){$('#cmscode-facebox .cmscode-content').addClass(klass).append(data)
$('#cmscode-facebox .cmscode-loading').remove()
if($.isFunction(extra_setup))extra_setup.call(this)
$('#cmscode-facebox .cmscode-body > *').fadeIn('normal')}
function facebox_reveal_image(href,images,klass,images_info){if(images)var extra_setup=facebox_setup_gallery(href,images,klass,images_info)
var image=new Image()
image.onload=function(){facebox_reveal('<div class="cmscode-image"><img src="'+image.src+'" /></div>',klass,extra_setup)
if(images){var position=$.inArray(href,images)
var next=new Image()
next.src=images[position+1]?images[position+1]:images[0]}}
image.src=href
if(!images){$('#cmscode-facebox .cmscode-title').append(images_info[0].title);$('#cmscode-facebox .cmscode-caption').append(images_info[0].caption);}}
function facebox_close(){facebox_stop_slideshow()
$(document).unbind('.facebox')
$('#cmscode-facebox').fadeOut(function(){$('#cmscode-facebox .cmscode-content').removeClass().addClass('cmscode-content')})
return false}
function facebox_setup_gallery(href,images,klass,images_info){var position=$.inArray(href,images)
var jump=function(where){facebox_loading()
if(where>=images.length)where=0
if(where<0)where=images.length-1
facebox_reveal_image(images[where],images,klass,images_info)}
var get_image_title=function(href,image_info){if(image_info.title){return image_info.title;}
var parts=href.split('/');var basename=parts[parts.length-1];var name_parts=basename.split('.');var name=name_parts.slice(0,name_parts.length-1).join('.');return name;}
var get_image_caption=function(image_info){if(image_info.caption){return image_info.caption;}else{return'&nbsp;';}}
return function(){$('#cmscode-facebox .cmscode-image').click(function(){jump(position+1)}).css('cursor','pointer');$('#cmscode-facebox .cmscode-info').append('Image '+(position+1)+' of '+images.length);$('#cmscode-facebox .cmscode-title').append(get_image_title(href,images_info[position]));$('#cmscode-facebox .cmscode-caption').append(get_image_caption(images_info[position]));$('#cmscode-facebox .cmscode-navigation').append('<img class="cmscode-prev" src="'+$s.prev_image+'"/>'+'<img class="cmscode-play" src="'+($s.playing?$s.pause_image:$s.play_image)+'"/>'+'<img class="cmscode-next" src="'+$s.next_image+'"/>').find('img').css('cursor','pointer').end().find('.cmscode-prev').click(function(){jump(position-1);return false}).end().find('.cmscode-next').click(function(){jump(position+1);return false}).end()
$('#cmscode-facebox .cmscode-play').bind('click.facebox',function(){$s.playing?facebox_stop_slideshow():facebox_start_slideshow()
return false})
$(document).bind('keydown.facebox',function(e){if(e.keyCode==39)jump(position+1)
if(e.keyCode==37)jump(position-1)})}}
function facebox_start_slideshow(){$('#cmscode-facebox .cmscode-play').attr('src',$s.pause_image)
$s.playing=setInterval(function(){$('#cmscode-facebox .cmscode-next').click()},$s.slide_duration*1000)}
function facebox_stop_slideshow(){$('#cmscode-facebox .cmscode-play').attr('src',$s.play_image)
clearInterval($s.playing)
$s.playing=false}
function getPageScroll(){var xScroll,yScroll;if(self.pageYOffset){yScroll=self.pageYOffset;xScroll=self.pageXOffset;}else if(document.documentElement&&document.documentElement.scrollTop){yScroll=document.documentElement.scrollTop;xScroll=document.documentElement.scrollLeft;}else if(document.body){yScroll=document.body.scrollTop;xScroll=document.body.scrollLeft;}
return new Array(xScroll,yScroll)}
function getPageHeight(){var windowHeight
if(self.innerHeight){windowHeight=self.innerHeight;}else if(document.documentElement&&document.documentElement.clientHeight){windowHeight=document.documentElement.clientHeight;}else if(document.body){windowHeight=document.body.clientHeight;}
return windowHeight}})(jQuery);
