
function showOverlay() {
  $("#overlay").show().fadeTo('medium', 0.5).width($(document).width()).height($(document).height());
}

function hideOverlay() {
  $("#overlay").fadeTo('medium', 0.0, function() { $(this).hide(); });
}

function slideOutMailingListForm() {
  $("#mailing_list_form").css("position", "absolute").hide("slide", { direction: "left" }, 1000);
  var origHeight = $("#mailing_list_signed_up").invisiheight();
  $("#mailing_list_signed_up").height($("#mailing_list_form").height());
  $("#mailing_list_signed_up").show("slide", { direction: "right" }, 1000);
  $("#mailing_list_signed_up").animate({ height: origHeight }, 1000);
}

$(document).ready(function() {
  // Past Winners Years Styling/Functionality
  $(".past_winners_years").children(":first").addClass("first");
  $(".past_winners_years").children(":last").addClass("last");
  $(".past_winners_years").children().click(function() {
    var year = $(this).text();
    $(".past_winners_sections").children().hide().filter("." + year + "_winners").show();
    $(".past_winners_years").children().removeClass("active");
    $(this).addClass("active");
    return false;
  });
  
  // Past Winners Category List Functionality
  $(".past_winners_sections h3").click(function() {
    var $li = $(this).closest("li");
    var $mySectionData = $li.find(".section_data");
    if($mySectionData.is(".visible")) {
      $mySectionData.removeClass("visible");
      $mySectionData.slideUp('medium');
    }
    else {
      $mySectionData.addClass("visible");
      $mySectionData.slideDown('medium');
    }
    return false;
  });
  
  // input examples
  $(".name_pair .field_input").example("John Doe Jr.");
  $(".address_pair .address").example("123 Main St");
  $(".address_pair .city").example("Somewhereville");
  $(".address_pair .zip").example("12345");
  $(".email_pair .field_input").example("email@address.com");
  $(".phone_pair .field_input").example("555-123-4567 x890");
  //$(".title_pair .field_input").example("CEO");
  //$(".company_pair .field_input").example("Madeup Industries");
  $("[name=convicted_explanation]").example("If yes, please explain");
  $("[name=awaiting_trial_explanation]").example("If yes, please explain");
  $("[name=advanced_degrees]").example("List advanced degrees, institution(s), and degree field(s)");

  $("#nomination_contact_info [name=name]").example("John Doe");
  $("#nomination_contact_info [name=phone]").example("555-555-5555");
  $("#nomination_contact_info [name=email]").example("john.doe@email.com");
  $("#nomination_contact_info [name=message]").example("How can we help you?");
  
  $("select, input:checkbox, input:radio, input:file").uniform({  });
  
  // overlay init/binding
  $(window).resize(function() {
    if($("#overlay").is(":visible")) {
      showOverlay();
    }
  });
  $("#overlay").fadeTo(0,0).hide();
	
	$('.popup .close').live("click", function(){
    var $popup = $(this).closest(".popup");
    var finalWidth = $popup.width();
    $popup.removeClass("open");
    hideOverlay();
    $popup.fadeOut();
    return false;
	});
  $(".popup").draggable({ handle: ".head" });
  $(".contact_more_info").click(function() {
    showOverlay();
    $("#nomination_contact_info").css({ left: $(document).width() / 2 - parseInt($("#nomination_contact_info").css("width")) / 2, top: $(window).scrollTop() + 200 }).fadeIn();
    return false;
  });
  $(".join_our_list").click(function() {
    showOverlay();
    $("#popup_mailing_list_signup").css({ left: $(document).width() / 2 - parseInt($("#popup_mailing_list_signup").css("width")) / 2, top: $(window).scrollTop() + 200 }).fadeIn();
    return false;
  });
  
  $("#contact_us").submit(function() {
    var $name = $(this).find("[name=name]");
    var $email = $(this).find("[name=email]");
    var $message = $(this).find("[name=message]");
    var error = "";
    if($name.val() == "") {
      error += "Please enter your name.\n";
    }
    if($email.val() == "") {
      error += "Please enter your email address.\n";
    }
    else if(!$email.val().match(/^\s*[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\s*$/i)) {
      error += "Please enter a valid email address.\n";
    }
    if($message.val() == "") {
      error += "Please enter a message.\n";
    }
    if(error != "") {
      alert(error);
      return false;
    }
    $.post("/ajax/contact_us.php", {
      name: $name.val(),
      email: $email.val(),
      message: $message.val()
    }, function(json) {
      json = eval("(" + json + ")");
      if(json.success) {
        alert("Thank you for contacting us. Your message has been sent and we will respond promptly.");
        $("#contact_us")[0].reset();
        $("#contact_us").find("input, textarea").blur();
      }
      else {
        alert("There was a problem submitting the contact form: " + json.error + ". Please call or send an e-mail for support.");
      }
    });
    return false;
  });
  
  $("#nomination_contact_info").submit(function() {
    var $name = $(this).find("[name=name]");
    var $email = $(this).find("[name=email]");
    var $phone = $(this).find("[name=phone]");
    var $message = $(this).find("[name=message]");
    var error = "";
    if($name.val() == "") {
      error += "Please enter your name.\n";
    }
    if($email.val() == "") {
      error += "Please enter your email address.\n";
    }
    if($phone.val() == "") {
      error += "Please enter your phone number.\n";
    }
    else if(!$phone.val().match(/[\d\-\s]/)) {
      error += "Please enter a valid phone number.";
    }
    else if(!$email.val().match(/^\s*[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\s*$/i)) {
      error += "Please enter a valid email address.\n";
    }
    if($message.val() == "") {
      error += "Please enter a message.\n";
    }
    if(error != "") {
      alert(error);
      return false;
    }
    $.post("/ajax/contact_more_info.php", {
      name: $name.val(),
      email: $email.val(),
      message: $message.val(),
      phone: $phone.val()
    }, function(json) {
      json = eval("(" + json + ")");
      if(json.success) {
        alert("Thank you for contacting us. Your message has been sent and we will respond promptly.");
        $("#nomination_contact_info")[0].reset();
        $("#nomination_contact_info").find("input, textarea").blur();
      }
      else {
        alert("There was a problem submitting the contact form: " + json.error + ". Please call or send an e-mail for support.");
      }
    });
    return false;
  });
  
  $("#nomination_form").submit(function() {
    var $form = $(this);
    var $industry = $form.find("[name=industry]");
    var $cName = $form.find("[name=candidate_name]");
    var $cAddress = $form.find("[name=candidate_address]");
    var $cCity = $form.find("[name=candidate_city]");
    var $cState = $form.find("[name=candidate_state]");
    var $cZip = $form.find("[name=candidate_zip]");
    var $cEmail = $form.find("[name=candidate_email]");
    var $cPhone = $form.find("[name=candidate_phone]");
    var $cTitle = $form.find("[name=candidate_title]");
    var $cCompany = $form.find("[name=candidate_company]");
    var $cCounty = $form.find("[name=candidate_county]");
    var $age = $form.find("[name=age]");
    var $birthDate = $form.find("[name=birthdate]");
    var $college = $form.find("[name=college]");
    var $degree = $form.find("[name=degree]");
    var $advancedDegrees = $form.find("[name=advanced_degrees]");
    var $greatestAccomplishments = $form.find("[name=greatest_accomplishments]");
    var $communityWork = $form.find("[name=work_community]");
    var $leadershipQualities = $form.find("[name=leadership_qualities]");
    var $character = $form.find("[name=character]");
    var $convicted = $form.find("[name=convicted]");
    var $convictedExplanation = $form.find("[name=convicted_explanation]");
    var $awaitingTrial = $form.find("[name=awaiting_trial]");
    var $awaitingTrialExplanation = $form.find("[name=awaiting_trial_explanation]");
    var $nName = $form.find("[name=nominator_name]");
    var $nTitle = $form.find("[name=nominator_title]");
    var $nCompany = $form.find("[name=nominator_company]");
    var $nEmail = $form.find("[name=nominator_email]");
    var $nAddress = $form.find("[name=nominator_address]");
    var $nAddress = $form.find("[name=nominator_address]");
    var $nCity = $form.find("[name=nominator_city]");
    var $nState = $form.find("[name=nominator_state]");
    var $nZip = $form.find("[name=nominator_zip]");
    var $nPhone = $form.find("[name=nominator_phone]");
    var error = false;
    
    if($industry.val() == "") {
      $industry.closest(".field_pair").addClass("error");
      error = true;
    }
    else {
      $industry.closest(".field_pair").removeClass("error");
    }
    if($cName.val() == "") {
      $cName.closest(".field_pair").addClass("error");
      error = true;
    }
    else {
      $cName.closest(".field_pair").removeClass("error");
    }
    if($cAddress.val() == "" || $cCity.val() == "" || $cState.val() == "" || $cZip.val() == "" || !$cZip.val().match(/^\d+$/)) {
      $cAddress.closest(".field_pair").addClass("error");
      error = true;
    }
    else {
      $cAddress.closest(".field_pair").removeClass("error");
    }
    if($cEmail.val() == "" || !$cEmail.val().match(/^\s*[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\s*$/i)) {
      $cEmail.closest(".field_pair").addClass("error");
      error = true;
    }
    else {
      $cEmail.closest(".field_pair").removeClass("error");
    }
    if($cPhone.val() == "") {
      $cPhone.closest(".field_pair").addClass("error");
      error = true;
    }
    else {
      $cPhone.closest(".field_pair").removeClass("error");
    }
    if($cTitle.val() == "") {
      $cTitle.closest(".field_pair").addClass("error");
      error = true;
    }
    else {
      $cTitle.closest(".field_pair").removeClass("error");
    }
    if($cCompany.val() == "") {
      $cCompany.closest(".field_pair").addClass("error");
      error = true;
    }
    else {
      $cCompany.closest(".field_pair").removeClass("error");
    }
    if($cCounty.val() == "") {
      $cCounty.closest(".field_pair").addClass("error");
      error = true;
    }
    else {
      $cCounty.closest(".field_pair").removeClass("error");
    }
    if($age.val() == "" || !$age.val().match(/^\d+$/)) {
      $age.closest(".field_pair").addClass("error");
      error = true;
    }
    else {
      $age.closest(".field_pair").removeClass("error");
    }
    if($birthDate.val() == "") {
      $birthDate.closest(".field_pair").addClass("error");
      error = true;
    }
    else {
      $birthDate.closest(".field_pair").removeClass("error");
    }
    if($college.val() == "") {
      $college.closest(".field_pair").addClass("error");
      error = true;
    }
    else {
      $college.closest(".field_pair").removeClass("error");
    }
    if($degree.val() == "") {
      $degree.closest(".field_pair").addClass("error");
      error = true;
    }
    else {
      $degree.closest(".field_pair").removeClass("error");
    }
    if($greatestAccomplishments.val() == "") {
      $greatestAccomplishments.closest(".field_pair").addClass("error");
      error = true;
    }
    else {
      $greatestAccomplishments.closest(".field_pair").removeClass("error");
    }
    if($communityWork.val() == "") {
      $communityWork.closest(".field_pair").addClass("error");
      error = true;
    }
    else {
      $communityWork.closest(".field_pair").removeClass("error");
    }
    if($leadershipQualities.val() == "") {
      $leadershipQualities.closest(".field_pair").addClass("error");
      error = true;
    }
    else {
      $leadershipQualities.closest(".field_pair").removeClass("error");
    }
    if($character.val() == "") {
      $character.closest(".field_pair").addClass("error");
      error = true;
    }
    else {
      $character.closest(".field_pair").removeClass("error");
    }
    if($convicted.val() == "" || ($convicted.val() == "yes" && $convictedExplanation.val() == "")) {
      $convicted.closest(".field_pair").addClass("error");
      error = true;
    }
    else {
      $convicted.closest(".field_pair").removeClass("error");
    }
    if($awaitingTrial.val() == "" || ($awaitingTrial.val() == "yes" && $awaitingTrialExplanation.val() == "")) {
      $awaitingTrial.closest(".field_pair").addClass("error");
      error = true;
    }
    else {
      $awaitingTrial.closest(".field_pair").removeClass("error");
    }
    if($nName.val() == "") {
      $nName.closest(".field_pair").addClass("error");
      error = true;
    }
    else {
      $nName.closest(".field_pair").removeClass("error");
    }
    if($nAddress.val() == "" || $nCity.val() == "" || $nState.val() == "" || $nZip.val() == "") {
      $nAddress.closest(".field_pair").addClass("error");
      error = true;
    }
    else {
      $nAddress.closest(".field_pair").removeClass("error");
    }
    if($nEmail.val() == "" || !$nEmail.val().match(/^\s*[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\s*$/i)) {
      $nEmail.closest(".field_pair").addClass("error");
      error = true;
    }
    else {
      $nEmail.closest(".field_pair").removeClass("error");
    }
    if($nPhone.val() == "") {
      $nPhone.closest(".field_pair").addClass("error");
      error = true;
    }
    else {
      $nPhone.closest(".field_pair").removeClass("error");
    }
    if($nTitle.val() == "") {
      $nTitle.closest(".field_pair").addClass("error");
      error = true;
    }
    else {
      $nTitle.closest(".field_pair").removeClass("error");
    }
    if($nCompany.val() == "") {
      $nCompany.closest(".field_pair").addClass("error");
      error = true;
    }
    else {
      $nCompany.closest(".field_pair").removeClass("error");
    }
    
    if(error) {
      alert("There are errors in the form. Please review any section with red labels above, then submit again.");
      $form.find("input, textarea").blur();
      return false;
    }

    $.post("/ajax/nominate.php", {
      industry: $industry.val(),
      c_name: $cName.val(),
      c_address: $cAddress.val(),
      c_city: $cCity.val(),
      c_state: $cState.val(),
      c_zip: $cZip.val(),
      c_email: $cEmail.val(),
      c_phone: $cPhone.val(),
      c_title: $cTitle.val(),
      c_company: $cCompany.val(),
      c_county: $cCounty.val(),
      age: $age.val(),
      birthdate: $birthDate.val(),
      college: $college.val(),
      degree: $degree.val(),
      advanced_degrees: $advancedDegrees.val(),
      greatest_accomplishments: $greatestAccomplishments.val(),
      work_community: $communityWork.val(),
      leadership_qualities: $leadershipQualities.val(),
      character: $character.val(),
      convicted: $convicted.val(),
      convicted_explanation: $convictedExplanation.val(),
      awaiting_trial: $awaitingTrial.val(),
      awaiting_trial_explanation: $awaitingTrialExplanation.val(),
      n_name: $nName.val(),
      n_address: $nAddress.val(),
      n_city: $nCity.val(),
      n_state: $nState.val(),
      n_zip: $nZip.val(),
      n_email: $nEmail.val(),
      n_phone: $nPhone.val(),
      n_title: $nTitle.val(),
      n_company: $nCompany.val()
    }, function(json) {
      json = eval("(" + json + ")");
      if(json.success) {
        alert("Thank you for nominating " + $cName.val() + ". Your nomination has been sent and we will review it promptly.");
        $form[0].reset();
        $form.find("input, textarea").blur();
      }
      else {
        alert("There was a problem submitting the nomination form: " + json.error + ". Please call or send an e-mail for support.");
      }
    });
    return false;
  });
  
  $("form .submit").click(function() {
    $(this).closest("form").submit();
    return false;
  });
  
  $("#mailing_list_form").submit(function() {
    var $form = $(this);
    var $name = $(this).find("[name=name]");
    var $email = $(this).find("[name=email]");
    var error = "";
    
    if($name.val() == "") {
      error += "Please enter your name.\n";
    }
    if($email.val() == "") {
      error += "Please enter your email address.\n";
    }
    else if(!$email.val().match(/^\s*[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\s*$/i)) {
      error += "Please enter a valid email address.\n";
    }
    
    if(error != "") {
      alert(error);
      return false;
    }
    
    $.post("/ajax/list_signup.php", { name: $name.val(), email: $email.val() }, function(json) {
      json = eval("(" + json + ")");
      if(json.success) {
        slideOutMailingListForm();
      }
      else {
        alert(json.error);
      }
    });
    return false;
  });
  
  $("#popup_mailing_list_form").submit(function() {
    var $form = $(this);
    var $name = $(this).find("[name=name]");
    var $email = $(this).find("[name=email]");
    var error = "";
    
    if($name.val() == "") {
      error += "Please enter your name.\n";
    }
    if($email.val() == "") {
      error += "Please enter your email address.\n";
    }
    else if(!$email.val().match(/^\s*[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\s*$/i)) {
      error += "Please enter a valid email address.\n";
    }
    
    if(error != "") {
      alert(error);
      return false;
    }
    
    $.post("/ajax/list_signup.php", { name: $name.val(), email: $email.val() }, function(json) {
      json = eval("(" + json + ")");
      if(json.success) {
        alert("Thank you for signing up for our mailing list!");
        $form.closest(".popup").find(".close").trigger("click");
      }
      else {
        alert(json.error);
      }
    });
    return false;
  });
});

jQuery.jQueryRandom = 0;
jQuery.extend(jQuery.expr[":"],
{
    random: function(a, i, m, r) {
        if (i == 0) {
            jQuery.jQueryRandom = Math.floor(Math.random() * r.length);
        };
        return i == jQuery.jQueryRandom;
    }
});

jQuery.fn.freeze = function(options) {
  $(this).each(function() {
    var $e = $(this);
    $.data(this, "frozen", true);
    $.data(this, "oldTop", $e.css("top"));
    $.data(this, "oldLeft", $e.css("left"));
    $.data(this, "oldRight", $e.css("right"));
    $.data(this, "oldBottom", $e.css("bottom"));
    $.data(this, "oldPosition", $e.css("position"));
    var x = $e.offset().left - $e.parent().offset().left;
    var y = $e.offset().top - $e.parent().offset().top;
    $e.css({ bottom: "auto", left: x, position: "absolute", right: "auto", top: y });
  });
}

jQuery.fn.thaw = function(options) {
  $(this).each(function() {
    var $e = $(this);
    if($.data(this, "frozen") == true) {
      $e.css({ bottom: $.data(this, "oldBottom"), left: $.data(this, "oldLeft"), position: $.data(this, "oldPosition"), right: $.data(this, "oldRight"), top: $.data(this, "oldTop") });
    }
  });
}
  
function nextSponsors() {
  var $sponsorRows = $("#sponsors table>tbody>tr");
  var $active = $sponsorRows.filter(".active");
  var $next = null;
  if($active[0] == $sponsorRows.filter(":last")[0]) {
    $next = $sponsorRows.eq(0);
  }
  else {
    $next = $active.next();
  }
  $active.fadeOut(500, function() { $(this).removeClass("active"); });
  setTimeout(function() {
    $next.fadeIn(1500, function() { $(this).addClass("active"); });
  }, 500);
  setTimeout(nextSponsors, 5000);
}

$(window).load(function() {
  var $activeMenuItem = $("#header .menu .active");
  var $menuHelper = $("<div class='menu_helper'>&nbsp;</div>");
  $("#header").prepend($menuHelper);
  $("#header .menu").ready(function() {
    $menuHelper.css({
      left: $activeMenuItem.offset().left - parseInt($menuHelper.css("padding-left")),
      top: $activeMenuItem.offset().top - parseInt($menuHelper.css("padding-top")),
      width: $activeMenuItem.width()
    });
  });
  
  function repositionMenuHelper($menuItem) {
    $menuItem.closest(".menu").find("a").not($menuItem[0]).removeClass("metal");
    $menuHelper.stop().animate({ left: $menuItem.offset().left - parseInt($menuHelper.css("padding-left")), width: $menuItem.width() }, 250, 'linear', function() {
      $menuItem.addClass("metal");
    });
  }
  $("#header .menu li a").mouseover(function() {
    repositionMenuHelper($(this));
  }).mouseout(function() { return false; });
  $("#header .menu").mouseout(function() {
    repositionMenuHelper($("#header .menu .active"));
  });
  
  //$("#sponsors tr").not(".active").hide();
  //setTimeout(nextSponsors, 5000);
  
  $(".sponsor_list ul").carouFredSel({
    items: 3,
    scroll: {
      duration: 1500,
      easing: 'swing'
    },
    auto: {
      pauseDuration: 4000
    }
  });
});

