• 手机端选择时间插件


    <!--时间选择css+js-->
     <link href="js/datatime/mobiscroll.css" rel="stylesheet" type="text/css">
    
    <link href="js/datatime/mobiscroll_002.css" rel="stylesheet" type="text/css">
     <link href="js/datatime/mobiscroll_003.css" rel="stylesheet" type="text/css">
     <script src="js/datatime/mobiscroll_002.js" type="text/javascript"></script>
     <script src="js/datatime/mobiscroll_004.js" type="text/javascript"></script>
    
    <script src="js/datatime/mobiscroll.js" type="text/javascript"></script> 
    <script src="js/datatime/mobiscroll_003.js" type="text/javascript"></script> 
    <script src="js/datatime/mobiscroll_005.js" type="text/javascript"></script>

    .dw-trans .dw-persp {
        overflow: hidden;
        perspective: 1000;
        -webkit-perspective: 1000;
        -moz-perspective: 1000;
    }
    .dw-trans .dwwb {
        -webkit-backface-visibility: hidden;
    }
    .dw-in {
        animation-timing-function: ease-out;
        animation-duration: 350ms;
        -webkit-animation-timing-function: ease-out;
        -webkit-animation-duration: 350ms;
        -moz-animation-timing-function: ease-out;
        -moz-animation-duration: 350ms;
    }
    .dw-out {
        animation-timing-function: ease-in;
        animation-duration: 350ms;
        -webkit-animation-timing-function: ease-in;
        -webkit-animation-duration: 350ms;
        -moz-animation-timing-function: ease-in;
        -moz-animation-duration: 350ms;
    }
    .dw-flip,
    .dw-swing,
    .dw-slidehorizontal,
    .dw-slidevertical,
    .dw-slidedown,
    .dw-slideup,
    .dw-fade {
        backface-visibility: hidden;
        transform: translateX(0);
        -webkit-backface-visibility: hidden;
        -webkit-transform: translateX(0);
        -moz-backface-visibility: hidden;
        -moz-transform: translateX(0);
    }
    .dw-swing,
    .dw-slidehorizontal,
    .dw-slidevertical,
    .dw-slidedown,
    .dw-slideup,
    .dw-fade {
        transform-origin: 0 0;
        -webkit-transform-origin: 0 0;
        -moz-transform-origin: 0 0;
    }
    .dw-flip,
    .dw-pop {
        transform-origin: 50% 50%;
        -webkit-transform-origin: 50% 50%;
        -moz-transform-origin: 50% 50%;
    }
    .dw-pop.dw-in {
        opacity: 1;
        transform: scale(1);
        animation-name: dw-p-in;
        -webkit-animation-name: dw-p-in;
        -webkit-transform: scale(1);
        -moz-animation-name: dw-p-in;
        -moz-transform: scale(1);
    }
    .dw-pop.dw-out {
        opacity: 0;
        animation-name: dw-p-out;
        -webkit-animation-name: dw-p-out;
        -moz-animation-name: dw-p-out;
    }
    .dw-flip.dw-in {
        opacity: 1;
        transform: scale(1);
        animation-name: dw-fl-in;
        -webkit-animation-name: dw-fl-in;
        -webkit-transform: scale(1);
        -moz-animation-name: dw-fl-in;
        -moz-transform: scale(1);
    }
    .dw-flip.dw-out {
        opacity: 0;
        animation-name: dw-fl-out;
        -webkit-animation-name: dw-fl-out;
        -moz-animation-name: dw-fl-out;
    }
    .dw-swing.dw-in {
        opacity: 1;
        transform: scale(1);
        animation-name: dw-sw-in;
        -webkit-animation-name: dw-sw-in;
        -webkit-transform: scale(1);
        -moz-animation-name: dw-sw-in;
        -moz-transform: scale(1);
    }
    .dw-swing.dw-out {
        opacity: 0;
        animation-name: dw-sw-out;
        -webkit-animation-name: dw-sw-out;
        -moz-animation-name: dw-sw-out;
    }
    .dw-slidehorizontal.dw-in {
        opacity: 1;
        transform: scale(1);
        animation-name: dw-sh-in;
        -webkit-animation-name: dw-sh-in;
        -webkit-transform: scale(1);
        -moz-animation-name: dw-sh-in;
        -moz-transform: scale(1);
    }
    .dw-slidehorizontal.dw-out {
        opacity: 0;
        animation-name: dw-sh-out;
        -webkit-animation-name: dw-sh-out;
        -moz-animation-name: dw-sh-out;
    }
    .dw-slidevertical.dw-in {
        opacity: 1;
        animation-name: dw-dw-sv-in;
        transform: scale(1);
        -webkit-animation-name: dw-dw-sv-in;
        -webkit-transform: scale(1);
        -moz-animation-name: dw-dw-sv-in;
        -moz-transform: scale(1);
    }
    .dw-slidevertical.dw-out {
        opacity: 0;
        animation-name: dw-sv-out;
        -webkit-animation-name: dw-sv-out;
        -moz-animation-name: dw-sv-out;
    }
    .dw-slidedown.dw-in {
        animation-name: dw-sd-in;
        transform: scale(1);
        -webkit-animation-name: dw-sd-in;
        -webkit-transform: scale(1);
        -moz-animation-name: dw-sd-in;
        -moz-transform: scale(1);
    }
    .dw-slidedown.dw-out {
        animation-name: dw-sd-out;
        -webkit-animation-name: dw-sd-out;
        -moz-animation-name: dw-sd-out;
    }
    .dw-slideup.dw-in {
        transform: scale(1);
        animation-name: dw-su-in;
        -webkit-animation-name: dw-su-in;
        -webkit-transform: scale(1);
        -moz-animation-name: dw-su-in;
        -moz-transform: scale(1);
    }
    .dw-slideup.dw-out {
        animation-name: dw-su-out;
        -webkit-animation-name: dw-su-out;
        -moz-animation-name: dw-su-out;
    }
    .dw-fade.dw-in {
        opacity: 1;
        animation-name: dw-f-in;
        -webkit-animation-name: dw-f-in;
        -moz-animation-name: dw-f-in;
    }
    .dw-fade.dw-out {
        opacity: 0;
        animation-name: dw-f-out;
        -webkit-animation-name: dw-f-out;
        -moz-animation-name: dw-f-out;
    }
    /* Fade in */
    @keyframes dw-f-in {
        from {
            opacity: 0;
        }
        to {
            opacity: 1;
        }
    }
    @-webkit-keyframes dw-f-in {
        from {
            opacity: 0;
        }
        to {
            opacity: 1;
        }
    }
    @-moz-keyframes dw-f-in {
        from {
            opacity: 0;
        }
        to {
            opacity: 1;
        }
    }
    /* Fade out */
    @keyframes dw-f-out {
        from {
            opacity: 1;
        }
        to {
            opacity: 0;
        }
    }
    @-webkit-keyframes dw-f-out {
        from {
            opacity: 1;
        }
        to {
            opacity: 0;
        }
    }
    @-moz-keyframes dw-f-out {
        from {
            opacity: 1;
        }
        to {
            opacity: 0;
        }
    }
    /* Pop in */
    @keyframes dw-p-in {
        from {
            opacity: 0;
            transform: scale(0.8);
        }
        to {
            opacity: 1;
            transform: scale(1);
        }
    }
    @-webkit-keyframes dw-p-in {
        from {
            opacity: 0;
            -webkit-transform: scale(0.8);
        }
        to {
            opacity: 1;
            -webkit-transform: scale(1);
        }
    }
    @-moz-keyframes dw-p-in {
        from {
            opacity: 0;
            -moz-transform: scale(0.8);
        }
        to {
            opacity: 1;
            -moz-transform: scale(1);
        }
    }
    /* Pop out */
    @keyframes dw-p-out {
        from {
            opacity: 1;
            transform: scale(1);
        }
        to {
            opacity: 0;
            transform: scale(0.8);
        }
    }
    @-webkit-keyframes dw-p-out {
        from {
            opacity: 1;
            -webkit-transform: scale(1);
        }
        to {
            opacity: 0;
            -webkit-transform: scale(0.8);
        }
    }
    @-moz-keyframes dw-p-out {
        from {
            opacity: 1;
            -moz-transform: scale(1);
        }
        to {
            opacity: 0;
            -moz-transform: scale(0.8);
        }
    }
    /* Flip in */
    @keyframes dw-fl-in {
        from {
            opacity: 0;
            transform: rotateY(90deg);
        }
        to {
            opacity: 1;
            transform: rotateY(0);
        }
    }
    @-webkit-keyframes dw-fl-in {
        from {
            opacity: 0;
            -webkit-transform: rotateY(90deg);
        }
        to {
            opacity: 1;
            -webkit-transform: rotateY(0);
        }
    }
    @-moz-keyframes dw-fl-in {
        from {
            opacity: 0;
            -moz-transform: rotateY(90deg);
        }
        to {
            opacity: 1;
            -moz-transform: rotateY(0);
        }
    }
    /* Flip out */
    @keyframes dw-fl-out {
        from {
            opacity: 1;
            transform: rotateY(0deg);
        }
        to {
            opacity: 0;
            transform: rotateY(-90deg);
        }
    }
    @-webkit-keyframes dw-fl-out {
        from {
            opacity: 1;
            -webkit-transform: rotateY(0deg);
        }
        to {
            opacity: 0;
            -webkit-transform: rotateY(-90deg);
        }
    }
    @-moz-keyframes dw-fl-out {
        from {
            opacity: 1;
            -moz-transform: rotateY(0deg);
        }
        to {
            opacity: 0;
            -moz-transform: rotateY(-90deg);
        }
    }
    /* Swing in */
    @keyframes dw-sw-in {
        from {
            opacity: 0;
            transform: rotateY(-90deg);
        }
        to {
            opacity: 1;
            transform: rotateY(0deg);
        }
    }
    @-webkit-keyframes dw-sw-in {
        from {
            opacity: 0;
            -webkit-transform: rotateY(-90deg);
        }
        to {
            opacity: 1;
            -webkit-transform: rotateY(0deg);
        }
    }
    @-moz-keyframes dw-sw-in {
        from {
            opacity: 0;
            -moz-transform: rotateY(-90deg);
        }
        to {
            opacity: 1;
            -moz-transform: rotateY(0deg);
        }
    }
    /* Swing out */
    @keyframes dw-sw-out {
        from {
            opacity: 1;
            transform: rotateY(0deg);
        }
        to {
            opacity: 0;
            transform: rotateY(-90deg);
        }
    }
    @-webkit-keyframes dw-sw-out {
        from {
            opacity: 1;
            -webkit-transform: rotateY(0deg);
        }
        to {
            opacity: 0;
            -webkit-transform: rotateY(-90deg);
        }
    }
    @-moz-keyframes dw-sw-out {
        from {
            opacity: 1;
            -moz-transform: rotateY(0deg);
        }
        to {
            opacity: 0;
            -moz-transform: rotateY(-90deg);
        }
    }
    /* Slide horizontal in */
    @keyframes dw-sh-in {
        from {
            opacity: 0;
            transform: translateX(-100%);
        }
        to {
            opacity: 1;
            transform: translateX(0);
        }
    }
    @-webkit-keyframes dw-sh-in {
        from {
            opacity: 0;
            -webkit-transform: translateX(-100%);
        }
        to {
            opacity: 1;
            -webkit-transform: translateX(0);
        }
    }
    @-moz-keyframes dw-sh-in {
        from {
            opacity: 0;
            -moz-transform: translateX(-100%);
        }
        to {
            opacity: 1;
            -moz-transform: translateX(0);
        }
    }
    /* Slide horizontal out */
    @keyframes dw-sh-out {
        from {
            opacity: 1;
            transform: translateX(0);
        }
        to {
            opacity: 0;
            transform: translateX(100%);
        }
    }
    @-webkit-keyframes dw-sh-out {
        from {
            opacity: 1;
            -webkit-transform: translateX(0);
        }
        to {
            opacity: 0;
            -webkit-transform: translateX(100%);
        }
    }
    @-moz-keyframes dw-sh-out {
        from {
            opacity: 1;
            -moz-transform: translateX(0);
        }
        to {
            opacity: 0;
            -moz-transform: translateX(100%);
        }
    }
    /* Slide vertical in */
    @keyframes dw-dw-sv-in {
        from {
            opacity: 0;
            transform: translateY(-100%);
        }
        to {
            opacity: 1;
            transform: translateY(0);
        }
    }
    @-webkit-keyframes dw-dw-sv-in {
        from {
            opacity: 0;
            -webkit-transform: translateY(-100%);
        }
        to {
            opacity: 1;
            -webkit-transform: translateY(0);
        }
    }
    @-moz-keyframes dw-dw-sv-in {
        from {
            opacity: 0;
            -moz-transform: translateY(-100%);
        }
        to {
            opacity: 1;
            -moz-transform: translateY(0);
        }
    }
    /* Slide vertical out */
    @keyframes dw-sv-out {
        from {
            opacity: 1;
            transform: translateY(0);
        }
        to {
            opacity: 0;
            transform: translateY(100%);
        }
    }
    @-webkit-keyframes dw-sv-out {
        from {
            opacity: 1;
            -webkit-transform: translateY(0);
        }
        to {
            opacity: 0;
            -webkit-transform: translateY(100%);
        }
    }
    @-moz-keyframes dw-sv-out {
        from {
            opacity: 1;
            -moz-transform: translateY(0);
        }
        to {
            opacity: 0;
            -moz-transform: translateY(100%);
        }
    }
    /* Slide Down In */
    @keyframes dw-sd-in {
        from {
            transform: translateY(-100%);
        }
        to {
            transform: translateY(0);
        }
    }
    @-webkit-keyframes dw-sd-in {
        from {
            opacity: 1;
            -webkit-transform: translateY(-100%);
        }
        to {
            opacity: 1;
            -webkit-transform: translateY(0);
        }
    }
    @-moz-keyframes dw-sd-in {
        from {
            -moz-transform: translateY(-100%);
        }
        to {
            -moz-transform: translateY(0);
        }
    }
    /* Slide down out */
    @keyframes dw-sd-out {
        from {
            transform: translateY(0);
        }
        to {
            transform: translateY(-100%);
        }
    }
    @-webkit-keyframes dw-sd-out {
        from {
            opacity: 1;
            -webkit-transform: translateY(0);
        }
        to {
            opacity: 1;
            -webkit-transform: translateY(-100%);
        }
    }
    @-moz-keyframes dw-sd-out {
        from {
            -moz-transform: translateY(0);
        }
        to {
            -moz-transform: translateY(-100%);
        }
    }
    /* Slide Up In */
    @keyframes dw-su-in {
        from {
            transform: translateY(100%);
        }
        to {
            transform: translateY(0);
        }
    }
    @-webkit-keyframes dw-su-in {
        from {
            opacity: 1;
            -webkit-transform: translateY(100%);
        }
        to {
            opacity: 1;
            -webkit-transform: translateY(0);
        }
    }
    @-moz-keyframes dw-su-in {
        from {
            -moz-transform: translateY(100%);
        }
        to {
            -moz-transform: translateY(0);
        }
    }
    /* Slide up out */
    @keyframes dw-su-out {
        from {
            transform: translateY(0);
        }
        to {
            transform: translateY(100%);
        }
    }
    @-webkit-keyframes dw-su-out {
        from {
            opacity: 1;
            -webkit-transform: translateY(0);
        }
        to {
            opacity: 1;
            -webkit-transform: translateY(100%);
        }
    }
    @-moz-keyframes dw-su-out {
        from {
            -moz-transform: translateY(0);
        }
        to {
            -moz-transform: translateY(100%);
        }
    }
    mobiscroll.css
    /* Datewheel overlay */
    .dw {
        position: absolute;
        top: 5%;
        left: 0;
        z-index: 1001;
        color: #000;
        font-family: arial, verdana, sans-serif;
        font-size: 12px;
        text-shadow: none;
        box-sizing: border-box;
        -webkit-box-sizing: border-box;
        -moz-box-sizing: border-box;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        -ms-touch-action: none;
        -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
    }
    .dwi {
        position: static;
        margin: 5px;
        display: inline-block;
    }
    .dwwr {
        min-width: 170px;
        zoom: 1;
        padding: 0 10px;
        text-align: center;
    }
    /* Datewheel overlay background */
    .dw-persp, .dwo {
        width: 100%;
        height: 100%;
        position: absolute;
        top: 0;
        left: 0;
        z-index: 1001;
    }
    .dwo {
        background: #000;
        opacity: .7;
        filter: Alpha(Opacity=70);
    }
    /* Bubble positionings */
    .dw-bubble .dw {
        margin: 20px 0;
    }
    .dw-bubble .dw-arrw {
        position: absolute;
        left: 0;
        width: 100%;
    }
    .dw-bubble-top .dw-arrw {
        bottom: -36px;
    }
    .dw-bubble-bottom .dw-arrw {
        top: -36px;
    }
    .dw-bubble .dw-arrw-i {
        margin: 0 30px;
        position: relative;
        height: 36px;
    }
    .dw-bubble .dw-arr {
        display: block;
    }
    .dw-arr {
        display: none;
        position: absolute;
        left: 0;
        width: 0;
        height: 0;
        border-width: 18px 18px;
        border-style: solid;
        margin-left: -18px;
    }
    .dw-bubble-bottom .dw-arr {
        top: 0;
        border-color: transparent transparent #fff transparent;
    }
    .dw-bubble-top .dw-arr {
        bottom: 0;
        border-color: #fff transparent transparent transparent;
    }
    /* Datewheel wheel container wrapper */
    .dwc {
        float: none;
        margin: 0 2px 5px 2px;
        padding-top: 30px;
        display: inline-block;
    }
    .dwcc {
        clear: both;
    }
    /* Datewheel label */
    .dwl {
        text-align: center;
        line-height: 30px;
        height: 30px;
        white-space: nowrap;
        position: absolute;
        top: -30px;
        width: 100%;
    }
    /* Datewheel value */
    .dwv {
        padding: 10px 0;
        border-bottom: 1px solid #000;
    }
    /* Datewheel wheel container */
    .dwrc {
        -webkit-border-radius: 3px;
        border-radius: 3px;
    }
    .dwwc {
        margin: 0;
        padding: 0 2px;
        position: relative;
        background: #000;
        zoom: 1;
    }
    /* Datewheel wheels */
    .dwwl {
        margin: 4px 2px;
        position: relative;
        z-index: 5;
    }
    .dww {
        margin: 0 2px;
        overflow: hidden;
        position: relative;
    }
    .dwsc .dwwl {
        background: #888;
        background: linear-gradient(#000 0%,#333 35%, #888 50%,#333 65%,#000 100%);
        background: -webkit-gradient(linear,left bottom,left top,from(#000),color-stop(0.35, #333),color-stop(0.50, #888),color-stop(0.65, #333),to(#000));
        background: -moz-linear-gradient(#000 0%,#333 35%, #888 50%,#333 65%,#000 100%);
        background: -o-linear-gradient(#000 0%,#333 35%, #888 50%,#333 65%,#000 100%);
    }
    .dwsc .dww {
        color: #fff;
        background: #444;
        background: linear-gradient(#000 0%,#444 45%, #444 55%, #000 100%);
        background: -webkit-gradient(linear,left bottom,left top,from(#000),color-stop(0.45, #444),color-stop(0.55, #444),to(#000));
        background: -moz-linear-gradient(#000 0%,#444 45%, #444 55%, #000 100%);
        background: -o-linear-gradient(#000 0%,#444 45%, #444 55%, #000 100%);
    }
    .dw-bf {
        -webkit-perspective: 1000;
        -webkit-backface-visibility: hidden;
    }
    .dw-ul {
        position: relative;
        z-index: 2;
    }
    .dw-li {
        padding: 0 5px;
        display: block;
        text-align: center;
        line-height: 40px;
        font-size: 26px;
        white-space: nowrap;
        text-shadow: 0 1px 1px #000;
        vertical-align: bottom;
        opacity: .3;
        filter: Alpha(Opacity=30);
    }
    /* Higlighted */
    .dw-li.dw-hl {
        background: #fff;
        background: rgba(255,255,255,.3);
    }
    /* Valid entry */
    .dw-li.dw-v {
        opacity: 1;
        filter: Alpha(Opacity=100);
    }
    /* Hidden entry */
    .dw-li.dw-h {
        visibility: hidden;
    }
    .dw-i {
        position: relative;
        height: 100%;
    }
    /* Wheel +/- buttons */
    .dwwb {
        position: absolute;
        z-index: 4;
        left: 0;
        cursor: pointer;
        width: 100%;
        height: 40px;
        text-align: center;
        opacity: 1;
        transition: opacity .2s linear;
        -webkit-transition: opacity .2s linear;
    }
    .dwa .dwwb {
        opacity: 0;
    }
    .dwwbp {
        top: 0;
        -webkit-border-radius: 3px 3px 0 0;
        border-radius: 3px 3px 0 0;
        font-size: 40px;
    }
    .dwwbm {
        bottom: 0;
        -webkit-border-radius: 0 0 3px 3px;
        border-radius: 0 0 3px 3px;
        font-size: 32px;
        font-weight: bold;
    }
    .dwpm .dwwc {
        background: transparent;
    }
    .dwpm .dww {
        margin: 0;
    }
    .dwpm .dw-li {
        text-shadow: none;
    }
    .dwpm .dwwol {
        display: none;
    }
    /* Datewheel wheel overlay */
    .dwwo {
        position: absolute;
        z-index: 3;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        background: linear-gradient(#000 0%,rgba(44,44,44,0) 52%, rgba(44,44,44,0) 48%, #000 100%);
        background: -webkit-gradient(linear,left bottom,left top,from(#000),color-stop(0.52, rgba(44,44,44,0)),color-stop(0.48, rgba(44,44,44,0)),to(#000));
        background: -moz-linear-gradient(#000 0%,rgba(44,44,44,0) 52%, rgba(44,44,44,0) 48%, #000 100%);
        background: -o-linear-gradient(#000 0%,rgba(44,44,44,0) 52%, rgba(44,44,44,0) 48%, #000 100%);
    }
    /* Background line */
    .dwwol {
        position: absolute;
        z-index: 1;
        top: 50%;
        left: 0;
        width: 100%;
        height: 0;
        margin-top: -1px;
        border-top: 1px solid #333;
        border-bottom: 1px solid #555;
    }
    /* Datewheel button */
    .dwbg .dwb {
        cursor: pointer;
        overflow: hidden;
        display: block;
        height: 40px;
        line-height: 40px;
        padding: 0 15px;
        margin: 0 2px;
        font-size: 14px;
        font-weight: bold;
        text-decoration: none;
        text-shadow: 0 -1px 1px #000;
        border-radius: 5px;
        box-shadow: 0 1px 3px rgba(0,0,0,0.5);
        color: #fff;
        background: #000;
        background: linear-gradient(#6e6e6e 50%,#000 50%);
        background: -webkit-gradient(linear,left bottom,left top,color-stop(0.5, #000),color-stop(0.5, #6e6e6e));
        background: -moz-linear-gradient(#6e6e6e 50%,#000 50%);
        background: -o-linear-gradient(#6e6e6e 50%,#000 50%);
        white-space: nowrap;
        text-overflow: ellipsis;
        -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.5);
        -webkit-border-radius: 5px;
    }
    /* Datewheel button container */
    .dwbc {
        padding: 5px 0;
        text-align: center;
        clear: both;
    }
    .dwbc:after {
        content: '';
        display: block;
        clear: both;
    }
    /* Datewheel button wrapper */
    .dwbw {
        display: inline-block;
        float: left;
        width: 50%;
        position: relative;
        z-index: 5;
    }
    .dwbc-p .dwbw {
        width: 33.33%;
    }
    /* Hidden label */
    .dwhl {
        padding-top: 10px;
    }
    .dwhl .dwl {
        display: none;
    }
    /* Multiple selection */
    .dwms .dwwms .dw-li {
        padding: 0 40px;
        position: relative;
    }
    .dwms .dw-msel:after {
        width: 40px;
        text-align: center;
        position: absolute;
        top: 0;
        left: 0;
        content: '✔';
    }
    /* Backgrounds */
    .dwbg {
        background: #fff;
        border-radius: 3px;
        -webkit-border-radius: 3px;
    }
    .dwbg .dwpm .dwwl {
        border: 1px solid #aaa;
    }
    .dwbg .dwpm .dww {
        color: #000;
        background: #fff;
        -webkit-border-radius: 3px;
    }
    .dwbg .dwwb {
        background: #ccc;
        color: #888;
        text-shadow: 0 -1px 1px #333;
        box-shadow: 0 0 5px #333;
        -webkit-box-shadow: 0 0 5px #333;
    }
    .dwbg .dwwbp {
        background: linear-gradient(#f7f7f7,#bdbdbd);
        background: -webkit-gradient(linear,left bottom,left top,from(#bdbdbd),to(#f7f7f7));
        background: -moz-linear-gradient(#f7f7f7,#bdbdbd);
        background: -o-linear-gradient(#f7f7f7,#bdbdbd);
    }
    .dwbg .dwwbm {
        background: linear-gradient(#bdbdbd,#f7f7f7);
        background: -webkit-gradient(linear,left bottom,left top,from(#f7f7f7),to(#bdbdbd));
        background: -moz-linear-gradient(#bdbdbd,#f7f7f7);
        background: -o-linear-gradient(#bdbdbd,#f7f7f7);
    }
    .dwbg .dwb-a {
        background: #3c7500;
        background: linear-gradient(#94c840 50%,#3c7500 50%);
        background: -webkit-gradient(linear,left bottom,left top,color-stop(0.5, #3c7500),color-stop(0.5, #94c840));
        background: -moz-linear-gradient(#94c840 50%,#3c7500 50%);
        background: -o-linear-gradient(#94c840 50%,#3c7500 50%);
    }
    .dwbg .dwwl .dwb-a {
        background: #3c7500;
        background: linear-gradient(#94c840,#3c7500);
        background: -webkit-gradient(linear,left bottom,left top,from(#3c7500),to(#94c840));
        background: -moz-linear-gradient(#94c840,#3c7500);
        background: -o-linear-gradient(#94c840,#3c7500);
    }
    mobiscroll_002.css
    /* Android ICS skin */
    .android-ics .dw {
        padding: 0;
        color: #43AD0F;
        background: #292829;
    }
    .android-ics .dw .dwwc,
    .android-ics .dw .dwwl,
    .android-ics .dw .dww,
    .android-ics .dw .dwb,
    .android-ics .dw .dwpm .dww {
        background: none;
    }
    .android-ics .dwwr {
        padding: 0;
    }
    .android-ics .dwc {
        margin: 0;
        padding: 30px 10px 1px 10px;
    }
    .android-ics .dwhl {
        padding: 1px 10px;
    }
    .android-ics .dwv {
        height: 36px;
        line-height: 36px;
        padding: 0;
        border-bottom: 2px solid #43AD0F;
        font-size: 18px;
    }
    .android-ics .dwwl {
        margin: 0 2px;
    }
    .android-ics .dww,
    .android-ics .dw .dwpm .dwwl,
    .android-ics .dw .dwpm .dww {
        border: 0;
    }
    .android-ics .dww .dw-li {
        color: #fff;
        font-size: 18px;
        text-shadow: none;
    }
    .android-ics .dww .dw-li.dw-hl {
        background: #31b6e7;
        background: rgba(49,182,231,.5);
    }
    .android-ics .dwwo {
        background: linear-gradient(#282828 0%,rgba(40,40,40,0) 52%, rgba(40,40,40,0) 48%, #282828 100%);
        background: -webkit-gradient(linear,left bottom,left top,from(#282828),color-stop(0.52, rgba(40,40,40,0)),color-stop(0.48, rgba(40,40,40,0)),to(#282828));
        background: -moz-linear-gradient(#282828 0%,rgba(40,40,40,0) 52%, rgba(40,40,40,0) 48%, #282828 100%);
        background: -o-linear-gradient(#282828 0%,rgba(40,40,40,0) 52%, rgba(40,40,40,0) 48%, #282828 100%);
    }
    .android-ics .dw .dwwb {
        background: #292829;
        box-shadow: none;
        -webkit-box-shadow: none;
    }
    .android-ics .dwwb span {
        display: none;
    }
    .android-ics .dwwb:after {
        position: absolute;
        top: 50%;
        left: 50%;
        margin-top: -8px;
        margin-left: -8px;
        color: #7e7e7e;
        width: 0;
        height: 0;
        border-width: 8px;
        border-style: solid;
        content: '';
    }
    .android-ics .dwwbm {
        top: 0;
        bottom: auto;
    }
    .android-ics .dwwbp {
        bottom: 0;
        top: auto;
    }
    .android-ics .dwwbm:after {
        border-color: transparent transparent #7e7e7e transparent;
    }
    .android-ics .dwwbp:after {
        border-color: #7e7e7e transparent transparent transparent;
    }
    .android-ics .dw .dwwl .dwb-a {
        background: #292829;
    }
    .android-ics .dwwbm.dwb-a:after {
        border-color: transparent transparent #319abd transparent;
    }
    .android-ics .dwwbp.dwb-a:after {
        border-color: #319abd transparent transparent transparent;
    }
    .android-ics .dw .dwwol {
        width: 60%;
        left: 20%;
        height: 36px;
        border-top: 2px solid #43AD0F;
        border-bottom: 2px solid #43AD0F;
        margin-top: -20px;
        display: block;
    }
    .android-ics .dwbc {
        border-top: 1px solid #424542;
        padding: 0;
    }
    .android-ics .dw .dwb {
        height: 36px;
        line-height: 36px;
        padding: 0;
        margin: 0;
        font-weight: normal;
        text-shadow: none;
        box-shadow: none;
        border-radius: 0;
        -webkit-border-radius: 0;
        -webkit-box-shadow: none;
    }
    .android-ics .dw .dwb-a {
        background: #35840D;
    }
    .android-ics .dwb-s .dwb, .android-ics .dwb-n .dwb {
        border-right: 1px solid #424542;
    }
    /* Docked */
    .android-ics.dw-bottom .dw, .android-ics.dw-top .dw {
        border-radius: 0;
        -webkit-border-radius: 0;
    }
    /* Multiple select */
    .android-ics .dwwms .dwwol {
        display: none;
    }
    .android-ics .dwwms .dw-li {
        padding-left: 5px;
        padding-right: 36px;
    }
    .android-ics .dwwms .dw-li:after {
        content: '';
        position: absolute;
        top: 50%;
        left: auto;
        right: 10px;
        width: 14px;
        height: 14px;
        margin-top: -9px;
        color: #31b6e7;
        line-height: 14px;
        border: 1px solid #424542;
        text-shadow: 0 0 5px #29799c;
    }
    .android-ics .dwwms .dw-msel:after {
        content: '✔';
    }
    /* Light version */
    .android-ics.light .dw {
        background: #f5f5f5;
    }
    .android-ics.light .dww .dw-li {
        color: #000;
    }
    .android-ics.light .dwwo {
        background: linear-gradient(#f5f5f5 0%,rgba(245,245,245,0) 52%, rgba(245,245,245,0) 48%, #f5f5f5 100%);
        background: -webkit-gradient(linear,left bottom,left top,from(#f5f5f5),color-stop(0.52, rgba(245,245,245,0)),color-stop(0.48, rgba(245,245,245,0)),to(#f5f5f5));
        background: -moz-linear-gradient(#f5f5f5 0%,rgba(245,245,245,0) 52%, rgba(245,245,245,0) 48%, #f5f5f5 100%);
        background: -o-linear-gradient(#f5f5f5 0%,rgba(245,245,245,0) 52%, rgba(245,245,245,0) 48%, #f5f5f5 100%);
    }
    .android-ics.light .dw .dwwb {
        background: #f5f5f5;
        color: #f5f5f5;
    }
    .android-ics.light .dwbc {
        border-top: 1px solid #dbdbdb;
    }
    .android-ics.light .dwb {
        color: #000;
    }
    .android-ics.light .dwb-a {
        color: #fff;
    }
    .android-ics.light .dwb-s .dwb, .android-ics.light .dwb-n .dwb {
        border-right: 1px solid #dbdbdb;
    }
    /* Bubble positioning */
    .android-ics .dw-bubble-bottom .dw-arr {
        border-color: transparent transparent #292829 transparent;
    }
    .android-ics .dw-bubble-top .dw-arr {
        border-color: #292829 transparent transparent transparent;
    }
    /* Bubble positioning */
    .android-ics.light .dw-bubble-bottom .dw-arr {
        border-color: transparent transparent #f5f5f5 transparent;
    }
    .android-ics.light .dw-bubble-top .dw-arr {
        border-color: #f5f5f5 transparent transparent transparent;
    }
    /* Multiple select */
    .android-ics.light .dwwms .dw-li:after {
        text-shadow: 0 0 5px #31b6e7;
    }
    mobiscroll_003.css
    /*jslint eqeq: true, plusplus: true, undef: true, sloppy: true, vars: true, forin: true */
    /*!
     * jQuery MobiScroll v2.5.1
     * http://mobiscroll.com
     *
     * Copyright 2010-2013, Acid Media
     * Licensed under the MIT license.
     *
     */
    (function ($) {
    
        function Scroller(elem, settings) {
            var m,
                hi,
                v,
                dw,
                ww, // Window width
                wh, // Window height
                rwh,
                mw, // Modal width
                mh, // Modal height
                anim,
                debounce,
                that = this,
                ms = $.mobiscroll,
                e = elem,
                elm = $(e),
                theme,
                lang,
                s = extend({}, defaults),
                pres = {},
                warr = [],
                iv = {},
                pixels = {},
                input = elm.is('input'),
                visible = false;
    
            // Private functions
    
            function isReadOnly(wh) {
                if ($.isArray(s.readonly)) {
                    var i = $('.dwwl', dw).index(wh);
                    return s.readonly[i];
                }
                return s.readonly;
            }
    
            function generateWheelItems(i) {
                var html = '<div class="dw-bf">',
                    l = 1,
                    j;
    
                for (j in warr[i]) {
                    if (l % 20 == 0) {
                        html += '</div><div class="dw-bf">';
                    }
                    html += '<div class="dw-li dw-v" data-val="' + j + '" style="height:' + hi + 'px;line-height:' + hi + 'px;"><div class="dw-i">' + warr[i][j] + '</div></div>';
                    l++;
                }
                html += '</div>';
                return html;
            }
    
            function setGlobals(t) {
                min = $('.dw-li', t).index($('.dw-v', t).eq(0));
                max = $('.dw-li', t).index($('.dw-v', t).eq(-1));
                index = $('.dw-ul', dw).index(t);
                h = hi;
                inst = that;
            }
    
            function formatHeader(v) {
                var t = s.headerText;
                return t ? (typeof t === 'function' ? t.call(e, v) : t.replace(/{value}/i, v)) : '';
            }
    
            function read() {
                that.temp = ((input && that.val !== null && that.val != elm.val()) || that.values === null) ? s.parseValue(elm.val() || '', that) : that.values.slice(0);
                that.setValue(true);
            }
    
            function scrollToPos(time, index, manual, dir, orig) {
                
                // Call validation event
                if (event('validate', [dw, index, time]) !== false) {
    
                    // Set scrollers to position
                    $('.dw-ul', dw).each(function (i) {
                        var t = $(this),
                            cell = $('.dw-li[data-val="' + that.temp[i] + '"]', t),
                            cells = $('.dw-li', t),
                            v = cells.index(cell),
                            l = cells.length,
                            sc = i == index || index === undefined;
                        
                        // Scroll to a valid cell
                        if (!cell.hasClass('dw-v')) {
                            var cell1 = cell,
                                cell2 = cell,
                                dist1 = 0,
                                dist2 = 0;
                            
                            while (v - dist1 >= 0 && !cell1.hasClass('dw-v')) {
                                dist1++;
                                cell1 = cells.eq(v - dist1);
                            }
    
                            while (v + dist2 < l && !cell2.hasClass('dw-v')) {
                                dist2++;
                                cell2 = cells.eq(v + dist2);
                            }
                            
                            // If we have direction (+/- or mouse wheel), the distance does not count
                            if (((dist2 < dist1 && dist2 && dir !== 2) || !dist1 || (v - dist1 < 0) || dir == 1) && cell2.hasClass('dw-v')) {
                                cell = cell2;
                                v = v + dist2;
                            } else {
                                cell = cell1;
                                v = v - dist1;
                            }
                        }
                        
                        if (!(cell.hasClass('dw-sel')) || sc) {
                            // Set valid value
                            that.temp[i] = cell.attr('data-val');
    
                            // Add selected class to cell
                            $('.dw-sel', t).removeClass('dw-sel');
                            cell.addClass('dw-sel');
    
                            // Scroll to position
                            //that.scroll(t, i, v, time);
                            that.scroll(t, i, v, sc ? time : 0.1, sc ? orig : undefined);
                        }
                    });
                    
                    // Reformat value if validation changed something
                    that.change(manual);
                }
            
            }
    
            function position(check) {
    
                if (s.display == 'inline' || (ww === $(window).width() && rwh === $(window).height() && check)) {
                    return;
                }
                
                var w,
                    l,
                    t,
                    aw, // anchor width
                    ah, // anchor height
                    ap, // anchor position
                    at, // anchor top
                    al, // anchor left
                    arr, // arrow
                    arrw, // arrow width
                    arrl, // arrow left
                    scroll,
                    totalw = 0,
                    minw = 0,
                    st = $(window).scrollTop(),
                    wr = $('.dwwr', dw),
                    d = $('.dw', dw),
                    css = {},
                    anchor = s.anchor === undefined ? elm : s.anchor;
                
                ww = $(window).width();
                rwh = $(window).height();
                wh = window.innerHeight; // on iOS we need innerHeight
                wh = wh || rwh;
                
                if (/modal|bubble/.test(s.display)) {
                    $('.dwc', dw).each(function () {
                        w = $(this).outerWidth(true);
                        totalw += w;
                        minw = (w > minw) ? w : minw;
                    });
                    w = totalw > ww ? minw : totalw;
                    wr.width(w);
                }
                
                mw = d.outerWidth();
                mh = d.outerHeight(true);
                
                if (s.display == 'modal') {
                    l = (ww - mw) / 2;
                    t = st + (wh - mh) / 2;
                } else if (s.display == 'bubble') {
                    scroll = true;
                    arr = $('.dw-arrw-i', dw);
                    ap = anchor.offset();
                    at = ap.top;
                    al = ap.left;
    
                    // horizontal positioning
                    aw = anchor.outerWidth();
                    ah = anchor.outerHeight();
                    l = al - (d.outerWidth(true) - aw) / 2;
                    l = l > (ww - mw) ? (ww - (mw + 20)) : l;
                    l = l >= 0 ? l : 20;
                    
                    // vertical positioning
                    t = at - mh; //(mh + 3); // above the input
                    if ((t < st) || (at > st + wh)) { // if doesn't fit above or the input is out of the screen
                        d.removeClass('dw-bubble-top').addClass('dw-bubble-bottom');
                        t = at + ah;// + 3; // below the input
                    } else {
                        d.removeClass('dw-bubble-bottom').addClass('dw-bubble-top');
                    }
    
                    //t = t >= st ? t : st;
                    
                    // Calculate Arrow position
                    arrw = arr.outerWidth();
                    arrl = al + aw / 2 - (l + (mw - arrw) / 2);
    
                    // Limit Arrow position to [0, pocw.width] intervall
                    $('.dw-arr', dw).css({ left: arrl > arrw ? arrw : arrl });
                } else {
                    css.width = '100%';
                    if (s.display == 'top') {
                        t = st;
                    } else if (s.display == 'bottom') {
                        t = st + wh - mh;
                    }
                }
                
                css.top = t < 0 ? 0 : t;
                css.left = l;
                d.css(css);
                
                // If top + modal height > doc height, increase doc height
                $('.dw-persp', dw).height(0).height(t + mh > $(document).height() ? t + mh : $(document).height());
                
                // Scroll needed
                if (scroll && ((t + mh > st + wh) || (at > st + wh))) {
                    $(window).scrollTop(t + mh - wh);
                }
            }
            
            function testTouch(e) {
                if (e.type === 'touchstart') {
                    touch = true;
                    setTimeout(function () {
                        touch = false; // Reset if mouse event was not fired
                    }, 500);
                } else if (touch) {
                    touch = false;
                    return false;
                }
                return true;
            }
    
            function event(name, args) {
                var ret;
                args.push(that);
                $.each([theme.defaults, pres, settings], function (i, v) {
                    if (v[name]) { // Call preset event
                        ret = v[name].apply(e, args);
                    }
                });
                return ret;
            }
    
            function plus(t) {
                var p = +t.data('pos'),
                    val = p + 1;
                calc(t, val > max ? min : val, 1, true);
            }
    
            function minus(t) {
                var p = +t.data('pos'),
                    val = p - 1;
                calc(t, val < min ? max : val, 2, true);
            }
    
            // Public functions
    
            /**
            * Enables the scroller and the associated input.
            */
            that.enable = function () {
                s.disabled = false;
                if (input) {
                    elm.prop('disabled', false);
                }
            };
    
            /**
            * Disables the scroller and the associated input.
            */
            that.disable = function () {
                s.disabled = true;
                if (input) {
                    elm.prop('disabled', true);
                }
            };
    
            /**
            * Scrolls target to the specified position
            * @param {Object} t - Target wheel jQuery object.
            * @param {Number} index - Index of the changed wheel.
            * @param {Number} val - Value.
            * @param {Number} time - Duration of the animation, optional.
            * @param {Number} orig - Original value.
            */
            that.scroll = function (t, index, val, time, orig) {
                
                function getVal(t, b, c, d) {
                    return c * Math.sin(t / d * (Math.PI / 2)) + b;
                }
    
                function ready() {
                    clearInterval(iv[index]);
                    delete iv[index];
                    t.data('pos', val).closest('.dwwl').removeClass('dwa');
                }
                
                var px = (m - val) * hi,
                    i;
                
                if (px == pixels[index] && iv[index]) {
                    return;
                }
                
                if (time && px != pixels[index]) {
                    // Trigger animation start event
                    event('onAnimStart', [dw, index, time]);
                }
                
                pixels[index] = px;
                
                t.attr('style', (prefix + '-transition:all ' + (time ? time.toFixed(3) : 0) + 's ease-out;') + (has3d ? (prefix + '-transform:translate3d(0,' + px + 'px,0);') : ('top:' + px + 'px;')));
                
                if (iv[index]) {
                    ready();
                }
                
                if (time && orig !== undefined) {
                    i = 0;
                    t.closest('.dwwl').addClass('dwa');
                    iv[index] = setInterval(function () {
                        i += 0.1;
                        t.data('pos', Math.round(getVal(i, orig, val - orig, time)));
                        if (i >= time) {
                            ready();
                        }
                    }, 100);
                } else {
                    t.data('pos', val);
                }
            };
            
            /**
            * Gets the selected wheel values, formats it, and set the value of the scroller instance.
            * If input parameter is true, populates the associated input element.
            * @param {Boolean} sc - Scroll the wheel in position.
            * @param {Boolean} fill - Also set the value of the associated input element. Default is true.
            * @param {Number} time - Animation time
            * @param {Boolean} temp - If true, then only set the temporary value.(only scroll there but not set the value)
            */
            that.setValue = function (sc, fill, time, temp) {
                if (!$.isArray(that.temp)) {
                    that.temp = s.parseValue(that.temp + '', that);
                }
                
                if (visible && sc) {
                    scrollToPos(time);
                }
                
                v = s.formatResult(that.temp);
                
                if (!temp) {
                    that.values = that.temp.slice(0);
                    that.val = v;
                }
    
                if (fill) {
                    if (input) {
                        elm.val(v).trigger('change');
                    }
                }
            };
            
            that.getValues = function () {
                var ret = [],
                    i;
                
                for (i in that._selectedValues) {
                    ret.push(that._selectedValues[i]);
                }
                return ret;
            };
    
            /**
            * Checks if the current selected values are valid together.
            * In case of date presets it checks the number of days in a month.
            * @param {Number} time - Animation time
            * @param {Number} orig - Original value
            * @param {Number} i - Currently changed wheel index, -1 if initial validation.
            * @param {Number} dir - Scroll direction
            */
            that.validate = function (i, dir, time, orig) {
                scrollToPos(time, i, true, dir, orig);
            };
    
            /**
            *
            */
            that.change = function (manual) {
                v = s.formatResult(that.temp);
                if (s.display == 'inline') {
                    that.setValue(false, manual);
                } else {
                    $('.dwv', dw).html(formatHeader(v));
                }
    
                if (manual) {
                    event('onChange', [v]);
                }
            };
    
            /**
            * Changes the values of a wheel, and scrolls to the correct position
            */
            that.changeWheel = function (idx, time) {
                if (dw) {
                    var i = 0,
                        j,
                        k,
                        nr = idx.length;
    
                    for (j in s.wheels) {
                        for (k in s.wheels[j]) {
                            if ($.inArray(i, idx) > -1) {
                                warr[i] = s.wheels[j][k];
                                $('.dw-ul', dw).eq(i).html(generateWheelItems(i));
                                nr--;
                                if (!nr) {
                                    position();
                                    scrollToPos(time, undefined, true);
                                    return;
                                }
                            }
                            i++;
                        }
                    }
                }
            };
            
            /**
            * Return true if the scroller is currently visible.
            */
            that.isVisible = function () {
                return visible;
            };
            
            /**
            *
            */
            that.tap = function (el, handler) {
                var startX,
                    startY;
                
                if (s.tap) {
                    el.bind('touchstart', function (e) {
                        e.preventDefault();
                        startX = getCoord(e, 'X');
                        startY = getCoord(e, 'Y');
                    }).bind('touchend', function (e) {
                        // If movement is less than 20px, fire the click event handler
                        if (Math.abs(getCoord(e, 'X') - startX) < 20 && Math.abs(getCoord(e, 'Y') - startY) < 20) {
                            handler.call(this, e);
                        }
                        tap = true;
                        setTimeout(function () {
                            tap = false;
                        }, 300);
                    });
                }
                
                el.bind('click', function (e) {
                    if (!tap) {
                        // If handler was not called on touchend, call it on click;
                        handler.call(this, e);
                    }
                });
                
            };
            
            /**
            * Shows the scroller instance.
            * @param {Boolean} prevAnim - Prevent animation if true
            */
            that.show = function (prevAnim) {
                if (s.disabled || visible) {
                    return false;
                }
    
                if (s.display == 'top') {
                    anim = 'slidedown';
                }
    
                if (s.display == 'bottom') {
                    anim = 'slideup';
                }
    
                // Parse value from input
                read();
    
                event('onBeforeShow', [dw]);
    
                // Create wheels
                var l = 0,
                    i,
                    label,
                    mAnim = '';
    
                if (anim && !prevAnim) {
                    mAnim = 'dw-' + anim + ' dw-in';
                }
                // Create wheels containers
                var html = '<div class="dw-trans ' + s.theme + ' dw-' + s.display + '">' + (s.display == 'inline' ? '<div class="dw dwbg dwi"><div class="dwwr">' : '<div class="dw-persp">' + '<div class="dwo"></div><div class="dw dwbg ' + mAnim + '"><div class="dw-arrw"><div class="dw-arrw-i"><div class="dw-arr"></div></div></div><div class="dwwr">' + (s.headerText ? '<div class="dwv"></div>' : ''));
                
                for (i = 0; i < s.wheels.length; i++) {
                    html += '<div class="dwc' + (s.mode != 'scroller' ? ' dwpm' : ' dwsc') + (s.showLabel ? '' : ' dwhl') + '"><div class="dwwc dwrc"><table cellpadding="0" cellspacing="0"><tr>';
                    // Create wheels
                    for (label in s.wheels[i]) {
                        warr[l] = s.wheels[i][label];
                        html += '<td><div class="dwwl dwrc dwwl' + l + '">' + (s.mode != 'scroller' ? '<div class="dwwb dwwbp" style="height:' + hi + 'px;line-height:' + hi + 'px;"><span>+</span></div><div class="dwwb dwwbm" style="height:' + hi + 'px;line-height:' + hi + 'px;"><span>&ndash;</span></div>' : '') + '<div class="dwl">' + label + '</div><div class="dww" style="height:' + (s.rows * hi) + 'px;min-' + s.width + 'px;"><div class="dw-ul">';
                        // Create wheel values
                        html += generateWheelItems(l);
                        html += '</div><div class="dwwo"></div></div><div class="dwwol"></div></div></td>';
                        l++;
                    }
                    html += '</tr></table></div></div>';
                }
                html += (s.display != 'inline' ? '<div class="dwbc' + (s.button3 ? ' dwbc-p' : '') + '"><span class="dwbw dwb-s"><span class="dwb">' + s.setText + '</span></span>' + (s.button3 ? '<span class="dwbw dwb-n"><span class="dwb">' + s.button3Text + '</span></span>' : '') + '<span class="dwbw dwb-c"><span class="dwb">' + s.cancelText + '</span></span></div></div>' : '<div class="dwcc"></div>') + '</div></div></div>';
                dw = $(html);
    
                scrollToPos();
                
                event('onMarkupReady', [dw]);
    
                // Show
                if (s.display != 'inline') {
                    dw.appendTo('body');
                    // Remove animation class
                    setTimeout(function () {
                        dw.removeClass('dw-trans').find('.dw').removeClass(mAnim);
                    }, 350);
                } else if (elm.is('div')) {
                    elm.html(dw);
                } else {
                    dw.insertAfter(elm);
                }
                
                event('onMarkupInserted', [dw]);
                
                visible = true;
                
                // Theme init
                theme.init(dw, that);
                
                if (s.display != 'inline') {
                    // Init buttons
                    that.tap($('.dwb-s span', dw), function () {
                        if (that.hide(false, 'set') !== false) {
                            that.setValue(false, true);
                            event('onSelect', [that.val]);
                        }
                    });
    
                    that.tap($('.dwb-c span', dw), function () {
                        that.cancel();
                    });
    
                    if (s.button3) {
                        that.tap($('.dwb-n span', dw), s.button3);
                    }
    
                    // prevent scrolling if not specified otherwise
                    if (s.scrollLock) {
                        dw.bind('touchmove', function (e) {
                            if (mh <= wh && mw <= ww) {
                                e.preventDefault();
                            }
                        });
                    }
    
                    // Disable inputs to prevent bleed through (Android bug)
                    $('input,select,button').each(function () {
                        if (!$(this).prop('disabled')) {
                            $(this).addClass('dwtd').prop('disabled', true);
                        }
                    });
                    
                    // Set position
                    position();
                    $(window).bind('resize.dw', function () {
                        // Sometimes scrollTop is not correctly set, so we wait a little
                        clearTimeout(debounce);
                        debounce = setTimeout(function () {
                            position(true);
                        }, 100);
                    });
                }
    
                // Events
                dw.delegate('.dwwl', 'DOMMouseScroll mousewheel', function (e) {
                    if (!isReadOnly(this)) {
                        e.preventDefault();
                        e = e.originalEvent;
                        var delta = e.wheelDelta ? (e.wheelDelta / 120) : (e.detail ? (-e.detail / 3) : 0),
                            t = $('.dw-ul', this),
                            p = +t.data('pos'),
                            val = Math.round(p - delta);
                        setGlobals(t);
                        calc(t, val, delta < 0 ? 1 : 2);
                    }
                }).delegate('.dwb, .dwwb', START_EVENT, function (e) {
                    // Active button
                    $(this).addClass('dwb-a');
                }).delegate('.dwwb', START_EVENT, function (e) {
                    e.stopPropagation();
                    e.preventDefault();
                    var w = $(this).closest('.dwwl');
                    if (testTouch(e) && !isReadOnly(w) && !w.hasClass('dwa')) {
                        click = true;
                        // + Button
                        var t = w.find('.dw-ul'),
                            func = $(this).hasClass('dwwbp') ? plus : minus;
                        
                        setGlobals(t);
                        clearInterval(timer);
                        timer = setInterval(function () { func(t); }, s.delay);
                        func(t);
                    }
                }).delegate('.dwwl', START_EVENT, function (e) {
                    // Prevent scroll
                    e.preventDefault();
                    // Scroll start
                    if (testTouch(e) && !move && !isReadOnly(this) && !click) {
                        move = true;
                        $(document).bind(MOVE_EVENT, onMove);
                        target = $('.dw-ul', this);
                        scrollable = s.mode != 'clickpick';
                        pos = +target.data('pos');
                        setGlobals(target);
                        moved = iv[index] !== undefined; // Don't allow tap, if still moving
                        start = getCoord(e, 'Y');
                        startTime = new Date();
                        stop = start;
                        that.scroll(target, index, pos, 0.001);
                        if (scrollable) {
                            target.closest('.dwwl').addClass('dwa');
                        }
                    }
                });
    
                event('onShow', [dw, v]);
            };
            
            /**
            * Hides the scroller instance.
            */
            that.hide = function (prevAnim, btn) {
                // If onClose handler returns false, prevent hide
                if (!visible || event('onClose', [v, btn]) === false) {
                    return false;
                }
    
                // Re-enable temporary disabled fields
                $('.dwtd').prop('disabled', false).removeClass('dwtd');
                elm.blur();
    
                // Hide wheels and overlay
                if (dw) {
                    if (s.display != 'inline' && anim && !prevAnim) {
                        dw.addClass('dw-trans').find('.dw').addClass('dw-' + anim + ' dw-out');
                        setTimeout(function () {
                            dw.remove();
                            dw = null;
                        }, 350);
                    } else {
                        dw.remove();
                        dw = null;
                    }
                    visible = false;
                    pixels = {};
                    // Stop positioning on window resize
                    $(window).unbind('.dw');
                }
            };
    
            /**
            * Cancel and hide the scroller instance.
            */
            that.cancel = function () {
                if (that.hide(false, 'cancel') !== false) {
                    event('onCancel', [that.val]);
                }
            };
    
            /**
            * Scroller initialization.
            */
            that.init = function (ss) {
                // Get theme defaults
                theme = extend({ defaults: {}, init: empty }, ms.themes[ss.theme || s.theme]);
    
                // Get language defaults
                lang = ms.i18n[ss.lang || s.lang];
    
                extend(settings, ss); // Update original user settings
                extend(s, theme.defaults, lang, settings);
    
                that.settings = s;
    
                // Unbind all events (if re-init)
                elm.unbind('.dw');
    
                var preset = ms.presets[s.preset];
    
                if (preset) {
                    pres = preset.call(e, that);
                    extend(s, pres, settings); // Load preset settings
                    extend(methods, pres.methods); // Extend core methods
                }
    
                // Set private members
                m = Math.floor(s.rows / 2);
                hi = s.height;
                anim = s.animate;
    
                if (elm.data('dwro') !== undefined) {
                    e.readOnly = bool(elm.data('dwro'));
                }
    
                if (visible) {
                    that.hide();
                }
    
                if (s.display == 'inline') {
                    that.show();
                } else {
                    read();
                    if (input && s.showOnFocus) {
                        // Set element readonly, save original state
                        elm.data('dwro', e.readOnly);
                        e.readOnly = true;
                        // Init show datewheel
                        elm.bind('focus.dw', function () { that.show(); });
                    }
                }
            };
            
            that.trigger = function (name, params) {
                return event(name, params);
            };
            
            that.values = null;
            that.val = null;
            that.temp = null;
            that._selectedValues = {}; // [];
    
            that.init(settings);
        }
    
        function testProps(props) {
            var i;
            for (i in props) {
                if (mod[props[i]] !== undefined) {
                    return true;
                }
            }
            return false;
        }
    
        function testPrefix() {
            var prefixes = ['Webkit', 'Moz', 'O', 'ms'],
                p;
    
            for (p in prefixes) {
                if (testProps([prefixes[p] + 'Transform'])) {
                    return '-' + prefixes[p].toLowerCase();
                }
            }
            return '';
        }
    
        function getInst(e) {
            return scrollers[e.id];
        }
        
        function getCoord(e, c) {
            var org = e.originalEvent,
                ct = e.changedTouches;
            return ct || (org && org.changedTouches) ? (org ? org.changedTouches[0]['page' + c] : ct[0]['page' + c]) : e['page' + c];
    
        }
    
        function bool(v) {
            return (v === true || v == 'true');
        }
    
        function constrain(val, min, max) {
            val = val > max ? max : val;
            val = val < min ? min : val;
            return val;
        }
        
        function calc(t, val, dir, anim, orig) {
            val = constrain(val, min, max);
    
            var cell = $('.dw-li', t).eq(val),
                o = orig === undefined ? val : orig,
                idx = index,
                time = anim ? (val == o ? 0.1 : Math.abs((val - o) * 0.1)) : 0;
    
            // Set selected scroller value
            inst.temp[idx] = cell.attr('data-val');
            
            inst.scroll(t, idx, val, time, orig);
            
            setTimeout(function () {
                // Validate
                inst.validate(idx, dir, time, orig);
            }, 10);
        }
    
        function init(that, method, args) {
            if (methods[method]) {
                return methods[method].apply(that, Array.prototype.slice.call(args, 1));
            }
            if (typeof method === 'object') {
                return methods.init.call(that, method);
            }
            return that;
        }
    
        var scrollers = {},
            timer,
            empty = function () { },
            h,
            min,
            max,
            inst, // Current instance
            date = new Date(),
            uuid = date.getTime(),
            move,
            click,
            target,
            index,
            start,
            stop,
            startTime,
            pos,
            moved,
            scrollable,
            mod = document.createElement('modernizr').style,
            has3d = testProps(['perspectiveProperty', 'WebkitPerspective', 'MozPerspective', 'OPerspective', 'msPerspective']),
            prefix = testPrefix(),
            extend = $.extend,
            tap,
            touch,
            START_EVENT = 'touchstart mousedown',
            MOVE_EVENT = 'touchmove mousemove',
            END_EVENT = 'touchend mouseup',
            onMove = function (e) {
                if (scrollable) {
                    e.preventDefault();
                    stop = getCoord(e, 'Y');
                    inst.scroll(target, index, constrain(pos + (start - stop) / h, min - 1, max + 1));
                }
                moved = true;
            },
            defaults = {
                // Options
                 70,
                height: 40,
                rows: 3,
                delay: 300,
                disabled: false,
                readonly: false,
                showOnFocus: true,
                showLabel: true,
                wheels: [],
                theme: '',
                headerText: '{value}',
                display: 'modal',
                mode: 'scroller',
                preset: '',
                lang: 'en-US',
                setText: 'Set',
                cancelText: 'Cancel',
                scrollLock: true,
                tap: true,
                formatResult: function (d) {
                    return d.join(' ');
                },
                parseValue: function (value, inst) {
                    var w = inst.settings.wheels,
                        val = value.split(' '),
                        ret = [],
                        j = 0,
                        i,
                        l,
                        v;
    
                    for (i = 0; i < w.length; i++) {
                        for (l in w[i]) {
                            if (w[i][l][val[j]] !== undefined) {
                                ret.push(val[j]);
                            } else {
                                for (v in w[i][l]) { // Select first value from wheel
                                    ret.push(v);
                                    break;
                                }
                            }
                            j++;
                        }
                    }
                    return ret;
                }
            },
    
            methods = {
                init: function (options) {
                    if (options === undefined) {
                        options = {};
                    }
    
                    return this.each(function () {
                        if (!this.id) {
                            uuid += 1;
                            this.id = 'scoller' + uuid;
                        }
                        scrollers[this.id] = new Scroller(this, options);
                    });
                },
                enable: function () {
                    return this.each(function () {
                        var inst = getInst(this);
                        if (inst) {
                            inst.enable();
                        }
                    });
                },
                disable: function () {
                    return this.each(function () {
                        var inst = getInst(this);
                        if (inst) {
                            inst.disable();
                        }
                    });
                },
                isDisabled: function () {
                    var inst = getInst(this[0]);
                    if (inst) {
                        return inst.settings.disabled;
                    }
                },
                isVisible: function () {
                    var inst = getInst(this[0]);
                    if (inst) {
                        return inst.isVisible();
                    }
                },
                option: function (option, value) {
                    return this.each(function () {
                        var inst = getInst(this);
                        if (inst) {
                            var obj = {};
                            if (typeof option === 'object') {
                                obj = option;
                            } else {
                                obj[option] = value;
                            }
                            inst.init(obj);
                        }
                    });
                },
                setValue: function (d, fill, time, temp) {
                    return this.each(function () {
                        var inst = getInst(this);
                        if (inst) {
                            inst.temp = d;
                            inst.setValue(true, fill, time, temp);
                        }
                    });
                },
                getInst: function () {
                    return getInst(this[0]);
                },
                getValue: function () {
                    var inst = getInst(this[0]);
                    if (inst) {
                        return inst.values;
                    }
                },
                getValues: function () {
                    var inst = getInst(this[0]);
                    if (inst) {
                        return inst.getValues();
                    }
                },
                show: function () {
                    var inst = getInst(this[0]);
                    if (inst) {
                        return inst.show();
                    }
                },
                hide: function () {
                    return this.each(function () {
                        var inst = getInst(this);
                        if (inst) {
                            inst.hide();
                        }
                    });
                },
                destroy: function () {
                    return this.each(function () {
                        var inst = getInst(this);
                        if (inst) {
                            inst.hide();
                            $(this).unbind('.dw');
                            delete scrollers[this.id];
                            if ($(this).is('input')) {
                                this.readOnly = bool($(this).data('dwro'));
                            }
                        }
                    });
                }
            };
    
        $(document).bind(END_EVENT, function (e) {
            if (move) {
                var time = new Date() - startTime,
                    val = constrain(pos + (start - stop) / h, min - 1, max + 1),
                    speed,
                    dist,
                    tindex,
                    ttop = target.offset().top;
            
                if (time < 300) {
                    speed = (stop - start) / time;
                    dist = (speed * speed) / (2 * 0.0006);
                    if (stop - start < 0) {
                        dist = -dist;
                    }
                } else {
                    dist = stop - start;
                }
                
                tindex = Math.round(pos - dist / h);
                
                if (!dist && !moved) { // this is a "tap"
                    var idx = Math.floor((stop - ttop) / h),
                        li = $('.dw-li', target).eq(idx),
                        hl = scrollable;
                    
                    if (inst.trigger('onValueTap', [li]) !== false) {
                        tindex = idx;
                    } else {
                        hl = true;
                    }
                    
                    if (hl) {
                        li.addClass('dw-hl'); // Highlight
                        setTimeout(function () {
                            li.removeClass('dw-hl');
                        }, 200);
                    }
                }
                
                if (scrollable) {
                    calc(target, tindex, 0, true, Math.round(val));
                }
                
                move = false;
                target = null;
            
                $(document).unbind(MOVE_EVENT, onMove);
            }
    
            if (click) {
                clearInterval(timer);
                click = false;
            }
        
            $('.dwb-a').removeClass('dwb-a');
                    
        }).bind('mouseover mouseup mousedown click', function (e) { // Prevent standard behaviour on body click
            if (tap) {
                e.stopPropagation();
                e.preventDefault();
                return false;
            }
        });
    
        $.fn.mobiscroll = function (method) {
            extend(this, $.mobiscroll.shorts);
            return init(this, method, arguments);
        };
    
        $.mobiscroll = $.mobiscroll || {
            /**
            * Set settings for all instances.
            * @param {Object} o - New default settings.
            */
            setDefaults: function (o) {
                extend(defaults, o);
            },
            presetShort: function (name) {
                this.shorts[name] = function (method) {
                    return init(this, extend(method, { preset: name }), arguments);
                };
            },
            shorts: {},
            presets: {},
            themes: {},
            i18n: {}
        };
    
        $.scroller = $.scroller || $.mobiscroll;
        $.fn.scroller = $.fn.scroller || $.fn.mobiscroll;
    
    })(jQuery);
    mobiscroll_002
    (function ($) {
        $.mobiscroll.i18n.zh = $.extend($.mobiscroll.i18n.zh, {
            setText: '确定',
            cancelText: '取消'
        });
    })(jQuery);
    mobiscroll_004.js
    /*jslint eqeq: true, plusplus: true, undef: true, sloppy: true, vars: true, forin: true */
    (function ($) {
    
        var ms = $.mobiscroll,
            date = new Date(),
            defaults = {
                dateFormat: 'mm/dd/yy',
                dateOrder: 'mmddy',
                timeWheels: 'hhiiA',
                timeFormat: 'hh:ii A',
                startYear: date.getFullYear() - 100,
                endYear: date.getFullYear() + 1,
                monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
                monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
                dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
                dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
                shortYearCutoff: '+10',
                monthText: 'Month',
                dayText: 'Day',
                yearText: 'Year',
                hourText: 'Hours',
                minuteText: 'Minutes',
                secText: 'Seconds',
                ampmText: '&nbsp;',
                nowText: 'Now',
                showNow: false,
                stepHour: 1,
                stepMinute: 1,
                stepSecond: 1,
                separator: ' '
            },
            preset = function (inst) {
                var that = $(this),
                    html5def = {},
                    format;
                // Force format for html5 date inputs (experimental)
                if (that.is('input')) {
                    switch (that.attr('type')) {
                    case 'date':
                        format = 'yy-mm-dd';
                        break;
                    case 'datetime':
                        format = 'yy-mm-ddTHH:ii:ssZ';
                        break;
                    case 'datetime-local':
                        format = 'yy-mm-ddTHH:ii:ss';
                        break;
                    case 'month':
                        format = 'yy-mm';
                        html5def.dateOrder = 'mmyy';
                        break;
                    case 'time':
                        format = 'HH:ii:ss';
                        break;
                    }
                    // Check for min/max attributes
                    var min = that.attr('min'),
                        max = that.attr('max');
                    if (min) {
                        html5def.minDate = ms.parseDate(format, min);
                    }
                    if (max) {
                        html5def.maxDate = ms.parseDate(format, max);
                    }
                }
    
                // Set year-month-day order
                var s = $.extend({}, defaults, html5def, inst.settings),
                    offset = 0,
                    wheels = [],
                    ord = [],
                    o = {},
                    i,
                    k,
                    f = { y: 'getFullYear', m: 'getMonth', d: 'getDate', h: getHour, i: getMinute, s: getSecond, a: getAmPm },
                    p = s.preset,
                    dord = s.dateOrder,
                    tord = s.timeWheels,
                    regen = dord.match(/D/),
                    ampm = tord.match(/a/i),
                    hampm = tord.match(/h/),
                    hformat = p == 'datetime' ? s.dateFormat + s.separator + s.timeFormat : p == 'time' ? s.timeFormat : s.dateFormat,
                    defd = new Date(),
                    stepH = s.stepHour,
                    stepM = s.stepMinute,
                    stepS = s.stepSecond,
                    mind = s.minDate || new Date(s.startYear, 0, 1),
                    maxd = s.maxDate || new Date(s.endYear, 11, 31, 23, 59, 59);
                    
                inst.settings = s;
    
                format = format || hformat;
                    
                if (p.match(/date/i)) {
    
                    // Determine the order of year, month, day wheels
                    $.each(['y', 'm', 'd'], function (j, v) {
                        i = dord.search(new RegExp(v, 'i'));
                        if (i > -1) {
                            ord.push({ o: i, v: v });
                        }
                    });
                    ord.sort(function (a, b) { return a.o > b.o ? 1 : -1; });
                    $.each(ord, function (i, v) {
                        o[v.v] = i;
                    });
    
                    var w = {};
                    for (k = 0; k < 3; k++) {
                        if (k == o.y) {
                            offset++;
                            w[s.yearText] = {};
                            var start = mind.getFullYear(),
                                end = maxd.getFullYear();
                            for (i = start; i <= end; i++) {
                                w[s.yearText][i] = dord.match(/yy/i) ? i : (i + '').substr(2, 2);
                            }
                        } else if (k == o.m) {
                            offset++;
                            w[s.monthText] = {};
                            for (i = 0; i < 12; i++) {
                                var str = dord.replace(/[dy]/gi, '').replace(/mm/, i < 9 ? '0' + (i + 1) : i + 1).replace(/m/, (i + 1));
                                w[s.monthText][i] = str.match(/MM/) ? str.replace(/MM/, '<span class="dw-mon">' + s.monthNames[i] + '</span>') : str.replace(/M/, '<span class="dw-mon">' + s.monthNamesShort[i] + '</span>');
                            }
                        } else if (k == o.d) {
                            offset++;
                            w[s.dayText] = {};
                            for (i = 1; i < 32; i++) {
                                w[s.dayText][i] = dord.match(/dd/i) && i < 10 ? '0' + i : i;
                            }
                        }
                    }
                    wheels.push(w);
                }
    
                if (p.match(/time/i)) {
    
                    // Determine the order of hours, minutes, seconds wheels
                    ord = [];
                    $.each(['h', 'i', 's', 'a'], function (i, v) {
                        i = tord.search(new RegExp(v, 'i'));
                        if (i > -1) {
                            ord.push({ o: i, v: v });
                        }
                    });
                    ord.sort(function (a, b) {
                        return a.o > b.o ? 1 : -1;
                    });
                    $.each(ord, function (i, v) {
                        o[v.v] = offset + i;
                    });
    
                    w = {};
                    for (k = offset; k < offset + 4; k++) {
                        if (k == o.h) {
                            offset++;
                            w[s.hourText] = {};
                            for (i = 0; i < (hampm ? 12 : 24); i += stepH) {
                                w[s.hourText][i] = hampm && i == 0 ? 12 : tord.match(/hh/i) && i < 10 ? '0' + i : i;
                            }
                        } else if (k == o.i) {
                            offset++;
                            w[s.minuteText] = {};
                            for (i = 0; i < 60; i += stepM) {
                                w[s.minuteText][i] = tord.match(/ii/) && i < 10 ? '0' + i : i;
                            }
                        } else if (k == o.s) {
                            offset++;
                            w[s.secText] = {};
                            for (i = 0; i < 60; i += stepS) {
                                w[s.secText][i] = tord.match(/ss/) && i < 10 ? '0' + i : i;
                            }
                        } else if (k == o.a) {
                            offset++;
                            var upper = tord.match(/A/);
                            w[s.ampmText] = { 0: upper ? 'AM' : 'am', 1: upper ? 'PM' : 'pm' };
                        }
                        
                    }
    
                    wheels.push(w);
                }
    
                function get(d, i, def) {
                    if (o[i] !== undefined) {
                        return +d[o[i]];
                    }
                    if (def !== undefined) {
                        return def;
                    }
                    return defd[f[i]] ? defd[f[i]]() : f[i](defd);
                }
    
                function step(v, st) {
                    return Math.floor(v / st) * st;
                }
    
                function getHour(d) {
                    var hour = d.getHours();
                    hour = hampm && hour >= 12 ? hour - 12 : hour;
                    return step(hour, stepH);
                }
    
                function getMinute(d) {
                    return step(d.getMinutes(), stepM);
                }
    
                function getSecond(d) {
                    return step(d.getSeconds(), stepS);
                }
    
                function getAmPm(d) {
                    return ampm && d.getHours() > 11 ? 1 : 0;
                }
    
                function getDate(d) {
                    var hour = get(d, 'h', 0);
                    return new Date(get(d, 'y'), get(d, 'm'), get(d, 'd', 1), get(d, 'a') ? hour + 12 : hour, get(d, 'i', 0), get(d, 's', 0));
                }
    
                inst.setDate = function (d, fill, time, temp) {
                    var i;
                    // Set wheels
                    for (i in o) {
                        this.temp[o[i]] = d[f[i]] ? d[f[i]]() : f[i](d);
                    }
                    this.setValue(true, fill, time, temp);
                };
    
                inst.getDate = function (d) {
                    return getDate(d);
                };
    
                return {
                    button3Text: s.showNow ? s.nowText : undefined,
                    button3: s.showNow ? function () { inst.setDate(new Date(), false, 0.3, true); } : undefined,
                    wheels: wheels,
                    headerText: function (v) {
                        return ms.formatDate(hformat, getDate(inst.temp), s);
                    },
                    /**
                    * Builds a date object from the wheel selections and formats it to the given date/time format
                    * @param {Array} d - An array containing the selected wheel values
                    * @return {String} - The formatted date string
                    */
                    formatResult: function (d) {
                        return ms.formatDate(format, getDate(d), s);
                    },
                    /**
                    * Builds a date object from the input value and returns an array to set wheel values
                    * @return {Array} - An array containing the wheel values to set
                    */
                    parseValue: function (val) {
                        var d = new Date(),
                            i,
                            result = [];
                        try {
                            d = ms.parseDate(format, val, s);
                        } catch (e) {
                        }
                        // Set wheels
                        for (i in o) {
                            result[o[i]] = d[f[i]] ? d[f[i]]() : f[i](d);
                        }
                        return result;
                    },
                    /**
                    * Validates the selected date to be in the minDate / maxDate range and sets unselectable values to disabled
                    * @param {Object} dw - jQuery object containing the generated html
                    * @param {Integer} [i] - Index of the changed wheel, not set for initial validation
                    */
                    validate: function (dw, i) {
                        var temp = inst.temp, //.slice(0),
                            mins = { y: mind.getFullYear(), m: 0, d: 1, h: 0, i: 0, s: 0, a: 0 },
                            maxs = { y: maxd.getFullYear(), m: 11, d: 31, h: step(hampm ? 11 : 23, stepH), i: step(59, stepM), s: step(59, stepS), a: 1 },
                            minprop = true,
                            maxprop = true;
                        $.each(['y', 'm', 'd', 'a', 'h', 'i', 's'], function (x, i) {
                            if (o[i] !== undefined) {
                                var min = mins[i],
                                    max = maxs[i],
                                    maxdays = 31,
                                    val = get(temp, i),
                                    t = $('.dw-ul', dw).eq(o[i]),
                                    y,
                                    m;
                                if (i == 'd') {
                                    y = get(temp, 'y');
                                    m = get(temp, 'm');
                                    maxdays = 32 - new Date(y, m, 32).getDate();
                                    max = maxdays;
                                    if (regen) {
                                        $('.dw-li', t).each(function () {
                                            var that = $(this),
                                                d = that.data('val'),
                                                w = new Date(y, m, d).getDay(),
                                                str = dord.replace(/[my]/gi, '').replace(/dd/, d < 10 ? '0' + d : d).replace(/d/, d);
                                            $('.dw-i', that).html(str.match(/DD/) ? str.replace(/DD/, '<span class="dw-day">' + s.dayNames[w] + '</span>') : str.replace(/D/, '<span class="dw-day">' + s.dayNamesShort[w] + '</span>'));
                                        });
                                    }
                                }
                                if (minprop && mind) {
                                    min = mind[f[i]] ? mind[f[i]]() : f[i](mind);
                                }
                                if (maxprop && maxd) {
                                    max = maxd[f[i]] ? maxd[f[i]]() : f[i](maxd);
                                }
                                if (i != 'y') {
                                    var i1 = $('.dw-li', t).index($('.dw-li[data-val="' + min + '"]', t)),
                                        i2 = $('.dw-li', t).index($('.dw-li[data-val="' + max + '"]', t));
                                    $('.dw-li', t).removeClass('dw-v').slice(i1, i2 + 1).addClass('dw-v');
                                    if (i == 'd') { // Hide days not in month
                                        $('.dw-li', t).removeClass('dw-h').slice(maxdays).addClass('dw-h');
                                    }
                                }
                                if (val < min) {
                                    val = min;
                                }
                                if (val > max) {
                                    val = max;
                                }
                                if (minprop) {
                                    minprop = val == min;
                                }
                                if (maxprop) {
                                    maxprop = val == max;
                                }
                                // Disable some days
                                if (s.invalid && i == 'd') {
                                    var idx = [];
                                    // Disable exact dates
                                    if (s.invalid.dates) {
                                        $.each(s.invalid.dates, function (i, v) {
                                            if (v.getFullYear() == y && v.getMonth() == m) {
                                                idx.push(v.getDate() - 1);
                                            }
                                        });
                                    }
                                    // Disable days of week
                                    if (s.invalid.daysOfWeek) {
                                        var first = new Date(y, m, 1).getDay(),
                                            j;
                                        $.each(s.invalid.daysOfWeek, function (i, v) {
                                            for (j = v - first; j < maxdays; j += 7) {
                                                if (j >= 0) {
                                                    idx.push(j);
                                                }
                                            }
                                        });
                                    }
                                    // Disable days of month
                                    if (s.invalid.daysOfMonth) {
                                        $.each(s.invalid.daysOfMonth, function (i, v) {
                                            v = (v + '').split('/');
                                            if (v[1]) {
                                                if (v[0] - 1 == m) {
                                                    idx.push(v[1] - 1);
                                                }
                                            } else {
                                                idx.push(v[0] - 1);
                                            }
                                        });
                                    }
                                    $.each(idx, function (i, v) {
                                        $('.dw-li', t).eq(v).removeClass('dw-v');
                                    });
                                }
    
                                // Set modified value
                                temp[o[i]] = val;
                            }
                        });
                    },
                    methods: {
                        /**
                        * Returns the currently selected date.
                        * @param {Boolean} temp - If true, return the currently shown date on the picker, otherwise the last selected one
                        * @return {Date}
                        */
                        getDate: function (temp) {
                            var inst = $(this).mobiscroll('getInst');
                            if (inst) {
                                return inst.getDate(temp ? inst.temp : inst.values);
                            }
                        },
                        /**
                        * Sets the selected date
                        * @param {Date} d - Date to select.
                        * @param {Boolean} [fill] - Also set the value of the associated input element. Default is true.
                        * @return {Object} - jQuery object to maintain chainability
                        */
                        setDate: function (d, fill, time, temp) {
                            if (fill == undefined) {
                                fill = false;
                            }
                            return this.each(function () {
                                var inst = $(this).mobiscroll('getInst');
                                if (inst) {
                                    inst.setDate(d, fill, time, temp);
                                }
                            });
                        }
                    }
                };
            };
    
        $.each(['date', 'time', 'datetime'], function (i, v) {
            ms.presets[v] = preset;
            ms.presetShort(v);
        });
    
        /**
        * Format a date into a string value with a specified format.
        * @param {String} format - Output format.
        * @param {Date} date - Date to format.
        * @param {Object} settings - Settings.
        * @return {String} - Returns the formatted date string.
        */
        ms.formatDate = function (format, date, settings) {
            if (!date) {
                return null;
            }
            var s = $.extend({}, defaults, settings),
                look = function (m) { // Check whether a format character is doubled
                    var n = 0;
                    while (i + 1 < format.length && format.charAt(i + 1) == m) {
                        n++;
                        i++;
                    }
                    return n;
                },
                f1 = function (m, val, len) { // Format a number, with leading zero if necessary
                    var n = '' + val;
                    if (look(m)) {
                        while (n.length < len) {
                            n = '0' + n;
                        }
                    }
                    return n;
                },
                f2 = function (m, val, s, l) { // Format a name, short or long as requested
                    return (look(m) ? l[val] : s[val]);
                },
                i,
                output = '',
                literal = false;
    
            for (i = 0; i < format.length; i++) {
                if (literal) {
                    if (format.charAt(i) == "'" && !look("'")) {
                        literal = false;
                    } else {
                        output += format.charAt(i);
                    }
                } else {
                    switch (format.charAt(i)) {
                    case 'd':
                        output += f1('d', date.getDate(), 2);
                        break;
                    case 'D':
                        output += f2('D', date.getDay(), s.dayNamesShort, s.dayNames);
                        break;
                    case 'o':
                        output += f1('o', (date.getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000, 3);
                        break;
                    case 'm':
                        output += f1('m', date.getMonth() + 1, 2);
                        break;
                    case 'M':
                        output += f2('M', date.getMonth(), s.monthNamesShort, s.monthNames);
                        break;
                    case 'y':
                        output += (look('y') ? date.getFullYear() : (date.getYear() % 100 < 10 ? '0' : '') + date.getYear() % 100);
                        break;
                    case 'h':
                        var h = date.getHours();
                        output += f1('h', (h > 12 ? (h - 12) : (h == 0 ? 12 : h)), 2);
                        break;
                    case 'H':
                        output += f1('H', date.getHours(), 2);
                        break;
                    case 'i':
                        output += f1('i', date.getMinutes(), 2);
                        break;
                    case 's':
                        output += f1('s', date.getSeconds(), 2);
                        break;
                    case 'a':
                        output += date.getHours() > 11 ? 'pm' : 'am';
                        break;
                    case 'A':
                        output += date.getHours() > 11 ? 'PM' : 'AM';
                        break;
                    case "'":
                        if (look("'")) {
                            output += "'";
                        } else {
                            literal = true;
                        }
                        break;
                    default:
                        output += format.charAt(i);
                    }
                }
            }
            return output;
        };
    
        /**
        * Extract a date from a string value with a specified format.
        * @param {String} format - Input format.
        * @param {String} value - String to parse.
        * @param {Object} settings - Settings.
        * @return {Date} - Returns the extracted date.
        */
        ms.parseDate = function (format, value, settings) {
            var def = new Date();
    
            if (!format || !value) {
                return def;
            }
    
            value = (typeof value == 'object' ? value.toString() : value + '');
    
            var s = $.extend({}, defaults, settings),
                shortYearCutoff = s.shortYearCutoff,
                year = def.getFullYear(),
                month = def.getMonth() + 1,
                day = def.getDate(),
                doy = -1,
                hours = def.getHours(),
                minutes = def.getMinutes(),
                seconds = 0, //def.getSeconds(),
                ampm = -1,
                literal = false, // Check whether a format character is doubled
                lookAhead = function (match) {
                    var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match);
                    if (matches) {
                        iFormat++;
                    }
                    return matches;
                },
                getNumber = function (match) { // Extract a number from the string value
                    lookAhead(match);
                    var size = (match == '@' ? 14 : (match == '!' ? 20 : (match == 'y' ? 4 : (match == 'o' ? 3 : 2)))),
                        digits = new RegExp('^\d{1,' + size + '}'),
                        num = value.substr(iValue).match(digits);
    
                    if (!num) {
                        return 0;
                    }
                    //throw 'Missing number at position ' + iValue;
                    iValue += num[0].length;
                    return parseInt(num[0], 10);
                },
                getName = function (match, s, l) { // Extract a name from the string value and convert to an index
                    var names = (lookAhead(match) ? l : s),
                        i;
    
                    for (i = 0; i < names.length; i++) {
                        if (value.substr(iValue, names[i].length).toLowerCase() == names[i].toLowerCase()) {
                            iValue += names[i].length;
                            return i + 1;
                        }
                    }
                    return 0;
                    //throw 'Unknown name at position ' + iValue;
                },
                checkLiteral = function () {
                    //if (value.charAt(iValue) != format.charAt(iFormat))
                    //throw 'Unexpected literal at position ' + iValue;
                    iValue++;
                },
                iValue = 0,
                iFormat;
    
            for (iFormat = 0; iFormat < format.length; iFormat++) {
                if (literal) {
                    if (format.charAt(iFormat) == "'" && !lookAhead("'")) {
                        literal = false;
                    } else {
                        checkLiteral();
                    }
                } else {
                    switch (format.charAt(iFormat)) {
                    case 'd':
                        day = getNumber('d');
                        break;
                    case 'D':
                        getName('D', s.dayNamesShort, s.dayNames);
                        break;
                    case 'o':
                        doy = getNumber('o');
                        break;
                    case 'm':
                        month = getNumber('m');
                        break;
                    case 'M':
                        month = getName('M', s.monthNamesShort, s.monthNames);
                        break;
                    case 'y':
                        year = getNumber('y');
                        break;
                    case 'H':
                        hours = getNumber('H');
                        break;
                    case 'h':
                        hours = getNumber('h');
                        break;
                    case 'i':
                        minutes = getNumber('i');
                        break;
                    case 's':
                        seconds = getNumber('s');
                        break;
                    case 'a':
                        ampm = getName('a', ['am', 'pm'], ['am', 'pm']) - 1;
                        break;
                    case 'A':
                        ampm = getName('A', ['am', 'pm'], ['am', 'pm']) - 1;
                        break;
                    case "'":
                        if (lookAhead("'")) {
                            checkLiteral();
                        } else {
                            literal = true;
                        }
                        break;
                    default:
                        checkLiteral();
                    }
                }
            }
            if (year < 100) {
                year += new Date().getFullYear() - new Date().getFullYear() % 100 +
                    (year <= (typeof shortYearCutoff != 'string' ? shortYearCutoff : new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10)) ? 0 : -100);
            }
            if (doy > -1) {
                month = 1;
                day = doy;
                do {
                    var dim = 32 - new Date(year, month - 1, 32).getDate();
                    if (day <= dim) {
                        break;
                    }
                    month++;
                    day -= dim;
                } while (true);
            }
            hours = (ampm == -1) ? hours : ((ampm && hours < 12) ? (hours + 12) : (!ampm && hours == 12 ? 0 : hours));
            var date = new Date(year, month - 1, day, hours, minutes, seconds);
            if (date.getFullYear() != year || date.getMonth() + 1 != month || date.getDate() != day) {
                throw 'Invalid date';
            }
            return date;
        };
    
    })(jQuery);
    mobiscroll.js
    <!--  陈廷峰增加中文资源包 (ceo@vmeitime.com)  -->
    (function ($) {
        $.mobiscroll.i18n.zh = $.extend($.mobiscroll.i18n.zh, {
            dateFormat: 'yyyy-mm-dd',
            dateOrder: 'yymmdd',
            dayNames: ['周日', '周一;', '周二;', '周三', '周四', '周五', '周六'],
            dayNamesShort: ['日', '一', '二', '三', '四', '五', '六'],
            dayText: '日',
            hourText: '时',
            minuteText: '分',
            monthNames: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
            monthNamesShort: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
            monthText: '月',
            secText: '秒',
            timeFormat: 'HH:ii',
            timeWheels: 'HHii',
            yearText: '年'
        });
    })(jQuery);
    mobiscroll_003.js
    (function ($) {
        var theme = {
            defaults: {
                dateOrder: 'Mddyy',
                mode: 'mixed',
                rows: 5,
                 70,
                height: 36,
                showLabel: true,
                useShortLabels: true
            }
        }
    
        $.mobiscroll.themes['android-ics'] = theme;
        $.mobiscroll.themes['android-ics light'] = theme;
    
    })(jQuery);
    mobiscroll_005.js
    <!--时间选择-->

    <script type="text/javascript">
    $(function() {
    var currYear = (new Date()).getFullYear();
    var opt = {};
    opt.date = {
    preset: 'date' //显示年月日
    };
    opt.datetime = {
    preset: 'datetime' //显示年月日时分秒
    };
    opt.time = {
    preset: 'time' //显示时分
    };
    opt.default = {
    theme: 'android-ics light', //皮肤样式
    display: 'modal', //显示方式
    mode: 'scroller', //日期选择模式
    dateFormat: 'yyyy-mm-dd',
    lang: 'zh',
    showNow: true,
    nowText: "今天",
    startYear: currYear - 20, //开始年份
    endYear: currYear + 20 //结束年份
    };

    var optDateTime = $.extend(opt['datetime'], opt['default']); //显示年月日时分秒 选datetime
    $("#appDateTime").mobiscroll(optDateTime).datetime(optDateTime);

    });
    </script>

     
    <input type="text" class="fhinput" name="appDateTime" id="appDateTime" value="">

  • 相关阅读:
    Object中的线程等待和Condition
    synchronized锁和Lock锁
    手写二叉排序树(二叉查找树、二叉搜索树)
    JDK源码之ArrayList-Iterator
    JDK源码之ArrayList
    Integer&int,自动装箱&自动拆箱
    学习Zookeeper第一课
    Thumbnailator处理图片
    线程的停止和中断
    BigInteger和BigDecimal
  • 原文地址:https://www.cnblogs.com/dazhangli/p/8548414.html
Copyright © 2020-2023  润新知