function gradeAjax()
{
  if($F('student_username_id')=='')
  {alert('Hey fill something in, don\'t make me get out the ruler.'); return false;}
  preGrade();
  new Ajax.Request('/grade/a',
  {
    parameters: $('grade').serialize(true),
    onSuccess: function(transport){
      $raw = transport.responseText || "no response text";
      response = $raw.evalJSON();
      if(response.status != 'success')
      {
        postGrade();
        $('question_mark').appear({ queue: 'end' });
    	alert(response.msg);
      }
      else
      {
        $('token_id').setValue(response.token);
        gradeResult(response);
        postGrade();
	  }
	},
    onFailure: function(){ alert('Something went wrong... Ah geeze!  Probably our fault.  Go ahead and refresh this page and you should be good to go.  Thanks, tg'); postGrade(); }
  });
}

function preGrade()
{
  if($('grade_result_s').visible())
  {
      //$('grade_result_s').fade({ duration: 0.1, queue: 'front' });
	  $('grade_result_s').hide();
  }
  $('question_mark').hide();
  $('grading').appear();
  $('student_card').fade();
  $('grade_input_button').disable();
}

function gradeResult(response)
{
  gp = new Array();
  gp[0]  = '<img src="/images/assets/grades/A.png" alt="A" class="grade_image" /><img src="/images/assets/grades/PLUS.png" alt="+" class="grade_image" />'; // A+
  gp[1]  = '<img src="/images/assets/grades/A.png" alt="A" class="grade_image" />'; // A
  gp[2]  = '<img src="/images/assets/grades/A.png" alt="A" class="grade_image" /><img src="/images/assets/grades/MINUS.png" alt="-" class="grade_image" />'; // A-
  gp[3]  = '<img src="/images/assets/grades/B.png" alt="B" class="grade_image" /><img src="/images/assets/grades/PLUS.png" alt="+" class="grade_image" />'; // B+
  gp[4]  = '<img src="/images/assets/grades/B.png" alt="B" class="grade_image" />'; // B
  gp[5]  = '<img src="/images/assets/grades/B.png" alt="B" class="grade_image" /><img src="/images/assets/grades/MINUS.png" alt="-" class="grade_image" />'; // B-
  gp[6]  = '<img src="/images/assets/grades/C.png" alt="C" class="grade_image" /><img src="/images/assets/grades/PLUS.png" alt="+" class="grade_image" />'; // C+
  gp[7]  = '<img src="/images/assets/grades/C.png" alt="C" class="grade_image" />'; // C
  gp[8]  = '<img src="/images/assets/grades/C.png" alt="C" class="grade_image" /><img src="/images/assets/grades/MINUS.png" alt="-" class="grade_image" />'; // C-
  gp[9]  = '<img src="/images/assets/grades/D.png" alt="D" class="grade_image" /><img src="/images/assets/grades/PLUS.png" alt="+" class="grade_image" />'; // D+
  gp[10] = '<img src="/images/assets/grades/D.png" alt="D" class="grade_image" />'; // D
  gp[11] = '<img src="/images/assets/grades/D.png" alt="D" class="grade_image" /><img src="/images/assets/grades/MINUS.png" alt="-" class="grade_image" />'; // D-
  gp[12] = '<img src="/images/assets/grades/F.png" alt="F" class="grade_image" />'; // F
  gp[13] = '<img src="/images/assets/grades/I.png" alt="I" class="grade_image" />'; // I
  url_grade = new Array();
  url_grade[0] = 'A%2B';
  url_grade[1] = 'A';
  url_grade[2] = 'A-';
  url_grade[3] = 'B%2B';
  url_grade[4] = 'B';
  url_grade[5] = 'B-';
  url_grade[6] = 'C%2B';
  url_grade[7] = 'C';
  url_grade[8] = 'C-';
  url_grade[9] = 'D%2B';
  url_grade[10] = 'D';
  url_grade[11] = 'D-';
  url_grade[12] = 'F';
  url_grade[13] = 'I';
  
  if(response.grade == 13)
  {
    $('explanation').hide();
    $('explanation_incomplete').show();
  }
  else
  {
    $('explanation').show();
    $('explanation_incomplete').hide();  
  }
  
  $('main_grade_right').fade({ queue: 'front' });
  
  $('grade_result_s').update(gp[response.grade]);
  $('grade_result_s').appear({ duration: 1.0, queue: 'end' });
  
  $('student_name_and_picture').update('<img src="'+response.profile_image_url+'" alt="" class="middle med" /><span id="student_username"><a href="http://twitter.com/'+response.username+'">'+response.username+'</a></span>');
  $('grade_sentence').update(response.grade_sentence);
  
  $('tweet_this').update('<div id="tweet_this_box">@'+response.username+' has earned a #TweetGrade of '+response.letter_grade+'. http://tweetgrade.com/'+response.username+'</div>');
  $('tweet_this').insert('<a href="http://twitter.com/home?status=@'+response.username+' has earned a %23TweetGrade of '+url_grade[response.grade]+'. http://tweetgrade.com/'+response.username+'"><img src="/images/assets/TweetThis_2.gif" alt="Tweet This" /></a>');
 
  $('student_card').appear({ duration: 2.0, queue: 'end' });
}

function postGrade()
{
  $('grading').fade({queue: 'front'});
  $('grade_input_button').enable();
}

function gradeThis(s0)
{
  Effect.ScrollTo('main_grade');
  $('student_username_id').setValue(s0);
  gradeAjax();
}

function randUsername(){
  $('student_username_id').clear();
  $('clear_button').hide();
  $('ajax_loading').show();
  new Ajax.Request('/grade/random',{
    onSuccess: function(transport){
      var response = transport.responseText || "no response text";
      $('student_username_id').setValue(response);
      $('ajax_loading').hide();
      $('clear_button').show();
	},
    onFailure: function(){ 
		  $('ajax_loading').hide();
		  $('clear_button').show();
		  $('student_username_id').clear();
		  alert('Something went wrong...It\'s probably not your fault.');
    }
  });
}

function clearStudent()
{
  $('student_username_id').clear();
}