Total Beverage Totally Dishonest

Ah, Total Beverage, the truth is I really do love you. You’re a liquor supermarket – a store larger than most grocery stores, selling all manner of wine, beer, and the hard stuff. You have a wine selection so huge, I really don’t know what to do other than pick something at random (which usually works out just fine). You get all kinds of yummy beers, from all over the world. Overall -you’re a great place.

So now that we’ve established that, let’s talk a minute about a couple peculiar laws regarding stores that sell alcoholic beverages here in the great state of Colorado.

Currently, only licensed liquor stores can sell anything with an alcohol content of greater than 3.2%. This excludes pretty much everything, except that many beer manufacturers distribute a special “3.2″ version of their beer – “near beer”, I’ve heard it called.

Any single owner (person or company) can only own one such store in the state. So this means that while Safeway can’t sell full-strength beer and wine, they can set aside and license one store in the state. So there is one location of each major chain that has its own full-strength liquor section.

Up until a couple years ago, these stores were mandated by law to be closed on Sunday. This was changed, and now these stores can choose to open on Sunday or not. Most do.

So that’s how things are in Colorado. When I first moved here, having to go to a separate store for my beer or wine (I rarely buy other liquors – which in Washington required a special trip as well, unlike California where a grocery store can sell anything and everything) was quite irritating. But I quickly learned that the trade-off is well worth it: selection. Because Colorado has created an internal industry of stores that specialize in beer, wine, and liquor sales, the competition has brought forth tons of stores that carry more than a few garden-variety beers. Where grocery stores are loathe to dedicate valuable shelf space to yet another obscure microbrew, stand alone stores thrive on it. It’s even paved the way for stores like Total Beverage, mentioned above, and Daveco – just a few miles from here, certified as the world’s largest liquor store. It’s like a Walmart of beer, wine, and spirits. I wouldn’t have it any other way – let the grocery stores carry everything, and soon the stand-alone stores will start closing, and before long we’ll have to make special trips to the few remaining out of the way stores to find the wealth of microbrews we can currently choose from.

So naturally, being a budding wine lover and an established beer geek, I’m on the mailing list for the Total Beverage store in Westminster. Today, we get an email about proposed changes in Colorado’s liquor laws. This happens every year – someone lobbies to change the system. And of course, the liquor store owners fight it tooth and nail. But rather than just tell us the truth – the truth we already know – Total Beverage wants to fight the changes because it will keep alcohol out of the hands of minors. The argument being, it’s easier for a minor to obtain alcohol when it’s more readily available in convenience stores or grocery stores than just the state-approved liquor outlets. Which is 1. ridiculous and 2. dishonest. Kids will get it where they can get it – most kids that are drinking are not out knocking off 7-11s and stealing the malt liquor. They’re getting it by way of fake IDs, or older friends, or careless parents.

If having fewer kids drinking is a result of Colorado’s current laws, fine. I’m ok with that. And Total Beverage, in spite of your ridiculous plea, I understand and support your position. I want to maintain the selection that comes from a more restrictive set of laws. So if you’re going to lobby against these changes, by all means, do so. Just don’t insult my intelligence by trying to tell me your motivation is so that “fewer kids drink alcohol”. It’s a lie, and lying liars really irritate me.

Now if you’ll pardon me, I have a sudden hankering for a hefeweizen.

All In The Family

How funny is it that one of the best family pictures we’ve taken recently (ie, everyone smiling, looking at the camera, no drama) was taken at an autograph signing with Matt Duchene (center for the Colorado Avalanche). He fits well into our family. Now he just needs to start pulling his weight around here.

Matt Duchene, with our family

For the record, Matt was really great. We heard about the event just a couple miles from our house 15 minutes after it started. So we grabbed our stuff and drove down quickly, waited in line in the cold. The event was supposed to end at 6pm, and he agreed to stay and sign for everyone who was in line by 6pm. He could have left at 6, many athletes over-value their time in this way. But he stayed, he was happy, gracious, and polite. He shook hands with Sam and me, and as I thanked him for doing this, he said “No problem”, in a tone of voice that almost sounded incredulous that I was thanking him.

