    document.write("<div id='CalendarWidget' onclick='widgetclick(event)'></div>");
    function setEarliestArrivalShared(propdd, arrivaldayid, departdayid, arrivalmonthid, departmonthid, upperOrLower ){
    
        var dayArrInp = document.getElementById( arrivaldayid );
        var dayDepInp = document.getElementById( departdayid );

        var monyrArrInp = document.getElementById( arrivalmonthid );
        var monyrDepInp = document.getElementById( departmonthid );
        
        var propId = propdd.options[propdd.selectedIndex].value;
        var earliestDate = PropertyReservationDates[propId];
        
        if( propId == 19920 ){ //if bellevue 
            //earliestDate = '04/15/2008';
            
            for(i=0; i< monyrArrInp.options.length; i++){
                if( monyrArrInp.options[i].value == "2008-02" ){
                    monyrArrInp.remove(i);
                    monyrDepInp.remove(i);
                 }
            }
            for(i=0; i< monyrArrInp.options.length; i++){
                if( monyrArrInp.options[i].value == "2008-03" ){
                    monyrArrInp.remove(i);
                    monyrDepInp.remove(i);
                 }
            }
        }

        var hasFeb = false;
        var hasMar = false;
        var myi, myj;
        for( myi=0; myi < monyrArrInp.options.length; myi++)
            if ( monyrArrInp.options[myi].value == "2008-02" )
                hasFeb = true;

        for( myj=0; myj < monyrDepInp.options.length; myj++)
            if ( monyrDepInp.options[myj].value == "2008-03" )
                hasMar = true;
            

        if( !hasFeb && !hasMar ){
            insertOptionAtBeginning( monyrArrInp, "Mar 2008", "2008-03" );
            insertOptionAtBeginning( monyrArrInp, "Feb 2008", "2008-02" );

            insertOptionAtBeginning( monyrDepInp, "Mar 2008", "2008-03" );
            insertOptionAtBeginning( monyrDepInp, "Feb 2008", "2008-02" );
        }


        dayArrInp.onclick = function (){ 
            showCalendarControlNew( document.getElementById( arrivaldayid ) , earliestDate, 0);        
        }
        dayDepInp.onclick = function (){ 
            showCalendarControlNew( document.getElementById( departdayid ) , earliestDate, 1);        
        }
    }


/* *************************************************************************
=FIND POSITIONS - function findPos
Simplified functiont to find object position
Phase two - can been added to common.js, reusable function
************************************************************************* */

