/*****************************
*** Class: PTRFSiteLegend ***
*****************************/
PTRFSiteLegend = function(map,node,legendgroup) {
	this.map = map;
	this.legendgroup = legendgroup;
	this.widget = node;
	this.widget.style.fontSize = "70%";

	var wrapLi = document.createElement("li");
	wrapLi.name = "filters";
	wrapLi.style.border = "1px solid black";
	//wrapLi.appendChild(this.widget);

	this.eventManager = new PEventManager();

	this.listeners = [];
}
PTRFSiteLegend.prototype.onaddfilter = function() {
	this.eventManager.triggerListeners('addfilter');
}

PTRFSiteLegend.prototype.addListener = function(eventId, f) {
       this.eventManager.addListener(eventId, f);
}

PTRFSiteLegend.prototype.clear = function() {
	var l = this.listeners.length;
	for (var i=0; i<l; i++)
		PEvent.removeListener(this.listeners[i]);
	this.listeners = [];

	while (this.widget.hasChildNodes())
		this.widget.removeChild(this.widget.firstChild);
}

PTRFSiteLegend.prototype.refresh = function(sets) {
	// hash for data source
	var pinsource = {};
	pinsource[60600] ={label:"HUD", link:"/our-data-directory.html#HUDs A Picture of Subsidized Housing in 2000"};
	pinsource[58050] = {label:"HRSA", link:"/our-data-directory.html#HRSA Geospatial Database"};
	pinsource[1162] = {label:"US EPA", link:"/our-data-directory.html#CERCLIS Sites Reports, US EPA"};
	pinsource[74900] = {label:"SAHF", link:"/our-data-directory.html#source31"};
	pinsource[73950] = {label:"General Board of Pension of The United Methodist Church", link:"/our-data-directory.html#source30"};
	pinsource[87150] = {label:"GreatSchools", link:"/our-data-directory.html#GreatSchools School Points"};
	pinsource[75550] = {label:"GreatSchools", link:"/our-data-directory.html#GreatSchools School Points"};
	pinsource[75950] = {label:"CNJG", link:"/our-data-directory.html#source29"};
	pinsource[77100] = {label:"TPF"};
	pinsource[77200] = {label:"HRSA", link:"/our-data-directory.html#HRSA Geospatial Database"};
	pinsource[80250] = {label:"USDA", link:"/our-data-directory.html#source41"};
	pinsource[87650] = {label:"US EPA", link:"/our-data-directory.html#Brownfields Sites Reports, US EPA"};
	pinsource[87700] = {label:"Recovery Accountability and Transparency Board", link:"/our-data-directory.html#Recovery Accountability and Transparency Board"};
	pinsource[87800] = {label:"Recovery Accountability and Transparency Board", link:"/our-data-directory.html#Recovery Accountability and Transparency Board"};
	pinsource[87900] = {label:"Recovery Accountability and Transparency Board", link:"/our-data-directory.html#Recovery Accountability and Transparency Board"};
	pinsource[88000] = {label:"Recovery Accountability and Transparency Board", link:"/our-data-directory.html#Recovery Accountability and Transparency Board"};
	pinsource[88350] = {label:"Recovery Accountability and Transparency Board", link:"/our-data-directory.html#Recovery Accountability and Transparency Board"};
	pinsource[88450] = {label:"Recovery Accountability and Transparency Board", link:"/our-data-directory.html#Recovery Accountability and Transparency Board"};
	pinsource[88650] = {label:"Recovery Accountability and Transparency Board", link:"/our-data-directory.html#Recovery Accountability and Transparency Board"};
	pinsource[88550] = {label:"Recovery Accountability and Transparency Board", link:"/our-data-directory.html#Recovery Accountability and Transparency Board"};
	pinsource[88800] = {label:"HUD LIHTC", link:"/our-data-directory.html#HUD LIHTC"};
	pinsource[88900] = {label:"Recovery Accountability and Transparency Board", link:"/our-data-directory.html#Recovery Accountability and Transparency Board"};
	pinsource[89000] = {label:"Recovery Accountability and Transparency Board", link:"/our-data-directory.html#Recovery Accountability and Transparency Board"};
	pinsource[89100] = {label:"Recovery Accountability and Transparency Board", link:"/our-data-directory.html#Recovery Accountability and Transparency Board"};
	pinsource[83000] = {label:"HUD", link:"/our-data-directory.html#HUD Multifamily Assistance and Section 8 Contracts Database"};
	pinsource[86500] = {label:"NCCS", link:"/our-data-directory.html#National Center for Charitable Statistics (NCCS) at the Urban Institute"};
	pinsource[87000] = {label:"NCES and FREAC", link:"/our-data-directory.html#National Center for Education Statistics & Florida Resources and Environmental Analysis Center of Florida State University"};
	pinsource[89550] = {label:"RIS", link:"/our-data-directory.html#Record Information Services, Inc. (RIS) and Woodstock Institute"};
	pinsource[89600] = {label:"RIS", link:"/our-data-directory.html#Record Information Services, Inc. (RIS) and Woodstock Institute"};

	this.clear();

	if (!this.expandDiv)
		this.expandDiv = [];

	if (!sets) {
		var s = this.map.getOverlaySets();
		var sets = [];
		// removes the transit layer form sets array
		for (var i=0; i<s.length; i++) {
			if (!s[i].withLayer)
				sets.push[s[i]];
		}
	}
	var labelColor = "#ff9933";
	var labelBackground = "#ffffef";
	var filterBorder = "1px solid #aaa";
	var filterColor = "#919191";
	var filterBackground = "#fff";
	var filterOverColor = "#ff9933";
	var filterOverBackground = "#ffffef";
	var activeSitesColor = "#5d83d0";

	// build legend
	for (var i=0; i<sets.length; i++) {
		// icon
		var icon = document.createElement("img");
		icon.className = "site_image";
		icon.src = sets[i].icon.image;
		var iconDiv = document.createElement("div");
		iconDiv.style.styleFloat = "left";
		iconDiv.style.cssFloat = "left";
		iconDiv.appendChild(icon);
		
		// site name
		var title = document.createElement("div");
		title.className = "site_title";
		title.style.background = labelBackground;
		title.innerHTML = sets[i].getLabel();

		// close image
		var closeLink = document.createElement("a");
		var close = document.createElement("img");
		close.style.border = "none";
		closeLink.appendChild(close);
		close.src = PEnvironment.kamapUrl + 'images/button_close_widget.gif';
		closeLink.map = this.map;
		closeLink.set = sets[i];
		closeLink.legend = this;
		// need to use void(0) for the link to make the link active but not do anything so it can be keyboard accessible
		closeLink.href = "javascript:void(0)";
		this.listeners.push(PEvent.addListener(closeLink, 'click', function() {
			this.map.removeOverlaySet(this.set);
			this.set.clearFilters();
			this.legend.onaddfilter();
		}));
		closeLink.style.cursor = "pointer";
		var closeDiv = document.createElement("div");
		closeDiv.style.styleFloat = "right";
		closeDiv.style.cssFloat = "right";
		closeDiv.appendChild(closeLink);

		// br tag
		var br = document.createElement("br");
		br.clear = "both";

		// title block
		var titleBlock = document.createElement("div");
		titleBlock.className = "site_container";
		titleBlock.style.background = "#ffffef";
		titleBlock.style.color = labelColor;
		titleBlock.style.padding = "3px";
		titleBlock.style.border = "1px solid #ccc";
		titleBlock.style.borderTop = "none";
		titleBlock.style.overflow = "auto";
		if (version < 7) 
			titleBlock.style.width = "182px";
		titleBlock.appendChild(iconDiv);
		titleBlock.appendChild(title);
		titleBlock.appendChild(closeDiv);
		titleBlock.appendChild(br);
		
		this.widget.appendChild(titleBlock);

		// filter image
		if (sets[i].displayfiltergroups) {
			var menuTimer = [];
			var menuTimerNameUL = [];
			var menuTimerValueDiv = [];
			var menuWait = 300;

			function findPos(obj) {
				var curleft = curtop = 0;
				if (obj.offsetParent) {
					curleft = obj.offsetLeft
					curtop = obj.offsetTop
					while (obj = obj.offsetParent) {
						curleft += obj.offsetLeft
						curtop += obj.offsetTop
					}
				}
				return [curleft,curtop];
			};

			function removeNode(div, id) {
				for (var i=0; i<div.childNodes.length; i++) {
					if (div.childNodes[i].id == id)
						div.removeChild(div.childNodes[i]);
				}
			};

			var filterArrowImg = document.createElement("img");
			var filterArrow = document.createElement("a");
			filterArrow.appendChild(filterArrowImg);
			var nameUL = document.createElement("ul");
			filterArrowImg.style.width = "13px";
			filterArrowImg.style.height = "13px";
			filterArrowImg.style.cursor = "pointer";
			filterArrowImg.style.border = "none";
			filterArrowImg.mouseoverimg = PEnvironment.kamapUrl + "images/button_arrow_down_widget.gif";
			filterArrowImg.mouseoutimg = PEnvironment.kamapUrl + "images/button_arrow_widget.gif";
			filterArrowImg.src = filterArrowImg.mouseoutimg;
			filterArrow.style.paddingLeft = "2px";
			filterArrow.textDiv = closeDiv;
			filterArrow.nameUL = nameUL;
			filterArrow.timerIndex = i;
			filterArrow.valueDivId = "filterValueDiv";
			filterArrow.href = "javascript:void(0)"
			filterArrow.image = filterArrowImg;
			var showEvents = ['mouseover', 'focus'];
			var hideEvents = ['mouseout', 'blur'];
			for (var e=0; e<showEvents.length; e++) {
				this.listeners.push(PEvent.addListener(filterArrow, showEvents[e], function() { 
					this.image.src = this.image.mouseoverimg;
					clearTimeout(menuTimer[this.timerIndex]);
					clearTimeout(menuTimerNameUL[this.timerIndex]);
					clearTimeout(menuTimerValueDiv[this.timerIndex]);
					this.textDiv.appendChild(this.nameUL);
					removeNode(this.textDiv, this.valueDivId);
				}));
			}
			for (var e=0; e<hideEvents.length; e++) {
				this.listeners.push(PEvent.addListener(filterArrow, hideEvents[e], function() {
					var self = this;

					menuTimer[self.timerIndex] = setTimeout(function() {
						self.image.src = self.image.mouseoutimg; 
						self.textDiv.removeChild(self.nameUL);
					}, menuWait);
				}));
			}

			while (closeDiv.hasChildNodes())
				closeDiv.removeChild(closeDiv.firstChild);
			closeDiv.appendChild(closeLink);
			closeDiv.appendChild(filterArrow);
			
			// attribute name menu
			// this is the first tier of the menu
			nameUL.style.zIndex = 10000;
			nameUL.style.position = "absolute";
			nameUL.style.borderTop = filterBorder;
			nameUL.style.width = "150px";
			nameUL.style.backgroundColor = filterBackground;
			nameUL.style.listStyle = "none";
			nameUL.style.padding = "0";
			nameUL.style.margin = "0";
			nameUL.filterArrow = filterArrow;
			this.listeners.push(PEvent.addListener(nameUL, 'mouseover', function() {
				clearTimeout(menuTimer[this.filterArrow.timerIndex]);
				clearTimeout(menuTimerNameUL[this.filterArrow.timerIndex]); 
				clearTimeout(menuTimerValueDiv[this.filterArrow.timerIndex]);
			}));
			this.listeners.push(PEvent.addListener(nameUL, 'mouseout', function() {
				var filterArrow = this.filterArrow;
				menuTimerNameUL[filterArrow.timerIndex] = setTimeout(function() {
					filterArrow.image.src = filterArrow.image.mouseoutimg;
					filterArrow.textDiv.removeChild(filterArrow.nameUL);
					removeNode(filterArrow.textDiv, filterArrow.valueDivId);
				}, menuWait);
			}));

			var nameULPos = findPos(filterArrow);
			var widgetPos = findPos(this.widget);
			nameUL.style.left = nameULPos[0] - widgetPos[0] + parseInt(filterArrow.image.style.width) + 9 + "px";
			nameUL.style.top = nameULPos[1] - widgetPos[1] + "px";

			// keeps track of how many categories are added to the menu so we can calculate the positioning of the next tier
			var objlen = 0;

			for (var j in sets[i].displayfiltergroups) {
				var filters = sets[i].displayfiltergroups[j];
				if (filters.length > 0) {
					objlen++;
					var newDivOuter = document.createElement("li");
					newDivOuter.style.padding = "0px";
					newDivOuter.style.borderLeft = filterBorder;
					newDivOuter.style.borderRight = filterBorder;
					newDivOuter.style.borderBottom = filterBorder;

					var valueDiv = document.createElement("li");
					valueDiv.id = filterArrow.valueDivId;
					valueDiv.style.zIndex = nameUL.style.zIndex;
					valueDiv.style.position = nameUL.style.position;
					valueDiv.style.borderTop = nameUL.style.borderTop;
					valueDiv.style.borderRight = nameUL.style.borderRight;
					valueDiv.style.borderBottom = nameUL.style.borderBottom;
					valueDiv.style.width = nameUL.style.width;
					valueDiv.style.backgroundColor = nameUL.style.backgroundColor;
					//valueDiv.style.left = parseInt(nameUL.style.left) + parseInt(nameUL.style.width) - 1 + "px";
					//valueDiv.style.left = parseInt(nameUL.style.width) - 1 + "px";
					//valueDiv.style.top = nameUL.style.top;
					valueDiv.filterArrow = filterArrow;

					// attribute names
					var newDiv = document.createElement("div");
					var newA = document.createElement("a");
					newA.href = "javascript:void(0)";
					newA.innerHTML = j;
					newDiv.appendChild(newA);
					newA.style.display = "block";
					newA.style.textDecoration = "none";
					//newA.style.width = "136px";
					newA.style.padding = "2px 5px 2px 5px";
					newA.style.cursor = "pointer";
					newA.style.fontSize = "100%";
					newA.style.color = filterColor;
					newA.valueDiv = valueDiv;
					newA.textDiv = closeDiv;
					newA.filterArrow = filterArrow;
					newA.ftrs = filters;
					newA.mouseovercolor = filterOverBackground;
					newA.mouseoutcolor = filterBackground;
					// used to calculate the top position for next tier of the filter menu
					newA.outerIndex = objlen;
					newA.nameUL = nameUL;
					newA.newDivOuter = newDivOuter;
					this.valueDiv = valueDiv;
					// add mouseover over and focus events, in this case the 2 are the same
					for (var e=0; e<showEvents.length; e++) {
						this.listeners.push(PEvent.addListener(newA, showEvents[e], function() { 
							// remove the previous filters shown
							jQuery('#'+this.filterArrow.valueDivId).remove();

							//this.valueDiv.style.top = "-19px";
							this.style.backgroundColor = this.mouseovercolor; 
							this.style.color = filterOverColor; 
							//removeNode(this.textDiv, this.filterArrow.valueDivId);
							// second tier of the menu
							var ul = document.createElement("ul");
							ul.id = this.filterArrow.valueDivId;
							ul.style.listStyle = "none";
							ul.style.padding = "0";
							ul.style.position = "absolute";
							ul.style.left =  parseInt(this.nameUL.style.width) - 1 + "px";

							// get height of parent div so the next aligns properly to it
							var parent = this.parentNode;
							var height = jQuery(parent).outerHeight();
							ul.style.marginTop = "-" + height - 1 + "px";

							ul.appendChild(this.valueDiv);
							this.newDivOuter.appendChild(ul);

							clearTimeout(menuTimer[this.filterArrow.timerIndex]);
							clearTimeout(menuTimerValueDiv[this.filterArrow.timerIndex]); 
							clearTimeout(menuTimerNameUL[this.filterArrow.timerIndex]);
						}));
					}
					this.listeners.push(PEvent.addListener(newA, 'mouseout', function() { 
						this.style.backgroundColor = this.mouseoutcolor; 
						this.style.color = filterColor; 
					}));

					this.listeners.push(PEvent.addListener(newA, 'blur', function() { 
						this.style.backgroundColor = this.mouseoutcolor; 
						this.style.color = filterColor;

						var self = this;
						var filterArrow = this.filterArrow;

						menuTimerValueDiv[filterArrow.timerIndex] = setTimeout(function() {
							filterArrow.image.src = filterArrow.image.mouseoutimg;
							// need to comment these next lines out so we don't get an error
							//filterArrow.textDiv.removeChild(filterArrow.nameUL);
							//filterArrow.textDiv.removeChild(self);
						}, menuWait);
					}));

					newDivOuter.appendChild(newDiv);
					nameUL.appendChild(newDivOuter);
					var ul = document.createElement("ul");
					nameUL.appendChild(ul);

					var colorcodefilter = null;
					for (var k=0; k<filters.length; k++) {
						var existfilters = sets[i].filtergroups[j];
						var found = false;
						var colorcode = false;

						// attribute filter values
						var newChild = document.createElement("li");
						ul.appendChild(newChild);
						var newChildA = document.createElement("a");
						newChildA.href = "javascript:void(0)";
						newChild.appendChild(newChildA);
						var newChildOuter = document.createElement("div");
						newChildA.style.padding = newDivOuter.style.padding;
						newChildA.style.borderLeft = newDivOuter.style.borderLeft;
						newChildA.style.borderRight = newDivOuter.style.borderRight;
						newChildA.style.borderBottom = newDivOuter.style.borderBottom;
						newChildA.style.width = newA.style.width;
						newChildA.style.padding = newA.style.padding;
						newChildA.style.fontSize = "100%";
						newChildA.style.color = filterColor;
						newChildA.style.display = "block";
						newChildA.innerHTML = filters[k].displayValues();
						if (existfilters) {
							for (var l=0; l<existfilters.length; l++) {
								if (filters[k] == existfilters[l]) {
									found = true;
									if (filters[k].values[0] == "COLORCODE") {
										colorcode = true;
										colorcodefilter = filters[k];
									}
								}
							}
						}
						if (found || colorcode) {
							newChildA.style.backgroundColor = filterOverBackground;
							newChildA.style.color = filterOverColor;
						} else {
							newChildA.mouseovercolor = filterOverBackground;
							newChildA.mouseoutcolor = filterBackground;
							newChildA.overlay = sets[i];
							newChildA.filter = filters[k];
							newChildA.ftrs = newA.ftrs;
							newChildA.style.cursor = "pointer";
							newChildA.filterArrow = filterArrow;
							newChildA.timerIndex = k;
							newChildA.map = this.map;
							newChildA.legendgroup = this.legendgroup;
							newChildA.legend = this;
							newChildA.colorcodefilter = colorcodefilter;

							this.listeners.push(PEvent.addListener(newChildA, 'mouseover', function() { 
								this.style.backgroundColor = this.mouseovercolor;
								this.style.color = filterOverColor;
							}));
							this.listeners.push(PEvent.addListener(newChildA, 'focus', function() { 
								this.style.backgroundColor = this.mouseovercolor;
								this.style.color = filterOverColor;

								clearTimeout(menuTimer[this.filterArrow.timerIndex]);
								clearTimeout(menuTimerValueDiv[this.filterArrow.timerIndex]); 
								clearTimeout(menuTimerNameUL[this.filterArrow.timerIndex]);
							}));
							this.listeners.push(PEvent.addListener(newChildA, 'mouseout', function() { 
								this.style.backgroundColor = this.mouseoutcolor; 
								this.style.color = filterColor;
							}));
							this.listeners.push(PEvent.addListener(newChildA, 'blur', function() { 
								this.style.backgroundColor = this.mouseoutcolor; 
								this.style.color = filterColor;

								var self = this;
								var filterArrow = this.filterArrow;
								menuTimerValueDiv[filterArrow.timerIndex] = setTimeout(function() {
									filterArrow.image.src = filterArrow.image.mouseoutimg;
									filterArrow.textDiv.removeChild(filterArrow.nameUL);
									// need to comment this next line out so we don't get an error
									//filterArrow.textDiv.removeChild(self);
								}, menuWait);
							}));

							this.listeners.push(PEvent.addListener(newChildA, 'click', function() {
								// color coding
								if (this.filter.values[0] == "COLORCODE") {
									var filters = [];
									for (var i=0; i<this.ftrs.length; i++) {
										if (this.ftrs[i].values[0] != "COLORCODE")
											filters.push(this.ftrs[i]);
									}
									this.overlay.setFiltersByIcons(filters,this.overlay.colorcodes);
									this.overlay.filtergroups[this.filter.name] = [];
									this.overlay.filtergroups[this.filter.name].push(this.filter);
									this.legend.onaddfilter();
								} else {
									this.overlay.addFilter(this.filter);
									this.legend.onaddfilter();
									if (this.colorcodefilter)
										this.overlay.removeFilterFromGroup(this.colorcodefilter);
								}
								this.legendgroup.refresh();

							}));
						}
						newChildOuter.appendChild(newChild);
						valueDiv.appendChild(newChildOuter);
					}
				}
			}
		}
		// Check if there are any active filters
		if (sets[i].getFilters().length > 0) {
			var activeDiv = document.createElement("div");
			activeDiv.style.paddingLeft = "10px";

			//if (!this.expandDiv[i]) {
				// expand button
				var expandImg = document.createElement("img");
				expandImg.style.width = "9px";
				expandImg.style.height = "9px";
				expandImg.hspace = 3;

				this.expandDiv[i] = document.createElement("div");
				this.expandDiv[i].style.color = activeSitesColor;
				this.expandDiv[i].style.fontSize = "100%";
				this.expandDiv[i].expand = true;
				this.expandDiv[i].plusImg = PEnvironment.kamapUrl + "images/expand.png";
				this.expandDiv[i].minusImg = PEnvironment.kamapUrl + "images/collapse.png";
				expandImg.src = this.expandDiv[i].minusImg;
				this.expandDiv[i].appendChild(expandImg);
				this.expandDiv[i].innerHTML += "<u>Showing Sites By:</u><br>";
				this.expandDiv[i].style.cursor = "pointer";
				this.listeners.push(PEvent.addListener(this.expandDiv[i], 'click', function () { 
					if (this.expand) {
						this.childNodes[0].src = this.plusImg;
						this.expand = false;
						this.parentNode.removeChild(this.activeDiv);
					} 
					else { 
						this.childNodes[0].src = this.minusImg;
						this.expand = true;
						this.parentNode.appendChild(this.activeDiv);
					}
				}));
			//}
			this.expandDiv[i].activeDiv = activeDiv;
			titleBlock.appendChild(this.expandDiv[i]);
			if (this.expandDiv[i].expand)
				titleBlock.appendChild(activeDiv);
			
			for (var j in sets[i].filtergroups) {
				var filters = sets[i].filtergroups[j];
				if (filters.length > 0 && !filters[0].name.match("_HIDE")) {
					var newDiv = document.createElement("div");
					newDiv.style.paddingLeft = "8px";
					newDiv.className = "filter_container";
					newDiv.style.color = "#666";
					var newChild = document.createElement("div");
					newDiv.innerHTML = '<span class="filter">' + j + ':</span>';
					newChild.style.paddingLeft = "10px";
					newChild.style.fontSize = "100%";
					newDiv.appendChild(newChild);
					activeDiv.appendChild(newDiv);
					for (var k=0; k<filters.length; k++) {
						var newA = document.createElement("a");
						newA.href = "javascript:void(0)";
						newA.title = "Remove";
						newA.style.paddingRight = "2px";
						newA.style.color = activeSitesColor;
						newA.style.fontSize = "100%";
						newA.style.fontWeight = "normal";
						newA.style.textDecoration = "underline";
						newA.style.verticalAlign = "middle";
						newA.style.cursor = "pointer";
						newA.filter = filters[k];
						newA.overlay = sets[i];
						newA.legend = this.legendgroup;
						newA.leg = this;
						newA.map = this.map;
						newA.innerHTML = newA.filter.displayValues();
						newA.className = "filter_type"
						this.listeners.push(PEvent.addListener(newA, 'click', function() {
							this.overlay.removeFilter(this.filter);
							this.leg.onaddfilter();
							if (this.filter.values[0] == "COLORCODE")
								this.overlay.clearFiltersByIcons();
							this.legend.refresh();
						}));
						var removeImg = document.createElement("img");
						removeImg.style.border = "none";
						removeImg.src = PEnvironment.kamapUrl + "images/button_close_widget.gif";
						removeImg.style.paddingRight = "2px";
						removeImg.style.margin = "1px 0px";
						removeImg.style.verticalAlign = "middle";
						removeImg.style.cursor = "pointer";
						removeImg.filter = filters[k];
						removeImg.overlay = sets[i];
						removeImg.legend = this.legendgroup;
						removeImg.leg = this;
						removeImg.map = this.map;
						this.listeners.push(PEvent.addListener(removeImg, 'click', function() {
							this.overlay.removeFilter(this.filter);
							this.leg.onaddfilter();
							if (this.filter.values[0] == "COLORCODE")
								this.overlay.clearFiltersByIcons();
							this.legend.refresh();
						}));
						var removeSpan = document.createElement("span");
						removeSpan.appendChild(removeImg);
						removeSpan.appendChild(newA);
						newChild.appendChild(removeSpan);
						if (k < filters.length-1)
							newChild.appendChild(document.createTextNode(", "));
						if (filters[k].values[0] == "COLORCODE") {
							var displayfilters = sets[i].filtersbyicons;
							var len = displayfilters.length;
							for (var l=0; l<len; l++) {
								var colorlegend = document.createElement("div");
								colorlegend.className = "filter_colors"
								colorlegend.innerHTML = "<img border='0' src='" + sets[i].filtericons[l].image + "'> <span>" + displayfilters[l].valuesDisplay + "</span>";
								newA.appendChild(colorlegend);
							}
						}

					}
				}
			}
		}
		//add source of dataset
		if (pinsource[sets[i].id]) {
			var sourceDiv = document.createElement('a');
			sourceDiv.className = "sourceLink";
			sourceDiv.innerHTML = "Source: " + pinsource[sets[i].id].label;
			if (pinsource[sets[i].id].link) {
				sourceDiv.href = pinsource[sets[i].id].link;
				sourceDiv.target = "New";
			}
			titleBlock.appendChild(sourceDiv);
		}	
	}
}

