var forms = new Array(new Array(), new Array(), new Array(), new Array(), new Array(), new Array(), new Array(), new Array(), new Array());
var successInfo;

function changeReturnRequirness(formName, returnName, required)
{
	for(var i = 0; i < forms[0].length; i++)
	{
		if(forms[0][i] == formName)
		{
			for(var ii = 0; ii < forms[5][i].length; ii++)
			{
				if(forms[5][i][ii] == returnName)
				{
					forms[8][i][ii] = required;
					break;
				}
			}
		}
	}
}

function addForm(formName, formID, successMsg, failureMsg)
{
	forms[0].push(formName);
	forms[1].push(formID);
	forms[2].push(successMsg);
	forms[3].push(failureMsg);
	forms[4].push(new Array());
	forms[5].push(new Array());
	forms[6].push(new Array());
	forms[7].push(new Array());
	forms[8].push(new Array());
}

function addReturn(formName, fieldID, returnName, errorName, type, required)
{
	for(var i = 0; i < forms[0].length; i++)
	{
		if(forms[0][i] == formName)
		{
			forms[4][i].push(fieldID);
			forms[5][i].push(returnName);
			forms[6][i].push(errorName);
			forms[7][i].push(type);
			forms[8][i].push(required);
			break;
		}
	}
}

function validateForm(formName)
{
	var valid = true;

	for(var i = 0; i < forms[0].length; i++)
	{
		if(forms[0][i] == formName)
		{
			for(var ii = 0; ii < forms[4][i].length; ii++)
			{
				document.getElementById(forms[6][i][ii]).innerHTML = "";
				var value = getInputValue(document.getElementById(forms[4][i][ii]));
				if(forms[8][i][ii])
				{
					if(isBlank(value))
					{
						valid = false;
						document.getElementById(forms[6][i][ii]).innerHTML += "This is a required field!";
						continue;
					}
				}

				if(isBlank(value))
					continue;

				switch(forms[7][i][ii].toLowerCase())
				{
					case "email":
						if(!new RegExp('[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]', '').test(value))
						{
							valid = false;
							document.getElementById(forms[6][i][ii]).innerHTML += "You must enter a valid email!"; 

						}
						break;
					case "year":
						if(!new RegExp('(19|20)[0-9]{2}', '').test(value))
						{
							valid = false;
							document.getElementById(forms[6][i][ii]).innerHTML += "You must enter a valid year! ex. yyyy"; 

						}
						break;
					case "date":
						if(!new RegExp('(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)[0-9]{2}', '').test(value))
						{
							valid = false;
							document.getElementById(forms[6][i][ii]).innerHTML += "Your must enter a valid date! ex. dd/mm/yyyy or dd-mm-yyyy or dd.mm.yyyy"; 

						}
						break;
					case "dob":
						if(!new RegExp('(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)[0-9]{2}', '').test(value) && !new RegExp('(19|20)[0-9]{2}', '').test(value))
						{
							valid = false;
							document.getElementById(forms[6][i][ii]).innerHTML += "Your must enter a valid date! ex. dd/mm/yyyy or dd-mm-yyyy or dd.mm.yyyy"; 

						}
						break;
					default:
						break;
				}
			}
			break;
		}
	}

	return valid;
}

function submit(formName)
{
	var info = new Array();

	for(var i = 0; i < forms[0].length; i++)
	{
		if(forms[0][i] == formName)
		{
			info.push(forms[1][i]);
			info.push(forms[4][i]);
			info.push(forms[5][i]);
			info.push(forms[2][i]);
			info.push(forms[3][i]);
			break;
		}
	}

	if(info.length != 5)
		return;

	var xml = createXML(info);
	self.frames["resultFrame"].document.forms["frm12345"].xml.value = xml;
	self.frames["resultFrame"].document.forms["frm12345"].action = 'http://api2.silverpop.com/XMLAPI';
	self.frames["resultFrame"].document.forms["frm12345"].submit();
	
	successInfo = info[3];
	setTimeout('success()', 3000);
}

function createXML(info)
{
	var xml = '<?xml version="1.0" encoding="UTF-8"?><Envelope><Body><AddRecipient>';

	xml += '<LIST_ID>' + info[0] + '</LIST_ID>';

	xml += '<CREATED_FROM>2</CREATED_FROM><UPDATE_IF_FOUND>TRUE</UPDATE_IF_FOUND>';

	for(var i = 0; i < info[1].length; i++)
	{
		xml += '<COLUMN><NAME>' + info[2][i].toUpperCase() + '</NAME><VALUE>' + getInputValue(document.getElementById(info[1][i])) + '</VALUE></COLUMN>';
	}	

	xml += '</AddRecipient></Body></Envelope>';

	return xml;
}

function success()
{
    document.getElementById("confirmation").innerHTML = successInfo;
    document.getElementById("form").innerHTML = "";
}