Project

General

Profile

Statistics
| Branch: | Revision:

root / docs / www / colonyscout / internal / jeditable / js / jquery.timepicker.js @ f59acf11

History | View | Annotate | Download (2.9 KB)

1
/* jQuery timepicker
2
 * replaces a single text input with a set of pulldowns to select hour, minute, and am/pm
3
 *
4
 * Copyright (c) 2007 Jason Huck/Core Five Creative (http://www.corefive.com/)
5
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) 
6
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
7
 *
8
 * Version 1.0
9
 */
10

    
11
(function($){
12
        jQuery.fn.timepicker = function(){
13
                this.each(function(){
14
                        // get the ID and value of the current element
15
                        var i = this.id;
16
                        var v = $(this).val();
17
        
18
                        // the options we need to generate
19
                        var hrs = new Array('01','02','03','04','05','06','07','08','09','10','11','12');
20
                        var mins = new Array('00','15','30','45');
21
                        var ap = new Array('am','pm');
22
                        
23
                        // default to the current time
24
                        var d = new Date;
25
                        var h = d.getHours();
26
                        var m = d.getMinutes();
27
                        var p = (h >= 12 ? 'pm' : 'am');
28
                        
29
                        // adjust hour to 12-hour format
30
                        if(h > 12) h = h - 12;
31
                                
32
                        // round minutes to nearest quarter hour
33
                        for(mn in mins){
34
                                if(m <= parseInt(mins[mn])){
35
                                        m = parseInt(mins[mn]);
36
                                        break;
37
                                }
38
                        }
39
                        
40
                        // increment hour if we push minutes to next 00
41
                        if(m > 45){
42
                                m = 0;
43
                                
44
                                switch(h){
45
                                        case(11):
46
                                                h += 1;
47
                                                p = (p == 'am' ? 'pm' : 'am');
48
                                                break;
49
                                                
50
                                        case(12):
51
                                                h = 1;
52
                                                break;
53
                                                
54
                                        default:
55
                                                h += 1;
56
                                                break;
57
                                }
58
                        }
59

    
60
                        // override with current values if applicable
61
                        if(v.length == 7){
62
                                h = parseInt(v.substr(0,2));
63
                                m = parseInt(v.substr(3,2));
64
                                p = v.substr(5);
65
                        }
66
                    
67
                        // build the new DOM objects
68
                        var output = '';
69
                        
70
                        output += '<select id="h_' + i + '" class="h timepicker">';                                
71
                        for(hr in hrs){
72
                                output += '<option value="' + hrs[hr] + '"';
73
                                if(parseInt(hrs[hr]) == h) output += ' selected';
74
                                output += '>' + hrs[hr] + '</option>';
75
                        }
76
                        output += '</select>';
77
        
78
                        output += '<select id="m_' + i + '" class="m timepicker">';                                
79
                        for(mn in mins){
80
                                output += '<option value="' + mins[mn] + '"';
81
                                if(parseInt(mins[mn]) == m) output += ' selected';
82
                                output += '>' + mins[mn] + '</option>';
83
                        }
84
                        output += '</select>';                                
85
        
86
                        output += '<select id="p_' + i + '" class="p timepicker">';                                
87
                        for(pp in ap){
88
                                output += '<option value="' + ap[pp] + '"';
89
                                if(ap[pp] == p) output += ' selected';
90
                                output += '>' + ap[pp] + '</option>';
91
                        }
92
                        output += '</select>';
93
    
94
                        // hide original input and append new replacement inputs
95
                        //$(this).attr('type','hidden').after(output);
96
            // Fix IE crash (tuupola@appelsiini.net)
97
                        $(this).hide().after(output);
98
                        
99
                });
100
                
101
                
102
                $('select.timepicker').change(function(){
103
                        var i = this.id.substr(2);
104
                        var h = $('#h_' + i).val();
105
                        var m = $('#m_' + i).val();
106
                        var p = $('#p_' + i).val();
107
                        var v = h + ':' + m + p;
108
                        $('#' + i).val(v);
109
                });
110
                
111
                return this;
112
        };
113
})(jQuery);
114

    
115

    
116

    
117
/* SVN: $Id: jquery.timepicker.js 456 2007-07-16 19:09:57Z Jason Huck $ */