/*
	Quick single purpose script. To send data to EA Newswleter provider 
	Author: Vance Dubbelry vance@ff0000.com
	
	Configuration:
	This will most likely work by just setting the domain correctly.
	The path may need to be set but it matches what was in the API docs.	
*/

var domain = 'ajaxservlet!index';
var path = '';

//Do not edit below


var query = '';
var error_message = ""

// Error cases taken from newsletter api documentation

errors = {}
errors['emailAddress'] = {}
errors['emailAddress']['EMAIL_ADDRESS_TOO_LONG'] = "The email address is too long. The maximum length is 256 characters."
errors['emailAddress']['INVALID_VALUE'] = "The email address is invalid. It should be a valid, full address, e.g. user@domain.com."
errors['emailAddress']['INVALID_EMAIL_DOMAIN'] = "The domain in the email address does not exist or is not capable of receiving email."
errors['emailAddress']['MISSING_VALUE'] = "An email address was not supplied."
errors['country'] = {}
errors['country']['MISSING_VALUE'] = "A country was not supplied."
errors['country']['INVALID_VALUE"'] = "An invalid country was supplied."
errors['birthDate'] = {}
errors['birthDate']['INVALID_VALUE'] = "The birth date fields were invalid."
errors['birthDate']['MISSING_VALUE'] = "The birth date fields  were not supplied."
errors['birthDate']['TOO_YOUNG'] = "Sorry, you haven't met the criteria for registration."
errors['preferenceName'] = {}
errors['preferenceName']['MISSING_VALUE'] = "The Name parameter was not supplied."



function handle_error(error_doc) {
  console.log(error_doc)
  error_message = "<ul>";
  
  failures =  error_doc.getElementsByTagName('failure');
  console.log(failures)
  for ( var i=0;i<failures.length;i++) {
    field = failures[i].getAttribute('field');
    cause = failures[i].getAttribute('cause');
    error_message += "<li>" + errors[field][cause] + "</li>";
    
    if ( field == 'birthDate') {
      dojo.byId('mm').style.border = "1px solid #d32828";
      dojo.byId('yy').style.border = "1px solid #d32828";
      dojo.byId('dd').style.border = "1px solid #d32828";
    } else {
      dojo.byId(field).style.border = "1px solid #d32828"
    }
    
  }
  
  error_message += "</ul>";
  
  return error_message;
}


// Actual code

function subscribe(e) {
  e.preventDefault();
  dojo.byId('message').style.display = 'none';
  
  setOmniValues('','','subscribeNewsletter','','','',0,'','');
  
  query = "emailAddress=" + dojo.byId('emailAddress').value;
  query += "&preferenceName=" + dojo.byId('preferenceName').value;
  country = dojo.byId('country').options[dojo.byId('country').options.selectedIndex].value;
  query += "&country=" + country;
  birth_date = dojo.byId('yy').value + '-' + dojo.byId('mm').value + '-' + dojo.byId('dd').value;
  query += "&birthDate=" + birth_date;
 
  dojo.xhrGet({
    url: domain+path+'?'+query, 
    timeout: 10000, // "10 seconds"
    handleAs: 'xml',
    load: function(response, ioArgs) {
      
      if (response.getElementsByTagName('failure').length) {
        dojo.byId('message').innerHTML = handle_error(response);
        dojo.byId('message').style.display = 'block';
      } else{
        dojo.byId('message').innerHTML =  "<ul><li>You have been signed up.</li></ul>";
        dojo.byId('message').style.display = 'block';
      }
    },
    error: function(response, ioArgs) {
      dojo.byId('message').innerHTML =  "<ul><li>We are sorry but we could not sign you up at this time. Please try again later.</li></ul>";
    }
  });
}

function init(e) {
  console.log("foo")
  dojo.connect(dojo.byId('subscribe_form'), 'onsubmit', subscribe);
}
