Вход Регистрация
Файл: static/plugins/base/js/date_field.js
Строк: 86
<?php
var DateField = function( $name )
{
    var 
self = this;

    var 
$cont = $("div[class='" + $name + "']");

    var 
$hidden = $cont.find("input[name='" + $name + "']");

    
this.day = $cont.find("select[name='day_" + $name + "']");
    
this.month = $cont.find("select[name='month_" + $name + "']");
    
this.year = $cont.find("select[name='year_" + $name + "']");

    
this.dayFirstOption = self.day.find('option[value='']');

    
this.day.change( function()
    {
        
self.updateValue();
    });

    
this.year.change( function()
    {
        
self.changeMonth();
    });

    
this.month.change( function()
    {
        
self.changeMonth();
    });

    
this.changeMonth = function()
    {
        if( 
self.month.val() != ''  & self.year.val() != ''  )
        {
            var 
$dayVal = 0;

            if ( 
self.day.val() != '');
            {
                
$dayVal = self.day.val();
            }

            var 
$monthVal = self.month.val(); // parse date into variables
            
var $yearVal = self.year.val();

            if ( 
$monthVal < 1 )
            {
                
self.month.val(1);
            }

            if( 
$monthVal > 12 )
            {
                
self.month.val(12);
            }

            if ( 
$monthVal==4 || $monthVal==6 || $monthVal==9 || $monthVal==11 )
            {
                
self.updateDays($dayVal, 30);
            }
            else if ( 
$monthVal == 2 )
            {
                var 
isleap = ($yearVal % 4 == 0 && ($yearVal % 100 != 0 || $yearVal % 400 == 0));

                if ( 
isleap )
                {
                    
self.updateDays($dayVal, 29);
                }
                else
                {
                    
self.updateDays($dayVal, 28);
                }
            }
            else
            {
                
self.updateDays($dayVal, 31);
            }


       }
       
self.updateValue();
    }

    
this.updateDays = function( $dayValue, $daysCount )
    {
        if( 
self.day.find('option[value!=""]').size() == $daysCount )
        {
            return;
        }

        
self.day.find('option[value!='']').remove();

        if( !
$dayValue )
        {
            
$dayValue = '';
        }
        else if ( 
$dayValue > $daysCount )
        {
            
$dayValue = $daysCount;
        }

        for ( var 
i=1; i<= $daysCount; i++ )
        {
            var 
$option = this.dayFirstOption.clone();

            
$option.text(i);
            
$option.val(i);

            if ( 
$dayValue == i )
            {
                
$option.attr('selected', 'selected');
            }

            
self.day.append($option);
        }
    }

    
this.updateValue = function()
    {
        if( 
self.day.val() != '' && self.month.val() != ''  && self.year.val() != ''  )
        {
            
$hidden.val( self.year.val() + '/' + self.month.val() + '/' + self.day.val() );
        }
        else
        {
            
$hidden.val('');
        }
    }
}
?>
Онлайн: 0
Реклама