ultra easy calender picker
<cfscript>
    iCalender = 0;
    function DrawCalender(aName) {
        if(iCalender IS 0){
            sRes="<script type=""text/javascript"">";
            sRes=sRes & "function _cl_DaysInMonth(iYear){return new Array(',31, ((iYear % 4 == 0 && iYear % 100 != 0) || iYear % 400 == 0 ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);}" & chr(13);
            sRes=sRes & "var _cl_month_name = new Array (','January','February','March','April','May','June','July','August','September','October','November','December');" & chr(13);
            sRes=sRes & "var _cl_thedate = new Date( );var _cl_theyear = _cl_thedate.getFullYear( );var _cl_themonth = _cl_month_name[_cl_thedate.getMonth( ) +1];var_cl_theday = _cl_thedate.getDate( );" & chr(13);
            sRes=sRes & "function CreateCalender(o){";
            sRes=sRes & "var _cl_selD = document.createElement('select');" & chr(13);
            sRes=sRes & "var _cl_in=o.getElementsByTagName('input')[0].value.split(');if(_cl_in.length>1)_cl_CDays(_cl_selD,_cl_in[1],_cl_in[2],_cl_in[0]);else_cl_CDays(_cl_selD,_cl_themonth,_cl_theyear,_cl_theday);" & chr(13);
            sRes=sRes & "o.appendChild(_cl_selD);" & chr(13);
            sRes=sRes & "_cl_selD = document.createElement('select');" & chr(13);
            sRes=sRes & "_cl_selD.onchange = function(){_cl_UpdateDays(this)};" & chr(13);
            sRes=sRes & "if(_cl_in.length>1)_cl_CMonth(_cl_selD,_cl_in[2],_cl_in[1]);else _cl_CMonth(_cl_selD,_cl_theyear,_cl_themonth);" & chr(13);
            sRes=sRes & "o.appendChild(_cl_selD);_cl_selD = document.createElement('select');" & chr(13);
            sRes=sRes & "_cl_selD.onchange = function(){_cl_UpdateMonth(this)};" & chr(13);
            sRes=sRes & "if(_cl_in.length>1)_cl_CYear(_cl_selD,_cl_in[2]);else _cl_CYear(_cl_selD,_cl_theyear);" & chr(13);
            sRes=sRes & "o.appendChild(_cl_selD);" & chr(13);
            sRes=sRes & "if(_cl_in.length>1)SetDate(_cl_selD);" & chr(13);
            sRes=sRes & "_cl_selD = document.createElement('input');_cl_selD.type = 'button';_cl_selD.value = 'OK';_cl_selD.onclick=function(){_clHide(this);SetDate(this);};o.appendChild(_cl_selD);" & chr(13);
            sRes=sRes & "_cl_selD = document.createElement('em');_cl_selD.innerHTML = '&nbsp;';o.appendChild(_cl_selD);" & chr(13);
            sRes=sRes & "_cl_selD = document.createElement('input');_cl_selD.type = 'button';_cl_selD.value = 'Clear';_cl_selD.onclick=function(){this.parentNode.getElementsByTagName('input')[0].value=';_clHide(this);};o.appendChild(_cl_selD);" & chr(13);
            sRes=sRes & "_cl_selD = document.createElement('em');_cl_selD.innerHTML = '&nbsp;';o.appendChild(_cl_selD);" & chr(13);
            sRes=sRes & "_cl_selD = document.createElement('input');_cl_selD.type = 'button';_cl_selD.value = 'Cancel';_cl_selD.onclick=function(){_clHide(this)};o.appendChild(_cl_selD);_clHide(o.firstChild);" & chr(13);
            sRes=sRes & "}" & chr(13);
            sRes=sRes & "function _clHide(o){";
            sRes=sRes & "o=o.parentNode.getElementsByTagName('input')[0];" & chr(13);
            sRes=sRes & "if(o.style.display=='none'){var _clTemp='none';o.style.display='inline';}else{var _clTemp='inline';o.style.display='none'}" & chr(13);
            sRes=sRes & "var _cls = o.parentNode.getElementsByTagName('select');" & chr(13);
            sRes=sRes & "for(var _cl_i=0;_cl_i<_cls.length;_cl_i++){_cls[_cl_i].style.display=_clTemp;}" & chr(13);
            sRes=sRes & "_cls = o.parentNode.getElementsByTagName('input');" & chr(13);
            sRes=sRes & "for(var _cl_i=1;_cl_i<_cls.length;_cl_i++)_cls[_cl_i].style.display=_clTemp;" & chr(13);
            sRes=sRes & "}" & chr(13);
            sRes=sRes & "function GetIndex(arr,aValue){for(var _cl_i=0;_cl_i<arr.length;_cl_i++)if(arr[_cl_i]==aValue)return _cl_i;}" & chr(13);
            sRes=sRes & "function _cl_CDays(o,iMonth,iYear,selectedDay){" & chr(13);
            sRes=sRes & "if(o.length)o.length = 0;var _cl_days = _cl_DaysInMonth(iYear);for(var _cl_i=1;_cl_i<=_cl_days[GetIndex(_cl_month_name,iMonth)];_cl_i++){var _clOptNew = document.createElement('option');_clOptNew.text = _cl_i;_clOptNew.value = _cl_i;if(document.all)o.add(_clOptNew);else o.add(_clOptNew,null);if(_cl_i==selectedDay){o.options[_cl_i-1].selected=true;o.selectedIndex=_cl_i-1}}}" & chr(13);
            sRes=sRes & "function _cl_CMonth(o,iYear,selectedMonth){" & chr(13);
            sRes=sRes & "if(o.length)o.length = 0;for(var _cl_i=1;_cl_i<=12;_cl_i++){var _clOptNew = document.createElement('option');_clOptNew.text = _cl_month_name[_cl_i];_clOptNew.value = _cl_month_name[_cl_i];if(document.all)o.add(_clOptNew);else o.add(_clOptNew,null);if(_cl_month_name[_cl_i]==selectedMonth){o.options[_cl_i-1].selected=true;o.selectedIndex=_cl_i-1}}}" & chr(13);
            sRes=sRes & "function _cl_CYear(o,selectedYear){if(o.length)o.length = 0;for(var _cl_i=_cl_theyear-15;_cl_i<=_cl_theyear+15;_cl_i++){var _clOptNew = document.createElement('option');_clOptNew.text = _cl_i;_clOptNew.value = _cl_i;if(document.all)o.add(_clOptNew);else o.add(_clOptNew,null);if(_cl_i==selectedYear){o.options[_cl_i-_cl_theyear+15].selected=true;o.selectedIndex=_cl_i-_cl_theyear+15}}}" & chr(13);
            sRes=sRes & "function _cl_UpdateDays(o){var _cl_a = o.parentNode.getElementsByTagName('select');var _cl_selD = document.createElement('select');_cl_CDays(_cl_selD,o.options[o.selectedIndex].value,_cl_a[2].options[_cl_a[2].selectedIndex].value,_cl_a[0].options[_cl_a[0].selectedIndex].value);o.parentNode.replaceChild(_cl_selD,_cl_a[0]);}" & chr(13);
            sRes=sRes & "function _cl_UpdateMonth(o){var _cl_a = o.parentNode.getElementsByTagName('select');var _cl_selD = document.createElement('select');_cl_CDays(_cl_selD,_cl_a[1].options[_cl_a[1].selectedIndex].value,o.options[o.selectedIndex].value,_cl_a[0].options[_cl_a[0].selectedIndex].value);o.parentNode.replaceChild(_cl_selD,_cl_a[0]);}" & chr(13);
            sRes=sRes & "function SetDate(o){var _cl_a = o.parentNode.getElementsByTagName('select');o.parentNode.getElementsByTagName('input')[0].value = _cl_a[0].options[_cl_a[0].selectedIndex].value +' '+ _cl_a[1].options[_cl_a[1].selectedIndex].text +' '+_cl_a[2].options[_cl_a[2].selectedIndex].value}</script>" & chr(13);
            writeOutput(sRes);
            iCalender = 1;
        }
        if(ArrayLen(arguments) GT 1 AND NOT structKeyExists(form,aName))
            writeOutput('<span><input readonly="readonly" style="display:none" onclick="_clHide(this)" onkeydown="return false" type="text" name="' & aName & '" id="' & aName & '" value="' & Day(arguments[2]) & ' ' &             MonthAsString(Month(arguments[2])) & ' ' & year(arguments[2]) & '"></span><script type="text/javascript">CreateCalender(document.getElementById("' & aName & '").parentNode)</script>');
        else
            writeOutput('<span><input readonly="readonly" style="display:none" onclick="_clHide(this)" onkeydown="return false" type="text" name="' & aName & '" id="' & aName & '" value="' & htmlEditFormat(FormVal(aName)) & '"></span><script type="text/javascript">CreateCalender(document.getElementById("' & aName & '").parentNode)</script>');
    }

    function FormVal(aKey){
        if(structKeyExists(form, aKey))
            return Trim(form[aKey]);
        
        else
            return "";
        }

</cfscript>

<cfscript>DrawCalender("txtDOB");</cfscript>
<cfscript>
DrawCalender("txtDOB",Now());</cfscript>

All ColdFusion Tutorials By Author: Nick Chan
Download the EasyCFM.COM Browser Toolbar!