summaryrefslogtreecommitdiff
path: root/themes/default/js/ui.init.js
blob: 93dfb275fd4875908d757e836ef3fe679762b54e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
/**
 * Initialize jQuery UI and Gallery Plugin elements
 */

var short_forms = new Array(
  "#gQuickSearchForm",
  "#gAddTagForm",
  "#gSearchForm"
);

$(document).ready(function() {

  // Initialize Superfish menus
  $("ul.gMenu").addClass("sf-menu");
  $('ul.sf-menu').superfish({
    delay: 500,
    animation: {
      opacity:'show',
      height:'show'
    },
    speed: 'fast'
  });
  $("#gSiteMenu").css("display", "block");

  // Initialize status message effects
  $("#gMessage li").gallery_show_message();

  // Initialize dialogs
  $("#gLoginLink").addClass("gDialogLink");
  $(".gDialogLink").gallery_dialog();

  // Initialize view menu
  if ($("#gViewMenu").length) {
    $("#gViewMenu ul").removeClass("gMenu").removeClass("sf-menu");
    $("#gViewMenu a").addClass("ui-icon");
  }

  // Initialize short forms
  for (var i in short_forms) {
    short_form_init(short_forms[i]);
    $(short_forms[i]).addClass("gShortForm");
  }
  $(".gShortForm input[type=text]").addClass("ui-corner-left");
  $(".gShortForm input[type=submit]").addClass("ui-state-default ui-corner-right");

  // Apply jQuery UI button css to submit inputs
  $("input[type=submit]:not(.gShortForm input)").addClass("ui-state-default ui-corner-all");

  // Apply styles and icon classes to gContextMenu
  if ($(".gContextMenu").length) {
    $(".gContextMenu li").addClass("ui-state-default");
    $(".gContextMenu a").addClass("gButtonLink ui-icon-left");
    $(".gContextMenu a").prepend("<span class=\"ui-icon\"></span>");
    $(".gContextMenu a span").each(function() {
      var iconClass = $(this).parent().attr("class").match(/ui-icon-.[^\s]+/).toString();
      $(this).addClass(iconClass);
    });
  }

  // Album view only
  if ($("#gAlbumGrid").length) {
    // Vertical align thumbnails/metadata in album grid
    $(".gItem").gallery_valign();

    // Initialize context menus
    $(".gItem").hover(
      function(){
        // Insert invisible placeholder to hold the item's position in the grid
        var placeHolder = $(this).clone();
        $(placeHolder).attr("id", "gPlaceHolder");
        $(placeHolder).css("visibility", "hidden");
        $(this).after($(placeHolder));
        // Style and position the item
        $(this).addClass("gHoverItem");
        var position = $(this).position();
        $(this).css("position", "absolute");
        $(this).css("top", position.top);
        $(this).css("left", position.left);
        $(this).css("z-index", "1000");
        // Initialize the contextual menu
        $(this).gallery_context_menu();
        // Set height based on height of descendents
        var title = $(this).find("h2");
        var meta = $(this).find(".gMetadata");
        var context_label = $(this).find(".gContextMenu li:first");
        var item_ht = $(this).height();
        var title_ht = $(title).gallery_height();
        var meta_ht = $(meta).gallery_height();
        var context_label_ht = $(context_label).gallery_height();
        $(this).height(item_ht + title_ht + meta_ht + context_label_ht);
      },
      function() {
        // Reset item height, position, and z-index
        var sib_height = $(this).next().height();
        $(this).css("height", sib_height);
        $(this).css("position", "relative");
        $(this).css("top", null);
        $(this).css("left", null);
        $(this).css("z-index", null);
        // Remove the placeholder and hover class from the item
        $("#gPlaceHolder").remove();
        $(this).removeClass("gHoverItem");
      }
    );
  }

  // Photo/Item item view
  if ($("#gItem").length) {
    // Ensure the resized image fits within its container
    $("#gItem").gallery_fit_photo();

    // Initialize context menus
    var resize = $("#gItem").gallery_get_photo();
    $(resize).hover(function(){
      $(this).gallery_context_menu();
    });

    // Add scroll effect for links to named anchors
    $.localScroll({
      queue: true,
      duration: 1000,
      hash: true
    });
  }

  // Initialize button hover effect
  $.fn.gallery_hover_init();

});