$.datepicker.setDefaults({ showOn: 'both', buttonImageOnly: true,
    buttonImage: '/banner/calender.gif', buttonText: 'Calendar',
    dateFormat: 'yy-mm-dd', yearRange: '-00:+01'
});

jQuery.fn.clientDatepicker = function(setDate, maxYears) {
    var datetime = $(this);
    var id = datetime.attr("name");

    // hide datetime input
    // datetime.hide();

    // days select box
    var days = $('<select></select>').attr('name', id + '-day');

    for (i = 1; i <= 31; i++) {
        days.append($('<option></option>').attr('value', i).html(i));
    }

    datetime.before(days);

    // months select box
    var months = $('<select></select>').attr('name', id + '-month');

    var monthArray = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];

    for (i = 1; i <= 31; i++) {
        months.append($('<option></option>').attr('value', i).html(monthArray[i - 1]));
    }

    datetime.before(months);

    // year select box
    var years = $('<select></select>').attr('name', id + '-year');
    var currentYear = Date.today().getYear();

    if (!$.browser.msie) currentYear += 1900;

    for (i = 0; i < maxYears; i++) {
        years.append($('<option></option>').attr('value', currentYear + i).html(currentYear + i));
    }

    datetime.before(years);

    // add popup calendar picker
    datetime.datepicker();

    // on calendar change, update select boxes
    datetime.change(function() {
        var date = new Date.parse($(this).val());

        days.val(date.toString('d'));
        months.val(date.toString('M'));
        years.val(date.toString('yyyy'));
    });

    // on select box change, update datetime
    var padDigits = function(n, totalDigits) {
        n = n.toString();
        var pd = '';
        if (totalDigits > n.length) {
            for (i = 0; i < (totalDigits - n.length); i++) {
                pd += '0';
            }
        }
        return pd + n.toString();
    }

    var updateDatetime = function() {
        datetime.val(years.val() + '-' + padDigits(months.val(), 2) + '-' + padDigits(days.val(), 2));
    }

    days.change(updateDatetime);
    months.change(updateDatetime);
    years.change(updateDatetime);

    // set default date
    datetime.val(setDate.toString('yyyy-MM-dd'));
    datetime.trigger("change");
};

jQuery.fn.clientTabs = function() {
    var tabs = $(this);
    // onClick for all child li items, bind tab event
    tabs.find("li").click(function() {
        var item = $(this);
        // click li only one to have class selected
        tabs.find("li").removeClass("selected");
        $(this).addClass("selected");
        // hide each panel based on href value of child anchors
        jQuery.each(tabs.find("li a"), function() {
            $($(this).attr("href")).hide();
        });
        // show current anchor only
        $(item.find("a").attr("href")).show();
    });
};
