(function() {var initializing = false,fnTest = /xyz/.test(function(){xyz;}) ? /\b__super\b/ : /.*/,Class = function(){},window = this;Class.extend = function(prop){var __super = this.prototype;initializing = true;var proto = new this();initializing = false;for (var name in prop){if (name) {proto[name] = typeof prop[name] == "function" && typeof __super[name] == "function" && fnTest.test(prop[name])?(function(name,fn) {return function(){var tmp=this.__super;this.__super=__super[name];var ret=fn.apply(this,arguments);this.__super = tmp;return ret;};})(name,prop[name]) : prop[name];}}
function Class() {if ( !initializing && this.__constructor ) {this.__constructor.apply(this,arguments);}}
Class.prototype = proto;Class.constructor = Class;Class.extend = arguments.callee;return Class;};var Base = Class.extend({loop : function( elem,fn) {var scope = this;if (typeof elem == 'number') {elem = new Array(elem);}
jQuery.each(elem,function() {fn.call(scope,arguments[1],arguments[0]);});return elem;},create : function( elem,className ) {elem = elem || 'div';var el = document.createElement(elem);if (className) {el.className = className;}
return el;},getElements : function( selector ) {var elems = {};this.loop( jQuery(selector),this.proxy(function( elem ) {this.push(elem,elems);}));return elems;},setStyle : function( elem,css ) {jQuery(elem).css(css);return this;},getStyle : function( elem,styleProp,parse ) {var val = jQuery(elem).css(styleProp);return parse ? this.parseValue( val ) : val;},cssText : function( string ) {var style = document.createElement('style');this.getElements('head')[0].appendChild(style);if (style.styleSheet) {
style.styleSheet.cssText = string;} else {var cssText = document.createTextNode(string);style.appendChild(cssText);}
return this;},touch : function(el) {var sibling = el.nextSibling;var parent = el.parentNode;parent.removeChild(el);if ( sibling ) {parent.insertBefore(el,sibling);} else {parent.appendChild(el);}
if (el.styleSheet && el.styleSheet.imports.length) {this.loop(el.styleSheet.imports,function(i) {el.styleSheet.addImport(i.href);});}},loadCSS : function(href,callback) {var exists = this.getElements('link[href="'+href+'"]').length;if (exists) {callback.call(null);return exists[0];}
var link = this.create('link');link.rel = 'stylesheet';link.href = href; if (typeof callback == 'function') {
this.wait(function() {return !!document.body;},function() {var testElem = this.create('div','galleria-container galleria-stage');this.moveOut(testElem);document.body.appendChild(testElem);var getStyles = this.proxy(function() { var str = ''; var props; if (document.defaultView && document.defaultView.getComputedStyle) { props = document.defaultView.getComputedStyle(testElem,""); this.loop(props,function(prop) { str += prop + props.getPropertyValue(prop);});} else if (testElem.currentStyle){props = testElem.currentStyle; this.loop(props,function(val,prop) { str += prop + val;});}
return str;});var current = getStyles();this.wait(function() { return getStyles() !== current;},function() { document.body.removeChild(testElem); callback.call(link);},function() { G.raise('Could not confirm theme CSS');},2000);});}window.setTimeout(this.proxy(function() {var styles = this.getElements('link[rel="stylesheet"],style');if (styles.length) {styles[0].parentNode.insertBefore(link,styles[0]);} else {this.getElements('head')[0].appendChild(link);}if (G.IE) {this.loop(styles,function(el) { this.touch(el);})}}),2);return link;},moveOut : function( elem ) {return this.setStyle(elem,{position: 'absolute',left: '-10000px',display: 'block'});},moveIn : function( elem ) {return this.setStyle(elem,{left: '0'});},reveal : function( elem ) {return jQuery( elem ).show();},hide : function( elem ) {return jQuery( elem ).hide();},mix : function() {return jQuery.extend.apply(jQuery,arguments);},proxy : function( fn,scope ) {if ( typeof fn !== 'function' ) {return function() {};} scope = scope || this;return function() {return fn.apply( scope,Array.prototype.slice.call(arguments) );};},listen : function( elem,type,fn ) {jQuery(elem).bind( type,fn );},forget : function( elem,type,fn ) {jQuery(elem).unbind(type,fn);},dispatch : function( elem,type ) {jQuery(elem).trigger(type);},clone : function( elem,keepEvents ) {keepEvents = keepEvents || false;return jQuery(elem).clone(keepEvents)[0];},removeAttr : function( elem,attributes ) {this.loop( attributes.split(' '),function(attr) {jQuery(elem).removeAttr(attr);});},push : function( elem,obj ) {if (typeof obj.length == 'undefined') {obj.length = 0;}Array.prototype.push.call( obj,elem );return elem;},width : function( elem,outer ) {return this.meassure(elem,outer,'Width');},height : function( elem,outer ) {return this.meassure(elem,outer,'Height');},meassure : function(el,outer,meassure) {var elem = jQuery( el );var ret = outer ? elem['outer'+meassure](true) : elem[meassure.toLowerCase()]();if (G.QUIRK) {var which = meassure == "Width" ? [ "left","right" ] : [ "top","bottom" ];this.loop(which,function(s) {ret += elem.css('border-' + s + '-width').replace(/[^\d]/g,'') * 1;ret += elem.css('padding-' + s).replace(/[^\d]/g,'') * 1;});}
return ret;},toggleClass : function( elem,className,arg ) {if (typeof arg !== 'undefined') {var fn = arg ? 'addClass' : 'removeClass';jQuery(elem)[fn](className);return this;}
jQuery(elem).toggleClass(className);return this;},hideAll : function( el ) {jQuery(el).find('*').hide();},animate : function( el,options ) {options.complete = this.proxy(options.complete);var elem = jQuery(el);if (!elem.length) {return;}if (options.from) {elem.css(from);}
elem.animate(options.to,{duration: options.duration || 400,complete: options.complete,easing: options.easing || 'swing'});},wait : function(fn,callback,err,max) {fn = this.proxy(fn);callback = this.proxy(callback);err = this.proxy(err);var ts = new Date().getTime() + (max || 3000);window.setTimeout(function() {if (fn()) {callback();return false;}if (new Date().getTime() >= ts) {err();callback();return false;}
window.setTimeout(arguments.callee,2);},2);return this;},loadScript: function(url,callback) {var script = document.createElement('script');script.src = url;script.async = true;var done = false;var scope = this;script.onload = script.onreadystatechange = function() {if ( !done && (!this.readyState ||this.readyState == "loaded" || this.readyState == "complete") ) {done = true; if (typeof callback == 'function') { callback.call(scope,this);}
script.onload = script.onreadystatechange = null;}};var s = document.getElementsByTagName('script')[0];s.parentNode.insertBefore(script,s); return this;},parseValue: function(val) {if (typeof val == 'number') {return val;} else if (typeof val == 'string') {var arr = val.match(/\-?\d/g);return arr && arr.constructor == Array ? arr.join('')*1 : 0;} else {return 0;}}});var Picture = Base.extend({__constructor : function(order) {this.image = null;this.elem = this.create('div','galleria-image');this.setStyle( this.elem,{overflow: 'hidden',position: 'relative' } );this.order = order;this.orig = {w:0,h:0,r:1};},cache: {},ready: false,add: function(src) {if (this.cache[src]) {return this.cache[src];}
var image = new Image();image.src = src;this.setStyle(image,{display: 'block'});if (image.complete && image.width) {this.cache[src] = image;return image;}
image.onload = (function(scope) {return function() {scope.cache[src] = image;};})(this);return image;},isCached: function(src) {return this.cache[src] ? this.cache[src].complete : false;},make: function(src) {var i = this.cache[src] || this.add(src);return this.clone(i);},load: function(src,callback) {callback = this.proxy( callback );this.elem.innerHTML = '';this.image = this.make( src );this.moveOut( this.image );this.elem.appendChild( this.image );this.wait(function() {return (this.image.complete && this.image.width);},function() {this.orig = {h: this.h || this.image.height,w: this.w || this.image.width};callback( {target: this.image,scope: this} );},function() {G.raise('image not loaded in 20 seconds: '+ src);},20000);return this;},scale: function(options) {var o = this.mix({width: 0,height: 0,min: undefined,max: undefined,margin: 0,complete: function(){},position: 'center',crop: false},options);if (!this.image) {return this;}
var width,height;this.wait(function() {width = o.width || this.width(this.elem);height = o.height || this.height(this.elem);return width && height;},function() {var nw = (width - o.margin*2) / this.orig.w;var nh = (height- o.margin*2) / this.orig.h;var rmap = {'true': Math.max(nw,nh),'width': nw,'height': nh,'false': Math.min(nw,nh)}
var ratio = rmap[o.crop.toString()];if (o.max) {ratio = Math.min(o.max,ratio);}if (o.min) {ratio = Math.max(o.min,ratio);}
this.setStyle(this.elem,{width: width,height: height});this.image.width = Math.ceil(this.orig.w * ratio);this.image.height = Math.ceil(this.orig.h * ratio); var getPosition = this.proxy(function(value,img,m) {var result = 0;if (/\%/.test(value)) { var pos = parseInt(value) / 100; result = Math.ceil(this.image[img] * -1 * pos + m * pos);} else { result = parseInt(value);}
return result;}); var map = {'top': {top: 0},'left': {left: 0},'right': {left: '100%'},'bottom': {top: '100%'}}
var pos = {};var mix = {}; this.loop(o.position.toLowerCase().split(' '),function(p,i) {if (p == 'center') { p = '50%';}
pos[i ? 'top' : 'left'] = p;});this.loop(pos,function(val,key) {if (map.hasOwnProperty(val)) { mix = this.mix(mix,map[val]);}}); pos = pos.top ? this.mix(pos,mix) : mix; pos = this.mix({top: '50%',left: '50%'},pos);this.setStyle(this.image,{position : 'relative',top : getPosition(pos.top,'height',height),left : getPosition(pos.left,'width',width)});this.ready = true;o.complete.call(this);});return this;}});var G = window.Galleria = Base.extend({
__constructor : function(options) {this.theme = undefined;this.options = options;this.playing = false;this.playtime = 5000;this.active = null;this.queue = {};this.data = {};this.dom = {}; var kb = this.keyboard = {keys : {UP: 38,DOWN: 40,LEFT: 37,RIGHT: 39,RETURN: 13,ESCAPE: 27,BACKSPACE: 8},map : {},bound: false,press: this.proxy(function(e) {var key = e.keyCode || e.which;if (kb.map[key] && typeof kb.map[key] == 'function') { kb.map[key].call(this,e);}}),attach: this.proxy(function(map) {for( var i in map ) { var k = i.toUpperCase(); if ( kb.keys[k] ) { kb.map[kb.keys[k]] = map[i];}}
if (!kb.bound) { kb.bound = true; this.listen(document,'keydown',kb.press);}}),detach: this.proxy(function() {kb.bound = false;this.forget(document,'keydown',kb.press);})}; this.timeouts = {trunk: {},add: function(id,fn,delay,loop) {loop = loop || false;this.clear(id);if (loop) { var self = this; var old = fn; fn = function() { old(); self.add(id,fn,delay);}}
this.trunk[id] = window.setTimeout(fn,delay);},clear: function(id) {if (id && this.trunk[id]) { window.clearTimeout(this.trunk[id]); delete this.trunk[id];} else if (typeof id == 'undefined') { for (var i in this.trunk) { window.clearTimeout(this.trunk[i]); delete this.trunk[i];}}}}; this.controls = {0 : null,1 : null,active : 0,swap : function() {this.active = this.active ? 0 : 1;},getActive : function() {return this[this.active];},getNext : function() {return this[Math.abs(this.active - 1)];}}; var fs = this.fullscreen = {scrolled: 0,enter: this.proxy(function() {this.toggleClass( this.get('container'),'fullscreen');fs.scrolled = jQuery(window).scrollTop();this.loop(fs.getElements(),function(el,i) { fs.styles[i] = el.getAttribute('style'); el.removeAttribute('style');});this.setStyle(fs.getElements(0),{ position: 'fixed', top: 0, left: 0, width: '100%', height: '100%', zIndex: 10000});var bh = { height: '100%', overflow: 'hidden', margin:0, padding:0};this.setStyle( fs.getElements(1),bh );this.setStyle( fs.getElements(2),bh );this.attachKeyboard({ escape: this.exitFullscreen, right: this.next, left: this.prev});this.rescale(this.proxy(function() { this.trigger(G.FULLSCREEN_ENTER);}));this.listen(window,'resize',fs.scale);}),scale: this.proxy(function() {this.rescale();}),exit: this.proxy(function() {this.toggleClass( this.get('container'),'fullscreen',false);if (!fs.styles.length) { return;}
this.loop(fs.getElements(),function(el,i) { el.removeAttribute('style'); el.setAttribute('style',fs.styles[i]);});window.scrollTo(0,fs.scrolled);this.detachKeyboard();this.rescale(this.proxy(function() { this.trigger(G.FULLSCREEN_EXIT);}));this.forget(window,'resize',fs.scale);}),styles: [],getElements: this.proxy(function(i) {var elems = [ this.get('container'),document.body,this.getElements('html')[0] ];return i ? elems[i] : elems;})}; var idle = this.idle = {trunk: [],bound: false,add: this.proxy(function(elem,styles,fn) {if (!elem) { return;}
if (!idle.bound) { idle.addEvent();}
elem = jQuery(elem);var orig = {};for (var style in styles) { orig[style] = elem.css(style);}
elem.data('idle',{ from: orig, to: styles, complete: true, busy: false, fn: this.proxy(fn)});idle.addTimer();idle.trunk.push(elem);}),remove: this.proxy(function(elem) {elem = jQuery(elem);this.loop(idle.trunk,function(el,i) { if ( el && !el.not(elem).length ) { idle.show(elem); idle.trunk.splice(i,1);}});if (!idle.trunk.length) { idle.removeEvent(); this.clearTimer('idle');}}),addEvent: this.proxy(function() {idle.bound = true;this.listen( this.get('container'),'mousemove click',idle.showAll );}),removeEvent: this.proxy(function() {idle.bound = false;this.forget( this.get('container'),'mousemove click',idle.showAll );}),addTimer: this.proxy(function() {this.addTimer('idle',this.proxy(function() { idle.hide();}),this.options.idle_time);}),hide: this.proxy(function() {this.trigger(G.IDLE_ENTER);this.loop(idle.trunk,function(elem) { var data = elem.data('idle'); data.complete = false; data.fn(); elem.animate(data.to,{ duration: 600, queue: false, easing: 'swing'});});}),showAll: this.proxy(function() {this.clearTimer('idle');this.loop(idle.trunk,function(elem) { idle.show(elem);});}),show: this.proxy(function(elem) {var data = elem.data('idle');if (!data.busy && !data.complete) { data.busy = true; this.trigger(G.IDLE_EXIT); elem.animate(data.from,{ duration: 300, queue: false, easing: 'swing', complete: function() { $(this).data('idle').busy = false; $(this).data('idle').complete = true;}});}
idle.addTimer();})}; var lightbox = this.lightbox = {w: 1024,h: 576,initialized: false,active: null,init: this.proxy(function() {if (lightbox.initialized) { return;}
lightbox.initialized = true;var elems = 'lightbox-overlay lightbox-box lightbox-content lightbox-shadow lightbox-title ' +
 'lightbox-info lightbox-close lightbox-prev lightbox-next lightbox-counter';this.loop(elems.split(' '),function(el) { this.addElement(el); lightbox[el.split('-')[1]] = this.get(el);}); lightbox.image = new Galleria.Picture(); this.append({ 'lightbox-box': ['lightbox-shadow','lightbox-content','lightbox-close'], 'lightbox-info': ['lightbox-title','lightbox-counter','lightbox-next','lightbox-prev'], 'lightbox-content': ['lightbox-info']});document.body.appendChild( lightbox.overlay );document.body.appendChild( lightbox.box );lightbox.content.appendChild( lightbox.image.elem ); lightbox.close.innerHTML = '&#215;';lightbox.prev.innerHTML = '&#9668;';lightbox.next.innerHTML = '&#9658;'; this.listen( lightbox.close,'click',lightbox.hide );this.listen( lightbox.overlay,'click',lightbox.hide );this.listen( lightbox.next,'click',lightbox.showNext );this.listen( lightbox.prev,'click',lightbox.showPrev ); if (this.options.lightbox_clicknext) { this.setStyle( lightbox.image.elem,{cursor:'pointer'} ); this.listen( lightbox.image.elem,'click',lightbox.showNext);}
this.setStyle( lightbox.overlay,{ position: 'fixed',display: 'none', opacity: this.options.overlay_opacity, top: 0,left: 0,width: '100%',height: '100%', background: this.options.overlay_background,zIndex: 99990});this.setStyle( lightbox.box,{ position: 'fixed',display: 'none', width: 1024,height: 576,top: '50%',left: '50%', marginTop: -612,marginLeft: -288,zIndex: 99991});this.setStyle( lightbox.shadow,{ background:'#000',opacity:.4,width: '100%',height: '100%',position: 'absolute'});this.setStyle( lightbox.content,{ backgroundColor:'#fff',position: 'absolute', top: 10,left: 10,right: 10,bottom: 10,overflow: 'hidden'});this.setStyle( lightbox.info,{ color: '#444',fontSize: '11px',fontFamily: 'arial,sans-serif',height: 13,lineHeight: '13px', position: 'absolute',bottom: 10,left: 10,right: 10,opacity: 0});this.setStyle( lightbox.close,{ background: '#fff',height: 20,width: 20,position: 'absolute',textAlign: 'center',cursor: 'pointer', top: 10,right: 10,lineHeight: '22px',fontSize: '16px',fontFamily:'arial,sans-serif',color:'#444',zIndex: 99999});this.setStyle( lightbox.image.elem,{ top: 10,left: 10,right: 10,bottom: 30,position: 'absolute'});this.loop('title prev next counter'.split(' '),function(el) { var css = {display: 'inline','float':'left'}; if (el != 'title') { this.mix(css,{'float': 'right'}); if (el != 'counter') { this.mix(css,{cursor: 'pointer'});} else { this.mix(css,{marginLeft: 8});}}
 this.setStyle(lightbox[el],css);});this.loop('prev next close'.split(' '),function(el) { this.listen(lightbox[el],'mouseover',this.proxy(function() { this.setStyle(lightbox[el],{color:'#000'});})); this.listen(lightbox[el],'mouseout',this.proxy(function() { this.setStyle(lightbox[el],{color:'#444'});}));});this.trigger(G.LIGHTBOX_OPEN);}),rescale: this.proxy(function(e) {var w = Math.min( this.width(window),lightbox.w );var h = Math.min( this.height(window),lightbox.h );var r = Math.min( (w-60) / lightbox.w,(h-80) / lightbox.h );var destW = (lightbox.w * 1) + 40; var destH = (lightbox.h * 1) + 60;var dest = { width: destW, height: destH, marginTop: Math.ceil(destH/2)*-1, marginLeft: Math.ceil(destW)/2*-1}
if (!e) { this.animate( lightbox.box,{ to: dest, duration: this.options.lightbox_transition_speed, easing: 'galleria', complete: function() { this.trigger({ type: G.LIGHTBOX_IMAGE, imageTarget: lightbox.image.image}); this.moveIn( lightbox.image.image ); this.animate( lightbox.image.image,{to: {opacity:1},duration: this.options.lightbox_fade_speed} ); this.animate( lightbox.info,{to: {opacity:1},duration: this.options.lightbox_fade_speed} );}});} else { this.setStyle( lightbox.box,dest );}}),hide: this.proxy(function() {lightbox.image.image = null;this.forget(window,'resize',lightbox.rescale);this.hide( lightbox.box );this.setStyle( lightbox.info,{opacity: 0} );this.animate( lightbox.overlay,{ to: {opacity: 0}, duration: 200, complete: function() { this.hide( lightbox.overlay ); this.setStyle( lightbox.overlay,{opacity: this.options.overlay_opacity}); this.trigger(G.LIGHTBOX_CLOSE);}});}),showNext: this.proxy(function() {lightbox.show(this.getNext(lightbox.active));}),showPrev: this.proxy(function() {lightbox.show(this.getPrev(lightbox.active));}),show: this.proxy(function(index) {if (!lightbox.initialized) { lightbox.init();}
this.forget( window,'resize',lightbox.rescale );index = typeof index == 'number' ? index : this.getIndex();lightbox.active = index; var data = this.getData(index);var total = this.data.length;this.setStyle( lightbox.info,{opacity:0} );lightbox.image.load( data.image,function(o) { lightbox.w = o.scope.orig.w; lightbox.h = o.scope.orig.h; this.setStyle(o.target,{ width: '100%', height: '100%', top:0, zIndex: 99998, opacity: 0}); lightbox.title.innerHTML = data.title; lightbox.counter.innerHTML = (index+1) + ' / ' + total; this.listen( window,'resize',lightbox.rescale ); lightbox.rescale();});this.reveal( lightbox.overlay );this.reveal( lightbox.box );})}; this.thumbnails = {width: 0};this.stageWidth = 0;this.stageHeight = 0; var elems = 'container stage images image-nav image-nav-left image-nav-right ' +  'info info-text info-title info-description info-author ' + 'thumbnails thumbnails-list thumbnails-container thumb-nav-left thumb-nav-right ' + 'loader counter';elems = elems.split(' '); this.loop(elems,function(blueprint) {this.dom[ blueprint ] = this.create('div','galleria-' + blueprint);}); this.target = this.dom.target = options.target.nodeName ? options.target : this.getElements(options.target)[0];if (!this.target) {G.raise('Target not found.');}},init: function() {
this.options = this.mix(G.theme.defaults,this.options);this.options = this.mix({autoplay: true,carousel: true,carousel_follow: true,carousel_speed: 400,carousel_steps: 'auto',clicknext: false,data_config : function( elem ) {return {};},data_image_selector: 'img',data_source: this.target,data_type: 'auto',debug: false,extend: function(options) {},height: 'auto',idle_time: 3000,image_crop: false,image_margin: 0,image_pan: false,image_pan_smoothness: 12,image_position: '50%',keep_source: false,lightbox_clicknext: true,lightbox_fade_speed: 200,lightbox_transition_speed: 300,link_source_images: true,max_scale_ratio: undefined,min_scale_ratio: undefined,on_image: function(img,thumb) {},overlay_opacity: .90,overlay_background: '#0b0b0b',popup_links: false,preload: 2,queue: true,show: 0,show_info: true,show_counter: true,show_imagenav: true,thumb_crop: true,thumb_fit: true,thumb_margin: 0,thumb_quality: 'auto',thumbnails: true,transition: G.transitions.fade,transition_speed: 400},this.options); var o = this.options; this.bind(G.DATA,function() {this.run();}); if (o.next) {this.loop(this.data,function(data) {delete data.link;});this.setStyle(this.get('stage'),{cursor: 'pointer'} );this.listen(this.get('stage'),'click',this.proxy(function() {this.next();}));}
this.bind(G.IMAGE,function(e) {o.on_image.call(this,e.imageTarget,e.thumbTarget);}); this.bind(G.READY,function() {if (G.History) {G.History.change(this.proxy(function(e) { var val = parseInt(e.value.replace(/\//,'')); if (isNaN(val)) { window.history.go(-1);} else { this.show(val,undefined,true);}}));}
G.theme.init.call(this,o);o.extend.call(this,o); if (/^[0-9]{1,4}$/.test(hash) && G.History) {this.show(hash,undefined,true);} else if (typeof o.show == 'number') {this.show(o.show);}
if (o.autoplay) {if (typeof o.autoplay == 'number') { this.playtime = o.autoplay;}
this.trigger( G.PLAY );this.playing = true;}});this.load();return this;},bind : function(type,fn) {this.listen( this.get('container'),type,this.proxy(fn) );return this;},unbind : function(type) {this.forget( this.get('container'),type );},trigger : function( type ) {type = typeof type == 'object' ? this.mix( type,{scope: this} ) : {type: type,scope: this};this.dispatch( this.get('container'),type );return this;},addIdleState: function() {this.idle.add.apply(this,arguments);return this;},removeIdleState: function() {this.idle.remove.apply(this,arguments);return this;},enterIdleMode: function() {this.idle.hide();return this;},exitIdleMode: function() {this.idle.show();return this;},addTimer: function() {this.timeouts.add.apply(this.timeouts,arguments);return this;},clearTimer: function() {this.timeouts.clear.apply(this.timeouts,arguments);return this;},enterFullscreen: function() {this.fullscreen.enter.apply(this,arguments);return this;},exitFullscreen: function() {this.fullscreen.exit.apply(this,arguments);return this;},openLightbox: function() {},closeLightbox: function() {this.lightbox.hide.apply(this,arguments);},getActive: function() {return this.controls.getActive();},getActiveImage: function() {return this.getActive().image || null;},run : function() {var o = this.options;if (!this.data.length) {G.raise('Data is empty.');}
if (!o.keep_source && !Galleria.IE) {this.target.innerHTML = '';}
this.loop(2,function() {var image = new Picture();this.setStyle( image.elem,{position: 'absolute',top: 0,left: 0});this.setStyle(this.get( 'images' ),{position: 'relative',top: 0,left: 0,width: '100%',height: '100%'});this.get( 'images' ).appendChild( image.elem );this.push(image,this.controls);},this); if (o.carousel) {
this.bind(G.THUMBNAIL,this.parseCarousel);}this.build();this.target.appendChild(this.get('container')); this.loop(['info','counter','image-nav'],function(el) {if ( o[ 'show_'+el.replace(/-/,'') ] === false ) {this.moveOut( this.get(el) );}}); var w = 0;var h = 0; for( var i=0;this.data[i];i++ ) {var thumb;if (o.thumbnails === true) {thumb = new Picture(i);var src = this.data[i].thumb || this.data[i].image; this.get( 'thumbnails' ).appendChild( thumb.elem ); w = this.getStyle(thumb.elem,'width',true);h = this.getStyle(thumb.elem,'height',true); 
if (o.thumb_fit && o.thum_crop !== true) { this.setStyle(thumb.elem,{width:0,height: 0});}
thumb.load(src,this.proxy(function(e) { var orig = e.target.width; e.scope.scale({ width: w, height: h, crop: o.thumb_crop, margin: o.thumb_margin, complete: this.proxy(function() { 
 var top = ['left','top']; var arr = ['Height','Width']; this.loop(arr,function(m,i) { if ((!o.thumb_crop || o.thumb_crop == m.toLowerCase()) && o.thumb_fit) {  var css = {};  var opp = arr[Math.abs(i-1)].toLowerCase();  css[opp] = e.target[opp];  this.setStyle(e.target.parentNode,css);  var css = {};  css[top[i]] = 0;  this.setStyle(e.target,css);}
 e.scope['outer'+m] = this[m.toLowerCase()](e.target.parentNode,true);}); 
 this.toggleQuality(e.target,o.thumb_quality === true || ( o.thumb_quality == 'auto' && orig < e.target.width * 3 )); this.trigger({ type: G.THUMBNAIL, thumbTarget: e.target, thumbOrder: e.scope.order});})});}));if (o.preload == 'all') { thumb.add(this.data[i].image);}} else if (o.thumbnails == 'empty') {thumb = { elem: this.create('div','galleria-image'), image: this.create('span','img')};thumb.elem.appendChild(thumb.image);this.get( 'thumbnails' ).appendChild( thumb.elem );} else {thumb = { elem: false, image: false}}
var activate = this.proxy(function(e) {this.pause();e.preventDefault();var ind = e.currentTarget.rel;if (this.active !== ind) { this.show( ind );}});if (o.thumbnails !== false) {thumb.elem.rel = i;this.listen(thumb.elem,'click',activate);}
if (o.link_source_images && o.keep_source && this.data[i].elem) {this.data[i].elem.rel = i;this.listen(this.data[i].elem,'click',activate);}
this.push(thumb,this.thumbnails );}
this.setStyle( this.get('thumbnails'),{opacity: 0} ); if (o.height && o.height != 'auto') {this.setStyle( this.get('container'),{height: o.height})}
this.wait(function() {var cssHeight = this.getStyle( this.get( 'container' ),'height',true );this.stageWidth = this.width(this.get( 'stage' ));this.stageHeight = this.height( this.get( 'stage' ));if (this.stageHeight < 50 && o.height == 'auto') {this.setStyle( this.get( 'container' ),{ height: Math.round( this.stageWidth*9/16 ) } );this.stageHeight = this.height( this.get( 'stage' ));}
return this.stageHeight && this.stageWidth;},function() {this.listen(this.get('image-nav-right'),'click',this.proxy(function(e) {if (o.clicknext) { e.stopPropagation();}
this.pause();this.next();}));this.listen(this.get('image-nav-left'),'click',this.proxy(function(e) {if (o.clicknext) { e.stopPropagation();}
this.pause();this.prev();}));this.setStyle( this.get('thumbnails'),{opacity: 1} );this.trigger( G.READY );},function() {G.raise('Galleria could not load properly. Make sure stage has a height and width.');},5000);},mousePosition : function(e) {return {x: e.pageX - this.$('stage').offset().left + jQuery(document).scrollLeft(),y: e.pageY - this.$('stage').offset().top + jQuery(document).scrollTop()};},addPan : function(img) {var c = this.options.image_crop;if ( c === false ) {return;}
if (this.options.image_crop === false) {return;}
img = img || this.controls.getActive().image;if (img.tagName.toUpperCase() != 'IMG') {G.raise('Could not add pan');}
var x = img.width/2;var y = img.height/2;var curX = destX = this.getStyle(img,'left',true) || 0;var curY = destY = this.getStyle(img,'top',true) || 0;var distX = 0;var distY = 0;var active = false;var ts = new Date().getTime();var calc = this.proxy(function(e) {if (new Date().getTime() - ts < 50) {return;}
active = true;x = this.mousePosition(e).x;y = this.mousePosition(e).y;});var loop = this.proxy(function(e) {if (!active) {return;}
distX = img.width - this.stageWidth;distY = img.height - this.stageHeight;destX = x / this.stageWidth * distX * -1;destY = y / this.stageHeight * distY * -1;curX += (destX - curX) / this.options.image_pan_smoothness;curY += (destY - curY) / this.options.image_pan_smoothness;if (distY > 0) {this.setStyle(img,{top: Math.max(distY*-1,Math.min(0,curY))});}
if (distX > 0) {this.setStyle(img,{left: Math.max(distX*-1,Math.min(0,curX))});}});this.forget(this.get('stage'),'mousemove');this.listen(this.get('stage'),'mousemove',calc);this.addTimer('pan',loop,30,true);},removePan: function() {this.forget(this.get('stage'),'mousemove');this.clearTimer('pan');},parseCarousel : function(e) {var w = 0;var h = 0;var hooks = [0];this.loop(this.thumbnails,function(thumb,i) {if (thumb.ready) {w += thumb.outerWidth || this.width(thumb.elem,true);hooks[i+1] = w;h = Math.max(h,this.height(thumb.elem));}});this.toggleClass(this.get('thumbnails-container'),'galleria-carousel',w > this.stageWidth);this.setStyle(this.get('thumbnails-list'),{overflow:'hidden',position: 'relative' });this.setStyle(this.get('thumbnails'),{width: w,height: h,position: 'relative',overflow: 'hidden'});if (!this.carousel) {this.initCarousel();}
this.carousel.max = w;this.carousel.hooks = hooks;this.carousel.width = this.width(this.get('thumbnails-list'));this.carousel.setClasses();},initCarousel : function() {var c = this.carousel = {right: this.get('thumb-nav-right'),left: this.get('thumb-nav-left'),update: this.proxy(function() {this.parseCarousel();}),width: 0,current: 0,set: function(i) {i = Math.max(i,0);while (c.hooks[i-1] + c.width > c.max && i >= 0) { i--;}
c.current = i;c.animate();},hooks: [],getLast: function(i) {i = i || c.current
return i-1;},follow: function(i) {if (i == 0 || i == c.hooks.length-2) { c.set(i); return;}
var last = c.current;while(c.hooks[last] - c.hooks[c.current] < c.width && last<= c.hooks.length) { last++;}
if (i-1 < c.current) { c.set(i-1)} else if (i+2 > last) { c.set(i - last + c.current + 2)}},max: 0,setClasses: this.proxy(function() {this.toggleClass( c.left,'disabled',!c.current );this.toggleClass( c.right,'disabled',c.hooks[c.current] + c.width > c.max );}),animate: this.proxy(function(to) {c.setClasses();this.animate( this.get('thumbnails'),{ to: {left: c.hooks[c.current] * -1}, duration: this.options.carousel_speed, easing: 'galleria', queue: false});})};this.listen(c.right,'click',this.proxy(function(e) {if (this.options.carousel_steps == 'auto') {for (var i = c.current;i<c.hooks.length;i++) { if (c.hooks[i] - c.hooks[c.current] > c.width) { c.set(i-2); break;}}} else {c.set(c.current + this.options.carousel_steps);}}));this.listen(c.left,'click',this.proxy(function(e) {if (this.options.carousel_steps == 'auto') {for (var i = c.current;i>=0;i--) { if (c.hooks[c.current] - c.hooks[i] > c.width) { c.set(i+2); break;} else if (i == 0) { c.set(0); break;}}} else {c.set(c.current - this.options.carousel_steps);}}));},addElement : function() {this.loop(arguments,function(b) {this.dom[b] = this.create('div','galleria-' + b );});return this;},getDimensions: function(i) {return {w: i.width,h: i.height,cw: this.stageWidth,ch: this.stageHeight,top: (this.stageHeight - i.height) / 2,left: (this.stageWidth - i.width) / 2};},attachKeyboard : function(map) {this.keyboard.attach(map);return this;},detachKeyboard : function() {this.keyboard.detach();return this;},build : function() {this.append({'info-text' :
['info-title','info-description','info-author'],'info' : ['info-text'],'image-nav' : ['image-nav-right','image-nav-left'],'stage' : ['images','loader','counter','image-nav'],'thumbnails-list' :['thumbnails'],'thumbnails-container' : ['thumb-nav-left','thumbnails-list','thumb-nav-right'],'container' : ['stage','thumbnails-container','info']}); this.current = this.create('span','current');this.current.innerHTML = '-';this.get('counter').innerHTML = ' / <span class="total">' + this.data.length + '</span>';this.prependChild('counter',this.current);},appendChild : function(parent,child) {try {this.get(parent).appendChild(this.get(child));} catch(e) {}},prependChild : function(parent,child) {var child = this.get(child) || child;try {this.get(parent).insertBefore(child,this.get(parent).firstChild);} catch(e) {}},remove : function() {var a = Array.prototype.slice.call(arguments);this.jQuery(a.join(',')).remove();},append : function(data) {for( var i in data) {if (data[i].constructor == Array) {for(var j=0;data[i][j];j++) { this.appendChild(i,data[i][j]);}} else {this.appendChild(i,data[i]);}}
return this;},rescale : function(width,height,callback) {var o = this.options;callback = this.proxy(callback); if (typeof width == 'function') {callback = this.proxy(width);width = undefined;}
var scale = this.proxy(function() {this.stageWidth = width || this.width(this.get('stage'));this.stageHeight = height || this.height(this.get('stage'));this.controls.getActive().scale({width: this.stageWidth,height: this.stageHeight,crop: o.image_crop,max: o.max_scale_ratio,min: o.min_scale_ratio,margin: o.image_margin,position: o.image_position});if (this.carousel) {this.carousel.update();}
this.trigger(G.RESCALE)
callback();});if ( G.WEBKIT && !width && !height ) {this.addTimer('scale',scale,5);} else {scale.call(this);}},show : function(index,rewind,history) {if (!this.options.queue && this.queue.stalled) {return;}
rewind = typeof rewind != 'undefined' ? !!rewind : index < this.active;history = history || false;index = Math.max(0,Math.min(parseInt(index),this.data.length - 1));if (!history && G.History) {G.History.value(index.toString());return;}
this.active = index;this.push([index,rewind],this.queue);if (!this.queue.stalled) {this.showImage();}
return this;},showImage : function() {var o = this.options;var args = this.queue[0];var index = args[0];var rewind = !!args[1];if (o.carousel && this.carousel && o.carousel_follow) {this.carousel.follow(index);}
var src = this.getData(index).image;var active = this.controls.getActive();var next = this.controls.getNext();var cached = next.isCached(src);var complete = this.proxy(function() {this.queue.stalled = false;this.toggleQuality(next.image,o.image_quality);this.setStyle( active.elem,{zIndex : 0} );this.setStyle( next.elem,{zIndex : 1} );this.trigger({type: G.IMAGE,index: index,imageTarget: next.image,thumbTarget: this.thumbnails[index].image});if (o.image_pan) {this.addPan(next.image);}
this.controls.swap();this.moveOut( active.image );if (this.getData( index ).link) {this.setStyle( next.image,{cursor: 'pointer'} );this.listen( next.image,'click',this.proxy(function() { if (o.popup_links) { var win = window.open(this.getData( index ).link,'_blank');} else { window.location.href = this.getData( index ).link;}}));}
Array.prototype.shift.call( this.queue );if (this.queue.length) {this.showImage();}
this.playCheck();});if (typeof o.preload == 'number' && o.preload > 0) {var p,n = this.getNext();try {for (var i = o.preload;i>0;i--) { p = new Picture(); p.add(this.getData(n).image); n = this.getNext(n);}} catch(e) {}}
this.trigger( {type: G.LOADSTART,cached: cached,index: index,imageTarget: next.image,thumbTarget: this.thumbnails[index].image} ); jQuery(this.thumbnails[index].elem).addClass('active').siblings('.active').removeClass('active'); next.load( src,this.proxy(function(e) {next.scale({width: this.stageWidth,height: this.stageHeight,crop: o.image_crop,max: o.max_scale_ratio,min: o.min_scale_ratio,margin: o.image_margin,position: o.image_position,complete: this.proxy(function() { if (active.image) { this.toggleQuality(active.image,false);}
this.toggleQuality(next.image,false); this.trigger({ type: G.LOADFINISH, cached: cached, index: index, imageTarget: next.image, thumbTarget: this.thumbnails[index].image}); this.queue.stalled = true; var transition = G.transitions[o.transition] || o.transition; this.removePan(); this.setInfo(index); this.setCounter(index); if (typeof transition == 'function') { transition.call(this,{ prev: active.image, next: next.image, rewind: rewind, speed: o.transition_speed || 400},complete );} else { complete();}})});}));},getNext : function(base) {base = typeof base == 'number' ? base : this.active;return base == this.data.length - 1 ? 0 : base + 1;},getPrev : function(base) {base = typeof base == 'number' ? base : this.active;return base === 0 ? this.data.length - 1 : base - 1;},next : function() {if (this.data.length > 1) {this.show(this.getNext(),false);}
return this;},prev : function() {if (this.data.length > 1) {this.show(this.getPrev(),true);}
return this;},get : function( elem ) {return elem in this.dom ? this.dom[ elem ] : null;},getData : function( index ) {return this.data[index] || this.data[this.active];},getIndex : function() {return typeof this.active === 'number' ? this.active : 0;},play : function(delay) {this.trigger( G.PLAY );this.playing = true;this.playtime = delay || this.playtime;this.playCheck();return this;},pause : function() {this.trigger( G.PAUSE );this.playing = false;return this;},playCheck : function() {var p = 0;var i = 20;var ts = function() {return new Date().getTime();}
var now = ts();if (this.playing) {this.clearTimer('play');var fn = this.proxy(function() {p = ts() - now;if ( p >= this.playtime && this.playing ) { this.clearTimer('play'); this.next(); return;}
if ( this.playing ) { this.trigger({ type: G.PROGRESS, percent: Math.ceil(p / this.playtime * 100), seconds: Math.floor(p/1000), milliseconds: p}); this.addTimer('play',fn,i);}});this.addTimer('play',fn,i);}},setActive: function(val) {this.active = val;return this;},setCounter: function(index) {index = index || this.active;this.current.innerHTML = index+1;return this;},setInfo : function(index) {var data = this.getData(index || this.active);this.loop(['title','description','author'],function(type) {var elem = this.get('info-'+type);var fn = data[type] && data[type].length ? 'reveal' : 'hide';this[fn](elem);if (data[type]) {elem.innerHTML = data[type];}});return this;},hasInfo : function(index) {var d = this.getData(index);var check = 'title description author'.split(' ');for ( var i=0;check[i];i++ ) {if ( d[ check[i] ] && d[ check[i] ].length ) {return true;}}
return false;},getDataObject : function(o) {var obj = {image: '',thumb: '',title: '',description: '',author: '',link: ''};return o ? this.mix(obj,o) : obj;},jQuery : function( str ) {var ret = [];this.loop(str.split(','),this.proxy(function(elem) {elem = elem.replace(/^\s\s*/,"").replace(/\s\s*$/,"");if (this.get(elem)) {ret.push(elem);}}));var jQ = jQuery(this.get(ret.shift()));this.loop(ret,this.proxy(function(elem) {jQ = jQ.add(this.get(elem));}));return jQ;},$ : function( str ) {return this.jQuery( str );},toggleQuality : function(img,force) {if (!G.IE7 || typeof img == 'undefined' || !img) {return this;}
if (typeof force === 'undefined') {force = img.style.msInterpolationMode == 'nearest-neighbor';}
img.style.msInterpolationMode = force ? 'bicubic' : 'nearest-neighbor';return this;},unload : function() {},load : function() {var loaded = 0;var o = this.options;if ((o.data_type == 'auto' && typeof o.data_source == 'object' && !(o.data_source instanceof jQuery) && !o.data_source.tagName) || o.data_type == 'json' || o.data_source.constructor == Array ) {this.data = o.data_source;this.trigger( G.DATA );} else {var images = jQuery(o.data_source).find(o.data_image_selector);var getData = this.proxy(function( elem ) {var i,j,anchor = elem.parentNode;if (anchor && anchor.nodeName == 'A') { if (anchor.href.match(/\.(png|gif|jpg|jpeg)/i)) { i = anchor.href;} else { j = anchor.href;}}var obj = this.getDataObject({ title: elem.title, thumb: elem.src, image: i || elem.src, description: elem.alt, link: j || elem.getAttribute('longdesc'), elem: elem});return this.mix(obj,o.data_config( elem ) );});this.loop(images,function( elem ) {loaded++;this.push( getData( elem ),this.data );if (!o.keep_source && !Galleria.IE) { elem.parentNode.removeChild(elem);}
if ( loaded == images.length ) { this.trigger( G.DATA );}});}}});G.log = function() {try {console.log.apply( console,Array.prototype.slice.call(arguments) );} catch(e) {try {opera.postError.apply( opera,arguments );} catch(er){alert( Array.prototype.join.call( arguments," " ) );}}};var nav = navigator.userAgent.toLowerCase();var hash = window.location.hash.replace(/#\//,'');G.DATA = 'data';G.READY = 'ready';G.THUMBNAIL = 'thumbnail';G.LOADSTART = 'loadstart';G.LOADFINISH = 'loadfinish';G.IMAGE = 'image';G.THEMELOAD = 'themeload';G.PLAY = 'play';G.PAUSE = 'pause';G.PROGRESS = 'progress';G.FULLSCREEN_ENTER = 'fullscreen_enter';G.FULLSCREEN_EXIT = 'fullscreen_exit';G.IDLE_ENTER = 'idle_enter';G.IDLE_EXIT = 'idle_exit';G.RESCALE = 'rescale';G.LIGHTBOX_OPEN = 'lightbox_open';G.LIGHTBOX_CLOSE = 'lightbox_cloe';G.LIGHTBOX_IMAGE = 'lightbox_image';G.IE8 = (typeof(XDomainRequest) !== 'undefined')
G.IE7 = !!(window.XMLHttpRequest && document.expando);G.IE6 = (!window.XMLHttpRequest);G.IE = !!(G.IE6 || G.IE7);G.WEBKIT = /webkit/.test( nav );G.SAFARI = /safari/.test( nav );G.CHROME = /chrome/.test( nav );G.QUIRK = (G.IE && document.compatMode && document.compatMode == "BackCompat");G.MAC = /mac/.test(navigator.platform.toLowerCase());G.OPERA = !!window.opera
G.Picture = Picture;G.addTheme = function(obj) {var theme = {};var orig = ['name','author','version','defaults','init'];var proto = G.prototype;proto.loop(orig,function(val) {if (!obj[ val ]) {G.raise(val+' not specified in theme.');}
if (val != 'name' && val != 'init') {theme[val] = obj[val];}});theme.init = obj.init; if (obj.css) {var css;proto.loop(proto.getElements('script'),function(el) {var reg = new RegExp('galleria.' + obj.name.toLowerCase() + '.js');if(reg.test(el.src)) {css = el.src.replace(/[^\/]*$/,"") + obj.css;proto.loadCSS(css,function() { G.theme = theme; jQuery(document).trigger( G.THEMELOAD );});}});if (!css) {G.raise('No theme CSS loaded');}}return theme;};G.raise = function(msg) {if ( G.debug ) {throw new Error( msg );}};G.loadTheme = function(src) {G.prototype.loadScript(src);};G.galleries = [];G.get = function(index) {if (G.galleries[index]) {return G.galleries[index];} else if (typeof index !== 'number') {return G.galleries;} else {G.raise('Gallery index not found');}}
jQuery.easing.galleria = function (x,t,b,c,d) {if ((t/=d/2) < 1) {
return c/2*t*t*t*t + b;}
return -c/2 * ((t-=2)*t*t*t - 2) + b;};G.transitions = {add: function(name,fn) {if (name != arguments.callee.name ) {this[name] = fn;}},fade: function(params,complete) {jQuery(params.next).show().css('opacity',0).animate({opacity: 1},params.speed,complete);if (params.prev) {jQuery(params.prev).css('opacity',1).animate({opacity: 0},params.speed);}},flash: function(params,complete) {jQuery(params.next).css('opacity',0);if (params.prev) {jQuery(params.prev).animate({opacity: 0},(params.speed/2),function() {jQuery(params.next).animate({ opacity: 1},params.speed,complete);});} else {jQuery(params.next).animate({opacity: 1},params.speed,complete);}},pulse: function(params,complete) {if (params.prev) {jQuery(params.prev).css('opacity',0);}
jQuery(params.next).css('opacity',0).animate({opacity:1},params.speed,complete);},slide: function(params,complete) {var image = jQuery(params.next).parent();var images = this.$('images');var width = this.stageWidth;image.css({left: width * ( params.rewind ? -1 : 1 )});images.animate({left: width * ( params.rewind ? 1 : -1 )},{duration: params.speed,queue: false,easing: 'galleria',complete: function() {images.css('left',0);image.css('left',0);complete();}});},fadeslide: function(params,complete) {if (params.prev) {jQuery(params.prev).css({opacity: 1,left: 0}).animate({opacity: 0,left: 50 * ( params.rewind ? 1 : -1 )},{duration: params.speed,queue: false,easing: 'swing'});}
jQuery(params.next).css({left: 50 * ( params.rewind ? -1 : 1 ),opacity: 0}).animate({opacity: 1,left:0},{duration: params.speed,complete: complete,queue: false,easing: 'swing'});}};G.addTransition = function() {G.transitions.add.apply(this,arguments);}
jQuery.fn.galleria = function(options) {options = options || {};var selector = this.selector;return this.each(function() {if ( !options.keep_source ) {jQuery(this).children().hide();}
options = G.prototype.mix(options,{target: this} );var height = G.prototype.height(this) || G.prototype.getStyle(this,'height',true);if (!options.height && height) {options = G.prototype.mix( {height: height},options );}G.debug = !!options.debug; var gallery = new G(options); Galleria.galleries.push(gallery); if (G.theme) {gallery.init();} else {jQuery(document).bind(G.THEMELOAD,function() {gallery.init();});}})};})();
