function DatepickerField(control) {
    var s = $(control).find('.mainInput');
    s.datepicker({
        showOn: 'button',
        buttonImage: AbsoluteBaseUrl + 'scripts/jqueryui/themes/cupertino/images/calendar.gif',
        buttonImageOnly: true,
        onSelect: function(dateText, inst) {
            control.refreshValue();
        }
    });

    $(control).find('.mainInput').change(function(){
        control.refreshValue();
        var v = control.getValue();
        if(v != null){
            v = v.split('-');
            control.setDate(v[0], v[1], v[2]);
        }
    });

    $(control).find('#DatepickerFieldTime').change(function(){
        control.refreshValue();
    });

    control.setDate = function(anio, mes, dia) {
        valueori = Date.parse(anio+'/'+mes+'/'+dia);
        var valuetoday = Date.parse(Date());
        valuetoday = parseInt(valuetoday/1000/60/60/24);
        valueori = parseInt(valueori/1000/60/60/24);
        var dias = valueori-valuetoday;
        s.datepicker('setDate', '+'+dias);
    }

    var value = control.getOriginalValue();    
    s.datepicker('option', 'dateFormat', 'dd/mm/yy');
    var i18n = $(control).find('#i18n').val();
    s.datepicker('option', $.extend({showMonthAfterYear: false}/*,$.datepicker.regional[i18n]*/) );
    if (value != null) {        
        var valueori = value.split(' ');
        valueori = valueori[0].split('-');
        if(valueori[0]>0){
            control.setDate(valueori[0], valueori[1], valueori[2]);
        }
    }

    control.redrawValue = function(value) {
        if(value == null) {
            $(control).find('.mainInput').val('');
            $(control).find('#DatepickerFieldTime').val('00:00');
        } else {
            value = value.split(' ');
            v = value[0].split('-');
            control.setDate(v[0], v[1], v[2]);
            if (value.length > 1) {
                var t = value[1].split(':');
                $(control).find('#DatepickerFieldTime').val(t[0] + ':' + t[1]);
            }
        }
    }

    control.refreshValue = function() {
        input = $(control).find('.mainInput');
        var value = input.datepicker('getDate');
        if (value != null) {
            var year = value.getFullYear();
            var month = value.getMonth() + 1;
            if (month < 10)
                month = '0' + month;
            var date = value.getDate();
            if (date < 10)
                date = '0' + date;
            value = year + '-' + month + '-' + date;
         }
       
        var time = $(control).find('#DatepickerFieldTime').val();
        if(time != null){
            var time_arr = time.split(':');

            var hour = 0;
            var min = 0;
            var sec = 0;

            if(time_arr.length > 0 && !isNaN(time_arr[0]) && time_arr[0] != ''){
                hour = parseInt(time_arr[0],10);// % 24;
                if(time_arr.length > 1 && !isNaN(time_arr[1]) && time_arr[1] != ''){
                    min = parseInt(time_arr[1],10);// % 60;
                    if(time_arr.length > 2 && !isNaN(time_arr[2]) && time_arr[2] != ''){
                        sec = parseInt(time_arr[2],10);
                        min = min + parseInt(sec / 60,10);
                        sec = sec % 60;
                    }
                    hour = hour + parseInt(min / 60,10);
                    min = min % 60;
                }else if(!isNaN(time_arr[0]) && time_arr[0] != ''){
                    min = parseInt(time_arr[0],10);
                    hour = parseInt(min / 60,10);
                    min = parseInt(min % 60,10);
                }
                hour = hour % 24;
            }

            if(hour < 10)
                hour = '0' + hour;
            if(min < 10)
                min = '0' + min;
            if(sec < 10)
                sec = '0' + sec;

            control.setValue(value + ' ' + hour + ':' + min + ':' + sec);
        }else{
            control.setValue(value);
        }
    };
}

$(document).ready(function() {
    $('.FieldControl.DatepickerField').each(function(){
        DatepickerField(this);
    });
});


