var Roadshow = function() {
	return {
		init: function() {
			
		},
		
		enterCompetition: function(btn) {
			var form = btn.form;
			var body = YAHOO.util.Connect.setForm(form);
			
			var saveValue = btn.value;
			btn.disabled = true;
			btn.value = "Please Wait...";
			
			function enableButton() {
				btn.disabled = false;
				btn.value = saveValue;
			}
			
			var callback = {
				success: function(o) {
					var result = eval('(' + o.responseText + ')');
					if (result.failure) {
						alert(result.messages.join('\n'));
						enableButton();
					} else if (result.success) {
						form.innerHTML = "<p>Thank you. You are now entered in the competition.</p>";
					} else {
						alert("Sorry, an unknown error occurred. Please try again later.");
						enableButton();
					}
				},
				failure: function(o) {
					enableButton();
					alert("We failed to send your entry. Please try again.");
				}
			};
			
			YAHOO.util.Connect.asyncRequest("POST", form.action, callback, body);
		},
		
		loadGenre: function(genre) {
			var catalogueList = document.getElementById("catalogue-list");
			
			var divs = YAHOO.util.Dom.getElementsByClassName("genre", "div", catalogueList);
			if (divs.length > 0) divs[0].innerHTML = "<p>Please wait...</p>";
			
			var callback = {
				success: function(o) {
					catalogueList.innerHTML = o.responseText;
					location.hash = "catalogue-list";
				},
				failure: function(o) {
					alert("Sorry, we couldn't load the catalogue. Please try again.");
				}
			};
			YAHOO.util.Connect.asyncRequest("GET", 'inline/default,' + genre + '.sm', callback, null);
		},
		
		showCatalogueDetail: function(name, href) {
			var loading = new YAHOO.widget.Panel("catalogueDetailLoading",  
						{ width:"240px", 
						  fixedcenter:true, 
						  close:false, 
						  draggable:false, 
						  zindex:4,
						  modal:true,
						  visible:true
						} 
					);
			loading.setHeader(name);
			loading.setBody('<p>Please wait...</p>');
			loading.render(document.body);
			
			var panel = new YAHOO.widget.Panel("catalogueDetail",  
						{ width:"400px", 
						  fixedcenter:true, 
						  close:true, 
						  draggable:false, 
						  zindex:5,
						  modal:true,
						  visible:false
						} 
					);
			
			panel.setHeader(name);
			
			var callback = {
				success: function(o) {
					panel.setBody(o.responseText);
					panel.render(document.body);
					panel.show();
					loading.destroy();
				},
				failure: function(o) {
					loading.destroy();
				}
			};
			YAHOO.util.Connect.asyncRequest("GET", href, callback, null);
		}
	};
}();

YAHOO.util.Event.onDOMReady(Roadshow.init, null, Roadshow);