// overwrite getFilters to not return hidden filters
POverlaySet.prototype.getFilters = function() {
	var retFilters = [];
	for (var i in this.filtergroups) {
		var filters = this.filtergroups[i];
		for (var j=0; j<filters.length; j++) {
			if (!filters[j].name.match("_HIDE"))
				retFilters.push(filters[j]);
		}
	}
	return retFilters;
}

var pinIcons = {};
var pinurl = PEnvironment.pinImageUrl;;

var triangle = new PIcon(PIcon.POINT);
// adjusts infowindow to touch icon
triangle.infoWindowAnchor = new PPoint(-2,8);
triangle.image = pinurl + "triangle.png";
triangle.shadow = "";
triangle.pinid = 50;

var plus = new PIcon(triangle);
plus.image = pinurl + "plus.png";
plus.pinid = 0;
var cross = new PIcon(triangle);
cross.image = pinurl + "cross.png";
cross.pinid = 1;
var tee = new PIcon(triangle);
tee.image = pinurl + "T_shape.png";
tee.pinid = 2;
var el = new PIcon(triangle);
el.image = pinurl + "L_shape.png";
el.pinid = 3;
var el2 = new PIcon(triangle);
el2.image = pinurl + "L_shape2.png";
el2.pinid = 4;

var triangle_purple = new PIcon(triangle);
triangle_purple.image = pinurl + "triangle_purple.png";
triangle_purple.pinid = 51;
var triangle_grey = new PIcon(triangle);
triangle_grey.image = pinurl + "triangle_grey.png";
triangle_grey.pinid = 52;
var triangle_green = new PIcon(triangle);
triangle_green.image = pinurl + "triangle_green.png";
triangle_green.pinid = 53;
var triangle_blue = new PIcon(triangle);
triangle_blue.image = pinurl + "triangle_blue.png";
triangle_blue.pinid = 54;
var triangle_red = new PIcon(triangle);
triangle_red.image = pinurl + "triangle_red.png";
triangle_red.pinid = 55;
var triangle_yellow = new PIcon(triangle);
triangle_yellow.image = pinurl + "triangle_yellow.png";
triangle_yellow.pinid = 56;
var triangle_white = new PIcon(triangle);
triangle_white.image = pinurl + "triangle_white.png";
triangle_white.pinid = 57;
var triangle_pink = new PIcon(triangle);
triangle_pink.image = pinurl + "triangle_pink.png";
triangle_pink.pinid = 58;
var triangle_black = new PIcon(triangle);
triangle_black.image = pinurl + "triangle_black.png";
triangle_black.pinid = 59;
var triangle_darkBlue = new PIcon(triangle);
triangle_darkBlue.image = pinurl + "triangle_darkBlue.png";
triangle_darkBlue.pinid = 60;
var triangle_darkGreen = new PIcon(triangle);
triangle_darkGreen.image = pinurl + "triangle_darkGreen.png";
triangle_darkGreen.pinid = 61;
var triangle_darkPurple = new PIcon(triangle);
triangle_darkPurple.image = pinurl + "triangle_darkPurple.png";
triangle_darkPurple.pinid = 62;
var triangle_darkOrange = new PIcon(triangle);
triangle_darkOrange.image = pinurl + "triangle_darkOrange.png";
triangle_darkOrange.pinid = 63;
// triangle_lightOrange isn't a part of our standard set
// of pins, but sometimes it's set as a custom pin.
var triangle_lightOrange = new PIcon(triangle);
triangle_lightOrange.image = pinurl + "triangle_lightOrange.png";
triangle_lightOrange.pinid = 64;
triangle.colors = [triangle,triangle_purple,triangle_grey,triangle_green,triangle_blue,triangle_red,triangle_yellow,triangle_white,triangle_pink,triangle_black,triangle_darkBlue,triangle_darkGreen,triangle_darkPurple,triangle_darkOrange];

