	
	function setValidationType(validationType) {
		
		//Determine if we're dealing with an IE or Safari browser for Mac - if so, need to bypass validation
		var setIEMacFlag = false;
		var setNNMacFlag = false;
		var setSafariFlag = false;
		var appName = navigator.appName;
		var appVersion = navigator.appVersion;
		var appPlatform = navigator.platform;
		var validationType = null;

		if ((appName.indexOf('Netscape') >= 0) && (appVersion.indexOf('Safari') >= 0)) {
			setSafariFlag = true;
			validationType = 'basic';
						
		}

		//alert(appPlatform);

		if ((appPlatform.indexOf('Mac68k') >= 0) || (appPlatform.indexOf('MacPPC') >= 0)) {
			if (appName.indexOf('Microsoft') >= 0) {
				setIEMacFlag = true;
				validationType = 'basic';
								
			}
			
			if ((appName.indexOf('Netscape') >= 0) && (parseFloat(appVersion) < 4.81)) {
				setNNMacFlag = true;
				validationType = 'basic';	
			}
		}

		//alert("setIEMacFlag = " + setIEMacFlag);
		//alert("setSafariFlag = " + setSafariFlag);
		//alert("setNNMacFlag = " + setNNMacFlag);
		
		return validationType
		
		
	}
	

	function onloadFunction() {
		
		var grabValidationType = this.setValidationType();
		
		//alert(grabValidationType);
		
		//Now we need to set the form handing differently based on the browser
		if (grabValidationType != 'basic') {
		
			// populate form
			formProcessor.populateForm(document.forms.optIn)
			// check if this is an opt-in or opt-out and set asterisk
			addRemove();
						
			//var pageErrors = formProcessor.getErrorHTML();
			
			//alert(pageErrors)
			
			return formProcessor
		}
		
		
	}

	function addRemove() {
		if (document.forms.optIn.XXDESXXsubscribe_op[0].checked == true)
		{
			swap('companyNameAsterisk','','/securitiesfinance/en/images/asterisk.gif',1);
			swap('roleAsterisk','','/securitiesfinance/en/images/asterisk.gif',1);
		}
		else {
			swap('companyNameAsterisk','','/securitiesfinance/en/images/spacer.gif',1);
			swap('roleAsterisk','','/securitiesfinance/en/images/spacer.gif',1);
		}
	}

	function swap() {
		var i,j=0,x,a=swap.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
		if ((x=MM_findObj(a[i]))!=null){if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
	}

	function submitForm(x) {
		// Empty backTo field (Otherwise if the user hits back from the success page, the backTo field will keep growing)
		document.forms.optIn.XXDESXXbackto.value = "";

		var validationRules = new Array();
		
		
		if (document.forms.optIn.XXDESXXsubscribe_op[0].checked == true) {
			
			//alert("in submitForm()");
		
			
			validationRules[0] = ["req","XXDESXXemail_address","<img src=\"../images/asterisk.gif\" alt=\"\" width=\"7\" height=\"7\" border=\"0\"><span class=\"error\"> \'Email Address\' is a required field.</span>",""];
			validationRules[1] = ["^[a-zA-Z0-9-_]+(.[a-zA-Z0-9-_]+)*@([a-zA-Z0-9-_]+[\.]{1})+[a-zA-z]{2,}$","XXDESXXemail_address","<img src=\"../images/asterisk.gif\" alt=\"\" width=\"7\" height=\"7\" border=\"0\"><span class=\"error\"> The email address you entered appears to be invalid.</span>","0"];
			validationRules[2] = ["!statestreet.com$","XXDESXXemail_address","<img src=\"../images/asterisk.gif\" alt=\"\" width=\"7\" height=\"7\" border=\"0\"><span class=\"error\"> The email address you entered appears to be a State Street address. Due to technical issues, State Street employees cannot sign up for automatic email delivery at this time. However, you can view the latest issue of <i>Market Perspectives</i> anytime by visiting this link: <a class=\"bodytext\" href=\"http://newsletter.onetooneinteractive.com/sttsf/\" target=\"_blank\">http://newsletter.onetooneinteractive.com/sttsf/</a>.  <b>(Please do not distribute this link outside of State Street.)</b> <br><br>To view future issues, you can either bookmark this link or visit the Publications page of State Street's intranet, at <a class=\"bodytext\" href=\"http://sshome.statestr.com/company_info/publications.html\" target=\"_blank\">http://sshome.statestr.com/company_info/publications.html</a>.</span>","0,1"];
			validationRules[3] = ["req","M_organizati","<img src=\"../images/asterisk.gif\" alt=\"\" width=\"7\" height=\"7\" border=\"0\"><span class=\"error\"> \'Company Name\' is a required field.</span>",""];
			validationRules[4] = ["req","role","<img src=\"../images/asterisk.gif\" alt=\"\" width=\"7\" height=\"7\" border=\"0\"><span class=\"error\"> \'I am a...\' is a required field.</span>",""];
			
		}
		else {
			validationRules[0] = ["req","XXDESXXemail_address","<img src=\"../images/asterisk.gif\" alt=\"\" width=\"7\" height=\"11\" border=\"0\"><span class=\"error\"> Email address is a required field.</span>",""];
			validationRules[1] = ["^[a-zA-Z0-9-_]+(.[a-zA-Z0-9-_]+)*@([a-zA-Z0-9-_]+[\.]{1})+[a-zA-z]{2,}$","XXDESXXemail_address","<img src=\"../images/asterisk.gif\" alt=\"\" width=\"7\" height=\"11\" border=\"0\"><span class=\"error\"> The email address you entered appears to be invalid.</span>","0"];
		}
		
		return formProcessor.submitForm(x,validationRules);
	}

	function submitButton() {
		if(submitForm(document.forms.optIn))
		{
			document.forms.optIn.submit();
		}
	}

	function preSubmit() {  // set the success url for iMakeNews

		// get current url
		var backTo = new String(document.location);

		// check for parameters and remove
		var paramStart = backTo.indexOf("?")
		if (paramStart == -1)
		{
			backTo = backTo.substring(0,backTo.lastIndexOf("/"));
		}
		else {
			backTo = backTo.substring(0,backTo.lastIndexOf("/",paramStart));
		}

		// append the proper page
		if (document.forms.optIn.XXDESXXsubscribe_op[0].checked == true)
		{
			backTo += "/confirm_opt_in.html";
		}
		else {
			backTo += "/confirm_opt_out.html";
		}

		// append form values
		var formData = formProcessor.readForm(document.forms.optIn);
		backTo += "?" + formProcessor.getFormDataString(formData);

		// set hidden form field equal to final url
		document.forms.optIn.XXDESXXbackto.value = backTo;
		
		//alert("backto:" + document.forms.optIn.XXDESXXbackto.value)

		// set hidden field values
		if (document.forms.optIn.updates.checked == true) {
			document.forms.optIn.M_custom1.value = 'YESUPDATE';
		} else {
			document.forms.optIn.M_custom1.value = 'NOUPDATE';
		}	

		if (document.forms.optIn.role[5].checked == true) {
			document.forms.optIn.M_custom2.value = document.forms.optIn.other.value;
		} else {
			document.forms.optIn.M_custom2.value = document.forms.optIn.role.value;
		}	

	}
	
	// setup form processor
	var formProcessor = new FormProcessor("http://www.imakenews.com/eletra/mod_input_proc.cfm","_self","<span class=\"headerthreered\">THERE HAS BEEN AN ERROR PROCESSING YOUR FORM:</span><br><br>");
		
	// Determine which browser is being used
	var isNav, isIE
	if (parseInt(navigator.appVersion) >= 4) {
		if (navigator.appName == "Netscape") {
			isNav = true
		} else {
			isIE = true
		}
	}

