var first_form_submit = true;
var additional_submit = false;
var callback_completed = false;
var first_form_click_done = false;
var mobileFilter = /^[.]{0}$|^\d{10,15}$/;
var mobileFilterUS = /^[.]{0}$|^\d{10}$/;
var mobileFilterOTHER = /^[.]{0}$|^\d{10,15}$/;

var noOfTries = 2;
var tryCount = 0;

/*function copyElementDataSF(srcContainer, srcElementSuffix, destElementSuffix) {
	var elements = document.getElementById(srcContainer).getElementsByTagName(
			'*');
	for ( var i = 0; i < elements.length; i++) {
		var element = elements[i];
		if (element.type == 'text' || element.type == 'hidden'
				|| element.type == 'checkbox' || element.type == 'select-one') {
			srcElementId = element.id;
			expDestElementId = srcElementId.substring(0, srcElementId
					.indexOf(srcElementSuffix))
					+ destElementSuffix;
			if (document.getElementById(expDestElementId)
					&& element.value != "") {
				document.getElementById(expDestElementId).value = element.value;
			}
		} else if (element.type == 'select') {
		
			srcElementId = element.id;
			expDestElementId = srcElementId.substring(0, srcElementId
							.indexOf(srcElementSuffix))
							+ destElementSuffix;
							
			if (document.getElementById(expDestElementId)
					&& element.value != "") {
				$(expDestElementId + " option[@selected='selected']").removeAttr("selected");
				$(expDestElementId + " option[@value='" + element.value + "']").attr("selected","selected");	
			}
			
		}
	}
}
*/

function resetElementDataSF(srcContainer) {
	var elements = document.getElementById(srcContainer).getElementsByTagName(
			'*');
	for ( var i = 0; i < elements.length; i++) {
		var element = elements[i];
		if (element.type == 'text') {
				document.getElementById(element.id).value = "";
		}
	}
}

function replaceContentSF(topContainerId, formContainerId, isUpdate, isAdditional, maskMobile) {

	if ($("#mailinglist #replaceScript").length > 0) {
		script = $("#mailinglist #replaceScript");
		if ($(script).length > 0) {
			$("#replaceScript").empty();
		}
	}

	var script = document.createElement('script');
	script.type = 'text/javascript';
	script.id = 'replaceScript';
	var src = 'http://sms.wmg.com/sms/register?js=true';
	if(isUpdate) {
		src += '&updateprofile=yes';
	}

	var elements = document.getElementById(formContainerId)
			.getElementsByTagName('*');
	for ( var i = 0; i < elements.length; i++) {
		var element = elements[i];
		if (element.type == 'text' || element.type == 'hidden'
				|| (element.type == 'checkbox' && element.checked == 1)
				|| element.type == 'select-one') {
			
			var id = element.id;
			if (isUpdate && id && id.match("^additional_") == "additional_") {
				//Masking additional List Ids be sent the second time.
				continue;
			} else if (isAdditional && id && id.match("^newsletterId") == "newsletterId") {
				//Masking regular List Ids be sent the third time.
				continue;
			} else {
				// Business as usual
				src += "&" + element.name + "=" + jQuery.trim(element.value);
			}
		}
	}
	script.src = src;
	try {
		document.getElementById(topContainerId).appendChild(script);
	} catch (err) {
		// Skip error as this will be take care by the alertTimeoutError method.
		// alert(err);
	}
	setTimeout("alertTimeoutErrorSF()", 10000); // wait for 8 seconds

}

/* Setting ErrorMessage on Time out */
function alertTimeoutErrorSF() {
	if (!callback_completed) {
		setErrorSF("Unable to process your request at this time");
	}
}

