﻿/*
/ Adds querystring parameters to links.
*/
function AddQueryParamsToLinks()
{
	// Define some constants that we need
	var ADD_QUERYSTRING_CLASS_NAME = 'qsAdd';
	var NAME_VALUE_DELIMITER = '-';
	var PARAM_TO_ADD_CLASS_NAME_PREFIX = 'qs' + NAME_VALUE_DELIMITER;

	try
	{
		// Loop through all links.
		var links = document.getElementsByTagName("a");
		for(var i=0; i < links.length; i++)
		{
			var link = links[i];
			var className = link.className;
			
			// Look for the magic class name.
			if(className.match(ADD_QUERYSTRING_CLASS_NAME))
			{
				var classNames = className.split("\w+");
				for(j = 0; j < classNames.length; j++)
				{
					var name = classNames[j];
					var regExp = new RegExp("\\b" + PARAM_TO_ADD_CLASS_NAME_PREFIX + "(\\w+" + NAME_VALUE_DELIMITER + "\\w+)\\b", "g");
					var params = new Array();

					// Get all of the params from the class name attr.
					while((result = regExp.exec(name)) != null)
					{
						var param = RegExp.$1;
						params.push(param);
					}
					
					// Loop through each param and add them to the link.
					for(var k = 0; k < params.length; k++)
					{
						var param = params[k];
						var nameValue = param.split(NAME_VALUE_DELIMITER);
						var name = nameValue.shift();
						var value = nameValue.shift();
						
						// Is there already a querystring on the link?
						if(link.search.match("="))
						{
							link.search += "&" + name + "=" + value;
						}
						else
						{
							link.search += "?" + name + "=" + value;
						}
					}
				}
			}
		}
	}
	catch(e)
	{
		// noop
	}
}

// Utility function to add an event handler to an object
function addEvent(obj, evType, fn, useCapture)
{
	var ret=false;
	try
	{
		if(obj!=null)
		{
			if(obj.addEventListener)
			{
				obj.addEventListener(evType, fn, useCapture);
				ret=true;
			}
			else if(obj.attachEvent)
			{
				obj.attachEvent("on" + evType, fn);
				ret=true;
			}
		}
	}
	catch(e)
	{
		// noop
	}
	return ret;
}

// Add the event handler to the window.
try
{
	addEvent(window, "load", AddQueryParamsToLinks, false);
}
catch(e)
{
	// noop
}