function findPos(obj, hiddenDiv, extraWidth, extraHeight) {
	var objId = obj.id;
	
	if(extraHeight){
		var objHeight = parseInt(extraHeight);
	}
	else{var objHeight = 0;}
	if(extraWidth){
		var objWidth = parseInt(extraWidth);
	}
	else{
		var objWidth = 0;
		
		}
	var curleft = curtop = curright = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	
	if(hiddenDiv){
	hiddenDiv.style.display = "block";
	hiddenDiv.style.top = curtop + objHeight + "px";
	hiddenDiv.style.left = curleft + objWidth + "px";
	}
   
	return [curleft,curtop];
}


     function CalendarControl() {

          var calendarId = 'CalendarWidget';
          var currentYear = 0;
          var currentMonth = 0;
          var currentDay = 0;

          var selectedYear = 0;
          var selectedMonth = 0;
          var selectedDay = 0;

          var months = ['January','February','March','April','May','June','July','August','September','October','November','December'];
          var dateField = null;

          function getProperty(p_property){
            var p_elm = calendarId;
            var elm = null;

            if(typeof(p_elm) == "object"){
              elm = p_elm;
            } else {
              elm = document.getElementById(p_elm);
            }
            if (elm != null){
              if(elm.style){
                elm = elm.style;
                if(elm[p_property]){
                  return elm[p_property];
                } else {
                  return null;
                }
              } else {
                return null;
              }
            }
          }

          function setElementProperty(p_property, p_value, p_elmId){
            var p_elm = p_elmId;
            var elm = null;

            if(typeof(p_elm) == "object"){
              elm = p_elm;
            } else {
              elm = document.getElementById(p_elm);
            }
            if((elm != null) && (elm.style != null)){
              elm = elm.style;
              elm[ p_property ] = p_value;
            }
          }

          function setProperty(p_property, p_value) {
            setElementProperty(p_property, p_value, calendarId);
          }

          function getDaysInMonth(year, month) {
            return [31,((!(year % 4 ) && ( (year % 100 ) || !( year % 400 ) ))?29:28),31,30,31,30,31,31,30,31,30,31][month-1];
          }

          function getDayOfWeek(year, month, day) {
            var date = new Date(year,month-1,day)
            return date.getDay();
          }

          this.setDate = setDate;
          
          //recieves dates in human displayable format
          function setDate(year, month, day) {
            if (dateField) {
                if (month < 10) {month = month;}
                if (day < 10) {day = day;}
                dateField.value = month.toString() + "/" + day.toString() + "/" + year.toString();
                hide();

            }
            return;
          }

          this.changeMonth = changeMonth;
          function changeMonth(change) {
            currentMonth += change;
            currentDay = 0;
            if(currentMonth > 12) {
              currentMonth = 1;
              currentYear++;
            } else if(currentMonth < 1) {
              currentMonth = 12;
              currentYear--;
            }
                        
            calendar = document.getElementById(calendarId);
            calendar.innerHTML = calendarDrawTable();
          }

          this.changeYear = changeYear;
          function changeYear(change) {
            currentYear += change;
            currentDay = 0;
            calendar = document.getElementById(calendarId);
            calendar.innerHTML = calendarDrawTable();
          }



          function calendarDrawTable() {

            if (((currentMonth < earliestMonth) && (currentYear <= earliestYear)) || ((currentYear < earliestYear))) {
              // Don't allow user to go back before the earliest reservable date (today or opening day)
              currentMonth = earliestMonth;
              currentYear = earliestYear;
            } else if (((currentMonth >= getCurrentMonth()) && (currentYear > getCurrentYear())) || (currentYear > getCurrentYear()+1)) {
              // Don't allow user to go more than one year in advance
              currentMonth = getCurrentMonth();
              currentYear = getCurrentYear()+1;
            }
            
            var dayOfMonth = 1;
            var validDay = 0;
            var startDayOfWeek = getDayOfWeek(currentYear, currentMonth, dayOfMonth);
            var daysInMonth = getDaysInMonth(currentYear, currentMonth);
            var css_class = null; //CSS class for each day

            var table = "<div class=\"calendarContainer\"><!--[if lte IE 6.5]><iframe></iframe><![endif]-->";
            table = table + "<div class=\"calendarHeader\">";
			table = table + "  <div class=\"previous\"><a href=\"javascript:changeCalendarControlMonth(-1);\">&lt;</a></div>";
			table = table + "  <div class=\"title\">" + months[currentMonth-1] + " " + currentYear + "</div>";
			table = table + "  <div class=\"next\"><a href=\"javascript:changeCalendarControlMonth(1);\">&gt;</a></div>";
			table = table + "</div>";
            table = table + "<table cellspacing='0' cellpadding='0' border='0'>";
            table = table + "<tr><th>S</th><th>M</th><th>T</th><th>W</th><th>T</th><th>F</th><th>S</th></tr>";

            for(var week=0; week < 6; week++) {
              table = table + "<tr>";
              for(var dayOfWeek=0; dayOfWeek < 7; dayOfWeek++) {
                if(week == 0 && startDayOfWeek == dayOfWeek) {
                  validDay = 1;
                } else if (validDay == 1 && dayOfMonth > daysInMonth) {
                  validDay = 0;
                }

                if(validDay) {
                  if (dayOfMonth == selectedDay && currentYear == selectedYear && currentMonth == selectedMonth) {
                    css_class = 'current';
                  } else if (dayOfWeek == 0 || dayOfWeek == 6) {
                    css_class = 'weekend';
                  } else {
                    css_class = 'weekday';
                  }
                  /*if (currentMonth == getCurrentMonth() && currentYear == getCurrentYear() && dayOfMonth < getCurrentDay()) {
                  table = table + "<td><div class='pastday'>"+dayOfMonth+"</div></td>";
                  */
                  if ((currentYear < earliestYear) || (currentMonth < earliestMonth && currentYear == earliestYear) || (currentMonth <= earliestMonth && currentYear <= earliestYear && dayOfMonth < earliestDay)) {
                  // Don't allow days prior to earliest allowed date (usually today, otherwise hotel opening day)
                  table = table + "<td><div class='pastday'>"+dayOfMonth+"</div></td>";
                  } else if (currentMonth == getCurrentMonth() && currentYear == getCurrentYear()+1 && dayOfMonth >= getCurrentDay()) {
                  // Same month of the following year, block of days greater than a year from today
                  table = table + "<td><div class='pastday'>"+dayOfMonth+"</div></td>";
                  } else {
                  table = table + "<td><a class='"+css_class+"' href=\"javascript:setCalendarControlDate("+currentYear+","+currentMonth+","+dayOfMonth+")\">"+dayOfMonth+"</a></td>";
                  }

                  dayOfMonth++;
                } else {
                  table = table + "<td class='empty'>&nbsp;</td>";
                }
              }
              table = table + "</tr>";
            }

            table = table + "</table>";
            table = table + "<div class=\"close\"><a href=\"javascript:hideCalendarControl();\">Close</a></div>";
            table = table + "</div>";

            return table;
          }

          this.show = show;
          function show(field) {
          
            // If the calendar is visible and associated with
            // this field do not do anything.
            if (dateField == field) {
              return;
            } else {
              dateField = field;
            }

            if(dateField) {
              try {
                var dateString;
                var monthYear = document.getElementById( dateField.id.replace('txtDay','ddYearMonth') );
                var monthYearParts = monthYear.options[ monthYear.selectedIndex ].value.split("-");
                selectedYear  = parseInt( monthYearParts[0] );
                selectedMonth = parseInt( monthYearParts[1], 10 );
                selectedDay   = parseInt( dateField.value,   10 ) ;                    
              } catch(e) {}
            }

            if (!(selectedYear && selectedMonth && selectedDay)) {
              selectedMonth = getCurrentMonth();
              selectedDay = getCurrentDay();
              selectedYear = getCurrentYear();
            }

            currentMonth = selectedMonth;
            currentDay = selectedDay;
            currentYear = selectedYear;

            if(document.getElementById){
                calendar = document.getElementById(calendarId);
                calendar.innerHTML = calendarDrawTable(currentYear, currentMonth);

                setProperty('display', 'block');

                var fieldPos = findPos(dateField);

                var x, y;
                x = fieldPos[0];
                y = fieldPos[1];

                x=x+302;
                y=y - 2;

                setProperty('left', x + "px");
                setProperty('top', y + "px");
            }
          }

          this.hide = hide;
          function hide() {
            if(dateField) {
              setProperty('display', 'none');
              dateField = null;
            }
          }
        }



          function getCurrentYear() {
            var year = new Date().getYear();
            if(year < 1900) year += 1900;
            return year;
          }

          function getCurrentMonth() {
            return new Date().getMonth() + 1;
          } 

          function getCurrentDay() {
            return new Date().getDate();
          }
          
          
          
        var calendarControl = new CalendarControl();
        var alignment; //holds the user's preferred alignment
        var earliestMonth = getCurrentMonth();   // holds the earliest possible reservation date
        var earliestDay = getCurrentDay();   // holds the earliest possible reservation date
        var earliestYear = getCurrentYear();   // holds the earliest possible reservation date


        function showCalendarControl(textField) {
          calendarControl.show(textField);
        }
        function showCalendarControlNew(textField, propertyDate, addDays) {
          
          if(propertyDate) {
              try {

                var earliestDate = new Date(propertyDate);
                earliestDate.setDate(earliestDate.getDate()+addDays);
                earliestMonth = earliestDate.getMonth()+1;
                earliestDay = earliestDate.getDate();
                earliestYear = earliestDate.getFullYear();

              } catch(e) {}
          }
          calendarControl.show(textField);
          registerClickToWidget();
        }
        function showCalendarControlDD(textField, align, propertyField, propertyDates, addDays) {
          alignment=align;
          
          var propertyDate = propertyDates[propertyField.selectedIndex];
          if(propertyDate) {
              try {

                var earliestDate = new Date(propertyDate);
                earliestDate.setDate(earliestDate.getDate()+addDays);
                earliestMonth = earliestDate.getMonth()+1;
                earliestDay = earliestDate.getDate();
                earliestYear = earliestDate.getFullYear();
              } catch(e) {}
          }
          calendarControl.show(textField);
	      registerClickToWidget();
        }

        function hideCalendarControl() {
          calendarControl.hide();
        }

        function setCalendarControlDate(year, month, day) {
          calendarControl.setDate(year, month, day);
        }

        function changeCalendarControlYear(change) {
          calendarControl.changeYear(change);
        }

        function changeCalendarControlMonth(change) {
          calendarControl.changeMonth(change);
        }

    function ddPropertyChange(propertyField, propertyDates, arrivalText, departureText) {
        arrivalText.value = propertyDates[propertyField.selectedIndex];
        var arrivalDate = new Date(propertyDates[propertyField.selectedIndex]);
        var departureDate = arrivalDate;
        departureDate.setDate(departureDate.getDate()+1);
        departureText.value = (departureDate.getMonth()+1)+"/"+departureDate.getDate()+"/"+departureDate.getFullYear();

    }

