//simplecalender.js start

	var timeoutDelay = 2000; // milliseconds, change this if you like, set to 0 for the calendar to never auto disappear

	var xpos = 0; // default x-position for calender widget relative to calender2.gif button
	var ypos = -110; // default y-position for calender widget relative to calender2.gif button

//	var xpos = 0; // default x-position for calender widget relative to calender2.gif button
//	var ypos = 0; // default y-position for calender widget relative to calender2.gif button


	
//	// preload images  -- removed and replaced with Wingding HTML text 
//	var imgUp = new Image(8,12);
//	imgUp.src = '/Compas/images/calendar/up.gif';
//	var imgDown = new Image(8,12);
//	imgDown.src = '/Compas/images/calendar/down.gif';
	
	// used by timeout auto hide functions
	var timeoutId = false;
	
	// the now standard browser sniffer class
	function Browser(){
	  this.dom = document.getElementById?1:0;
	  this.ie4 = (document.all && !this.dom)?1:0;
	  this.ns4 = (document.layers && !this.dom)?1:0;
	  this.ns6 = (this.dom && !document.all)?1:0;
	  this.ie5 = (this.dom && document.all)?1:0;
	  this.ok = this.dom || this.ie4 || this.ns4;
	  this.platform = navigator.platform;
	}
	var browser = new Browser();
		
	// dom browsers require this written to the HEAD section
	
	if (browser.dom || browser.ie4){

		document.write('<div id="container"');
		if (timeoutDelay) document.write(' onmouseout="calendarTimeout();" onmouseover="if (timeoutId) clearTimeout(timeoutId);"');
		document.write('></div>');
	}
	
	var g_Calendar;  // global to hold the calendar reference, set by constructor
	
	function calendarTimeout(){
		if (browser.ie4 || browser.ie5){
			if (window.event.srcElement && window.event.srcElement.name!='month') {
				timeoutId=setTimeout('g_Calendar.hide();',timeoutDelay);
			}
		}
		if (browser.ns6 || browser.ns4){
			timeoutId=setTimeout('g_Calendar.hide();',timeoutDelay);
		}
	}

	// constructor for calendar class
	function Calendar(){
		g_Calendar = this;

	  	// some constants needed throughout the program
		this.daysOfWeek = new Array("Su","Mo","Tu","We","Th","Fr","Sa");
		this.months = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
		this.daysInMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

	  	if (browser.ns4){
			var tmpLayer = new Layer(124);
			if (timeoutDelay){
				tmpLayer.captureEvents(Event.MOUSEOVER | Event.MOUSEOUT);
				tmpLayer.onmouseover = function(event) { if (timeoutId) clearTimeout(timeoutId); };
				tmpLayer.onmouseout = function(event) { timeoutId=setTimeout('g_Calendar.hide()',timeoutDelay);};
			}
			tmpLayer.x = 100;
			tmpLayer.y = 100;
			tmpLayer.bgColor = "#ffffff";
		}

	  	if (browser.dom || browser.ie4){
			var tmpLayer = browser.dom?document.getElementById('container'):document.all.container;
		}
	  	this.containerLayer = tmpLayer;
		/*if (browser.ns4) {
			this.containerLayer.clip.height=127;
			this.containerLayer.clip.width=126;
		}*/

	}

 	Calendar.prototype.getFirstDOM = function() {
		var thedate = new Date();
		thedate.setDate(1);
		thedate.setMonth(this.month);
		thedate.setFullYear(this.year);
		return thedate.getDay();
	}

	Calendar.prototype.getDaysInMonth = function (){
		if (this.month!=1) {
			return this.daysInMonth[this.month]
		}
		else {
			// is it a leap year
			if (this.isLeapYear(this.year)) {
				return 29;
			}
			else {
				return 28;
			}
		}
	}

	Calendar.prototype.isLeapYear = function() {
		if (this.year%4==0 && ((this.year%100!=0) || (this.year%400==0)))
			return true;
		else 
			return false;
	}

	Calendar.prototype.buildString = function(){
		var tmpStr = '<form onSubmit="this.year.blur();return false;"><table width="100%" border="0" cellspacing="0" cellpadding="0" class="calBorderColor"><tr><td valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="1" class="calBgColor">';
		tmpStr += '<tr>';
		tmpStr += '<td width="60%" class="cal" align="left">';
		if (this.hasDropDown) {
			tmpStr += '<select class="month" name="month" onchange="g_Calendar.selectChange();">';
			for (var i=0;i<this.months.length;i++){
				tmpStr += '<option value="' + i + '"' 
				if (i == this.month) tmpStr += ' selected';
				tmpStr += '>' + this.months[i] + '</option>';
			}
			tmpStr += '</select>';
		}
		else {
			tmpStr += '<table border="0" cellspacing="0" cellpadding="0" class="calHead"><tr><td><a href="javascript: g_Calendar.changeMonth(-1)" class="arrow">&laquo;</a></td><td class="cal" width="100%" align="center">' + this.months[this.month] + '</td><td><a href="javascript: g_Calendar.changeMonth(+1);" class="arrow">&raquo;</a></td></tr></table>';
		}
		tmpStr += '</td>';
		/* observation : for some reason if the below event is changed to 'onChange' rather than 'onBlur' it totally crashes IE (4 and 5)!
		answer:  because M$ sucks
		*/
		tmpStr += '<td width="40%" align="right">';

	  	if (this.hasDropDown) { 
			tmpStr += '<input class="year" type="text" size="';
			// get round NS4 win32 length of year input problem
			(browser.ns4 && browser.platform=='Win32')?tmpStr += 1:tmpStr += 4;
			tmpStr += '" name="year" maxlength="4" onBlur="g_Calendar.inputChange();" value="' + this.year + '">';
		}
		else {
			tmpStr += '<table border="0" cellspacing="0" cellpadding="0" class="calHead"><tr><td><a href="javascript: g_Calendar.changeYear(-1);" class="arrow">&laquo;</a></td><td class="cal" width="100%" align="center">' + this.year + '</td><td><a href="javascript: g_Calendar.changeYear(+1);" class="arrow">&raquo;</a></td></tr></table>'
		}
		tmpStr += '</td>';
		tmpStr += '</tr>';
		tmpStr += '</table>';
		var iCount = 1;
		var iFirstDOM = this.getFirstDOM(); // to prevent calling it in a loop
		var iDaysInMonth = this.getDaysInMonth(); // to prevent calling it in a loop

	  	tmpStr += '<table width="100%" border="0" cellspacing="0" cellpadding="0" class="calBgColor">';
		tmpStr += '<tr>';
		for (var i=0;i<this.daysOfWeek.length;i++){
			tmpStr += '<td align="center" class="calDaysColor">' + this.daysOfWeek[i] + '</td>';
		}
		tmpStr += '</tr>';
		var tmpFrom = parseInt('' + this.dateFromYear + this.dateFromMonth + this.dateFromDay,10);
		var tmpTo = parseInt('' + this.dateToYear + this.dateToMonth + this.dateToDay,10);
		var tmpCompare;
		for (var j=1;j<=6;j++){
			tmpStr += '<tr>';
			for (var i=1;i<=7;i++){
				tmpStr += '<td width="16" align="center" '
				if ( (7*(j-1) + i)>=iFirstDOM+1  && iCount <= iDaysInMonth){
					if (iCount==this.day && this.year==this.oYear && this.month==this.oMonth) tmpStr += 'class="calHighlightColor"';
				else {
					if (i==1 || i==7)
						tmpStr += 'class="calWeekend"';
					else 
						tmpStr += 'class="cal"';
				}
				tmpStr += '>';
				/* could create a date object here and compare that but probably more efficient to convert to a number
				and compare number as numbers are primitives */
				tmpCompare = parseInt('' + this.year + padZero(this.month) + padZero(iCount),10);
				if (tmpCompare >= tmpFrom && tmpCompare <= tmpTo) {
					tmpStr += '<a class="cal" href="javascript: g_Calendar.clickDay(' + iCount + ');">' + iCount + '</a>';
				}
				else {
					tmpStr += '<span class="disabled">' + iCount + '</span>';
				}
				iCount++;
				}
				else {
					if  (i==1 || i==7) tmpStr += 'class="calWeekend"';
						tmpStr += '>&nbsp;';
				}
				tmpStr += '</td>'
			}
			tmpStr += '</tr>'
		}
		tmpStr += '</table></td></tr></table></form>'
		return tmpStr;
	}//end Calendar.prototype.buildString

	Calendar.prototype.selectChange = function(){
		this.month = browser.ns6?this.containerLayer.ownerDocument.forms[0].month.selectedIndex:this.containerLayer.document.forms[0].month.selectedIndex;
		this.writeString(this.buildString());
	} 

	Calendar.prototype.inputChange = function(){
		var tmp = browser.ns6?this.containerLayer.ownerDocument.forms[0].year:this.containerLayer.document.forms[0].year;
		if (tmp.value >=1900 || tmp.value <=2100){
			this.year = tmp.value;
			this.writeString(this.buildString());
		}
		else {
			tmp.value = this.year;
		}
	}
	Calendar.prototype.changeYear = function(incr){
		this.containerLayer.style.visibility='visible';  //added to prevent premature hiding -mshields-
		this.containerLayer.style.zIndex=1;
		(incr==1)?this.year++:this.year--;
		this.writeString(this.buildString());
	}

	Calendar.prototype.changeMonth = function(incr){
		this.containerLayer.style.visibility='visible';  //added to prevent premature hiding -mshields-
		this.containerLayer.style.zIndex=1;
		if (this.month==11 && incr==1){
			this.month = 0;
			this.year++;
		} else {
			if (this.month==0 && incr==-1){
				this.month = 11;
				this.year--;
			}
			else {
				(incr==1)?this.month++:this.month--;
			}
		}
		this.writeString(this.buildString());
	}

	Calendar.prototype.clickDay = function(day){
			
		eval('var tmp = document.' + this.target);

		tmpIndex = this.target.indexOf(".");
		var formName = this.target.substring(0, tmpIndex);
		var fldName = this.target.substring(tmpIndex + 1, this.target.length);
		tmp = this.getField(formName, fldName);
		if (!tmp.disabled) {
	
		if (this.dateFormat=='dd-mmm-yyyy') 
			tmp.value = day + this.dateDelim + this.months[this.month].substr(0,3) + this.dateDelim + this.year;
		if (this.dateFormat=='dd/mm/yyyy') 
			tmp.value = day + this.dateDelim + (this.month+1) + this.dateDelim + this.year;
		if (this.dateFormat=='mm/dd/yyyy') 
			tmp.value = (this.month+1) + this.dateDelim + day + this.dateDelim + this.year;
		}
		
	    	if (browser.ns4) 
			this.containerLayer.hidden=true;
		if (browser.dom || browser.ie4){
			this.containerLayer.style.visibility='hidden'
		}
		if(this.postClick != 'null'){
			eval(this.postClick);
		}
		
	}
	Calendar.prototype.writeString = function(str){
		if (browser.ns4){
			this.containerLayer.document.open();
			this.containerLayer.document.write(str);
			this.containerLayer.document.close();
		} 
		if (browser.dom || browser.ie4){
			this.containerLayer.innerHTML = str;

		}
	}
	
	Calendar.prototype.show = function(event, target, bHasDropDown, dateFormat, index, postClick, dateFrom, dateTo){
		// calendar can restrict choices between 2 dates, if however no restrictions
		// are made, let them choose any date between 1900 and 3000
		if(index)
			this.index = index;
		else
			this.index = -1;
		if (dateFrom) 
			this.dateFrom = dateFrom; 
		else 
			this.dateFrom = new Date(1900,0,1);
		this.postClick = postClick;
		this.dateFromDay = padZero(this.dateFrom.getDate());
		this.dateFromMonth = padZero(this.dateFrom.getMonth());
		this.dateFromYear = this.dateFrom.getFullYear();
		if (dateTo) 
			this.dateTo = dateTo; 
		else 
			this.dateTo = new Date(3000,0,1);
		this.dateToDay = padZero(this.dateTo.getDate());
		this.dateToMonth = padZero(this.dateTo.getMonth());
		this.dateToYear = this.dateTo.getFullYear();
		this.hasDropDown = bHasDropDown;
		if (dateFormat) 
			this.dateFormat = dateFormat; 
		else 
			this.dateFormat = 'dd-mmm-yyyy';
		switch (this.dateFormat){
			case 'dd-mmm-yyyy':
				this.dateDelim = '-';
				break;
			case 'dd/mm/yyyy':
			case 'mm/dd/yyyy':
				this.dateDelim = '/';
				break;
		}

		if (browser.ns4) {

			if (!this.containerLayer.hidden) {
				this.containerLayer.hidden=true;
				return;
			}
		}
		if (browser.dom || browser.ie4){
			if (this.containerLayer.style.visibility=='visible') {
				this.containerLayer.style.visibility='hidden';
				return;
			}
		}
		if (browser.ie5 || browser.ie4){
			var event = window.event;
		}
		if (browser.ns4){
			this.containerLayer.x = event.x+10;
			this.containerLayer.y = event.y-5;
		}
		if (browser.ie5 || browser.ie4){
			var obj = event.srcElement;
			x = 0;
			while (obj.offsetParent != null) {
				x += obj.offsetLeft;
				obj = obj.offsetParent;
			}
			x += obj.offsetLeft;
			y = 0;
			var obj = event.srcElement;
			while (obj.offsetParent != null) {
				y += obj.offsetTop;
				obj = obj.offsetParent;
			}
			y += obj.offsetTop;

			this.containerLayer.style.left = x + xpos;
			if (event.y>0)
				this.containerLayer.style.top = y+ ypos;
		}

//		xpos = 0; // return to default x-position for calender widget relative to calender2.gif button
//		ypos = 0; // return to default y-position for calender widget relative to calender2.gif button

		if (browser.ns6){
			this.containerLayer.style.left = event.pageX+10;
			this.containerLayer.style.top = event.pageY-5;
		}
		this.target = target;

		//the form name can be derived from the target field
		var tmpIndex = target.indexOf(".");		
		var formName = target.substring(0, tmpIndex);
		var fldName = target.substring(tmpIndex + 1, target.length);
		
		eval('var tmp = document.' + this.target);

		var dateValue = "";

		if(index >= 0){
			fld = this.getField(formName, fldName, index);
			dateValue = fld.value;
		}
		else{
			dateValue = tmp.value;
		}

		if (tmp && dateValue && dateValue.split(this.dateDelim).length==3){
			var atmp = dateValue.split(this.dateDelim)
			this.day = this.oDay = this.dateFormat.substr(0,2)=='dd'?parseInt(atmp[0],0):parseInt(atmp[1],0);
			if (this.dateFormat=='dd-mmm-yyyy'){
				for (var i=0;i<this.months.length;i++){
					if (atmp[1].toLowerCase()==this.months[i].substr(0,3).toLowerCase()){
						this.month = this.oMonth = i;
						break;
					}
				}
			}
			else {
				if (this.dateFormat.substr(0,2)=='dd')
					this.month = this.oMonth = parseInt(atmp[1]-1,0); 
				else 
					this.month = this.oMonth = parseInt(atmp[0]-1,0);
			}
			this.year= this.oYear = parseInt(atmp[2],10);
		}
		else { // no date set, default to today
			var theDate = new Date();
			this.year = this.oYear = theDate.getFullYear();
			this.month = this.oMonth = theDate.getMonth();
			this.day = this.oDay = theDate.getDate();
		}
		this.writeString(this.buildString());
	  	// and then show it!
		if (browser.ns4) {
			this.containerLayer.hidden=false;
		}
		if (browser.dom|| browser.ie4){
			this.containerLayer.style.visibility='visible';
			this.containerLayer.style.zIndex=1;
		}
	} //end Calendar.show
	
	//if there are > 1 fields with the same name, this grabs the indexth field
		Calendar.prototype.getField = function(formName, fldName, notUsed){
		eval('fld = document.' + formName + "." + fldName + ';');

		if (fld.length!="undefined") {
			if(fld.length > 1){
				if(this.index > 0) {
					return fld[this.index];
				} else {
					return fld[0];
				}
			}
		}
	  
	    // work-around: call hideResults on provider web 
	    // claim's form if anything is selected from calendar.  
		if (document.memberSearchForm != null) {
			hideResults();
		}
		return fld;
	}

	Calendar.prototype.hide = function(){
		if (browser.ns4) this.containerLayer.hidden = true;
		if (browser.dom || browser.ie4){
			this.containerLayer.style.visibility='hidden';
		}
	}
	 
	// events capturing (includes event for the right-click menu)
	//replaced with the customOnloadEvents() script  J.White 03/15/2005
