$(document).ready(function() {
	var ids = new Array();
	$('input[@type=radio]').each(function() {
		var id = $(this).attr('id');
		if($(this).attr('value') != 'Yes') {
		if(ids[id] == undefined) {
			
			ids[id] = true;
			$(this).attr('checked', true);
		}
		}
	});
	
});
	function processFormRequest(type, frm)
	{
		
		
		if($('#x1213884867251_1').val()) { $.cookie('name', $('#x1213884867251_1').val(), { path: '/' }); }
		if($('#x1217845825033_1').val()) { $.cookie('name', $('#x1217845825033_1').val(), { path: '/' }); }
		if($('#x1217840573859_1').val()) { $.cookie('name', $('#x1217840573859_1').val(), { path: '/' }); }
		if($('#x1217847778750_1').val()) { $.cookie('name', $('#x1217847778750_1').val(), { path: '/' }); }
		if($('#x1217608845942_1').val()) { $.cookie('name', $('#x1217608845942_1').val(), { path: '/' }); }

		if($('#x1214472522080_8').val()) { $.cookie('email', $('#x1214472522080_8').val(), { path: '/' }); }
		if($('#x1217840746503_2').val()) { $.cookie('email', $('#x1217840746503_2').val(), { path: '/' }); }

		if($('#x1214472460233_6').val()) { $.cookie('partner', $('#x1214472460233_6').val(), { path: '/' }); }
		if($('#x1217847640085_14').val()) { $.cookie('partner', $('#x1217847640085_14').val(), { path: '/' }); }
		if($('#x1217847791749_2').val()) { $.cookie('partner', $('#x1217847791749_2').val(), { path: '/' }); }
		if($('#x1217608874599_2').val()) { $.cookie('partner', $('#x1217608874599_2').val(), { path: '/' }); }

		if(type == 'ajax')
		{
			rebuildRedirects();
			$('#errorMessage').hide();	
			$('#thankyouMessage').hide();
			var action = $('#'+frm).attr('action');
			var params = {};
			
			$('#'+frm + ' *').each(function() {
				 var val = $(this).attr('value');
				 if(val != undefined)
				 {
				 
				 	var id = $(this).attr('id');
				 	var t = $(this).attr('type')
				 	if(t == 'checkbox') {
				 		var v = $('#'+id+':checked').val();
				 		if(v != undefined) {
				 			params[id] = v;
				 		} else {
				 			params[id] = 'Not checked';
				 		}
				 	} else if(t == 'radio') {
				 		var v = $("input[@id='"+id+"']:checked").val();
				 		params[id] = v;
				 	} else {
				 		params[id] = val;
				 	}
				 	
				 	if($('#'+id)) {
						$('#'+id).removeClass('fieldError');
					}
				 	
				 }
				 $(this).attr('disabled','disabled');	
			});
			
			$('#errorMessage').hide();
			$('#thankyouMessage').hide();
			$('#waitMessage').show();
			
			$.getJSON(action + '?jsoncallback=?',
  				params,
  				function(json){
  					$('#waitMessage').hide();
    				if(!json.success)
    				{
    					$('#errorMessage').show();
    					
    					for(var i=0; i<json.errors.length; i++)
    					{
    						var e = json.errors[i];
    						var errorId = e.id.replace(/^error\_/, '');
    						if($('#'+errorId)) {
    							$('#'+errorId).addClass('fieldError');
    						}
    					}
					$('#'+frm + ' *').each(function() {
						 $(this).removeAttr('disabled');	
					});
    				
    				} else {
    					$('#confirmationMessage').show();
    					$('#emailForm').hide();
    				}
    				
  				}
			);

			return false;	
		}
		else
		{
			return true;
		}
	}

	/********************************************************************************
	*  Generic Functions - DO NOT EDIT
	*********************************************************************************/
	
	function findObj(n, d) { 
	  var p,i,x;
	  if(!d) d=document;
	  if((p=n.indexOf("?"))>0&&parent.frames.length) {
	    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);
	  }
	  if(!(x=d[n])&&d.all) x=d.all[n]; 
	  for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=findObj(n,d.layers[i].document);
	  if(!x && document.getElementById) x=document.getElementById(n); return x;
	}

	var errors = new Array(); // array of error fields
	var loader = new Object();
	
	var RegEx = new Array();
	RegEx["word-required"] = "^\\w+[\\w\\s]+";
	RegEx["numeric-required"] = "^\\d+[\\d\\s]+";
	RegEx["uk-postcode"] = "[a-zA-Z]\\d\\s?\\d[a-zA-Z]{2}|[a-zA-Z]\\d{2}\\s?\\d[a-zA-Z]{2}|[a-zA-Z]{2}\\d\\s?\\d[a-zA-Z]{2}|[a-zA-Z]{2}\\d{2}\\s?\\d[a-zA-Z]{2}|[a-zA-Z]\\d[a-zA-Z]\\s?\\d[a-zA-Z]{2}|[a-zA-Z]{2}\\d[a-zA-Z]\\s?\\d[a-zA-Z]{2}|[a-zA-Z]{3}\\s?\\d[a-zA-Z]{2}";
	RegEx["dd"] = "^[0-2]?[0-9]$|^3[0-1]$";
	RegEx["mm"] = "^0?[1-9]$|^1[0-2]$";
	RegEx["yy"] = "^[0-9]{4}$";
	RegEx["email"] = "[\\w.'-]+@[\\w-]+\\.([\\w.-]+\\.\\w{2,4}|\\w{2,4})";
	
	// generic 
	function validate(validatorFieldName){
	
		if(findObj(validatorFieldName)){
		   var el = validatorFieldName.replace("_validator","");	
		   var fieldValue = findObj(el).value;
		   var regexName = findObj(validatorFieldName).value;
			re = new RegExp(RegEx[regexName]);
			var match = re.exec(fieldValue);
			
			
			if(match == null){
			// no match = invalid
			 errors.push(el);
			}		
		}
	}
	
	
	function validateForm(){
		
		loader.resetFields(errors);
		errors = new Array();
		for(var i= 0; i< document.forms[0].length; i++){
		
		var fieldname = document.forms[0][i].name;
		
		
		
		reg = new RegExp("_validator");
		var m = reg.exec(fieldname);
		if(m != null){
			
		  validate(fieldname);
		}
		
		}
		 loader.populateErrors(errors);
		
	}
	
	loader.populateErrors = function(errors){
	 	
		for(var i = 0; i< errors.length; i++){
		  this.populateError(errors[i]);		
		}
	}
	
	loader.populateValues = function(field ,fieldvalue){
		
		if(findObj(field)){
			fieldObject = findObj(field);
      
			// Checkbox
      if (fieldObject.length && fieldObject[0].type == "checkbox") {
        var fieldArray = fieldvalue.split(",");
				for (var i = 0; i < fieldObject.length; i++) {
          for (var j = 0; j < fieldArray.length; j++) {
            if(fieldObject[i].value == fieldArray[j]) fieldObject[i].checked = "true";
          }
				}
			} 
      
			// Radio
			else if (fieldObject.length && fieldObject[0].type == "radio") {
				for (var i = 0; i < fieldObject.length; i++)
				{
					if(fieldObject[i].value == fieldvalue) fieldObject[i].checked = "true";
				}
			} 
			// select-one
			else if (fieldObject.type == "select-one") {
				for (var i = 0; i < fieldObject.options.length; i++) {
					if (fieldObject.options[i].value == fieldvalue) {
						fieldObject.options[i].selected = true;
					} else {
						fieldObject.options[i].selected = false;
					}
				}
			}
			// Default
			else {
				fieldObject.value = fieldvalue;
			}
		}
	}

	function rebuildRedirects() {
		
    var hostname = location.hostname;
	  var fullUrl = unescape(location);
	  var fullParms = unescape(location.search.substr(0));	  
	  var thisUrl = unescape(findObj("ses_fail_redirect_url").value);
	  var fullDomain = fullUrl.replace(thisUrl,'');
  	fullDomain = fullDomain.replace(fullParms,'');
	  findObj("ses_success_redirect_url").value = fullDomain + findObj("ses_success_redirect_url").value;
	  findObj("ses_fail_redirect_url").value = fullDomain + findObj("ses_fail_redirect_url").value;
    
    // SES Servers
    var ses_servers = new Array();
    ses_servers[1] = "http://ebd02.lon.mellonbank.com:9082/ses/formcheck"; //DEV
    ses_servers[2] = "http://mebss.test.mellon.com/ses/formcheck"; //TEST
    ses_servers[3] = "http://mebss.qa.mellon.com/ses/formcheck"; //QA
    ses_servers[4] = "http://ebusiness.melloninstitutional.com/ses/formcheck"; //PROD

    //is this an email form
    formObj = findObj("emailForm");
    // or a request lit form?
    if (IsNull(formObj)) formObj = findObj("requestLiterature");


    //only try and set ses server details if either emailform or requestlit
    if (!IsNull(formObj)) {
      var actionAttribute = formObj.attributes.getNamedItem("action");
      var addressProperty = findObj("address_property_file_url");
      var isIntranet = false;
      if (!IsNull(addressProperty)) {
        underscore = addressProperty.value.lastIndexOf("_");
        if (underscore > 0) addressPropPath = addressProperty.value.substr(0,underscore);
        else addressPropPath = addressProperty.value;
        if (addressProperty.value.indexOf("intranet") > -1) isIntranet = true;;
      }
      
      //dev
      if (hostname.indexOf("ebd01") > -1 ) {
        actionAttribute.value = ses_servers[1];
        //if (!IsNull(addressProperty) && !isIntranet) addressProperty.value = addressPropPath + "_DEV";
      }
      //test
      else if (hostname.indexOf("test.mellon") > -1 ) {
        actionAttribute.value = ses_servers[2];
        //if (!IsNull(addressProperty) && !isIntranet) addressProperty.value = addressPropPath + "_TEST";
      }
      //qa
      else if (hostname.indexOf("sn84") > -1 ) {
        actionAttribute.value = ses_servers[3];
        //if (!IsNull(addressProperty) && !isIntranet) addressProperty.value = addressPropPath + "_QA";
      }
      else if (hostname.indexOf("qa.mellon") > -1 ) {
        actionAttribute.value = ses_servers[3];
        //if (!IsNull(addressProperty) && !isIntranet) addressProperty.value = addressPropPath + "_QA";
      }
      //prod
      else if (hostname.indexOf("sn83") > -1 ) {
        actionAttribute.value = ses_servers[4];
        //if (!IsNull(addressProperty) && !isIntranet) addressProperty.value = addressPropPath + "_PROD";
      }
      else {
        actionAttribute.value = ses_servers[4];
        //if (!IsNull(addressProperty) && !isIntranet) addressProperty.value = addressPropPath + "_PROD";
      }
    }
    	
	}


	
