From 509af68a24cb140cbc99046b1e933f0986089628 Mon Sep 17 00:00:00 2001
From: chaosphere2112 <samuelbfries@gmail.com>
Date: Sun, 27 Oct 2013 21:14:09 -0700
Subject: [PATCH 1/4] Swapped parseRel's parts array to an object, the correct
 type for an assoc array in JS

---
 js/lightbox.js | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/js/lightbox.js b/js/lightbox.js
index 0f7213f..083f050 100644
--- a/js/lightbox.js
+++ b/js/lightbox.js
@@ -1059,8 +1059,14 @@ Lightbox = {
 
   // parseRel()
   parseRel: function (link) {
-    var parts = [];
-    parts["rel"] = parts["title"] = parts["group"] = parts["style"] = parts["flashvars"] = null;
+    var parts = {
+	"rel":null,
+	"title":null,
+	"group":null,
+	"style":null,
+	"flashvars":null
+    };
+
     if (!$(link).attr('rel')) return parts;
     parts["rel"] = $(link).attr('rel').match(/\w+/)[0];
 
-- 
1.8.1.2


From 86d5e772768f144c2c57222dcf39d3da464b2e41 Mon Sep 17 00:00:00 2001
From: chaosphere2112 <samuelbfries@gmail.com>
Date: Sun, 27 Oct 2013 21:17:56 -0700
Subject: [PATCH 2/4] Cached the jquery'd version of link in parseRel, and
 cached the rel attribute so it only has to be looked up once.

---
 js/lightbox.js | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/js/lightbox.js b/js/lightbox.js
index 083f050..2218f27 100644
--- a/js/lightbox.js
+++ b/js/lightbox.js
@@ -1066,20 +1066,21 @@ Lightbox = {
 	"style":null,
 	"flashvars":null
     };
+    link = $(link);
+    if (!link.attr('rel')) return parts;
+    var link_rel = link.attr("rel");
+    parts["rel"] = link_rel.match(/\w+/)[0];
 
-    if (!$(link).attr('rel')) return parts;
-    parts["rel"] = $(link).attr('rel').match(/\w+/)[0];
-
-    if ($(link).attr('rel').match(/\[(.*)\]/)) {
-      var info = $(link).attr('rel').match(/\[(.*?)\]/)[1].split('|');
+    if (link_rel.match(/\[(.*)\]/)) {
+      var info = link_rel.match(/\[(.*?)\]/)[1].split('|');
       parts["group"] = info[0];
       parts["style"] = info[1];
       if (parts["style"] != undefined && parts["style"].match(/flashvars:\s?(.*?);/)) {
         parts["flashvars"] = parts["style"].match(/flashvars:\s?(.*?);/)[1];
       }
     }
-    if ($(link).attr('rel').match(/\[.*\]\[(.*)\]/)) {
-      parts["title"] = $(link).attr('rel').match(/\[.*\]\[(.*)\]/)[1];
+    if (link_rel.match(/\[.*\]\[(.*)\]/)) {
+      parts["title"] = link_rel.match(/\[.*\]\[(.*)\]/)[1];
     }
     return parts;
   },
-- 
1.8.1.2


From e05dc9a5fedf2a6fb0ad0a57d31e0b1f646d01b6 Mon Sep 17 00:00:00 2001
From: chaosphere2112 <samuelbfries@gmail.com>
Date: Sun, 27 Oct 2013 21:19:26 -0700
Subject: [PATCH 3/4] Missed a caching opportunity in the last commit

---
 js/lightbox.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/js/lightbox.js b/js/lightbox.js
index 2218f27..ac8b38f 100644
--- a/js/lightbox.js
+++ b/js/lightbox.js
@@ -1067,8 +1067,8 @@ Lightbox = {
 	"flashvars":null
     };
     link = $(link);
-    if (!link.attr('rel')) return parts;
     var link_rel = link.attr("rel");
+    if (!link_rel) return parts;
     parts["rel"] = link_rel.match(/\w+/)[0];
 
     if (link_rel.match(/\[(.*)\]/)) {
-- 
1.8.1.2


From aa9c8991ecd5a18381e9f1acf9f3104b50c1b146 Mon Sep 17 00:00:00 2001
From: chaosphere2112 <samuelbfries@gmail.com>
Date: Sun, 27 Oct 2013 21:23:32 -0700
Subject: [PATCH 4/4] Cached regex results, and made the regular expressions
 support multiple lines of text between [ and ]

---
 js/lightbox.js | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/js/lightbox.js b/js/lightbox.js
index ac8b38f..32e5b98 100644
--- a/js/lightbox.js
+++ b/js/lightbox.js
@@ -1071,16 +1071,18 @@ Lightbox = {
     if (!link_rel) return parts;
     parts["rel"] = link_rel.match(/\w+/)[0];
 
-    if (link_rel.match(/\[(.*)\]/)) {
-      var info = link_rel.match(/\[(.*?)\]/)[1].split('|');
+    var match = link_rel.match(/\[([^\]]*?)\]/);
+    if (match) {
+      var info = match[1].split('|');
       parts["group"] = info[0];
       parts["style"] = info[1];
       if (parts["style"] != undefined && parts["style"].match(/flashvars:\s?(.*?);/)) {
         parts["flashvars"] = parts["style"].match(/flashvars:\s?(.*?);/)[1];
       }
     }
-    if (link_rel.match(/\[.*\]\[(.*)\]/)) {
-      parts["title"] = link_rel.match(/\[.*\]\[(.*)\]/)[1];
+    match = link_rel.match(/\[[^\]]*\]\[([^\]]*)\]/);
+    if (match) {
+      parts["title"] = match[1];
     }
     return parts;
   },
-- 
1.8.1.2

