document.observe('contentloaded', function() {
	
	var images = $$('#product_images img');
	var curimg = 0;
	// one liner of event selectors
	(function (rules) {
		for(var selector in rules) {
			var pair	= selector.split(':');
			var event	= pair[1];
			$$(pair[0]).each(function(rule, element) {
				 if(event == '' || pair.length == 1) return rule(element);
				 element.observe(event, function(e) {
				 	var element = e.element();
				 	if (element.nodeType == 3) // Safari Bug (Fixed in Webkit)
            			element = element.parentNode;
            		rule($(element), e);
				 });
            }.curry(rules[selector]));
		}
	})({
		'.lgn-form input:focus': function(el) {
			if (el.value == el.title) el.value = '';
		},
		'.lgn-form input:blur': function(el) {
			if (!el.value) el.value = el.title;
		},
		'#content .zoom a:click': function() {
			Effect.Appear('bigimage');
		},
		'#bigimage a.close:click': function() {
			Effect.Fade('bigimage');
		},
		'.orderform:submit': function(form, e) {
			var loading = form.down('.loading1');
			loading.innerHTML = '<img src="img/ajax-loader.gif" alt="" />';
			loading.className = 'loading1';
			loading.show();
			form.request({
				onSuccess: function(transport) {					
					var response = transport.responseText.evalJSON();
					
					if (response.error)
						return notice(loading, response.error, 'error');
			
					var amount  = $('amount_' + response.product_id);
					if (amount) {
						amount.value = response.amount;
					}
					
					$('incart').innerHTML = response.total || 0;
					notice(loading, response.success, 'success');
				}
			});
			e.stop();
		},
		'#product_gallery .prev, #product_gallery .next:click': function(elem, e){
			images[curimg].hide();
			curimg += e.findElement('li').hasClassName('prev') ? -1 : 1;
			
			if (curimg < 0)
				curimg = images.length-1;
			else if (!images[curimg])
				curimg = 0;
			
			images[curimg].show();
			
			$('product_gallery_pager').innerHTML = curimg+1;
		},
		'#firm_check:click': function(elem, e){
			$('firm_info')[$('firm_is').checked ? 'show' : 'hide']();
		},
		'#addaddress:click': function(elem, e){
			var dd = e.findElement('dd');
			(dd.next('.last') ? dd.next('.last').removeClassName('last') : dd).insert({after:
				'<dd class="last"><label for="address[]">Допълнителен адрес: </label><span class="field"><input type="text" name="address[]" value=""/></span></dd>'
			});
		}
	});
});
function notice(m, message, type) {
	m.addClassName(type).innerHTML = message;
	Effect.BlindUp.delay(2, m, {duration: 0.5});
}