1 2if(typeof g_ugFunctions != "undefined") 3 g_ugFunctions.registerTheme("compact"); 4else 5 jQuery(document).ready(function(){g_ugFunctions.registerTheme("compact")}); 6 7 8/** 9 * Grid gallery theme 10 */ 11function UGTheme_compact(){ 12 13 var t = this; 14 var g_gallery = new UniteGalleryMain(), g_objGallery, g_objects, g_objWrapper; 15 var g_objSlider; 16 var g_functions = new UGFunctions(); 17 var g_objPanel = new UGStripPanel(); 18 19 //theme options 20 var g_options = { 21 theme_load_slider:true, //true, false - load the slider 22 theme_load_panel:true, //true, false - load the thumbs grid panel 23 theme_panel_position: "bottom", //top, bottom, left, right - thumbs panel position 24 theme_hide_panel_under_width: 480 //hide panel under certain browser width, if null, don't hide 25 }; 26 27 //global defaults 28 var g_defaults = { 29 slider_controls_always_on:true, 30 slider_enable_text_panel:false, 31 slider_vertical_scroll_ondrag: true, 32 strippanel_enable_buttons:false 33 }; 34 35 36 //special defaults for left side panel position 37 var g_defaults_left = { 38 slider_enable_text_panel:true, 39 slider_zoompanel_align_hor: "right", 40 slider_fullscreen_button_align_hor: "right", 41 slider_play_button_align_hor: "right", 42 slider_zoompanel_offset_vert: 9, 43 slider_zoompanel_offset_hor: 11, 44 slider_play_button_offset_hor: 88, 45 slider_play_button_offset_vert: 8, 46 slider_fullscreen_button_offset_hor: 52, 47 slider_fullscreen_button_offset_vert: 9, 48 slider_progress_indicator_align_hor: "right", 49 slider_progress_indicator_offset_vert: 36, 50 slider_progress_indicator_offset_hor: 63 51 } 52 53 //special defaults for right side panel position 54 var g_defaults_right = { 55 slider_enable_text_panel:true, 56 slider_zoompanel_offset_vert: 9, 57 slider_zoompanel_offset_hor: 11, 58 slider_play_button_offset_hor: 88, 59 slider_play_button_offset_vert: 8, 60 slider_fullscreen_button_offset_hor: 52, 61 slider_fullscreen_button_offset_vert: 9, 62 63 slider_progress_indicator_align_hor: "left", 64 slider_progress_indicator_offset_vert: 36, 65 slider_progress_indicator_offset_hor: 63 66 67 } 68 69 //special defaults for bottom panel position 70 var g_defaults_bottom = { 71 72 slider_zoompanel_align_hor: "right", 73 slider_zoompanel_offset_vert: 10, 74 75 slider_progress_indicator_align_hor: "left", 76 slider_progress_indicator_offset_vert: 36, 77 slider_progress_indicator_offset_hor: 16 78 } 79 80 //special defaults for top panel position 81 var g_defaults_top = { 82 slider_zoompanel_align_vert: "bottom", 83 slider_zoompanel_offset_vert: 10, 84 85 slider_play_button_align_hor: "right", 86 slider_play_button_align_vert: "bottom", 87 88 slider_fullscreen_button_align_vert: "bottom", 89 slider_fullscreen_button_align_hor: "right", 90 91 slider_progress_indicator_align_vert: "bottom", 92 slider_progress_indicator_offset_vert: 40 93 } 94 95 96 //temp variables 97 var g_temp = { 98 isVertical: false, 99 isMobileModeWasEnabled: false 100 }; 101 102 103 /** 104 * Init the theme 105 */ 106 function initTheme(gallery, customOptions){ 107 108 g_gallery = gallery; 109 110 g_options = jQuery.extend(g_options, customOptions); 111 112 modifyOptions(customOptions); 113 114 //set gallery options 115 g_gallery.setOptions(g_options); 116 117 //include gallery elements 118 if(g_options.theme_load_panel == true){ 119 g_objPanel.init(gallery, g_options); 120 g_objPanel.setOrientation(g_options.theme_panel_position); 121 122 }else 123 g_objPanel = null; 124 125 if(g_options.theme_load_slider == true) 126 g_gallery.initSlider(g_options); 127 128 g_objects = gallery.getObjects(); 129 130 //get some objects for local use 131 g_objGallery = jQuery(gallery); 132 g_objWrapper = g_objects.g_objWrapper; 133 134 if(g_options.theme_load_slider == true) 135 g_objSlider = g_objects.g_objSlider; 136 137 } 138 139 140 /** 141 * modify options 142 */ 143 function modifyOptions(customOptions){ 144 145 g_options = jQuery.extend(g_options, g_defaults); 146 147 if(g_options.theme_load_panel == true){ 148 149 switch(g_options.theme_panel_position){ 150 case "left": 151 case "right": 152 g_temp.isVertical = true; 153 g_options.strippanel_vertical_type = true; 154 break; 155 } 156 } 157 158 159 switch(g_options.theme_panel_position){
160 case "left": 161 g_options = jQuery.extend(g_options, g_defaults_left); 162 break; 163 case "right": 164 g_options = jQuery.extend(g_options, g_defaults_right); 165 break; 166 case "top": 167 g_options = jQuery.extend(g_options, g_defaults_top); 168 break; 169 case "bottom": 170 g_options = jQuery.extend(g_options, g_defaults_bottom); 171 break; 172 } 173 174 g_options = jQuery.extend(g_options, customOptions); 175 176 } 177 178 179 /** 180 * init all the theme's elements and set them to their places 181 * according gallery's dimentions. 182 * this function should work on resize too. 183 */ 184 function initAndPlaceElements(){ 185 186 //place objects: 187 if(g_objPanel){ 188 initThumbsPanel(); 189 placeThumbsPanel(); 190 } 191 192 if(g_objSlider){ 193 g_objSlider.run(); 194 placeSlider(); 195 } 196 197 } 198 199 200 /** 201 * run the theme 202 */ 203 function runTheme(){ 204 205 setHtml(); 206 207 initAndPlaceElements(); 208 209 initEvents(); 210 } 211 212 213 /** 214 * set gallery html elements 215 */ 216 function setHtml(){ 217 218 //add html elements 219 g_objWrapper.addClass("ug-theme-grid"); 220 221 //set panel html 222 if(g_objPanel) 223 g_objPanel.setHtml(); 224 225 //set slider html 226 if(g_objSlider) 227 g_objSlider.setHtml(); 228 229 } 230 231 232 /** 233 * init size of the thumbs panel 234 */ 235 function initThumbsPanel(){ 236 237 //set size: 238 var objGallerySize = g_gallery.getSize(); 239 240 if(g_temp.isVertical == false) 241 g_objPanel.setWidth(objGallerySize.width); 242 else 243 g_objPanel.setHeight(objGallerySize.height); 244 245 g_objPanel.run(); 246 } 247 248 249 250 /** 251 * place thumbs panel according the settings 252 */ 253 function placeThumbsPanel(){ 254 255 var isNeedToHide = isPanelNeedToHide(); 256 var isHidden = g_objPanel.isPanelClosed(); 257 258 var objPanelElement = g_objPanel.getElement(); 259 var posVert = "bottom"; 260 var posHor = "left"; 261 262 var showClosed = (isNeedToHide || isHidden); 263 264 if(showClosed){ 265 var hiddenDest = g_objPanel.getClosedPanelDest(); 266 var originalPos = g_functions.getElementRelativePos(objPanelElement, g_options.theme_panel_position); 267 g_objPanel.setClosedState(originalPos); 268 }else{ 269 g_objPanel.setOpenedState(); 270 } 271 272 switch(g_options.theme_panel_position){ 273 case "right": 274 case "left": 275 posHor = g_options.theme_panel_position; 276 if(showClosed) 277 posHor = hiddenDest; 278 279 break; 280 case "top": 281 case "bottom": 282 posVert = g_options.theme_panel_position; 283 if(showClosed) 284 posVert = hiddenDest; 285 break; 286 default: 287 throw new Error("Wrong panel position: " + g_options.theme_panel_position); 288 break; 289 } 290 291 g_functions.placeElement(objPanelElement, posHor, posVert, 0, 0); 292 } 293 294 295 296 /** 297 * place the slider according the thumbs panel size and position 298 */ 299 function placeSlider(){ 300 301 //g_objPanel 302 var gallerySize = g_functions.getElementSize(g_objWrapper); 303 304 var sliderWidth = gallerySize.width; 305 var sliderHeight = gallerySize.height; 306 var sliderTop = 0; 307 var sliderLeft = 0; 308 309 if(g_objPanel){ 310 311 var panelSize = g_objPanel.getSize(); 312 313 switch(g_options.theme_panel_position){ 314 case "left": 315 sliderLeft = panelSize.right; 316 sliderWidth = gallerySize.width - panelSize.right; 317 break; 318 case "right": 319 sliderWidth = panelSize.left; 320 break; 321 case "top": 322 sliderHeight = gallerySize.height - panelSize.bottom; 323 sliderTop = panelSize.bottom; 324 break; 325 case "bottom": 326 sliderHeight = panelSize.top; 327 break; 328 } 329 330 } 331 332 g_objSlider.setSize(sliderWidth, sliderHeight); 333 g_objSlider.setPosition(sliderLeft, sliderTop); 334 } 335 336 /** 337 * check if need to hide the panel according the options. 338 */ 339 function isPanelNeedToHide(){ 340 341 if(!g_options.theme_hide_panel_under_width) 342 return(false); 343 344 var windowWidth = jQuery(window).width(); 345 var hidePanelValue = g_options.theme_hide_panel_under_width; 346 347 if(windowWidth <= hidePanelValue) 348 return(true); 349 350 return(false); 351 } 352 353 354 /** 355 * check if need to hide or show panel according the theme_hide_panel_under_width option 356 */ 357 function checkHidePanel(){ 358 359 //check hide panel: 360 if(!g_options.theme_hide_panel_under_width) 361 return(false); 362 363 var needToHide = isPanelNeedToHide(); 364 365 if(needToHide == true){ 366 g_objPanel.closePanel(true); 367 g_temp.isMobileModeWasEnabled = true; 368 } 369 else{ 370 if(g_temp.isMobileModeWasEnabled == true){
371 g_objPanel.openPanel(true); 372 g_temp.isMobileModeWasEnabled = false; 373 } 374 } 375 } 376 377 378 /** 379 * on gallery size change - resize the theme. 380 */ 381 function onSizeChange(){ 382 383 initAndPlaceElements(); 384 385 if(g_objPanel) 386 checkHidePanel(); 387 388 } 389 390 391 /** 392 * on panel move event 393 */ 394 function onPanelMove(){ 395 396 placeSlider(); 397 } 398 399 400 /** 401 * before items request: hide items, show preloader 402 */ 403 function onBeforeReqestItems(){ 404 405 g_gallery.showDisabledOverlay(); 406 407 } 408 409 410 /** 411 * init buttons functionality and events 412 */ 413 function initEvents(){ 414 415 g_objGallery.on(g_gallery.events.SIZE_CHANGE,onSizeChange); 416 g_objGallery.on(g_gallery.events.GALLERY_BEFORE_REQUEST_ITEMS, onBeforeReqestItems); 417 418 if(g_objPanel){ 419 jQuery(g_objPanel).on(g_objPanel.events.FINISH_MOVE, onPanelMove); 420 } 421 422 } 423 424 425 /** 426 * destroy the theme 427 */ 428 this.destroy = function(){ 429 430 g_objGallery.off(g_gallery.events.SIZE_CHANGE); 431 g_objGallery.off(g_gallery.events.GALLERY_BEFORE_REQUEST_ITEMS); 432 433 if(g_objPanel) 434 jQuery(g_objPanel).off(g_objPanel.events.FINISH_MOVE); 435 436 g_objPanel.destroy(); 437 g_objSlider.destroy(); 438 439 } 440 441 442 /** 443 * run the theme setting 444 */ 445 this.run = function(){ 446 447 runTheme(); 448 } 449 450 451 /** 452 * init 453 */ 454 this.init = function(gallery, customOptions){ 455 456 initTheme(gallery, customOptions); 457 } 458 459 460} 461
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.