﻿//user clicks ddl
//js needs to open a new window
//if a group filter is already used, replace its value and reload page
//if a group filter isnt used, then set one in context of other qs being used
function dropDownList1OnChange(elementRef)
{
    //alert("dropDownList1OnChange fired");
    var qs = new Querystring();
	var newUrl = location.href;
	var groupAndDate = elementRef.value.split(",");
	var newGroup = groupAndDate[0];
	var newStartDate;
	if (groupAndDate.length > 1)
	     newStartDate = groupAndDate[1];
	var group = "";
	var startdate = "";
	
	//handle group filter
	if (qs.contains("group"))
	{
		group = qs.get("group");
		
		//hack becuase client put an & and a ' in a group (in the same group as well)
		//no more privileges for them!
		if (newUrl.indexOf("%26") > 0)
		{
		    group = group.replace("&", "%26");
		}
		if (newUrl.indexOf("%27") > 0)
		{
		    group = group.replace("'", "%27");
		}
		
		newUrl = newUrl.replace(group, newGroup);
	}
	else
	{
		var qsPrefix = "?group=";
		
		if (newUrl.indexOf("?") > 0)
			qsPrefix = "&group=";
		
		newUrl = newUrl + qsPrefix + escape(newGroup);
	}

	//handle start date	
	if (qs.contains("startDate"))
	{		
        startdate = qs.get("startDate");
        newUrl = newUrl.replace(startdate, newStartDate);
	}
	else
	{
		var qsPrefix = "?startDate=";
		
		if (newUrl.indexOf("?") > 0)
			qsPrefix = "&startDate=";
				
	    newUrl = newUrl + qsPrefix + newStartDate;
	}	

	window.location = newUrl;
}

function Querystring(qs) { // optionally pass a querystring to parse
	this.params = {};
	
	if (qs == null) qs = location.search.substring(1, location.search.length);
	if (qs.length == 0) return;
	//qs = qs.replace(/\+/g, ' ');
	var args = qs.split('&'); // parse out name/value pairs separated via &

	for (var i = 0; i < args.length; i++) {
		var pair = args[i].split('=');
		var name = decodeURIComponent(pair[0]);
		
		var value = (pair.length==2)
			? decodeURIComponent(pair[1])
			: name;
		this.params[name] = value;
	}
}

Querystring.prototype.get = function(key, default_) {
	var value = this.params[key];
	return (value != null) ? value : default_;
}

Querystring.prototype.contains = function(key) {
	var value = this.params[key];
	return (value != null);
}

