<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">/*!
    * Start Bootstrap - Freelancer v6.0.5 (https://startbootstrap.com/theme/freelancer)
    * Copyright 2013-2020 Start Bootstrap
    * Licensed under MIT (https://github.com/StartBootstrap/startbootstrap-freelancer/blob/master/LICENSE)
    */
(function($) {
	"use strict"; // Start of use strict

	// Smooth scrolling using jQuery easing
	$('a.js-scroll-trigger[href*="#"]:not([href="#"])').click(function() {
		if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') &amp;&amp; location.hostname == this.hostname) {
			var target = $(this.hash);
			target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
			if (target.length) {
				$('html, body').animate({
					scrollTop: (target.offset().top - 71)
				}, 1000, "easeInOutExpo");
				return false;
			}
		}
	});

	$(document).on('click', '[data-toggle="lightbox"]', function(event) {
		event.preventDefault();
		$(this).ekkoLightbox();
	});


	// Scroll to top button appear
	$(document).scroll(function() {
		var scrollDistance = $(this).scrollTop();
		if (scrollDistance &gt; 100) {
			$('.scroll-to-top').fadeIn();
		} else {
			$('.scroll-to-top').fadeOut();
		}
	});

	// Closes responsive menu when a scroll trigger link is clicked
	$('.js-scroll-trigger').click(function() {
		$('.navbar-collapse').collapse('hide');
	});

	// Activate scrollspy to add active class to navbar items on scroll
	$('body').scrollspy({
		target: '#mainNav',
		offset: 80
	});

	$('.datepicker').datepicker();

	// Collapse Navbar
	var navbarCollapse = function() {
		if ($(".header").offset().top &gt; 100) {
			$(".header").addClass("navbar-shrink");
			$("#mainNav").addClass("navbar-shrink");
			$("#LogoNav").addClass("navbar-shrink");
			$("#topNav").addClass("navbar-hide");
		} else {
			$(".header").removeClass("navbar-shrink");
			$("#mainNav").removeClass("navbar-shrink");
			$("#LogoNav").removeClass("navbar-shrink");
			$("#topNav").removeClass("navbar-hide");
		}
	};
	// Collapse now if page is not at top
	navbarCollapse();
	// Collapse the navbar when page is scrolled
	$(window).scroll(function() {
		$('#statistics:in-viewport(50)').one(
			runCounter()
		);
		navbarCollapse();
	});

	var owl = $('.discover-images'),
		owlOptions = {
			loop: true,
			items: 1,
			startPosition: 1
		};

	if ( $(window).width() &lt; 991 ) {
		var owlActive = owl.owlCarousel(owlOptions);
	} else {
		owl.addClass('off');
	}

	$(window).resize(function() {
		if ( $(window).width() &lt; 991 ) {
			if ( $('.discover-images').hasClass('off') ) {
				var owlActive = owl.owlCarousel(owlOptions);
				owl.removeClass('off');
			}
		} else {
			if ( !$('.discover-images').hasClass('off') ) {
				owl.addClass('off').trigger('destroy.owl.carousel');
				owl.find('.owl-stage-outer').children(':eq(0)').unwrap();
			}
		}
	});


	$(".testimonial-carousel").owlCarousel({
		items: 1,
		nav: true,
		loop: true,
		navText: ['&lt;em class="fal fa-chevron-left"&gt;&lt;/em&gt;','&lt;em class="fal fa-chevron-right"&gt;&lt;/em&gt;'],
		onInitialized: function(event) {
			$('#testimonial').find('.owl-item').attr('aria-selected', 'false');
			$('#testimonial').find('.owl-item.active').attr('aria-selected', 'true'); // let screen readers know an item is active


			// apply meta info to next and previous buttons and make them focusable
			$('#testimonial').find('.owl-prev').attr('role', 'button').attr('title', 'Previous');
			$('#testimonial').find('.owl-next').attr('role', 'button').attr('title', 'Next');
			$('#testimonial, .owl-prev, .owl-next').attr('tabindex', '0');

			// add instructions to keyboard users that are only visible when the carousel is focused
			//$('.hero-slide').find('.owl-stage-outer').append('&lt;p class="alert alert-success show-on-focus"&gt;Use left and right arrow keys to navigate.&lt;/p&gt;');

			// listen for keyboard input
			$(document).on('keydown', function(e) {

				var $focusedElement = $(document.activeElement),
					singleOwl = $("#testimonial, .masthead.owl-carousel").data('owlCarousel'),
					type = e.which == 39 ? 'next' : null,
					type = e.which == 37 ? 'prev' : type,
					type = e.which == 13 ? 'enter' : type;

				// if the carousel is focused, use left and right arrow keys to navigate
				if ($focusedElement.attr('id') === 'owl-single-example') {

					if (type == 'next') {
						singleOwl.next();
					} else if (type == 'prev') {
						singleOwl.prev();
					}

					// if the prev and next buttons are focused, catch "Enter" and navigate in the right direction
				} else if (type == 'enter') {
					if ($focusedElement.hasClass('owl-next')) {
						singleOwl.next();
					} else if ($focusedElement.hasClass('owl-prev')) {
						singleOwl.prev();
					}
				}
			});
		},
	});

	$(".masthead").owlCarousel({
		items: 1,
		nav: true,
		loop: true,
		autoplay: true,
		autoplayHoverPause: true,
		navText: ['&lt;em class="fal fa-chevron-left"&gt;&lt;/em&gt;','&lt;em class="fal fa-chevron-right"&gt;&lt;/em&gt;'],
		onInitialized: function(event) {
			$('.masthead.owl-carousel').find('.owl-item').attr('aria-selected', 'false');
			$('.masthead.owl-carousel').find('.owl-item.active').attr('aria-selected', 'true'); // let screen readers know an item is active

			// apply meta info to next and previous buttons and make them focusable
			$('.masthead.owl-carousel').find('.owl-prev').attr('role', 'button').attr('title', 'Previous');
			$('.masthead.owl-carousel .owl-prev em').removeClass('fa-chevron-left').addClass('fa-arrow-left');
			$('.masthead.owl-carousel').find('.owl-next').attr('role', 'button').attr('title', 'Next');
			$('.masthead.owl-carousel .owl-next em').removeClass('fa-chevron-right').addClass('fa-arrow-right');
			$('.masthead.owl-carousel, .owl-prev, .owl-next').attr('tabindex', '0');

			// add instructions to keyboard users that are only visible when the carousel is focused
			//$('.hero-slide').find('.owl-stage-outer').append('&lt;p class="alert alert-success show-on-focus"&gt;Use left and right arrow keys to navigate.&lt;/p&gt;');

			// listen for keyboard input
			$(document).on('keydown', function(e) {

				var $focusedElement = $(document.activeElement),
					singleOwl = $("#testimonial, .masthead.owl-carousel").data('owlCarousel'),
					type = e.which == 39 ? 'next' : null,
					type = e.which == 37 ? 'prev' : type,
					type = e.which == 13 ? 'enter' : type;

				// if the carousel is focused, use left and right arrow keys to navigate
				if ($focusedElement.attr('id') === 'owl-single-example') {

					if (type == 'next') {
						singleOwl.next();
					} else if (type == 'prev') {
						singleOwl.prev();
					}

					// if the prev and next buttons are focused, catch "Enter" and navigate in the right direction
				} else if (type == 'enter') {
					if ($focusedElement.hasClass('owl-next')) {
						singleOwl.next();
					} else if ($focusedElement.hasClass('owl-prev')) {
						singleOwl.prev();
					}
				}
			});
		},
	});

	$('.menu_search a').click(function(e) {
		e.preventDefault();
		$('.search-wrapper').fadeIn();
		$('#search-box').focus();
	});
	$('.close-button').click(function() {
		$('.search-wrapper').fadeOut();
	});
	$('.close-button').keyup(function(event) {
		if (event.keyCode === 13) {
			$('.search-wrapper').fadeOut();
		}
	});

	var body = $('body').width();
	if (body &lt; 992) {
		$('li.l2dropdown').removeClass('dropleft');
	}

	// level 2 dropdown
	$('.l2dropdown &gt; a').click(function(e) {
		$('.l2dropdown &gt; a').removeClass('show');
		$('ul.navbarDropdownl2').hide();
		$(this).next('ul.navbarDropdownl2').toggle();
		$(this).toggleClass('show');
		e.stopPropagation();
		e.preventDefault();
	});

})(jQuery); // End of use strict

function runCounter() {
	$('.statistics-item-number&gt;.count').each(function() {
		var countTo = $(this).attr('data-count');
		$(this).prop('Counter', 0)
			.animate({
			Counter: countTo
		}, {
			duration: 4000,
			easing: 'swing',
			step: function(now) {
				$(this).text(Math.ceil(now));
			},
			complete: function() {
				// console.log("counter complete!");
			}
		});
	});
}

function close_notif() {
	$(".notif-bar").hide();
}

$(document).ready(function() {
	var gridContainerElement = document.getElementById('grid');
	var resp;
	var $grid = $('.program-grid-container');
	var $faculty = $('.faculty-grid-container');
	var buttonFilter;
	var qsRegex;
	var qsRegex2;
	var itemSelector = '.pager-item';
	var filters = {};
	var comboFilter;

	//Fetch data 
	if ($grid.length &gt; 0) {
		fetch('/_resources/data/programs.json', {mode: 'cors'})
			.then(function(response) {
			json_resp = response.json();
			return json_resp;
		})
			.then(function(response) {
			resp = response.data;

			resp.sort(function(a, b) {
				return compareStrings(a.title, b.title);
			})

			// Create and insert the markup.
			var markup = getItemMarkup(resp);
			appendMarkupToGrid(markup);

		}).then(function() {
			$grid.isotope({
				itemSelector: itemSelector,
				layoutMode: 'fitRows',
				filter: function() {
					var $this = $(this);
					var searchResult = qsRegex ? $this.find('.filter').text().match( qsRegex ) : true;
					var comboResult = comboFilter ? $this.is( comboFilter ) : true;
					return searchResult &amp;&amp; comboResult;
				}
			});
			/*
                // init Infinite Scroll
                $grid.infiniteScroll({
                    // Infinite Scroll options
                    path: '.pagination__next',
                    hideNav: '.pagination',
                    status: '.scroller-status',
                    // do not set append
                    // do not set outlayer
                });

                // append items on load
                $grid.on('load.infiniteScroll', function(event, response, path) {
                    var $items = $(response).find('.pager-item');
                    // append items after images loaded
                    $items.imagesLoaded(function() {
                        $grid.append($items);
                        $grid.isotope('insert', $items);
                    });
                });

                $('.directory-program-type').on('click', function() {
                    var programtype = $(this).html();
                    $('#program_type').val(programtype).change();
                });
                */
		});

		$('.toggle-view .grid').click(function(e) {
			e.preventDefault();
			$('.toggle-view .list').removeClass('active').removeAttr('aria-pressed');
			$(this).addClass('active').attr('aria-pressed', 'true');
			$('.grid-view').toggleClass('grid list');
			$('.pager-item').addClass('col-lg-4 col-md-6');
			$('.pager-item').removeClass('col-12');
			$grid.isotope();
		});
		$('.toggle-view .list').click(function(e) {
			e.preventDefault();
			$('.toggle-view .grid').removeClass('active').removeAttr('aria-pressed');
			$('.grid-view').toggleClass('grid list');
			$(this).addClass('active').attr('aria-pressed', 'true');
			$('.pager-item').removeClass('col-lg-4 col-md-6');
			$('.pager-item').addClass('col-12');
			$grid.isotope();
		});

		$('.filter-group2').on('change', function() {
			filter_val = "";
			$('.filter-group2').each(function() {
				val = $(this).val();
				group = $(this).attr("name");
				filters[group] = [];
				if (Array.isArray(val)) {
					$.each(val, function(index, value) {
						filters[group].push(value.toLowerCase());
					});
				} else {
					val = val.split(" ");
					$.each(val, function(index, value) {
						filters[group].push("."+value.toLowerCase());
					});
				}
			});
			comboFilter = getComboFilter( filters );
			$grid.isotope();

			$('.filter-notif').fadeIn();
		});

		// use value of search field to filter
		$('.filter-keyword').keyup( function() {
			qsRegex = new RegExp( $(this).val(), 'gi' );
			$grid.isotope();
			$('.filter-notif').fadeIn();
		});

		function compareStrings(a, b) {
			// Assuming you want case-insensitive comparison
			a = a.toLowerCase();
			b = b.toLowerCase();

			return (a &lt; b) ? -1 : (a &gt; b) ? 1 : 0;
		}

		function getComboFilter( filters ) {
			var i = 0;
			var comboFilters = [];
			var message = [];

			for ( var prop in filters ) {
				message.push( filters[ prop ].join(' ') );
				var filterGroup = filters[ prop ];
				// skip to next filter group if it doesn't have any values
				if ( !filterGroup.length ) {
					continue;
				}
				for (var ii=0, len_ii = filterGroup.length; ii &lt; len_ii; ii++) {
					filterGroup[ii] = '.' + filterGroup[ii];
				}
				if ( i === 0 ) {
					// copy to new array
					comboFilters = filterGroup.slice(0);
				} else {
					var filterSelectors = [];
					// copy to fresh array
					var groupCombo = comboFilters.slice(0); // [ A, B ]
					// merge filter Groups
					for (var k=0, len3 = filterGroup.length; k &lt; len3; k++) {
						for (var j=0, len2 = groupCombo.length; j &lt; len2; j++) {
							filterSelectors.push( groupCombo[j] + filterGroup[k] ); // [ 1, 2 ]
						}

					}
					// apply filter selectors to combo filters for next group
					comboFilters = filterSelectors;
				}
				i++;
			}

			var comboFilter = comboFilters.join(', ');
			return comboFilter;
		}
	}
	if ($faculty.length &gt; 0) {
		fetch('/_resources/data/faculty.json', {mode: 'cors'})
			.then(function(response) {
			json_resp = response.json();
			return json_resp;
		})
			.then(function(response) {
			resp = response.data;

			resp.sort(function(a, b) {
				return a.lastname.localeCompare(b.lastname)
				// 				return compareStrings(a.lastname, b.lastname);
			})

			// Create and insert the markup.
			var markup = getItemMarkupForFaculty(resp);
			appendMarkupToGrid(markup);

		}).then(function() {
			qsUrl = getUrlVars()["keyword"];
			if (qsUrl &amp;&amp; qsUrl.length &gt; 0) {
				$('#keyword').val(qsUrl);
				qsRegex = new RegExp("("+qsUrl+")", 'gi');
			}    
			$faculty.isotope({
				itemSelector: itemSelector,
				layoutMode: 'fitRows',
				filter: function() {
					var searchResult;
					if (qsRegex &amp;&amp; !qsRegex2) {
						searchResult = qsRegex ? $(this).find('.filter').text().match(qsRegex) : true;
					} else if (qsRegex2 &amp;&amp; !qsRegex) {
						searchResult = qsRegex2 ? $(this).find('.filter-ln').text().match(qsRegex2) : true;
					} else searchResult = true;

					return searchResult;
				}
			});
			checkResults($faculty);
		});
	}

	// Function to check if filters have some results
	function checkResults($container){
		var visibleItemsCount = $container.data('isotope').filteredItems.length;

		if( visibleItemsCount &gt; 0 ){
			$('.noresult').hide();
		}
		else{
			$('.noresult').show();
		}
	}
	// Set selected value to filter field
	var params = $.parseParams();
	$("#keyword").val(params["search_phrase"]);
	$("#location").val(params["location"]);
	$("#category").val(params["category"]);
	$("#date").val(params["date"]);

	// programs select
	$('#area_of_interest').multiSelect({
		'noneText': 'Area of Interest',
	});
	$('#programs').multiSelect({
		'noneText': 'Program Type',
	});
	$('#campus').multiSelect({
		'noneText': 'Campus',
	});
	$('#location').multiSelect({
		'noneText': 'Location',
	});
	$('#category').multiSelect({
		'noneText': 'Category',
	});
	$('#date').multiSelect({
		'noneText': 'Date',
	});


	$('.filter-group').on('change', function() {
		filter_val = "";
		$('.filter-group').each(function() {
			val = $(this).val();
			if (Array.isArray(val)) {
				val = val.join("|");
			}
			if (val != "") {
				if (filter_val != "") {
					filter_val = filter_val + "|" + val;
				} else {
					filter_val = val;
				}
			}
		});
		qsRegex2 = "";
		qsRegex = new RegExp("("+filter_val.trim()+")", 'gi');
		if ($grid.length &gt; 0) {
			$grid.isotope();
			checkResults($grid);
		}
		if ($faculty.length &gt; 0) {
			$faculty.isotope();
			checkResults($faculty);
		}
		$('.filter-notif').fadeIn();
	});

	$('.index-item').on('click', function(e) {
		var filter_val2;
		e.preventDefault();
		filter_val2 = $(this).text();
		if (filter_val2 == "All") filter_val2 = "";
		qsRegex2 = new RegExp("("+filter_val2+")", 'gi');
		qsRegex = "";
		$faculty.isotope();
		checkResults($faculty);
	});

	/**
     * Convert an object to HTML markup for an item.
     * @param {object} dataForSingleItem Data object.
     * @return {string}
     */
	function getMarkupFromData(dataForSingleItem) {
		return [
			'&lt;div class="col-lg-4 col-md-6 pager-item ' + dataForSingleItem.programs.join(' ').toLowerCase().replace(/(\s)/g, '-').replace("'","") + ' ' + dataForSingleItem.area_of_interest.toLowerCase().replace("'","") + '"&gt;',
			'&lt;div class="directory-item"&gt;',
			'&lt;div class="directory-item-image"&gt;',
			'&lt;img src="' + dataForSingleItem.image['src'] + '" alt="' + dataForSingleItem.title + '"&gt;',
			'&lt;/div&gt;',
			'&lt;div class="directory-item-caption"&gt;',
			'&lt;div class="directory-item-caption-title"&gt;',
			'&lt;a href="' + dataForSingleItem.url + '"&gt;' + dataForSingleItem.title + '&lt;/a&gt;',
			'&lt;/div&gt;',
			'&lt;div class="directory-item-caption-tags"&gt;&lt;span class="directory-program-type"&gt;' + dataForSingleItem.programs.join('&lt;/span&gt; | &lt;span class="directory-program-type"&gt;') + '&lt;/span&gt;&lt;/div&gt;',
			'&lt;/div&gt;',
			'&lt;/div&gt;',
			'&lt;div class="filter" style="display:none;"&gt;' + dataForSingleItem.title + ' ' + dataForSingleItem.programs.join(' ').replace(/(\s)/g, '-').toLocaleLowerCase() + ' ' + dataForSingleItem.campus + ' ' + dataForSingleItem.area_of_interest + '&lt;/div&gt;',
			'&lt;/div&gt;',
		].join('');
	}

	/**
     * Convert an object to HTML markup for an item.
     * @param {object} dataForSingleItem Data object.
     * @return {string}
     */
	function getMarkupFromDataForFaculty(dataForSingleItem) {
		if (dataForSingleItem.preferredname != ''){
			var first_name = dataForSingleItem.preferredname
			} else {
				var first_name = dataForSingleItem.firstname
				}
		if (dataForSingleItem.prefix != ''){
			var prefix = dataForSingleItem.prefix
			} else {
				var prefix = "\u00A0"
				}
		if (dataForSingleItem.suffix != ''){
			var suffix = dataForSingleItem.suffix
			} else {
				var suffix = "\u00A0"
				}
		if (dataForSingleItem.department2 != ''){
			var dept2 = `, ${dataForSingleItem.department2}`
			} else {
				var dept2 = "\u00A0"
				}
		if (dataForSingleItem.department3 != ''){
			var dept3 = `, ${dataForSingleItem.department3}`
			} else {
				var dept3 = "\u00A0"
				}

		var fullname = prefix + ' ' + first_name + ' ' + dataForSingleItem.lastname + ' ' + suffix
		return [
			'&lt;div class="col-lg-4 col-md-6 pager-item"&gt;',
			'&lt;div class="faculty-item"&gt;',
			'&lt;div class="faculty-item-campus-tag"&gt;'+dataForSingleItem.campus+'&lt;/div&gt;',
			'&lt;div class="faculty-item-image"&gt;',
			'&lt;img src="' + dataForSingleItem.image + '" alt="' + fullname + '"&gt;',
			'&lt;/div&gt;',
			'&lt;div class="faculty-item-caption"&gt;',
			'&lt;div class="faculty-item-caption-name"&gt;',
			'&lt;a href="' + dataForSingleItem.link + '"&gt;' + fullname + '&lt;/a&gt;',
			'&lt;/div&gt;',
			'&lt;div class="faculty-item-caption-position"&gt;' + dataForSingleItem.department.concat(dept2, dept3, '&lt;br&gt;') + '&lt;/div&gt;',
			'&lt;div class="faculty-item-caption-job"&gt;' + dataForSingleItem.job.join('&lt;br&gt;') + '&lt;/div&gt;',
			'&lt;div class="faculty-item-button"&gt;',
			'&lt;a href="' + dataForSingleItem.link + '" aria-label="Profile for ' + fullname + '"&gt;View Profile&lt;/a&gt;',
			'&lt;/div&gt;',
			'&lt;/div&gt;',
			'&lt;div class="filter" style="display:none;"&gt;' + first_name + ' ' + dataForSingleItem.lastname + ' ' + dataForSingleItem.department.concat(dept2, dept3, ' ') + '&lt;/div&gt;',
			'&lt;div class="filter-ln" style="display:none;"&gt;' + dataForSingleItem.lastname.substring(0, 1).toUpperCase() + '&lt;/div&gt;',
			'&lt;/div&gt;',
			'&lt;/div&gt;',

		].join('');
	}

	/**
     * Convert an array of item objects to HTML markup.
     * @param {object[]} items Items array.
     * @return {string}
     */
	function getItemMarkup(items) {
		return items.reduce(function(str, item) {
			return str + getMarkupFromData(item);
		}, '');
	}

	/**
     * Convert an array of item objects to HTML markup.
     * @param {object[]} items Items array.
     * @return {string}
     */
	function getItemMarkupForFaculty(items) {
		return items.reduce(function(str, item) {
			return str + getMarkupFromDataForFaculty(item);
		}, '');
	}

	/**
     * Append HTML markup to the main Shuffle element.
     * @param {string} markup A string of HTML.
     */
	function appendMarkupToGrid(markup) {
		gridContainerElement.insertAdjacentHTML('beforeend', markup);
	}

	// 	// Read a page's GET URL variables and return them as an associative array.
		function getUrlVars()
		{
			var vars = [], hash;
			var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&amp;');
			for(var i = 0; i &lt; hashes.length; i++)
			{
				hash = hashes[i].split('=');
				vars.push(hash[0]);
				vars[hash[0]] = hash[1];
			}
			return vars;
		}

	var newspage = 2;
	$('.loadmore a').on('click', function(e) {
		e.preventDefault();
		params = $.parseParams();
		console.log(params);
    	var itemsPerPage = parseInt($('.items-per-page')[0].innerText);
		var hashes = "";
		for (var [key, value] of Object.entries(params)) {
			if (key == "search_phrase") key = "keyword";
			hashes = hashes + "&amp;" + key + "=" + value;
		}
		
// 		if (document.location.host === 'egsc.oudeve.com') {
			var hostName = 'https://www.ega.edu/_resources/dmc/php/news.php';
// 		} else {
// 			var hostName = 'https://egsc.rocks/news.htm'
// 		};
// 		$.get("https://egsc.rocks/news.htm?datasource=news&amp;xpath=items%2Fitem&amp;type=listing&amp;metadata=true&amp;sort=date(date)%20desc&amp;items_per_page=5&amp;page="+newspage+"&amp;"+hashes, function(data) {
			$.get(hostName+"?datasource=news&amp;xpath=items%2Fitem&amp;type=listing&amp;metadata=true&amp;sort=date(date)%20desc&amp;items_per_page=" + itemsPerPage +"&amp;page="+newspage+"&amp;"+hashes, function(data) {
			$('.news-content').append(data);
			$('.loading').toggleClass('d-none');
			newspage++;    
		}).then(function() {
			$('.loading').toggleClass('d-none');
		});
	});
});
// Add an URL parser to JQuery that returns an object
// This function is meant to be used with an URL like the window.location
// Use: $.parseParams('http://mysite.com/?var=string') or $.parseParams() to parse the window.location
// Simple variable:  ?var=abc                        returns {var: "abc"}
// Simple object:    ?var.length=2&amp;var.scope=123     returns {var: {length: "2", scope: "123"}}
// Simple array:     ?var[]=0&amp;var[]=9                returns {var: ["0", "9"]}
// Array with index: ?var[0]=0&amp;var[1]=9              returns {var: ["0", "9"]}
// Nested objects:   ?my.var.is.here=5               returns {my: {var: {is: {here: "5"}}}}
// All together:     ?var=a&amp;my.var[]=b&amp;my.cookie=no  returns {var: "a", my: {var: ["b"], cookie: "no"}}
// You just cant have an object in an array, ?var[1].test=abc DOES NOT WORK
(function ($) {
	var re = /([^&amp;=]+)=?([^&amp;]*)/g;
	var decode = function (str) {
		return decodeURIComponent(str.replace(/\+/g, ' '));
	};
	$.parseParams = function () {
		// recursive function to construct the result object
		function createElement(params, key, value) {
			key = key + '';
			// if the key is a property
			if (key.indexOf('.') !== -1) {
				// extract the first part with the name of the object
				var list = key.split('.');
				// the rest of the key
				var new_key = key.split(/\.(.+)?/)[1];
				// create the object if it doesnt exist
				if (!params[list[0]]) params[list[0]] = {};
				// if the key is not empty, create it in the object
				if (new_key !== '') {
					createElement(params[list[0]], new_key, value);
				} else console.warn('parseParams :: empty property in key "' + key + '"');
			} else
				// if the key is an array    
				if (key.indexOf('[') !== -1) {
					// extract the array name
					var list = key.split('[');
					key = list[0];
					// extract the index of the array
					var list = list[1].split(']');
					var index = list[0]
					// if index is empty, just push the value at the end of the array
					if (index == '') {
						if (!params) params = {};
						if (!params[key] || !$.isArray(params[key])) params[key] = [];
						params[key].push(value);
					} else
						// add the value at the index (must be an integer)
					{
						if (!params) params = {};
						if (!params[key] || !$.isArray(params[key])) params[key] = [];
						params[key][parseInt(index)] = value;
					}
				} else
					// just normal key
				{
					if (!params) params = {};
					params[key] = value;
				}
		}
		// be sure the query is a string
		query = document.location.href;
		var params = {}, e;
		if (query) {
			// remove # from end of query
			if (query.indexOf('#') !== -1) {
				query = query.substr(0, query.indexOf('#'));
			}

			// remove ? at the begining of the query
			if (query.indexOf('?') !== -1) {
				query = query.substr(query.indexOf('?') + 1, query.length);
			} else return {};
			// empty parameters
			if (query == '') return {};
			// execute a createElement on every key and value
			while (e = re.exec(query)) {
				var key = decode(e[1]);
				var value = decode(e[2]);
				createElement(params, key, value);
			}
		}
		return params;
	};
})(jQuery);
</pre></body></html>