﻿
var httpObject; // stores ajax object
var httpObject2;
var collectorNumber; // collector number is stored here
var emailRevealed = false; // is set to true once email is form is revealed
// used to indicate which fields to ignore
var ignoreEmail;
var ignoreMobile;
var ignoreNumber;
// link to jump to after clicking on submit
var gotoLink = "";


var phpCheckNum = "cNumEm.php"; // routine which checks if collector number is valid
var phpUpdate = "fSubmit.php"; // routine which updates database

// collector number errors
var error = { 
		// collector number error messages
		invalidNumber:["Invalid Collector Number. Please re-enter.", 
					   "Numéro d'adhérent invalide. Veuillez l’entrer de nouveau."],
		enterNumber:["Please enter your Collector Number.",
					 "Veuillez entrer votre numéro d'adhérent."],
					 
		// mobile number error messages
		invalidMobile:["Area code is not a valid Canadian area code. Please re-enter.",
					   "L'indicatif régional n'est pas valide. Veuillez l'entrer de nouveau."],
		matchMobile:["Confirm mobile number does not match. Please re-enter.",
					 "La confirmation du numéro de cellulaire ne correspond pas. Veuillez l'entrer de nouveau."],
		enterMobile:["Please enter your mobile number.",
					 "Veuillez entrer votre numéro de cellulaire."],
					 
		// email error messages
		invalidEmail:["Invalid email address. Please re-enter.",
					  "Adresse de courriel invalide. Veuillez l’entrer de nouveau."],
		enterEmail:["Please enter your email address.",
					"Veuillez entrer votre adresse de courriel."],
		matchEmail:["Email and confirm email fields don’t match. Please re-enter.",
					"Les champs « courriel » ne correspondent pas. Veuillez l'entrer de nouveau."]
	};
// thank you pages for both languages
var link = {
		// thank you page
		thankYou:["7832_thankyou_english.html",
				  "7832_thankyou_french.html"],
		// oops page
		oops:["7832_thankyou_english2.html",
			  "7832_thankyou_french2.html"],
		// mobile thank you page
		mobileThankYou:["7832_mobile_thankyou_english.html", 
					   "7832_mobile_thankyou_french.html"],
		// mobile oops page
		mobileOops:["7832_mobile_thankyou_english2.html",
				   "7832_mobile_thankyou_french2.html"]
	}
	
	
var language = 1; // 0 is english, 1 is french
var mobileMode = false; // if set to true, emails will not be shown
var submitMode = false; // if set to true, will jump to another page when valid forms are filled


// checks to see if email addresses & mobile #s match - returns true if input is valid
// if ignoreEmail is set to true, email addresses are not checked
// if ignoreMobile is set to true, phone numbers are not checked
// if ignoreNumber is set to true, collector number is not checked
function checkFields($ignoreEmail, $ignoreMobile, $ignoreNumber) {

	var mobileError = "&nbsp;"; // mobile error message
	var emailError = "&nbsp;"; // email error message
	var numberError = "&nbsp;"; // collector number error message
	var tf = true;
	
	ignoreEmail = $ignoreEmail;
	ignoreMobile = $ignoreMobile;
	ignoreNumber = $ignoreNumber;

	// check collector number
	if (!ignoreNumber) {
		if (document.getElementById("inputNumber").value == "") {
			numberError = error.enterNumber[language];
			tf = false;
		}
	}
	// check mobile #
	if (!ignoreMobile) {
		// mobiles #s don't match
		if (document.getElementById("mobile1").value != document.getElementById("mobile4").value ||
			document.getElementById("mobile2").value != document.getElementById("mobile5").value ||
			document.getElementById("mobile3").value != document.getElementById("mobile6").value) {
			mobileError = error.matchMobile[language];
			tf = false;
		}
		// mobile # not filled out
		else if (document.getElementById("mobile1").value.length < 3 || 
				 document.getElementById("mobile2").value.length < 3 ||
				 document.getElementById("mobile3").value.length < 4 ) {
			mobileError = error.enterMobile[language];
			tf = false;
		}
	}
	// check email address
	if (!ignoreEmail && !mobileMode) {
		// emails don't match
		if (document.getElementById("email1").value != document.getElementById("email2").value) {
			emailError = error.matchEmail[language];
			tf = false;
		}
		// invalid email (if user enters a blank email then assume they don't want it in the database)
		else if (document.getElementById("email1").value != "") {
			emailError = checkEmail(document.getElementById("email1").value);
			if (emailError != "") { emailError = error.invalidEmail[language]; tf = false; }
			else { emailError = "&nbsp;"; }
		}
	}

	// update error messages
	document.getElementById("numberError").innerHTML = numberError;
	document.getElementById("mobileError").innerHTML = mobileError;
	if (!mobileMode) { document.getElementById("emailError").innerHTML = emailError; }
	return(tf);
}


// reveals the email form
function showEmail() {
	
	if (!mobileMode) {
		document.getElementById("cover").style.display = "none";
		//document.getElementById("email1").style.display = "block";
		//document.getElementById("email2").style.display = "block";
		document.getElementById("submit").style.top = !language ? "265px" : "410px";
		emailRevealed = true;
	}
}


// gets executed when user clicks on "submit"
function submitMe() {

	// if javascript check passes, do a php check and let the return function handle the rest
	if (checkFields(!emailRevealed, false, false)) { 
		submitMode = true;
		checkNumber(); 
	}
}