//	window.onload=doCalendar;
	window.document.onclick=function() { handleDocumentClick(); }
	
	function handleDocumentClick(e) {
		if (browser.ie4 || browser.ie5) {
			e = window.event;
		}
		if (g_Calendar!=null) {

			if ((browser.ns6) && (e != null)) {
				var bTest = (e.pageX > parseInt(g_Calendar.containerLayer.style.left,10) && e.pageX <  (parseInt(g_Calendar.containerLayer.style.left,10)+125) && e.pageY < (parseInt(g_Calendar.containerLayer.style.top,10)+125) && e.pageY > parseInt(g_Calendar.containerLayer.style.top,10));

				if (e.target.name!='imgCalendar' && e.target.name!='month'  && e.target.name!='year' && e.target.name!='calendar' && !bTest) {
					g_Calendar.hide(); 
				} 
			}

		} else if ((browser.ie4 || browser.ie5) && (g_Calendar!=null)){

			// extra test to see if user clicked inside the calendar but not on a valid date, we don't want it to disappear in this case        	
			var bTest = (e.x > parseInt(g_Calendar.containerLayer.style.left,10) && e.x <  (parseInt(g_Calendar.containerLayer.style.left,10)+125) && e.y < (parseInt(g_Calendar.containerLayer.style.top,10)+125) && e.y > parseInt(g_Calendar.containerLayer.style.top,10));
			if (e.srcElement.name!='imgCalendar' && e.srcElement.name!='month' && e.srcElement.name!='year' && !bTest) {
				//alert('e.x=' + e.x + ' > parseInt(g_Calendar.containerLayer.style.left,10)' + parseInt(g_Calendar.containerLayer.style.left,10) + ' &&\n e.x <  (parseInt(g_Calendar.containerLayer.style.left,10)+125)=' + (parseInt(g_Calendar.containerLayer.style.left,10)+125) + '\n&& e.y=' + e.y + ' < (parseInt(g_Calendar.containerLayer.style.top,10)+125)=' + (parseInt(g_Calendar.containerLayer.style.top,10)+125) + '\n&& e.y > parseInt(g_Calendar.containerLayer.style.top,10)=' + parseInt(g_Calendar.containerLayer.style.top,10));
				g_Calendar.hide(); 
			}

		} else if (browser.ns4 && g_Calendar!=null) {
				g_Calendar.hide();
		}
	}

	
	function doCalendar(){
		//var aCalendar = new Calendar(new Date(2001,1,13));

		var aCalendar = new Calendar(new Date());
		if (document.getElementById('searchPanel')!=null) {
			if (document.getElementById('searchPanel').offsetWidth > 575) {
				document.getElementById('searchPanel').style.letterSpacing = '-0.2mm';
			}
		}		
	}
	
	// utility function
	function padZero(num) {
	  return ((num <= 9) ? ("0" + num) : num);
	}
	/** adapted from http://tech.irt.org/articles/js052/index.htm */

	function addDays(startDate,addition) {
	    
		var accumulate    = new Array(0,31, 59, 90,120,151,181,212,243,273,304,334);
		var accumulateLY  = new Array(0,31, 60, 91,121,152,182,213,244,274,305,335);

	    var year = startDate.getFullYear();
		var month = startDate.getMonth();
		var day = startDate.getDate();
		
		if (isLeapYear(year)) var number = day + accumulateLY[month] + addition;
	    else                var number = day + accumulate[month]   + addition;
	    var days = daysinyear(year);
	   
	    while (number > days) {
	        number -= days;
	        days = daysinyear(++year);
	    }
	
	    while (number < 1) {
	        days = daysinyear(--year);
	        number += days;
	    }
	
	    month = 0;
	
	    if (isLeapYear(year)) {
	        while (number > accumulateLY[month]) { month++; }
	        day = number - accumulateLY[--month];
	    }
	    else {
	        while (number > accumulate[month]) { month++; }
	        day = number - accumulate[--month];
	    }
		return new Date(year,month,day);
	}
	
	function daysinyear(year) { if (isLeapYear(year)) return 366; else return 365; }
	function isLeapYear(year) { if (year%4==0 && ((year%100!=0) || (year%400==0))) return true; else return false; }
	/* end of adaptation */

//simplecalender.js stop
