// Image Node Auto-Format with Auto Image Grouping.
// Original version by Steve McKenzie.
// Altered by Stella Power for jQuery version.
(function ($) {
function parse_url(url, param) {
param = param.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
url = url.replace(/&/, "&");
var regexS = "[\\?&]"+param+"=([^]*)";
var regex = new RegExp(regexS);
var results = regex.exec(url);
if (results === null) {
return "";
}
else {
return results[1];
}
}
function lightbox2_init_triggers(classes, rel_type, custom_class) {
if (classes == '' || rel_type == 0) {
return;
}
var settings = Drupal.settings.lightbox2;
var link_target = "";
if (settings.node_link_target !== 0) {
link_target = 'target="'+ settings.node_link_target +'"';
}
$("a:has("+classes+")").each(function(i) {
if ((!settings.disable_for_gallery_lists && !settings.disable_for_acidfree_gallery_lists) || (!$(this).parents("td.giAlbumCell").attr("class") && !$(this).parents(".galleries").length && !$(this).parents(".acidfree-folder").length && !$(this).parents(".acidfree-list").length) || ($(this).parents(".galleries").length && !settings.disable_for_gallery_lists) || (($(this).parents(".acidfree-folder").length || $(this).parents(".acidfree-list").length) && !settings.disable_for_acidfree_gallery_lists)) {
var child = $(this).find(classes);
// Ensure the child has a class attribute we can work with.
if ($(child).attr("class")) {
// Set the alt text.
var alt = $(child).attr("alt");
if (!alt) {
alt = "";
}
// Set the image node link text.
var link_text = settings.node_link_text;
var download_link_text = settings.download_link_text;
var rewrite = 1;
// Set the rel attribute.
var rel = "lightbox";
var lightframe = false;
if (rel_type == "lightframe_ungrouped") {
rel = "lightframe[]";
lightframe = true;
}
else if (rel_type == "lightframe") {
lightframe = true;
}
else if (rel_type == "lightbox_ungrouped") {
rel = "lightbox[]";
}
if (rel_type != "lightbox_ungrouped" && rel_type != "lightframe_ungrouped") {
rel = rel_type + "[" + $(child).attr("class") + "]";
}
// Set the basic href attribute - need to ensure there's no language
// string (e.g. /en) prepended to the URL.
var id = null;
var href = $(child).attr("src");
var download = null;
var orig_href = $(this).attr("href");
var pattern = new RegExp(settings.file_path);
if (orig_href.match(pattern)) {
var lang_pattern = new RegExp(Drupal.settings.basePath + "\\w\\w\\/");
orig_href = orig_href.replace(lang_pattern, Drupal.settings.basePath);
}
var frame_href = orig_href;
// Handle flickr images.
if ($(child).attr("class").match("flickr-photo-img") ||
$(child).attr("class").match("flickr-photoset-img")) {
href = $(child).attr("src").replace("_s.", ".").replace("_t.", ".").replace("_m.", ".").replace("_b.", ".");
if (rel_type != "lightbox_ungrouped" && rel_type != "lightframe_ungrouped") {
rel = rel_type + "[flickr]";
if ($(child).parents("div.block-flickr").attr("class")) {
id = $(child).parents("div.block-flickr").attr("id");
rel = rel_type + "["+ id +"]";
}
}
download = href;
}
// Handle "image-img_assist_custom" images.
else if ($(child).filter("img[class*=img_assist_custom]").size()) {
// Image assist uses "+" signs for spaces which doesn't work for
// normal links.
if (settings.display_image_size != "original") {
orig_href = orig_href.replace(/\+/, " ");
href = $(child).attr("src").replace(new RegExp("\\.img_assist_custom-[0-9]+x[0-9]+"), ((settings.display_image_size === "")?settings.display_image_size:"."+ settings.display_image_size));
if (rel_type != "lightbox_ungrouped" && rel_type != "lightframe_ungrouped") {
rel = rel_type + "[node_images]";
}
if (lightframe) {
frame_href = orig_href + "/lightbox2";
}
}
else {
rewrite = 0;
}
}
// Handle "inline" images.
else if ($(child).attr("class").match("inline")) {
href = orig_href;
}
// Handle gallery2 block images.
else if ($(child).attr("class").match("ImageFrame_image") || $(child).attr("class").match("ImageFrame_none")) {
var thumb_id = parse_url(href, "g2_itemId");
var new_id = parse_url(orig_href, "g2_itemId");
if (new_id && thumb_id) {
var g2pattern = new RegExp("g2_itemId="+thumb_id);
var replacement = "g2_itemId="+ new_id;
href = href.replace(g2pattern, replacement);
}
rel = rel_type + "[gallery2]";
if ($(child).parents("div.block-gallery").attr("class")) {
id = $(child).parents("div.block-gallery").attr("id");
rel = rel_type + "["+ id +"]";
}
download = href;
}
// Set the href attribute.
else if (settings.image_node_sizes != '()' && !custom_class) {
if (settings.display_image_size != "original") {
href = $(child).attr("src").replace(new RegExp(settings.image_node_sizes), ((settings.display_image_size === "")?settings.display_image_size:"."+ settings.display_image_size)).replace(/(image\/view\/\d+)(\/[\w\-]*)/, ((settings.display_image_size === "")?"$1/_original":"$1/"+ settings.display_image_size));
if (rel_type != "lightbox_ungrouped" && rel_type != "lightframe_ungrouped") {
rel = rel_type + "[node_images]";
if ($(child).parents("div.block-multiblock,div.block-image").attr("class")) {
id = $(child).parents("div.block-multiblock,div.block-image").attr("id");
rel = rel_type + "["+ id +"]";
}
}
download = $(child).attr("src").replace(new RegExp(settings.image_node_sizes), "").replace(/(image\/view\/\d+)(\/[\w\-]*)/, "$1/_original");
if (lightframe) {
frame_href = orig_href + "/lightbox2";
}
}
else {
rewrite = 0;
}
}
// Modify the image url.
var img_title = $(child).attr("title");
if (!img_title) {
img_title = $(this).attr("title");
if (!img_title) {
img_title = $(child).attr("alt");
}
$(child).attr({title: img_title});
}
if (lightframe) {
href = frame_href;
}
if (rewrite) {
if (!custom_class) {
var title_link = "";
if (link_text.length) {
title_link = "
"+ link_text + "";
}
if (download_link_text.length && download) {
title_link = title_link + " - " + download_link_text + "";
}
rel = rel + "[" + img_title + title_link + "]";
$(this).attr({
rel: rel,
href: href
});
}
else {
if (rel_type != "lightbox_ungrouped" && rel_type != "lightframe_ungrouped") {
rel = rel_type + "[" + $(child).attr("class") + "]";
if ($(child).parents("div.block-image").attr("class")) {
id = $(child).parents("div.block-image").attr("id");
rel = rel_type + "["+ id +"]";
}
}
rel = rel + "[" + img_title + "]";
$(this).attr({
rel: rel,
href: orig_href
});
}
}
}
}
});
}
function lightbox2_image_nodes() {
var settings = Drupal.settings.lightbox2;
// Don't do it on the image assist popup selection screen.
var img_assist = document.getElementById("img_assist_thumbs");
if (!img_assist) {
// Select the enabled image types.
lightbox2_init_triggers(settings.trigger_lightbox_classes, "lightbox_ungrouped");
lightbox2_init_triggers(settings.custom_trigger_classes, settings.custom_class_handler, true);
lightbox2_init_triggers(settings.trigger_lightbox_group_classes, "lightbox");
lightbox2_init_triggers(settings.trigger_slideshow_classes, "lightshow");
lightbox2_init_triggers(settings.trigger_lightframe_classes, "lightframe_ungrouped");
lightbox2_init_triggers(settings.trigger_lightframe_group_classes, "lightframe");
}
}
Drupal.behaviors.initAutoLightbox = {
attach: function(context, settings) {
lightbox2_image_nodes();
}
};
//End jQuery block
}(jQuery));