
(function($) {
$.fn.newsletter = function(parameters) {

	//note that the null defaults MUST BE OVERRIDEN - they are required args. Included in defaults for reference
	var defaults = {
		url: "/webapp/wcs/stores/servlet/NewsletterSignup", //AJAX submission url
	
		prompt: null,
		title: null,
		//buttonText: null, //removed for an image button
		signup: null,
		message: null,
		icon: null,
		storeId: null
	};
	var parameters = $.extend(defaults, parameters);
	
	var newsletter = document.createElement("div");
	$(newsletter).addClass("newsletterDisplay");
	
	create();
	
	$(this).empty(); //delete all children (if there are any) - to REPLACE CONTENT
	$(this).append(newsletter); //add in new child
	$(this).append(createDiv("clear"));
	
	function submitNewsletterSignup(jQnewsletter) {
		emailInput = jQnewsletter.find(".newsletterEmail :input");
		
		//validation occurs serverside...
		
		var params = new Object();
		params.emailAddress = emailInput.attr("value");
		params.storeId = parameters.storeId;
		
		$.getJSON(parameters.url, params, function(data) {
			setDisplayMessage(jQnewsletter, data.message);
			if(data.status == "OK") { //hide submit button (and input)
				jQnewsletter.find(".newsletterEmail").hide();
				jQnewsletter.find(".emailButton").hide();
			}
		});
	}
	
	function setDisplayMessage(jQnewsletter, message) {
		jQnewsletter.find(".message").text(message);
	}
	
	function create() { //lay out comopnents (including creating static layout sections)
		var div = createDiv("newsletterHeader");
	
		var element = document.createElement("img");
		$(element).attr("src", parameters.icon);
		$(element).attr("alt", "Newsletter Signup Image");
		$(div).append(element);
		
		element = document.createElement("span");
		$(element).addClass("title");
		$(element).text(parameters.title);
		$(div).append(element);
		$(newsletter).append(div);
		
		
		var message = createDiv("message");
		$(message).text(defaults.message);
		$(newsletter).append(message);
		$(newsletter).append(createDiv("clear"));
		
		var emailInput = document.createElement("input");
		emailInput.type = "text";
		emailInput.name = "newsletterEmail";
		$(emailInput).prompt(parameters.prompt);
		div = createDiv("newsletterEmail");
		$(div).append(emailInput);
		$(newsletter).append(div);
		
		
		div = createDiv("emailButton");
		element = document.createElement("input");
		element.type = "image";
		$(element).attr("src", parameters.signup);
		$(element).attr("alt", "Sign Up");
		$(element).click(function() {
			var newsletter = $(this).parent("*").parent("*");
			submitNewsletterSignup(newsletter);
		});
		$(div).append(element);
		$(newsletter).append(div);
		$(newsletter).append(createDiv("clear"));
	}
	
	function createDiv(cssClass) {
		var newDiv = document.createElement("div")
		$(newDiv).addClass(cssClass);
		return newDiv;
	}
	
	
}	
})(jQuery);	