var triangle180 = new PIcon(triangle);
triangle180.image = pinurl + "triangle180.png";
triangle180.pinid = 75;
pinIcons['triangle180'] = triangle180;

var circle = new PIcon(triangle);
circle.image = pinurl + "circle.png";
circle.pinid = 100;
var circle_purple = new PIcon(triangle);
circle_purple.image = pinurl + "circle_purple.png";
circle_purple.pinid = 101;
var circle_grey = new PIcon(triangle);
circle_grey.image = pinurl + "circle_grey.png";
circle_grey.pinid = 102;
var circle_green = new PIcon(triangle);
circle_green.image = pinurl + "circle_green.png";
circle_green.pinid = 103;
var circle_blue = new PIcon(triangle);
circle_blue.image = pinurl + "circle_blue.png";
circle_blue.pinid = 104;
var circle_red = new PIcon(triangle);
circle_red.image = pinurl + "circle_red.png";
circle_red.pinid = 105;
var circle_yellow = new PIcon(triangle);
circle_yellow.image = pinurl + "circle_yellow.png";
circle_yellow.pinid = 106;
var circle_white = new PIcon(triangle);
circle_white.image = pinurl + "circle_white.png";
circle_white.pinid = 107;
var circle_pink = new PIcon(triangle);
circle_pink.image = pinurl + "circle_pink.png";
circle_pink.pinid = 108;
var circle_black = new PIcon(triangle);
circle_black.image = pinurl + "circle_black.png";
circle_black.pinid = 109;
var circle_darkblue = new PIcon(triangle);
circle_darkblue.image = pinurl + "circle_darkblue.png";
circle_darkblue.pinid = 110;
var circle_darkgreen = new PIcon(triangle);
circle_darkgreen.image = pinurl + "circle_darkgreen.png";
circle_darkgreen.pinid = 111;
var circle_darkpurple = new PIcon(triangle);
circle_darkpurple.image = pinurl + "circle_darkpurple.png";
circle_darkpurple.pinid = 112;
var circle_darkorange = new PIcon(triangle);
circle_darkorange.image = pinurl + "circle_darkorange.png";
circle_darkorange.pinid = 113;
circle.colors = [circle,circle_purple,circle_grey,circle_green,circle_blue,circle_red,circle_yellow,circle_white,circle_pink,circle_black,circle_darkblue,circle_darkgreen,circle_darkpurple,circle_darkorange];

