From c805f70f75ea764b5c12d6098dac943340bac543 Mon Sep 17 00:00:00 2001
From: Kevin Abel <kabel2@unl.edu>
Date: Mon, 11 Jan 2016 20:00:17 -0600
Subject: [PATCH] Convert JS into AMD for loading through requirejs

---
 www/js/search.js | 293 +++++++++++++++++++++++------------------------
 1 file changed, 143 insertions(+), 150 deletions(-)

diff --git a/www/js/search.js b/www/js/search.js
index fa6e680..dabf7b3 100644
--- a/www/js/search.js
+++ b/www/js/search.js
@@ -1,157 +1,152 @@
-(function(window) {
+define(['jquery', 'analytics'], function ($, analytics) {
 	"use strict";
 
-	var
-		initCallback = 'searchInit',
-
 		// Service server (defaults to //directory.unl.edu)
-		directoryServer = null,
-
-		unlContext = '015236299699564929946:nk1siew10ie',
-
-		transitionDelay = 400,
-
-		inputSel = '#search_q',
-		formSel = '#searchform form',
-		resultSel = '.search-results',
-		googleSel = '.google-results',
+	var directoryServer = null;
 
-		evtStateChange = 'statechange',
-		wrapperMain = '#search_wrapper',
-		wrapperWeb = '#search_results',
-		wrapperDir = '#directory_results',
+	var unlContext = '015236299699564929946:nk1siew10ie';
 
-		dirResults = 'ppl_results',
-		unlResults = 'unl_results',
-		localResults = 'local_results';
+	var transitionDelay = 400;
 
-	window[initCallback] = function() {
-		window[initCallback] = null;
-
-		require(['jquery', 'analytics'], function($, analytics) {
-			// Caching Class
-			var Cache = function() {
-				this.storage = {};
-			};
-			Cache.prototype.get = function(key) {
-				return this.storage[key] || undefined;
-			};
-			Cache.prototype.save = function(key, value) {
-				this.storage[key] = value;
-				return this;
-			};
+	var inputSel = '#search_q';
+	var formSel = '#searchform form';
+	var resultSel = '.search-results';
+	var googleSel = '.google-results';
 
-			// Directory Controller Class
-			var Directory = function(server, containerId) {
-				var cntSel = '#' + containerId;
-
-				this._server = server || '//directory.unl.edu';
-				this._cache = new Cache();
-				this._searchCanceled = false;
-				this._viewState = 0;
-				this._renderTo = cntSel;
-
-				$(function() {
-					$(cntSel).on('click', '.fn a', function() {
-						if (this.target !== '_blank') {
-							this.target = '_blank';
-						}
-					});
-				});
-			};
-			Directory.prototype._render = function(data) {
-				if (this._searchCanceled) {
-					return;
-				}
+	var evtStateChange = 'statechange';
+	var wrapperMain = '#search_wrapper';
+	var wrapperWeb = '#search_results';
+	var wrapperDir = '#directory_results';
 
-				$(this._renderTo)
-					.html(data)
-					.addClass('active');
+	var dirResults = 'ppl_results';
+	var unlResults = 'unl_results';
+	var localResults = 'local_results';
 
-				this._renderState(0);
-			};
-			Directory.prototype._renderState = function(duration) {
-				var $innerRes = $('.results', $(this._renderTo)),
-					$showRes, failState,
-					depFilter = '.departments';
-
-				if (!$innerRes.length) {
-					return;
-				}
+	window.pf_getUID = function() {
+		return true;
+	};
 
-				$innerRes.slideUp(duration);
-				if (this._viewState === 0) {
-					$showRes = $innerRes.not(depFilter);
-					failState = 1;
-				} else {
-					$showRes = $innerRes.filter(depFilter);
-					failState = 0;
-				}
+	// Caching Class
+	var Cache = function() {
+		this.storage = {};
+	};
+	Cache.prototype.get = function(key) {
+		return this.storage[key] || undefined;
+	};
+	Cache.prototype.save = function(key, value) {
+		this.storage[key] = value;
+		return this;
+	};
 
-				if (!$showRes.length && typeof duration !== "undefined") {
-					this.changeViewState(failState);
-					return;
-				}
+	// Directory Controller Class
+	var Directory = function(server, containerId) {
+		var cntSel = '#' + containerId;
 
-				$showRes.slideDown();
-			};
-			Directory.prototype.cancelSearch = function() {
-				this._searchCanceled = true;
-				if (this._xhr) {
-					this._xhr.abort();
-				}
-			};
-			Directory.prototype.execute = function(q) {
-				var cacheData = this._cache.get(q),
-					self = this;
+		this._server = server || '//directory.unl.edu';
+		this._cache = new Cache();
+		this._searchCanceled = false;
+		this._viewState = 0;
+		this._renderTo = cntSel;
 
-				this._searchCanceled = false;
-				if (this._xhr) {
-					this._xhr.abort();
+		$(function() {
+			$(cntSel).on('click', '.fn a', function() {
+				if (this.target !== '_blank') {
+					this.target = '_blank';
 				}
+			});
+		});
+	};
+	Directory.prototype._render = function(data) {
+		if (this._searchCanceled) {
+			return;
+		}
 
-				if (cacheData) {
-					this._render(cacheData);
-				} else {
-					this._xhr = $.get(this._server + '/service.php?q=' + encodeURIComponent(q), function(data) {
-						self._cache.save(q, data);
-						self._render(data);
-					});
-				}
-			};
-			Directory.prototype.changeViewState = function(state) {
-				if (this._viewState == state) {
-					return;
-				}
+		$(this._renderTo)
+			.html(data)
+			.addClass('active');
 
-				var prevState = this._viewState;
+		this._renderState(0);
+	};
+	Directory.prototype._renderState = function(duration) {
+		var $innerRes = $('.results', $(this._renderTo)),
+			$showRes, failState,
+			depFilter = '.departments';
+
+		if (!$innerRes.length) {
+			return;
+		}
+
+		$innerRes.slideUp(duration);
+		if (this._viewState === 0) {
+			$showRes = $innerRes.not(depFilter);
+			failState = 1;
+		} else {
+			$showRes = $innerRes.filter(depFilter);
+			failState = 0;
+		}
+
+		if (!$showRes.length && typeof duration !== "undefined") {
+			this.changeViewState(failState);
+			return;
+		}
+
+		$showRes.slideDown();
+	};
+	Directory.prototype.cancelSearch = function() {
+		this._searchCanceled = true;
+		if (this._xhr) {
+			this._xhr.abort();
+		}
+	};
+	Directory.prototype.execute = function(q) {
+		var cacheData = this._cache.get(q),
+			self = this;
+
+		this._searchCanceled = false;
+		if (this._xhr) {
+			this._xhr.abort();
+		}
+
+		if (cacheData) {
+			this._render(cacheData);
+		} else {
+			this._xhr = $.get(this._server + '/service.php?q=' + encodeURIComponent(q), function(data) {
+				self._cache.save(q, data);
+				self._render(data);
+			});
+		}
+	};
+	Directory.prototype.changeViewState = function(state) {
+		if (this._viewState == state) {
+			return;
+		}
 
-				this._viewState = state;
-				this._renderState();
+		var prevState = this._viewState;
 
-				$(this._renderTo).trigger(evtStateChange, [state, prevState]);
-			};
-			Directory.prototype.clearAllResults = function() {
-				$(this._renderTo).empty();
-			};
+		this._viewState = state;
+		this._renderState();
 
-			var
-				// query related
-				query = '',
-				firstQ = window['INITIAL_QUERY'],
+		$(this._renderTo).trigger(evtStateChange, [state, prevState]);
+	};
+	Directory.prototype.clearAllResults = function() {
+		$(this._renderTo).empty();
+	};
 
-				actCls = 'active',
+	return {
+		initialize: function(firstQ, localContext) {
+			// query related
+			var query = '';
+			var actCls = 'active';
 
 				// CustomSearchControl instances and config
-				unlSearch,
-				localSearch,
-				activeSearch,
-				directorySearch,
-				localContext = window['LOCAL_SEARCH_CONTEXT'],
-				drawOp = new google.search.DrawOptions(),
-				searchToggleLock = false,
-
-				trackQuery = function(q) {
+			var unlSearch;
+			var localSearch;
+			var activeSearch;
+			var directorySearch;
+			var drawOp = new google.search.DrawOptions();
+			var searchToggleLock = false;
+
+			var trackQuery = function(q) {
 					var loc = window.location,
 						qs = loc.search.replace(/(?:(\?)|&)q=[^&]*(?:&|$)/, '$1'),
 						page = [
@@ -167,8 +162,9 @@
 					if (window.history.pushState) {
 						window.history.pushState({query: q}, '', page);
 					}
-				},
-				queryComplete = function(control) {
+			};
+
+			var queryComplete = function(control) {
 					var $root = $(control.root);
 
 					// a11y patching
@@ -188,21 +184,22 @@
 					$root.closest(googleSel).slideDown();
 
 					searchToggleLock = false;
-				},
-				fullQuery = function(q, track) {
+			};
+
+			var fullQuery = function(q, track) {
 					if (track !== false) {
 						trackQuery(q);
 					}
 					try {
 						activeSearch.execute(q, undefined, {});
 					} catch (e) {
-						console && console.log(e);
 						queryComplete(activeSearch);
 					}
 					directorySearch.execute(q);
 					$(wrapperMain).fadeIn();
-				},
-				fullStop = function() {
+			};
+
+			var fullStop = function() {
 					activeSearch.cancelSearch();
 					directorySearch.cancelSearch();
 					$(resultSel).removeClass(actCls);
@@ -211,14 +208,15 @@
 						activeSearch.clearAllResults();
 						directorySearch.clearAllResults();
 					}, transitionDelay);
-				},
-				queryStart = function(control, searcher, q) {
+			};
+
+			var queryStart = function(control, searcher, q) {
 					$(control.root).closest(googleSel).slideUp(0);
 					if (q !== query) {
 						trackQuery(q);
 						directorySearch.execute(q);
 					}
-				};
+			};
 
 			drawOp.enableSearchResultsOnly();
 
@@ -361,7 +359,7 @@
 					passiveQuery(q, false);
 				});
 
-				if (window.parent != undefined) {
+				if (window.parent) {
 					$(document).on('keydown', function(e) {
 						if (e.keyCode === 27) {
 							window.parent.postMessage('wdn.search.close', "*");
@@ -369,11 +367,6 @@
 					});
 				}
 			});
-
-		});
-	};
-
-	window['pf_getUID'] = function() {
-		return true;
+		}
 	};
-}(window));
+});
-- 
GitLab