function setupCalendar (double) {

	initDHTMLAPI();

	YAHOO.widget.Calendar_Core.prototype.customConfig = function() {
		this.Config.Options.NAV_ARROW_LEFT =  'http://crimemap-images.epolicing.com/images/callt.gif';
		this.Config.Options.NAV_ARROW_RIGHT = 'http://crimemap-images.epolicing.com/images/calrt.gif';
	}

	YAHOO.widget.Calendar_Core.prototype.wireCustomEvents = function () {
		this.doSelectCell = function (e, cal) {
			// This comes from wireDefaultEvents, since we override doSelectCell entirely
			var cell = this;
			var index = cell.index;
			var link = cell.getElementsByTagName("A")[0];
			link.blur()
			cal.selectCell(index);

			var date = cal.getSelectedDates()[0];
			var month = date.getMonth () + 1;
			if (month < 10) month = '0' + month;
			var day = date.getDate ();
			if (day < 10) day = '0' + day;
			document.getElementById ('addressSearchFormEndDate').value = month + '/' +  day + '/' + date.getFullYear ();
			cal.oDomContainer.style.display = 'none';
			calHidden = true;
			newDateSearch();
		}
	}

	var url = 'calendar_date.php';
	if (window.XMLHttpRequest) {
		req = new XMLHttpRequest();
		req.onreadystatechange = processReqCal;
		req.open("GET", url, true);
		req.send(null);
	} else if (window.ActiveXObject) {
		req = new ActiveXObject("Microsoft.XMLHTTP");
		if (req) {
			req.onreadystatechange = processReqCal;
			req.open("GET", url, true);
			req.send();
		}
	}
}

function cal (dateField) {
	var viewport = document.getElementById ('nav');
	addressPos = YAHOO.util.Dom.getXY (dateField);
	if (calHidden == false) {
		calendar.oDomContainer.style.display = 'none';
		calHidden = true;
	} else {
		calendar.oDomContainer.style.display = '';
		calHidden = false;
//		pos = new Array ((safeParseInt (viewport.style.width) / 2) - (calw /2), (safeParseInt (viewport.style.height) / 2) - (calh /2));
		var pos = new Array (addressPos[0], addressPos[1]);
		debugLog ('VP width: ' + safeParseInt (viewport.style.width) + ', VP left: ' + safeParseInt (viewport.style.left));
		debugLog ('Calendar width: ' + calw + ', height: ' + calh +', addressPos: ' + addressPos + ', setting position to: ' + pos);
		if (isIE) {
			pos[0] = safeParseInt (viewport.offsetLeft) - 168;
//			pos[0] -= calw + 30;
		} else {
			pos[0] -= calw + 30;
			pos[1] -= 2;
		}
		YAHOO.util.Dom.setXY ('calendarContainer', pos);
	}
	debugLog ('Calendar width: ' + calw + ', height: ' + calh +', addressPos: ' + addressPos + ', setting position to: ' + pos);
}

function processReqCal () {
	if (req.readyState == 4) {
		if (req.status == 200) {
			var ret = req.responseText;
			debugLog ('Calendar dates results: ' + ret);
			try {
				eval (ret);
			} catch (e) {
				statusText ('An error has occurred: <br />' + e.message);
			}
			calendar = new YAHOO.widget.Calendar ("calendar", "calendarContainer", calMonthYear, calDate);
			calendar.minDate = new Date (calMinDate);
			calendar.maxDate = new Date (calMaxDate);
			calendar.render();
			calw = getObjectWidth ('calendarContainer');
			calh = getObjectHeight ('calendarContainer');
			calendar.oDomContainer.style.display = 'none';
			var formDate = document.getElementById ('addressSearchFormEndDate').value;
			if (!Date.parse(formDate)) {
				document.getElementById ('addressSearchFormEndDate').value = calDate;
			}
			// Perform the default search if it was set via GET
			var doSearch = document.getElementById ('doSearch');

			// IE simple hack
			if (isIE) {
				// myKaMap.triggerEvent (KAMAP_MAP_INITIALIZED);
				// myKaMap.triggerEvent (KAMAP_SCALE_CHANGED);
			}
			// END IE simple hack

			if (doSearch.value == 'true') {
				addressSearch ();
			}
		}
	}
}

