var ld_status;
var ld_loginForm, ld_registerForm, ld_confirmationForm;
var ld_loginMessage, ld_registerMessage, ld_confirmationMessage;
var ld_sack = new sack();
var ld_amount, ld_catNum, ld_catName, cc_num, cc_exp_month, cc_exp_year, cc_csc, ld_fname, ld_lname, ld_address1, ld_address2, ld_city, ld_state, ld_zipcode, ld_cc_type, ld_cat_params;

var ld_debug_level=0; //set debug level: 0=off, 1=to screen

if (window.attachEvent ) {window.attachEvent('onload', ld_init);}
else if (window.addEventListener ) {window.addEventListener('load', ld_init, false);}
else {document.addEventListener('load', ld_init, false);} 


function ld_init() {
  ld_status = 0;

  //only do the following if we have an ld_catForm (i.e. in the donation page)
  if (document.getElementById("ld_catForm")!==null){
	ld_catForm = document.getElementById("ld_catForm");
	ld_ccForm = document.getElementById("ld_ccForm");
	ld_confirmationForm = document.getElementById("ld_confirmationForm");

	ld_catMessage = document.getElementById("ld_catMessage");
	ld_ccMessage = document.getElementById("ld_ccMessage");
	ld_confirmationMessage = document.getElementById("ld_confirmationMessage");
	ld_show_hidden_elements();
  }
}

function ld_showLoading() {
	document.getElementById("ld_cat_amount").style.display = "none";
	document.getElementById("ld_CC").style.display = "none";
	document.getElementById("ld_confirmation").style.display = "none";
	document.getElementById("ld_thankyou").style.display = "none";
	document.getElementById("ld_error").style.display = "none";
  
  document.getElementById("ld_loading").style.display = "block";
}

function ld_showCat() {

	document.getElementById("ld_cat_amount").style.display = "none";
	document.getElementById("ld_CC").style.display = "none";
	document.getElementById("ld_confirmation").style.display = "none";
	document.getElementById("ld_thankyou").style.display = "none";
	document.getElementById("ld_error").style.display = "none";

	if (0 != ld_timeout) {
		document.getElementById("ld_loading").style.display = "block";
		setTimeout('ld_showCat2();', ld_timeout);
	} else {
		ld_showCat2();
	}
}

function ld_showCat2() {

	document.getElementById("ld_loading").style.display = "none";
	document.getElementById("ld_cat_amount").style.display = "block";
	ld_catForm.category.focus();

}

function ld_showCC() {

	document.getElementById("ld_cat_amount").style.display = "none";
	document.getElementById("ld_CC").style.display = "none";
	document.getElementById("ld_confirmation").style.display = "none";
	document.getElementById("ld_thankyou").style.display = "none";
	document.getElementById("ld_error").style.display = "none";

	if (0 != ld_timeout) {
		document.getElementById("ld_loading").style.display = "block";
		setTimeout('ld_showCC2();', ld_timeout);
	} else {
		ld_showCC2();
	}
}

function ld_showCC2() {

	document.getElementById("ld_loading").style.display = "none";
	document.getElementById("ld_CC").style.display = "block";
	ld_ccForm.cc_num.focus();

}

function ld_showConfirmation() {

	document.getElementById("ld_cat_amount").style.display = "none";
	document.getElementById("ld_CC").style.display = "none";
	document.getElementById("ld_confirmation").style.display = "none";
	document.getElementById("ld_thankyou").style.display = "none";
	document.getElementById("ld_error").style.display = "none";

	if (0 != ld_timeout) {
		document.getElementById("ld_loading").style.display = "block";
		setTimeout('ld_showConfirmation2();', ld_timeout);
	} else {
		ld_showConfirmation2();
	}
}