var star = new PIcon(triangle);
star.image = pinurl + "star.png";
star.pinid = 150;
var star_purple = new PIcon(triangle);
star_purple.image = pinurl + "star_purple.png";
star_purple.pinid = 151;
var star_grey = new PIcon(triangle);
star_grey.image = pinurl + "star_grey.png";
star_grey.pinid = 152;
var star_green = new PIcon(triangle);
star_green.image = pinurl + "star_green.png";
star_green.pinid = 153;
var star_blue = new PIcon(triangle);
star_blue.image = pinurl + "star_blue.png";
star_blue.pinid = 154;
var star_red = new PIcon(triangle);
star_red.image = pinurl + "star_red.png";
star_red.pinid = 155;
var star_yellow = new PIcon(triangle);
star_yellow.image = pinurl + "star_yellow.png";
star_yellow.pinid = 156;
var star_white = new PIcon(triangle);
star_white.image = pinurl + "star_white.png";
star_white.pinid = 157;
var star_pink = new PIcon(triangle);
star_pink.image = pinurl + "star_pink.png";
star_pink.pinid = 158;
var star_black = new PIcon(triangle);
star_black.image = pinurl + "star_black.png";
star_black.pinid = 159;
var star_darkblue = new PIcon(triangle);
star_darkblue.image = pinurl + "star_darkblue.png";
star_darkblue.pinid = 160;
var star_darkgreen = new PIcon(triangle);
star_darkgreen.image = pinurl + "star_darkgreen.png";
star_darkgreen.pinid = 161;
var star_darkpurple = new PIcon(triangle);
star_darkpurple.image = pinurl + "star_darkpurple.png";
star_darkpurple.pinid = 162;
var star_darkorange = new PIcon(triangle);
star_darkorange.image = pinurl + "star_darkorange.png";
star_darkorange.pinid = 163;
// star_brown isn't a part of our standard set of pins,
// but sometimes it's set as a custom pin.
var star_brown = new PIcon(triangle); 
star_brown.image = pinurl + "star_brown.png";
star_brown.pinid = 164;
star.colors = [star,star_purple,star_grey,star_green,star_blue,star_red,star_yellow,star_white,star_pink,star_black,star_darkblue,star_darkgreen,star_darkpurple,star_darkorange];

