1(function($) { 2 window.drinkCalculator = { 3 calculatedResults: { 4 wine: '750ml bottle{0} of Wine', 5 spirit: '750ml bottle{0} of Spirit', 6 'beer': '6-pack{0} of Beer', 7 'champagne': '750ml bottle{0} of Champagne/Sparkling Wine', 8 'per_guest': 'drinks per guest', 9 'total': 'total drinks' 10 }, 11 init: function() { 12 var $form = $('form#calculator'), 13 $wineSlider = $form.find('#wineSlider'), 14 $beerSlider = $form.find('#beerSlider'), 15 $spiritSlider = $form.find('#spiritSlider'), 16 $wine = $form.find('input#uxWine'), 17 $beer = $form.find('input#uxBeer'), 18 $spirit = $form.find('input#uxSpirits'), 19 $winePercent = $form.find('input#wine-percent'), 20 $beerPercent = $form.find('input#beer-percent'), 21 $spiritPercent = $form.find('input#spirit-percent'), 22 $wineLastValue = $form.find('input#wineLastValue'), 23 $beerLastValue = $form.find('input#beerLastValue'), 24 $spiritLastValue = $form.find('input#spiritsLastValue'); 25 26 $wineSlider.slider({ 27 value: $winePercent.val(), 28 min: 0, 29 max: 100, 30 step: 1, 31 stop: function (event, ui) { 32 // if ((parseInt($wine.val()) + parseInt($beer.val()) + parseInt($spirit.val())) < 100) 33 // { 34 // $wine.val(parseInt($wine.val()) + 1); 35 // } 36 }, 37 slide: function(event, ui) { 38 var difference = ui.value - $winePercent.val(), 39 remainder = adjustSlider("beer",difference,2,0); 40 41 remainder = adjustSlider("spirit",difference-(remainder*2),2,0,true); 42 $winePercent.val(ui.value); 43 $wineLastValue.val(Math.ceil(ui.value)); 44 $wine.val(Math.ceil(ui.value)); 45 46 if (remainder != 0) 47 { 48 remainder = adjustSlider("wine",-remainder,1,1,true); 49 return false; 50 } 51 } 52 }); 53 54 $beerSlider.slider({ 55 value:$beerPercent.val(), 56 min: 0, 57 max: 100, 58 step: 1, 59 stop: function (event, ui) { 60 // if (parseInt($wine.val()) + parseInt($beer.val()) + parseInt($spirit.val()) < 100) 61 // { 62 // $beer.val(parseInt($beer.val()) + 1); 63 // } 64 }, 65 slide: function( event, ui ) { 66 var difference = ui.value - $beerPercent.val(); 67 var remainder = adjustSlider("wine",difference,2,0); 68 69 remainder = adjustSlider("spirit",difference-(remainder*2),2,0,true); 70 $beerPercent.val(ui.value); 71 $beerLastValue.val(Math.ceil(ui.value)); 72 $beer.val(Math.ceil(ui.value)); 73 74 if (remainder != 0) 75 { 76 remainder = adjustSlider("beer",-remainder,1,1,true); 77 return false; 78 } 79 }}); 80 81 $spiritSlider.slider({ 82 value:$spiritPercent.val(), 83 min: 0, 84 max: 100, 85 step: 1, 86 stop: function (event, ui) { 87 // if (parseInt($wine.val()) + parseInt($beer.val()) + parseInt($spirit.val()) < 100) 88 // { 89 // $spirit.val(parseInt($spirit.val()) + 1); 90 // } 91 }, 92 slide: function( event, ui ) { 93 var difference = ui.value - $spiritPercent.val(); 94 var remainder = adjustSlider("wine",difference,2,0); 95 96 remainder = adjustSlider("beer",difference-(remainder*2),2,0,true); 97 $spiritPercent.val(ui.value); 98 $spiritLastValue.val(Math.ceil(ui.value)); 99 $spirit.val(Math.ceil(ui.value)); 100 101 if (remainder != 0) 102 { 103 remainder = adjustSlider("spirit",-remainder,1,1,true); 104 return false; 105 } 106 }}); 107 108 $form.on('submit', function(event) { 109 event.preventDefault(); 110 $form.find('.error').hide(); 111 112 submitCalculation(); 113 }); 114 115 function submitCalculation(){ 116 var numberOfGuests = $form.find('#guests').val(), 117 eventLength = parseInt($form.find('#length').val()), 118 errors = []; 119 120 if(!eventLength || eventLength > 4 || eventLength < 1) errors.push({key: 'length', value: 'Must be between 1 and 4 hours'}); 121 122 if(!parseInt(numberOfGuests) || !this.drinkCalculator.isWholeNumber(numberOfGuests)) errors.push({key: 'guests', value: 'Must be between 1 and 2000 people'}); 123 else numberOfGuests = parseInt(numberOfGuests); 124 125 if(errors.length) {
126 errors.forEach(function(item){ 127 var $errorInput = $form.find('#' + item.key).next(); 128 $errorInput.html(item.value).show(); 129 }); 130 131 if(!window.isSmall) $("html, body").animate({ scrollTop: 0 }, "slow"); 132 return; 133 } 134 else $form.find('.error').hide(); 135 136 var $results = $('body').find('.calculations-container').addClass('has-results'), 137 $resultCalc = $results.find('#calulations-placeholder'), 138 $resultRecommend = $results.find('#recommendations-placeholder'), 139 resultCalcHTML = '<ul>', 140 drinksPerHour = eventLength + 1, 141 drinksTotal = numberOfGuests * drinksPerHour, 142 winePercent = parseInt($wine.val()) / 100, 143 beerPercent = parseInt($beer.val()) / 100, 144 spiritPercent = parseInt($spirit.val()) / 100, 145 wineCount = Math.ceil(numberOfGuests * drinksPerHour * winePercent / 5), 146 beerCount = Math.ceil((numberOfGuests * drinksPerHour * beerPercent)/ 6), 147 spiritCount = Math.ceil(numberOfGuests * drinksPerHour * spiritPercent / 16), 148 champagneCount = 0, 149 champagneVal = $form.find('input[name=champagne]:checked').val(); 150 151 if(champagneVal == 'true') { 152 champagneCount = Math.ceil(numberOfGuests / 5); 153 drinksTotal = drinksTotal + numberOfGuests; 154 drinksPerHour = drinksPerHour + 1; 155 } 156 157 resultCalcHTML += '<li>' + drinksTotal + ' ' + this.drinkCalculator.calculatedResults.total + '</li>'; 158 resultCalcHTML += '<li>' + drinksPerHour + ' ' + this.drinkCalculator.calculatedResults.per_guest + '</li>'; 159 resultCalcHTML += '</ul>'; 160 $resultCalc.html(resultCalcHTML); 161 162 resultCalcHTML = '<ul>'; 163 if(wineCount > 0) resultCalcHTML += '<li>' + wineCount + ' x ' + this.drinkCalculator.calculatedResults.wine.replace('{0}', wineCount > 1 ? 's' : '') + '</li>'; 164 if(spiritCount > 0) resultCalcHTML += '<li>' + spiritCount + ' x ' + this.drinkCalculator.calculatedResults.spirit.replace('{0}', spiritCount > 1 ? 's' : '') + '</li>'; 165 if(beerCount > 0) resultCalcHTML += '<li>' + beerCount + ' x ' + this.drinkCalculator.calculatedResults.beer.replace('{0}', beerCount > 1 ? 's' : '') + '</li>'; 166 if(champagneCount > 0) resultCalcHTML += '<li>' + champagneCount + ' x ' + this.drinkCalculator.calculatedResults.champagne.replace('{0}', champagneCount > 1 ? 's' : '') + '</li>'; 167 resultCalcHTML += '</ul>'; 168 169 $resultRecommend.html(resultCalcHTML); 170 171 if(!window.isSmall) $("html, body").animate({ scrollTop: 0 }, "slow"); 172 else window.location.href = "#results"; 173 } 174 175 function enableCalcKeyUp(){ 176 $beer.keyup(function(event) { 177 if (($beer.val() > -1) && ($beer.val()< 101)) 178 { 179 var difference = ($beer.val() - 100)/2; 180 $beerLastValue.val($beer.val()) 181 $beerPercent.val($beer.val()) 182 $beerSlider.slider( "value", $beer.val() ); 183 184 var remainder = adjustSlider("wine",(parseInt(difference) + parseInt($wineLastValue.val())),1,0); 185 remainder = adjustSlider("spirit",(parseInt(difference) + parseInt($spiritLastValue.val()) - (remainder)),1,0); 186 187 if (remainder != 0) 188 { 189 remainder = adjustSlider("wine",-remainder,1,0); 190 if (remainder != 0) 191 { 192 remainder = adjustSlider("beer",-remainder,1,1); 193 } 194 } 195 } 196 else 197 { 198 $beer.val($beerLastValue.val()); 199 } 200 }); 201 202 $wine.keyup(function(event) { 203 if (($wine.val() > -1) && ($wine.val()< 101)) 204 { 205 var difference = ($wine.val() - 100)/2; 206 207 $wineLastValue.val($wine.val()) 208 $winePercent.val($wine.val()) 209 $wineSlider.slider( "value", $wine.val()); 210 211 var remainder = adjustSlider("beer",(parseInt(difference) + parseInt($beerLastValue.val())),1,0); 212 remainder = adjustSlider("spirit",(parseInt(difference) + parseInt($spiritLastValue.val()) - (remainder)),1,0); 213 214 if (remainder != 0) 215 { 216 remainder = adjustSlider("beer",-remainder,1,0); 217 if (remainder != 0) 218 { 219 remainder = adjustSlider("wine",-remainder,1,1
219); 220 } 221 } 222 } 223 else 224 { 225 $wine.val($wineLastValue.val()); 226 } 227 228 }); 229 230 $spirit.keyup(function(event) { 231 if (($spirit.val() > -1) && ($spirit.val()< 101)) 232 { 233 var difference = ($spirit.val() - 100)/2; 234 235 $spiritLastValue.val($spirit.val()) 236 $spiritPercent.val($spirit.val()) 237 $spiritSlider.slider( "value", $spirit.val() ); 238 239 var remainder = adjustSlider("wine",(parseInt(difference) + parseInt($wineLastValue.val())),1,0); 240 remainder = adjustSlider("beer",(parseInt(difference) + parseInt($beerLastValue.val()) - (remainder)),1,0); 241 242 if (remainder != 0) 243 { 244 remainder = adjustSlider("wine",-remainder,1,0); 245 if (remainder != 0) 246 { 247 remainder = adjustSlider("spirit",-remainder,1,1); 248 } 249 } 250 } 251 else 252 { 253 $spirit.val($spiritLastValue.val()); 254 } 255 }); 256 } 257 258 function adjustSlider(sliderName, amount, divisor, force,isActive){ 259 var resultValue, 260 fixedamount, 261 remainder = 0, 262 $lockedElement, 263 $selectedSlider, 264 $selectedPercent, 265 $selectedLastValue, 266 $selectedVal; 267 268 fixedamount = (amount / divisor); 269 270 switch(sliderName) { 271 case 'beer': 272 $lockedElement = $('#beer-lock:checked'); 273 $selectedSlider = $beerSlider; 274 $selectedPercent = $beerPercent; 275 $selectedLastValue = $beerLastValue; 276 $selectedVal = $beer; 277 break; 278 case 'spirit': 279 $lockedElement = $('#spirit-lock:checked'); 280 $selectedSlider = $spiritSlider; 281 $selectedPercent = $spiritPercent; 282 $selectedLastValue = $spiritLastValue; 283 $selectedVal = $spirit; 284 break; 285 case 'wine': 286 $lockedElement = $('#wine-lock:checked:checked'); 287 $selectedSlider = $wineSlider; 288 $selectedPercent = $winePercent; 289 $selectedLastValue = $wineLastValue; 290 $selectedVal = $wine; 291 break; 292 default: 293 break; 294 } 295 296 if (($lockedElement.val() == undefined) || (force == 1)) 297 { 298 if ($selectedPercent.val() - (fixedamount) < 0) 299 { 300 remainder = $selectedPercent.val() - (fixedamount) 301 resultValue = 0 302 } 303 else 304 { 305 resultValue = $selectedPercent.val() - (fixedamount); 306 } 307 308 $selectedSlider.slider("value",resultValue); 309 $selectedPercent.val(resultValue); 310 311 if(isActive) { 312 $selectedLastValue.val(Math.ceil(resultValue)); 313 $selectedVal.val(Math.ceil(resultValue)); 314 } 315 else { 316 $selectedLastValue.val(Math.floor(resultValue)); 317 $selectedVal.val(Math.floor(resultValue)); 318 } 319 } 320 else 321 { 322 remainder = -fixedamount; 323 } 324 325 if (remainder != 0) {} 326 327 return remainder; 328 } 329 }, 330 isWholeNumber: function(n) { 331 return /^\d+$/.test(n); 332 } 333 } 334 335 $(document).ready(function() { 336 if(wpConfig.enableDrinkCalculator) { 337 if($('body').hasClass('drink-calculator')) window.drinkCalculator.init(); 338 } 339 }); 340 341})(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.