// requires jQuery and colorFlash extension

//Bind Form Submission Function
$(function() {
	$('.dform#nlsignup').each(function() {
		var tid = this.id;
		$('.submit_button',this).click(function() { newsletterSubmit(tid); });
	});
});

function newsletterSubmit(formID) {

	//Generic
	var jQ = $;
	var query = '';
	var amp = '';
	
	var subscribeURL = "/campaign/list/subscribe"; // may need to be changed per site.
	
	var foundError = false;
	var errorFields = new Array();

	jQ("input,textarea","#"+formID).each(function() {
		if(this.value != this.defaultValue || this.checked || $(this).is("[type=hidden]")) {
			if(this.name == 'name'){
				var nameParts = this.value.split(" ", 2);
				var firstName = '';
				var lastName = '';
				if(nameParts.length == 1){
					firstName = this.value;
				}else{
					firstName = nameParts[0];
					lastName = this.value.substr(this.value.indexOf(' ') + 1);
				}
				query += amp+'first_name='+firstName.replace('&','%26'); // hackish urlencoding
				amp = '&';
				query += amp+'last_name='+lastName.replace('&','%26'); // hackish urlencoding
			}else{
				query += amp+this.name+'='+this.value.replace('&','%26'); // hackish urlencoding
				amp = '&';
			}
		}else{
			switch(this.name){
				default:
					foundError = true;
					errorFields.push(this.name);
					break;
			}
		}
	});

	if(foundError){
		for(i=0; i < errorFields.length; i++) {
			jQ("#"+formID+" input[@name="+errorFields[i]+"]").colorFlash({ speed: "fast" });
		}
	}else{
		$.ajax({
			type:'POST',
			url:subscribeURL,
			data:query,
			dataType:'xml',
			complete:function(xh,s) {
				var jQ = $;
				flashyResponder(xh.responseXML,formID);
			}
		});
	}
}

function resetForm(formID) {
	/* Reset the form upon successful submission */
	$('input, textarea','#' + formID).each(function() {
		this.value = this.defaultValue;
		if(!$(this).hasClass("def")) {
			this.className += " def";
		}
	});
}

function flashyResponder(xd,formID) {
	jQ = $;
	if(jQ("success",xd).length > 0) {
		jQ("#"+formID+" input").hide("fast",function() {
			if(jQ("#"+formID+" .success").length == 0) {
				jQ("#"+formID+" input").parent(":eq(0)").prepend("<div class=\"success\" style=\"display:none;\">"+ jQ("message",xd).text() +"</div>");
				jQ("#nlsignup_submit").remove();
				jQ("#"+formID+" .success").show("fast");
			}
		});
		resetForm(formID);
	}
	else {
		for(i=0; i < jQ("error",xd).length; i++) {
			jQ("error",xd).each(function() {
				jQ("#"+formID+" input[@name="+jQ(this).attr("name")+"]").colorFlash({ speed: "fast" });
			});
		}
	}
}