function ld_showConfirmation2() {

	document.getElementById("ld_loading").style.display = "none";
	document.getElementById("ld_confirmation").style.display = "block";
	
	document.getElementById("ld_con_cat").innerHTML = ld_catName;
	document.getElementById("ld_con_amount").innerHTML = ld_amount;
	document.getElementById("ld_con_cat_params").innerHTML = ld_cat_params;
	disp_cc_num = cc_num;
  for (i=0;i<cc_num.length - 4;i++) {
    disp_cc_num = disp_cc_num.replace(/[0-9]/,'*');
  }
	document.getElementById("ld_con_cc_num").innerHTML = disp_cc_num;
	document.getElementById("ld_con_cc_exp").innerHTML = cc_exp_month + '/' + cc_exp_year;
	document.getElementById("ld_con_cc_type").innerHTML = ld_cc_type;
	document.getElementById("ld_con_name").innerHTML = ld_fname+' '+ld_lname;
	disp_addr = ld_address1;
	if (ld_address2.length > 0) disp_addr += '<br />' + ld_address2;
	disp_addr += '<br />' + ld_city + ', ' + ld_state + ' ' + ld_zipcode;
	document.getElementById("ld_con_address1").innerHTML = ld_address1;
	document.getElementById("ld_con_address2").innerHTML = ld_address2;
	document.getElementById("ld_con_city").innerHTML = ld_city;
	document.getElementById("ld_con_state").innerHTML = ld_state;
	document.getElementById("ld_con_zipcode").innerHTML = ld_zipcode;
	
	ld_confirmationForm.submit.disabled = false;
	ld_confirmationForm.submit.value = "Process";
}

function ld_showThankYou() {
	document.getElementById("ld_loading").style.display = "none";
	document.getElementById("ld_thankyou").style.display = "block";
}

function ld_showError(err_msg) {
	document.getElementById("ld_loading").style.display = "none";
	document.getElementById("ld_err_msg").innerHTML = err_msg;
	document.getElementById("ld_error").style.display = "block";
}

function ld_show_hidden_elements() {
	ld_catForm = document.getElementById("ld_catForm");
  	categoryIndex = ld_catForm.category.options[ld_catForm.category.selectedIndex].index;

	//show the hidden parameter field if appropriate
  	show_parameter = document.getElementById("ld_category_parameters_"+categoryIndex);
    if (show_parameter){
	    document.getElementById("ld_parameter_element").style.display = "";
	} else {
	    document.getElementById("ld_parameter_element").style.display = "none";
	}
	
	//hide all descriptions then display the appropriate one
    for (i=0; i<ld_catForm.category.length;i++){
        document.getElementById("ld_category_description_"+i).style.display = "none";
    }
    document.getElementById("ld_category_description_"+categoryIndex).style.display = "";
}

function ld_cat_amount() {

	if (0 != ld_status) {
		return;
	}
	
	amount = Number(ld_catForm.amount.value);
	amount = amount.toFixed(2);
	ld_catMessage.innerHTML = "";
	
	if (isNaN(amount)) {
    ld_catMessage.innerHTML = "That is not a valid amount.";
		ld_catForm.amount.focus();
		return;
  }
	
	if (ld_catForm.amount.value <= 0) {
		ld_catMessage.innerHTML = "Please enter an amount greater than zero.";
		ld_catForm.amount.focus();
		return;
	}
	
	ld_amount = amount;
  ld_catNum = ld_catForm.category.selectedIndex;
  ld_catName = ld_catForm.category.options[ld_catNum].text;
  ld_cat_params = ld_catForm.cat_params.value;
  ld_showCC();

}

function ld_billing() {
  if (0 != ld_status) {
		return;
	}
	
    ld_cc_type = ld_ccForm.cc_type.value;
	cc_num = ld_ccForm.cc_num.value;
	cc_exp_month = ld_ccForm.cc_exp_month.value;
	cc_exp_year = ld_ccForm.cc_exp_year.value;
	cc_csc = ld_ccForm.cc_csc.value;
	ld_fname = ld_ccForm.fname.value;
	ld_lname = ld_ccForm.lname.value;
	ld_address1 = ld_ccForm.address1.value;
	ld_address2 = ld_ccForm.address2.value;
	ld_city = ld_ccForm.city.value;
    ld_state = ld_ccForm.state.value;
	ld_zipcode = ld_ccForm.zipcode.value;

  ld_ccMessage.innerHTML = "";
  
  cc_num = cc_num.replace(/-/g,'');
	 
	if (isNaN(cc_num) || cc_num.length < 13) {
    ld_ccMessage.innerHTML = "Please enter a valid credit card number.";
		ld_ccForm.cc_num.focus();
		return;
  }
  
  if (isNaN(cc_csc) || cc_csc.length < 3) {
    ld_ccMessage.innerHTML = "Please enter a valid card security code.";
		ld_ccForm.cc_csc.focus();
		return;
  }
  
  if (ld_fname.length < 1) {
    ld_ccMessage.innerHTML = "Please enter your first name.";
		ld_ccForm.fname.focus();
		return;
  }
  
  if (ld_lname.length < 1) {
    ld_ccMessage.innerHTML = "Please enter your last name.";
		ld_ccForm.lname.focus();
		return;
  }
  
  if (ld_address1.length < 1) {
    ld_ccMessage.innerHTML = "Please enter your address.";
		ld_ccForm.address1.focus();
		return;
  }
  
  if (ld_city.length < 1) {
    ld_ccMessage.innerHTML = "Please enter your city.";
		ld_ccForm.city.focus();
		return;
  }
  
  if (isNaN(ld_zipcode) || ld_zipcode.length != 5) {
    ld_ccMessage.innerHTML = "Please enter a valid zip code.";
		ld_ccForm.zipcode.focus();
		return;
  }
  
	ld_showConfirmation();
}