/* Registering event handlers for the submit(Layer1 and Layer2) and close button */
$( function() {
	$("#mailinglist #mobilePinForm").children("a.closeButton").click( function(event) {
		$("#mailinglist #mobilePinForm").hide();
		$("#mailinglist #mobilePinForm").removeClass("form3");
		$("#mailinglist #mobilePinForm").addClass("form1");
		event.preventDefault();
		first_form_click_done = false;
		tryCount = 0;
	});
	$("#mailinglist .mlistCloseText").click( function(event) {
		$("#mailinglist #mobilePinForm").hide();
		$("#mailinglist #mobilePinForm").removeClass("form3");
		$("#mailinglist #mobilePinForm").addClass("form1");
		event.preventDefault();
		first_form_click_done = false;
		tryCount = 0;
	});
	/*
	 * Event Handling on click of "Signup for mailing List" Button This block
	 * displays the Layer1(form 1)
	 */
	$("#mailinglist #mContainer").children("a.mailButton").click( function() {
		first_form_submit = true;
		setErrorSF("");
		$("#mailinglist #mobilePinForm").show();
		$('#mailinglist #formContainer1SF').show();
		$('#mailinglist #formContainer3SF').hide();
		$("#mailinglist #mobilePinForm").addClass("form1");
		$("#mailinglist #mobilePinForm").removeClass("form3");
		$("#mailinglist #formContainer1SF").find("a.submit").removeClass("disabled");
		resetElementDataSF('formContainer1SF');
		first_form_submit = true;
		callback_completed = false;
		first_form_click_done = false;
		tryCount = 0;
	});

	/*
	 * Event Handling for onclick on TEXTFIELDS in Layer1(Form1) Removes the
	 * default text in the TEXTFIELD,allows the user to give inputs
	 */
	$("#mailinglist #mListEmail1").focus( function() {
		$("#mailinglist #mListEmail1").removeClass("err");
	});

	$("#mailinglist #mListZip1").focus( function() {
		$("#mailinglist #mListZip1").removeClass("err");
	});

	/*
	 * Event Handling for onclick of Submit Button in Layer1(Form1) Validation
	 * Fields - Email, Mailing list and Postal code Returns false when
	 * validation fails
	 */
	
	$("#mailinglist #formContainer1SF")
			.find("a.submit")
			.click(
			function(event) {
				if (first_form_click_done) {
					event.preventDefault();
					return false;
				}
				var errorOccured = false;
				var email = $("#mailinglist #mListEmail1").val();
				var zipCode = $("#mailinglist #mListZip1").val();
				var mobile = jQuery.trim($("#mailinglist #mListMobile1").val());

				var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;

				if (!filter.test(email)) {
					$("#mailinglist #mListEmailForm1").find(".error").fadeIn('slow');
					$("#mailinglist #mListEmail1").fadeIn('slow', function() {
						$(this).addClass('err');
					});
					errorOccured = true;
				} else {
					$("#mailinglist #mListEmailForm1").find(".error").hide();
				}
				if (zipCode == "Postal Code" || zipCode.length == 0) {
					$("#mailinglist #mListZipForm1").find(".error").fadeIn('slow');
					$("#mailinglist #mListZip1").fadeIn('slow', function() {
						$(this).addClass('err');
					});
					errorOccured = true;
				} else {
					$("#mailinglist #mListZipForm1").find(".error").hide();
				}
				
				
				country = jQuery.trim($("#mailinglist #mListCountry1").val());
				
				if (errorOccured) {
					first_form_click_done = false;
					return false;
				}

					
				if(EmailListIds[country]) {
					newsletterId = EmailListIds[country];					
				} else {
					newsletterId = EmailListIds['United States'];
				} 
				
				$("#mailinglist #newsletterId1").val(newsletterId);
				//$("#mailinglist #keywordId1").val(keywordId);							

				callback_completed = false;
				setErrorSF("");
				$("#mailinglist #formContainer1SF").find("a.submit").addClass("disabled");
				replaceContentSF('mContainerSF', 'formContainer1SF');
				first_form_click_done = true;
				event.preventDefault();
			});
});

/*
 * This Callback function is used for retrieving the status of the submitted
 * Form(User details).
 */
function callback(status, response) {
	if (status == 'success') {
		if ($('toReplace').length > 0) {
			document.getElementById('toReplace').innerHTML = response;
		}		
		showMListThankyouScreenSF();	
	} else {
		if(response.indexOf("already subscribed") > 1 && tryCount < noOfTries ) {
			tryCount ++;
			if (first_form_submit) {
				$("#signuptype1").val("any");
				replaceContentSF('mContainerSF', 'formContainer1SF', false, false, true);
			}
		} else {
			setErrorSF(response);
		}
	}
	callback_completed = true;
}

function showMListThankyouScreenSF() {

	tb_show("THANK YOU!","#TB_inline?height=200&width=300&inlineId=formContainer3SF",null);
}
function setErrorSF(msg) {
	if(msg.indexOf(":") > 0) {
		msg = msg.substring(msg.indexOf(":")+1);
	}
	if ($('#mailinglist .mlistError')) {
		$('#mailinglist .mlistError').html(msg);
	}
	$("#mailinglist #formContainer1SF").find("a.submit").removeClass("disabled");
	first_form_click_done = false;
}