// returns httpobject needed to use ajax
function getHTTPObject() {

	var ajax;
	
	try {
	  	// Firefox, Opera 8.0+, Safari
		ajax=new XMLHttpRequest();
		}
	catch (e) {
		// Internet Explorer
  		try {
    		ajax=new ActiveXObject("Msxml2.XMLHTTP");
			}
  		catch (e) {
    		try {
      			ajax=new ActiveXObject("Microsoft.XMLHTTP"); 
				}
    		catch (e) {
      			alert("Your browser does not support AJAX!");
      			return false;
			}
    	}
	}
	
	return(ajax);
}


// calls php to see if collector number is valid and if there is an email address
function checkNumber() {
	
	httpObject = getHTTPObject();
	if (httpObject != null) {
		collectorNumber = document.getElementById("inputNumber").value;
		email = mobileMode ? "" : document.getElementById("email1").value;
		
		/*alert(phpCheckNum + 
			"?cNum=" + collectorNumber +
			"&em=" + document.getElementById("email1").value + 
			"&mbNum=" + document.getElementById("mobile1").value + document.getElementById("mobile2").value + document.getElementById("mobile3").value);*/
		
		httpObject.onreadystatechange = receiveNumber;
		httpObject.open("GET", phpCheckNum + 
			"?cNum=" + collectorNumber +
			"&em=" + email + 
			"&mbNum=" + document.getElementById("mobile1").value + document.getElementById("mobile2").value + document.getElementById("mobile3").value, true);
		httpObject.send(null);
	}
	//showEmail(); validNumber = true; // remove this
}


// calls php and upates database with new mobile # (or email) 
function updateMobile() {
	
	email = mobileMode ? "" : document.getElementById("email1").value;
	/*alert(phpUpdate + 
			"?cNum=" + collectorNumber + 
			"&em=" + document.getElementById("email1").value + 
			"&mbNum=" + document.getElementById("mobile1").value + document.getElementById("mobile2").value + document.getElementById("mobile3").value +
			"&link=" + gotoLink);*/
	
	window.location = phpUpdate + 
			"?cNum=" + collectorNumber + 
			"&em=" + email + 
			"&mbNum=" + document.getElementById("mobile1").value + document.getElementById("mobile2").value + document.getElementById("mobile3").value +
			"&link=" + gotoLink +
			"&source=7832_D";
	
/*	httpObject2 = getHTTPObject();

	if (httpObject2 != null) {
		
		httpObject2.onreadystagechange = doneSubmit;
		httpObject2.open("GET", phpUpdate + 
			"?cNum=" + collectorNumber + 
			"&em=" + email + 
			"&mbNum=" + document.getElementById("mobile1").value + document.getElementById("mobile2").value + document.getElementById("mobile3").value +
			"&link=" + gotoLink, true);
		httpObject2.send(null);		
	}	*/
}


// gets executed when PHP returns check number results
function receiveNumber() {
	
	if (httpObject.readyState == 4) {
 
		var r = httpObject.responseText;
		//alert(r);
		
		// Step 1: take care of error messages
		
		// invalid collector #
		if (r.charAt(0) == "0") { document.getElementById("numberError").innerHTML = error.invalidNumber[language]; }
		// invalid area code
		if (!ignoreMobile && r.charAt(2) == "0") { document.getElementById("mobileError").innerHTML = error.invalidMobile[language]; }		
		
		
		// Step 2: jump to appropriate site/form
		
		// valid collector #, email not found, mobile # not found -> show email form
		if (r.charAt(0) == "1" && r.charAt(1) == "0" && r.charAt(3) == "0" && !emailRevealed) { showEmail(); return; }
		
		// only jump to another site if user clicked submit button
		if (!submitMode) { return; }
		
		// collector # is valid, area code is valid, and mobile # is not found -> update info
		if (r.charAt(0) == "1" && r.charAt(2) == "1" && r.charAt(3) == "0") {
			gotoLink = mobileMode ? link.mobileThankYou[language] : link.thankYou[language];
			updateMobile();
		}
		// collector # is valid, area code is valid, and mobile # alread exists -> give oops mesage
		else if (r.charAt(0) == "1" && r.charAt(2) == "1" && r.charAt(3) == "1") {
			//updateMobile(); // should we update info if it already existed???
			window.location = mobileMode ? link.mobileOops[language] : link.oops[language];
		}
	}
}


// gets executed after information has been submitted
function doneSubmit() {
	
	//alert(httpObject2.readyState);
	if (httpObject2.readyState == 4 && gotoLink != "") { var r = httpObject2.responseText; /*alert(r);*/ window.location = gotoLink; }
}


// tabs "field" to "nextId" when maxlength reached
function autoTab(field, nextId) {
	
	submitMode = false;
	if (field.value.length >= field.maxLength) {
		// perform auto tab, but don't go to e-mail field if it isn't revealed
		if (nextId != "email1" || emailRevealed) { document.getElementById(nextId).focus(); }
		// check validity of input
		switch (field.id) {
			// reveal email 
			case "inputNumber": if (checkFields(!emailRevealed, true, false)) { checkNumber(); } break;
			case "mobile6": if (checkFields(!emailRevealed, false, false)) { checkNumber(); } break;
		}
	}
	
}


// makes sure email can't get selected when it's now shown
function checkEmailFocus() {
	
	if (!emailRevealed) { document.getElementById("inputNumber").focus(); }
}