var diamond = new PIcon(triangle);
diamond.image = pinurl + "diamond.png";
diamond.pinid = 200;
var diamond_purple = new PIcon(triangle);
diamond_purple.image = pinurl + "diamond_purple.png";
diamond_purple.pinid = 201;
var diamond_grey = new PIcon(triangle);
diamond_grey.image = pinurl + "diamond_grey.png";
diamond_grey.pinid = 202;
var diamond_green = new PIcon(triangle);
diamond_green.image = pinurl + "diamond_green.png";
diamond_green.pinid = 203;
var diamond_blue = new PIcon(triangle);
diamond_blue.image = pinurl + "diamond_blue.png";
diamond_blue.pinid = 204;
var diamond_red = new PIcon(triangle);
diamond_red.image = pinurl + "diamond_red.png";
diamond_red.pinid = 205;
var diamond_yellow = new PIcon(triangle);
diamond_yellow.image = pinurl + "diamond_yellow.png";
diamond_yellow.pinid = 206;
var diamond_white = new PIcon(triangle);
diamond_white.image = pinurl + "diamond_white.png";
diamond_white.pinid = 207;
var diamond_pink = new PIcon(triangle);
diamond_pink.image = pinurl + "diamond_pink.png";
diamond_pink.pinid = 208;
var diamond_black = new PIcon(triangle);
diamond_black.image = pinurl + "diamond_black.png";
diamond_black.pinid = 209;
var diamond_drkblue = new PIcon(triangle);
diamond_drkblue.image = pinurl + "diamond_drkblue.png";
diamond_drkblue.pinid = 210;
var diamond_drkgreen = new PIcon(triangle);
diamond_drkgreen.image = pinurl + "diamond_drkgreen.png";
diamond_drkgreen.pinid = 211;
var diamond_drkpurple = new PIcon(triangle);
diamond_drkpurple.image = pinurl + "diamond_drkpurple.png";
diamond_drkpurple.pinid = 212;
var diamond_drkorange = new PIcon(triangle);
diamond_drkorange.image = pinurl + "diamond_drkorange.png";
diamond_drkorange.pinid = 213;
diamond.colors = [diamond,diamond_purple,diamond_grey,diamond_green,diamond_blue,diamond_red,diamond_yellow,diamond_white,diamond_pink,diamond_black,diamond_drkblue,diamond_drkgreen,diamond_drkpurple,diamond_drkorange];

