var careersCallback = {

  success: function(o) {

    //alert(o.responseText);

  	try {
      var response = YAHOO.lang.JSON.parse(o.responseText);
    } catch (e) { 
      alert("Error: No response from server. Please try again later."); 
    } 

    var status = response.status;
    var roles = response.roles;

    if(status=="success") {
    
      //var output = "<select id=\"careersProfession\" name=\"data[Careers][roleId]\" class=\"ltrlDropdown\"><option value=\"\">Choose a profession...</option>";
	  var output = "<select id=\"careersProfession\" name=\"careersProfession\" class=\"marginTop15 ltrlDropdown\"><option value=\"\">Choose a profession...</option>";
      for (var key in roles) {
        output += "<option value=\"" + roles[key]['id'] + "\">" + roles[key]['role'] + "</option>\n";
      }
      output += "</select>";

      document.getElementById('careers-form-profession').innerHTML = output;
      document.getElementById('careersProfession').focus();
    } else {
      document.getElementById('careers-form-profession').innerHTML = "";
    }


  },
  
  failure: function(o) {
    alert("AJAX Failure");
  }
  
} 

function careersGetRoles(o){
  if( o.value!=null || o.value!="" ){
    var sUrl = "/careers/fetchRolesForIndustry/" + o.value;
    var careersFormElement = YAHOO.util.Connect.asyncRequest('GET', sUrl, careersCallback, null);
  } else {
    document.getElementById('careers-form-profession').innerHTML = "";
  }
}


function careersClearError(o) {

  if( o.value != null || o.value != "" ){
    var formEl = o;
    var errorEl = document.getElementById(formEl.id + "-error");
    YAHOO.util.Dom.removeClass(formEl, 'form-error');
    YAHOO.util.Dom.setStyle(errorEl, 'display', 'none');
  }

}


function careersShowJobSelectors(o) {

  if( o.value!=null || o.value!="" ){
    var careersStageFormEl = o;
    var careersStageErrorEl = document.getElementById(careersStageFormEl.id + "-error");
    YAHOO.util.Dom.setStyle(careersStageErrorEl, 'display', 'none');
    YAHOO.util.Dom.removeClass(careersStageFormEl, 'form-error');
  }


  if( o.value!=null || o.value!="" ){
    var careersStageFormEl = o;
    var careersStageErrorEl = document.getElementById(careersStageFormEl.id + "-error");
    YAHOO.util.Dom.setStyle(careersStageErrorEl, 'display', 'none');
    YAHOO.util.Dom.removeClass(careersStageFormEl, 'careers-error');
  }

  var showJobBlock = true;
  if (o.value == null || o.value == '' || nonMandatoryIndustryStages.inArray(parseInt(o.value)))
  {
    showJobBlock = false;
  }
  
  if( !showJobBlock ){
    document.getElementById('careers-form-job-fields').style.display = "none";
  } else {
    document.getElementById('careers-form-job-fields').style.display = "block";
    document.getElementById('careersIndustry').focus();
  }
  
}

