// no conflicts with other frameworks
var $j = jQuery.noConflict();

//
// window.onload function to setup various javascripts
//


/*****************************************************************************************
 *
 *                           General helper functions
 *
 *****************************************************************************************/

/**
 * Extend the String object so that we can use the trim() function like; sVar.trim();
 *
 *     var first_name = "Chris ";
 *     first_name = first_name.trim();
 *
 * @return string
 */
String.prototype.trim = function() {
  var a = this.replace(/^\s+/, '');
  return a.replace(/\s+$/, '');
};

/**
 * Write an email address to the screen. Helps so that bots can't parse email addresses from the site.
 *
 *     writeEmail("info", "info", "churchmedia.cc");
 *
 * @param string
 * @param string
 * @param string
 */
function writeEmail(contact, email, emailHost) {
  document.write("<a href=" + "&#109a&#105l" + "&#116&#111:" + email + "@" + emailHost+ ">" + contact + "@" + emailHost+"</a>");
}

/**
 * Pop up window in a certain size and no scrollbar.
 */
function pop(url, name, props) {
	window.open(url, name, props);
}




/*****************************************************************************************
 *
 *                    Functions for forms - highlight error fields
 *
 *****************************************************************************************/
function removeErrorClass(control_id) {
  $j('#'+control_id).parent().parent().removeClass('error');
  return true;
}
function addError(control_id) {
  $j('#'+control_id).select().focus();
  $j('#'+control_id).parent().parent().addClass('error');
  return true;
}




/*****************************************************************************************
 *
 *                             Functions for form validation
 *
 *****************************************************************************************/

// Validate Contact Us Form
function validate_contact_us_form() {
  //Form validation
  var bError = false;
  if ($j('#first_name').val() == '') { addError('first_name'); bError = true; } else { removeErrorClass('first_name'); }
  if ($j('#last_name').val() == '') { addError('last_name'); bError = true; } else { removeErrorClass('last_name'); }

  var sEmail = $j('#email').val();
  if (sEmail == '' || !sEmail.match(/^\b[A-Z0-9._%+-]+@(?:[A-Z0-9\-]+\.)+[A-Z]{2,4}\b$/i)) { addError('email'); bError = true; } else { removeErrorClass('email'); }

  if ($j('#comments').val() == '') { addError('comments'); bError = true; } else { removeErrorClass('comments'); }
  if ($j('#security_code').val() == '') { addError('security_code'); bError = true; } else { removeErrorClass('security_code'); }

  if (bError == true) {
    alert ("Please correct the highlighted fields.");
    return false;
  }
  else {
    return true;
  }
}

// Validate Join Form
function validate_join_form() {
  //Form validation
  var bError = false;
  if ($j('#first_name').val() == '') { addError('first_name'); bError = true; } else { removeErrorClass('first_name'); }
  if ($j('#last_name').val() == '') { addError('last_name'); bError = true; } else { removeErrorClass('last_name'); }
  if ($j('#church_name').val() == '') { addError('church_name'); bError = true; } else { removeErrorClass('church_name'); }
  if ($j('#your_position').val() == '') { addError('your_position'); bError = true; } else { removeErrorClass('your_position'); }
  if ($j('#weekly_attendance').val() == '') { addError('weekly_attendance'); bError = true; } else { removeErrorClass('weekly_attendance'); }
  if ($j('#address').val() == '') { addError('address'); bError = true; } else { removeErrorClass('address'); }
  if ($j('#city').val() == '') { addError('city'); bError = true; } else { removeErrorClass('city'); }
  if ($j('#state').val() == '') { addError('state'); bError = true; } else { removeErrorClass('state'); }
  if ($j('#zip').val() == '') { addError('zip'); bError = true; } else { removeErrorClass('zip'); }
  if ($j('#work_phone_1').val() == '') { addError('work_phone_1'); bError = true; } else { removeErrorClass('work_phone_1'); }
  if ($j('#work_phone_2').val() == '') { addError('work_phone_2'); bError = true; } else { removeErrorClass('work_phone_2'); }
  if ($j('#cell_phone').val() == '') { addError('cell_phone'); bError = true; } else { removeErrorClass('cell_phone'); }

  var sEmail = $j('#email').val();
  if (sEmail == '' || !sEmail.match(/^\b[A-Z0-9._%+-]+@(?:[A-Z0-9\-]+\.)+[A-Z]{2,4}\b$/i)) { addError('email'); bError = true; } else { removeErrorClass('email'); }

  if ($j('#security_code').val() == '') { addError('security_code'); bError = true; } else { removeErrorClass('security_code'); }

  if (bError == true) {
    alert ("Please correct the highlighted fields.");
    return false;
  }
  else {
    return true;
  }
}