var square = new PIcon(triangle);
square.image = pinurl + "square.png";
square.pinid = 250;
var square_purple = new PIcon(triangle);
square_purple.image = pinurl + "square_purple.png";
square_purple.pinid = 251;
var square_grey = new PIcon(triangle);
square_grey.image = pinurl + "square_grey.png";
square_grey.pinid = 252;
var square_green = new PIcon(triangle);
square_green.image = pinurl + "square_green.png";
square_green.pinid = 253;
var square_blue = new PIcon(triangle);
square_blue.image = pinurl + "square_blue.png";
square_blue.pinid = 254;
var square_red = new PIcon(triangle);
square_red.image = pinurl + "square_red.png";
square_red.pinid = 255;
var square_yellow = new PIcon(triangle);
square_yellow.image = pinurl + "square_yellow.png";
square_yellow.pinid = 256;
var square_white = new PIcon(triangle);
square_white.image = pinurl + "square_white.png";
square_white.pinid = 257;
var square_pink = new PIcon(triangle);
square_pink.image = pinurl + "square_pink.png";
square_pink.pinid = 258;
var square_black = new PIcon(triangle);
square_black.image = pinurl + "square_black.png";
square_black.pinid = 259;
var square_darkblue = new PIcon(triangle);
square_darkblue.image = pinurl + "square_darkblue.png";
square_darkblue.pinid = 260;
var square_darkgreen = new PIcon(triangle);
square_darkgreen.image = pinurl + "square_darkgreen.png";
square_darkgreen.pinid = 261;
var square_darkpurple = new PIcon(triangle);
square_darkpurple.image = pinurl + "square_darkpurple.png";
square_darkpurple.pinid = 262;
var square_darkorange = new PIcon(triangle);
square_darkorange.image = pinurl + "square_darkorange.png";
square_darkorange.pinid = 263;
square.colors = [square,square_purple,square_grey,square_green,square_blue,square_red,square_yellow,square_white,square_pink,square_black,square_darkblue,square_darkgreen,square_darkpurple,square_darkorange];
square_green.colors = [square,square_purple,square_grey,square_green,square_blue,square_red,square_yellow,square_white,square_pink,square_black,square_darkblue,square_darkgreen,square_darkpurple,square_darkorange];

var flagIcon = new PIcon(triangle);
flagIcon.image = pinurl + "flag_orange.png";
flagIcon.pinid = 300;
var flagIcon_purple = new PIcon(triangle);
flagIcon_purple.image = pinurl + "flag_purple.png";
flagIcon_purple.pinid = 301;
var flagIcon_grey = new PIcon(triangle);
flagIcon_grey.image = pinurl + "flag_grey.png";
flagIcon_grey.pinid = 302;
var flagIcon_green = new PIcon(triangle);
flagIcon_green.image = pinurl + "flag_green.png";
flagIcon_green.pinid = 303;
var flagIcon_blue = new PIcon(triangle);
flagIcon_blue.image = pinurl + "flag_blue.png";
flagIcon_blue.pinid = 304;
var flagIcon_red = new PIcon(triangle);
flagIcon_red.image = pinurl + "flag_red.png";
flagIcon_red.pinid = 305;
var flagIcon_yellow = new PIcon(triangle);
flagIcon_yellow.image = pinurl + "flag_yellow.png";
flagIcon_yellow.pinid = 306;
var flagIcon_white = new PIcon(triangle);
flagIcon_white.image = pinurl + "flag_white.png";
flagIcon_white.pinid = 307;
var flagIcon_pink = new PIcon(triangle);
flagIcon_pink.image = pinurl + "flag_pink.png";
flagIcon_pink.pinid = 308;
var flagIcon_black = new PIcon(triangle);
flagIcon_black.image = pinurl + "flag_black.png";
flagIcon_black.pinid = 309;
var flagIcon_darkblue = new PIcon(triangle);
flagIcon_darkblue.image = pinurl + "flag_darkblue.png";
flagIcon_darkblue.pinid = 310;
var flagIcon_darkgreen = new PIcon(triangle);
flagIcon_darkgreen.image = pinurl + "flag_darkgreen.png";
flagIcon_darkgreen.pinid = 311;
var flagIcon_darkpurple = new PIcon(triangle);
flagIcon_darkpurple.image = pinurl + "flag_darkpurple.png";
flagIcon_darkpurple.pinid = 312;
var flagIcon_darkorange = new PIcon(triangle);
flagIcon_darkorange.image = pinurl + "flag_darkorange.png";
flagIcon_darkorange.pinid = 313;
flagIcon.colors = [flagIcon,flagIcon_purple,flagIcon_grey,flagIcon_green,flagIcon_blue,flagIcon_red,flagIcon_yellow,flagIcon_white,flagIcon_pink,flagIcon_black,flagIcon_darkblue,flagIcon_darkgreen,flagIcon_darkpurple,flagIcon_darkorange];