function careersRegFormValidation(o) {

  /* Email Address Check */
  if (o.careersUserEmail) {
    var error = false;
    var errorMessage = "";
    var emailFormEl = o.careersUserEmail;
    var emailErrorEl = document.getElementById(emailFormEl.id + "-error")

    if ( emailFormEl.value==null || emailFormEl.value=="" ) {
      errorMessage = "Please enter an email address";
      error = true;
    } else {
      var filter = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
      if ( filter.test(emailFormEl.value) == false ){
        errorMessage = "Please enter a valid email address";
        error = true;
      }    
    }
  }

  if (error) {
    emailErrorEl.innerHTML = errorMessage;
    YAHOO.util.Dom.setStyle(emailErrorEl, 'display', 'block');
    YAHOO.util.Dom.addClass(emailFormEl, 'form-error');
    emailFormEl.focus();
    return false;  
  } else {
    YAHOO.util.Dom.setStyle(emailErrorEl, 'display', 'none');
    YAHOO.util.Dom.removeClass(emailFormEl, 'form-error');
  }

  /* Education Level Check */
  
  if (o.careersEducation) {
    var error = false;
    var errorMessage = "";
    var careersEducationFormEl = o.careersEducation;
    var careersEducationErrorEl = document.getElementById(careersEducationFormEl.id + "-error")
  
    if ( careersEducationFormEl.value==null || careersEducationFormEl.value=="" ){
      errorMessage = "Please select an education level";
      error = true;
    }
  }
  
  if (error) {
    careersEducationErrorEl.innerHTML = errorMessage;
    YAHOO.util.Dom.setStyle(careersEducationErrorEl, 'display', 'block');
    YAHOO.util.Dom.addClass(careersEducationFormEl, 'form-error');
    careersEducationFormEl.focus();
    return false;  
  } else {
    YAHOO.util.Dom.setStyle(careersEducationErrorEl, 'display', 'none');
    YAHOO.util.Dom.removeClass(careersEducationFormEl, 'form-error');
  }
  
      
  /* Career Stage Check */
  if (o.careersStage) {
    var error = false;
    var errorMessage = "";
    var careersStageFormEl = o.careersStage;
    var careersStageErrorEl = document.getElementById(careersStageFormEl.id + "-error")
  
    if ( careersStageFormEl.value==null || careersStageFormEl.value=="" ){
      errorMessage = "Please select a career stage";
      error = true;
    }
  }
  
  if (error) {
    careersStageErrorEl.innerHTML = errorMessage;
    YAHOO.util.Dom.setStyle(careersStageErrorEl, 'display', 'block');
    YAHOO.util.Dom.addClass(careersStageFormEl, 'form-error');
    careersStageFormEl.focus();
    return false;  
  } else {
    YAHOO.util.Dom.setStyle(careersStageErrorEl, 'display', 'none');
    YAHOO.util.Dom.removeClass(careersStageFormEl, 'form-error');
  }
  
  /* Check Job Info? */
  var validateJob = true;
  if (o.careersStage)
  {
    var stage = o.careersStage;
    
    if(nonMandatoryIndustryStages.inArray(parseInt(stage.value)))
    {
      validateJob = false;
    }
  }
  
  
  /* Job Info Check */
  if(validateJob){
    var error = false;
    var errorMessage = "";
    var careersIndustryFormEl = o.careersIndustry;
    var careersProfessionFormEl = o.careersProfession;
    var careersIndustryErrorEl = document.getElementById(careersIndustryFormEl.id + "-error")
    
    if ( careersIndustryFormEl.value==null || careersIndustryFormEl.value=="" ){
      errorMessage = "Please select your industry";
      error = true;
      careersIndustryErrorEl.innerHTML = errorMessage;
      YAHOO.util.Dom.setStyle(careersIndustryErrorEl, 'display', 'block');
      YAHOO.util.Dom.addClass(careersIndustryFormEl, 'form-error');
      careersIndustryFormEl.focus();
      return false;
    }
    
    if ( careersProfessionFormEl.value==null || careersProfessionFormEl.value=="" ){
      errorMessage = "Please select your profession";
      error = true;
      careersIndustryErrorEl.innerHTML = errorMessage;
      YAHOO.util.Dom.setStyle(careersIndustryErrorEl, 'display', 'block');
      YAHOO.util.Dom.addClass(careersProfessionFormEl, 'form-error');
      careersProfessionFormEl.focus();
      return false;
    }
    
    if(!error){
      YAHOO.util.Dom.setStyle(careersIndustryErrorEl, 'display', 'none');
      YAHOO.util.Dom.removeClass(careersIndustryFormEl, 'form-error');
      YAHOO.util.Dom.removeClass(careersProfessionFormEl, 'form-error');
    }
    
  }
}