@@ -1439,102 +1439,10 @@ $.datepicker._optionDatepicker = function(target, name, value) {
14391439 return this . _base_optionDatepicker ( target , name , value ) ;
14401440} ;
14411441
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- } ;
14801442
14811443//#######################################################################################
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
14861445//#######################################################################################
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-
15381446/**
15391447 * Calls `timepicker()` on the `startTime` and `endTime` elements, and configures them to
15401448 * enforce date range limits.
@@ -1639,5 +1547,101 @@ $.timepicker.handleRange = function( method, startTime, endTime, options ) {
16391547 return $ ( [ startTime . get ( 0 ) , endTime . get ( 0 ) ] ) ;
16401548} ;
16411549
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+
16421646
16431647} ) ( jQuery ) ;
0 commit comments