// Extending jQuery
/*(function($) {
	$.findEvent.init = function() {
	
	}
	$.fn.findEvent = function(options, callback) {
		return this.each(function(){
			$.findEvent.init();
		});
	};
})(jQuery);*/

(function($) {
	$.fn.findEvent = function(options, callback) {
		return this.each(function(){

			// Initialise Variables
			var mapComponent = $('img#f_region');
			var imageComponent = $('area.swapMap');
			var path = "/img/map/";
			var defaultMapImage = "map.jpg";
			var state = "";
			
			// Dining Type List
			var events = [
				'Fine Dining / à la carte',
				'Japanese / Chinese / Asian',
				'Italian / Greek / European',
				'Seafood',
				'General / Cafe / Takeaway'
			];
			
			// Useful Link categoryID
			var linkPage = {
				nsw: {
					fine: '838',
					asian: '935',
					european: '910',
					seafood: '911',
					general: '901'
				},
				nt: {
					fine: '923',
					asian: '909',
					european: '929',
					seafood: '912',
					general: '917'
				},
				qld: {
					fine: '924',
					asian: '936',
					european: '930',
					seafood: '836',
					general: '918'
				},
				sa: {
					fine: '925',
					asian: '937',
					european: '931',
					seafood: '913',
					general: '191'
				},
				tas: {
					fine: '926',
					asian: '938',
					european: '932',
					seafood: '914',
					general: '920'
				},
				vic: {
					fine: '927',
					asian: '939',
					european: '933',
					seafood: '915',
					general: '921'
				},
				wa: {
					fine: '928',
					asian: '940',
					european: '934',
					seafood: '916',
					general: '922'
				}
			}
			
			var PopulateEventOption = function(events, state, links) {
				var eventComponent = $('#event');
				eventComponent.empty();
				
				// Add Dining Type List
				for(var i = 0; i < events.length; i++ ) {
					eventComponent.append('<option value="' + events[i].toLowerCase() + '">' + events[i] + '</option>');
				}
				
				// Add click event to Dining Types
				$('select#event').click(function() {
					var event = "";
					switch(this.value) {
						case 'fine dining / à la carte' :
							event = 'fine';
							break;
						case 'japanese / chinese / asian' :
							event = 'asian';
							break;
						case 'italian / greek / european' :
							event = 'european';
							break;
						case 'seafood' :
							event = 'seafood';
							break;
						case 'general / cafe / takeaway' :
							event = 'general';
							break;
					}
					
					var newPage = links[state][event];
					
					// Enable Search Button
					$('input#submit')
					.removeAttr('disabled')
					.fadeTo('normal',1)
					.click(function() {
						window.location = '/dining/useful-links.asp?menu=dining&categoryID=' + newPage;
						return false;
					});
				});
			};
			
			// Disable Search Button
			$('input#submit').attr('disabled','true').fadeTo(0,0.25);
			
			// Map Mouse Over
			imageComponent.mouseover(function() {
				// Find map image to display
				switch(this.id.toLowerCase()) {
					case "wa" :
						mapImage = "map1.jpg";
						break;
					case "nt" :
						mapImage = "map2.jpg";
						break;
					case "qld" :
						mapImage = "map3.jpg";
						break;
					case "act" :
						mapImage = "map5.jpg";
						break;
					case "nsw" :
						mapImage = "map4.jpg";
						break;
					case "vic" :
						mapImage = "map6.jpg";
						break;
					case "tas" :
						mapImage = "map7.jpg";
						break;
					case "sa" :
						mapImage = "map8.jpg";
						break;
					default:
						mapImage = defaultMapImage;
						break;
				}
				
				mapComponent.attr('src', path + mapImage);
			});
			
			// Map Mouse Out
			imageComponent.mouseout(function() {
				mapComponent.attr('src', path + defaultMapImage);
			});
			
			// Map click
			imageComponent.click(function() {
				state = this.id;
				
				// Remove any existing selections
				$('#state option:selected').removeAttr("selected");		
				$('#event option:selected').removeAttr("selected");		
				
				// Add current selection
				$('#state option[value="' + state + '"]').attr("selected","selected");
				
				// Populate Dining Type List
				PopulateEventOption(events,state,linkPage);
			});
			
			// Form State Select
			$('#state').change(function() {
				// Find current State
				state = this.value;
				
				// Populate Dining Type List
				PopulateEventOption(events,state,linkPage);
			});
		
		});
	};
})(jQuery);