/////// DATE VALIDATION CODE /////////
function ValidateDates2(inputArrivalYearMonth, inputArrivalDay, inputDepartureYearMonth, inputDepartureDay){
    try {
        var arrYearMonth = inputArrivalYearMonth.options[inputArrivalYearMonth.selectedIndex].value;
        var depYearMonth = inputDepartureYearMonth.options[inputDepartureYearMonth.selectedIndex].value;
        
        //note that these compare
        var arrivalDate   = new Date( Date.parse( arrYearMonth.split("-")[1] +"/"+inputArrivalDay.value+"/"+arrYearMonth.split("-")[0] ) );
        var departureDate = new Date( Date.parse( depYearMonth.split("-")[1] +"/"+inputDepartureDay.value+"/"+depYearMonth.split("-")[0] ) );

        if( isNaN(arrivalDate) || isNaN(departureDate) ){
            alert("Please enter valid dates using the calendar and try your request again.");
            return false;
        }
                
        if (departureDate <= arrivalDate) {
            // Please depart after you arrive
            alert("Your departure date must be after your arrival date.");
            return false;
        } else {
            return true;
        }
    } catch(e) {
        //validation failed return false
        alert("Please enter valid dates using the calendar and try your request again.");
        return false;
    }
}
   

/////// CAL CLOSING WHEN CLICKED OUTSIDE OF WIDGET CODE //////
//note this currently works in firefox, ie - not in opera where no attempt i made to attach
// the body onclick event resulted in that event running -DeanR

