├── img ├── screenshot.png ├── glyphicons-halflings.png └── glyphicons-halflings-white.png ├── css ├── smoothness │ ├── images │ │ ├── ui-icons_222222_256x240.png │ │ ├── ui-icons_2e83ff_256x240.png │ │ ├── ui-icons_454545_256x240.png │ │ ├── ui-icons_888888_256x240.png │ │ ├── ui-icons_cd0a0a_256x240.png │ │ ├── ui-bg_flat_0_aaaaaa_40x100.png │ │ ├── ui-bg_flat_75_ffffff_40x100.png │ │ ├── ui-bg_glass_55_fbf9ee_1x400.png │ │ ├── ui-bg_glass_65_ffffff_1x400.png │ │ ├── ui-bg_glass_75_dadada_1x400.png │ │ ├── ui-bg_glass_75_e6e6e6_1x400.png │ │ ├── ui-bg_glass_95_fef1ec_1x400.png │ │ └── ui-bg_highlight-soft_75_cccccc_1x100.png │ ├── jquery-ui-1.9.1.custom.min.css │ └── jquery-ui-1.9.1.custom.css ├── webkitSynth.css ├── bootstrap-responsive.min.css └── bootstrap-responsive.css ├── README.md ├── index.html └── js ├── webkitSynth.js ├── jquery.knob.js ├── bootstrap.min.js └── jquery.kontrol.js /img/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeremywen/webkitSynth/HEAD/img/screenshot.png -------------------------------------------------------------------------------- /img/glyphicons-halflings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeremywen/webkitSynth/HEAD/img/glyphicons-halflings.png -------------------------------------------------------------------------------- /img/glyphicons-halflings-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeremywen/webkitSynth/HEAD/img/glyphicons-halflings-white.png -------------------------------------------------------------------------------- /css/smoothness/images/ui-icons_222222_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeremywen/webkitSynth/HEAD/css/smoothness/images/ui-icons_222222_256x240.png -------------------------------------------------------------------------------- /css/smoothness/images/ui-icons_2e83ff_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeremywen/webkitSynth/HEAD/css/smoothness/images/ui-icons_2e83ff_256x240.png -------------------------------------------------------------------------------- /css/smoothness/images/ui-icons_454545_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeremywen/webkitSynth/HEAD/css/smoothness/images/ui-icons_454545_256x240.png -------------------------------------------------------------------------------- /css/smoothness/images/ui-icons_888888_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeremywen/webkitSynth/HEAD/css/smoothness/images/ui-icons_888888_256x240.png -------------------------------------------------------------------------------- /css/smoothness/images/ui-icons_cd0a0a_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeremywen/webkitSynth/HEAD/css/smoothness/images/ui-icons_cd0a0a_256x240.png -------------------------------------------------------------------------------- /css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeremywen/webkitSynth/HEAD/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png -------------------------------------------------------------------------------- /css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeremywen/webkitSynth/HEAD/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png -------------------------------------------------------------------------------- /css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeremywen/webkitSynth/HEAD/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png -------------------------------------------------------------------------------- /css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeremywen/webkitSynth/HEAD/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png -------------------------------------------------------------------------------- /css/smoothness/images/ui-bg_glass_75_dadada_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeremywen/webkitSynth/HEAD/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png -------------------------------------------------------------------------------- /css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeremywen/webkitSynth/HEAD/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png -------------------------------------------------------------------------------- /css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeremywen/webkitSynth/HEAD/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png -------------------------------------------------------------------------------- /css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeremywen/webkitSynth/HEAD/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![Screenshot](https://raw.github.com/jeremywen/webkitSynth/master/img/screenshot.png) 2 | 3 | Demo: http://jeremywentworth.com/projects/webkitSynth 4 | 5 | Audio Demo: https://soundcloud.com/jeremywentworth/demo-of-webkitsynth 6 | -------------------------------------------------------------------------------- /css/webkitSynth.css: -------------------------------------------------------------------------------- 1 | body { 2 | padding-top: 50px; 3 | padding-bottom: 40px; 4 | } 5 | .container{ 6 | margin-left: 40px; 7 | margin-right: 10px; 8 | } 9 | input[type="text"]{ 10 | -webkit-box-shadow: inset 0 0px 0px; 11 | } 12 | 13 | .knobwell{ 14 | text-align:center; 15 | float:left; 16 | width:240px; 17 | height: 240px; 18 | color:rgb(135, 206, 235); 19 | margin: 10px; 20 | padding: 7px; 21 | } 22 | 23 | 24 | h3{ 25 | padding: 0px; 26 | margin: 10px; 27 | line-height: 25px; 28 | } 29 | 30 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | WebkitSynth 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 20 | 21 | 27 | 28 | 29 | 30 | 31 | Fork me on GitHub 34 | 35 | 36 | 53 | 54 |
55 | 56 |
57 |

Pitch Sequence

58 |
59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 |
68 |
69 | 70 |
71 |

Filter Sequence

72 |
73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 |
82 |
83 | 84 |
85 |

Seq Speed

86 | 87 |
88 | 89 |
90 |

Wave

91 | 92 |
93 | 94 |
95 |

Midi Pitch

96 | 97 |
98 | 99 |
100 |

Osc Freq

101 | 102 |
103 | 104 |
105 |

Filter Attack

106 | 107 |
108 | 109 |
110 |

Filter Decay

111 | 112 |
113 | 114 |
115 |

Amp Attack

116 | 117 |
118 | 119 |
120 |

Amp Decay

121 | 122 |
123 | 124 |
125 |

Filter Type

126 | 127 |
128 | 129 |
130 |

Filter Freq

131 | 132 |
133 | 134 |
135 |

Filter Q

136 | 137 |
138 | 139 |
140 |

Filter Gain

141 | 142 |
143 | 144 |
145 |

Filter Freq & Q

146 |
147 | x : 148 | y : 149 |
150 |
151 | 152 |
153 |

Filter Freq & Gain

154 |
155 | x : 156 | y : 157 |
158 |
159 | 160 |
161 |

Filter Q & Gain

162 |
163 | x : 164 | y : 165 |
166 |
167 | 168 |
169 |

Gain

170 | 171 |
172 | 173 |
174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | -------------------------------------------------------------------------------- /js/webkitSynth.js: -------------------------------------------------------------------------------- 1 | var osc = { 2 | 0: "sine", 3 | 1: "square", 4 | 2: "sawtooth", 5 | 3: "triangle", 6 | 4: "custom" 7 | } 8 | var filters = { 9 | 0: "lowpass", 10 | 1: "highpass", 11 | 2: "bandpass", 12 | 3: "lowshelf", 13 | 4: "highshelf", 14 | 5: "peaking", 15 | 6: "notch", 16 | 7: "allpass" 17 | } 18 | 19 | var $pitchBars = $("#pitchBars"); 20 | var $freqBars = $("#freqBars"); 21 | var $gain = $("#gain"); 22 | var $seqspeed = $("#seqspeed"); 23 | var $pitch = $("#pitch"); 24 | var $mpitch = $("#mpitch"); 25 | var $ampattack = $("#ampattack"); 26 | var $ampdecay = $("#ampdecay"); 27 | var $filterattack = $("#filterattack"); 28 | var $filterdecay = $("#filterdecay"); 29 | var $wave = $("#wave"); 30 | var $filterf = $("#filterf"); 31 | var $filterq = $("#filterq"); 32 | var $filtert = $("#filtert"); 33 | var $filterg = $("#filterg"); 34 | var $sequencerOff = $("#sequencerOff"); 35 | var $sequencerOn = $("#sequencerOn"); 36 | var $rndSeq = $("#rndSeq"); 37 | var $pitchBar = $(".pitchBar") 38 | var runSeq = false; 39 | var prevOsc; 40 | var seqPos = 0; 41 | var seqSpeedInterval = 200; 42 | var seqLength = 8; 43 | var maxFilterFreq = 15000; 44 | var maxMidiPitch = 127; 45 | 46 | /////////////////////////////////////////////////////////////////////////////////////////////// 47 | //audio setup 48 | /////////////////////////////////////////////////////////////////////////////////////////////// 49 | var context = new AudioContext(); 50 | var mainOsc = context.createOscillator(); 51 | var mainFilter = context.createBiquadFilter(); 52 | var gainNode = context.createGain(); 53 | 54 | 55 | function runSequencers(){ 56 | if(!runSeq){console.log("stop");return;} 57 | triggerOnce(); 58 | 59 | var pSeqVal = parseInt($pitchBars.children().eq(seqPos).attr("value"), 10); 60 | var fSeqVal = parseInt($freqBars.children().eq(seqPos).attr("value"), 10); 61 | //console.log("seqPos=%o, pSeqVal=%o, fSeqVal=%o",seqPos,pSeqVal,fSeqVal); 62 | 63 | mainOsc.frequency.value = midiToFreq(constrain(parseInt($mpitch.val(),10) + pSeqVal,1,maxMidiPitch)); 64 | mainFilter.frequency.value = constrain(parseInt($filterf.val(),10) + fSeqVal,0,maxFilterFreq); 65 | 66 | (seqPos == (seqLength-1)) ? seqPos=0 : seqPos++; 67 | setTimeout(runSequencers,seqSpeedInterval); 68 | } 69 | 70 | 71 | function triggerOnce(){ 72 | var currTime = context.currentTime; 73 | prevOsc && prevOsc.stop(0); 74 | 75 | var oscillatorTrig = prevOsc = context.createOscillator(); 76 | oscillatorTrig.type = mainOsc.type; 77 | oscillatorTrig.frequency.value = mainOsc.frequency.value; 78 | 79 | var filterTrig = context.createBiquadFilter(); 80 | filterTrig.type = mainFilter.type; 81 | filterTrig.frequency.value = mainFilter.frequency.value; 82 | filterTrig.Q.value = mainFilter.Q.value; 83 | filterTrig.gain.value = mainFilter.gain.value; 84 | oscillatorTrig.connect(filterTrig); 85 | 86 | var gainNodeTrig = context.createGain(); 87 | gainNodeTrig.gain.cancelScheduledValues( currTime ); 88 | gainNodeTrig.gain.setValueAtTime(gainNode.gain.value, currTime); 89 | filterTrig.connect(gainNodeTrig); 90 | gainNodeTrig.connect(context.destination); 91 | 92 | var timeAtAttack = currTime + ($ampattack.val()/100); 93 | gainNodeTrig.gain.linearRampToValueAtTime(parseInt($gain.val(),10)/100, timeAtAttack); 94 | gainNodeTrig.gain.linearRampToValueAtTime(0, timeAtAttack + ($ampdecay.val()/100)); 95 | 96 | timeAtAttack = currTime + ($filterattack.val()/100); 97 | filterTrig.frequency.linearRampToValueAtTime(parseInt($filterf.val(),10), timeAtAttack); 98 | filterTrig.frequency.linearRampToValueAtTime(0, timeAtAttack + ($filterdecay.val()/100)); 99 | 100 | oscillatorTrig.start(0); 101 | } 102 | 103 | 104 | /////////////////////////////////////////////////////////////////////////////////////////////// 105 | // sequencer bars 106 | /////////////////////////////////////////////////////////////////////////////////////////////// 107 | $pitchBars.bars({ 108 | fgColor:"skyBlue", 109 | bgColor:"#ffffff", 110 | displayInput:true, 111 | cols:8, 112 | width:240, 113 | height:180, 114 | min:-24, 115 | max:24, 116 | change:function(v){ 117 | var barIdx = parseInt(Object.keys(v)[0],10); 118 | $pitchBars.children().eq(barIdx).attr("value", v[barIdx]); 119 | } 120 | }); 121 | 122 | 123 | $freqBars.bars({ 124 | fgColor:"skyBlue", 125 | bgColor:"#ffffff", 126 | displayInput:true, 127 | cols:8, 128 | width:240, 129 | height:180, 130 | min:-(maxFilterFreq/2), 131 | max:(maxFilterFreq/2), 132 | change:function(v){ 133 | var barIdx = parseInt(Object.keys(v)[0],10); 134 | $freqBars.children().eq(barIdx).attr("value", v[barIdx]); 135 | } 136 | }); 137 | 138 | 139 | function randomizeSequencers(){ 140 | $pitchBars.find("input").each(function (){ 141 | $(this).val(Math.floor(Math.random()*48)-(24)); 142 | }).trigger("change"); 143 | 144 | $freqBars.find("input").each(function (){ 145 | $(this).val(Math.floor(Math.random()*maxFilterFreq)-(maxFilterFreq/2)); 146 | }).trigger("change"); 147 | } 148 | 149 | 150 | /////////////////////////////////////////////////////////////////////////////////////////////// 151 | // knobs 152 | /////////////////////////////////////////////////////////////////////////////////////////////// 153 | function setSeqSpeed(v) { 154 | $seqspeed.val(seqSpeedInterval=v); 155 | console.log(v); 156 | } 157 | $seqspeed.knob({ bgColor:"white", min:0, max:500, cursor:false, angleOffset:-140, angleArc:280, "change" : setSeqSpeed }); 158 | setSeqSpeed(140); $seqspeed.trigger("change"); 159 | 160 | 161 | function setOscType(v) { 162 | $wave.val(v); 163 | mainOsc.type = osc[v]; 164 | console.log(v); 165 | } 166 | $wave.knob({ bgColor:"white", min:0, max:3, cursor:true, angleOffset:-140, angleArc:280, "change" : setOscType }); 167 | setOscType(1); $wave.trigger("change"); 168 | 169 | 170 | function setOscPitch(v) { 171 | v = constrain(v,13000); 172 | $pitch.val(mainOsc.frequency.value = v); 173 | var midiVal = freqToMidi(v); 174 | if($mpitch.val()!=midiVal){ 175 | $mpitch.val(midiVal).trigger("change"); 176 | } 177 | console.log("osc pitch = "+v); 178 | } 179 | $pitch.knob({ bgColor:"white", min:1, max:13000, angleOffset:-140, angleArc:280, "change" : setOscPitch }); 180 | setOscPitch(500); $pitch.trigger("change"); 181 | 182 | 183 | function setMPitch(v) { 184 | v = constrain(v,1,maxMidiPitch); 185 | $mpitch.val(v); 186 | mainOsc.frequency.value = midiToFreq(v); 187 | if($pitch.val()!=mainOsc.frequency.value){ 188 | $pitch.val(mainOsc.frequency.value).trigger("change"); 189 | } 190 | console.log(v); 191 | } 192 | $mpitch.knob({ bgColor:"white", min:1, max:maxMidiPitch, angleOffset:-140, angleArc:280, "change" : setMPitch }); 193 | setMPitch(60); $mpitch.trigger("change"); 194 | 195 | 196 | function setFilterT(v) { 197 | $filtert.val(v); 198 | mainFilter.type = filters[v]; 199 | console.log(v); 200 | } 201 | $filtert.knob({ bgColor:"white", min:0, max:7, cursor:true, angleOffset:-140, angleArc:280, "change" : setFilterT }); 202 | setFilterT(0); $filtert.trigger("change"); 203 | 204 | 205 | function setFilterF(v) { 206 | if(v>maxFilterFreq)return; 207 | $filterf.val(mainFilter.frequency.value = v); 208 | console.log("filter f = "+v); 209 | } 210 | $filterf.knob({ bgColor:"white", min:0, max:maxFilterFreq, angleOffset:-140, angleArc:280, "change" : setFilterF }); 211 | setFilterF(5000); $filterf.trigger("change"); 212 | 213 | 214 | function setFilterQ(v) { 215 | $filterq.val(v); 216 | mainFilter.Q.value = v/10; 217 | console.log(v); 218 | } 219 | $filterq.knob({ bgColor:"white", min:0, max:100, angleOffset:-140, angleArc:280, "change" : setFilterQ }); 220 | setFilterQ(40); $filterq.trigger("change"); 221 | 222 | 223 | function setFilterG(v) { 224 | $filterg.val(mainFilter.gain.value = v); 225 | console.log(v); 226 | } 227 | $filterg.knob({ bgColor:"white", min:-100, max:100, angleOffset:-140, angleArc:280, "change" : setFilterG }); 228 | setFilterG(10); $filterg.trigger("change"); 229 | 230 | 231 | function setGain(v) { 232 | $gain.val(v); 233 | gainNode.gain.value = v/100; 234 | console.log("gainNode.gain.value="+gainNode.gain.value); 235 | } 236 | $gain.knob({ bgColor:"white", min:0, max:40, angleOffset:-140, angleArc:280, "change" : setGain }); 237 | setGain(20); $gain.trigger("change"); 238 | 239 | 240 | $ampattack.knob({ bgColor:"white", min:0, max:50, angleOffset:-140, angleArc:280, "change" : function(){} }); 241 | $ampattack.val(5).trigger("change"); 242 | 243 | $ampdecay.knob({ bgColor:"white", min:0, max:50, angleOffset:-140, angleArc:280, "change" : function(){} }); 244 | $ampdecay.val(15).trigger("change"); 245 | 246 | $filterattack.knob({ bgColor:"white", min:0, max:50, angleOffset:-140, angleArc:280, "change" : function(){} }); 247 | $filterattack.val(5).trigger("change"); 248 | 249 | $filterdecay.knob({ bgColor:"white", min:0, max:50, angleOffset:-140, angleArc:280, "change" : function(){} }); 250 | $filterdecay.val(15).trigger("change"); 251 | 252 | 253 | /////////////////////////////////////////////////////////////////////////////////////////////// 254 | // xy pads 255 | /////////////////////////////////////////////////////////////////////////////////////////////// 256 | $("#filterfq").xy({ 257 | displayInput:false, displayPrevious:false 258 | , min : -100, max : 100 259 | , width : 200, height : 170 260 | , fgColor:"skyblue", bgColor:"#EEEEEE" 261 | , change : function (value) { 262 | value.x = (value[0]+100)/200; 263 | value.y = (value[1]+100)/200; 264 | setFilterF(maxFilterFreq*value.x); $filterf.trigger("change"); 265 | setFilterQ(100*value.y); $filterq.trigger("change"); 266 | console.log("change : ", value); 267 | } 268 | }).css({'border':'5px solid #FFF', 'margin':'15px'}); 269 | 270 | $("#filterfg").xy({ 271 | displayInput:false, displayPrevious:false 272 | , min : -100, max : 100 273 | , width : 200, height : 170 274 | , fgColor:"skyblue", bgColor:"#EEEEEE" 275 | , change : function (value) { 276 | value.x = (value[0]+100)/200; 277 | value.y = (value[1]+100)/200; 278 | setFilterF(maxFilterFreq*value.x); $filterf.trigger("change"); 279 | setFilterG(100*value.y-50); $filterg.trigger("change"); 280 | console.log("change : ", value); 281 | } 282 | }).css({'border':'5px solid #FFF', 'margin':'15px'}); 283 | 284 | $("#filterqg").xy({ 285 | displayInput:false, displayPrevious:false 286 | , min : -100, max : 100 287 | , width : 200, height : 170 288 | , fgColor:"skyblue", bgColor:"#EEEEEE" 289 | , change : function (value) { 290 | value.x = (value[0]+100)/200; 291 | value.y = (value[1]+100)/200; 292 | setFilterQ(100*value.x); $filterq.trigger("change"); 293 | setFilterG(100*value.y-50); $filterg.trigger("change"); 294 | console.log("change : ", value); 295 | } 296 | }).css({'border':'5px solid #FFF', 'margin':'15px'}); 297 | 298 | 299 | /////////////////////////////////////////////////////////////////////////////////////////////// 300 | // top buttons 301 | /////////////////////////////////////////////////////////////////////////////////////////////// 302 | $sequencerOn.click(function(){ 303 | $(this).parent().addClass("active"); 304 | $sequencerOff.parent().removeClass("active"); 305 | runSeq = true; 306 | runSequencers(); 307 | seqPos = 0; 308 | }); 309 | 310 | $sequencerOff.click(function(){ 311 | $sequencerOn.parent().removeClass("active"); 312 | $(this).parent().addClass("active"); 313 | runSeq = false; 314 | seqPos = 0; 315 | }); 316 | 317 | $rndSeq.click(randomizeSequencers) 318 | 319 | 320 | /////////////////////////////////////////////////////////////////////////////////////////////// 321 | // util functions 322 | /////////////////////////////////////////////////////////////////////////////////////////////// 323 | function midiToFreq(v){ return 440 * Math.pow(2,((v-69)/12)); } 324 | function freqToMidi(v){ return Math.round(69 + 12*Math.log(v/440)/Math.log(2)); } 325 | function constrain(amt,low,high) { return (amt < low) ? low : ((amt > high) ? high : amt); } 326 | 327 | 328 | /////////////////////////////////////////////////////////////////////////////////////////////// 329 | // init 330 | /////////////////////////////////////////////////////////////////////////////////////////////// 331 | randomizeSequencers(); 332 | $sequencerOn.click(); 333 | -------------------------------------------------------------------------------- /css/bootstrap-responsive.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Responsive v2.2.1 3 | * 4 | * Copyright 2012 Twitter, Inc 5 | * Licensed under the Apache License v2.0 6 | * http://www.apache.org/licenses/LICENSE-2.0 7 | * 8 | * Designed and built with all the love in the world @twitter by @mdo and @fat. 9 | */.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.hidden{display:none;visibility:hidden}.visible-phone{display:none!important}.visible-tablet{display:none!important}.hidden-desktop{display:none!important}.visible-desktop{display:inherit!important}@media(min-width:768px) and (max-width:979px){.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}.visible-tablet{display:inherit!important}.hidden-tablet{display:none!important}}@media(max-width:767px){.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}.visible-phone{display:inherit!important}.hidden-phone{display:none!important}}@media(min-width:1200px){.row{margin-left:-30px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:30px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px}.span12{width:1170px}.span11{width:1070px}.span10{width:970px}.span9{width:870px}.span8{width:770px}.span7{width:670px}.span6{width:570px}.span5{width:470px}.span4{width:370px}.span3{width:270px}.span2{width:170px}.span1{width:70px}.offset12{margin-left:1230px}.offset11{margin-left:1130px}.offset10{margin-left:1030px}.offset9{margin-left:930px}.offset8{margin-left:830px}.offset7{margin-left:730px}.offset6{margin-left:630px}.offset5{margin-left:530px}.offset4{margin-left:430px}.offset3{margin-left:330px}.offset2{margin-left:230px}.offset1{margin-left:130px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.564102564102564%;*margin-left:2.5109110747408616%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.564102564102564%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.45299145299145%;*width:91.39979996362975%}.row-fluid .span10{width:82.90598290598291%;*width:82.8527914166212%}.row-fluid .span9{width:74.35897435897436%;*width:74.30578286961266%}.row-fluid .span8{width:65.81196581196582%;*width:65.75877432260411%}.row-fluid .span7{width:57.26495726495726%;*width:57.21176577559556%}.row-fluid .span6{width:48.717948717948715%;*width:48.664757228587014%}.row-fluid .span5{width:40.17094017094017%;*width:40.11774868157847%}.row-fluid .span4{width:31.623931623931625%;*width:31.570740134569924%}.row-fluid .span3{width:23.076923076923077%;*width:23.023731587561375%}.row-fluid .span2{width:14.52991452991453%;*width:14.476723040552828%}.row-fluid .span1{width:5.982905982905983%;*width:5.929714493544281%}.row-fluid .offset12{margin-left:105.12820512820512%;*margin-left:105.02182214948171%}.row-fluid .offset12:first-child{margin-left:102.56410256410257%;*margin-left:102.45771958537915%}.row-fluid .offset11{margin-left:96.58119658119658%;*margin-left:96.47481360247316%}.row-fluid .offset11:first-child{margin-left:94.01709401709402%;*margin-left:93.91071103837061%}.row-fluid .offset10{margin-left:88.03418803418803%;*margin-left:87.92780505546462%}.row-fluid .offset10:first-child{margin-left:85.47008547008548%;*margin-left:85.36370249136206%}.row-fluid .offset9{margin-left:79.48717948717949%;*margin-left:79.38079650845607%}.row-fluid .offset9:first-child{margin-left:76.92307692307693%;*margin-left:76.81669394435352%}.row-fluid .offset8{margin-left:70.94017094017094%;*margin-left:70.83378796144753%}.row-fluid .offset8:first-child{margin-left:68.37606837606839%;*margin-left:68.26968539734497%}.row-fluid .offset7{margin-left:62.393162393162385%;*margin-left:62.28677941443899%}.row-fluid .offset7:first-child{margin-left:59.82905982905982%;*margin-left:59.72267685033642%}.row-fluid .offset6{margin-left:53.84615384615384%;*margin-left:53.739770867430444%}.row-fluid .offset6:first-child{margin-left:51.28205128205128%;*margin-left:51.175668303327875%}.row-fluid .offset5{margin-left:45.299145299145295%;*margin-left:45.1927623204219%}.row-fluid .offset5:first-child{margin-left:42.73504273504273%;*margin-left:42.62865975631933%}.row-fluid .offset4{margin-left:36.75213675213675%;*margin-left:36.645753773413354%}.row-fluid .offset4:first-child{margin-left:34.18803418803419%;*margin-left:34.081651209310785%}.row-fluid .offset3{margin-left:28.205128205128204%;*margin-left:28.0987452264048%}.row-fluid .offset3:first-child{margin-left:25.641025641025642%;*margin-left:25.53464266230224%}.row-fluid .offset2{margin-left:19.65811965811966%;*margin-left:19.551736679396257%}.row-fluid .offset2:first-child{margin-left:17.094017094017094%;*margin-left:16.98763411529369%}.row-fluid .offset1{margin-left:11.11111111111111%;*margin-left:11.004728132387708%}.row-fluid .offset1:first-child{margin-left:8.547008547008547%;*margin-left:8.440625568285142%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:30px}input.span12,textarea.span12,.uneditable-input.span12{width:1156px}input.span11,textarea.span11,.uneditable-input.span11{width:1056px}input.span10,textarea.span10,.uneditable-input.span10{width:956px}input.span9,textarea.span9,.uneditable-input.span9{width:856px}input.span8,textarea.span8,.uneditable-input.span8{width:756px}input.span7,textarea.span7,.uneditable-input.span7{width:656px}input.span6,textarea.span6,.uneditable-input.span6{width:556px}input.span5,textarea.span5,.uneditable-input.span5{width:456px}input.span4,textarea.span4,.uneditable-input.span4{width:356px}input.span3,textarea.span3,.uneditable-input.span3{width:256px}input.span2,textarea.span2,.uneditable-input.span2{width:156px}input.span1,textarea.span1,.uneditable-input.span1{width:56px}.thumbnails{margin-left:-30px}.thumbnails>li{margin-left:30px}.row-fluid .thumbnails{margin-left:0}}@media(min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px}.span12{width:724px}.span11{width:662px}.span10{width:600px}.span9{width:538px}.span8{width:476px}.span7{width:414px}.span6{width:352px}.span5{width:290px}.span4{width:228px}.span3{width:166px}.span2{width:104px}.span1{width:42px}.offset12{margin-left:764px}.offset11{margin-left:702px}.offset10{margin-left:640px}.offset9{margin-left:578px}.offset8{margin-left:516px}.offset7{margin-left:454px}.offset6{margin-left:392px}.offset5{margin-left:330px}.offset4{margin-left:268px}.offset3{margin-left:206px}.offset2{margin-left:144px}.offset1{margin-left:82px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.7624309392265194%;*margin-left:2.709239449864817%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.7624309392265194%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.43646408839778%;*width:91.38327259903608%}.row-fluid .span10{width:82.87292817679558%;*width:82.81973668743387%}.row-fluid .span9{width:74.30939226519337%;*width:74.25620077583166%}.row-fluid .span8{width:65.74585635359117%;*width:65.69266486422946%}.row-fluid .span7{width:57.18232044198895%;*width:57.12912895262725%}.row-fluid .span6{width:48.61878453038674%;*width:48.56559304102504%}.row-fluid .span5{width:40.05524861878453%;*width:40.00205712942283%}.row-fluid .span4{width:31.491712707182323%;*width:31.43852121782062%}.row-fluid .span3{width:22.92817679558011%;*width:22.87498530621841%}.row-fluid .span2{width:14.3646408839779%;*width:14.311449394616199%}.row-fluid .span1{width:5.801104972375691%;*width:5.747913483013988%}.row-fluid .offset12{margin-left:105.52486187845304%;*margin-left:105.41847889972962%}.row-fluid .offset12:first-child{margin-left:102.76243093922652%;*margin-left:102.6560479605031%}.row-fluid .offset11{margin-left:96.96132596685082%;*margin-left:96.8549429881274%}.row-fluid .offset11:first-child{margin-left:94.1988950276243%;*margin-left:94.09251204890089%}.row-fluid .offset10{margin-left:88.39779005524862%;*margin-left:88.2914070765252%}.row-fluid .offset10:first-child{margin-left:85.6353591160221%;*margin-left:85.52897613729868%}.row-fluid .offset9{margin-left:79.8342541436464%;*margin-left:79.72787116492299%}.row-fluid .offset9:first-child{margin-left:77.07182320441989%;*margin-left:76.96544022569647%}.row-fluid .offset8{margin-left:71.2707182320442%;*margin-left:71.16433525332079%}.row-fluid .offset8:first-child{margin-left:68.50828729281768%;*margin-left:68.40190431409427%}.row-fluid .offset7{margin-left:62.70718232044199%;*margin-left:62.600799341718584%}.row-fluid .offset7:first-child{margin-left:59.94475138121547%;*margin-left:59.838368402492065%}.row-fluid .offset6{margin-left:54.14364640883978%;*margin-left:54.037263430116376%}.row-fluid .offset6:first-child{margin-left:51.38121546961326%;*margin-left:51.27483249088986%}.row-fluid .offset5{margin-left:45.58011049723757%;*margin-left:45.47372751851417%}.row-fluid .offset5:first-child{margin-left:42.81767955801105%;*margin-left:42.71129657928765%}.row-fluid .offset4{margin-left:37.01657458563536%;*margin-left:36.91019160691196%}.row-fluid .offset4:first-child{margin-left:34.25414364640884%;*margin-left:34.14776066768544%}.row-fluid .offset3{margin-left:28.45303867403315%;*margin-left:28.346655695309746%}.row-fluid .offset3:first-child{margin-left:25.69060773480663%;*margin-left:25.584224756083227%}.row-fluid .offset2{margin-left:19.88950276243094%;*margin-left:19.783119783707537%}.row-fluid .offset2:first-child{margin-left:17.12707182320442%;*margin-left:17.02068884448102%}.row-fluid .offset1{margin-left:11.32596685082873%;*margin-left:11.219583872105325%}.row-fluid .offset1:first-child{margin-left:8.56353591160221%;*margin-left:8.457152932878806%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:710px}input.span11,textarea.span11,.uneditable-input.span11{width:648px}input.span10,textarea.span10,.uneditable-input.span10{width:586px}input.span9,textarea.span9,.uneditable-input.span9{width:524px}input.span8,textarea.span8,.uneditable-input.span8{width:462px}input.span7,textarea.span7,.uneditable-input.span7{width:400px}input.span6,textarea.span6,.uneditable-input.span6{width:338px}input.span5,textarea.span5,.uneditable-input.span5{width:276px}input.span4,textarea.span4,.uneditable-input.span4{width:214px}input.span3,textarea.span3,.uneditable-input.span3{width:152px}input.span2,textarea.span2,.uneditable-input.span2{width:90px}input.span1,textarea.span1,.uneditable-input.span1{width:28px}}@media(max-width:767px){body{padding-right:20px;padding-left:20px}.navbar-fixed-top,.navbar-fixed-bottom,.navbar-static-top{margin-right:-20px;margin-left:-20px}.container-fluid{padding:0}.dl-horizontal dt{float:none;width:auto;clear:none;text-align:left}.dl-horizontal dd{margin-left:0}.container{width:auto}.row-fluid{width:100%}.row,.thumbnails{margin-left:0}.thumbnails>li{float:none;margin-left:0}[class*="span"],.uneditable-input[class*="span"],.row-fluid [class*="span"]{display:block;float:none;width:100%;margin-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.span12,.row-fluid .span12{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="offset"]:first-child{margin-left:0}.input-large,.input-xlarge,.input-xxlarge,input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.input-prepend input,.input-append input,.input-prepend input[class*="span"],.input-append input[class*="span"]{display:inline-block;width:auto}.controls-row [class*="span"]+[class*="span"]{margin-left:0}.modal{position:fixed;top:20px;right:20px;left:20px;width:auto;margin:0}.modal.fade{top:-100px}.modal.fade.in{top:20px}}@media(max-width:480px){.nav-collapse{-webkit-transform:translate3d(0,0,0)}.page-header h1 small{display:block;line-height:20px}input[type="checkbox"],input[type="radio"]{border:1px solid #ccc}.form-horizontal .control-label{float:none;width:auto;padding-top:0;text-align:left}.form-horizontal .controls{margin-left:0}.form-horizontal .control-list{padding-top:0}.form-horizontal .form-actions{padding-right:10px;padding-left:10px}.media .pull-left,.media .pull-right{display:block;float:none;margin-bottom:10px}.media-object{margin-right:0;margin-left:0}.modal{top:10px;right:10px;left:10px}.modal-header .close{padding:10px;margin:-10px}.carousel-caption{position:static}}@media(max-width:979px){body{padding-top:0}.navbar-fixed-top,.navbar-fixed-bottom{position:static}.navbar-fixed-top{margin-bottom:20px}.navbar-fixed-bottom{margin-top:20px}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding:5px}.navbar .container{width:auto;padding:0}.navbar .brand{padding-right:10px;padding-left:10px;margin:0 0 0 -5px}.nav-collapse{clear:both}.nav-collapse .nav{float:none;margin:0 0 10px}.nav-collapse .nav>li{float:none}.nav-collapse .nav>li>a{margin-bottom:2px}.nav-collapse .nav>.divider-vertical{display:none}.nav-collapse .nav .nav-header{color:#777;text-shadow:none}.nav-collapse .nav>li>a,.nav-collapse .dropdown-menu a{padding:9px 15px;font-weight:bold;color:#777;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.nav-collapse .btn{padding:4px 10px 4px;font-weight:normal;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.nav-collapse .dropdown-menu li+li a{margin-bottom:2px}.nav-collapse .nav>li>a:hover,.nav-collapse .dropdown-menu a:hover{background-color:#f2f2f2}.navbar-inverse .nav-collapse .nav>li>a,.navbar-inverse .nav-collapse .dropdown-menu a{color:#999}.navbar-inverse .nav-collapse .nav>li>a:hover,.navbar-inverse .nav-collapse .dropdown-menu a:hover{background-color:#111}.nav-collapse.in .btn-group{padding:0;margin-top:5px}.nav-collapse .dropdown-menu{position:static;top:auto;left:auto;display:none;float:none;max-width:none;padding:0;margin:0 15px;background-color:transparent;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.nav-collapse .open>.dropdown-menu{display:block}.nav-collapse .dropdown-menu:before,.nav-collapse .dropdown-menu:after{display:none}.nav-collapse .dropdown-menu .divider{display:none}.nav-collapse .nav>li>.dropdown-menu:before,.nav-collapse .nav>li>.dropdown-menu:after{display:none}.nav-collapse .navbar-form,.nav-collapse .navbar-search{float:none;padding:10px 15px;margin:10px 0;border-top:1px solid #f2f2f2;border-bottom:1px solid #f2f2f2;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1)}.navbar-inverse .nav-collapse .navbar-form,.navbar-inverse .nav-collapse .navbar-search{border-top-color:#111;border-bottom-color:#111}.navbar .nav-collapse .nav.pull-right{float:none;margin-left:0}.nav-collapse,.nav-collapse.collapse{height:0;overflow:hidden}.navbar .btn-navbar{display:block}.navbar-static .navbar-inner{padding-right:10px;padding-left:10px}}@media(min-width:980px){.nav-collapse.collapse{height:auto!important;overflow:visible!important}} 10 | -------------------------------------------------------------------------------- /js/jquery.knob.js: -------------------------------------------------------------------------------- 1 | /*!jQuery Knob*/ 2 | /** 3 | * Downward compatible, touchable dial 4 | * 5 | * Version: 1.2.0 (15/07/2012) 6 | * Requires: jQuery v1.7+ 7 | * 8 | * Copyright (c) 2012 Anthony Terrien 9 | * Under MIT and GPL licenses: 10 | * http://www.opensource.org/licenses/mit-license.php 11 | * http://www.gnu.org/licenses/gpl.html 12 | * 13 | * Thanks to vor, eskimoblood, spiffistan, FabrizioC 14 | */ 15 | (function($) { 16 | 17 | /** 18 | * Kontrol library 19 | */ 20 | "use strict"; 21 | 22 | /** 23 | * Definition of globals and core 24 | */ 25 | var k = {}, // kontrol 26 | max = Math.max, 27 | min = Math.min; 28 | 29 | k.c = {}; 30 | k.c.d = $(document); 31 | k.c.t = function (e) { 32 | return e.originalEvent.touches.length - 1; 33 | }; 34 | 35 | /** 36 | * Kontrol Object 37 | * 38 | * Definition of an abstract UI control 39 | * 40 | * Each concrete component must call this one. 41 | * 42 | * k.o.call(this); 43 | * 44 | */ 45 | k.o = function () { 46 | var s = this; 47 | 48 | this.o = null; // array of options 49 | this.$ = null; // jQuery wrapped element 50 | this.i = null; // mixed HTMLInputElement or array of HTMLInputElement 51 | this.g = null; // 2D graphics context for 'pre-rendering' 52 | this.v = null; // value ; mixed array or integer 53 | this.cv = null; // change value ; not commited value 54 | this.x = 0; // canvas x position 55 | this.y = 0; // canvas y position 56 | this.$c = null; // jQuery canvas element 57 | this.c = null; // rendered canvas context 58 | this.t = 0; // touches index 59 | this.isInit = false; 60 | this.fgColor = null; // main color 61 | this.pColor = null; // previous color 62 | this.dH = null; // draw hook 63 | this.cH = null; // change hook 64 | this.eH = null; // cancel hook 65 | this.rH = null; // release hook 66 | 67 | this.run = function () { 68 | var cf = function (e, conf) { 69 | var k; 70 | for (k in conf) { 71 | s.o[k] = conf[k]; 72 | } 73 | s.init(); 74 | s._configure() 75 | ._draw(); 76 | }; 77 | 78 | if(this.$.data('kontroled')) return; 79 | this.$.data('kontroled', true); 80 | 81 | this.extend(); 82 | this.o = $.extend( 83 | { 84 | // Config 85 | min : this.$.data('min') || 0, 86 | max : this.$.data('max') || 100, 87 | stopper : true, 88 | readOnly : this.$.data('readonly'), 89 | 90 | // UI 91 | cursor : (this.$.data('cursor') === true && 30) 92 | || this.$.data('cursor') 93 | || 0, 94 | thickness : this.$.data('thickness') || 0.35, 95 | width : this.$.data('width') || 200, 96 | height : this.$.data('height') || 200, 97 | displayInput : this.$.data('displayinput') == null || this.$.data('displayinput'), 98 | displayPrevious : this.$.data('displayprevious'), 99 | fgColor : this.$.data('fgcolor') || '#87CEEB', 100 | inline : false, 101 | 102 | // Hooks 103 | draw : null, // function () {} 104 | change : null, // function (value) {} 105 | cancel : null, // function () {} 106 | release : null // function (value) {} 107 | }, this.o 108 | ); 109 | 110 | // routing value 111 | if(this.$.is('fieldset')) { 112 | 113 | // fieldset = array of integer 114 | this.v = {}; 115 | this.i = this.$.find('input') 116 | this.i.each(function(k) { 117 | var $this = $(this); 118 | s.i[k] = $this; 119 | s.v[k] = $this.val(); 120 | 121 | $this.bind( 122 | 'change' 123 | , function () { 124 | var val = {}; 125 | val[k] = $this.val(); 126 | s.val(val); 127 | } 128 | ); 129 | }); 130 | this.$.find('legend').remove(); 131 | 132 | } else { 133 | // input = integer 134 | this.i = this.$; 135 | this.v = this.$.val(); 136 | (this.v == '') && (this.v = this.o.min); 137 | 138 | this.$.bind( 139 | 'change' 140 | , function () { 141 | s.val(s.$.val()); 142 | } 143 | ); 144 | } 145 | 146 | (!this.o.displayInput) && this.$.hide(); 147 | 148 | this.$c = $(''); 151 | this.c = this.$c[0].getContext("2d"); 152 | 153 | this.$ 154 | .wrap($('
')) 157 | .before(this.$c); 158 | 159 | if (this.v instanceof Object) { 160 | this.cv = {}; 161 | this.copy(this.v, this.cv); 162 | } else { 163 | this.cv = this.v; 164 | } 165 | 166 | this.$ 167 | .bind("configure", cf) 168 | .parent() 169 | .bind("configure", cf); 170 | 171 | this._listen() 172 | ._configure() 173 | ._xy() 174 | .init(); 175 | 176 | this.isInit = true; 177 | 178 | this._draw(); 179 | 180 | return this; 181 | }; 182 | 183 | this._draw = function () { 184 | 185 | // canvas pre-rendering 186 | var d = true, 187 | c = document.createElement('canvas'); 188 | 189 | c.width = s.o.width; 190 | c.height = s.o.height; 191 | s.g = c.getContext('2d'); 192 | 193 | s.clear(); 194 | 195 | s.dH 196 | && (d = s.dH()); 197 | 198 | (d !== false) && s.draw(); 199 | 200 | s.c.drawImage(c, 0, 0); 201 | c = null; 202 | }; 203 | 204 | this._touch = function (e) { 205 | 206 | var touchMove = function (e) { 207 | 208 | var v = s.xy2val( 209 | e.originalEvent.touches[s.t].pageX, 210 | e.originalEvent.touches[s.t].pageY 211 | ); 212 | 213 | if (v == s.cv) return; 214 | 215 | if ( 216 | s.cH 217 | && (s.cH(v) === false) 218 | ) return; 219 | 220 | 221 | s.change(v); 222 | s._draw(); 223 | }; 224 | 225 | // get touches index 226 | this.t = k.c.t(e); 227 | 228 | // First touch 229 | touchMove(e); 230 | 231 | // Touch events listeners 232 | k.c.d 233 | .bind("touchmove.k", touchMove) 234 | .bind( 235 | "touchend.k" 236 | , function () { 237 | k.c.d.unbind('touchmove.k touchend.k'); 238 | 239 | if ( 240 | s.rH 241 | && (s.rH(s.cv) === false) 242 | ) return; 243 | 244 | s.val(s.cv); 245 | } 246 | ); 247 | 248 | return this; 249 | }; 250 | 251 | this._mouse = function (e) { 252 | 253 | var mouseMove = function (e) { 254 | var v = s.xy2val(e.pageX, e.pageY); 255 | if (v == s.cv) return; 256 | 257 | if ( 258 | s.cH 259 | && (s.cH(v) === false) 260 | ) return; 261 | 262 | s.change(v); 263 | s._draw(); 264 | }; 265 | 266 | // First click 267 | mouseMove(e); 268 | 269 | // Mouse events listeners 270 | k.c.d 271 | .bind("mousemove.k", mouseMove) 272 | .bind( 273 | // Escape key cancel current change 274 | "keyup.k" 275 | , function (e) { 276 | if (e.keyCode === 27) { 277 | k.c.d.unbind("mouseup.k mousemove.k keyup.k"); 278 | 279 | if ( 280 | s.eH 281 | && (s.eH() === false) 282 | ) return; 283 | 284 | s.cancel(); 285 | } 286 | } 287 | ) 288 | .bind( 289 | "mouseup.k" 290 | , function (e) { 291 | k.c.d.unbind('mousemove.k mouseup.k keyup.k'); 292 | 293 | if ( 294 | s.rH 295 | && (s.rH(s.cv) === false) 296 | ) return; 297 | 298 | s.val(s.cv); 299 | } 300 | ); 301 | 302 | return this; 303 | }; 304 | 305 | this._xy = function () { 306 | var o = this.$c.offset(); 307 | this.x = o.left; 308 | this.y = o.top; 309 | return this; 310 | }; 311 | 312 | this._listen = function () { 313 | 314 | if (!this.o.readOnly) { 315 | this.$c 316 | .bind( 317 | "mousedown" 318 | , function (e) { 319 | e.preventDefault(); 320 | s._xy()._mouse(e); 321 | } 322 | ) 323 | .bind( 324 | "touchstart" 325 | , function (e) { 326 | e.preventDefault(); 327 | s._xy()._touch(e); 328 | } 329 | ); 330 | this.listen(); 331 | } else { 332 | this.$.attr('readonly', 'readonly'); 333 | } 334 | 335 | return this; 336 | }; 337 | 338 | this._configure = function () { 339 | 340 | // Hooks 341 | if (this.o.draw) this.dH = this.o.draw; 342 | if (this.o.change) this.cH = this.o.change; 343 | if (this.o.cancel) this.eH = this.o.cancel; 344 | if (this.o.release) this.rH = this.o.release; 345 | 346 | if (this.o.displayPrevious) { 347 | this.pColor = this.h2rgba(this.o.fgColor, "0.4"); 348 | this.fgColor = this.h2rgba(this.o.fgColor, "0.6"); 349 | } else { 350 | this.fgColor = this.o.fgColor; 351 | } 352 | 353 | return this; 354 | }; 355 | 356 | this._clear = function () { 357 | this.$c[0].width = this.$c[0].width; 358 | }; 359 | 360 | // Abstract methods 361 | this.listen = function () {}; // on start, one time 362 | this.extend = function () {}; // each time configure triggered 363 | this.init = function () {}; // each time configure triggered 364 | this.change = function (v) {}; // on change 365 | this.val = function (v) {}; // on release 366 | this.xy2val = function (x, y) {}; // 367 | this.draw = function () {}; // on change / on release 368 | this.clear = function () { this._clear(); }; 369 | 370 | // Utils 371 | this.h2rgba = function (h, a) { 372 | var rgb; 373 | h = h.substring(1,7) 374 | rgb = [parseInt(h.substring(0,2),16) 375 | ,parseInt(h.substring(2,4),16) 376 | ,parseInt(h.substring(4,6),16)]; 377 | return "rgba(" + rgb[0] + "," + rgb[1] + "," + rgb[2] + "," + a + ")"; 378 | }; 379 | 380 | this.copy = function (f, t) { 381 | for (var i in f) { t[i] = f[i]; } 382 | }; 383 | }; 384 | 385 | 386 | /** 387 | * k.Dial 388 | */ 389 | k.Dial = function () { 390 | k.o.call(this); 391 | 392 | this.startAngle = null; 393 | this.xy = null; 394 | this.radius = null; 395 | this.lineWidth = null; 396 | this.cursorExt = null; 397 | this.w2 = null; 398 | this.PI2 = 2*Math.PI; 399 | 400 | this.extend = function () { 401 | this.o = $.extend( 402 | { 403 | bgColor : this.$.data('bgcolor') || '#EEEEEE', 404 | angleOffset : this.$.data('angleoffset') || 0, 405 | angleArc : this.$.data('anglearc') || 360, 406 | inline : true 407 | }, this.o 408 | ); 409 | }; 410 | 411 | this.val = function (v) { 412 | if (null != v) { 413 | this.cv = this.o.stopper ? max(min(v, this.o.max), this.o.min) : v; 414 | this.v = this.cv; 415 | this.$.val(this.v); 416 | this._draw(); 417 | } else { 418 | return this.v; 419 | } 420 | }; 421 | 422 | this.xy2val = function (x, y) { 423 | var a, ret; 424 | 425 | a = Math.atan2( 426 | x - (this.x + this.w2) 427 | , - (y - this.y - this.w2) 428 | ) - this.angleOffset; 429 | 430 | if(this.angleArc != this.PI2 && (a < 0) && (a > -0.5)) { 431 | // if isset angleArc option, set to min if .5 under min 432 | a = 0; 433 | } else if (a < 0) { 434 | a += this.PI2; 435 | } 436 | 437 | ret = ~~ (0.5 + (a * (this.o.max - this.o.min) / this.angleArc)) 438 | + this.o.min; 439 | 440 | this.o.stopper 441 | && (ret = max(min(ret, this.o.max), this.o.min)); 442 | 443 | return ret; 444 | }; 445 | 446 | this.listen = function () { 447 | // bind MouseWheel 448 | var s = this, 449 | mw = function (e) { 450 | e.preventDefault(); 451 | 452 | var ori = e.originalEvent 453 | ,deltaX = ori.detail || ori.wheelDeltaX 454 | ,deltaY = ori.detail || ori.wheelDeltaY 455 | ,v = parseInt(s.$.val()) + (deltaX>0 || deltaY>0 ? 1 : deltaX<0 || deltaY<0 ? -1 : 0); 456 | 457 | if ( 458 | s.cH 459 | && (s.cH(v) === false) 460 | ) return; 461 | 462 | s.val(v); 463 | } 464 | , kval, to, m = 1, kv = {37:-1, 38:1, 39:1, 40:-1}; 465 | 466 | this.$ 467 | .bind( 468 | "keydown" 469 | ,function (e) { 470 | var kc = e.keyCode; 471 | 472 | // numpad support 473 | if(kc >= 96 && kc <= 105) { 474 | kc = e.keyCode = kc - 48; 475 | } 476 | 477 | kval = parseInt(String.fromCharCode(kc)); 478 | 479 | if (isNaN(kval)) { 480 | 481 | (kc !== 13) // enter 482 | && (kc !== 8) // bs 483 | && (kc !== 9) // tab 484 | && (kc !== 189) // - 485 | && e.preventDefault(); 486 | 487 | // arrows 488 | if ($.inArray(kc,[37,38,39,40]) > -1) { 489 | e.preventDefault(); 490 | 491 | var v = parseInt(s.$.val()) + kv[kc] * m; 492 | 493 | s.o.stopper 494 | && (v = max(min(v, s.o.max), s.o.min)); 495 | 496 | s.change(v); 497 | s._draw(); 498 | 499 | // long time keydown speed-up 500 | to = window.setTimeout( 501 | function () { m*=2; } 502 | ,30 503 | ); 504 | } 505 | } 506 | } 507 | ) 508 | .bind( 509 | "keyup" 510 | ,function (e) { 511 | if (isNaN(kval)) { 512 | if (to) { 513 | window.clearTimeout(to); 514 | to = null; 515 | m = 1; 516 | s.val(s.$.val()); 517 | } 518 | } else { 519 | // kval postcond 520 | (s.$.val() > s.o.max && s.$.val(s.o.max)) 521 | || (s.$.val() < s.o.min && s.$.val(s.o.min)); 522 | } 523 | 524 | } 525 | ); 526 | 527 | this.$c.bind("mousewheel DOMMouseScroll", mw); 528 | this.$.bind("mousewheel DOMMouseScroll", mw) 529 | }; 530 | 531 | this.init = function () { 532 | 533 | if ( 534 | this.v < this.o.min 535 | || this.v > this.o.max 536 | ) this.v = this.o.min; 537 | 538 | this.$.val(this.v); 539 | this.w2 = this.o.width / 2; 540 | this.cursorExt = this.o.cursor / 100; 541 | this.xy = this.w2; 542 | this.lineWidth = this.xy * this.o.thickness; 543 | this.radius = this.xy - this.lineWidth / 2; 544 | 545 | this.o.angleOffset 546 | && (this.o.angleOffset = isNaN(this.o.angleOffset) ? 0 : this.o.angleOffset); 547 | 548 | this.o.angleArc 549 | && (this.o.angleArc = isNaN(this.o.angleArc) ? this.PI2 : this.o.angleArc); 550 | 551 | // deg to rad 552 | this.angleOffset = this.o.angleOffset * Math.PI / 180; 553 | this.angleArc = this.o.angleArc * Math.PI / 180; 554 | 555 | // compute start and end angles 556 | this.startAngle = 1.5 * Math.PI + this.angleOffset; 557 | this.endAngle = 1.5 * Math.PI + this.angleOffset + this.angleArc; 558 | 559 | var s = max( 560 | String(Math.abs(this.o.max)).length 561 | , String(Math.abs(this.o.min)).length 562 | , 2 563 | ) + 2; 564 | 565 | this.o.displayInput 566 | && this.i.css({ 567 | 'width' : ((this.o.width / 2 + 4) >> 0) + 'px' 568 | ,'height' : ((this.o.width / 3) >> 0) + 'px' 569 | ,'position' : 'absolute' 570 | ,'vertical-align' : 'middle' 571 | ,'margin-top' : ((this.o.width / 3) >> 0) + 'px' 572 | ,'margin-left' : '-' + ((this.o.width * 3 / 4 + 2) >> 0) + 'px' 573 | ,'border' : 0 574 | ,'background' : 'none' 575 | ,'font' : 'bold ' + ((this.o.width / s) >> 0) + 'px Arial' 576 | ,'text-align' : 'center' 577 | ,'color' : this.o.fgColor 578 | ,'padding' : '0px' 579 | ,'-webkit-appearance': 'none' 580 | }) 581 | || this.i.css({ 582 | 'width' : '0px' 583 | ,'visibility' : 'hidden' 584 | }); 585 | }; 586 | 587 | this.change = function (v) { 588 | this.cv = v; 589 | this.$.val(v); 590 | }; 591 | 592 | this.angle = function (v) { 593 | return (v - this.o.min) * this.angleArc / (this.o.max - this.o.min); 594 | }; 595 | 596 | this.draw = function () { 597 | 598 | var c = this.g, // context 599 | a = this.angle(this.cv) // Angle 600 | , sat = this.startAngle // Start angle 601 | , eat = sat + a // End angle 602 | , sa, ea // Previous angles 603 | , r = 1; 604 | 605 | c.lineWidth = this.lineWidth; 606 | 607 | this.o.cursor 608 | && (sat = eat - this.cursorExt) 609 | && (eat = eat + this.cursorExt); 610 | 611 | c.beginPath(); 612 | c.strokeStyle = this.o.bgColor; 613 | c.arc(this.xy, this.xy, this.radius, this.endAngle, this.startAngle, true); 614 | c.stroke(); 615 | 616 | if (this.o.displayPrevious) { 617 | ea = this.startAngle + this.angle(this.v); 618 | sa = this.startAngle; 619 | this.o.cursor 620 | && (sa = ea - this.cursorExt) 621 | && (ea = ea + this.cursorExt); 622 | 623 | c.beginPath(); 624 | c.strokeStyle = this.pColor; 625 | c.arc(this.xy, this.xy, this.radius, sa, ea, false); 626 | c.stroke(); 627 | r = (this.cv == this.v); 628 | } 629 | 630 | c.beginPath(); 631 | c.strokeStyle = r ? this.o.fgColor : this.fgColor ; 632 | c.arc(this.xy, this.xy, this.radius, sat, eat, false); 633 | c.stroke(); 634 | }; 635 | 636 | this.cancel = function () { 637 | this.val(this.v); 638 | }; 639 | }; 640 | 641 | $.fn.dial = $.fn.knob = function (o) { 642 | return this.each( 643 | function () { 644 | var d = new k.Dial(); 645 | d.o = o; 646 | d.$ = $(this); 647 | d.run(); 648 | } 649 | ).parent(); 650 | }; 651 | 652 | })(jQuery); -------------------------------------------------------------------------------- /js/bootstrap.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap.js by @fat & @mdo 3 | * Copyright 2012 Twitter, Inc. 4 | * http://www.apache.org/licenses/LICENSE-2.0.txt 5 | */ 6 | !function(e){"use strict";e(function(){e.support.transition=function(){var e=function(){var e=document.createElement("bootstrap"),t={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},n;for(n in t)if(e.style[n]!==undefined)return t[n]}();return e&&{end:e}}()})}(window.jQuery),!function(e){"use strict";var t='[data-dismiss="alert"]',n=function(n){e(n).on("click",t,this.close)};n.prototype.close=function(t){function s(){i.trigger("closed").remove()}var n=e(this),r=n.attr("data-target"),i;r||(r=n.attr("href"),r=r&&r.replace(/.*(?=#[^\s]*$)/,"")),i=e(r),t&&t.preventDefault(),i.length||(i=n.hasClass("alert")?n:n.parent()),i.trigger(t=e.Event("close"));if(t.isDefaultPrevented())return;i.removeClass("in"),e.support.transition&&i.hasClass("fade")?i.on(e.support.transition.end,s):s()},e.fn.alert=function(t){return this.each(function(){var r=e(this),i=r.data("alert");i||r.data("alert",i=new n(this)),typeof t=="string"&&i[t].call(r)})},e.fn.alert.Constructor=n,e(document).on("click.alert.data-api",t,n.prototype.close)}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.button.defaults,n)};t.prototype.setState=function(e){var t="disabled",n=this.$element,r=n.data(),i=n.is("input")?"val":"html";e+="Text",r.resetText||n.data("resetText",n[i]()),n[i](r[e]||this.options[e]),setTimeout(function(){e=="loadingText"?n.addClass(t).attr(t,t):n.removeClass(t).removeAttr(t)},0)},t.prototype.toggle=function(){var e=this.$element.closest('[data-toggle="buttons-radio"]');e&&e.find(".active").removeClass("active"),this.$element.toggleClass("active")},e.fn.button=function(n){return this.each(function(){var r=e(this),i=r.data("button"),s=typeof n=="object"&&n;i||r.data("button",i=new t(this,s)),n=="toggle"?i.toggle():n&&i.setState(n)})},e.fn.button.defaults={loadingText:"loading..."},e.fn.button.Constructor=t,e(document).on("click.button.data-api","[data-toggle^=button]",function(t){var n=e(t.target);n.hasClass("btn")||(n=n.closest(".btn")),n.button("toggle")})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.options=n,this.options.slide&&this.slide(this.options.slide),this.options.pause=="hover"&&this.$element.on("mouseenter",e.proxy(this.pause,this)).on("mouseleave",e.proxy(this.cycle,this))};t.prototype={cycle:function(t){return t||(this.paused=!1),this.options.interval&&!this.paused&&(this.interval=setInterval(e.proxy(this.next,this),this.options.interval)),this},to:function(t){var n=this.$element.find(".item.active"),r=n.parent().children(),i=r.index(n),s=this;if(t>r.length-1||t<0)return;return this.sliding?this.$element.one("slid",function(){s.to(t)}):i==t?this.pause().cycle():this.slide(t>i?"next":"prev",e(r[t]))},pause:function(t){return t||(this.paused=!0),this.$element.find(".next, .prev").length&&e.support.transition.end&&(this.$element.trigger(e.support.transition.end),this.cycle()),clearInterval(this.interval),this.interval=null,this},next:function(){if(this.sliding)return;return this.slide("next")},prev:function(){if(this.sliding)return;return this.slide("prev")},slide:function(t,n){var r=this.$element.find(".item.active"),i=n||r[t](),s=this.interval,o=t=="next"?"left":"right",u=t=="next"?"first":"last",a=this,f;this.sliding=!0,s&&this.pause(),i=i.length?i:this.$element.find(".item")[u](),f=e.Event("slide",{relatedTarget:i[0]});if(i.hasClass("active"))return;if(e.support.transition&&this.$element.hasClass("slide")){this.$element.trigger(f);if(f.isDefaultPrevented())return;i.addClass(t),i[0].offsetWidth,r.addClass(o),i.addClass(o),this.$element.one(e.support.transition.end,function(){i.removeClass([t,o].join(" ")).addClass("active"),r.removeClass(["active",o].join(" ")),a.sliding=!1,setTimeout(function(){a.$element.trigger("slid")},0)})}else{this.$element.trigger(f);if(f.isDefaultPrevented())return;r.removeClass("active"),i.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return s&&this.cycle(),this}},e.fn.carousel=function(n){return this.each(function(){var r=e(this),i=r.data("carousel"),s=e.extend({},e.fn.carousel.defaults,typeof n=="object"&&n),o=typeof n=="string"?n:s.slide;i||r.data("carousel",i=new t(this,s)),typeof n=="number"?i.to(n):o?i[o]():s.interval&&i.cycle()})},e.fn.carousel.defaults={interval:5e3,pause:"hover"},e.fn.carousel.Constructor=t,e(document).on("click.carousel.data-api","[data-slide]",function(t){var n=e(this),r,i=e(n.attr("data-target")||(r=n.attr("href"))&&r.replace(/.*(?=#[^\s]+$)/,"")),s=e.extend({},i.data(),n.data());i.carousel(s),t.preventDefault()})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.collapse.defaults,n),this.options.parent&&(this.$parent=e(this.options.parent)),this.options.toggle&&this.toggle()};t.prototype={constructor:t,dimension:function(){var e=this.$element.hasClass("width");return e?"width":"height"},show:function(){var t,n,r,i;if(this.transitioning)return;t=this.dimension(),n=e.camelCase(["scroll",t].join("-")),r=this.$parent&&this.$parent.find("> .accordion-group > .in");if(r&&r.length){i=r.data("collapse");if(i&&i.transitioning)return;r.collapse("hide"),i||r.data("collapse",null)}this.$element[t](0),this.transition("addClass",e.Event("show"),"shown"),e.support.transition&&this.$element[t](this.$element[0][n])},hide:function(){var t;if(this.transitioning)return;t=this.dimension(),this.reset(this.$element[t]()),this.transition("removeClass",e.Event("hide"),"hidden"),this.$element[t](0)},reset:function(e){var t=this.dimension();return this.$element.removeClass("collapse")[t](e||"auto")[0].offsetWidth,this.$element[e!==null?"addClass":"removeClass"]("collapse"),this},transition:function(t,n,r){var i=this,s=function(){n.type=="show"&&i.reset(),i.transitioning=0,i.$element.trigger(r)};this.$element.trigger(n);if(n.isDefaultPrevented())return;this.transitioning=1,this.$element[t]("in"),e.support.transition&&this.$element.hasClass("collapse")?this.$element.one(e.support.transition.end,s):s()},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}},e.fn.collapse=function(n){return this.each(function(){var r=e(this),i=r.data("collapse"),s=typeof n=="object"&&n;i||r.data("collapse",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.collapse.defaults={toggle:!0},e.fn.collapse.Constructor=t,e(document).on("click.collapse.data-api","[data-toggle=collapse]",function(t){var n=e(this),r,i=n.attr("data-target")||t.preventDefault()||(r=n.attr("href"))&&r.replace(/.*(?=#[^\s]+$)/,""),s=e(i).data("collapse")?"toggle":n.data();n[e(i).hasClass("in")?"addClass":"removeClass"]("collapsed"),e(i).collapse(s)})}(window.jQuery),!function(e){"use strict";function r(){e(t).each(function(){i(e(this)).removeClass("open")})}function i(t){var n=t.attr("data-target"),r;return n||(n=t.attr("href"),n=n&&/#/.test(n)&&n.replace(/.*(?=#[^\s]*$)/,"")),r=e(n),r.length||(r=t.parent()),r}var t="[data-toggle=dropdown]",n=function(t){var n=e(t).on("click.dropdown.data-api",this.toggle);e("html").on("click.dropdown.data-api",function(){n.parent().removeClass("open")})};n.prototype={constructor:n,toggle:function(t){var n=e(this),s,o;if(n.is(".disabled, :disabled"))return;return s=i(n),o=s.hasClass("open"),r(),o||(s.toggleClass("open"),n.focus()),!1},keydown:function(t){var n,r,s,o,u,a;if(!/(38|40|27)/.test(t.keyCode))return;n=e(this),t.preventDefault(),t.stopPropagation();if(n.is(".disabled, :disabled"))return;o=i(n),u=o.hasClass("open");if(!u||u&&t.keyCode==27)return n.click();r=e("[role=menu] li:not(.divider) a",o);if(!r.length)return;a=r.index(r.filter(":focus")),t.keyCode==38&&a>0&&a--,t.keyCode==40&&a').appendTo(document.body),this.$backdrop.click(this.options.backdrop=="static"?e.proxy(this.$element[0].focus,this.$element[0]):e.proxy(this.hide,this)),i&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),i?this.$backdrop.one(e.support.transition.end,t):t()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),e.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(e.support.transition.end,e.proxy(this.removeBackdrop,this)):this.removeBackdrop()):t&&t()}},e.fn.modal=function(n){return this.each(function(){var r=e(this),i=r.data("modal"),s=e.extend({},e.fn.modal.defaults,r.data(),typeof n=="object"&&n);i||r.data("modal",i=new t(this,s)),typeof n=="string"?i[n]():s.show&&i.show()})},e.fn.modal.defaults={backdrop:!0,keyboard:!0,show:!0},e.fn.modal.Constructor=t,e(document).on("click.modal.data-api",'[data-toggle="modal"]',function(t){var n=e(this),r=n.attr("href"),i=e(n.attr("data-target")||r&&r.replace(/.*(?=#[^\s]+$)/,"")),s=i.data("modal")?"toggle":e.extend({remote:!/#/.test(r)&&r},i.data(),n.data());t.preventDefault(),i.modal(s).one("hide",function(){n.focus()})})}(window.jQuery),!function(e){"use strict";var t=function(e,t){this.init("tooltip",e,t)};t.prototype={constructor:t,init:function(t,n,r){var i,s;this.type=t,this.$element=e(n),this.options=this.getOptions(r),this.enabled=!0,this.options.trigger=="click"?this.$element.on("click."+this.type,this.options.selector,e.proxy(this.toggle,this)):this.options.trigger!="manual"&&(i=this.options.trigger=="hover"?"mouseenter":"focus",s=this.options.trigger=="hover"?"mouseleave":"blur",this.$element.on(i+"."+this.type,this.options.selector,e.proxy(this.enter,this)),this.$element.on(s+"."+this.type,this.options.selector,e.proxy(this.leave,this))),this.options.selector?this._options=e.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},getOptions:function(t){return t=e.extend({},e.fn[this.type].defaults,t,this.$element.data()),t.delay&&typeof t.delay=="number"&&(t.delay={show:t.delay,hide:t.delay}),t},enter:function(t){var n=e(t.currentTarget)[this.type](this._options).data(this.type);if(!n.options.delay||!n.options.delay.show)return n.show();clearTimeout(this.timeout),n.hoverState="in",this.timeout=setTimeout(function(){n.hoverState=="in"&&n.show()},n.options.delay.show)},leave:function(t){var n=e(t.currentTarget)[this.type](this._options).data(this.type);this.timeout&&clearTimeout(this.timeout);if(!n.options.delay||!n.options.delay.hide)return n.hide();n.hoverState="out",this.timeout=setTimeout(function(){n.hoverState=="out"&&n.hide()},n.options.delay.hide)},show:function(){var e,t,n,r,i,s,o;if(this.hasContent()&&this.enabled){e=this.tip(),this.setContent(),this.options.animation&&e.addClass("fade"),s=typeof this.options.placement=="function"?this.options.placement.call(this,e[0],this.$element[0]):this.options.placement,t=/in/.test(s),e.detach().css({top:0,left:0,display:"block"}).insertAfter(this.$element),n=this.getPosition(t),r=e[0].offsetWidth,i=e[0].offsetHeight;switch(t?s.split(" ")[1]:s){case"bottom":o={top:n.top+n.height,left:n.left+n.width/2-r/2};break;case"top":o={top:n.top-i,left:n.left+n.width/2-r/2};break;case"left":o={top:n.top+n.height/2-i/2,left:n.left-r};break;case"right":o={top:n.top+n.height/2-i/2,left:n.left+n.width}}e.offset(o).addClass(s).addClass("in")}},setContent:function(){var e=this.tip(),t=this.getTitle();e.find(".tooltip-inner")[this.options.html?"html":"text"](t),e.removeClass("fade in top bottom left right")},hide:function(){function r(){var t=setTimeout(function(){n.off(e.support.transition.end).detach()},500);n.one(e.support.transition.end,function(){clearTimeout(t),n.detach()})}var t=this,n=this.tip();return n.removeClass("in"),e.support.transition&&this.$tip.hasClass("fade")?r():n.detach(),this},fixTitle:function(){var e=this.$element;(e.attr("title")||typeof e.attr("data-original-title")!="string")&&e.attr("data-original-title",e.attr("title")||"").removeAttr("title")},hasContent:function(){return this.getTitle()},getPosition:function(t){return e.extend({},t?{top:0,left:0}:this.$element.offset(),{width:this.$element[0].offsetWidth,height:this.$element[0].offsetHeight})},getTitle:function(){var e,t=this.$element,n=this.options;return e=t.attr("data-original-title")||(typeof n.title=="function"?n.title.call(t[0]):n.title),e},tip:function(){return this.$tip=this.$tip||e(this.options.template)},validate:function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled},toggle:function(t){var n=e(t.currentTarget)[this.type](this._options).data(this.type);n[n.tip().hasClass("in")?"hide":"show"]()},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}},e.fn.tooltip=function(n){return this.each(function(){var r=e(this),i=r.data("tooltip"),s=typeof n=="object"&&n;i||r.data("tooltip",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.tooltip.Constructor=t,e.fn.tooltip.defaults={animation:!0,placement:"top",selector:!1,template:'
',trigger:"hover",title:"",delay:0,html:!1}}(window.jQuery),!function(e){"use strict";var t=function(e,t){this.init("popover",e,t)};t.prototype=e.extend({},e.fn.tooltip.Constructor.prototype,{constructor:t,setContent:function(){var e=this.tip(),t=this.getTitle(),n=this.getContent();e.find(".popover-title")[this.options.html?"html":"text"](t),e.find(".popover-content > *")[this.options.html?"html":"text"](n),e.removeClass("fade top bottom left right in")},hasContent:function(){return this.getTitle()||this.getContent()},getContent:function(){var e,t=this.$element,n=this.options;return e=t.attr("data-content")||(typeof n.content=="function"?n.content.call(t[0]):n.content),e},tip:function(){return this.$tip||(this.$tip=e(this.options.template)),this.$tip},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}}),e.fn.popover=function(n){return this.each(function(){var r=e(this),i=r.data("popover"),s=typeof n=="object"&&n;i||r.data("popover",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.popover.Constructor=t,e.fn.popover.defaults=e.extend({},e.fn.tooltip.defaults,{placement:"right",trigger:"click",content:"",template:'

'})}(window.jQuery),!function(e){"use strict";function t(t,n){var r=e.proxy(this.process,this),i=e(t).is("body")?e(window):e(t),s;this.options=e.extend({},e.fn.scrollspy.defaults,n),this.$scrollElement=i.on("scroll.scroll-spy.data-api",r),this.selector=(this.options.target||(s=e(t).attr("href"))&&s.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.$body=e("body"),this.refresh(),this.process()}t.prototype={constructor:t,refresh:function(){var t=this,n;this.offsets=e([]),this.targets=e([]),n=this.$body.find(this.selector).map(function(){var t=e(this),n=t.data("target")||t.attr("href"),r=/^#\w/.test(n)&&e(n);return r&&r.length&&[[r.position().top,n]]||null}).sort(function(e,t){return e[0]-t[0]}).each(function(){t.offsets.push(this[0]),t.targets.push(this[1])})},process:function(){var e=this.$scrollElement.scrollTop()+this.options.offset,t=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,n=t-this.$scrollElement.height(),r=this.offsets,i=this.targets,s=this.activeTarget,o;if(e>=n)return s!=(o=i.last()[0])&&this.activate(o);for(o=r.length;o--;)s!=i[o]&&e>=r[o]&&(!r[o+1]||e<=r[o+1])&&this.activate(i[o])},activate:function(t){var n,r;this.activeTarget=t,e(this.selector).parent(".active").removeClass("active"),r=this.selector+'[data-target="'+t+'"],'+this.selector+'[href="'+t+'"]',n=e(r).parent("li").addClass("active"),n.parent(".dropdown-menu").length&&(n=n.closest("li.dropdown").addClass("active")),n.trigger("activate")}},e.fn.scrollspy=function(n){return this.each(function(){var r=e(this),i=r.data("scrollspy"),s=typeof n=="object"&&n;i||r.data("scrollspy",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.scrollspy.Constructor=t,e.fn.scrollspy.defaults={offset:10},e(window).on("load",function(){e('[data-spy="scroll"]').each(function(){var t=e(this);t.scrollspy(t.data())})})}(window.jQuery),!function(e){"use strict";var t=function(t){this.element=e(t)};t.prototype={constructor:t,show:function(){var t=this.element,n=t.closest("ul:not(.dropdown-menu)"),r=t.attr("data-target"),i,s,o;r||(r=t.attr("href"),r=r&&r.replace(/.*(?=#[^\s]*$)/,""));if(t.parent("li").hasClass("active"))return;i=n.find(".active:last a")[0],o=e.Event("show",{relatedTarget:i}),t.trigger(o);if(o.isDefaultPrevented())return;s=e(r),this.activate(t.parent("li"),n),this.activate(s,s.parent(),function(){t.trigger({type:"shown",relatedTarget:i})})},activate:function(t,n,r){function o(){i.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),t.addClass("active"),s?(t[0].offsetWidth,t.addClass("in")):t.removeClass("fade"),t.parent(".dropdown-menu")&&t.closest("li.dropdown").addClass("active"),r&&r()}var i=n.find("> .active"),s=r&&e.support.transition&&i.hasClass("fade");s?i.one(e.support.transition.end,o):o(),i.removeClass("in")}},e.fn.tab=function(n){return this.each(function(){var r=e(this),i=r.data("tab");i||r.data("tab",i=new t(this)),typeof n=="string"&&i[n]()})},e.fn.tab.Constructor=t,e(document).on("click.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(t){t.preventDefault(),e(this).tab("show")})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.typeahead.defaults,n),this.matcher=this.options.matcher||this.matcher,this.sorter=this.options.sorter||this.sorter,this.highlighter=this.options.highlighter||this.highlighter,this.updater=this.options.updater||this.updater,this.$menu=e(this.options.menu).appendTo("body"),this.source=this.options.source,this.shown=!1,this.listen()};t.prototype={constructor:t,select:function(){var e=this.$menu.find(".active").attr("data-value");return this.$element.val(this.updater(e)).change(),this.hide()},updater:function(e){return e},show:function(){var t=e.extend({},this.$element.offset(),{height:this.$element[0].offsetHeight});return this.$menu.css({top:t.top+t.height,left:t.left}),this.$menu.show(),this.shown=!0,this},hide:function(){return this.$menu.hide(),this.shown=!1,this},lookup:function(t){var n;return this.query=this.$element.val(),!this.query||this.query.length"+t+""})},render:function(t){var n=this;return t=e(t).map(function(t,r){return t=e(n.options.item).attr("data-value",r),t.find("a").html(n.highlighter(r)),t[0]}),t.first().addClass("active"),this.$menu.html(t),this},next:function(t){var n=this.$menu.find(".active").removeClass("active"),r=n.next();r.length||(r=e(this.$menu.find("li")[0])),r.addClass("active")},prev:function(e){var t=this.$menu.find(".active").removeClass("active"),n=t.prev();n.length||(n=this.$menu.find("li").last()),n.addClass("active")},listen:function(){this.$element.on("blur",e.proxy(this.blur,this)).on("keypress",e.proxy(this.keypress,this)).on("keyup",e.proxy(this.keyup,this)),this.eventSupported("keydown")&&this.$element.on("keydown",e.proxy(this.keydown,this)),this.$menu.on("click",e.proxy(this.click,this)).on("mouseenter","li",e.proxy(this.mouseenter,this))},eventSupported:function(e){var t=e in this.$element;return t||(this.$element.setAttribute(e,"return;"),t=typeof this.$element[e]=="function"),t},move:function(e){if(!this.shown)return;switch(e.keyCode){case 9:case 13:case 27:e.preventDefault();break;case 38:e.preventDefault(),this.prev();break;case 40:e.preventDefault(),this.next()}e.stopPropagation()},keydown:function(t){this.suppressKeyPressRepeat=!~e.inArray(t.keyCode,[40,38,9,13,27]),this.move(t)},keypress:function(e){if(this.suppressKeyPressRepeat)return;this.move(e)},keyup:function(e){switch(e.keyCode){case 40:case 38:case 16:case 17:case 18:break;case 9:case 13:if(!this.shown)return;this.select();break;case 27:if(!this.shown)return;this.hide();break;default:this.lookup()}e.stopPropagation(),e.preventDefault()},blur:function(e){var t=this;setTimeout(function(){t.hide()},150)},click:function(e){e.stopPropagation(),e.preventDefault(),this.select()},mouseenter:function(t){this.$menu.find(".active").removeClass("active"),e(t.currentTarget).addClass("active")}},e.fn.typeahead=function(n){return this.each(function(){var r=e(this),i=r.data("typeahead"),s=typeof n=="object"&&n;i||r.data("typeahead",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.typeahead.defaults={source:[],items:8,menu:'',item:'
  • ',minLength:1},e.fn.typeahead.Constructor=t,e(document).on("focus.typeahead.data-api",'[data-provide="typeahead"]',function(t){var n=e(this);if(n.data("typeahead"))return;t.preventDefault(),n.typeahead(n.data())})}(window.jQuery),!function(e){"use strict";var t=function(t,n){this.options=e.extend({},e.fn.affix.defaults,n),this.$window=e(window).on("scroll.affix.data-api",e.proxy(this.checkPosition,this)).on("click.affix.data-api",e.proxy(function(){setTimeout(e.proxy(this.checkPosition,this),1)},this)),this.$element=e(t),this.checkPosition()};t.prototype.checkPosition=function(){if(!this.$element.is(":visible"))return;var t=e(document).height(),n=this.$window.scrollTop(),r=this.$element.offset(),i=this.options.offset,s=i.bottom,o=i.top,u="affix affix-top affix-bottom",a;typeof i!="object"&&(s=o=i),typeof o=="function"&&(o=i.top()),typeof s=="function"&&(s=i.bottom()),a=this.unpin!=null&&n+this.unpin<=r.top?!1:s!=null&&r.top+this.$element.height()>=t-s?"bottom":o!=null&&n<=o?"top":!1;if(this.affixed===a)return;this.affixed=a,this.unpin=a=="bottom"?r.top-n:null,this.$element.removeClass(u).addClass("affix"+(a?"-"+a:""))},e.fn.affix=function(n){return this.each(function(){var r=e(this),i=r.data("affix"),s=typeof n=="object"&&n;i||r.data("affix",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.affix.Constructor=t,e.fn.affix.defaults={offset:0},e(window).on("load",function(){e('[data-spy="affix"]').each(function(){var t=e(this),n=t.data();n.offset=n.offset||{},n.offsetBottom&&(n.offset.bottom=n.offsetBottom),n.offsetTop&&(n.offset.top=n.offsetTop),t.affix(n)})})}(window.jQuery); -------------------------------------------------------------------------------- /css/smoothness/jquery-ui-1.9.1.custom.min.css: -------------------------------------------------------------------------------- 1 | /*! jQuery UI - v1.9.1 - 2012-10-25 2 | * http://jqueryui.com 3 | * Includes: jquery.ui.core.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css 4 | * To view and modify this theme, visit http://jqueryui.com/themeroller/ 5 | * Copyright (c) 2012 jQuery Foundation and other contributors Licensed MIT */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{position:absolute!important;clip:rect(1px);clip:rect(1px,1px,1px,1px)}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{zoom:1}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin-top:2px;padding:.5em .5em .5em .7em;zoom:1}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-noicons{padding-left:.7em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto;zoom:1}.ui-autocomplete{position:absolute;top:0;cursor:default}* html .ui-autocomplete{width:1px}.ui-button{display:inline-block;position:relative;padding:0;margin-right:.1em;cursor:pointer;text-align:center;zoom:1;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:1.4}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month-year{width:100%}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0em}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current{float:right}.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker-cover{position:absolute;z-index:-1;filter:mask();top:-4px;left:-4px;width:200px;height:200px}.ui-dialog{position:absolute;padding:.2em;width:300px;overflow:hidden}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 16px .1em 0}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:19px;margin:-10px 0 0 0;padding:1px;height:18px}.ui-dialog .ui-dialog-titlebar-close span{display:block;margin:1px}.ui-dialog .ui-dialog-titlebar-close:hover,.ui-dialog .ui-dialog-titlebar-close:focus{padding:0}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto;zoom:1}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin:.5em 0 0 0;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:14px;height:14px;right:3px;bottom:3px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:2px;margin:0;display:block;outline:none}.ui-menu .ui-menu{margin-top:-3px;position:absolute}.ui-menu .ui-menu-item{margin:0;padding:0;zoom:1;width:100%}.ui-menu .ui-menu-divider{margin:5px -2px 5px -2px;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.5;zoom:1;font-weight:normal}.ui-menu .ui-menu-item a.ui-state-focus,.ui-menu .ui-menu-item a.ui-state-active{font-weight:normal;margin:-1px}.ui-menu .ui-state-disabled{font-weight:normal;margin:.4em 0 .2em;line-height:1.5}.ui-menu .ui-state-disabled a{cursor:default}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item a{position:relative;padding-left:2em}.ui-menu .ui-icon{position:absolute;top:.2em;left:.2em}.ui-menu .ui-menu-icon{position:static;float:right}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em;zoom:1}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav li a{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active a,.ui-tabs .ui-tabs-nav li.ui-state-disabled a,.ui-tabs .ui-tabs-nav li.ui-tabs-loading a{cursor:text}.ui-tabs .ui-tabs-nav li a,.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}* html .ui-tooltip{background-image:none}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px;background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-state-default .ui-icon{background-image:url(images/ui-icons_888888_256x240.png)}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-active .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_2e83ff_256x240.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_cd0a0a_256x240.png)}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.ui-widget-overlay{background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);-moz-border-radius:8px;-khtml-border-radius:8px;-webkit-border-radius:8px;border-radius:8px} -------------------------------------------------------------------------------- /css/bootstrap-responsive.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Responsive v2.2.1 3 | * 4 | * Copyright 2012 Twitter, Inc 5 | * Licensed under the Apache License v2.0 6 | * http://www.apache.org/licenses/LICENSE-2.0 7 | * 8 | * Designed and built with all the love in the world @twitter by @mdo and @fat. 9 | */ 10 | 11 | .clearfix { 12 | *zoom: 1; 13 | } 14 | 15 | .clearfix:before, 16 | .clearfix:after { 17 | display: table; 18 | line-height: 0; 19 | content: ""; 20 | } 21 | 22 | .clearfix:after { 23 | clear: both; 24 | } 25 | 26 | .hide-text { 27 | font: 0/0 a; 28 | color: transparent; 29 | text-shadow: none; 30 | background-color: transparent; 31 | border: 0; 32 | } 33 | 34 | .input-block-level { 35 | display: block; 36 | width: 100%; 37 | min-height: 30px; 38 | -webkit-box-sizing: border-box; 39 | -moz-box-sizing: border-box; 40 | box-sizing: border-box; 41 | } 42 | 43 | .hidden { 44 | display: none; 45 | visibility: hidden; 46 | } 47 | 48 | .visible-phone { 49 | display: none !important; 50 | } 51 | 52 | .visible-tablet { 53 | display: none !important; 54 | } 55 | 56 | .hidden-desktop { 57 | display: none !important; 58 | } 59 | 60 | .visible-desktop { 61 | display: inherit !important; 62 | } 63 | 64 | @media (min-width: 768px) and (max-width: 979px) { 65 | .hidden-desktop { 66 | display: inherit !important; 67 | } 68 | .visible-desktop { 69 | display: none !important ; 70 | } 71 | .visible-tablet { 72 | display: inherit !important; 73 | } 74 | .hidden-tablet { 75 | display: none !important; 76 | } 77 | } 78 | 79 | @media (max-width: 767px) { 80 | .hidden-desktop { 81 | display: inherit !important; 82 | } 83 | .visible-desktop { 84 | display: none !important; 85 | } 86 | .visible-phone { 87 | display: inherit !important; 88 | } 89 | .hidden-phone { 90 | display: none !important; 91 | } 92 | } 93 | 94 | @media (min-width: 1200px) { 95 | .row { 96 | margin-left: -30px; 97 | *zoom: 1; 98 | } 99 | .row:before, 100 | .row:after { 101 | display: table; 102 | line-height: 0; 103 | content: ""; 104 | } 105 | .row:after { 106 | clear: both; 107 | } 108 | [class*="span"] { 109 | float: left; 110 | min-height: 1px; 111 | margin-left: 30px; 112 | } 113 | .container, 114 | .navbar-static-top .container, 115 | .navbar-fixed-top .container, 116 | .navbar-fixed-bottom .container { 117 | width: 1170px; 118 | } 119 | .span12 { 120 | width: 1170px; 121 | } 122 | .span11 { 123 | width: 1070px; 124 | } 125 | .span10 { 126 | width: 970px; 127 | } 128 | .span9 { 129 | width: 870px; 130 | } 131 | .span8 { 132 | width: 770px; 133 | } 134 | .span7 { 135 | width: 670px; 136 | } 137 | .span6 { 138 | width: 570px; 139 | } 140 | .span5 { 141 | width: 470px; 142 | } 143 | .span4 { 144 | width: 370px; 145 | } 146 | .span3 { 147 | width: 270px; 148 | } 149 | .span2 { 150 | width: 170px; 151 | } 152 | .span1 { 153 | width: 70px; 154 | } 155 | .offset12 { 156 | margin-left: 1230px; 157 | } 158 | .offset11 { 159 | margin-left: 1130px; 160 | } 161 | .offset10 { 162 | margin-left: 1030px; 163 | } 164 | .offset9 { 165 | margin-left: 930px; 166 | } 167 | .offset8 { 168 | margin-left: 830px; 169 | } 170 | .offset7 { 171 | margin-left: 730px; 172 | } 173 | .offset6 { 174 | margin-left: 630px; 175 | } 176 | .offset5 { 177 | margin-left: 530px; 178 | } 179 | .offset4 { 180 | margin-left: 430px; 181 | } 182 | .offset3 { 183 | margin-left: 330px; 184 | } 185 | .offset2 { 186 | margin-left: 230px; 187 | } 188 | .offset1 { 189 | margin-left: 130px; 190 | } 191 | .row-fluid { 192 | width: 100%; 193 | *zoom: 1; 194 | } 195 | .row-fluid:before, 196 | .row-fluid:after { 197 | display: table; 198 | line-height: 0; 199 | content: ""; 200 | } 201 | .row-fluid:after { 202 | clear: both; 203 | } 204 | .row-fluid [class*="span"] { 205 | display: block; 206 | float: left; 207 | width: 100%; 208 | min-height: 30px; 209 | margin-left: 2.564102564102564%; 210 | *margin-left: 2.5109110747408616%; 211 | -webkit-box-sizing: border-box; 212 | -moz-box-sizing: border-box; 213 | box-sizing: border-box; 214 | } 215 | .row-fluid [class*="span"]:first-child { 216 | margin-left: 0; 217 | } 218 | .row-fluid .controls-row [class*="span"] + [class*="span"] { 219 | margin-left: 2.564102564102564%; 220 | } 221 | .row-fluid .span12 { 222 | width: 100%; 223 | *width: 99.94680851063829%; 224 | } 225 | .row-fluid .span11 { 226 | width: 91.45299145299145%; 227 | *width: 91.39979996362975%; 228 | } 229 | .row-fluid .span10 { 230 | width: 82.90598290598291%; 231 | *width: 82.8527914166212%; 232 | } 233 | .row-fluid .span9 { 234 | width: 74.35897435897436%; 235 | *width: 74.30578286961266%; 236 | } 237 | .row-fluid .span8 { 238 | width: 65.81196581196582%; 239 | *width: 65.75877432260411%; 240 | } 241 | .row-fluid .span7 { 242 | width: 57.26495726495726%; 243 | *width: 57.21176577559556%; 244 | } 245 | .row-fluid .span6 { 246 | width: 48.717948717948715%; 247 | *width: 48.664757228587014%; 248 | } 249 | .row-fluid .span5 { 250 | width: 40.17094017094017%; 251 | *width: 40.11774868157847%; 252 | } 253 | .row-fluid .span4 { 254 | width: 31.623931623931625%; 255 | *width: 31.570740134569924%; 256 | } 257 | .row-fluid .span3 { 258 | width: 23.076923076923077%; 259 | *width: 23.023731587561375%; 260 | } 261 | .row-fluid .span2 { 262 | width: 14.52991452991453%; 263 | *width: 14.476723040552828%; 264 | } 265 | .row-fluid .span1 { 266 | width: 5.982905982905983%; 267 | *width: 5.929714493544281%; 268 | } 269 | .row-fluid .offset12 { 270 | margin-left: 105.12820512820512%; 271 | *margin-left: 105.02182214948171%; 272 | } 273 | .row-fluid .offset12:first-child { 274 | margin-left: 102.56410256410257%; 275 | *margin-left: 102.45771958537915%; 276 | } 277 | .row-fluid .offset11 { 278 | margin-left: 96.58119658119658%; 279 | *margin-left: 96.47481360247316%; 280 | } 281 | .row-fluid .offset11:first-child { 282 | margin-left: 94.01709401709402%; 283 | *margin-left: 93.91071103837061%; 284 | } 285 | .row-fluid .offset10 { 286 | margin-left: 88.03418803418803%; 287 | *margin-left: 87.92780505546462%; 288 | } 289 | .row-fluid .offset10:first-child { 290 | margin-left: 85.47008547008548%; 291 | *margin-left: 85.36370249136206%; 292 | } 293 | .row-fluid .offset9 { 294 | margin-left: 79.48717948717949%; 295 | *margin-left: 79.38079650845607%; 296 | } 297 | .row-fluid .offset9:first-child { 298 | margin-left: 76.92307692307693%; 299 | *margin-left: 76.81669394435352%; 300 | } 301 | .row-fluid .offset8 { 302 | margin-left: 70.94017094017094%; 303 | *margin-left: 70.83378796144753%; 304 | } 305 | .row-fluid .offset8:first-child { 306 | margin-left: 68.37606837606839%; 307 | *margin-left: 68.26968539734497%; 308 | } 309 | .row-fluid .offset7 { 310 | margin-left: 62.393162393162385%; 311 | *margin-left: 62.28677941443899%; 312 | } 313 | .row-fluid .offset7:first-child { 314 | margin-left: 59.82905982905982%; 315 | *margin-left: 59.72267685033642%; 316 | } 317 | .row-fluid .offset6 { 318 | margin-left: 53.84615384615384%; 319 | *margin-left: 53.739770867430444%; 320 | } 321 | .row-fluid .offset6:first-child { 322 | margin-left: 51.28205128205128%; 323 | *margin-left: 51.175668303327875%; 324 | } 325 | .row-fluid .offset5 { 326 | margin-left: 45.299145299145295%; 327 | *margin-left: 45.1927623204219%; 328 | } 329 | .row-fluid .offset5:first-child { 330 | margin-left: 42.73504273504273%; 331 | *margin-left: 42.62865975631933%; 332 | } 333 | .row-fluid .offset4 { 334 | margin-left: 36.75213675213675%; 335 | *margin-left: 36.645753773413354%; 336 | } 337 | .row-fluid .offset4:first-child { 338 | margin-left: 34.18803418803419%; 339 | *margin-left: 34.081651209310785%; 340 | } 341 | .row-fluid .offset3 { 342 | margin-left: 28.205128205128204%; 343 | *margin-left: 28.0987452264048%; 344 | } 345 | .row-fluid .offset3:first-child { 346 | margin-left: 25.641025641025642%; 347 | *margin-left: 25.53464266230224%; 348 | } 349 | .row-fluid .offset2 { 350 | margin-left: 19.65811965811966%; 351 | *margin-left: 19.551736679396257%; 352 | } 353 | .row-fluid .offset2:first-child { 354 | margin-left: 17.094017094017094%; 355 | *margin-left: 16.98763411529369%; 356 | } 357 | .row-fluid .offset1 { 358 | margin-left: 11.11111111111111%; 359 | *margin-left: 11.004728132387708%; 360 | } 361 | .row-fluid .offset1:first-child { 362 | margin-left: 8.547008547008547%; 363 | *margin-left: 8.440625568285142%; 364 | } 365 | input, 366 | textarea, 367 | .uneditable-input { 368 | margin-left: 0; 369 | } 370 | .controls-row [class*="span"] + [class*="span"] { 371 | margin-left: 30px; 372 | } 373 | input.span12, 374 | textarea.span12, 375 | .uneditable-input.span12 { 376 | width: 1156px; 377 | } 378 | input.span11, 379 | textarea.span11, 380 | .uneditable-input.span11 { 381 | width: 1056px; 382 | } 383 | input.span10, 384 | textarea.span10, 385 | .uneditable-input.span10 { 386 | width: 956px; 387 | } 388 | input.span9, 389 | textarea.span9, 390 | .uneditable-input.span9 { 391 | width: 856px; 392 | } 393 | input.span8, 394 | textarea.span8, 395 | .uneditable-input.span8 { 396 | width: 756px; 397 | } 398 | input.span7, 399 | textarea.span7, 400 | .uneditable-input.span7 { 401 | width: 656px; 402 | } 403 | input.span6, 404 | textarea.span6, 405 | .uneditable-input.span6 { 406 | width: 556px; 407 | } 408 | input.span5, 409 | textarea.span5, 410 | .uneditable-input.span5 { 411 | width: 456px; 412 | } 413 | input.span4, 414 | textarea.span4, 415 | .uneditable-input.span4 { 416 | width: 356px; 417 | } 418 | input.span3, 419 | textarea.span3, 420 | .uneditable-input.span3 { 421 | width: 256px; 422 | } 423 | input.span2, 424 | textarea.span2, 425 | .uneditable-input.span2 { 426 | width: 156px; 427 | } 428 | input.span1, 429 | textarea.span1, 430 | .uneditable-input.span1 { 431 | width: 56px; 432 | } 433 | .thumbnails { 434 | margin-left: -30px; 435 | } 436 | .thumbnails > li { 437 | margin-left: 30px; 438 | } 439 | .row-fluid .thumbnails { 440 | margin-left: 0; 441 | } 442 | } 443 | 444 | @media (min-width: 768px) and (max-width: 979px) { 445 | .row { 446 | margin-left: -20px; 447 | *zoom: 1; 448 | } 449 | .row:before, 450 | .row:after { 451 | display: table; 452 | line-height: 0; 453 | content: ""; 454 | } 455 | .row:after { 456 | clear: both; 457 | } 458 | [class*="span"] { 459 | float: left; 460 | min-height: 1px; 461 | margin-left: 20px; 462 | } 463 | .container, 464 | .navbar-static-top .container, 465 | .navbar-fixed-top .container, 466 | .navbar-fixed-bottom .container { 467 | width: 724px; 468 | } 469 | .span12 { 470 | width: 724px; 471 | } 472 | .span11 { 473 | width: 662px; 474 | } 475 | .span10 { 476 | width: 600px; 477 | } 478 | .span9 { 479 | width: 538px; 480 | } 481 | .span8 { 482 | width: 476px; 483 | } 484 | .span7 { 485 | width: 414px; 486 | } 487 | .span6 { 488 | width: 352px; 489 | } 490 | .span5 { 491 | width: 290px; 492 | } 493 | .span4 { 494 | width: 228px; 495 | } 496 | .span3 { 497 | width: 166px; 498 | } 499 | .span2 { 500 | width: 104px; 501 | } 502 | .span1 { 503 | width: 42px; 504 | } 505 | .offset12 { 506 | margin-left: 764px; 507 | } 508 | .offset11 { 509 | margin-left: 702px; 510 | } 511 | .offset10 { 512 | margin-left: 640px; 513 | } 514 | .offset9 { 515 | margin-left: 578px; 516 | } 517 | .offset8 { 518 | margin-left: 516px; 519 | } 520 | .offset7 { 521 | margin-left: 454px; 522 | } 523 | .offset6 { 524 | margin-left: 392px; 525 | } 526 | .offset5 { 527 | margin-left: 330px; 528 | } 529 | .offset4 { 530 | margin-left: 268px; 531 | } 532 | .offset3 { 533 | margin-left: 206px; 534 | } 535 | .offset2 { 536 | margin-left: 144px; 537 | } 538 | .offset1 { 539 | margin-left: 82px; 540 | } 541 | .row-fluid { 542 | width: 100%; 543 | *zoom: 1; 544 | } 545 | .row-fluid:before, 546 | .row-fluid:after { 547 | display: table; 548 | line-height: 0; 549 | content: ""; 550 | } 551 | .row-fluid:after { 552 | clear: both; 553 | } 554 | .row-fluid [class*="span"] { 555 | display: block; 556 | float: left; 557 | width: 100%; 558 | min-height: 30px; 559 | margin-left: 2.7624309392265194%; 560 | *margin-left: 2.709239449864817%; 561 | -webkit-box-sizing: border-box; 562 | -moz-box-sizing: border-box; 563 | box-sizing: border-box; 564 | } 565 | .row-fluid [class*="span"]:first-child { 566 | margin-left: 0; 567 | } 568 | .row-fluid .controls-row [class*="span"] + [class*="span"] { 569 | margin-left: 2.7624309392265194%; 570 | } 571 | .row-fluid .span12 { 572 | width: 100%; 573 | *width: 99.94680851063829%; 574 | } 575 | .row-fluid .span11 { 576 | width: 91.43646408839778%; 577 | *width: 91.38327259903608%; 578 | } 579 | .row-fluid .span10 { 580 | width: 82.87292817679558%; 581 | *width: 82.81973668743387%; 582 | } 583 | .row-fluid .span9 { 584 | width: 74.30939226519337%; 585 | *width: 74.25620077583166%; 586 | } 587 | .row-fluid .span8 { 588 | width: 65.74585635359117%; 589 | *width: 65.69266486422946%; 590 | } 591 | .row-fluid .span7 { 592 | width: 57.18232044198895%; 593 | *width: 57.12912895262725%; 594 | } 595 | .row-fluid .span6 { 596 | width: 48.61878453038674%; 597 | *width: 48.56559304102504%; 598 | } 599 | .row-fluid .span5 { 600 | width: 40.05524861878453%; 601 | *width: 40.00205712942283%; 602 | } 603 | .row-fluid .span4 { 604 | width: 31.491712707182323%; 605 | *width: 31.43852121782062%; 606 | } 607 | .row-fluid .span3 { 608 | width: 22.92817679558011%; 609 | *width: 22.87498530621841%; 610 | } 611 | .row-fluid .span2 { 612 | width: 14.3646408839779%; 613 | *width: 14.311449394616199%; 614 | } 615 | .row-fluid .span1 { 616 | width: 5.801104972375691%; 617 | *width: 5.747913483013988%; 618 | } 619 | .row-fluid .offset12 { 620 | margin-left: 105.52486187845304%; 621 | *margin-left: 105.41847889972962%; 622 | } 623 | .row-fluid .offset12:first-child { 624 | margin-left: 102.76243093922652%; 625 | *margin-left: 102.6560479605031%; 626 | } 627 | .row-fluid .offset11 { 628 | margin-left: 96.96132596685082%; 629 | *margin-left: 96.8549429881274%; 630 | } 631 | .row-fluid .offset11:first-child { 632 | margin-left: 94.1988950276243%; 633 | *margin-left: 94.09251204890089%; 634 | } 635 | .row-fluid .offset10 { 636 | margin-left: 88.39779005524862%; 637 | *margin-left: 88.2914070765252%; 638 | } 639 | .row-fluid .offset10:first-child { 640 | margin-left: 85.6353591160221%; 641 | *margin-left: 85.52897613729868%; 642 | } 643 | .row-fluid .offset9 { 644 | margin-left: 79.8342541436464%; 645 | *margin-left: 79.72787116492299%; 646 | } 647 | .row-fluid .offset9:first-child { 648 | margin-left: 77.07182320441989%; 649 | *margin-left: 76.96544022569647%; 650 | } 651 | .row-fluid .offset8 { 652 | margin-left: 71.2707182320442%; 653 | *margin-left: 71.16433525332079%; 654 | } 655 | .row-fluid .offset8:first-child { 656 | margin-left: 68.50828729281768%; 657 | *margin-left: 68.40190431409427%; 658 | } 659 | .row-fluid .offset7 { 660 | margin-left: 62.70718232044199%; 661 | *margin-left: 62.600799341718584%; 662 | } 663 | .row-fluid .offset7:first-child { 664 | margin-left: 59.94475138121547%; 665 | *margin-left: 59.838368402492065%; 666 | } 667 | .row-fluid .offset6 { 668 | margin-left: 54.14364640883978%; 669 | *margin-left: 54.037263430116376%; 670 | } 671 | .row-fluid .offset6:first-child { 672 | margin-left: 51.38121546961326%; 673 | *margin-left: 51.27483249088986%; 674 | } 675 | .row-fluid .offset5 { 676 | margin-left: 45.58011049723757%; 677 | *margin-left: 45.47372751851417%; 678 | } 679 | .row-fluid .offset5:first-child { 680 | margin-left: 42.81767955801105%; 681 | *margin-left: 42.71129657928765%; 682 | } 683 | .row-fluid .offset4 { 684 | margin-left: 37.01657458563536%; 685 | *margin-left: 36.91019160691196%; 686 | } 687 | .row-fluid .offset4:first-child { 688 | margin-left: 34.25414364640884%; 689 | *margin-left: 34.14776066768544%; 690 | } 691 | .row-fluid .offset3 { 692 | margin-left: 28.45303867403315%; 693 | *margin-left: 28.346655695309746%; 694 | } 695 | .row-fluid .offset3:first-child { 696 | margin-left: 25.69060773480663%; 697 | *margin-left: 25.584224756083227%; 698 | } 699 | .row-fluid .offset2 { 700 | margin-left: 19.88950276243094%; 701 | *margin-left: 19.783119783707537%; 702 | } 703 | .row-fluid .offset2:first-child { 704 | margin-left: 17.12707182320442%; 705 | *margin-left: 17.02068884448102%; 706 | } 707 | .row-fluid .offset1 { 708 | margin-left: 11.32596685082873%; 709 | *margin-left: 11.219583872105325%; 710 | } 711 | .row-fluid .offset1:first-child { 712 | margin-left: 8.56353591160221%; 713 | *margin-left: 8.457152932878806%; 714 | } 715 | input, 716 | textarea, 717 | .uneditable-input { 718 | margin-left: 0; 719 | } 720 | .controls-row [class*="span"] + [class*="span"] { 721 | margin-left: 20px; 722 | } 723 | input.span12, 724 | textarea.span12, 725 | .uneditable-input.span12 { 726 | width: 710px; 727 | } 728 | input.span11, 729 | textarea.span11, 730 | .uneditable-input.span11 { 731 | width: 648px; 732 | } 733 | input.span10, 734 | textarea.span10, 735 | .uneditable-input.span10 { 736 | width: 586px; 737 | } 738 | input.span9, 739 | textarea.span9, 740 | .uneditable-input.span9 { 741 | width: 524px; 742 | } 743 | input.span8, 744 | textarea.span8, 745 | .uneditable-input.span8 { 746 | width: 462px; 747 | } 748 | input.span7, 749 | textarea.span7, 750 | .uneditable-input.span7 { 751 | width: 400px; 752 | } 753 | input.span6, 754 | textarea.span6, 755 | .uneditable-input.span6 { 756 | width: 338px; 757 | } 758 | input.span5, 759 | textarea.span5, 760 | .uneditable-input.span5 { 761 | width: 276px; 762 | } 763 | input.span4, 764 | textarea.span4, 765 | .uneditable-input.span4 { 766 | width: 214px; 767 | } 768 | input.span3, 769 | textarea.span3, 770 | .uneditable-input.span3 { 771 | width: 152px; 772 | } 773 | input.span2, 774 | textarea.span2, 775 | .uneditable-input.span2 { 776 | width: 90px; 777 | } 778 | input.span1, 779 | textarea.span1, 780 | .uneditable-input.span1 { 781 | width: 28px; 782 | } 783 | } 784 | 785 | @media (max-width: 767px) { 786 | body { 787 | padding-right: 20px; 788 | padding-left: 20px; 789 | } 790 | .navbar-fixed-top, 791 | .navbar-fixed-bottom, 792 | .navbar-static-top { 793 | margin-right: -20px; 794 | margin-left: -20px; 795 | } 796 | .container-fluid { 797 | padding: 0; 798 | } 799 | .dl-horizontal dt { 800 | float: none; 801 | width: auto; 802 | clear: none; 803 | text-align: left; 804 | } 805 | .dl-horizontal dd { 806 | margin-left: 0; 807 | } 808 | .container { 809 | width: auto; 810 | } 811 | .row-fluid { 812 | width: 100%; 813 | } 814 | .row, 815 | .thumbnails { 816 | margin-left: 0; 817 | } 818 | .thumbnails > li { 819 | float: none; 820 | margin-left: 0; 821 | } 822 | [class*="span"], 823 | .uneditable-input[class*="span"], 824 | .row-fluid [class*="span"] { 825 | display: block; 826 | float: none; 827 | width: 100%; 828 | margin-left: 0; 829 | -webkit-box-sizing: border-box; 830 | -moz-box-sizing: border-box; 831 | box-sizing: border-box; 832 | } 833 | .span12, 834 | .row-fluid .span12 { 835 | width: 100%; 836 | -webkit-box-sizing: border-box; 837 | -moz-box-sizing: border-box; 838 | box-sizing: border-box; 839 | } 840 | .row-fluid [class*="offset"]:first-child { 841 | margin-left: 0; 842 | } 843 | .input-large, 844 | .input-xlarge, 845 | .input-xxlarge, 846 | input[class*="span"], 847 | select[class*="span"], 848 | textarea[class*="span"], 849 | .uneditable-input { 850 | display: block; 851 | width: 100%; 852 | min-height: 30px; 853 | -webkit-box-sizing: border-box; 854 | -moz-box-sizing: border-box; 855 | box-sizing: border-box; 856 | } 857 | .input-prepend input, 858 | .input-append input, 859 | .input-prepend input[class*="span"], 860 | .input-append input[class*="span"] { 861 | display: inline-block; 862 | width: auto; 863 | } 864 | .controls-row [class*="span"] + [class*="span"] { 865 | margin-left: 0; 866 | } 867 | .modal { 868 | position: fixed; 869 | top: 20px; 870 | right: 20px; 871 | left: 20px; 872 | width: auto; 873 | margin: 0; 874 | } 875 | .modal.fade { 876 | top: -100px; 877 | } 878 | .modal.fade.in { 879 | top: 20px; 880 | } 881 | } 882 | 883 | @media (max-width: 480px) { 884 | .nav-collapse { 885 | -webkit-transform: translate3d(0, 0, 0); 886 | } 887 | .page-header h1 small { 888 | display: block; 889 | line-height: 20px; 890 | } 891 | input[type="checkbox"], 892 | input[type="radio"] { 893 | border: 1px solid #ccc; 894 | } 895 | .form-horizontal .control-label { 896 | float: none; 897 | width: auto; 898 | padding-top: 0; 899 | text-align: left; 900 | } 901 | .form-horizontal .controls { 902 | margin-left: 0; 903 | } 904 | .form-horizontal .control-list { 905 | padding-top: 0; 906 | } 907 | .form-horizontal .form-actions { 908 | padding-right: 10px; 909 | padding-left: 10px; 910 | } 911 | .media .pull-left, 912 | .media .pull-right { 913 | display: block; 914 | float: none; 915 | margin-bottom: 10px; 916 | } 917 | .media-object { 918 | margin-right: 0; 919 | margin-left: 0; 920 | } 921 | .modal { 922 | top: 10px; 923 | right: 10px; 924 | left: 10px; 925 | } 926 | .modal-header .close { 927 | padding: 10px; 928 | margin: -10px; 929 | } 930 | .carousel-caption { 931 | position: static; 932 | } 933 | } 934 | 935 | @media (max-width: 979px) { 936 | body { 937 | padding-top: 0; 938 | } 939 | .navbar-fixed-top, 940 | .navbar-fixed-bottom { 941 | position: static; 942 | } 943 | .navbar-fixed-top { 944 | margin-bottom: 20px; 945 | } 946 | .navbar-fixed-bottom { 947 | margin-top: 20px; 948 | } 949 | .navbar-fixed-top .navbar-inner, 950 | .navbar-fixed-bottom .navbar-inner { 951 | padding: 5px; 952 | } 953 | .navbar .container { 954 | width: auto; 955 | padding: 0; 956 | } 957 | .navbar .brand { 958 | padding-right: 10px; 959 | padding-left: 10px; 960 | margin: 0 0 0 -5px; 961 | } 962 | .nav-collapse { 963 | clear: both; 964 | } 965 | .nav-collapse .nav { 966 | float: none; 967 | margin: 0 0 10px; 968 | } 969 | .nav-collapse .nav > li { 970 | float: none; 971 | } 972 | .nav-collapse .nav > li > a { 973 | margin-bottom: 2px; 974 | } 975 | .nav-collapse .nav > .divider-vertical { 976 | display: none; 977 | } 978 | .nav-collapse .nav .nav-header { 979 | color: #777777; 980 | text-shadow: none; 981 | } 982 | .nav-collapse .nav > li > a, 983 | .nav-collapse .dropdown-menu a { 984 | padding: 9px 15px; 985 | font-weight: bold; 986 | color: #777777; 987 | -webkit-border-radius: 3px; 988 | -moz-border-radius: 3px; 989 | border-radius: 3px; 990 | } 991 | .nav-collapse .btn { 992 | padding: 4px 10px 4px; 993 | font-weight: normal; 994 | -webkit-border-radius: 4px; 995 | -moz-border-radius: 4px; 996 | border-radius: 4px; 997 | } 998 | .nav-collapse .dropdown-menu li + li a { 999 | margin-bottom: 2px; 1000 | } 1001 | .nav-collapse .nav > li > a:hover, 1002 | .nav-collapse .dropdown-menu a:hover { 1003 | background-color: #f2f2f2; 1004 | } 1005 | .navbar-inverse .nav-collapse .nav > li > a, 1006 | .navbar-inverse .nav-collapse .dropdown-menu a { 1007 | color: #999999; 1008 | } 1009 | .navbar-inverse .nav-collapse .nav > li > a:hover, 1010 | .navbar-inverse .nav-collapse .dropdown-menu a:hover { 1011 | background-color: #111111; 1012 | } 1013 | .nav-collapse.in .btn-group { 1014 | padding: 0; 1015 | margin-top: 5px; 1016 | } 1017 | .nav-collapse .dropdown-menu { 1018 | position: static; 1019 | top: auto; 1020 | left: auto; 1021 | display: none; 1022 | float: none; 1023 | max-width: none; 1024 | padding: 0; 1025 | margin: 0 15px; 1026 | background-color: transparent; 1027 | border: none; 1028 | -webkit-border-radius: 0; 1029 | -moz-border-radius: 0; 1030 | border-radius: 0; 1031 | -webkit-box-shadow: none; 1032 | -moz-box-shadow: none; 1033 | box-shadow: none; 1034 | } 1035 | .nav-collapse .open > .dropdown-menu { 1036 | display: block; 1037 | } 1038 | .nav-collapse .dropdown-menu:before, 1039 | .nav-collapse .dropdown-menu:after { 1040 | display: none; 1041 | } 1042 | .nav-collapse .dropdown-menu .divider { 1043 | display: none; 1044 | } 1045 | .nav-collapse .nav > li > .dropdown-menu:before, 1046 | .nav-collapse .nav > li > .dropdown-menu:after { 1047 | display: none; 1048 | } 1049 | .nav-collapse .navbar-form, 1050 | .nav-collapse .navbar-search { 1051 | float: none; 1052 | padding: 10px 15px; 1053 | margin: 10px 0; 1054 | border-top: 1px solid #f2f2f2; 1055 | border-bottom: 1px solid #f2f2f2; 1056 | -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); 1057 | -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); 1058 | box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); 1059 | } 1060 | .navbar-inverse .nav-collapse .navbar-form, 1061 | .navbar-inverse .nav-collapse .navbar-search { 1062 | border-top-color: #111111; 1063 | border-bottom-color: #111111; 1064 | } 1065 | .navbar .nav-collapse .nav.pull-right { 1066 | float: none; 1067 | margin-left: 0; 1068 | } 1069 | .nav-collapse, 1070 | .nav-collapse.collapse { 1071 | height: 0; 1072 | overflow: hidden; 1073 | } 1074 | .navbar .btn-navbar { 1075 | display: block; 1076 | } 1077 | .navbar-static .navbar-inner { 1078 | padding-right: 10px; 1079 | padding-left: 10px; 1080 | } 1081 | } 1082 | 1083 | @media (min-width: 980px) { 1084 | .nav-collapse.collapse { 1085 | height: auto !important; 1086 | overflow: visible !important; 1087 | } 1088 | } 1089 | -------------------------------------------------------------------------------- /css/smoothness/jquery-ui-1.9.1.custom.css: -------------------------------------------------------------------------------- 1 | /*! jQuery UI - v1.9.1 - 2012-10-25 2 | * http://jqueryui.com 3 | * Includes: jquery.ui.core.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css 4 | * To view and modify this theme, visit http://jqueryui.com/themeroller/ 5 | * Copyright (c) 2012 jQuery Foundation and other contributors Licensed MIT */ 6 | 7 | /* Layout helpers 8 | ----------------------------------*/ 9 | .ui-helper-hidden { display: none; } 10 | .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } 11 | .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } 12 | .ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; } 13 | .ui-helper-clearfix:after { clear: both; } 14 | .ui-helper-clearfix { zoom: 1; } 15 | .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } 16 | 17 | 18 | /* Interaction Cues 19 | ----------------------------------*/ 20 | .ui-state-disabled { cursor: default !important; } 21 | 22 | 23 | /* Icons 24 | ----------------------------------*/ 25 | 26 | /* states and images */ 27 | .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } 28 | 29 | 30 | /* Misc visuals 31 | ----------------------------------*/ 32 | 33 | /* Overlays */ 34 | .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } 35 | .ui-accordion .ui-accordion-header { display: block; cursor: pointer; position: relative; margin-top: 2px; padding: .5em .5em .5em .7em; zoom: 1; } 36 | .ui-accordion .ui-accordion-icons { padding-left: 2.2em; } 37 | .ui-accordion .ui-accordion-noicons { padding-left: .7em; } 38 | .ui-accordion .ui-accordion-icons .ui-accordion-icons { padding-left: 2.2em; } 39 | .ui-accordion .ui-accordion-header .ui-accordion-header-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } 40 | .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; zoom: 1; } 41 | .ui-autocomplete { 42 | position: absolute; 43 | top: 0; /* #8656 */ 44 | cursor: default; 45 | } 46 | 47 | /* workarounds */ 48 | * html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */ 49 | .ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */ 50 | .ui-button, .ui-button:link, .ui-button:visited, .ui-button:hover, .ui-button:active { text-decoration: none; } 51 | .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ 52 | button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */ 53 | .ui-button-icons-only { width: 3.4em; } 54 | button.ui-button-icons-only { width: 3.7em; } 55 | 56 | /*button text element */ 57 | .ui-button .ui-button-text { display: block; line-height: 1.4; } 58 | .ui-button-text-only .ui-button-text { padding: .4em 1em; } 59 | .ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; } 60 | .ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; } 61 | .ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; } 62 | .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; } 63 | /* no icon support for input elements, provide padding by default */ 64 | input.ui-button { padding: .4em 1em; } 65 | 66 | /*button icon element(s) */ 67 | .ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; } 68 | .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; } 69 | .ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; } 70 | .ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } 71 | .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } 72 | 73 | /*button sets*/ 74 | .ui-buttonset { margin-right: 7px; } 75 | .ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; } 76 | 77 | /* workarounds */ 78 | button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */ 79 | .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } 80 | .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; } 81 | .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } 82 | .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } 83 | .ui-datepicker .ui-datepicker-prev { left:2px; } 84 | .ui-datepicker .ui-datepicker-next { right:2px; } 85 | .ui-datepicker .ui-datepicker-prev-hover { left:1px; } 86 | .ui-datepicker .ui-datepicker-next-hover { right:1px; } 87 | .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } 88 | .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } 89 | .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; } 90 | .ui-datepicker select.ui-datepicker-month-year {width: 100%;} 91 | .ui-datepicker select.ui-datepicker-month, 92 | .ui-datepicker select.ui-datepicker-year { width: 49%;} 93 | .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } 94 | .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } 95 | .ui-datepicker td { border: 0; padding: 1px; } 96 | .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } 97 | .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } 98 | .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } 99 | .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } 100 | 101 | /* with multiple calendars */ 102 | .ui-datepicker.ui-datepicker-multi { width:auto; } 103 | .ui-datepicker-multi .ui-datepicker-group { float:left; } 104 | .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } 105 | .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } 106 | .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } 107 | .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } 108 | .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } 109 | .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } 110 | .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } 111 | .ui-datepicker-row-break { clear:both; width:100%; font-size:0em; } 112 | 113 | /* RTL support */ 114 | .ui-datepicker-rtl { direction: rtl; } 115 | .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } 116 | .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } 117 | .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } 118 | .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } 119 | .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } 120 | .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } 121 | .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } 122 | .ui-datepicker-rtl .ui-datepicker-group { float:right; } 123 | .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } 124 | .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } 125 | 126 | /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ 127 | .ui-datepicker-cover { 128 | position: absolute; /*must have*/ 129 | z-index: -1; /*must have*/ 130 | filter: mask(); /*must have*/ 131 | top: -4px; /*must have*/ 132 | left: -4px; /*must have*/ 133 | width: 200px; /*must have*/ 134 | height: 200px; /*must have*/ 135 | }.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; } 136 | .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; } 137 | .ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } 138 | .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } 139 | .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } 140 | .ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } 141 | .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } 142 | .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } 143 | .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } 144 | .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } 145 | .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } 146 | .ui-draggable .ui-dialog-titlebar { cursor: move; } 147 | .ui-menu { list-style:none; padding: 2px; margin: 0; display:block; outline: none; } 148 | .ui-menu .ui-menu { margin-top: -3px; position: absolute; } 149 | .ui-menu .ui-menu-item { margin: 0; padding: 0; zoom: 1; width: 100%; } 150 | .ui-menu .ui-menu-divider { margin: 5px -2px 5px -2px; height: 0; font-size: 0; line-height: 0; border-width: 1px 0 0 0; } 151 | .ui-menu .ui-menu-item a { text-decoration: none; display: block; padding: 2px .4em; line-height: 1.5; zoom: 1; font-weight: normal; } 152 | .ui-menu .ui-menu-item a.ui-state-focus, 153 | .ui-menu .ui-menu-item a.ui-state-active { font-weight: normal; margin: -1px; } 154 | 155 | .ui-menu .ui-state-disabled { font-weight: normal; margin: .4em 0 .2em; line-height: 1.5; } 156 | .ui-menu .ui-state-disabled a { cursor: default; } 157 | 158 | /* icon support */ 159 | .ui-menu-icons { position: relative; } 160 | .ui-menu-icons .ui-menu-item a { position: relative; padding-left: 2em; } 161 | 162 | /* left-aligned */ 163 | .ui-menu .ui-icon { position: absolute; top: .2em; left: .2em; } 164 | 165 | /* right-aligned */ 166 | .ui-menu .ui-menu-icon { position: static; float: right; } 167 | .ui-progressbar { height:2em; text-align: left; overflow: hidden; } 168 | .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }.ui-resizable { position: relative;} 169 | .ui-resizable-handle { position: absolute;font-size: 0.1px; display: block; } 170 | .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } 171 | .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } 172 | .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } 173 | .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; } 174 | .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; } 175 | .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } 176 | .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } 177 | .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } 178 | .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; } 179 | .ui-slider { position: relative; text-align: left; } 180 | .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } 181 | .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } 182 | 183 | .ui-slider-horizontal { height: .8em; } 184 | .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } 185 | .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } 186 | .ui-slider-horizontal .ui-slider-range-min { left: 0; } 187 | .ui-slider-horizontal .ui-slider-range-max { right: 0; } 188 | 189 | .ui-slider-vertical { width: .8em; height: 100px; } 190 | .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } 191 | .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } 192 | .ui-slider-vertical .ui-slider-range-min { bottom: 0; } 193 | .ui-slider-vertical .ui-slider-range-max { top: 0; }.ui-spinner { position:relative; display: inline-block; overflow: hidden; padding: 0; vertical-align: middle; } 194 | .ui-spinner-input { border: none; background: none; padding: 0; margin: .2em 0; vertical-align: middle; margin-left: .4em; margin-right: 22px; } 195 | .ui-spinner-button { width: 16px; height: 50%; font-size: .5em; padding: 0; margin: 0; text-align: center; position: absolute; cursor: default; display: block; overflow: hidden; right: 0; } 196 | .ui-spinner a.ui-spinner-button { border-top: none; border-bottom: none; border-right: none; } /* more specificity required here to overide default borders */ 197 | .ui-spinner .ui-icon { position: absolute; margin-top: -8px; top: 50%; left: 0; } /* vertical centre icon */ 198 | .ui-spinner-up { top: 0; } 199 | .ui-spinner-down { bottom: 0; } 200 | 201 | /* TR overrides */ 202 | .ui-spinner .ui-icon-triangle-1-s { 203 | /* need to fix icons sprite */ 204 | background-position:-65px -16px; 205 | } 206 | .ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ 207 | .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; } 208 | .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 0; margin: 1px .2em 0 0; border-bottom: 0; padding: 0; white-space: nowrap; } 209 | .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; } 210 | .ui-tabs .ui-tabs-nav li.ui-tabs-active { margin-bottom: -1px; padding-bottom: 1px; } 211 | .ui-tabs .ui-tabs-nav li.ui-tabs-active a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-tabs-loading a { cursor: text; } 212 | .ui-tabs .ui-tabs-nav li a, .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ 213 | .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; } 214 | .ui-tooltip { 215 | padding: 8px; 216 | position: absolute; 217 | z-index: 9999; 218 | max-width: 300px; 219 | -webkit-box-shadow: 0 0 5px #aaa; 220 | box-shadow: 0 0 5px #aaa; 221 | } 222 | /* Fades and background-images don't work well together in IE6, drop the image */ 223 | * html .ui-tooltip { 224 | background-image: none; 225 | } 226 | body .ui-tooltip { border-width: 2px; } 227 | 228 | /* Component containers 229 | ----------------------------------*/ 230 | .ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; } 231 | .ui-widget .ui-widget { font-size: 1em; } 232 | .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; } 233 | .ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; } 234 | .ui-widget-content a { color: #222222; } 235 | .ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; } 236 | .ui-widget-header a { color: #222222; } 237 | 238 | /* Interaction states 239 | ----------------------------------*/ 240 | .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; } 241 | .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; } 242 | .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; } 243 | .ui-state-hover a, .ui-state-hover a:hover, .ui-state-hover a:link, .ui-state-hover a:visited { color: #212121; text-decoration: none; } 244 | .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; } 245 | .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; } 246 | 247 | /* Interaction Cues 248 | ----------------------------------*/ 249 | .ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; } 250 | .ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; } 251 | .ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; } 252 | .ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; } 253 | .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; } 254 | .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } 255 | .ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } 256 | .ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } 257 | .ui-state-disabled .ui-icon { filter:Alpha(Opacity=35); } /* For IE8 - See #6059 */ 258 | 259 | /* Icons 260 | ----------------------------------*/ 261 | 262 | /* states and images */ 263 | .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); } 264 | .ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } 265 | .ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } 266 | .ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); } 267 | .ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } 268 | .ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } 269 | .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); } 270 | .ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); } 271 | 272 | /* positioning */ 273 | .ui-icon-carat-1-n { background-position: 0 0; } 274 | .ui-icon-carat-1-ne { background-position: -16px 0; } 275 | .ui-icon-carat-1-e { background-position: -32px 0; } 276 | .ui-icon-carat-1-se { background-position: -48px 0; } 277 | .ui-icon-carat-1-s { background-position: -64px 0; } 278 | .ui-icon-carat-1-sw { background-position: -80px 0; } 279 | .ui-icon-carat-1-w { background-position: -96px 0; } 280 | .ui-icon-carat-1-nw { background-position: -112px 0; } 281 | .ui-icon-carat-2-n-s { background-position: -128px 0; } 282 | .ui-icon-carat-2-e-w { background-position: -144px 0; } 283 | .ui-icon-triangle-1-n { background-position: 0 -16px; } 284 | .ui-icon-triangle-1-ne { background-position: -16px -16px; } 285 | .ui-icon-triangle-1-e { background-position: -32px -16px; } 286 | .ui-icon-triangle-1-se { background-position: -48px -16px; } 287 | .ui-icon-triangle-1-s { background-position: -64px -16px; } 288 | .ui-icon-triangle-1-sw { background-position: -80px -16px; } 289 | .ui-icon-triangle-1-w { background-position: -96px -16px; } 290 | .ui-icon-triangle-1-nw { background-position: -112px -16px; } 291 | .ui-icon-triangle-2-n-s { background-position: -128px -16px; } 292 | .ui-icon-triangle-2-e-w { background-position: -144px -16px; } 293 | .ui-icon-arrow-1-n { background-position: 0 -32px; } 294 | .ui-icon-arrow-1-ne { background-position: -16px -32px; } 295 | .ui-icon-arrow-1-e { background-position: -32px -32px; } 296 | .ui-icon-arrow-1-se { background-position: -48px -32px; } 297 | .ui-icon-arrow-1-s { background-position: -64px -32px; } 298 | .ui-icon-arrow-1-sw { background-position: -80px -32px; } 299 | .ui-icon-arrow-1-w { background-position: -96px -32px; } 300 | .ui-icon-arrow-1-nw { background-position: -112px -32px; } 301 | .ui-icon-arrow-2-n-s { background-position: -128px -32px; } 302 | .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } 303 | .ui-icon-arrow-2-e-w { background-position: -160px -32px; } 304 | .ui-icon-arrow-2-se-nw { background-position: -176px -32px; } 305 | .ui-icon-arrowstop-1-n { background-position: -192px -32px; } 306 | .ui-icon-arrowstop-1-e { background-position: -208px -32px; } 307 | .ui-icon-arrowstop-1-s { background-position: -224px -32px; } 308 | .ui-icon-arrowstop-1-w { background-position: -240px -32px; } 309 | .ui-icon-arrowthick-1-n { background-position: 0 -48px; } 310 | .ui-icon-arrowthick-1-ne { background-position: -16px -48px; } 311 | .ui-icon-arrowthick-1-e { background-position: -32px -48px; } 312 | .ui-icon-arrowthick-1-se { background-position: -48px -48px; } 313 | .ui-icon-arrowthick-1-s { background-position: -64px -48px; } 314 | .ui-icon-arrowthick-1-sw { background-position: -80px -48px; } 315 | .ui-icon-arrowthick-1-w { background-position: -96px -48px; } 316 | .ui-icon-arrowthick-1-nw { background-position: -112px -48px; } 317 | .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } 318 | .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } 319 | .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } 320 | .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } 321 | .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } 322 | .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } 323 | .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } 324 | .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } 325 | .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } 326 | .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } 327 | .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } 328 | .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } 329 | .ui-icon-arrowreturn-1-w { background-position: -64px -64px; } 330 | .ui-icon-arrowreturn-1-n { background-position: -80px -64px; } 331 | .ui-icon-arrowreturn-1-e { background-position: -96px -64px; } 332 | .ui-icon-arrowreturn-1-s { background-position: -112px -64px; } 333 | .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } 334 | .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } 335 | .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } 336 | .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } 337 | .ui-icon-arrow-4 { background-position: 0 -80px; } 338 | .ui-icon-arrow-4-diag { background-position: -16px -80px; } 339 | .ui-icon-extlink { background-position: -32px -80px; } 340 | .ui-icon-newwin { background-position: -48px -80px; } 341 | .ui-icon-refresh { background-position: -64px -80px; } 342 | .ui-icon-shuffle { background-position: -80px -80px; } 343 | .ui-icon-transfer-e-w { background-position: -96px -80px; } 344 | .ui-icon-transferthick-e-w { background-position: -112px -80px; } 345 | .ui-icon-folder-collapsed { background-position: 0 -96px; } 346 | .ui-icon-folder-open { background-position: -16px -96px; } 347 | .ui-icon-document { background-position: -32px -96px; } 348 | .ui-icon-document-b { background-position: -48px -96px; } 349 | .ui-icon-note { background-position: -64px -96px; } 350 | .ui-icon-mail-closed { background-position: -80px -96px; } 351 | .ui-icon-mail-open { background-position: -96px -96px; } 352 | .ui-icon-suitcase { background-position: -112px -96px; } 353 | .ui-icon-comment { background-position: -128px -96px; } 354 | .ui-icon-person { background-position: -144px -96px; } 355 | .ui-icon-print { background-position: -160px -96px; } 356 | .ui-icon-trash { background-position: -176px -96px; } 357 | .ui-icon-locked { background-position: -192px -96px; } 358 | .ui-icon-unlocked { background-position: -208px -96px; } 359 | .ui-icon-bookmark { background-position: -224px -96px; } 360 | .ui-icon-tag { background-position: -240px -96px; } 361 | .ui-icon-home { background-position: 0 -112px; } 362 | .ui-icon-flag { background-position: -16px -112px; } 363 | .ui-icon-calendar { background-position: -32px -112px; } 364 | .ui-icon-cart { background-position: -48px -112px; } 365 | .ui-icon-pencil { background-position: -64px -112px; } 366 | .ui-icon-clock { background-position: -80px -112px; } 367 | .ui-icon-disk { background-position: -96px -112px; } 368 | .ui-icon-calculator { background-position: -112px -112px; } 369 | .ui-icon-zoomin { background-position: -128px -112px; } 370 | .ui-icon-zoomout { background-position: -144px -112px; } 371 | .ui-icon-search { background-position: -160px -112px; } 372 | .ui-icon-wrench { background-position: -176px -112px; } 373 | .ui-icon-gear { background-position: -192px -112px; } 374 | .ui-icon-heart { background-position: -208px -112px; } 375 | .ui-icon-star { background-position: -224px -112px; } 376 | .ui-icon-link { background-position: -240px -112px; } 377 | .ui-icon-cancel { background-position: 0 -128px; } 378 | .ui-icon-plus { background-position: -16px -128px; } 379 | .ui-icon-plusthick { background-position: -32px -128px; } 380 | .ui-icon-minus { background-position: -48px -128px; } 381 | .ui-icon-minusthick { background-position: -64px -128px; } 382 | .ui-icon-close { background-position: -80px -128px; } 383 | .ui-icon-closethick { background-position: -96px -128px; } 384 | .ui-icon-key { background-position: -112px -128px; } 385 | .ui-icon-lightbulb { background-position: -128px -128px; } 386 | .ui-icon-scissors { background-position: -144px -128px; } 387 | .ui-icon-clipboard { background-position: -160px -128px; } 388 | .ui-icon-copy { background-position: -176px -128px; } 389 | .ui-icon-contact { background-position: -192px -128px; } 390 | .ui-icon-image { background-position: -208px -128px; } 391 | .ui-icon-video { background-position: -224px -128px; } 392 | .ui-icon-script { background-position: -240px -128px; } 393 | .ui-icon-alert { background-position: 0 -144px; } 394 | .ui-icon-info { background-position: -16px -144px; } 395 | .ui-icon-notice { background-position: -32px -144px; } 396 | .ui-icon-help { background-position: -48px -144px; } 397 | .ui-icon-check { background-position: -64px -144px; } 398 | .ui-icon-bullet { background-position: -80px -144px; } 399 | .ui-icon-radio-on { background-position: -96px -144px; } 400 | .ui-icon-radio-off { background-position: -112px -144px; } 401 | .ui-icon-pin-w { background-position: -128px -144px; } 402 | .ui-icon-pin-s { background-position: -144px -144px; } 403 | .ui-icon-play { background-position: 0 -160px; } 404 | .ui-icon-pause { background-position: -16px -160px; } 405 | .ui-icon-seek-next { background-position: -32px -160px; } 406 | .ui-icon-seek-prev { background-position: -48px -160px; } 407 | .ui-icon-seek-end { background-position: -64px -160px; } 408 | .ui-icon-seek-start { background-position: -80px -160px; } 409 | /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ 410 | .ui-icon-seek-first { background-position: -80px -160px; } 411 | .ui-icon-stop { background-position: -96px -160px; } 412 | .ui-icon-eject { background-position: -112px -160px; } 413 | .ui-icon-volume-off { background-position: -128px -160px; } 414 | .ui-icon-volume-on { background-position: -144px -160px; } 415 | .ui-icon-power { background-position: 0 -176px; } 416 | .ui-icon-signal-diag { background-position: -16px -176px; } 417 | .ui-icon-signal { background-position: -32px -176px; } 418 | .ui-icon-battery-0 { background-position: -48px -176px; } 419 | .ui-icon-battery-1 { background-position: -64px -176px; } 420 | .ui-icon-battery-2 { background-position: -80px -176px; } 421 | .ui-icon-battery-3 { background-position: -96px -176px; } 422 | .ui-icon-circle-plus { background-position: 0 -192px; } 423 | .ui-icon-circle-minus { background-position: -16px -192px; } 424 | .ui-icon-circle-close { background-position: -32px -192px; } 425 | .ui-icon-circle-triangle-e { background-position: -48px -192px; } 426 | .ui-icon-circle-triangle-s { background-position: -64px -192px; } 427 | .ui-icon-circle-triangle-w { background-position: -80px -192px; } 428 | .ui-icon-circle-triangle-n { background-position: -96px -192px; } 429 | .ui-icon-circle-arrow-e { background-position: -112px -192px; } 430 | .ui-icon-circle-arrow-s { background-position: -128px -192px; } 431 | .ui-icon-circle-arrow-w { background-position: -144px -192px; } 432 | .ui-icon-circle-arrow-n { background-position: -160px -192px; } 433 | .ui-icon-circle-zoomin { background-position: -176px -192px; } 434 | .ui-icon-circle-zoomout { background-position: -192px -192px; } 435 | .ui-icon-circle-check { background-position: -208px -192px; } 436 | .ui-icon-circlesmall-plus { background-position: 0 -208px; } 437 | .ui-icon-circlesmall-minus { background-position: -16px -208px; } 438 | .ui-icon-circlesmall-close { background-position: -32px -208px; } 439 | .ui-icon-squaresmall-plus { background-position: -48px -208px; } 440 | .ui-icon-squaresmall-minus { background-position: -64px -208px; } 441 | .ui-icon-squaresmall-close { background-position: -80px -208px; } 442 | .ui-icon-grip-dotted-vertical { background-position: 0 -224px; } 443 | .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } 444 | .ui-icon-grip-solid-vertical { background-position: -32px -224px; } 445 | .ui-icon-grip-solid-horizontal { background-position: -48px -224px; } 446 | .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } 447 | .ui-icon-grip-diagonal-se { background-position: -80px -224px; } 448 | 449 | 450 | /* Misc visuals 451 | ----------------------------------*/ 452 | 453 | /* Corner radius */ 454 | .ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; } 455 | .ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; } 456 | .ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; } 457 | .ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } 458 | 459 | /* Overlays */ 460 | .ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .3;filter:Alpha(Opacity=30); } 461 | .ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .3;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; } -------------------------------------------------------------------------------- /js/jquery.kontrol.js: -------------------------------------------------------------------------------- 1 | /*!jQuery Kontrol*/ 2 | /** 3 | * Small extensible jQuery library of new UI controls ; 4 | * Dial (was jQuery Knob), XY pad, Bars. 5 | * 6 | * Version: 0.9.0 (15/07/2012) 7 | * Requires: jQuery v1.7+ 8 | * 9 | * Copyright (c) 2012 Anthony Terrien 10 | * Under MIT and GPL licenses: 11 | * http://www.opensource.org/licenses/mit-license.php 12 | * http://www.gnu.org/licenses/gpl.html 13 | * 14 | * Thanks to vor, eskimoblood, spiffistan, FabrizioC 15 | */ 16 | (function($) { 17 | 18 | /** 19 | * Kontrol library 20 | */ 21 | "use strict"; 22 | 23 | /** 24 | * Definition of globals and core 25 | */ 26 | var k = {}, // kontrol 27 | max = Math.max, 28 | min = Math.min; 29 | 30 | k.c = {}; 31 | k.c.d = $(document); 32 | k.c.t = function (e) { 33 | return e.originalEvent.touches.length - 1; 34 | }; 35 | 36 | /** 37 | * Kontrol Object 38 | * 39 | * Definition of an abstract UI control 40 | * 41 | * Each concrete component must call this one. 42 | * 43 | * k.o.call(this); 44 | * 45 | */ 46 | k.o = function () { 47 | var s = this; 48 | 49 | this.o = null; // array of options 50 | this.$ = null; // jQuery wrapped element 51 | this.i = null; // mixed HTMLInputElement or array of HTMLInputElement 52 | this.g = null; // 2D graphics context for 'pre-rendering' 53 | this.v = null; // value ; mixed array or integer 54 | this.cv = null; // change value ; not commited value 55 | this.x = 0; // canvas x position 56 | this.y = 0; // canvas y position 57 | this.mx = 0; // x value of mouse down point of the current mouse move 58 | this.my = 0; // y value of mouse down point of the current mose move 59 | this.$c = null; // jQuery canvas element 60 | this.c = null; // rendered canvas context 61 | this.t = 0; // touches index 62 | this.isInit = false; 63 | this.fgColor = null; // main color 64 | this.pColor = null; // previous color 65 | this.sH = null; // start hook 66 | this.dH = null; // draw hook 67 | this.cH = null; // change hook 68 | this.eH = null; // cancel hook 69 | this.rH = null; // release hook 70 | 71 | this.run = function () { 72 | var cf = function (e, conf) { 73 | var k; 74 | for (k in conf) { 75 | s.o[k] = conf[k]; 76 | } 77 | s.init(); 78 | s._configure() 79 | ._draw(); 80 | }; 81 | 82 | if(this.$.data('kontroled')) return; 83 | this.$.data('kontroled', true); 84 | 85 | this.extend(); 86 | this.o = $.extend( 87 | { 88 | // Config 89 | min : this.$.data('min') || 0, 90 | max : this.$.data('max') || 100, 91 | stopper : true, 92 | readOnly : this.$.data('readonly'), 93 | noScroll : this.$.data('noScroll'), 94 | 95 | // UI 96 | cursor : (this.$.data('cursor') === true && 30) 97 | || this.$.data('cursor') 98 | || 0, 99 | thickness : this.$.data('thickness') || 0.35, 100 | width : this.$.data('width') || 200, 101 | height : this.$.data('height') || 200, 102 | displayInput : this.$.data('displayinput') == null || this.$.data('displayinput'), 103 | displayPrevious : this.$.data('displayprevious'), 104 | fgColor : this.$.data('fgcolor') || '#87CEEB', 105 | inline : false, 106 | //context : {'lineCap' : 'butt'}, 107 | 108 | // Hooks 109 | start:null, // function () {} 110 | draw : null, // function () {} 111 | change : null, // function (value) {} 112 | cancel : null, // function () {} 113 | release : null // function (value) {} 114 | }, this.o 115 | ); 116 | 117 | // routing value 118 | if(this.$.is('fieldset')) { 119 | 120 | // fieldset = array of integer 121 | this.v = {}; 122 | this.i = this.$.find('input') 123 | this.i.each(function(k) { 124 | var $this = $(this); 125 | s.i[k] = $this; 126 | s.v[k] = $this.val(); 127 | 128 | $this.bind( 129 | 'change' 130 | , function () { 131 | var val = {}; 132 | val[k] = $this.val(); 133 | s.val(val); 134 | } 135 | ); 136 | }); 137 | this.$.find('legend').remove(); 138 | 139 | } else { 140 | // input = integer 141 | this.i = this.$; 142 | this.v = this.$.val(); 143 | (this.v == '') && (this.v = this.o.min); 144 | 145 | this.$.bind( 146 | 'change' 147 | , function () { 148 | s.val(s.$.val()); 149 | } 150 | ); 151 | } 152 | 153 | (!this.o.displayInput) && this.$.hide(); 154 | 155 | this.$c = $(''); 158 | this.c = this.$c[0].getContext("2d"); 159 | 160 | this.$ 161 | .wrap($('
    ')) 164 | .before(this.$c); 165 | 166 | if (this.v instanceof Object) { 167 | this.cv = {}; 168 | this.copy(this.v, this.cv); 169 | } else { 170 | this.cv = this.v; 171 | } 172 | 173 | this.$ 174 | .bind("configure", cf) 175 | .parent() 176 | .bind("configure", cf); 177 | 178 | this._listen() 179 | ._configure() 180 | ._xy() 181 | .init(); 182 | 183 | this.isInit = true; 184 | 185 | this._draw(); 186 | 187 | return this; 188 | }; 189 | 190 | this._draw = function () { 191 | 192 | // canvas pre-rendering 193 | var d = true, 194 | c = document.createElement('canvas'); 195 | 196 | c.width = s.o.width; 197 | c.height = s.o.height; 198 | s.g = c.getContext('2d'); 199 | 200 | s.clear(); 201 | 202 | s.dH 203 | && (d = s.dH()); 204 | 205 | (d !== false) && s.draw(); 206 | 207 | s.c.drawImage(c, 0, 0); 208 | c = null; 209 | }; 210 | 211 | this._touch = function (e) { 212 | 213 | var touchMove = function (e) { 214 | 215 | var v = s.xy2val( 216 | e.originalEvent.touches[s.t].pageX, 217 | e.originalEvent.touches[s.t].pageY, 218 | 'touch' 219 | ); 220 | 221 | if (v == s.cv) return; 222 | 223 | if ( 224 | s.cH 225 | && (s.cH(v) === false) 226 | ) return; 227 | 228 | 229 | s.change(v); 230 | s._draw(); 231 | }; 232 | 233 | // get touches index 234 | this.t = k.c.t(e); 235 | 236 | if ( 237 | this.sH 238 | && (this.sH() === false) 239 | ) return; 240 | 241 | // First touch 242 | touchMove(e); 243 | 244 | // Touch events listeners 245 | k.c.d 246 | .bind("touchmove.k", touchMove) 247 | .bind( 248 | "touchend.k" 249 | , function () { 250 | k.c.d.unbind('touchmove.k touchend.k'); 251 | 252 | if ( 253 | s.rH 254 | && (s.rH(s.cv) === false) 255 | ) return; 256 | 257 | s.val(s.cv); 258 | } 259 | ); 260 | 261 | return this; 262 | }; 263 | 264 | this._mouse = function (e) { 265 | 266 | var mouseMove = function (e) { 267 | var v = s.xy2val(e.pageX, e.pageY, 'mouse'); 268 | if (v == s.cv) return; 269 | 270 | if ( 271 | s.cH 272 | && (s.cH(v) === false) 273 | ) return; 274 | 275 | s.change(v); 276 | s._draw(); 277 | }; 278 | 279 | if ( 280 | this.sH 281 | && (this.sH() === false) 282 | ) return; 283 | 284 | // First click 285 | s.mx = e.pageX; 286 | s.my = e.pageY; 287 | mouseMove(e); 288 | 289 | // Mouse events listeners 290 | k.c.d 291 | .bind("mousemove.k", mouseMove) 292 | .bind( 293 | // Escape key cancel current change 294 | "keyup.k" 295 | , function (e) { 296 | if (e.keyCode === 27) { 297 | k.c.d.unbind("mouseup.k mousemove.k keyup.k"); 298 | 299 | if ( 300 | s.eH 301 | && (s.eH() === false) 302 | ) return; 303 | 304 | s.cancel(); 305 | } 306 | } 307 | ) 308 | .bind( 309 | "mouseup.k" 310 | , function (e) { 311 | k.c.d.unbind('mousemove.k mouseup.k keyup.k'); 312 | 313 | if ( 314 | s.rH 315 | && (s.rH(s.cv) === false) 316 | ) return; 317 | 318 | s.val(s.cv); 319 | } 320 | ); 321 | 322 | return this; 323 | }; 324 | 325 | this._xy = function () { 326 | var o = this.$c.offset(); 327 | this.x = o.left; 328 | this.y = o.top; 329 | return this; 330 | }; 331 | 332 | this._listen = function () { 333 | 334 | if (!this.o.readOnly) { 335 | this.$c 336 | .bind( 337 | "mousedown" 338 | , function (e) { 339 | e.preventDefault(); 340 | s._xy()._mouse(e); 341 | } 342 | ) 343 | .bind( 344 | "touchstart" 345 | , function (e) { 346 | e.preventDefault(); 347 | s._xy()._touch(e); 348 | } 349 | ); 350 | this.listen(); 351 | } else { 352 | this.$.attr('readonly', 'readonly'); 353 | } 354 | 355 | return this; 356 | }; 357 | 358 | this._configure = function () { 359 | 360 | // Hooks 361 | if (this.o.start) this.sH = this.o.start; 362 | if (this.o.draw) this.dH = this.o.draw; 363 | if (this.o.change) this.cH = this.o.change; 364 | if (this.o.cancel) this.eH = this.o.cancel; 365 | if (this.o.release) this.rH = this.o.release; 366 | 367 | if (this.o.displayPrevious) { 368 | this.pColor = this.h2rgba(this.o.fgColor, "0.4"); 369 | this.fgColor = this.h2rgba(this.o.fgColor, "0.6"); 370 | } else { 371 | this.fgColor = this.o.fgColor; 372 | } 373 | 374 | return this; 375 | }; 376 | 377 | this._clear = function () { 378 | this.$c[0].width = this.$c[0].width; 379 | }; 380 | 381 | // Abstract methods 382 | this.listen = function () {}; // on start, one time 383 | this.extend = function () {}; // each time configure triggered 384 | this.init = function () {}; // each time configure triggered 385 | this.change = function (v) {}; // on change 386 | this.val = function (v) {}; // on release 387 | this.xy2val = function (x, y, method) {}; // 388 | this.draw = function () {}; // on change / on release 389 | this.clear = function () { this._clear(); }; 390 | 391 | // Utils 392 | this.h2rgba = function (h, a) { 393 | var rgb; 394 | h = h.substring(1,7) 395 | rgb = [parseInt(h.substring(0,2),16) 396 | ,parseInt(h.substring(2,4),16) 397 | ,parseInt(h.substring(4,6),16)]; 398 | return "rgba(" + rgb[0] + "," + rgb[1] + "," + rgb[2] + "," + a + ")"; 399 | }; 400 | 401 | this.copy = function (f, t) { 402 | for (var i in f) { t[i] = f[i]; } 403 | }; 404 | }; 405 | 406 | 407 | /** 408 | * k.Dial 409 | */ 410 | k.Dial = function () { 411 | k.o.call(this); 412 | 413 | this.startAngle = null; 414 | this.xy = null; 415 | this.radius = null; 416 | this.lineWidth = null; 417 | this.cursorExt = null; 418 | this.w2 = null; 419 | this.PI2 = 2*Math.PI; 420 | 421 | this.extend = function () { 422 | this.o = $.extend( 423 | { 424 | bgColor : this.$.data('bgcolor') || '#EEEEEE', 425 | angleOffset : this.$.data('angleoffset') || 0, 426 | angleArc : this.$.data('anglearc') || 360, 427 | flatMouse : this.$.data('flatMouse'), 428 | inline : true 429 | }, this.o 430 | ); 431 | }; 432 | 433 | this.val = function (v) { 434 | if (null != v) { 435 | this.cv = this.o.stopper ? max(min(v, this.o.max), this.o.min) : v; 436 | this.v = this.cv; 437 | this.$.val(this.v); 438 | this._draw(); 439 | } else { 440 | return this.v; 441 | } 442 | }; 443 | 444 | this.xy2val = function (x, y, m) { 445 | var a, ret; 446 | 447 | if ((m === 'mouse') && (this.o.flatMouse)) { 448 | a = ((this.my - y) + (x - this.mx)) / (this.o.height); 449 | ret = ~~ (a * (this.o.max - this.o.min) + parseFloat(this.v)); 450 | ret = max(min(ret, this.o.max), this.o.min); 451 | } else { 452 | a = Math.atan2( 453 | x - (this.x + this.w2) 454 | , - (y - this.y - this.w2) 455 | ) - this.angleOffset; 456 | 457 | if(this.angleArc != this.PI2 && (a < 0) && (a > -0.5)) { 458 | // if isset angleArc option, set to min if .5 under min 459 | a = 0; 460 | } else if (a < 0) { 461 | a += this.PI2; 462 | } 463 | 464 | ret = ~~ (0.5 + (a * (this.o.max - this.o.min) / this.angleArc)) 465 | + this.o.min; 466 | } 467 | 468 | this.o.stopper 469 | && (ret = max(min(ret, this.o.max), this.o.min)); 470 | 471 | return ret; 472 | }; 473 | 474 | this.listen = function () { 475 | // bind MouseWheel 476 | var s = this, 477 | mw = function (e) { 478 | if(s.o.noScroll) 479 | return; 480 | 481 | e.preventDefault(); 482 | 483 | var ori = e.originalEvent 484 | ,deltaX = ori.detail || ori.wheelDeltaX 485 | ,deltaY = ori.detail || ori.wheelDeltaY 486 | ,v = parseInt(s.$.val()) + (deltaX>0 || deltaY>0 ? 1 : deltaX<0 || deltaY<0 ? -1 : 0); 487 | 488 | if ( 489 | s.cH 490 | && (s.cH(v) === false) 491 | ) return; 492 | 493 | s.val(v); 494 | } 495 | , kval, to, m = 1, kv = {37:-1, 38:1, 39:1, 40:-1}; 496 | 497 | this.$ 498 | .bind( 499 | "keydown" 500 | ,function (e) { 501 | 502 | var kc = e.keyCode; 503 | 504 | // numpad support 505 | if(kc >= 96 && kc <= 105) { 506 | kc = e.keyCode = kc - 48; 507 | } 508 | 509 | kval = parseInt(String.fromCharCode(kc)); 510 | 511 | if (isNaN(kval)) { 512 | 513 | (kc !== 13) // enter 514 | && (kc !== 8) // bs 515 | && (kc !== 9) // tab 516 | && (kc !== 189) // - 517 | && e.preventDefault(); 518 | 519 | // arrows 520 | if ($.inArray(kc,[37,38,39,40]) > -1) { 521 | e.preventDefault(); 522 | 523 | var v = parseInt(s.$.val()) + kv[kc] * m; 524 | 525 | s.o.stopper 526 | && (v = max(min(v, s.o.max), s.o.min)); 527 | 528 | s.change(v); 529 | s._draw(); 530 | 531 | // long time keydown speed-up 532 | to = window.setTimeout( 533 | function () { m*=2; } 534 | ,30 535 | ); 536 | } 537 | } 538 | } 539 | ) 540 | .bind( 541 | "keyup" 542 | ,function (e) { 543 | if (isNaN(kval)) { 544 | if (to) { 545 | window.clearTimeout(to); 546 | to = null; 547 | m = 1; 548 | s.val(s.$.val()); 549 | } 550 | } else { 551 | // kval postcond 552 | (s.$.val() > s.o.max && s.$.val(s.o.max)) 553 | || (s.$.val() < s.o.min && s.$.val(s.o.min)); 554 | } 555 | 556 | } 557 | ); 558 | 559 | this.$c.bind("mousewheel DOMMouseScroll", mw); 560 | this.$.bind("mousewheel DOMMouseScroll", mw) 561 | }; 562 | 563 | this.init = function () { 564 | 565 | if ( 566 | this.v < this.o.min 567 | || this.v > this.o.max 568 | ) this.v = this.o.min; 569 | 570 | this.$.val(this.v); 571 | this.w2 = this.o.width / 2; 572 | this.cursorExt = this.o.cursor / 100; 573 | this.xy = this.w2; 574 | this.lineWidth = this.xy * this.o.thickness; 575 | this.radius = this.xy - this.lineWidth / 2; 576 | 577 | this.o.angleOffset 578 | && (this.o.angleOffset = isNaN(this.o.angleOffset) ? 0 : this.o.angleOffset); 579 | 580 | this.o.angleArc 581 | && (this.o.angleArc = isNaN(this.o.angleArc) ? this.PI2 : this.o.angleArc); 582 | 583 | // deg to rad 584 | this.angleOffset = this.o.angleOffset * Math.PI / 180; 585 | this.angleArc = this.o.angleArc * Math.PI / 180; 586 | 587 | // compute start and end angles 588 | this.startAngle = 1.5 * Math.PI + this.angleOffset; 589 | this.endAngle = 1.5 * Math.PI + this.angleOffset + this.angleArc; 590 | 591 | var s = max( 592 | String(Math.abs(this.o.max)).length 593 | , String(Math.abs(this.o.min)).length 594 | , 2 595 | ) + 2; 596 | 597 | this.o.displayInput 598 | && this.i.css({ 599 | 'width' : ((this.o.width / 2 + 4) >> 0) + 'px' 600 | ,'height' : ((this.o.width / 3) >> 0) + 'px' 601 | ,'position' : 'absolute' 602 | ,'vertical-align' : 'middle' 603 | ,'margin-top' : ((this.o.width / 3) >> 0) + 'px' 604 | ,'margin-left' : '-' + ((this.o.width * 3 / 4 + 2) >> 0) + 'px' 605 | ,'border' : 0 606 | ,'background' : 'none' 607 | ,'font' : 'bold ' + ((this.o.width / s) >> 0) + 'px Arial' 608 | ,'text-align' : 'center' 609 | ,'color' : this.o.fgColor 610 | ,'padding' : '0px' 611 | ,'-webkit-appearance': 'none' 612 | }) 613 | || this.i.css({ 614 | 'width' : '0px' 615 | ,'visibility' : 'hidden' 616 | }); 617 | }; 618 | 619 | this.change = function (v) { 620 | this.cv = v; 621 | this.$.val(v); 622 | }; 623 | 624 | this.angle = function (v) { 625 | return (v - this.o.min) * this.angleArc / (this.o.max - this.o.min); 626 | }; 627 | 628 | this.draw = function () { 629 | 630 | var c = this.g, // context 631 | a = this.angle(this.cv) // Angle 632 | , sat = this.startAngle // Start angle 633 | , eat = sat + a // End angle 634 | , sa, ea // Previous angles 635 | , r = 1; 636 | 637 | c.lineWidth = this.lineWidth; 638 | 639 | /*for(o in this.o.context) { 640 | c[o] = this.o.context[o]; 641 | }*/ 642 | 643 | this.o.cursor 644 | && (sat = eat - this.cursorExt) 645 | && (eat = eat + this.cursorExt); 646 | 647 | c.beginPath(); 648 | c.strokeStyle = this.o.bgColor; 649 | c.arc(this.xy, this.xy, this.radius, this.endAngle, this.startAngle, true); 650 | c.stroke(); 651 | 652 | if (this.o.displayPrevious) { 653 | ea = this.startAngle + this.angle(this.v); 654 | sa = this.startAngle; 655 | this.o.cursor 656 | && (sa = ea - this.cursorExt) 657 | && (ea = ea + this.cursorExt); 658 | 659 | c.beginPath(); 660 | c.strokeStyle = this.pColor; 661 | c.arc(this.xy, this.xy, this.radius, sa, ea, false); 662 | c.stroke(); 663 | r = (this.cv == this.v); 664 | } 665 | 666 | c.beginPath(); 667 | c.strokeStyle = r ? this.o.fgColor : this.fgColor ; 668 | c.arc(this.xy, this.xy, this.radius, sat, eat, false); 669 | c.stroke(); 670 | }; 671 | 672 | this.cancel = function () { 673 | this.val(this.v); 674 | }; 675 | }; 676 | 677 | $.fn.dial = $.fn.knob = function (o) { 678 | return this.each( 679 | function () { 680 | var d = new k.Dial(); 681 | d.o = o; 682 | d.$ = $(this); 683 | d.run(); 684 | } 685 | ).parent(); 686 | }; 687 | 688 | 689 | /** 690 | * k.XY 691 | */ 692 | k.XY = function () { 693 | k.o.call(this); 694 | 695 | this.m = []; 696 | this.p = []; 697 | this.f = []; // factor 698 | this.s = {0:1,1:-1}; 699 | this.cur2 = 0; 700 | this.cursor = 0; 701 | this.v = {}; 702 | this.div = null; 703 | 704 | this.extend = function () { 705 | this.o = $.extend( 706 | { 707 | min : this.$.data('min') || 0, 708 | max : this.$.data('max') || 100, 709 | width : this.$.data('width') || 200, 710 | height : this.$.data('height') || 200 711 | }, this.o 712 | ); 713 | }; 714 | 715 | this._coord = function() { 716 | for(var i in this.v) { 717 | this.m[i] = ~~ (0.5 + ((this.s[i] * this.v[i] - this.o.min) / this.f[i]) + this.cur2) ; 718 | this.p[i] = this.m[i]; 719 | } 720 | }; 721 | 722 | this.init = function () { 723 | this.cursor = this.o.cursor || 30; 724 | this.cur2 = this.cursor / 2; 725 | 726 | this.f[0] = (this.o.max - this.o.min) / (this.o.width - this.cursor); 727 | this.f[1] = (this.o.max - this.o.min) / (this.o.height - this.cursor); 728 | 729 | if (!this.isInit) { 730 | this._coord(); 731 | } 732 | 733 | if(this.o.displayInput) { 734 | var s = this; 735 | this.$.css({ 736 | 'margin-top' : '-30px' 737 | , 'border' : 0 738 | , 'font' : '11px Arial' 739 | }); 740 | 741 | this.i.each( 742 | function (){ 743 | $(this).css({ 744 | 'width' : (s.o.width / 4) + 'px' 745 | ,'border' : 0 746 | ,'background' : 'none' 747 | ,'color' : s.o.fgColor 748 | ,'padding' : '0px' 749 | ,'-webkit-appearance': 'none' 750 | }); 751 | }); 752 | } else { 753 | this.$.css({ 754 | 'width' : '0px' 755 | ,'visibility' : 'hidden' 756 | }); 757 | } 758 | }; 759 | 760 | this.xy2val = function (x, y) { 761 | this.m[0] = max(this.cur2, min(x - this.x, this.o.width - this.cur2)); 762 | this.m[1] = max(this.cur2, min(y - this.y, this.o.height - this.cur2)); 763 | 764 | return { 765 | 0 : ~~ (this.o.min + (this.m[0] - this.cur2) * this.f[0]), 766 | 1 : ~~ (this.o.min + (this.o.height - this.m[1] - this.cur2) * this.f[1]) 767 | }; 768 | }; 769 | 770 | this.change = function (v) { 771 | this.cv = v; 772 | this.i[0].val(this.cv[0]); 773 | this.i[1].val(this.cv[1]); 774 | }; 775 | 776 | this.val = function (v) { 777 | if (null !== v) { 778 | this.cv = v; 779 | this.copy(this.cv, this.v); 780 | this._coord(); 781 | this._draw(); 782 | } else { 783 | return this.v; 784 | } 785 | }; 786 | 787 | this.cancel = function () { 788 | this.copy(this.v, this.cv); 789 | this.i[0].val(this.cv[0]); 790 | this.i[1].val(this.cv[1]); 791 | this.m[0] = this.p[0]; 792 | this.m[1] = this.p[1]; 793 | this._draw(); 794 | }; 795 | 796 | this.draw = function () { 797 | 798 | var c = this.g 799 | , r = 1; 800 | 801 | if (this.o.displayPrevious) { 802 | c.beginPath(); 803 | c.lineWidth = this.cursor; 804 | c.strokeStyle = this.pColor; 805 | c.moveTo(this.p[0], this.p[1] + this.cur2); 806 | c.lineTo(this.p[0], this.p[1] - this.cur2); 807 | c.stroke(); 808 | r = (this.cv[0] == this.v[0] && this.cv[1] == this.v[1]); 809 | } 810 | 811 | c.beginPath(); 812 | c.lineWidth = this.cursor; 813 | c.strokeStyle = r ? this.o.fgColor : this.fgColor; 814 | c.moveTo(this.m[0], this.m[1] + this.cur2); 815 | c.lineTo(this.m[0], this.m[1] - this.cur2); 816 | c.stroke(); 817 | }; 818 | }; 819 | 820 | $.fn.xy = function (o) { 821 | return this.each( 822 | function () { 823 | var x = new k.XY(); 824 | x.$ = $(this); 825 | x.o = o; 826 | x.run(); 827 | } 828 | ).parent(); 829 | }; 830 | 831 | 832 | /** 833 | * k.Bars 834 | */ 835 | k.Bars = function () { 836 | k.o.call(this); 837 | 838 | this.bar = null; 839 | this.mid = null; 840 | this.col = null; 841 | this.colWidth = null; 842 | this.fontSize = null; 843 | this.displayMidLine = false; 844 | 845 | this.extend = function () { 846 | 847 | this.o = $.extend( 848 | { 849 | min : this.$.data('min') || 0, 850 | max : this.$.data('max') || 100, 851 | width : this.$.data('width') || 600, 852 | displayInput : this.$.data('displayinput') == null || this.$.data('displayinput'), 853 | height : (this.$.data('height') || 200), 854 | fgColor : this.$.data('fgcolor') || '#87CEEB', 855 | bgColor : this.$.data('bgcolor') || '#CCCCCC', 856 | cols : this.$.data('cols') || 8, 857 | spacing : this.$.data('spacing') || 1 858 | } 859 | ,this.o 860 | ); 861 | 862 | // initialize colWith 863 | (this.o.cols == 1) && (this.o.spacing = 0); 864 | this.colWidth = (((this.o.width - this.o.spacing * this.o.cols) / this.o.cols) >> 0); 865 | 866 | if(this.o.displayInput) { 867 | this.fontSize = max(~~ (this.colWidth/3), 10); 868 | this.o.height -= this.fontSize; 869 | } 870 | }; 871 | 872 | this.xy2val = function (x, y) { 873 | var cw = this.colWidth + this.o.spacing 874 | ,val = ( 875 | max(this.o.min 876 | , min(this.o.max, - ( - this.mid + (y - this.y)) / this.bar)) 877 | ) >> 0 878 | ,ret = {}; 879 | 880 | this.col = max(0, min(this.o.cols-1, ((x - this.x) / cw) >> 0)); 881 | ret[this.col] = val; 882 | return ret; 883 | }; 884 | 885 | this.init = function () { 886 | 887 | this.bar = this.o.height / (this.o.max - this.o.min); 888 | this.mid = (this.o.max * this.bar) >> 0; 889 | this.displayMidLine = this.o.cursor && this.o.min < 0; 890 | 891 | if(this.o.displayInput) { 892 | var s = this; 893 | this.$.css({ 894 | 'margin' : '0px' 895 | ,'border' : 0 896 | ,'padding' : '0px' 897 | }); 898 | 899 | this.i.each( 900 | function (){ 901 | $(this).css({ 902 | 'width' : (s.colWidth - 4 + s.o.spacing) + 'px' 903 | ,'border' : 0 904 | ,'background' : 'none' 905 | ,'font' : s.fontSize+'px Arial' //this.fontSize 906 | ,'color' : s.o.fgColor 907 | ,'margin' : '0px' 908 | ,'padding' : '0px' 909 | ,'-webkit-appearance': 'none' 910 | ,'text-align' : 'center' 911 | }); 912 | }); 913 | } else { 914 | this.$.css({ 915 | 'width' : '0px' 916 | ,'visibility' : 'hidden' 917 | }); 918 | } 919 | }; 920 | 921 | this.change = function (v) { 922 | for (var i in v) { 923 | this.cv[i] = v[i]; 924 | this.i[i].val(this.cv[i]); 925 | } 926 | }; 927 | 928 | this.val = function (v) { 929 | if (null !== v) { 930 | this.copy(v, this.cv); 931 | this.copy(this.cv, this.v); 932 | 933 | // reset cur col 934 | this.col = null; 935 | this._draw(); 936 | } else { 937 | return this.v; 938 | } 939 | }; 940 | 941 | this.cancel = function () { 942 | this.copy(this.v, this.cv); 943 | 944 | // reset cur col 945 | this.col = null; 946 | this._draw(); 947 | }; 948 | 949 | this._bar = function (col) { 950 | 951 | var x = (col * (this.colWidth + this.o.spacing) + this.colWidth / 2); 952 | 953 | if (this.displayMidLine) { 954 | this.g.beginPath(); 955 | this.g.lineWidth = this.colWidth; 956 | this.g.strokeStyle = this.o.fgColor; 957 | this.g.moveTo(x, this.mid); 958 | this.g.lineTo(x, this.mid + 1); 959 | this.g.stroke(); 960 | } 961 | 962 | if (this.o.displayPrevious) { 963 | this.g.beginPath(); 964 | this.g.lineWidth = this.colWidth; 965 | this.g.strokeStyle = (this.cv[col] == this.v[col]) ? this.o.fgColor : this.pColor; 966 | if (this.o.cursor) { 967 | this.g.lineTo(x, this.mid - ((this.v[col] * this.bar) >> 0) + this.o.cursor / 2); 968 | } else { 969 | this.g.moveTo(x, this.mid); 970 | } 971 | this.g.lineTo(x, this.mid - ((this.v[col] * this.bar) >> 0) - this.o.cursor / 2); 972 | this.g.stroke(); 973 | } 974 | 975 | this.g.beginPath(); 976 | this.g.lineWidth = this.colWidth; 977 | this.g.strokeStyle = this.fgColor; 978 | if (this.o.cursor) { 979 | this.g.lineTo(x, this.mid - ((this.cv[col] * this.bar) >> 0) + this.o.cursor / 2); 980 | } else { 981 | this.g.moveTo(x, this.mid); 982 | } 983 | this.g.lineTo(x, this.mid - ((this.cv[col] * this.bar) >> 0) - this.o.cursor / 2); 984 | this.g.stroke(); 985 | }; 986 | 987 | this.clear = function () { 988 | if (this.col) { 989 | // current col 990 | this.c.clearRect( 991 | this.col * (this.colWidth + this.o.spacing) 992 | , 0 993 | , this.colWidth + this.o.spacing 994 | , this.o.height 995 | ); 996 | } else { 997 | this._clear(); 998 | } 999 | } 1000 | 1001 | this.draw = function () { 1002 | if (this.col) { 1003 | this._bar(this.col); 1004 | } else { 1005 | for (var i = 0; i < this.o.cols; i++) { 1006 | this._bar(i); 1007 | } 1008 | } 1009 | }; 1010 | }; 1011 | 1012 | $.fn.bars = function (o) { 1013 | return this.each( 1014 | function () { 1015 | var b = new k.Bars(); 1016 | b.$ = $(this); 1017 | b.o = o; 1018 | b.run(); 1019 | } 1020 | ).parent(); 1021 | }; 1022 | })(jQuery); --------------------------------------------------------------------------------