// Validate Enewsletter Form
function validate_enewsletter_form() {
  //Form validation
  var bError = false;
  if ($j('#enews_first_name').val() == '') { addError('enews_first_name'); bError = true; } else { removeErrorClass('enews_first_name'); }
  if ($j('#enews_last_name').val() == '') { addError('enews_last_name'); bError = true; } else { removeErrorClass('enews_last_name'); }
  if ($j('#enews_zip').val() == '') { addError('enews_zip'); bError = true; } else { removeErrorClass('enews_zip'); }
  
  var sEmail = $j('#enews_email').val();
  if (sEmail == '' || !sEmail.match(/^\b[A-Z0-9._%+-]+@(?:[A-Z0-9\-]+\.)+[A-Z]{2,4}\b$/i)) { addError('enews_email'); bError = true; } else { removeErrorClass('enews_email'); }

  if ($j('#enews_security_code').val() == '') { addError('enews_security_code'); bError = true; } else { removeErrorClass('enews_security_code'); }

  if (bError == true) {
    alert ("Please correct the highlighted fields.");
    return false;
  }
  else {
    return true;
  }
}

// Validate Send 2 Friend form
function validate_send_to_friend_form() {
  //Form validation
  var bError = false;
  if ($j('#stf_name').val() == '') { addError('stf_name'); bError = true; } else { removeErrorClass('stf_name'); }
  var sEmail = $j('#stf_email').val();
  if (sEmail == '' || !sEmail.match(/^\b[A-Z0-9._%+-]+@(?:[A-Z0-9\-]+\.)+[A-Z]{2,4}\b$/i)) { addError('stf_email'); bError = true; } else { removeErrorClass('stf_email'); }
  if ($j('#stf_friend_name_1').val() == '') { addError('stf_friend_name_1'); bError = true; } else { removeErrorClass('stf_friend_name_1'); }
  sEmail = $j('#stf_friend_email_1').val();
  if (sEmail == '' || !sEmail.match(/^\b[A-Z0-9._%+-]+@(?:[A-Z0-9\-]+\.)+[A-Z]{2,4}\b$/i)) { addError('stf_friend_email_1'); bError = true; } else { removeErrorClass('stf_friend_email_1'); }
  if ($j('#stf_friend_name_2').val() !== "") {
    sEmail = $j('#stf_friend_email_2').val();
    if (sEmail == '' || !sEmail.match(/^\b[A-Z0-9._%+-]+@(?:[A-Z0-9\-]+\.)+[A-Z]{2,4}\b$/i)) { addError('stf_friend_email_2'); bError = true; } else { removeErrorClass('stf_friend_email_2'); }
  }

  if ($j('#stf_security_code').val() == '') { addError('stf_security_code'); bError = true; } else { removeErrorClass('stf_security_code'); }

  if (bError == true) {
    alert ("Please correct the highlighted fields.");
    return false;
  }
  else {
    return true;
  }
}


// Validate Prayer Request Form
function validate_prayer_request_form() {
  //Form validation
  var bError = false;
  if ($j('#first_name').val() == '') { addError('first_name'); bError = true; } else { removeErrorClass('first_name'); }
  if ($j('#last_name').val() == '') { addError('last_name'); bError = true; } else { removeErrorClass('last_name'); }

  var sEmail = $j('#email').val();
  if (sEmail == '' || !sEmail.match(/^\b[A-Z0-9._%+-]+@(?:[A-Z0-9\-]+\.)+[A-Z]{2,4}\b$/i)) { addError('email'); bError = true; } else { removeErrorClass('email'); }

  if ($j('#prayer_request').val() == '') { addError('prayer_request'); bError = true; } else { removeErrorClass('prayer_request'); }
  if ($j('#security_code').val() == '') { addError('security_code'); bError = true; } else { removeErrorClass('security_code'); }

  if (bError == true) {
    alert ("Please correct the highlighted fields.");
    return false;
  }
  else {
    return true;
  }
}

