var inProgress = false;
var validateErrors = false;
var formValidationFail = "Please ensure information in all required fields is entered correctly.";
var serverFail = "An error occurred while submitting your information to the server. Please try again later.";
var emailSuccess = "Thank you, the email to your friend was successfully sent.";
var feedbackSuccess = "Thank you, your feedback has been successfully sent.";
var emailRegEx = /(^[a-zA-Z0-9'_]+([-+.][a-zA-Z0-9'_]+)*@[a-zA-Z0-9'_]+([-.][a-zA-Z0-9'_]+)*\.[a-zA-Z0-9'_]+([-.][a-zA-Z0-9'_]+)*$)/;  

$(document).ready(function() {
  bindEvents();
});

function bindEvents() {
  $("ul#navigation li div").click(function() {
    showPanel($(this).parent().attr("id"));    
  }).hover(function() {
    $(this).addClass("hover");
  }, function() {
    $(this).removeClass("hover");
  });
  
  $("#emailsend").click(function() { if(inProgress!=true) { prepareEmail(); } } );   
  $("#feedbacksend").click(function() { if(inProgress!=true) { prepareFeedback(); } } );   
  $("h2").click(function() { window.location="http://reuters.com"; } );
}

function showPanel(itemSelected) {
  $("ul#navigation li:not(#"+itemSelected+") div.selected").removeClass("selected");
  $("#panel .panelitem:not(#"+itemSelected+"panel)").hide();
  $("#panel div#"+itemSelected+"panel:hidden").show();
  $("#"+itemSelected+" div").addClass("selected");
}

function prepareEmail() {  
  if(validateForm("emailform")!=false) {
    $("#emailerror").hide();
    inProgress=true;
    $("div:visible .throbber").show();
    $("#emailform").fadeTo(300, 0.4);
    setTimeout(sendEmail, 1000);
  } else {   
    $("#emailerror").text(formValidationFail).show();
  }  
}

function prepareFeedback() {  
  if(validateForm("feedbackform")!=false) {
    $("#feedbackerror").hide();
    inProgress=true;
    $("div:visible .throbber").show();
    $("#feedbackform").fadeTo(300, 0.4);
    setTimeout(sendFeedback, 1000);
  } else {   
    $("#feedbackerror").text(formValidationFail).show();
  }  
}

function validateForm(container) {
  validateErrors = false;
  if($("#"+container+" input[value=''].validate-required:visible").size()!=0) { validateErrors = true; }  
  $("#"+container+" input.validate-email:visible").each(function() {
    if(!emailRegEx.test($(this).val())) { validateErrors = true; }     
  });    
  if(validateErrors==true) { return false; } else { return true; }
}

function sendEmail() {
  $.ajax({type:"GET", url:"sendtoafriend.aspx", data:$("form.email").serialize(), cache:false, timeout:10000,
    success: function(text) { 
      if(text=="1") {
        $("#emailerror").text(emailSuccess).show();
      } else {
        $("#emailerror").text(serverFail).show();
      }      
    },
    error: function() { $("#emailerror").text(serverFail).show(); },
    complete: function() { 
      inProgress = false;
      $(".throbber").hide();
      $("#emailform").fadeTo(300, 1);
    }
  }); 
}

function sendFeedback() {
  $.ajax({type:"GET", url:"sendfeedback.aspx", data:$("form.feedback").serialize(), cache:false, timeout:10000,
    success: function(text) { 
      if(text=="1") {
        $("#feedbackerror").text(feedbackSuccess).show();
      } else {
        $("#feedbackerror").text(serverFail).show();
      }      
    },
    error: function() { $("#feedbackerror").text(serverFail).show(); },
    complete: function() { 
      inProgress = false;
      $(".throbber").hide();
      $("#feedbackform").fadeTo(300, 1);
    }
  }); 
}