He left a great impression – and we’re now bigger fans than ever. You never know if the pro athlete is going to break a kid’s heart by being rude. Sam was very excited to meet him (as was I), and a little part of me worried that he’d come away disillusioned. Instead, we walked away with signed hats (and my Duchene home jersey!) and a few copies of the above photo – but mostly we walked away with smiles that this kid (yeah, he’s only 20) might be a millionaire pro athlete – but his home is in Colorado and we get to cheer him on.

Captain Obvious is Obvious

Perhaps those more seasoned than I in the ways of javascript already know this – but I just spent 2 hours trying to fix a javascript problem that ended up having a very easy solution. My google searches came up fruitless – partially because I was using search terms to describe symptoms that I thought were related to a completely different problem – but fruitless nonetheless.

Here’s the issue. I have a simple javascript form on a hotel website – you fill in your check-in date, check-out date, number of adults and number of children, and rather than process the data and actually search, the form just builds a simple URL string and passes it off to their main corporate site (in this case, Doubletree) to use their massive internal booking engine. Easy right? All I have to do is come up with a URL string, put together with variables from the form, in a function that runs with the onClick event on the submit button – the form never actually submits. Take that URL string, throw it into a window.location, and off we go. Elegant? Notsomuch. Effective? Youbetcha.

Here’s the javascript:

function res_form() {
       
    	var rdir = "http://secure.hilton.com/en/dt/res/choose_dates.jhtml?ctyhocn=DENCHDT&arrivalDay="+document.resform.arriveDate.value+"&arrivalMonth="
+document.resform.arriveMonth.value+"&arrivalYear="+document.resform.arriveYear.value+
"&departureDay="+document.resform.departDate.value+"&departureMonth="+
document.resform.departMonth.value+"&departureYear="+document.resform.departYear.value
+"&numAdults="+document.resform.HowManyAdults.value+"&numChildren="+
document.resform.HowManyChildren.value;

window.location = rdir;
};

Simple, right? Problem is, the adults field and the children field were not getting their values passed through. Well, that’s not accurate – Firefox/Safari/Chrome were putting the values for number of adults and children in the correct places – in other words, document.form.adults.value was coming out correctly. However, in IE – (oh, boy, here we go) – this was not happening. These values were empty, which pretty much killed the URL string and the Doubletree site didn’t know what to do with it and just threw a blank screen back at me.

After much consternation and googling and bad words rattling about in my head, I decided to pick apart the form itself, piece by piece, since most of this code was something I inherited from another firm. What I found was that while non-IE browsers will take the actual value in a field and store it as document.form.field.value, IE needs a more explicit kick in the teeth, and requires that the ‘value’ attribute in the HTML<option> element be set.

So what I had was:

<select name="HowManyAdults" class="month" id="HowManyAdults">
        <option selected="selected">1</option>
        <option>2</option>
         <option>3</option>
         <option>4</option>
         <option>5</option>
         <option>6</option>
         <option>7</option>
         <option>8</option>
        <option>9</option>
         <option>10</option>
</select>

Firefox and Chrome likey, IE no likey. What I needed was:

<select name="HowManyAdults" class="month" id="HowManyAdults">
        <option value="1" selected="selected">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
        <option value="4">4</option>
        <option value="5">5</option>
        <option value="6">6</option>
        <option value="7">7</option>
        <option value="8">8</option>
        <option value="9">9</option>
        <option value="10">10</option>
      </select>

Everyone’s happy.

A very simple HTML solution to what appeared to be a javascript problem. I was convinced that those form elements were getting pushed through as null or something – but they weren’t, they just didn’t have a valid explicit value set to them, so IE had nothing to assign to them, whereas Firefox took the intuitive step of actually taking the value within the <option> tag, and making that the value.

So there you go. Probably a “duh” moment… I’m ticked that it took me two hours to figure it out, but hopefully my little odyssey helps someone else.