// Validate Registration Form
function validate_registration_form() {
  //Form validation
  var bError = false;
  if ($j('#first_name').val() == '') { addError('first_name'); bError = true; } else { removeErrorClass('first_name'); }
  if ($j('#last_name').val() == '') { addError('last_name'); bError = true; } else { removeErrorClass('last_name'); }
  if ($j('#church_name').val() == '') { addError('church_name'); bError = true; } else { removeErrorClass('church_name'); }
  if ($j('#your_position').val() == '') { addError('your_position'); bError = true; } else { removeErrorClass('your_position'); }
  if ($j('#weekly_attendance').val() == '') { addError('weekly_attendance'); bError = true; } else { removeErrorClass('weekly_attendance'); }
  if ($j('#address').val() == '') { addError('address'); bError = true; } else { removeErrorClass('address'); }
  if ($j('#city').val() == '') { addError('city'); bError = true; } else { removeErrorClass('city'); }
  if ($j('#state').val() == '') { addError('state'); bError = true; } else { removeErrorClass('state'); }
  if ($j('#zip').val() == '') { addError('zip'); bError = true; } else { removeErrorClass('zip'); }
  
  // check to see if at least one phone number is filled in
  if ($j('#work_phone').val() == '' && $j('#home_phone').val() == '' && $j('#cell_phone').val() == '') { addError('work_phone');addError('home_phone');addError('cell_phone'); bError = true; } else { removeErrorClass('work_phone');removeErrorClass('home_phone');removeErrorClass('cell_phone'); }

  var sEmail = $j('#email').val();
  if (sEmail == '' || !sEmail.match(/^\b[A-Z0-9._%+-]+@(?:[A-Z0-9\-]+\.)+[A-Z]{2,4}\b$/i)) { addError('email'); bError = true; } else { removeErrorClass('email'); }

  if ($j('#primary_registrant').val() == '') { addError('primary_registrant'); bError = true; } else { removeErrorClass('primary_registrant'); }
  
  var sPrimaryRegistrantEmail = $j('#primary_registrant_email').val();
  if (sPrimaryRegistrantEmail == '' || !sPrimaryRegistrantEmail.match(/^\b[A-Z0-9._%+-]+@(?:[A-Z0-9\-]+\.)+[A-Z]{2,4}\b$/i)) { addError('primary_registrant_email'); bError = true; } else { removeErrorClass('primary_registrant_email'); }
  
  if ($j('#registrant_2').val() != '') {
  	var sRegistrant2Email = $j('#registrant_2_email').val();
  	if (sRegistrant2Email == '' || !sRegistrant2Email.match(/^\b[A-Z0-9._%+-]+@(?:[A-Z0-9\-]+\.)+[A-Z]{2,4}\b$/i)) { addError('registrant_2_email'); bError = true; } else { removeErrorClass('registrant_2_email'); }
  }

  if ($j('#registrant_3').val() != '') {
  	var sRegistrant3Email = $j('#registrant_3_email').val();
  	if (sRegistrant3Email == '' || !sRegistrant3Email.match(/^\b[A-Z0-9._%+-]+@(?:[A-Z0-9\-]+\.)+[A-Z]{2,4}\b$/i)) { addError('registrant_3_email'); bError = true; } else { removeErrorClass('registrant_3_email'); }
  }

  if ($j('#registrant_4').val() != '') {
  	var sRegistrant4Email = $j('#registrant_4_email').val();
  	if (sRegistrant4Email == '' || !sRegistrant4Email.match(/^\b[A-Z0-9._%+-]+@(?:[A-Z0-9\-]+\.)+[A-Z]{2,4}\b$/i)) { addError('registrant_4_email'); bError = true; } else { removeErrorClass('registrant_4_email'); }
  }

  if ($j('#registrant_5').val() != '') {
  	var sRegistrant5Email = $j('#registrant_5_email').val();
  	if (sRegistrant5Email == '' || !sRegistrant5Email.match(/^\b[A-Z0-9._%+-]+@(?:[A-Z0-9\-]+\.)+[A-Z]{2,4}\b$/i)) { addError('registrant_5_email'); bError = true; } else { removeErrorClass('registrant_5_email'); }
  }

  if ($j('#registrant_6').val() != '') {
  	var sRegistrant6Email = $j('#registrant_6_email').val();
  	if (sRegistrant6Email == '' || !sRegistrant6Email.match(/^\b[A-Z0-9._%+-]+@(?:[A-Z0-9\-]+\.)+[A-Z]{2,4}\b$/i)) { addError('registrant_6_email'); bError = true; } else { removeErrorClass('registrant_6_email'); }
  }

  if ($j('#phone').val() == '') { addError('phone'); bError = true; } else { removeErrorClass('phone'); }

  if ($j('#card_type').val() == '--') { addError('card_type'); bError = true; } else { removeErrorClass('card_type'); }
  
  if ($j('#name_on_card').val() == '') { addError('name_on_card'); bError = true; } else { removeErrorClass('name_on_card'); }

  if ($j('#card_number').val() == '' || isCreditCardNumber($j('#card_number').val())==false) { addError('card_number'); bError = true; } else { removeErrorClass('card_number'); }
  
  if ($j('#exp_month').val() == '--') { addError('exp_month'); bError = true; } else { removeErrorClass('exp_month'); }
  if ($j('#exp_year').val() == '--') { addError('exp_year'); bError = true; } else { removeErrorClass('exp_year'); }


  if ($j('#billing_address').val() == '') { addError('billing_address'); bError = true; } else { removeErrorClass('billing_address'); }
  if ($j('#billing_city').val() == '') { addError('billing_city'); bError = true; } else { removeErrorClass('billing_city'); }
  if ($j('#billing_state').val() == '') { addError('billing_state'); bError = true; } else { removeErrorClass('billing_state'); }
  if ($j('#billing_zip').val() == '') { addError('billing_zip'); bError = true; } else { removeErrorClass('billing_zip'); }

  if (bError == true) {
    alert ("Please correct the highlighted fields.");
    return false;
  }
  else {
    return true;
  }
}


