/* myLocation and headerImageSrc are used to set the current location in the header file
   and the source file for the header image photography
*/

var myLocation;
var headerImageSrc;

/*  setWidth and setMinMaxWidth are used to set the Minimum and Maximum widths in IE
	to change the minimum or maximum widths for the page, just change the two global
	variables below.  This is the width inside the margins and the page shadow
*/

var minWidth=754;
var maxWidth=976;
	
function setWidth(){
	 if(document.getElementById&&navigator.appVersion.indexOf("MSIE")>-1&&!window.opera)
	 {
	 	if(window.attachEvent)
		{
			window.attachEvent("onresize",setMinMaxWidth);
			window.attachEvent("onload",setMinMaxWidth);
		}
	}
}

function setMinMaxWidth(){
	var clientWidth = parseInt(document.body.clientWidth);
	var bodyDiv = document.getElementById("bodyDiv02"); 
	
 	if(clientWidth<=minWidth)
 	{
		bodyDiv.style.width=minWidth+"px";
		//	alert("a");
	
	}
	else if(clientWidth>=maxWidth)
	{
		bodyDiv.style.width=maxWidth+"px";
		//	alert("b");
	}
	else
	{
		bodyDiv.style.width=minWidth+"px";
		//bodyDiv.style.width=(minWidth+maxWidth)/2+"px";	
		//alert("c");
	}
		
}

/*  getTodaysDate, monthText, and dayText are used to render the current date on the
	cityofboston.gov home page
*/

function getTodaysDate()
{
	var myDate = new Date();
	var date = myDate.getDate();
	var day = myDate.getDay();
	var month = myDate.getMonth();
	var year = myDate.getFullYear();
	
	document.write(dayText(day) + ", " + monthText(month) + " " + date + ", " + year);
}

/*  variable month is the current month stored as in int from 0-11,
	monthText returns the Text for the current month
*/
function monthText(month)
{
	if(month==0) return "January";
	else if(month == 1)  return "February";
	else if(month == 2)  return "March";
	else if(month == 3)  return "April";
	else if(month == 4)  return "May";
	else if(month == 5)  return "June";
	else if(month == 6)  return "July";
	else if(month == 7)  return "August";
	else if(month == 8)  return "September";
	else if(month == 9)  return "October";
	else if(month == 10)  return "November";
	else if(month == 11)  return "December";
}

/*  variable day is the current day stored as in int from 0-6,
	dayText returns the Text for the current day
*/
function dayText(day)
{
	if(day == 0)  return "Sunday";
	else if(day == 1) return "Monday";
	else if(day == 2) return "Tuesday";
	else if(day == 3) return "Wednesday";
	else if(day == 4) return "Thursday";
	else if(day == 5) return "Friday";
	else if(day == 6) return "Saturday";
}

/* openCalWindow is used to open all of the calendar event detail popups, the window attributes are maintained here so that if the dimensions or properties need to change, only one file update is necessary.
*/

function openCalWindow(file){
	openWindow(file,'','status=no,menubar=no,resizable=no,width=490,height=570');
}
//function to open popup windows
function openWindow(theURL,winName,features) { 
  window.open(theURL,winName,features);
}

/* setActiveStyleSheet() disables all 3 of the font size stylesheets, then enables the one that the user selected.
   the parameter title is passed from the link and matches the title attribute of the css reference.	
   setActiveStyleSheet() also turns off all of the text size icons, and then turns on the current selection
*/
function setActiveStyleSheet(title) {
  var linkTags = document.getElementsByTagName("link");
  var imageTest = false;
  
  for(var i=0;i<linkTags.length;i++)
  {
  	if(linkTags[i].getAttribute("rel").indexOf("styleshhet") && linkTags[i].getAttribute("title"))
	{
		linkTags[i].disabled = true;
		var myTitle = linkTags[i].getAttribute('title');
		document.getElementById(myTitle).src = "http://www.cityofboston.gov/images/iconTextSize" + myTitle + "Off.gif";
		if(linkTags[i].getAttribute("title") == title)
		{
			linkTags[i].disabled = false;
			document.getElementById(title).src = "http://www.cityofboston.gov/images/iconTextSize" + title + "On.gif";
			imageTest = true;
		}
	}
  }
  if(!imageTest)
  {
	document.getElementById("xsmallFont").src = "http://www.cityofboston.gov/images/iconTextSizexsmallFontOn.gif";
  }	
}

