Version 0.1.0
There are a lot of date pickers that use a calendar approach, but this plugin attempts to keep the process as simple and minimal as possible by letting the user edit the date in line.
Once hovered over a date unit, a user can type the number they want or use the scroll wheel to quickly change the value.
        Pressing tab, shift+tab, or left/right arrow keys will navigate between the different units. Hitting esc will reset the value (while editing and before picker is saved)
    
new DatePicker({
    appendTo: '#demo1',
    format:'m/d/y'
})
        
    
    
new DatePicker({
    appendTo: '#demo2',
    format:'m-d-y'
})
        
    
    
new DatePicker({
    appendTo: '#demo3',
    format:'m,d y',
    m: {format: 'short'}
})
        
    
    
new DatePicker({
    appendTo: '#demo4',
    format:'my',
    m: {format: 'long'},
    val: new Date()
})
        
    
    
new DatePicker({
    appendTo: '#demo5',
    format:'y',
    val: new Date(),
    valFormat: 'YYYY',
    onSave: function(dp, val){
        alert(val)
    }
})
        
    
    
defaultOpts: {
    appendTo: null,
    val: '',
    format: 'y-m-d',
    valFormat: 'YYYY-MM-DD',
    className: '',
    deltaThreshold: 70, // how much scrolling is needed to change values
    typeDelay: 340, // how long between keystrokes before using value
    navLink: true, // when navigating units and reaching the end, will jump to next date picker if right next
    saveOnBlur: true,
    onSave: null,
    onBlur: null,
    
    // options for each unit
    y: {
        placeholder: 'yyyy'
    }, 
    m: {
        format: '', // short, long, fn()
        placeholder: 'mm'
    },
    d: {
        format: '', // fn()
        placeholder: 'dd'
    }
}
    
    valValue of the date picker upon initialization. This can be a Date() object or a date string.
valFormatThe format of the date picker value when using the .value() method. Refer to the moment.js docs for supported sytax
saveOnBlur:trueWhen the date picker loses focus, it will determine if the value has changed since the last time a "save" action was triggered and if so, will call onSave
onSave: function(dp, val){}Triggered when the date picker has changed and lost focus (only when saveOnBlur is true)
onBlur: function(dp, val){}This could be used to test the value first and manually save or reset based on applicatoin needs. To do that, turn saveOnBlur to false, then call dp.save() or db.reset().
y:{}, m:{}, d:{}These are options for each unit
[ymd].placeholderThis is the text displayed when the unit does not have a value
[ymd].formatHow the unit is displayed can be overidden with a custom function. Month also has two predefined presets short and long. Year does not support format.
.save()Removes the "unsaved" state and sets the current value as the value.
.reset()Puts the date back to the last time it was saved (if never saved, it will revert to the original init value). This can also be triggered by pressing esc
.value()Gets the current value of the date picker (regardless of the "unsaved" state)
.appendTo(el)Renders and appends the date picker to the element. el can be a string, native element or jQuery object. This isn't needed if you specify an appendTo: option upon init.
.editingThis class is applied when ever the date picker is being edited
.unsavedThis class can be found when the date picker value has changed but not been "saved"
Backbone.js (and its dependencies: underscore, jquery)
Moment.js - date parsing and manipulation
        - add ability to scroll a unit and only change that unit (right now, if scrolling from Dec to Jan, the year will change)
    	- add support for time?
    	- method for "setting" the date after initialization
    	- add date range limiting (min and/or max)
    	- add option for turning scroll feature off?
    
MIT © Kevin Jantzer