PageSourceSearch

https://www.barcel.com.mx/themes/custom/barceldos/js/unitegallery/ug-theme-default.js?sgub02

js barcel.com.mx collected 2026-09-28 13:40:44 UTC 17,586 bytes, 682 lines download raw bytes

1
2if(typeof g_ugFunctions != "undefined")
3  g_ugFunctions.registerTheme("default");
4else
5  jQuery(document).ready(function(){g_ugFunctions.registerTheme("default")});
6
7
8/**
9 * Default gallery theme
10 */
11function UGTheme_default(){
12
13  var t = this;
14  var g_gallery = new UniteGalleryMain(), g_objGallery, g_objects, g_objWrapper;
15  var g_objButtonFullscreen, g_objButtonPlay, g_objButtonHidePanel;
16  var g_objSlider, g_objPanel, g_objStripPanel, g_objTextPanel;
17  var g_functions = new UGFunctions();
18
19  //theme options
20  var g_options = {
21      theme_load_slider:true,          //this option for debugging only
22      theme_load_panel:true,          //this option for debugging only
23
24      theme_enable_fullscreen_button: true,  //show, hide the theme fullscreen button. The position in the theme is constant
25      theme_enable_play_button: true,      //show, hide the theme play button. The position in the theme is constant
26      theme_enable_hidepanel_button: true,  //show, hide the hidepanel button
27      theme_enable_text_panel: true,      //enable the panel text panel.
28
29      theme_text_padding_left: 20,      //left padding of the text in the textpanel
30      theme_text_padding_right: 5,      //right paddin of the text in the textpanel
31      theme_text_align: "left",        //left, center, right - the align of the text in the textpanel
32      theme_text_type: "description",      //title, description, both - text that will be shown on the text panel, title or description or both
33
34      theme_hide_panel_under_width: 480    //hide panel under certain browser width, if null, don't hide
35  };
36
37
38  //default item options:
39  var g_defaults = {
40
41    //slider options:
42    slider_controls_always_on: true,
43    slider_zoompanel_align_vert: "top",
44    slider_zoompanel_offset_vert: 12,
45
46    //textpanel options:
47    slider_textpanel_padding_top: 0,
48    slider_textpanel_enable_title: false,
49    slider_textpanel_enable_description: true,
50    slider_vertical_scroll_ondrag: true,
51
52    //strippanel options
53    strippanel_background_color:"#232323",
54    strippanel_padding_top:10
55  };
56
57
58  //options that could not be changed by user
59  var g_mustOptions = {
60
61    slider_enable_text_panel: false,
62    slider_enable_play_button:false,
63    slider_enable_fullscreen_button: false,
64
65    //text panel options
66    slider_enable_text_panel: false,
67    slider_textpanel_height: 50,
68    slider_textpanel_align:"top",
69  };
70
71
72  var g_temp = {
73    isPanelHidden: false
74  };
75
76
77  /**
78   * init the theme
79   */
80  function initTheme(gallery, customOptions){
81
82    g_gallery = gallery;
83
84    g_options = jQuery.extend(g_options, g_defaults);
85    g_options = jQuery.extend(g_options, customOptions);
86    g_options = jQuery.extend(g_options, g_mustOptions);
87
88    modifyOptions();
89
90    //set gallery options
91    g_gallery.setOptions(g_options);
92
93    //include gallery elements
94    if(g_options.theme_load_panel == true){
95      g_objStripPanel = new UGStripPanel();
96      g_objStripPanel.init(gallery, g_options);
97    }
98
99    if(g_options.theme_load_slider == true)
100      g_gallery.initSlider(g_options);
101
102    g_objects = gallery.getObjects();
103
104    //get some objects for local use
105    g_objGallery = jQuery(gallery);
106    g_objWrapper = g_objects.g_objWrapper;
107
108    if(g_options.theme_load_slider == true)
109      g_objSlider = g_objects.g_objSlider;
110
111    //init text panel
112    if(g_options.theme_enable_text_panel == true){
113      g_objTextPanel = new UGTextPanel();
114      g_objTextPanel.init(g_gallery, g_options, "slider");
115    }
116
117  }
118
119
120  /**
121   * run the theme
122   */
123  function runTheme(){
124
125    setHtml();
126
127    initAndPlaceElements();
128
129    initEvents();
130  }
131
132
133  /**
134   * modify some options before implimenting
135   */
136  function modifyOptions(){
137
138    var moreOptions = {
139        slider_textpanel_css_title:{},            //additional css of the title
140        slider_textpanel_css_description:{}          //additional css of the description
141    };
142
143    g_options = jQuery.extend(moreOptions, g_options);
144
145    g_options.slider_textpanel_css_title["text-align"] = g_options.theme_text_align;
146    g_options.slider_textpanel_css_description["text-align"] = g_options.theme_text_align;
147
148    switch(g_options.theme_text_type){
149      case "title":
150        g_options.slider_textpanel_enable_title = true;
151        g_options.slider_textpanel_enable_description = false;
152      break;
153      case "both":
154        g_options.slider_textpanel_enable_title = true;
155        g_options.slider_textpanel_enable_description = true;
156      break;
157      default:
158      case "description":    //the description is the default
159    }
160
161  }
162
163
164
165  /**
166   * set gallery html elements
167   */
168  function setHtml(){
169
170    //add html elements
171    g_objWrapper.addClass("ug-theme-default");
172
173    var htmlAdd = "";
174
175    //add panel
176    htmlAdd += "<div class='ug-theme-panel'>";
177
178    var classButtonFullscreen = 'ug-default-button-fullscreen';
179    var classButtonPlay = 'ug-default-button-play';
180    var classCaptureButtonFullscreen = '.ug-default-button-fullscreen';
181    var classCaptureButtonPlay = '.ug-default-button-play';
182
183
184    if(!g_objTextPanel){  //take the buttons from default theme
185      classButtonFullscreen = 'ug-default-button-fullscreen-single';
186      classButtonPlay = 'ug-default-button-play-single';
187      classCaptureButtonFullscreen = '.ug-default-button-fullscreen-single';
188      classCaptureButtonPlay = '.ug-default-button-play-single';
189    }
190
191    //add fullscreen button to the panel
192    if(g_options.theme_enable_fullscreen_button == true)
193      htmlAdd += "<div class='"+classButtonFullscreen+"'></div>";
194
195    //add play button to the panel
196    if(g_options.theme_enable_play_button == true)
197      htmlAdd += "<div class='"+classButtonPlay+"'></div>";
198
199    //add hide panel button
200    if(g_options.theme_enable_hidepanel_button)
201      htmlAdd += "<div class='ug-default-button-hidepanel'><div class='ug-default-button-hidepanel-bg'></div> <div class='ug-default-button-hidepanel-tip'></div></div>";
202
203    htmlAdd += "</div>";
204
205    g_objWrapper.append(htmlAdd);
206
207    //set elements
208    g_objPanel = g_objWrapper.children(".ug-theme-panel");
209
210    if(g_options.theme_enable_fullscreen_button == true)
211      g_objButtonFullscreen = g_objPanel.children(classCaptureButtonFullscreen);
212
213    if(g_options.theme_enable_play_button == true)
214      g_objButtonPlay = g_objPanel.children(classCaptureButtonPlay);
215
216    if(g_options.theme_enable_hidepanel_button == true)
217      g_objButtonHidePanel = g_objPanel.children(".ug-default-button-hidepanel");
218
219    //set html strip panel to the panel
220    g_objStripPanel.setHtml(g_objPanel);
221
222    //set text panel html to the panel
223    if(g_objTextPanel)
224      g_objTextPanel.appendHTML(g_objPanel);
225
226    //set slider html
227    if(g_objSlider)
228      g_objSlider.setHtml();
229
230  }
231
232
233  /**
234   * init all the theme's elements and set them to their places
235   * according gallery's dimentions.
236   * this function should work on resize too.
237   */
238  function initAndPlaceElements(){
239
240    //create and place thumbs panel:
241    if(g_options.theme_load_panel){
242      initPanel();
243      placePanel();
244    }
245
246    //place the slider
247    if(g_objSlider){
248      placeSlider();
249      g_objSlider.run();
250    }
251
252  }
253
254
255  /**
256   * init size of the thumbs panel
257   */
258  function initPanel(){
259
260    var objGallerySize = g_gallery.getSize();
261    var galleryWidth = objGallerySize.width;
262
263    //init srip panel width
264    g_objStripPanel.setOrientation("bottom");
265    g_objStripPanel.setWidth(galleryWidth);
266    g_objStripPanel.run();
267
268    //set panel size
269    var objStripPanelSize = g_objStripPanel.getSize();
270    var panelHeight = objStripPanelSize.height;
271
272    if(g_objTextPanel){
273      panelHeight += g_mustOptions.slider_textpanel_height;
274
275      if(g_objButtonHidePanel){
276        var hideButtonHeight = g_objButtonHidePanel.outerHeight();
277        panelHeight += hideButtonHeight;
278      }
279    }
280    else{
281      var maxButtonsHeight = 0;
282
283      if(g_objButtonHidePanel)
284        maxButtonsHeight = Math.max(g_objButtonHidePanel.outerHeight(), maxButtonsHeight);
285
286      if(g_objButtonFullscreen)
287        maxButtonsHeight = Math.max(g_objButtonFullscreen.outerHeight(), maxButtonsHeight);
288
289      if(g_objButtonPlay)
290        maxButtonsHeight = Math.max(g_objButtonPlay.outerHeight(), maxButtonsHeight);
291
292      panelHeight += maxButtonsHeight;
293
294    }
295
296    g_functions.setElementSize(g_objPanel, galleryWidth, panelHeight);
297
298    //position strip panel
299    var stripPanelElement = g_objStripPanel.getElement();
300      g_functions.placeElement(stripPanelElement, "left", "bottom");
301
302    //init hide panel button
303    if(g_objButtonHidePanel){
304      var buttonTip = g_objButtonHidePanel.children(".ug-default-button-hidepanel-tip");
305      g_functions.placeElement(buttonTip, "center", "middle");
306
307      //set opacity and bg color from the text panel
308      if(g_objTextPanel){
309        var objHideButtonBG = g_objButtonHidePanel.children(".ug-default-button-hidepanel-bg");
310
311        var hidePanelOpacity = g_objTextPanel.getOption("textpanel_bg_opacity");
312        objHideButtonBG.fadeTo(0, hidePanelOpacity);
313
314        var bgColor = g_objTextPanel.getOption("textpanel_bg_color");
315        objHideButtonBG.css({"background-color":bgColor});
316      }
317
318    }
319
320    //position buttons on the text panel:
321    var paddingPlayButton = 0;
322    var panelButtonsOffsetY = 0;
323    if(g_objButtonHidePanel){
324      panelButtonsOffsetY = hideButtonHeight;
325    }
326
327    if(g_objButtonFullscreen){
328      g_functions.placeElement(g_objButtonFullscreen, "right", "top",0 , panelButtonsOffsetY);
329      paddingPlayButton = g_objButtonFullscreen.outerWidth();
330    }
331
332    if(g_objButtonPlay){
333      var buttonPlayOffsetY = panelButtonsOffsetY;
334      if(!g_objTextPanel)
335        buttonPlayOffsetY++;
336
337      g_functions.placeElement(g_objButtonPlay, "right", "top", paddingPlayButton, buttonPlayOffsetY);
338      paddingPlayButton += g_objButtonPlay.outerWidth();
339    }
340
341    //run the text panel
342    if(g_objTextPanel){
343
344      var textPanelOptions = {};
345      textPanelOptions.slider_textpanel_padding_right = g_options.theme_text_padding_right + paddingPlayButton;
346      textPanelOptions.slider_textpanel_padding_left = g_options.theme_text_padding_left;
347
348      if(g_objButtonHidePanel){
349        textPanelOptions.slider_textpanel_margin = hideButtonHeight;
350      }
351
352      g_objTextPanel.setOptions(textPanelOptions);
353
354      g_objTextPanel.positionPanel();
355      g_objTextPanel.run();
356    }
357
358    //place hide panel button
359    if(g_objButtonHidePanel){
360
361      if(g_objTextPanel)    //place at the beginning of hte panel
362        g_functions.placeElement(g_objButtonHidePanel,"left", "top");
363
364      else{    //place above the strip panel
365        var stripPanelHeight = stripPanelElement.outerHeight();
366        g_functions.placeElement(g_objButtonHidePanel,"left", "bottom", 0, stripPanelHeight);
367      }
368    }
369
370  }
371
372
373  /**
374   * place thumbs panel according the settings
375   */
376  function placePanel(){
377
378    if(g_temp.isPanelHidden || isPanelNeedToHide() == true){
379
380      //place panel hidden
381      var newPanelPosY = getHiddenPanelPosition();
382      g_functions.placeElement(g_objPanel, 0, newPanelPosY);
383      g_temp.isPanelHidden = true;
384
385    }else    //place panel normal
386      g_functions.placeElement(g_objPanel, 0, "bottom");
387
388
389  }
390
391
392  /**
393   * place the slider according the thumbs panel size and position
394   */
395  function placeSlider(){
396
397     var sliderTop = 0;
398     var sliderLeft = 0;
399     var galleryHeight = g_gallery.getHeight();
400     var sliderHeight = galleryHeight;
401
402     if(g_objStripPanel && isPanelHidden() == false){
403       var panelSize = g_objStripPanel.getSize();
404       sliderHeight = galleryHeight - panelSize.height;
405     }
406
407     var sliderWidth = g_gallery.getWidth();
408
409     //set parent container the panel
410     g_objSlider.setSize(sliderWidth, sliderHeight);
411     g_objSlider.setPosition(sliderLeft, sliderTop);
412  }
413
414
415  /**
416   * check if need to hide the panel according the options.
417   */
418  function isPanelNeedToHide(){
419
420    if(!g_options.theme_hide_panel_under_width)
421      return(false);
422
423    var windowWidth = jQuery(window).width();
424    var hidePanelValue = g_options.theme_hide_panel_under_width;
425
426    if(windowWidth <= hidePanelValue)
427      return(true);
428
429    return(false);
430  }
431
432  /**
433   * check if need to hide or show panel according the theme_hide_panel_under_width option
434   */
435  function checkHidePanel(){
436
437    //check hide panel:
438    if(!g_options.theme_hide_panel_under_width)
439      return(false);
440
441      var needToHide = isPanelNeedToHide();
442
443      if(needToHide == true)
444        hidePanel(true);
445      else
446        showPanel(true);
447  }
448
449
450  /**
451   * on gallery size change - resize the theme.
452   */
453  function onSizeChange(){
454
455    initAndPlaceElements();
456
457    checkHidePanel();
458  }
459
460
461  /**
462   * get if the panel is hidden
463   */
464  function isPanelHidden(){
465
466    return(g_temp.isPanelHidden);
467  }
468
469
470  /**
471   * place panel with some animation
472   */
473  function placePanelAnimation(panelY, functionOnComplete){
474
475    var objCss  = {top: panelY + "px"};
476
477    g_objPanel.stop(true).animate(objCss ,{
478      duration: 300,
479      easing: "easeInOutQuad",
480      queue: false,
481      complete: function(){
482        if(functionOnComplete)
483          functionOnComplete();
484      }
485    });
486
487  }
488
489
490  /**
491   * get position of the hidden panel
492   */
493  function getHiddenPanelPosition(){
494
495    var galleryHeight = g_objWrapper.height();
496    var newPanelPosY = galleryHeight;
497    if(g_objButtonHidePanel){
498      var objButtonSize = g_functions.getElementSize(g_objButtonHidePanel);
499      newPanelPosY -= objButtonSize.bottom;
500    }
501
502    return(newPanelPosY);
503  }
504
505
506  /**
507   * hide the panel
508   */
509  function hidePanel(noAnimation){
510
511    if(!noAnimation)
512      var noAnimation = false;
513
514    if(isPanelHidden() == true)
515      return(false);
516
517    var newPanelPosY = getHiddenPanelPosition();
518
519    if(noAnimation == true)
520      g_functions.placeElement(g_objPanel, 0, newPanelPosY);
521    else
522      placePanelAnimation(newPanelPosY, placeSlider);
523
524    if(g_objButtonHidePanel)
525      g_objButtonHidePanel.addClass("ug-button-hidden-mode");
526
527    g_temp.isPanelHidden = true;
528
529  }
530
531
532  /**
533   * show the panel
534   */
535  function showPanel(noAnimation){
536
537    if(!noAnimation)
538      var noAnimation = false;
539
540    if(isPanelHidden() == false)
541      return(false);
542
543    var galleryHeight = g_objWrapper.height();
544    var panelHeight = g_objPanel.outerHeight();
545
546    var newPanelPosY = galleryHeight - panelHeight;
547
548    if(noAnimation == true)
549      g_functions.placeElement(g_objPanel, 0, newPanelPosY);
550    else
551      placePanelAnimation(newPanelPosY, placeSlider);
552
553    if(g_objButtonHidePanel)
554      g_objButtonHidePanel.removeClass("ug-button-hidden-mode");
555
556    g_temp.isPanelHidden = false;
557  }
558
559
560  /**
561   * on hide panel click
562   */
563  function onHidePanelClick(event){
564
565    event.stopPropagation();
566    event.stopImmediatePropagation();
567
568    if(g_functions.validateClickTouchstartEvent(event.type) == false)
569      return(true);
570
571    if(isPanelHidden() == true)
572      showPanel();
573    else
574      hidePanel();
575  }
576
577  /**
578   * before items request: hide items, show preloader
579   */
580  function onBeforeReqestItems(){
581
582    g_gallery.showDisabledOverlay();
583
584  }
585
586
587  /**
588   * init buttons functionality and events
589   */
590  function initEvents(){
591
592    g_objGallery.on(g_gallery.events.SIZE_CHANGE,onSizeChange);
593    g_objGallery.on(g_gallery.events.GALLERY_BEFORE_REQUEST_ITEMS, onBeforeReqestItems);
594
595    //set the panel buttons
596    if(g_objButtonPlay){
597      g_functions.addClassOnHover(g_objButtonPlay, "ug-button-hover");
598      g_gallery.setPlayButton(g_objButtonPlay);
599    }
600
601    //init fullscreen button
602    if(g_objButtonFullscreen){
603      g_functions.addClassOnHover(g_objButtonFullscreen, "ug-button-hover");
604      g_gallery.setFullScreenToggleButton(g_objButtonFullscreen);
605    }
606
607    //init hide panel button
608    if(g_objButtonHidePanel){
609      g_functions.setButtonMobileReady(g_objButtonHidePanel);
610      g_functions.addClassOnHover(g_objButtonHidePanel, "ug-button-hover");
611      g_objButtonHidePanel.on("click touchstart", onHidePanelClick);
612    }
613
614    //on gallery media player events, bring the element to front
615    g_objGallery.on(g_gallery.events.SLIDER_ACTION_START, function(){
616
617      //set slider to front
618      g_objPanel.css("z-index","1");
619      g_objSlider.getElement().css("z-index","11");
620    });
621
622    g_objGallery.on(g_gallery.events.SLIDER_ACTION_END, function(){
623
624      //set the panel to front
625      g_objPanel.css("z-index","11");
626      g_objSlider.getElement().css("z-index","1");
627    });
628
629  }
630
631  /**
632   * destroy the gallery events and objects
633   */
634  this.destroy = function(){
635
636    g_objGallery.off(g_gallery.events.SIZE_CHANGE);
637    g_objGallery.off(g_gallery.events.GALLERY_BEFORE_REQUEST_ITEMS);
638
639    //set the panel buttons
640    if(g_objButtonPlay)
641      g_gallery.destroyPlayButton(g_objButtonPlay);
642
643    //init fullscreen button
644    if(g_objButtonFullscreen)
645      g_gallery.destroyFullscreenButton(g_objButtonFullscreen);
646
647    //init hide panel button
648    if(g_objButtonHidePanel)
649      g_functions.destroyButton(g_objButtonHidePanel);
650
651    g_objGallery.off(g_gallery.events.SLIDER_ACTION_START);
652    g_objGallery.off(g_gallery.events.SLIDER_ACTION_END);
653
654    if(g_objSlider)
655      g_objSlider.destroy();
656
657    if(g_objStripPanel)
658      g_objStripPanel.destroy();
659
660    if(g_objTextPanel)
661      g_objTextPanel.destroy();
662
663  }
664
665
666  /**
667   * run the theme setting
668   */
669  this.run = function(){
670
671    runTheme();
672  }
673
674
675  /**
676   * init
677   */
678  this.init = function(gallery, customOptions){
679    initTheme(gallery, customOptions);
680  }
681
682}

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.