/* getActiveStyleSheet() is used to find the currently enabled stylesheet, the name of that stylesheet is stored using a cookie
   and retrieved the next time a page is loaded to maintain the correct font-size.
*/
function getActiveStyleSheet() {
  var linkTags = document.getElementsByTagName("link");
  
  for(var i=0; i<linkTags.length; i++) {
  	if(linkTags[i].getAttribute("rel").indexOf("stylesheet") != -1
		&& linkTags[i].getAttribute("title") && !linkTags[i].disabled)
		return linkTags[i].getAttribute("title");
  }
  return null;
}

/* getPreferredStyleSheet() is used when no cookie is found to load the default/standard stylesheet
*/
function getPreferredStyleSheet() {
  var linkTags = document.getElementsByTagName("link");
  
  for(var i=0; i<linkTags.length; i++) {
    if(linkTags[i].getAttribute("rel").indexOf("style") != -1
       && linkTags[i].getAttribute("rel").indexOf("alt") == -1
       && linkTags[i].getAttribute("title"))
	   return linkTags[i].getAttribute("title");
  }
  return null;
}

/* setCookie() creates a cookie of name "style" with the value matching the user's current stylesheet selection
*/
function setCookie(name,value,days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
  }
  else expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}

/* getCookie() retrieves a cookie of name "style", parses the value and returns xsmall, small or medium based on the user's previous stylesheet selection
*/
function getCookie(name) {
  var cookieName = name + "=";
  var cookieSplit = document.cookie.split(';');
  for(var i=0;i < cookieSplit.length;i++) {
    var c = cookieSplit[i];
    while(c.charAt(0)==' ')
	{
		c = c.substring(1,c.length);
	}
    if(c.indexOf(cookieName) == 0)
	{
		return c.substring(cookieName.length,c.length);
	}
  }
  return null;
}

/* This onload event retrieves the style cookie when a page loads 
*/
window.onload = function(e) {
  // NJ:
  var map = new GMap2(document.getElementById("map"));
  map.addControl(new GSmallMapControl());
  map.addControl(new GMapTypeControl());
  map.setCenter(new GLatLng(42.360383, -71.05800), 17);
  map.setMapType(G_HYBRID_TYPE);
  var marker = new GMarker(new GPoint(-71.05800, 42.360383));
  map.addOverlay(marker);
  	
  var cookie = getCookie("style");
  var title = cookie ? cookie : getPreferredStyleSheet();
  setActiveStyleSheet(title);
}

/* This unonload event sets the style cookie when a page unloads 
*/
window.onunload = function(e) {
  var title = getActiveStyleSheet();
  setCookie("style", title, 365);
}

/* All drop-down values should be set in dropDowns.js */

/***********************************************
* AnyLink Drop Down Menu- © Dynamic Drive (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit http://www.dynamicdrive.com/ for full source code
***********************************************/

var menuwidth='165px'; //default menu width
var menubgcolor='#FFFFFF';  //menu bgcolor
var disappeardelay=250 ; //menu disappear speed onMouseout (in miliseconds)
var hidemenu_onclick="yes"; //hide menu when user clicks within menu?

//No further editing needed

var ie4=document.all;
var ns6=document.getElementById&&!document.all;

if (ie4||ns6)
	document.write('<div id="dropmenudiv" style="visibility:hidden;width:'+menuwidth+';background-color:'+menubgcolor+'" onMouseover="clearhidemenu()" onMouseout="dynamichide(event)"></div>')

function getposOffset(what, offsettype)
{
	var totaloffset=(offsettype=="left")? what.offsetLeft : what.offsetTop;
	var parentEl=what.offsetParent;
	while (parentEl!=null){
		totaloffset=(offsettype=="left")? totaloffset+parentEl.offsetLeft : totaloffset+parentEl.offsetTop;
		parentEl=parentEl.offsetParent;
	}
	return totaloffset;
}


