Winery = function() {
	var listMask;
	
	return {

		init : function() {

			var pageRules = {
				'div#winery-filter-region-market' : function(element) {

					$(element).getElementsBySelector('a').each(function(aEle) {
					    Event.stopObserving(aEle, 'click', Winery.regionMarketWineries);
					    Event.observe(aEle, 'click', Winery.regionMarketWineries);
					});
				},
				
                'div.reset' : function(element) {

					$(element).getElementsBySelector('a').each(function(aEle) {
					    Event.stopObserving(aEle, 'click', Winery.regionMarketWineries);
					    Event.observe(aEle, 'click', Winery.regionMarketWineries);
					});
				},

				'form#frm-winery-filter-name' : function(element) {

					Event.stopObserving(element, 'submit', Winery.postForm);
					Event.observe(element, 'submit', Winery.postForm);
				},
				
				'form#frm-winery-filter-wname' : function(element) {

					Event.stopObserving(element, 'submit', Winery.postFormW);
					Event.observe(element, 'submit', Winery.postFormW);
				},
				
				'div#winery-list ul li a': function(a) {
				
				    Event.stopObserving(element, 'click', Winery.showWinery);
					Event.observe(element, 'click', Winery.showWinery);
				},
				
				'div.filter-sub-region a' : function(element) {
					    Event.stopObserving(element, 'click', Winery.filterSubRegion);
					    Event.observe(element, 'click', Winery.filterSubRegion);					
				}
			};

			Behaviour.register(pageRules);

			Winery.buildMask();
		},

		buildMask : function() {
			listMask = new EBase.Controls.Mask( {
				parent : 'winery-list',
				msg : 'Loading...'
			});			
		},

		regionMarketWineries : function(evt) {
			Event.stop(evt);

            $('winery-filter-region-market').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');
            
            if($(aEle).rel.strip() != '')
            {
                if($(aEle).rel.split(':')[0] == 'r')
                {
                    $('txtWineryRegion').value = $(aEle).rel.split(':')[1];
                    $('txtWineryMarket').value = '0';
                    
                    //$('txtWineryRegionW').value = $(aEle).rel.split(':')[1];
                    //$('txtWineryMarketW').value = '0';
                }
                else
                {
                    $('txtWineryRegion').value = '0';
                    $('txtWineryMarket').value = $(aEle).rel.split(':')[1];
                    
                    //$('txtWineryRegionW').value = '0';
                    //$('txtWineryMarketW').value = $(aEle).rel.split(':')[1];
                }
            }
            else
            {
                $('txtWineryRegion').value = '0';
                $('txtWineryMarket').value = '0';
                
               // $('txtWineryRegionW').value = '0';
               // $('txtWineryMarketW').value = '0';
            }            
			
			$('txtWineryName').value = '';
			//$('txtWineName').value = '';

			if ($(aEle).href != '#') {
				new Ajax.Updater($('winery-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-winery-filter-name');	
			//$('txtWineName').value = '';		

			if ($(fEle).action != '#') {
				new Ajax.Updater($('winery-list'), $(fEle).action, {
					method : 'post',
					parameters : $(fEle).serialize() + '&p=1&dt=' + (new Date()),
					evalScripts : true,
					onComplete : function() {
						listMask.hide();
					}
				});
			}
		},
		
		postFormW : function(evt) {
			Event.stop(evt);

			listMask.show();

			var fEle = $('frm-winery-filter-wname');			
            $('txtWineryName').value = '';
			if ($(fEle).action != '#') {
				new Ajax.Updater($('winery-list'), $(fEle).action, {
					method : 'post',
					parameters : $(fEle).serialize() + '&p=1&dt=' + (new Date()),
					evalScripts : true,
					onComplete : function() {
						listMask.hide();
					}
				});
			}
		},
		
		showWinery: function(evt) {
		    Event.stop(evt);
		    
			var aEle = Event.element(evt);

			
			Modalbox.show($(aEle).href, { width: 600, 			                              			                             
			                              title: 'Winery Details'});
		},
		
		filterSubRegion: function(evt) {
		    Event.stop(evt);
		    
		    var aEle = Event.element(evt);
		    
		    listMask.show();
		    
		    if ($(aEle).href != '#') {
				new Ajax.Updater($('winery-list'), $(aEle).href, {
					method : 'post',
					parameters : {
						dt : new Date()
					},
					evalScripts : true,
					onComplete : function() {
						listMask.hide();
					}
				});
			}
		}
	};

}();

Event.observe(window, 'load', function() {
	Winery.init();
	Behaviour.apply();
});