document.onclick = bodyclick;

	var click_originated_in_calwidget = false; 

	function bodyclick(){
		if( iswidgetshowing() && ! click_originated_in_calwidget  )
		 closeWidget();

		unRegisterClickToWidget();
	}
	function iswidgetshowing(){
		return ( document.getElementById('CalendarWidget').style.display == "block" );
	}
	function widgetclick(e){
		registerClickToWidget();
	}
	function closeWidget(){
		hideCalendarControl();
	}
	function registerClickToWidget(){
		click_originated_in_calwidget = true;
	}
	function unRegisterClickToWidget(){
		click_originated_in_calwidget = false;
	}
	function showWidget(e){
		calwidget.style.display = 'block';
		widget_showing = true;
		//cancel bubbling
		cancelEvent(e);
	}


    function cancelEvent(e)
    {
      if(!e)
        e = window.event;
      if(e.stopPropagation)
        e.stopPropagation();
      if(e.preventDefault)
        e.preventDefault();
      e.cancelBubble = true;
      e.cancel = true;
      e.returnValue = false;
      return false;
    }

/////// END CAL CLOSING WHEN CLICKED OUTSIDE OF WIDGET CODE //////



function insertOptionAtBeginning(elSel, txt, val)
{
  if (elSel.selectedIndex >= 0) {
    var elOptNew = document.createElement('option');
    elOptNew.text = txt;
    elOptNew.value = val;
    var elOptOld = elSel.options[0];  
    try {
      elSel.add(elOptNew, elOptOld); // standards compliant; doesn't work in IE
    }
    catch(ex) {
      elSel.add(elOptNew, 0); // IE only
    }
  }
}