var bowIcon = new PIcon(triangle);
bowIcon.image = pinurl + "bow_orange.png";
bowIcon.pinid = 350;
var bowIcon_purple = new PIcon(triangle);
bowIcon_purple.image = pinurl + "bow_purple.png";
bowIcon_purple.pinid = 351;
var bowIcon_grey = new PIcon(triangle);
bowIcon_grey.image = pinurl + "bow_grey.png";
bowIcon_grey.pinid = 352;
var bowIcon_green = new PIcon(triangle);
bowIcon_green.image = pinurl + "bow_green.png";
bowIcon_green.pinid = 353;
var bowIcon_blue = new PIcon(triangle);
bowIcon_blue.image = pinurl + "bow_blue.png";
bowIcon_blue.pinid = 354;
var bowIcon_red = new PIcon(triangle);
bowIcon_red.image = pinurl + "bow_red.png";
bowIcon_red.pinid = 355;
var bowIcon_yellow = new PIcon(triangle);
bowIcon_yellow.image = pinurl + "bow_yellow.png";
bowIcon_yellow.pinid = 356;
var bowIcon_white = new PIcon(triangle);
bowIcon_white.image = pinurl + "bow_white.png";
bowIcon_white.pinid = 357;
var bowIcon_pink = new PIcon(triangle);
bowIcon_pink.image = pinurl + "bow_pink.png";
bowIcon_pink.pinid = 358;
var bowIcon_black = new PIcon(triangle);
bowIcon_black.image = pinurl + "bow_black.png";
bowIcon_black.pinid = 359;
var bowIcon_darkblue = new PIcon(triangle);
bowIcon_darkblue.image = pinurl + "bow_darkblue.png";
bowIcon_darkblue.pinid = 360;
var bowIcon_darkgreen = new PIcon(triangle);
bowIcon_darkgreen.image = pinurl + "bow_darkgreen.png";
bowIcon_darkgreen.pinid = 361;
var bowIcon_darkpurple = new PIcon(triangle);
bowIcon_darkpurple.image = pinurl + "bow_darkpurple.png";
bowIcon_darkpurple.pinid = 362;
var bowIcon_darkorange = new PIcon(triangle);
bowIcon_darkorange.image = pinurl + "bow_darkorange.png";
bowIcon_darkorange.pinid = 363;
bowIcon.colors = [bowIcon,bowIcon_purple,bowIcon_grey,bowIcon_green,bowIcon_blue,bowIcon_red,bowIcon_yellow,bowIcon_white,bowIcon_pink,bowIcon_black,bowIcon_darkblue,bowIcon_darkgreen,bowIcon_darkpurple,bowIcon_darkorange];

var pieIcon = new PIcon(triangle);
pieIcon.image = pinurl + "pie_orange.png";
pieIcon.pinid = 400;
var pieIcon_purple = new PIcon(triangle);
pieIcon_purple.image = pinurl + "pie_purple.png";
pieIcon_purple.pinid = 401;
var pieIcon_grey = new PIcon(triangle);
pieIcon_grey.image = pinurl + "pie_grey.png";
pieIcon_grey.pinid = 402;
var pieIcon_green = new PIcon(triangle);
pieIcon_green.image = pinurl + "pie_green.png";
pieIcon_green.pinid = 403;
var pieIcon_blue = new PIcon(triangle);
pieIcon_blue.image = pinurl + "pie_blue.png";
pieIcon_blue.pinid = 404;
var pieIcon_red = new PIcon(triangle);
pieIcon_red.image = pinurl + "pie_red.png";
pieIcon_red.pinid = 405;
var pieIcon_yellow = new PIcon(triangle);
pieIcon_yellow.image = pinurl + "pie_yellow.png";
pieIcon_yellow.pinid = 406;
var pieIcon_white = new PIcon(triangle);
pieIcon_white.image = pinurl + "pie_white.png";
pieIcon_white.pinid = 407;
var pieIcon_pink = new PIcon(triangle);
pieIcon_pink.image = pinurl + "pie_pink.png";
pieIcon_pink.pinid = 408;
var pieIcon_black = new PIcon(triangle);
pieIcon_black.image = pinurl + "pie_black.png";
pieIcon_black.pinid = 409;
var pieIcon_darkblue = new PIcon(triangle);
pieIcon_darkblue.image = pinurl + "pie_darkblue.png";
pieIcon_darkblue.pinid = 410;
var pieIcon_darkgreen = new PIcon(triangle);
pieIcon_darkgreen.image = pinurl + "pie_darkgreen.png";
pieIcon_darkgreen.pinid = 411;
var pieIcon_darkpurple = new PIcon(triangle);
pieIcon_darkpurple.image = pinurl + "pie_darkpurple.png";
pieIcon_darkpurple.pinid = 412;
var pieIcon_darkorange = new PIcon(triangle);
pieIcon_darkorange.image = pinurl + "pie_darkorange.png";
pieIcon_darkorange.pinid = 413;
pieIcon.colors = [pieIcon,pieIcon_purple,pieIcon_grey,pieIcon_green,pieIcon_blue,pieIcon_red,pieIcon_yellow,pieIcon_white,pieIcon_pink,pieIcon_black,pieIcon_darkblue,pieIcon_darkgreen,pieIcon_darkpurple,pieIcon_darkorange];

