if(typeof ecommerceproduct == 'undefined') {
var ecommerceproduct = {};
 

cms.executeOnWindowLoadOrAfter(function() {
	var el, list, tforms={};
	
// updates the variant information when an option is changed
	list = $$('select.productoption');
	while (el = list.pop()) {
		var select = el;
		tforms[select.form.name||select.form.id]=select.form;
		var f = function(evt) {
			var form = (evt.target || Event.element(evt)).form;
			var urlEncodedForm = Form.serialize(form);
			var con, n;
			var divlist = Element.select(form, "div.variantcontainer", "#variantcontainer");
			if (divlist.length == 0)
				return;
			con = divlist.pop();
			var ajax = new Ajax.Request(Element.select(form, 'dfn.variantupdateuri').pop().firstChild.data+'?'+urlEncodedForm, 
			{
				method:'get',
				on404:function(t) { 
					cms.setInnerHTML(con, '<div class="message_container"><div class="message error even">Server Not Found</div></div>');
					Effect.Shake(con);
				},
				onSuccess:function(t) {
					if (t.responseXML == null
						|| t.responseXML.firstChild == null
						|| t.responseXML.firstChild.nodeName=='parsererror') {
						cms.setInnerHTML(con, '<div class="message_container"><div class="message error even">Server Error</div></div>');
						Effect.Shake(con);
					} else {
						var processed = i2rd.stripScripts(t.responseText);
						con.innerHTML = processed.html.replace( /<textarea([^>]*)\/>/gi, '<textarea$1></textarea>' );
                        if(processed.scripts && processed.scripts.length > 0) {
                            window.setTimeout(function() {
                                for(var s,i=0,ib=processed.scripts.length;i<ib; i++) {
                                    s = processed.scripts[i];
                                    try {
                                        window.eval(s);
                                    }catch(e) {
                                         if(typeof console != 'undefined'){
                                           console.log(e);  
                                         }
                                    }
                                }
                            }, 10);
                        }
						//Element.update(con, t.responseText); // -- doesn't work. 
					}
				},
				onFailure:function(t) {
					cms.setInnerHTML(con, '<div class="message_container"><div class="message error even">Server Error</div><div style="display: none">'+t.statusText+'</div></div>');
					Effect.Shake(con);
				}
			});
		};
		Event.observe(select, 'change', f, false);
		// browsers have a "feature" that on refresh will restore the selection state but won't fire events
		var opt = null;
		for(var i = 0; opt = select.options[i]; i++) {
			if (opt.defaultSelected && select.selectedIndex != i) {
				setTimeout(function() { f({ target: select }) }, 100);
				break;
			}
		}
	}
	for(key in tforms)
		f({ target: tforms[key].elements[0] }); 
	
 });
 
}
 