// Validate Registration Form
function validate_forum_registration_form() {
  //Form validation
  var bError = false;
  if ($j('#first_name').val() == '') { addError('first_name'); bError = true; } else { removeErrorClass('first_name'); }
  if ($j('#last_name').val() == '') { addError('last_name'); bError = true; } else { removeErrorClass('last_name'); }
  if ($j('#church_name').val() == '') { addError('church_name'); bError = true; } else { removeErrorClass('church_name'); }
  if ($j('#your_position').val() == '') { addError('your_position'); bError = true; } else { removeErrorClass('your_position'); }
  if ($j('#weekly_attendance').val() == '') { addError('weekly_attendance'); bError = true; } else { removeErrorClass('weekly_attendance'); }
  if ($j('#address').val() == '') { addError('address'); bError = true; } else { removeErrorClass('address'); }
  if ($j('#city').val() == '') { addError('city'); bError = true; } else { removeErrorClass('city'); }
  if ($j('#state').val() == '') { addError('state'); bError = true; } else { removeErrorClass('state'); }
  if ($j('#zip').val() == '') { addError('zip'); bError = true; } else { removeErrorClass('zip'); }
  
  // check to see if at least one phone number is filled in
  if ($j('#work_phone').val() == '' && $j('#home_phone').val() == '' && $j('#cell_phone').val() == '') { addError('work_phone');addError('home_phone');addError('cell_phone'); bError = true; } else { removeErrorClass('work_phone');removeErrorClass('home_phone');removeErrorClass('cell_phone'); }

  var sEmail = $j('#email').val();
  if (sEmail == '' || !sEmail.match(/^\b[A-Z0-9._%+-]+@(?:[A-Z0-9\-]+\.)+[A-Z]{2,4}\b$/i)) { addError('email'); bError = true; } else { removeErrorClass('email'); }

  if ($j('#phone').val() == '') { addError('phone'); bError = true; } else { removeErrorClass('phone'); }

  if ($j('#card_type').val() == '--') { addError('card_type'); bError = true; } else { removeErrorClass('card_type'); }
  
  if ($j('#name_on_card').val() == '') { addError('name_on_card'); bError = true; } else { removeErrorClass('name_on_card'); }

  if ($j('#card_number').val() == '' || isCreditCardNumber($j('#card_number').val())==false) { addError('card_number'); bError = true; } else { removeErrorClass('card_number'); }
  
  if ($j('#exp_month').val() == '--') { addError('exp_month'); bError = true; } else { removeErrorClass('exp_month'); }
  if ($j('#exp_year').val() == '--') { addError('exp_year'); bError = true; } else { removeErrorClass('exp_year'); }


  if ($j('#billing_address').val() == '') { addError('billing_address'); bError = true; } else { removeErrorClass('billing_address'); }
  if ($j('#billing_city').val() == '') { addError('billing_city'); bError = true; } else { removeErrorClass('billing_city'); }
  if ($j('#billing_state').val() == '') { addError('billing_state'); bError = true; } else { removeErrorClass('billing_state'); }
  if ($j('#billing_zip').val() == '') { addError('billing_zip'); bError = true; } else { removeErrorClass('billing_zip'); }

  if (bError == true) {
    alert ("Please correct the highlighted fields.");
    return false;
  }
  else {
    return true;
  }
}