// Regular polygon icon
var polyicon = new PIcon();
polyicon.image = pinurl + "polygon_orange.png";
polyicon.shadow = "";
polyicon.iconSize = new PSize(12, 12);
polyicon.iconAnchor = new PPoint(6, 6);
polyicon.color = "FF9832";
polyicon.pinid = 1000;
var poly_purple = new PIcon(polyicon);
poly_purple.image = pinurl + "polygon_purple.png";
poly_purple.color = "9999C3";
poly_purple.pinid = 1001;
var poly_grey = new PIcon(polyicon);
poly_grey.image = pinurl + "polygon_grey.png";
poly_grey.color = "DEDEDE";
poly_grey.pinid = 1002;
var poly_green = new PIcon(polyicon);
poly_green.image = pinurl + "polygon_green.png";
poly_green.color = "5DF75D";
poly_green.pinid = 1003;
var poly_blue = new PIcon(polyicon);
poly_blue.image = pinurl + "polygon_blue.png";
poly_blue.color = "5DCAF7";
poly_blue.pinid = 1004;
var poly_red = new PIcon(polyicon);
poly_red.image = pinurl + "polygon_red.png";
poly_red.color = "F75D5D";
poly_red.pinid = 1005;
var poly_yellow = new PIcon(polyicon);
poly_yellow.image = pinurl + "polygon_yellow.png";
poly_yellow.color = "FFF600";
poly_yellow.pinid = 1006;
var poly_white = new PIcon(polyicon);
poly_white.image = pinurl + "polygon.png";
poly_white.color = "FFFFFF";
poly_white.pinid = 1007;
var poly_pink = new PIcon(polyicon);
poly_pink.image = pinurl + "polygon_pink.png";
poly_pink.color = "FFC0CB";
poly_pink.pinid = 1008;
var poly_black = new PIcon(polyicon);
poly_black.image = pinurl + "polygon_black.png";
poly_black.color = "000000";
poly_black.pinid = 1009;
var poly_drkblue = new PIcon(polyicon);
poly_drkblue.image = pinurl + "polygon_drkblue.png";
poly_drkblue.color = "0081B8";
poly_drkblue.pinid = 1010;
var poly_drkgreen = new PIcon(polyicon);
poly_drkgreen.image = pinurl + "polygon_drkgreen.png";
poly_drkgreen.color = "00AC00";
poly_drkgreen.pinid = 1011;
var poly_drkpurple = new PIcon(polyicon);
poly_drkpurple.image = pinurl + "polygon_drkpurple.png";
poly_drkpurple.color = "8055B7";
poly_drkpurple.pinid = 1012;
var poly_drkorange = new PIcon(polyicon);
poly_drkorange.image = pinurl + "polygon_drkorange.png";
poly_drkorange.color = "CF6700";
poly_drkorange.pinid = 1013;
polyicon.colors = [polyicon,poly_purple,poly_grey,poly_green,poly_blue,poly_red,poly_yellow,poly_white,poly_pink,poly_black,poly_drkblue,poly_drkgreen,poly_drkpurple,poly_drkorange];

// Line polygon icon
var lineicon = new PIcon();
lineicon.image = pinurl + "polyline_orange.png";
lineicon.shadow = "";
lineicon.iconSize = new PSize(12, 12);
lineicon.iconAnchor = new PPoint(6, 6);
lineicon.pinid = 1050;
var line_purple = new PIcon(lineicon);
line_purple.image = pinurl + "polyline_purple.png";
line_purple.pinid = 1051;
var line_grey = new PIcon(lineicon);
line_grey.image = pinurl + "polyline_grey.png";
line_grey.pinid = 1052;
var line_green = new PIcon(lineicon);
line_green.image = pinurl + "polyline_green.png";
line_green.pinid = 1053;
var line_blue = new PIcon(lineicon);
line_blue.image = pinurl + "polyline_blue.png";
line_blue.pinid = 1054;
var line_red = new PIcon(lineicon);
line_red.image = pinurl + "polyline_red.png";
line_red.pinid = 1055;
var line_yellow = new PIcon(lineicon);
line_yellow.image = pinurl + "polyline_yellow.png";
line_yellow.pinid = 1056;
var line_white = new PIcon(lineicon);
line_white.image = pinurl + "polyline_white.png";
line_white.pinid = 1057;
var line_pink = new PIcon(lineicon);
line_pink.image = pinurl + "polyline_pink.png";
line_pink.pinid = 1058;
var line_black = new PIcon(lineicon);
line_black.image = pinurl + "polyline_black.png";
line_black.pinid = 1059;
var line_drkblue = new PIcon(lineicon);
line_drkblue.image = pinurl + "polyline_drkblue.png";
line_drkblue.pinid = 1060;
var line_drkgreen = new PIcon(lineicon);
line_drkgreen.image = pinurl + "polyline_drkgreen.png";
line_drkgreen.pinid = 1061;
var line_drkpurple = new PIcon(lineicon);
line_drkpurple.image = pinurl + "polyline_drkpurple.png";
line_drkpurple.pinid = 1062;
var line_drkorange = new PIcon(lineicon);
line_drkorange.image = pinurl + "polyline_drkorange.png";
line_drkorange.pinid = 1063;
lineicon.colors = [lineicon,line_purple,line_grey,line_green,line_blue,line_red,line_yellow,line_white,line_pink,line_black,line_drkblue,line_drkgreen,line_drkpurple,line_drkorange];

// Specialized polygon icon
// This is currently using the standard polygon icons until a specialized polygon icon is created.
var specicon = new PIcon();
specicon.image = pinurl + "polygon_orange.png";
specicon.shadow = "";
specicon.iconSize = new PSize(12, 12);
specicon.iconAnchor = new PPoint(6, 6);
specicon.pinid = 1100;
var spec_purple = new PIcon(specicon);
spec_purple.image = pinurl + "polygon_purple.png";
spec_purple.pinid = 1101;
var spec_grey = new PIcon(specicon);
spec_grey.image = pinurl + "polygon_grey.png";
spec_grey.pinid = 1102;
var spec_green = new PIcon(specicon);
spec_green.image = pinurl + "polygon_green.png";
spec_green.pinid = 1103;
var spec_blue = new PIcon(specicon);
spec_blue.image = pinurl + "polygon_blue.png";
spec_blue.pinid = 1104;
var spec_red = new PIcon(specicon);
spec_red.image = pinurl + "polygon_red.png";
spec_red.pinid = 1105;
var spec_yellow = new PIcon(specicon);
spec_yellow.image = pinurl + "polygon_yellow.png";
spec_yellow.pinid = 1106;
var spec_white = new PIcon(specicon);
spec_white.image = pinurl + "polygon.png";
spec_white.pinid = 1107;
var spec_pink = new PIcon(specicon);
spec_pink.image = pinurl + "polygon_pink.png";
spec_pink.pinid = 1108;
var spec_black = new PIcon(specicon);
spec_black.image = pinurl + "polygon_black.png";
spec_black.pinid = 1109;
var spec_drkblue = new PIcon(specicon);
spec_drkblue.image = pinurl + "polygon_drkblue.png";
spec_drkblue.pinid = 1110;
var spec_drkgreen = new PIcon(specicon);
spec_drkgreen.image = pinurl + "polygon_drkgreen.png";
spec_drkgreen.pinid = 1111;
var spec_drkpurple = new PIcon(specicon);
spec_drkpurple.image = pinurl + "polygon_drkpurple.png";
spec_drkpurple.pinid = 1112;
var spec_drkorange = new PIcon(specicon);
spec_drkorange.image = pinurl + "polygon_drkorange.png";
spec_drkorange.pinid = 1113;
specicon.colors = [specicon,spec_purple,spec_grey,spec_green,spec_blue,spec_red,spec_yellow,spec_white,spec_pink,spec_black,spec_drkblue,spec_drkgreen,spec_drkpurple,spec_drkorange];


// add sites
function addSites(map,id,name,icon) {
	var sets = map.getOverlaySets();
	// removes school dataset if another school dataset is on
	if (id == 75550) {
		for (var i=0; i<sets.length; i++) {
			if (sets[i].id == 87150)
				map.removeOverlaySet(sets[i]);
		}
	}
	else if (id == 87150) {
		for (var i=0; i<sets.length; i++) {
			if (sets[i].id == 75550)
				map.removeOverlaySet(sets[i]);
		}
	}

	var site = createSites(map,id,name,icon);
	if (site != null)
		map.addOverlaySet(site);
}

