
    function setupDatePicker(oUserSetting) {

        var oDefaultSetting = {
            'sStartDateSelector' : 'input[name="Form[start-date]"]',
            'sEndDateSelector'   : 'input[name="Form[end-date]"]',
            'iMinDateRange'      : 1
        };
        var oSetting = $.extend({}, oDefaultSetting, oUserSetting);

        window['oDatepicker'] = oSetting;
        if (window['oDatepicker']['sStartDateSelector']) {
            $(window['oDatepicker']['sStartDateSelector']).each(function () {
                $(this).attr('id', $(this).attr('name'));
                Calendar.setup({
                    inputField  : $(this).attr('id'),
                    ifFormat    : "%d-%m-%Y",
                    singleClick : true,
                    disableFunc : greaterThanToday,
                    onUpdate    : checkDateRange,
                    cache       : true
                });
                $(this).attr('readonly', 'readonly');
            });
        }
        if (window['oDatepicker']['sEndDateSelector']) {
            $(window['oDatepicker']['sEndDateSelector']).each(function () {
                $(this).attr('id', $(this).attr('name'));
                Calendar.setup({
                    inputField  : $(this).attr('id'),
                    ifFormat    : "%d-%m-%Y",
                    singleClick : true,
                    disableFunc : greaterThanStartDate,
                    onUpdate    : checkDateRange,
                    cache       : true
                });
                $(this).attr('readonly', 'readonly');
            });
        }
    }

    function greaterThanToday(oDate) {
        var sSelected = String(oDate.getFullYear() + '' + ((oDate.getMonth() < 10) ? '0' : '') + oDate.getMonth() + '' + ((oDate.getDate() < 10) ? '0' : '') + oDate.getDate()).toString();
        var oToday = new Date();
        var sToday = String(oToday.getFullYear() + '' + ((oToday.getMonth() < 10) ? '0' : '') + oToday.getMonth() + '' + ((oToday.getDate() < 10) ? '0' : '') + oToday.getDate()).toString();
        if (sToday > sSelected) {
            return true;
        } else {
            return false;
        }
    }

    function greaterThanStartDate(oDate) {
        var sStartDate = $(window['oDatepicker']['sStartDateSelector']).eq(0).val() || '';
        if (sStartDate) {
            var aStartDate = sStartDate.split('-');
            var oStartDate = new Date();
            oStartDate.setFullYear(aStartDate[2]);
            oStartDate.setMonth(parseInt(parseInt(aStartDate[1]) - 1), parseInt(parseInt(aStartDate[0]) + parseInt(window['oDatepicker']['iMinDateRange'])));
            sStartDate = String(oStartDate.getFullYear() + '' + ((oStartDate.getMonth() < 10) ? '0' : '') + oStartDate.getMonth() + '' + ((oStartDate.getDate() < 10) ? '0' : '') + oStartDate.getDate()).toString();
            var sSelected = String(oDate.getFullYear() + '' + ((oDate.getMonth() < 10) ? '0' : '') + oDate.getMonth() + '' + ((oDate.getDate() < 10) ? '0' : '') + oDate.getDate()).toString();
            if (sStartDate > sSelected) {
                return true;
            } else {
                return false;
            }
        } else {
            return greaterThanToday(oDate);
        }
    }

    function checkDateRange(oCalendar) {
        var sStartDate = $(window['oDatepicker']['sStartDateSelector']).eq(0).val() || '';
        var sEndDate = $(window['oDatepicker']['sEndDateSelector']).eq(0).val() || '';
        if (sStartDate && sEndDate) {
            var aStartDate = sStartDate.split('-');
            var oStartDate = new Date();
            oStartDate.setHours(0,0,0,0);
            oStartDate.setFullYear(aStartDate[2]);
            oStartDate.setMonth(parseInt(aStartDate[1] - 1), parseInt(aStartDate[0]));
            var aEndDate = sEndDate.split('-');
            var oEndDate = new Date();
            oEndDate.setHours(0,0,0,0);
            oEndDate.setFullYear(aEndDate[2]);
            oEndDate.setMonth(parseInt(aEndDate[1] - 1), parseInt(aEndDate[0] - parseInt(window['oDatepicker']['iMinDateRange'])));
            if (oStartDate > oEndDate) {
                $(window['oDatepicker']['sEndDateSelector']).each(function () {
                    $(this).val('');
                });
            }
        }
        if (! sStartDate && sEndDate) {
            alert('Invalid date range');
            $(window['oDatepicker']['sEndDateSelector']).each(function () {
                $(this).val('');
            });
            $(window['oDatepicker']['sStartDateSelector']).each(function () {
                $(this).val('').focus();
            });
        }
    }