Team:Manchester/ug-theme-tiles.js

if(typeof g_ugFunctions != "undefined") g_ugFunctions.registerTheme("tiles"); else jQuery(document).ready(function(){g_ugFunctions.registerTheme("tiles")});


/**

* Grid gallery theme
*/

function UGTheme_tiles(){

var t = this; var g_gallery = new UniteGalleryMain(), g_objGallery, g_objects, g_objWrapper; var g_tiles = new UGTiles(), g_lightbox = new UGLightbox(), g_objPreloader, g_objTilesWrapper; var g_functions = new UGFunctions(), g_objTileDesign = new UGTileDesign();

var g_options = { theme_enable_preloader: true, //enable preloader circle theme_preloading_height: 200, //the height of the preloading div, it show before the gallery theme_preloader_vertpos: 100, //the vertical position of the preloader theme_gallery_padding: 0, //the horizontal padding of the gallery from the sides theme_appearance_order: "normal", //normal, shuffle, keep - the appearance order of the tiles. applying only to columns type theme_auto_open:null //auto open lightbox at start };

var g_defaults = { gallery_width: "100%" };

//temp variables var g_temp = { showPreloader: false };


/** * Init the theme */ function initTheme(gallery, customOptions){

g_gallery = gallery;

//set default options g_options = jQuery.extend(g_options, g_defaults);

//set custom options g_options = jQuery.extend(g_options, customOptions);

modifyOptions();

//set gallery options g_gallery.setOptions(g_options);

g_gallery.setFreestyleMode();

g_objects = gallery.getObjects();

//get some objects for local use g_objGallery = jQuery(gallery); g_objWrapper = g_objects.g_objWrapper;

//init objects g_tiles.init(gallery, g_options); g_lightbox.init(gallery, g_options);

g_objTileDesign = g_tiles.getObjTileDesign();


}


/** * modift options */ function modifyOptions(){

if(g_options.theme_enable_preloader == true) g_temp.showPreloader = true;

switch(g_options.theme_appearance_order){ default: case "normal": break; case "shuffle": g_gallery.shuffleItems(); break; case "keep": g_options.tiles_keep_order = true; break; }

}


/** * set gallery html elements */ function setHtml(){

//add html elements g_objWrapper.addClass("ug-theme-tiles");

g_objWrapper.append("
");

//add preloader if(g_temp.showPreloader == true){

g_objWrapper.append("
");

g_objPreloader = g_objWrapper.children(".ug-tiles-preloader"); g_objPreloader.fadeTo(0,0); }

g_objTilesWrapper = g_objWrapper.children(".ug-tiles-wrapper");

//set padding if(g_options.theme_gallery_padding) g_objWrapper.css({ "padding-left":g_options.theme_gallery_padding+"px", "padding-right":g_options.theme_gallery_padding+"px" });

g_tiles.setHtml(g_objTilesWrapper); g_lightbox.putHtml(); }

/** * actually run the theme */ function actualRun(){

//set preloader mode if(g_objPreloader){ g_objPreloader.fadeTo(0,1); g_objWrapper.height(g_options.theme_preloading_height); g_functions.placeElement(g_objPreloader, "center", g_options.theme_preloader_vertpos); }

initEvents();

g_tiles.run(); g_lightbox.run();

}


/** * run the theme */ function runTheme(){

setHtml();

actualRun();

}


/** * init size of the thumbs panel */ function initThumbsPanel(){

//set size: var objGallerySize = g_gallery.getSize();

if(g_temp.isVertical == false) g_objPanel.setWidth(objGallerySize.width); else g_objPanel.setHeight(objGallerySize.height);

g_objPanel.run(); }


/** * on tile click - open lightbox */ function onTileClick(data, objTile){

objTile = jQuery(objTile);

var objItem = g_objTileDesign.getItemByTile(objTile); var index = objItem.index;

g_lightbox.open(index); }


/** * before items request: hide items, show preloader */ function onBeforeReqestItems(){

g_objTilesWrapper.hide();

if(g_objPreloader){ g_objPreloader.show();

var preloaderSize = g_functions.getElementSize(g_objPreloader); var galleryHeight = preloaderSize.bottom + 30;

g_objWrapper.height(galleryHeight); }

}

/** * open lightbox at start if needed */ function onLightboxInit(){

if(g_options.theme_auto_open !== null){ g_lightbox.open(g_options.theme_auto_open); g_options.theme_auto_open = null; }

}


/** * init buttons functionality and events */ function initEvents(){

//remove preloader on tiles first placed if(g_objPreloader){

g_gallery.onEvent(g_tiles.events.TILES_FIRST_PLACED, function(){

g_objWrapper.height("auto"); g_objPreloader.hide(); }); }

jQuery(g_objTileDesign).on(g_objTileDesign.events.TILE_CLICK, onTileClick);

g_objGallery.on(g_gallery.events.GALLERY_BEFORE_REQUEST_ITEMS, onBeforeReqestItems);

jQuery(g_lightbox).on(g_lightbox.events.LIGHTBOX_INIT, onLightboxInit);

}


/** * destroy the theme */ this.destroy = function(){

jQuery(g_objTileDesign).off(g_objTileDesign.events.TILE_CLICK);

g_gallery.destroyEvent(g_tiles.events.TILES_FIRST_PLACED);

g_objGallery.off(g_gallery.events.GALLERY_BEFORE_REQUEST_ITEMS);

jQuery(g_lightbox).off(g_lightbox.events.LIGHTBOX_INIT);

g_tiles.destroy(); g_lightbox.destroy(); }


/** * run the theme setting */ this.run = function(){

runTheme(); }


/** * add items */ this.addItems = function(){

g_tiles.runNewItems(); }


/** * init */ this.init = function(gallery, customOptions){

initTheme(gallery, customOptions);

}


}