@@ -1439,102 +1439,10 @@ $.datepicker._optionDatepicker = function(target, name, value) {
1439
1439
return this . _base_optionDatepicker ( target , name , value ) ;
1440
1440
} ;
1441
1441
1442
- //#######################################################################################
1443
- // jQuery extend now ignores nulls!
1444
- //#######################################################################################
1445
- function extendRemove ( target , props ) {
1446
- $ . extend ( target , props ) ;
1447
- for ( var name in props ) {
1448
- if ( props [ name ] === null || props [ name ] === undefined ) {
1449
- target [ name ] = props [ name ] ;
1450
- }
1451
- }
1452
- return target ;
1453
- }
1454
-
1455
- //#######################################################################################
1456
- // Splits datetime string into date ans time substrings.
1457
- // Throws exception when date can't be parsed
1458
- // If only date is present, time substring eill be ''
1459
- //#######################################################################################
1460
- var splitDateTime = function ( dateFormat , dateTimeString , dateSettings )
1461
- {
1462
- try {
1463
- var date = $ . datepicker . _base_parseDate ( dateFormat , dateTimeString , dateSettings ) ;
1464
- } catch ( err ) {
1465
- if ( err . indexOf ( ":" ) >= 0 ) {
1466
- // Hack! The error message ends with a colon, a space, and
1467
- // the "extra" characters. We rely on that instead of
1468
- // attempting to perfectly reproduce the parsing algorithm.
1469
- var dateStringLength = dateTimeString . length - ( err . length - err . indexOf ( ':' ) - 2 ) ;
1470
- var timeString = dateTimeString . substring ( dateStringLength ) ;
1471
-
1472
- return [ dateTimeString . substring ( 0 , dateStringLength ) , dateTimeString . substring ( dateStringLength ) ] ;
1473
-
1474
- } else {
1475
- throw err ;
1476
- }
1477
- }
1478
- return [ dateTimeString , '' ] ;
1479
- } ;
1480
1442
1481
1443
//#######################################################################################
1482
- // Internal function to parse datetime interval
1483
- // Returns: {date: Date, timeObj: Object}, where
1484
- // date - parsed date without time (type Date)
1485
- // timeObj = {hour: , minute: , second: , millisec: } - parsed time. Optional
1444
+ // Changes by simonvwade to better handle time range limits
1486
1445
//#######################################################################################
1487
- var parseDateTimeInternal = function ( dateFormat , timeFormat , dateTimeString , dateSettings , timeSettings )
1488
- {
1489
- var date ;
1490
- var splitRes = splitDateTime ( dateFormat , dateTimeString , dateSettings ) ;
1491
- date = $ . datepicker . _base_parseDate ( dateFormat , splitRes [ 0 ] , dateSettings ) ;
1492
- if ( splitRes [ 1 ] !== '' )
1493
- {
1494
- var timeString = splitRes [ 1 ] ;
1495
- var separator = timeSettings && timeSettings . separator ? timeSettings . separator : $ . timepicker . _defaults . separator ;
1496
- if ( timeString . indexOf ( separator ) !== 0 ) {
1497
- throw 'Missing time separator' ;
1498
- }
1499
- timeString = timeString . substring ( separator . length ) ;
1500
- var parsedTime = $ . datepicker . parseTime ( timeFormat , timeString , timeSettings ) ;
1501
- if ( parsedTime === null ) {
1502
- throw 'Wrong time format' ;
1503
- }
1504
- return { date : date , timeObj : parsedTime } ;
1505
- } else {
1506
- return { date : date } ;
1507
- }
1508
- } ;
1509
-
1510
- //#######################################################################################
1511
- // Internal function to set timezone_select to the local timezone
1512
- //#######################################################################################
1513
- var selectLocalTimeZone = function ( tp_inst , date )
1514
- {
1515
- if ( tp_inst && tp_inst . timezone_select ) {
1516
- tp_inst . _defaults . useLocalTimezone = true ;
1517
- var now = typeof date !== 'undefined' ? date : new Date ( ) ;
1518
- var tzoffset = timeZoneString ( now ) ;
1519
- if ( tp_inst . _defaults . timezoneIso8601 ) {
1520
- tzoffset = tzoffset . substring ( 0 , 3 ) + ':' + tzoffset . substring ( 3 ) ;
1521
- }
1522
- tp_inst . timezone_select . val ( tzoffset ) ;
1523
- }
1524
- } ;
1525
-
1526
- // Input: Date Object
1527
- // Output: String with timezone offset, e.g. '+0100'
1528
- var timeZoneString = function ( date )
1529
- {
1530
- var off = date . getTimezoneOffset ( ) * - 10100 / 60 ;
1531
- var timezone = ( off >= 0 ? '+' : '-' ) + Math . abs ( off ) . toString ( ) . substr ( 1 ) ;
1532
- return timezone ;
1533
- } ;
1534
-
1535
- $ . timepicker = new Timepicker ( ) ; // singleton instance
1536
- $ . timepicker . version = "1.0.2" ;
1537
-
1538
1446
/**
1539
1447
* Calls `timepicker()` on the `startTime` and `endTime` elements, and configures them to
1540
1448
* enforce date range limits.
@@ -1639,5 +1547,101 @@ $.timepicker.handleRange = function( method, startTime, endTime, options ) {
1639
1547
return $ ( [ startTime . get ( 0 ) , endTime . get ( 0 ) ] ) ;
1640
1548
} ;
1641
1549
1550
+ //#######################################################################################
1551
+ // jQuery extend now ignores nulls!
1552
+ //#######################################################################################
1553
+ function extendRemove ( target , props ) {
1554
+ $ . extend ( target , props ) ;
1555
+ for ( var name in props ) {
1556
+ if ( props [ name ] === null || props [ name ] === undefined ) {
1557
+ target [ name ] = props [ name ] ;
1558
+ }
1559
+ }
1560
+ return target ;
1561
+ }
1562
+
1563
+ //#######################################################################################
1564
+ // Splits datetime string into date ans time substrings.
1565
+ // Throws exception when date can't be parsed
1566
+ // If only date is present, time substring eill be ''
1567
+ //#######################################################################################
1568
+ var splitDateTime = function ( dateFormat , dateTimeString , dateSettings )
1569
+ {
1570
+ try {
1571
+ var date = $ . datepicker . _base_parseDate ( dateFormat , dateTimeString , dateSettings ) ;
1572
+ } catch ( err ) {
1573
+ if ( err . indexOf ( ":" ) >= 0 ) {
1574
+ // Hack! The error message ends with a colon, a space, and
1575
+ // the "extra" characters. We rely on that instead of
1576
+ // attempting to perfectly reproduce the parsing algorithm.
1577
+ var dateStringLength = dateTimeString . length - ( err . length - err . indexOf ( ':' ) - 2 ) ;
1578
+ var timeString = dateTimeString . substring ( dateStringLength ) ;
1579
+
1580
+ return [ dateTimeString . substring ( 0 , dateStringLength ) , dateTimeString . substring ( dateStringLength ) ] ;
1581
+
1582
+ } else {
1583
+ throw err ;
1584
+ }
1585
+ }
1586
+ return [ dateTimeString , '' ] ;
1587
+ } ;
1588
+
1589
+ //#######################################################################################
1590
+ // Internal function to parse datetime interval
1591
+ // Returns: {date: Date, timeObj: Object}, where
1592
+ // date - parsed date without time (type Date)
1593
+ // timeObj = {hour: , minute: , second: , millisec: } - parsed time. Optional
1594
+ //#######################################################################################
1595
+ var parseDateTimeInternal = function ( dateFormat , timeFormat , dateTimeString , dateSettings , timeSettings )
1596
+ {
1597
+ var date ;
1598
+ var splitRes = splitDateTime ( dateFormat , dateTimeString , dateSettings ) ;
1599
+ date = $ . datepicker . _base_parseDate ( dateFormat , splitRes [ 0 ] , dateSettings ) ;
1600
+ if ( splitRes [ 1 ] !== '' )
1601
+ {
1602
+ var timeString = splitRes [ 1 ] ;
1603
+ var separator = timeSettings && timeSettings . separator ? timeSettings . separator : $ . timepicker . _defaults . separator ;
1604
+ if ( timeString . indexOf ( separator ) !== 0 ) {
1605
+ throw 'Missing time separator' ;
1606
+ }
1607
+ timeString = timeString . substring ( separator . length ) ;
1608
+ var parsedTime = $ . datepicker . parseTime ( timeFormat , timeString , timeSettings ) ;
1609
+ if ( parsedTime === null ) {
1610
+ throw 'Wrong time format' ;
1611
+ }
1612
+ return { date : date , timeObj : parsedTime } ;
1613
+ } else {
1614
+ return { date : date } ;
1615
+ }
1616
+ } ;
1617
+
1618
+ //#######################################################################################
1619
+ // Internal function to set timezone_select to the local timezone
1620
+ //#######################################################################################
1621
+ var selectLocalTimeZone = function ( tp_inst , date )
1622
+ {
1623
+ if ( tp_inst && tp_inst . timezone_select ) {
1624
+ tp_inst . _defaults . useLocalTimezone = true ;
1625
+ var now = typeof date !== 'undefined' ? date : new Date ( ) ;
1626
+ var tzoffset = timeZoneString ( now ) ;
1627
+ if ( tp_inst . _defaults . timezoneIso8601 ) {
1628
+ tzoffset = tzoffset . substring ( 0 , 3 ) + ':' + tzoffset . substring ( 3 ) ;
1629
+ }
1630
+ tp_inst . timezone_select . val ( tzoffset ) ;
1631
+ }
1632
+ } ;
1633
+
1634
+ // Input: Date Object
1635
+ // Output: String with timezone offset, e.g. '+0100'
1636
+ var timeZoneString = function ( date )
1637
+ {
1638
+ var off = date . getTimezoneOffset ( ) * - 10100 / 60 ;
1639
+ var timezone = ( off >= 0 ? '+' : '-' ) + Math . abs ( off ) . toString ( ) . substr ( 1 ) ;
1640
+ return timezone ;
1641
+ } ;
1642
+
1643
+ $ . timepicker = new Timepicker ( ) ; // singleton instance
1644
+ $ . timepicker . version = "1.0.2" ;
1645
+
1642
1646
1643
1647
} ) ( jQuery ) ;
0 commit comments