mam.form = new function() {

	jQuery.extend(
		this, { 
			version: "1.0",
			initialize: function() {		
				if($('#formHeading').size() > 0) {
					var xrecipient = unescape($.getURLParam("xrecipient"));
          if (xrecipient != "null") {
					  var prefix = $('#formHeading > h1').text();
					  $('#formHeading').html('<h1>' + prefix + ' ' + xrecipient + '</h1>');
					  $("//input[@id='xrecipient']").attr('value', xrecipient);
          }
				}
				setAction();
				parseQueryString();
				validate();
			}		
		
		}
	);
	
	var hostname = location.hostname + ':' + location.port;
	var submit_protocol 	= 'http://';
	var submit_url 		= '/ses/formcheck';
	var label_suffixes = Array('label','legend');
	var ses_form_ids = { emailForm: true, requestLiterature: true };
	var ses_servers = 
	{
		'ebd01': 		'nmrs11.lon.mellonbank.com:9082',
		'test.mellon':		'mebss.test.mellon.com',
		'sn84':			'mebss.qa.mellon.com',
		'qa.mellon':		'mebss.qa.mellon.com',
		'sn83':			'ebusiness.melloninstitutional.com',
		'default':		'ebusiness.melloninstitutional.com'
	};
	var params = new Array();

	var setAction = function() {
		$("form").each(		
			function() {
				if( ses_form_ids[this.id] ) {
					for (var server in ses_servers) {
						if(hostname.indexOf(server) > -1) {
							$(this).attr('action',submit_protocol + ses_servers[server] + submit_url);
						} else {
							$(this).attr('action',submit_protocol + ses_servers['default'] + submit_url);
						}
					}
				}
			}
		);
		
		if($('#ses_success_redirect_url').size() > 0) {
      var ses_success_redirect_url = $('#ses_success_redirect_url').val();
		  if(ses_success_redirect_url.indexOf('http://') == -1)	{
        ses_success_redirect_url = 'http://' + hostname + ses_success_redirect_url;
        $('#ses_success_redirect_url').val(ses_success_redirect_url);
      }
		}
		
		if($('#ses_fail_redirect_url').size() > 0) {		
      var ses_fail_redirect_url =  $('#ses_fail_redirect_url').val();
      if(ses_fail_redirect_url.indexOf('http://') == -1) {
        ses_fail_redirect_url = 'http://' + hostname + ses_fail_redirect_url;
        $('#ses_fail_redirect_url').val(ses_fail_redirect_url);
      }
		}
	};
	
	var parseQueryString = function() {
		var query = location.search;
		if(query.length > 0){
			query = query.substring(1);
			var items = query.split('&');
			for(var i=0; i<items.length; i++) {
				var item = items[i].split('=');
				params[item[0]] = unescape(item[1]);
			}
		}
	};
	
	var validate = function() {
		var errorCount = 0;
    for (var param in params)	{
			if(param.length > 0 ) {
				if(param.indexOf('error') > -1) {
					handleError(param, params[param]);
					errorCount++;
				} else {
					handleValue(param, params[param]);	
				}
			}
		}
		
		if(errorCount > 0) {
			$('#errorMessage').show();
		}
	};
	
	var handleError = function(field, value) {
		field = field.replace(/^error_/,'');
		field = field.replace(/_group$/,'');
		
		if(value == 'y') {
			for(var a=0; a<label_suffixes.length; a++) {
				var element = '#'+field+'_'+label_suffixes[a];
				if($(element).size() > 0) {
					$(element).addClass('formError');
				}
			}
		}
	};
	
	var handleValue = function(field, value)	{
		var element = '#'+field;
		if($(element).size() > 0) {
			if($(element).is('input')) {
				if($(element).attr('type') == 'radio') {
					handleRadio(field, value);
				} else if($(element).attr('type') == 'checkbox') {
					handleCheck(field, value);
				}	else if($(element).attr('type') == 'text') {
					handleText(field, value);
				}
			} else if($(element).is('textarea')) {
				handleText(field, value);
			}	else if($(element).is('select')) {
				handleSelect(field, value);
			}
		}
	};
	
	var handleRadio = function(field, value) {
		$("input[@id='"+field+"']").each(function() {
			if($(this).val() == value) {
				this.checked = true;
			}
		});
	};
	
	var handleText = function(field, value) {
		var element = '#'+field;
		$(element).val(value);
	};
	
	var handleSelect = function(field, value) {
		var element = '#'+field;
		$(element).val(value);
	};
	
	var handleCheck = function(field, value) {
		var element = '#'+field;
		var items = value.split(',');
		var vals = new Array();
		
		for(var a=0; a<items.length; a++) {
			vals[items[a]] = true;	
		}
		$("input[@id='"+field+"']").each(function() {
			if(vals[$(this).val()] != undefined) {
				this.checked = true;
			} else {
				this.checked = false;
			}
		});		
	};
}