var GX_news_tile_status = [];
var GX_tile_active_news = [];

var MAX_NEWS_HEADING_LEN = 50;
var numNewsTiles = 0;
var cityNews = "init";
var ignore_gazetteer_names = [];
ignore_gazetteer_names["Staples"] = true;
ignore_gazetteer_names["Library"] = true;
var displayScore = false;
var showHighlighting = false;

function GX_compareNews(n1, n2) {	
	if(n1.pubDate == "") {
		return 1;
	}
	if(n2.pubDate == "") {
		return -1;
	}
	
	var date1 = n1.pubDate.substring(0,10).replace(/-/g,"");
	var date2 = n2.pubDate.substring(0,10).replace(/-/g,"");
	if ( eval(date1 + ">" + date2)) {
		return -1;
	} 
	return 1;
}

function GX_SortOnDate(newsItems){
	newsItems.sort(GX_compareNews);
	return newsItems;
}

var GX_newsMode = "NEWS";
	function GX_getDatabase() {
		document.getElementById('state').value = "getNews";
		document.getElementById('divRightHeading').innerHTML = "";
		document.getElementById('divRightResults').innerHTML = "";
		document.getElementById('divNewsSort').innerHTML = "";
		
			var service = getServer() + "/getDB";
			var params =   "appName=" + getAppName() + "&format=jason&" +
										"minlon=" + document.getElementById('minlon').value + 
										"&minlat=" + document.getElementById('minlat').value + 
										"&maxlon=" + document.getElementById('maxlon').value + 
										"&maxlat=" + document.getElementById('maxlat').value +							
										"&TopNews=T&ArchivedNews=&StartYear=&EndYear=";

			params += "&CKeyword=" + URLencode(GX_newsQuery.toString());
			
			showStatus("Getting data from database...");
			GX_newsMode="DOCUMENTS";
			var funcParams = []; funcParams[0] = -1; funcParams[1] = -1;
			HttpPostRequest(service, "/getDB", params, GX_newsCallback, funcParams);
	}

	function GX_getNewsForFeatureName(tileID, featureName) {
		var gazetteer = GX_getGazetteer(tileID, featureName);
		GX_getNews(tileID, gazetteer.gazNum);
	}
	
	function GX_generateNewsQuery(tileID) {
		var newsQuery = new StringBuffer();
						
		for(var numGaz=0; numGaz<GX_gazetteer_tile_cache[tileID].length; numGaz++) {
				var gp = GX_gazetteer_tile_cache[tileID][numGaz];
				if(ignore_gazetteer_names[gp.gaz.featureName]) {
					continue;
				}					
				if(newsQuery.length() > 1) newsQuery.append("|");
				newsQuery.append(gp.gaz.featureName);
				newsQuery.append(","); newsQuery.append(gp.gaz.city);
				newsQuery.append(","); newsQuery.append(gp.gaz.state);
				newsQuery.append("$"); //newsQuery.append(gp.gaz.geom);
				newsQuery.append("%"); newsQuery.append(gp.gaz.street);	
		}
		
		return newsQuery.toString();
	}
	
	function GX_getNewsForVisibleTiles(bounds) {
		var southWest = bounds.getSouthWest();
		var northEast = bounds.getNorthEast();
		var latNE = northEast.lat();
		var latSW = southWest.lat();
		var lonSW = southWest.lng();
		var lonNE = northEast.lng();
	
		var zoom = defaultZoom;
		var tileSW = TileUtil.getTileCoords( latSW, lonSW,  zoom, false);  			
		var tileNE = TileUtil.getTileCoords( latNE, lonNE, zoom, true );
		for(var tilex=tileSW.x; tilex<=tileNE.x; tilex++) {
			for(var tiley=tileNE.y; tiley<=tileSW.y; tiley++) {
				var tileID = tilex + "_" + tiley + "_" + zoom;
				GX_getNews(tileID, -1);
			}
		}
	}
	
	function GX_getNews(tileID, gazNum) {
			if(gazNum >= 0) {
				var gazetteer = GX_gazetteer_tile_cache[tileID][gazNum];				
				if(gazetteer.newsFetched == true) {
					GX_drawNews(tileID, gazNum, 0);
					return;
				}
				
			}
			
			if(GX_news_tile_status[tileID]) {
				//News has already been fetched for this tile
			} else {
				if(GX_gazetteer_tile_cache[tileID] && GX_gazetteer_tile_status[tileID] == "completed") {
					var keywords = GX_generateNewsQuery(tileID);
					
					if(keywords.length > 0) {
						document.getElementById('state').value = "getNews";
						var service = getServer() + "/getNews";
						var params =   "appName=" + getAppName() + 
										"&format=jason" +
										"&tileID=" + URLencode(tileID) +						
										"&CKeyword=" + URLencode(keywords);
			
						showStatus("Getting News...");
						GX_newsMode="NEWS";
						GX_state = "news";
						//map.closeInfoWindow();
						numNewsTiles++;
						
						var funcParams = []; funcParams[0] = tileID; funcParams[1] = gazNum; 
				  		HttpPostRequest(service, "/getNews", params, GX_newsCallback, funcParams);
			  			GX_news_tile_status[tileID] = "start";
			  		} else {
			  			GX_news_tile_status[tileID] = "completed";
			  		}
			  	} else {
			  		var tryAgain = true;
			  		if(GX_gazetteer_tile_status[tileID]) {
			  			if(GX_gazetteer_tile_status[tileID] == "completed")
			  				tryAgain = false;
			  		}
			  		//alert("tile " + tileID + " not loaded..wait");
			  		if(tryAgain == true)
				  		window.setTimeout(GX_getNews, 2000, tileID, gazNum);
			  	}
			}
		}
		
				
		function GX_newsCallback(JSON_output, params) {
			var tileID = params[0];
			var gazNumSelected = params[1];
			
			GX_news_tile_status[tileID] = "completed";
			
			if(JSON_output.length > 1) {
			
				var points =  eval(JSON_output);
				
				var selectedNewsIndex = -1;
				var NewsHashMap = [];
				
				for (var i = 0; i < points.length; i++) {
					var n = points[i].News;
					/*
					{"News":
						{"id":5582,
						"title":"Tender Greens",
						"link":"http:\/\/www.sdbj.com\/article.asp?aID=97921114.55023802.1662869.6604735.9376281.997&aID2=127904",
						"pubDate":"2008-08-02 00:00:00.0 PDT",
						"keywords":{"string":["CULVER BLVD","CALIFORNIA","CULVER BOULEVARD","CALIF.","Culver City","CA","CULVER CITY","Tender Greens"]},
						"matchedLocations":{"string":["culver blvd$POINT (-118.39257427614 34.026293556805)","culver blvd$POINT (-118.39408059171 34.024384280616)","culver blvd$POINT (-118.39688271343 34.02083909187)","Tender Greens$POINT (-118.3953 34.0234)","culver blvd$POINT (-118.39501575688 34.023178307052)"]},
						"score":5,
						"pageNumber":1,
						"containsNonStreetNews":true}}
					*/
					var matchedLocs = n.matchedLocations.string;
					if(typeof(n.matchedLocations.string) == "string") {
						matchedLocs = [];
						matchedLocs.push(n.matchedLocations.string);
					}
					n.matchedLocationsStr = new StringBuffer();
					for(var j=0; j<matchedLocs.length; j++) {
						var loc = matchedLocs[j];
						if(loc.indexOf("$") != -1) {
							loc = loc.substring(0, loc.indexOf("$"));
						}
						
						var gaz = GX_getGazetteer(tileID, loc);
						
						if(gaz != null)  {
							if(!gaz.isRoad) {
								n.matchedLocationsStr.append(loc).append(",").append(gaz.gaz.street).append(",").append(gaz.gaz.city).append(",").append(gaz.gaz.state).append(" ; " );
								var arr = NewsHashMap[loc];
								if(arr) {
								} else {
									arr = [];
								}
								arr.push(n);
								NewsHashMap[loc] = arr;					
							}
						}
					}
				}
				
				var gazGeomMap = GX_gazGeomMap[tileID];	
				for(var numGaz=0; numGaz<GX_gazetteer_tile_cache[tileID].length; numGaz++) {
					var gazetteer = GX_gazetteer_tile_cache[tileID][numGaz];			
			
					gazetteer.newsFetched = true;
					var featureName = gazetteer.gaz.featureName;
					
					if(NewsHashMap[featureName]) {	
						
						if(GX_newsMode == "NEWS") {
							gazetteer.newsText = GX_generateNewsText(gazetteer.tileID, gazetteer.gazNum,featureName,NewsHashMap[featureName]); 
							gazetteer.news = GX_SortOnDate(NewsHashMap[featureName]);
							gazetteer.dateSortedNewsText = GX_generateNewsText(gazetteer.tileID, gazetteer.gazNum,featureName,gazetteer.news);
						} else {
							gazetteer.docsText = GX_generateNewsText(gazetteer.tileID, gazetteer.gazNum,featureName,NewsHashMap[featureName]); 
							gazetteer.docs = GX_SortOnDate(NewsHashMap[featureName]);
							gazetteer.dateSortedDocsText = GX_generateNewsText(gazetteer.tileID, gazetteer.gazNum,featureName,gazetteer.docs);
						}
						
						//refresh  the icon image
						if(GX_isFeatureChecked(gazetteer.gaz.featureType)) {
							iconMgr.removeMarker(gazetteer.marker);					
							iconMgr.addMarker(gazetteer.marker, minZoom);
						}
					}
				}
				
				GX_refreshVisibleGazList(true, true);
			}
			
			//alert(tileID + temp);		
			numNewsTiles--;
			if(numNewsTiles < 0) numNewsTiles = 0;
			if(numNewsTiles == 0)
				hideStatus();	
				
			if(gazNumSelected != -1) {
					GX_drawNews(tileID, gazNumSelected, 0);
			}	
			if(GX_tile_active_news[tileID]) {
				var feature = GX_tile_active_news[tileID];
				if(feature != "") {
					GX_drawNews(tileID, GX_getGazetteerIndex(tileID, feature), 0);
					feature = "";
				}
			}
		}
		
		function GX_getCityNews() {
			if(cityNews != "init") {
				GX_showTextInDiv(getCity() + " NEWS", document.getElementById('divAreaNewsHeading'));
				GX_showTextInDiv(cityNews, document.getElementById('divAreaNewsResults'));
				GX_showTextInDiv("&nbsp;&nbsp;Please zoom in to view related news to points of interest", document.getElementById('divRightResults'));
				return;
			}
			cityNews = "";
			var keywords = getCity() + "," + getCity() + "," + getState() + "$%";
			var service = getServer() + "/getNews";
			
			var currentTime = new Date();
			var toDate = getYYYYMMDDTimeFomattedDate(currentTime);
			currentTime.setDate(currentTime.getDate() - 30);			
			var fromDate = getYYYYMMDDTimeFomattedDate(currentTime);
			
			var serviceParams =   "appName=" + getAppName() + 
							"&format=jason" +
							"&tileID=" + URLencode(getCity() + "News")+
							"&fromDate=" + URLencode(fromDate) +
							"&toDate=" + URLencode(toDate) +
							"&CKeyword=" + URLencode(keywords);
			showStatus("Getting City News...");
			GX_newsMode="NEWS";
			GX_state = "news";
							
			var funcParams = []; 
	  		HttpPostRequest(service, "/getNews", serviceParams, 
	  			function(JSON_output, params) {
	  				
	  				if(JSON_output.length < 1)  {
	  					hideStatus();
	  					return;
	  				}
	  				
					var points =  eval(JSON_output);
					var newsArr = [];
					for (var i = 0; i < points.length; i++) {
						var n = points[i].News;
						newsArr.push(n);
					}
					GX_showTextInDiv("&nbsp;&nbsp;Please zoom in to view related news to points of interest", document.getElementById('divRightResults'));
					
					selectNewsTab('area');
					newsArr = GX_SortOnDate(newsArr);
					var out = new StringBuffer();
					
					out.append("<div id=\"fraichecontscroll\">");
					for(var i=0; i<newsArr.length; i++) {
						var n = newsArr[i];
						out.append("<div class=\"listing\">");				
						var pubDate = n.pubDate;
						if(pubDate) {
							if(pubDate.length > 10) pubDate = pubDate.substring(0, 10);
						} else {
							pubDate = "";
						}
						out.append("<p class=\"display_right_news\">").append(pubDate).append("</p>");	
						out.append("<p class=\"display_left_news\">").append("<a href='javascript:GX_showURL(\"").append(URLencode(n.link)).append("\");\'>").append(n.title).append("</a></p>");				
						out.append("</div>");
					}
					
					out.append("</div>");
					cityNews = out.toString();
					GX_showTextInDiv(getCity() + " NEWS", document.getElementById('divAreaNewsHeading'));
					GX_showTextInDiv(cityNews, document.getElementById('divAreaNewsResults'));				
					
					hideStatus();
	  			}
	  		, funcParams);
		}
	
		function GX_generateNewsText(tileID, gazNum, locationName, newsItems) {
			var newsText = new StringBuffer();
			newsText.append("<div class=\"listing\"><h4 class=\"display_right_news_heading\">Date Published</h4><h4 class=\"display_left_news_heading\">Title</h4></div>");
		
			newsText.append("<div id=\"fraichecontscroll\">");

			for(var i=0;i<newsItems.length;i++) {
				var news = newsItems[i];
				newsText.append("<div class=\"listing\">");
				var pubDate = news.pubDate;
				if(pubDate) {
					if(pubDate.length > 10) pubDate = pubDate.substring(0, 10);
				} else {
					pubDate = "";				
				}
				newsText.append("<p class=\"display_right_news\">").append(pubDate).append("</p>");	
				
				newsText.append("<p class=\"display_left_news\">");
				var link = news.link.quote();
				var id =  news.id;
				var keyword = news.keywords.string.join(", ").quote().replace(/&/g,"%26");
				
				var matchedLocsStr = news.matchedLocationsStr.toString().quote();
				
				if(applicationMode == "admin") {
					var title = news.title.quote();
					var link2 = link.quote();
					var ln = locationName.quote();
					newsText.append("<input type=\"checkbox\" name=\"delcheckbox\" value=\"").append(id).append("\" style=\"margin-bottom:0px;\" />");
					newsText.append("<a href=\"javascript:deleteNews('").append(tileID).append("',").append(gazNum).append(",'").append(id).append("', '").append(title).append("');\"><img src=\"images/delete.png\" border='0' style=\"width:16px;height:16px\" alt=\"edit\"  title=\"Delete News\"></a>");
					newsText.append("<a href=\"javascript:editNews('").append(tileID).append("',").append(gazNum).append(",'").append(id).append("','").append(title).append("','").append(link2).append("','").append(matchedLocsStr).append("','").append(ln).append("');\"><img src=\"images/edit.png\" border='0' style=\"width:16px;height:16px\" alt=\"editNews\" title=\"Edit News Linkings\"></a>");
					newsText.append("&nbsp;&nbsp;&nbsp;");
				}
				
				if(GX_newsMode=="NEWS") {
					if(showHighlighting == true)
						newsText.append("<a href='javascript:GX_showNewsPopup(\"").append(id).append("\",\"").append(link).append("\",\"").append(keyword).append("\");\'>").append(news.title).append("</a>");
					else
						newsText.append("<a href='javascript:GX_showURL(\"").append(URLencode(link)).append("\");\'>").append(news.title).append("</a>");
				} else {
					newsText.append("<a href='javascript:GX_showURL(\"").append(URLencode(link)).append("\",\"").append(keyword).append("\");\'>").append(news.id).append("</a>");
				}
				
				if(displayScore == true || applicationMode == "admin") {
				  newsText.append("  (").append(news.score).append(")");
				}
				newsText.append("</p>");

							
				newsText.append("</div>\n");
			}
			newsText.append("</div>");
			return newsText.toString();
		}
		
		function GX_showURL(url) {
			window.open (url, "newsWindow","menubar=1,toolbar=0,location=1,resizable=1,scrollbars=1,width=800,height=600"); 
		}
		
		function GX_showTextInDiv(GX_text, divName) {
			divName.innerHTML = GX_text;
		}

		function GX_drawNews(tileID,  idx, sortByDate) {
			selectNewsTab('point');
			
			var gazetteer = GX_gazetteer_tile_cache[tileID][idx];

			var marker = gazetteer.marker;
			
			if(gazetteer.news.length > 0) {
				if(sortByDate == 0)
					GX_showTextInDiv(gazetteer.newsText, document.getElementById('divRightResults'));
				else
					GX_showTextInDiv(gazetteer.dateSortedNewsText, document.getElementById('divRightResults'));
			} else {
				GX_showTextInDiv("&nbsp;&nbsp;No news found. <BR>&nbsp;&nbsp;Click on news icon <img src=\"images/icons/news.png\" border='0'/> in the Points of Interest pane to view more area news", 
						document.getElementById('divRightResults'));
			}	
			var headingText = "NEWS: " + gazetteer.gaz.featureName; 
			if(headingText.length > MAX_NEWS_HEADING_LEN)
				headingText = headingText.substring(0, MAX_NEWS_HEADING_LEN) + "...";
				
			if(applicationMode == "admin") {
				headingText += "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"javascript:addNews('" + 
					gazetteer.tileID + "'," + gazetteer.gazNum + ",'" +
					gazetteer.gaz.featureName.quote() + 
					"','" + gazetteer.gaz.street.quote() +
					"','" + gazetteer.gaz.city.quote() +
					"','" + gazetteer.gaz.state.quote() +
					"');\"><img src=\"images/db_add.png\" border='0' style=\"width:16px;height:16px\" alt=\"addNews\" title=\"Add News\"></a>";
				headingText += "&nbsp;&nbsp;&nbsp;<a href=\"javascript:deleteMultipleNews('" + 
							tileID + "'," + gazetteer.gazNum +
							");\"><img src=\"images/delete.png\" border='0' style=\"width:16px;height:16px\" alt=\"delete\"  title=\"Delete Multiple News\"></a>";
			}
			
			GX_showTextInDiv(headingText, document.getElementById('divRightHeading'));
			
			var sortText = "";
			if(gazetteer.news.length > 0) {
				if(sortByDate == 0)
					sortText = "Sort by Relevance | <a href=\"javascript:GX_drawNews('" + tileID + "','" + idx + "',1);\">Sort by Date</a>";
				else
					sortText = "<a href=\"javascript:GX_drawNews('" + tileID + "','" + idx + "',0);\">Sort by Relevance</a> | Sort by Date";
			}
			GX_showTextInDiv(sortText, document.getElementById('divNewsSort'));
		}
		
		function GX_drawDocs(tileID,  idx, sortByDate) {
			var gazetteer = GX_gazetteer_tile_cache[tileID][idx];

			var marker = gazetteer.marker;
			
			if(gazetteer.docs.length > 0) {
				if(sortByDate == 0)
					GX_showTextInDiv(gazetteer.docsText, document.getElementById('divRightResults'));
				else
					GX_showTextInDiv(gazetteer.dateSortedDocsText, document.getElementById('divRightResults'));
			} else {
				GX_showTextInDiv("&nbsp;&nbsp;No documents found. <BR>&nbsp;&nbsp;Click on document icon <img src=\"images/icons/docs.png\" border='0'/> in the Points of Interest pane to view more area documents", 
						document.getElementById('divRightResults'));
			}	
			var headingText = "DOCUMENTS: " + gazetteer.gaz.featureName; 
			if(headingText.length > MAX_NEWS_HEADING_LEN)
				headingText = headingText.substring(0, MAX_NEWS_HEADING_LEN) + "...";
			GX_showTextInDiv(headingText, document.getElementById('divRightHeading'));
			
			var sortText = "";
			if(gazetteer.docs.length > 0) {
				if(sortByDate == 0)
					sortText = "Sort by Relevance | <a href=\"javascript:GX_drawDocs('" + tileID + "','" + idx + "',1);\">Sort by Date</a>";
				else
					sortText = "<a href=\"javascript:GX_drawDocs('" + tileID + "','" + idx + "',0);\">Sort by Relevance</a> | Sort by Date";
			}
			GX_showTextInDiv(sortText, document.getElementById('divNewsSort'));
		}		
		
		function selectNewsTab(tabName) {
			if(displayAreaNews == true) {
				if(tabName == 'area') {
					document.getElementById('divAreaNews').style.display = 'block';
					document.getElementById('divPointNews').style.display = 'none';
					document.getElementById('imgAreaNews').className = 'newsTabsImages_area_sel';
					document.getElementById('imgPointNews').className = 'newsTabsImages_point';
				} else {			
					document.getElementById('divAreaNews').style.display = 'none';
					document.getElementById('divPointNews').style.display = 'block';
					document.getElementById('imgAreaNews').className = 'newsTabsImages_area';
					document.getElementById('imgPointNews').className = 'newsTabsImages_point_sel';
				
				}
			}
		}
		function GX_displayAreaNews(gazs) {
			//alert("displayAreaNews");
			if(gazs) {			
				if(!GX_isInfoWindowClosed()) {
					return;
				}
				selectNewsTab('area');
				
				var news = new Map();
				for(var i=0; i<gazs.length; i++) {
					var gp = gazs[i];				
					for(var j=0; j<gp.news.length; j++) {
						var n = gp.news[j];
						news.put(n.id, n);
					}
				}
				var newsArr = news.valSet();
				newsArr = GX_SortOnDate(newsArr);
				var out = new StringBuffer();
				
				out.append("<div id=\"fraichecontscroll\">");
				for(var i=0; i<newsArr.length; i++) {
					var n = newsArr[i];
					out.append("<div class=\"listing\">");				
					var pubDate = n.pubDate;
					if(pubDate) {
						if(pubDate.length > 10) pubDate = pubDate.substring(0, 10);
					} else {
						pubDate = "";
					}
					out.append("<p class=\"display_right_news\">").append(pubDate).append("</p>");						
					out.append("<p class=\"display_left_news\">").append("<a href='javascript:GX_showURL(\"").append(URLencode(n.link)).append("\");\'>").append(n.title).append("</a></p>");				
					out.append("</div>");
				}
				
				out.append("</div>");
				GX_showTextInDiv("AREA NEWS", document.getElementById('divAreaNewsHeading'));
				GX_showTextInDiv(out.toString(), document.getElementById('divAreaNewsResults'));				
			}
		}
		
		
		
		function GX_showNewsPopup(newsid, link, keywords) {			
			var url2 = getServer() + "/showNews?" +
						"appName=" + getAppName() + "&" +
						"keywords=" + keywords + 
						"&newsid=" + newsid +
						"&url=" + link;
			GX_showURL(url2); 
		}
		
		function GX_isNewsTileLoaded(tileID) {
			var tileLoaded = false;
			if(GX_news_tile_status[tileID]) {
				if(GX_news_tile_status[tileID] == "completed") {
					tileLoaded = true;
				}
			}
			return tileLoaded;
		}

		// **************************************************************************************************
		//					NEWS ADMIN FUNCTIONS
		// **************************************************************************************************
		function unlinkAllTileNews() {
			for(var tileID in GX_gazetteer_tile_cache) {
				GX_news_tile_status[tileID] = null;
				
				for(var i=0; i<GX_gazetteer_tile_cache[tileID].length; i++) {
					var gp = GX_gazetteer_tile_cache[tileID][i];
					if(gp) {
						gp.newsFetched = false;
						gp.news = [];
						gp.newsText = "&nbsp;&nbsp;No news found";
						gp.dateSortedNewsText = "&nbsp;&nbsp;No news found";
						
					}
				}
			}
		}
		
		function deleteNews(tileID, gazNum, newsId, title) {
			if (confirm("Delete news: " + title + "?")) { 
				var service = getServer() + "/newsAdmin";
				var params =   "appName=" + getAppName() + 
								"&action=delete" +
								"&id=" + newsId;	
				showStatus("Deleteing news...");
				var url = service + "?" + params;
				HttpGetRequest(url, "/newsAdmin", function(output){
					hideStatus();
					if(output.indexOf("true") == 0) {
						unlinkAllTileNews();
						GX_getNews(tileID, gazNum);						
					}
				});
			}
		}
	
		function deleteMultipleNews(tileID, gazNum) {
			var checkboxes = document.getElementsByName("delcheckbox");
			var numNews =0;
			var deleteIds="";
			var sep = "";
			for (var i=0; i < checkboxes.length; i++)  {
   				if (checkboxes[i].checked) {
      				deleteIds += sep + checkboxes[i].value;
      				numNews++;
      				sep = ",";
      			}
   			}
			
			
			if (confirm("Delete " + numNews + " news?")) { 
				var service = getServer() + "/newsAdmin";
				var params =   "appName=" + getAppName() + 
								"&action=deleteMultiple" +
								"&ids=" + deleteIds;	
				showStatus("Deleteing news...");
				var url = service + "?" + params;
				HttpGetRequest(url, "/newsAdmin", function(output){
					hideStatus();
					if(output.indexOf("true") == 0) {
						unlinkAllTileNews();
						GX_getNews(tileID, gazNum);						
					}
				});
			}
		}
		
		function addNews(tileID, gazNum,locationName,street,city,state) {
			var currentTime = new Date();
			var month = currentTime.getMonth() + 1;
			var txtDate = currentTime.getFullYear() + "-" + month + "-" + currentTime.getDate();
								
			var newsText =  "<div id=\"divNewsFloatHeading\">&nbsp;&nbsp;&nbsp;Add News article for " + locationName + "</div>" +
							"<TABLE cellspacing=\"5\" cellpadding=\"5\">" +
							"<TR>" +
								"<TD><B>Link</B></TD>" +
								"<TD><input type=\"text\" name=\"txtLink\" id=\"txtLink\" size=\"50\" /></TD>" +
							"</TR>" +
							"<TR>" +
								"<TD><B>Title</B></TD>" +
								"<TD><input type=\"text\" name=\"txtTitle\" id=\"txtTitle\" size=\"50\" /></TD>" +
							"</TR>" +
							"<tr>" +
							"<td><b>Date Published</b></td>" +
							"<td><input type=\"text\" name=\"txtDate\" id=\"txtDate\" value=\"" + txtDate + "\" size=\"20\" /> (Format: YYYY-mm-dd  example 2008-06-27) </td>" +
							"</tr>" +
							"<tr>" +
							"<td colspan=\"2\"><input type=\"checkbox\" name=\"chkAutoLink\" id=\"chkAutoLink\">&nbsp;<B>Automatic Linking?</B></td>" +
							"</tr>" +
							"<tr><td colspan=\"2\">&nbsp</td></tr>" +
							"<tr>" +
							"<td colspan=\"2\">" +
							"<input type=\"button\" name=\"btnSubmit\" id=\"btnSubmit\" value=\"Submit\" " +
								"onclick=\"javascript:submitNewsAdd('" + tileID +
									"'," + gazNum +
									",'" + locationName.quote() + 
									"','" + street.quote() + 
									"','" + city.quote() + 
									"','" + state.quote() + 
								"');\"  />" +
							"<input type=\"button\" name=\"btnCancel\" id=\"btnCancel\" value = \"Cancel\" onclick=\"javascript:closeNewsFloat();\" />" +
							"</td>" +
							"</tr>" +
							"</TABLE>";							
			document.getElementById('divNewsFloat').innerHTML = newsText;
			document.getElementById('divNewsFloat').style.display = "block";
		}
		
		function submitNewsAdd(tileID, gazNum, locationName,street,city,state) {
			var location = locationName + "," + street + "," + city + "," + state;
			var link = document.getElementById('txtLink').value;
			var title = document.getElementById('txtTitle').value;
			var date = document.getElementById('txtDate').value + " 00:00:00";
			var autoLink = document.getElementById('chkAutoLink').checked;
			document.getElementById('divNewsFloat').style.display = "none";
			var service = getServer() + "/newsAdmin";
				var params =   "appName=" + getAppName() + 
								"&action=add" +
								"&link=" + URLencode(link) +
								"&title=" + URLencode(title) +
								"&date=" + URLencode(date) +
								"&autoLink=" + autoLink +
								"&location=" + URLencode(location);	
				showStatus("Adding news...");
				var url = service + "?" + params;
				HttpGetRequest(url, "/newsAdmin", function(output){
					hideStatus();
					if(output.indexOf("true") == 0) {
						unlinkAllTileNews();
						GX_getNews(tileID, gazNum);
					}
				});
		}
		
		function closeNewsFloat() {
			document.getElementById('divNewsFloat').style.display = "none";
		}
		
		function editNews(tileID, gazNum, id, link, title, linkedLocations,locationName) {
			if(linkedLocations.endsWith(" ; ")) {
				linkedLocations = linkedLocations.substring(0, linkedLocations.length-3);
			}	
			var newsText =  "<div id=\"divNewsFloatHeading\">&nbsp;&nbsp;&nbsp;Change Location association for News</div>" +
							"<TABLE cellspacing=\"5\" cellpadding=\"5\">" +
							"<TR>" +
								"<TD><B>Link</B></TD>" +
								"<TD><a href=\"" + link + "\" target='_blank'>" + title + "</a></TD>" +
							"</TR>" +
							"<tr>" +
							"<td valign=\"top\"><b>Linked Locations</b></td>" +
							"<td><input type=\"text\" name=\"txtLinkedLocations\" id=\"txtLinkedLocations\" value=\"" + linkedLocations + "\" size=\"80\" />" +
								"<BR><BR>(Specify location as Name,Street Address,City,State. Separate multiple locations with a semi-colon(;))" +
								"<BR>Business Search: <input type='text' name='txtSearchBusiness' id='txtSearchBusiness'>" +
								"<input type='button' name='btnSearchBus' value='Search' onclick='javascript:searchLinkedLocationBusiness();'>" +
								"<div id='divLinkedLocBusSearchResults'></div>" +
							" </td>" +
							"</tr>" +
							"<tr><td colspan=\"2\">&nbsp</td></tr>" +
							"<tr>" +
							"<td colspan=\"2\">" +
							"<input type=\"button\" name=\"btnSubmit\" id=\"btnSubmit\" value=\"Submit\" " +
								"onclick=\"javascript:submitNewsEdit('" + tileID +
								"'," + gazNum + ",'" + id +  
								"','" + locationName.quote() + 
								"');\"  />" +
							"<input type=\"button\" name=\"btnCancel\" id=\"btnCancel\" value = \"Cancel\" onclick=\"javascript:closeNewsFloat();\" />" +
							"</td>" +
							"</tr>" +
							"</TABLE>";							
			document.getElementById('divNewsFloat').innerHTML = newsText;
			document.getElementById('divNewsFloat').style.display = "block";
		}
		
		function submitNewsEdit(tileID, gazNum, id,locationName) {
			var linkedLocations = document.getElementById('txtLinkedLocations').value;
			document.getElementById('divNewsFloat').style.display = "none";
			var service = getServer() + "/newsAdmin";
				var params =   "appName=" + getAppName() + 
								"&action=edit" +
								"&id=" + id +
								"&linkedlocations=" + URLencode(linkedLocations);
				showStatus("Editing news...");
				var url = service + "?" + params;
				HttpGetRequest(url, "/newsAdmin", function(output){
					hideStatus();
					if(output.indexOf("true") == 0) {
						unlinkAllTileNews();
						GX_getNews(tileID, gazNum);
					}
				});
		}
		
		function searchLinkedLocationBusiness() {
			var busName = document.getElementById('txtSearchBusiness').value;
			var url = getServer() + "/searchBusiness?" + 
						"appName=" + getAppName() + 
						"&companyName=" + URLencode(busName);
			HttpGetRequest(url, "/searchBusiness", function(output){
				var res = "No businesses found";
				
				var response = getXMLDocument(output);
				var points = response.getElementsByTagName("Business");
	
				if(points.length > 0) res = "Matches: <UL class=\"locationslist\">";
				for(var i=0; i<points.length; i++) {
					var point = points[i];
					var name = point.getElementsByTagName("name").item(0).firstChild.nodeValue;
					var type = point.getElementsByTagName("type").item(0).firstChild.nodeValue;
					var streetAddr = point.getElementsByTagName("streetAddress").item(0).firstChild.nodeValue;
					var city = point.getElementsByTagName("city").item(0).firstChild.nodeValue;
					var state = point.getElementsByTagName("state").item(0).firstChild.nodeValue;
					var loc = name + "," + streetAddr + "," + city + "," + state;
					res += "<li>" + name + "," + streetAddr + "," + city + "," + state + "&nbsp;&nbsp;" +
						"<a href=\"javascript:addLinkedLoc('" + loc.quote() + "');\">Add</a></li>";
				}
				res += "</ul>";
				document.getElementById('divLinkedLocBusSearchResults').innerHTML = res;
			});
			//return false;
		}
		
		function addLinkedLoc(loc) {
			var orgLoc = document.getElementById('txtLinkedLocations').value;
			if(orgLoc == "null") orgLoc = "";
			if(orgLoc != "") orgLoc += " ; ";
			loc = orgLoc + loc;
			document.getElementById('txtLinkedLocations').value = loc;
		}