YUI({
    modules: {
        'gallery-overlay-modal': {
            path: '../../yui3-gallery/build/gallery-overlay-modal/gallery-overlay-modal-min.js',
            requires: ['overlay','plugin','event-focus'],
            optional: [],
            supersedes: []
      }
 
    }
}).use( 'event', 'node', 'io', 'io-form', 'json', function(Y) {
	Y.on("available", function () {
		var callbacks = {
			'edit_restaurant_form_init': function(form) {
				Y.one('#patio_settings-0').on('change', function(e) {
					callbacks.edit_restaurant_form(form);
				});
				Y.one('#patio_settings-1').on('change', function(e) {
					callbacks.edit_restaurant_form(form);
				});
				Y.one('#patio_settings-2').on('change', function(e) {
					callbacks.edit_restaurant_form(form);
				});
				Y.one('#patio_settings-3').on('change', function(e) {
					callbacks.edit_restaurant_form(form);
				});
				callbacks.edit_restaurant_form(form);
			},
			'edit_restaurant_form': function(form) {
				var patioNotForDogs = Y.one('#patio_settings-0');
				var hasWaterbowlLabel = Y.one('#has_waterbowl-label');
				var hasWaterbowlElement = Y.one('#has_waterbowl-element');
				
				if (patioNotForDogs.get('checked')) {
					hasWaterbowlLabel.setStyle('display', 'none');
					hasWaterbowlElement.setStyle('display', 'none');
				} else {
					hasWaterbowlLabel.setStyle('display', 'block');
					hasWaterbowlElement.setStyle('display', 'block');
				}
			},
			'sign_in_form_init': function(data) {
				if (data == true) {
					location.replace('/default/user/sign-in');
				}
			},
			'suggest_menu_form_init': function(data) {
				/*
				Y.one("#suggest_menu_submit_details").on('mouseover', function (e) {
					Y.one('#suggest_menu_details_provided').set('value', 1);
				});
				Y.one("#suggest_menu_submit_basic").on('mouseover', function (e) {
					Y.one('#suggest_menu_details_provided').set('value', 0);
				});
				*/
			}
		};
		
		Y.all(".free-food-link").on('click', function (e) {
			e.preventDefault();
			var overlay = Y.one('#free-food-overlay');
			
			var request = Y.io('/index/free-food', {
	            method: 'GET',
	            on: {
	                complete: replaceAjaxForm
	            },
	            arguments: {
	            	node: overlay
	            }
	        });
			
			if (overlay.getStyle('display') == 'none') {
				Y.one('#body-overlay').setStyle('display', 'block');
			}
			
			overlay.setStyle('display', overlay.getStyle('display') == 'block' ? 'none' : 'block');
		});
		
		Y.all(".suggest-menu-link").on('click', function (e) {
			e.preventDefault();
			var overlay = Y.one('#suggest-menu-overlay');
			
			var request = Y.io('/index/suggest-menu', {
	            method: 'GET',
	            on: {
	                complete: replaceAjaxForm
	            },
	            arguments: {
	            	node: overlay
	            }
	        });
			
			if (overlay.getStyle('display') == 'none') {
				Y.one('#body-overlay').setStyle('display', 'block');
			}
			
			overlay.setStyle('display', overlay.getStyle('display') == 'block' ? 'none' : 'block');
		});
		
		Y.all("#sign-in-link").on('click', function (e) {
			e.preventDefault();
			e.preventDefault();
			var overlay = Y.one('#sign-in-overlay');
			
			var request = Y.io('/index/request-account', {
	            method: 'GET',
	            on: {
	                complete: replaceAjaxForm
	            },
	            arguments: {
	            	node: Y.one('#request-account-container')
	            }
	        });
			
			var request = Y.io('/user/sign-in', {
	            method: 'GET',
	            on: {
	                complete: replaceAjaxForm
	            },
	            arguments: {
	            	node: Y.one('#sign-in-container')
	            }
	        });
			
			if (overlay.getStyle('display') == 'none') {
				Y.one('#body-overlay').setStyle('display', 'block');
			}
			
			overlay.setStyle('display', overlay.getStyle('display') == 'block' ? 'none' : 'block');
		});
		
		/*
		Y.one("#suggest_menu_submit_details").on('mouseover', function (e) {
			Y.one('#suggest_menu_details_provided').set('value', 1);
		});
		Y.one("#suggest_menu_submit_basic").on('mouseover', function (e) {
			Y.one('#suggest_menu_details_provided').set('value', 0);
		});
		*/
		
		Y.all("a.ajax-replace-container").on('click', function (e) {
			e.preventDefault();
			var node = e.currentTarget;
			var uri = node.get('href');
			var parent = node.get('parentNode');
			
			while (!parent.hasClass('ajax-container') && node.get('parentNode')) {
				parent = parent.get('parentNode');
			}
			
			var request = Y.io(uri, {
	            method: 'GET',
	            on: {
	                complete: replaceAjaxForm
	            },
	            arguments: {
	            	node: parent
	            }
	        });
			
			parent.set('innerHTML', '<div class="loading-indicator"><img src="/images/ajax-loader.gif" /></div>');
		});
		
		Y.all("form.ajax-replace").on('submit', function (e) {
			e.preventDefault();
			var form = e.currentTarget;
			var uri  = form.get('action');
			var callback = null;
			var id = form.getAttribute('id');
			
			if (id && callbacks[id + '_init']) {
				var callback = id + '_init';
			}
			
			var request = Y.io(uri, {
	            method: 'POST',
	            on: {
	                complete: replaceAjaxForm
	            },
	            form: {
	            	id: form,
	            	useDisabled: true
	            },
	            arguments: {
	            	node: form.get('parentNode'),
	            	callback: callback
	            }
	        });
			
			form.get('parentNode').set('innerHTML', '<div class="loading-indicator"><img src="/images/ajax-loader.gif" /></div>');
		});
		
		function replaceAjaxForm(id, o, args)
		{
			try {
				var data = Y.JSON.parse(o.responseText);
			} catch (err) {};

			if (data) {
				var callback = args.callback;
				
				if (callbacks[callback]) {
					callbacks[callback](data);
				}
			} else {
				var node = args.node;
				var html = Y.Node.create(o.responseText);
				node.set('innerHTML', '');
				node.appendChild(html);
				
				node.all("form").each(function(n) {
					var id = n.getAttribute('id');
					var callback = null;
					
					if (id && callbacks[id + '_init']) {
						var callback = id + '_init';
						callbacks[callback](n);
					}
					
					if (n.test('.ajax-replace')) {
						n.on('submit', function (e) {
							e.preventDefault();
							var form = e.currentTarget;
							var uri  = form.get('action');
							
							var request = Y.io(uri, {
					            method: 'POST',
					            on: {
					                complete: replaceAjaxForm
					            },
					            form: {
					            	id: form,
					            	useDisabled: true
					            },
					            arguments: {
					            	node: node,
					            	callback: callback
					            }
					        });
							
							form.get('parentNode').set('innerHTML', '<div class="loading-indicator"><img src="/images/ajax-loader.gif" /></div>');
						});
					}
				});
				
				
				node.all("a.ajax-replace-container").on('click', function (e) {
					e.preventDefault();
					var node = e.currentTarget;
					var uri = node.get('href');
					var parent = node.get('parentNode');
					
					while (!parent.hasClass('ajax-container') && node.get('parentNode')) {
						parent = parent.get('parentNode');
					}
					
					var request = Y.io(uri, {
			            method: 'GET',
			            on: {
			                complete: replaceAjaxForm
			            },
			            arguments: {
			            	node: parent
			            }
			        });
					
					parent.set('innerHTML', '<div class="loading-indicator"><img src="/images/ajax-loader.gif" /></div>');
				});
			}
		}
	}, "#footer");
});
