Retailer = function() {
	var listMask;

	return {

		init : function() {

			var pageRules = {
				'div#ret-filter' : function(element) {

					$(element).getElementsBySelector('a').each(function(aEle) {
					    Event.stopObserving(aEle, 'click', Retailer.marketRetailers);
					    Event.observe(aEle, 'click', Retailer.marketRetailers);
					});
				},
				
				'div.reset' : function(element) {

					$(element).getElementsBySelector('a').each(function(aEle) {
					    Event.stopObserving(aEle, 'click', Retailer.marketRetailers);
					    Event.observe(aEle, 'click', Retailer.marketRetailers);
					});
				},

				'form#frm-ret-filter-name' : function(element) {

					Event.stopObserving(element, 'submit', Retailer.postForm);
					Event.observe(element, 'submit', Retailer.postForm);
				},
				
				'div#retailers-list ul li a': function(a) {
				
				    Event.stopObserving(element, 'click', Retailer.showRetailer);
					Event.observe(element, 'click', Retailer.showRetailer);
				}
			};

			Behaviour.register(pageRules);

			Retailer.buildMask();
		},

		buildMask : function() {
			listMask = new EBase.Controls.Mask( {
				parent : 'retailers-list',
				msg : 'Loading...'
			});			
		},

		marketRetailers : function(evt) {
			Event.stop(evt);

            $('ret-filter').getElementsBySelector('a').each(function(aa) {
                $(aa).removeClassName('selected');
            });
            
			listMask.show();
            
			var aEle = Event.element(evt);

            if($(aEle).readAttribute('href') == null || $(aEle).readAttribute('href') == '')
            {
                aEle = $(aEle).up();
            }
            
            $(aEle).addClassName('selected');
            
			$('txtRetMarket').value = $(aEle).rel;
			$('txtRetName').value = '';

			if ($(aEle).href != '#') {
				new Ajax.Updater($('retailers-list'), $(aEle).href, {
					method : 'post',
					parameters : {
						dt : new Date(),
						p : 1
					},
					evalScripts : true,
					onComplete : function() {
						listMask.hide();
					}
				});
			}
		},

		postForm : function(evt) {
			Event.stop(evt);

			listMask.show();

			var fEle = $('frm-ret-filter-name');			

			if ($(fEle).action != '#') {
				new Ajax.Updater($('retailers-list'), $(fEle).action, {
					method : 'post',
					parameters : $(fEle).serialize() + '&p=1&dt=' + (new Date()),
					evalScripts : true,
					onComplete : function() {
						listMask.hide();
					}
				});
			}
		},
		
		showRetailer: function(evt) {
		    Event.stop(evt);
		    
			var aEle = Event.element(evt);

			
			Modalbox.show($(aEle).href, { width: 600, 			                              			                             
			                              title: 'Retailer Details'});
		}
	};

}();

Event.observe(window, 'load', function() {
	Retailer.init();
	Behaviour.apply();
});