function showhide(obj, e, visible, hidden, menuwidth)
{
	if (ie4||ns6)
		dropmenuobj.style.left=dropmenuobj.style.top="-500px"
	if (menuwidth!="")
	{
		dropmenuobj.widthobj=dropmenuobj.style
		dropmenuobj.widthobj.width=menuwidth
	}
	if (e.type=="click" && obj.visibility==hidden || e.type=="mouseover")
		obj.visibility=visible
	else if (e.type=="click")
		obj.visibility=hidden
}

function iecompattest()
{
	return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}

function clearbrowseredge(obj, whichedge)
{
	var edgeoffset=0
	if (whichedge=="rightedge")
	{
		var windowedge=ie4 && !window.opera? iecompattest().scrollLeft+iecompattest().clientWidth-15 : 				window.pageXOffset+window.innerWidth-15;
		dropmenuobj.contentmeasure=dropmenuobj.offsetWidth;
		if (windowedge-dropmenuobj.x < dropmenuobj.contentmeasure)
			edgeoffset=dropmenuobj.contentmeasure-obj.offsetWidth;
	}
	else
	{
		var topedge=ie4 && !window.opera? iecompattest().scrollTop : window.pageYOffset;
		var windowedge=ie4 && !window.opera? iecompattest().scrollTop+iecompattest().clientHeight-15 : 		window.pageYOffset+window.innerHeight-18;
		dropmenuobj.contentmeasure=dropmenuobj.offsetHeight;
		if (windowedge-dropmenuobj.y < dropmenuobj.contentmeasure) //move up?
		{
			edgeoffset=dropmenuobj.contentmeasure+obj.offsetHeight;
			if ((dropmenuobj.y-topedge)<dropmenuobj.contentmeasure) //up no good either?
				edgeoffset=dropmenuobj.y+obj.offsetHeight-topedge;
		}
	}
	return edgeoffset;
}

function populatemenu(what)
{
	if (ie4||ns6)
	dropmenuobj.innerHTML=what.join("");
}


function dropdownmenu(obj, e, menucontents, menuwidth)
{
	if (window.event) event.cancelBubble=true;
	else if (e.stopPropagation) e.stopPropagation();
	clearhidemenu();
	dropmenuobj=document.getElementById? document.getElementById("dropmenudiv") : dropmenudiv;
	populatemenu(menucontents);

	if (ie4||ns6)
	{
		showhide(dropmenuobj.style, e, "visible", "hidden", menuwidth);
		dropmenuobj.x=getposOffset(obj, "left");
		dropmenuobj.y=getposOffset(obj, "top");
		dropmenuobj.style.left=dropmenuobj.x-clearbrowseredge(obj, "rightedge")+"px";
		dropmenuobj.style.top=dropmenuobj.y-clearbrowseredge(obj, "bottomedge")+obj.offsetHeight+"px";
	}

	return clickreturnvalue()
}

function clickreturnvalue()
{
	if (ie4||ns6) return false;
	else return true;
}

function contains_ns6(a, b)
{
	while (b.parentNode)
		if ((b = b.parentNode) == a)
			return true;
	return false;
}

function dynamichide(e)
{
	if (ie4&&!dropmenuobj.contains(e.toElement))
		delayhidemenu();
	else if (ns6&&e.currentTarget!= e.relatedTarget&& !contains_ns6(e.currentTarget, e.relatedTarget))
		delayhidemenu();
}

function hidemenu(e)
{
	if (typeof dropmenuobj!="undefined")
	{
		if (ie4||ns6)
			dropmenuobj.style.visibility="hidden";
	}
}

function delayhidemenu()
{
	if (ie4||ns6)
		delayhide=setTimeout("hidemenu()",disappeardelay);
}

function clearhidemenu()
{
	if (typeof delayhide!="undefined")
		clearTimeout(delayhide);
}

if (hidemenu_onclick=="yes")
	document.onclick=hidemenu;
	
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}