function getValidationParms() {
	var returnVar = null;
	var searchstr = unescape(location.search.substr(1));
	var start = 0;
	var finished = 0;
	while (finished == 0) {
		var parmBreak = searchstr.indexOf("&");
	 if (parmBreak > 0) {
	   returnVar = searchstr.substr(start,parmBreak);
	   processParm(returnVar);
	   searchstr = searchstr.substr(parmBreak+1,searchstr.length-parmBreak);
	 } else {
	   // if no more & then finish
	   returnVar = searchstr.substr(start,searchstr.length);
	   processParm(returnVar);
	   finished = 1;
	 }
 }
 loader.populateErrors(errors);
 if(findObj("ses_fail_redirect_url")) rebuildRedirects();
}

function processParm(parm) {
errorField = parm.indexOf("error_");
if (errorField >= 0) {
  field_in_error = parm.substring(parm.indexOf("_")+1,parm.indexOf("="));		
  field_in_error_value = parm.substring(parm.indexOf("=")+1);
  if (field_in_error_value == "y") {  
errors.push(field_in_error);
  }
} else {
  field_name = parm.substring(0,parm.indexOf("="));
  field_name_value = parm.substring(parm.indexOf("=")+1);
  loader.populateValues(field_name,field_name_value);  
}
}
		
  
function IsNull(n) {
	return (typeof(n) == 'undefined' || n == null);
}