function ld_process() {
  if (0 != ld_status) {
    	ld_alert_debug("Unknown ld_status="+ld_status);
		return;
	}
  
  ld_sack.setVar("category", ld_catNum);
  ld_sack.setVar("amount", ld_amount);
  ld_sack.setVar("cat_params", ld_cat_params);
	ld_sack.setVar("cc_num", cc_num);
	ld_sack.setVar("cc_exp_month", cc_exp_month);
	ld_sack.setVar("cc_exp_year", cc_exp_year);
	ld_sack.setVar("cc_csc", cc_csc);
	ld_sack.setVar("cc_type", ld_cc_type);
	ld_sack.setVar("fname", ld_fname);
	ld_sack.setVar("lname", ld_lname);
	send_addr = ld_address1;
	if (ld_address2.length > 0) send_addr += ', ' + ld_address2;
  ld_sack.setVar("address", send_addr);
	ld_sack.setVar("address1", ld_address1);
	ld_sack.setVar("address2", ld_address2);
	ld_sack.setVar("city", ld_city);
	ld_sack.setVar("state", ld_state);
	ld_sack.setVar("zipcode", ld_zipcode);

	ld_sack.requestFile = ld_base_uri + "/wp-content/plugins/ldd-donations/processDonation.php";
//	ld_sack.requestFile = window.location.hostname + "/wp-content/plugins/ldd-donations/processDonation.php";
//	ld_sack.requestFile = "https://www.calvaryrr.org/wp-content/plugins/ldd-donations/processDonation.php";
	ld_sack.method = "POST";
	ld_sack.onError = ld_ajaxError;
	ld_sack.onCompletion = ld_processHandleResponse;

    ld_alert_debug("in ld_process before AJAX");
	ld_sack.runAJAX();
	ld_status = 1;
	ld_showLoading();

}

//a function to print out the ld_alert_debug statements if the ld_debug_level is set appropriately
function ld_alert_debug(msg) {
    if (ld_debug_level==1) {
        alert(msg);
    }    
}

function ld_processHandleResponse() {
	ld_status = 0;
	ld_success = 1; //SAW
	ld_failure = 0; //SAW

	var responselines = ld_sack.response.split("\n",2);
  
    ld_alert_debug("in ld_processHandleResponse with responseCode="+ld_sack.responseStatus[0]+": responseText=" +ld_sack.responseStatus[1]+ " and response="+ld_sack.response);

	if (responselines[0] == ld_failure) {
		ld_showError(responselines[1]+" ["+ld_sack.responseStatus[0]+":"+ld_sack.responseStatus[1]+":"+responselines[0]+"]");
		return;
	}
	if (responselines[0] == ld_success) {
		ld_showThankYou();
		return;
	}

	alert("Unknown donation response. "+responselines[0]+":"+responselines[1]);
  ld_showConfirmation();
  
}

function ld_ajaxError() {
	alert("We are sorry, there was an error while sending the request.\nPlease try again!\nIf error persists, please contact the webmaster.");
	
	ld_alert_debug(ld_sack.responseStatus[0] + ':\n' + ld_sack.response);
	ld_sack = new sack();
}

function ld_loginOnEnter(e) {

	if(window.event) // IE
		keynum = e.keyCode;
	else if(e.which) // Netscape/Firefox/Opera
		keynum = e.which;
	else
		keynum = 0;

	if (keynum==13)
		ld_login();

}
function ld_registerOnEnter(e) {

	if(window.event) // IE
		keynum = e.keyCode;
	else if(e.which) // Netscape/Firefox/Opera
		keynum = e.which;
	else
		keynum = 0;

	if (keynum==13)
		ld_register();

}
function ld_retrievePasswordOnEnter(e) {

	if(window.event) // IE
		keynum = e.keyCode;
	else if(e.which) // Netscape/Firefox/Opera
		keynum = e.which;
	else
		keynum = 0;

	if (keynum==13)
		ld_retrievePassword();

}

