function av_parseParameter(name) {
	name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
	var regexS = "[\\?&]" + name + "=([^&#]*)";
	var regex = new RegExp(regexS, "i");
	var results = regex.exec(window.location.href);
	if (results == null) return null;
	else return results[1];
}

var av_savedParams = [];

function av_readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for (var i = 0; i < ca.length; i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1, c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
	}
	return null;
}

function av_saveParameter(name) {
	var value = av_parseParameter(name);
	
	if (value != null) {
		var d = new Date();
		d.setDate(d.getDate() + 30);
		document.cookie = name + "=" + value + "; expires=" + d.toGMTString() + "; path=/";
	}
	else {
		value = av_readCookie(name);
		if (value == null) return;
	}
	
	av_savedParams[av_savedParams.length] = [name, value];
}

function av_paramExistsInSaved(name, savedLen) {

	for (var i = 0; i < savedLen; i++) {
		if (av_savedParams[i][0] == name) {
			return true;
		}
	}

	return false;
}

function av_updateHrefWithSavedParams(selector) {

	var savedLen = av_savedParams.length;
	if (savedLen == 0) return;

	$(selector).each(function(index) {
	
		var paramList = [];
		var newQuery = "?";
		var firstParam = true;
		
		var href = $(this).attr("href");
		
		var queryIndex = href.indexOf('?');
		if (queryIndex != -1) {
		
			var query = href.slice(queryIndex + 1);
			href = href.slice(0, queryIndex);

			var thisPair;
			var paramPairs = query.split('&');
			for (var i = 0; i < paramPairs.length; i++) {
				thisPair = paramPairs[i].split('=');
				
				if (!av_paramExistsInSaved(thisPair[0], savedLen)) {
				
					if (firstParam == true) {
						firstParam = false;
					}
					else {
						newQuery += "&";
					}
					
					newQuery += thisPair[0] + "=" + thisPair[1];
				}
			}
		}
		
		for (var i = 0; i < savedLen; i++) {
		
			if (firstParam == true) {
				firstParam = false;
			}
			else {
				newQuery += "&";
			}
			
			newQuery += av_savedParams[i][0] + "=" + av_savedParams[i][1];
		}
	
		$(this).attr("href", href + newQuery)
	});
}