// Validate Registration Form
function validate_renew_form() {
  //Form validation
  var bError = false;
  if ($j('#first_name').val() == '') { addError('first_name'); bError = true; } else { removeErrorClass('first_name'); }
  if ($j('#last_name').val() == '') { addError('last_name'); bError = true; } else { removeErrorClass('last_name'); }
  if ($j('#church_name').val() == '') { addError('church_name'); bError = true; } else { removeErrorClass('church_name'); }
  if ($j('#your_position').val() == '') { addError('your_position'); bError = true; } else { removeErrorClass('your_position'); }
  if ($j('#weekly_attendance').val() == '') { addError('weekly_attendance'); bError = true; } else { removeErrorClass('weekly_attendance'); }
  if ($j('#address').val() == '') { addError('address'); bError = true; } else { removeErrorClass('address'); }
  if ($j('#city').val() == '') { addError('city'); bError = true; } else { removeErrorClass('city'); }
  if ($j('#state').val() == '') { addError('state'); bError = true; } else { removeErrorClass('state'); }
  if ($j('#zip').val() == '') { addError('zip'); bError = true; } else { removeErrorClass('zip'); }
  
  // check to see if at least one phone number is filled in
  if ($j('#work_phone').val() == '' && $j('#home_phone').val() == '' && $j('#cell_phone').val() == '') { addError('work_phone');addError('home_phone');addError('cell_phone'); bError = true; } else { removeErrorClass('work_phone');removeErrorClass('home_phone');removeErrorClass('cell_phone'); }

  var sEmail = $j('#email').val();
  if (sEmail == '' || !sEmail.match(/^\b[A-Z0-9._%+-]+@(?:[A-Z0-9\-]+\.)+[A-Z]{2,4}\b$/i)) { addError('email'); bError = true; } else { removeErrorClass('email'); }

  if ($j('#phone').val() == '') { addError('phone'); bError = true; } else { removeErrorClass('phone'); }

  if ($j('#card_type').val() == '--') { addError('card_type'); bError = true; } else { removeErrorClass('card_type'); }
  
  if ($j('#name_on_card').val() == '') { addError('name_on_card'); bError = true; } else { removeErrorClass('name_on_card'); }

  if ($j('#card_number').val() == '' || isCreditCardNumber($j('#card_number').val())==false) { addError('card_number'); bError = true; } else { removeErrorClass('card_number'); }
  
  if ($j('#exp_month').val() == '--') { addError('exp_month'); bError = true; } else { removeErrorClass('exp_month'); }
  if ($j('#exp_year').val() == '--') { addError('exp_year'); bError = true; } else { removeErrorClass('exp_year'); }


  if ($j('#billing_address').val() == '') { addError('billing_address'); bError = true; } else { removeErrorClass('billing_address'); }
  if ($j('#billing_city').val() == '') { addError('billing_city'); bError = true; } else { removeErrorClass('billing_city'); }
  if ($j('#billing_state').val() == '') { addError('billing_state'); bError = true; } else { removeErrorClass('billing_state'); }
  if ($j('#billing_zip').val() == '') { addError('billing_zip'); bError = true; } else { removeErrorClass('billing_zip'); }

  if (bError == true) {
    alert ("Please correct the highlighted fields.");
    return false;
  }
  else {
    return true;
  }
}

function showRow(row,button)
{
  document.getElementById(row).style.display = "";
  document.getElementById(button).style.display = "none";
}

function populatePrimaryRegistrant()
{

  if ($j('#primary_registrant').val() == '' && $j('#primary_registrant_email').val() == '')
  {
  	var first_name = $j('#first_name').val();
  	var last_name = $j('#last_name').val();
  	var email = $j('#email').val();
  	
  	$j('#primary_registrant').val(first_name + " " + last_name);
  	$j('#primary_registrant_email').val(email);
  	
  }
}

function populateBillingAddress()
{
  	var address = $j('#address').val();
  	var city = $j('#city').val();
  	var state = $j('#state').val();
  	var zip = $j('#zip').val();
  	var country = $j('#country').val();
  	
  	$j('#billing_address').val(address);
  	$j('#billing_city').val(city);
  	$j('#billing_state').val(state);
  	$j('#billing_zip').val(zip);
  	$j('#billing_country').val(country);

}


function isCreditCardNumber(ccnum)
{
	return checkLuhn10(ccnum);
}

function checkLuhn10(number) 
{
	if (number.length > 19)
	{
		return (false);
	}
	sum = 0; 
	mul = 1; 
	l = number.length;
	for (i = 0; i < l; i++)
	{
		digit = number.substring(l-i-1,l-i);
		tproduct = parseInt(digit ,10)*mul;
		if (tproduct >= 10)
		{
			sum += (tproduct % 10) + 1;
		}
		else
		{
			sum += tproduct;
		}
		
		if (mul == 1)
		{
			mul++;
		}
		else
		{
			mul--;
		}
  	}
	
	if ((sum % 10) == 0)
	{
    	return (true);
    }
	else
	{
		return (false);
	}
}
