
addEvent(window, "load", initialiseRegisterFormData, false);

function addEvent(elm, evType, fn, useCapture) {
	if (elm.addEventListener) {
		elm.addEventListener(evType, fn, useCapture);
		return true;
	} else {
		if (elm.attachEvent) {
			var r = elm.attachEvent("on" + evType, fn);
			return r;
		} else {
			elm["on" + evType] = fn;
		}
	}
}

function initialiseRegisterFormData() {
	populateTitles();
	populateHearAboutUs();
	populateCountries();
	populateOrgCodes();
}

function populateTitles() {
	SystemLookupService.getForCombo("TITL", function (iValues) {
		if (iValues) {
			var titleSelect = document.getElementById("Title");
			if (titleSelect) {
				for (var i = 0; i < iValues.length; i = i + 1) {
					var item = iValues[i];
					var opt = new Option(item.description, item.code, false, false);
					titleSelect.options[titleSelect.options.length] = opt;
				}
			}
		}
	});
}

function populateHearAboutUs() {
	SystemLookupService.getForCombo("RGHB", function (iValues) {
		if (iValues) {
			var hearAboutUs = document.getElementById("HearAboutUs");
			if (hearAboutUs) {
				for (var i = 0; i < iValues.length; i = i + 1) {
					var item = iValues[i];
					var opt = new Option(item.description, item.code, false, false);
					hearAboutUs.options[hearAboutUs.options.length] = opt;
				}
			}
		}
	});
}

function populateCountries() {
	SysCountryService.getAllCountries(function (iValues) {
		if (iValues) {
			var country = document.getElementById("Country");
			if (country) {
				for (var i = 0; i < iValues.length; i = i + 1) {
					var sysCtry = iValues[i];
					var opt = "";
					if (sysCtry.countryCode == "GB") {
						opt = new Option(sysCtry.longDesc, sysCtry.countryCode, false, true);
					} else {
						opt = new Option(sysCtry.longDesc, sysCtry.countryCode, false, false);
					}
					country.options[country.options.length] = opt;
				}
			}
		}
	});
}

function populateOrgCodes() {
	SystemLookupService.getForCombo("ORG", function (iValues) {
		if (iValues) {
			var orgCode = document.getElementById("OrgCode");
			if (orgCode) {
				for (var i = 0; i < iValues.length; i = i + 1) {
					var item = iValues[i];
					if (item.code != 'TEMP') {
						var opt = new Option(item.description, item.code, false, false);
						orgCode.options[orgCode.options.length] = opt;
					}
				}
			}
		}
	});
}

function getSelectValue(iSelectObj) {
	if (iSelectObj) {
		for (var i = 0; i < iSelectObj.options.length; i = i + 1) {
			var opt = iSelectObj.options[i];
			if (opt.selected) {
				return opt.value;
			}
		}
	}
	return "";
}

function checkForSalesRep(iSalesRepCode) {
	var hearAboutUs = getSelectValue(document.getElementById("HearAboutUs"));
	var salesRepLbl = document.getElementById("SalesRepLbl");
	var salesRepFld = document.getElementById("SalesRepFld");
	if (hearAboutUs == iSalesRepCode) {
		if (salesRepLbl && salesRepFld) {
			salesRepLbl.style.visibility = "visible";
			salesRepFld.style.visibility = "visible";
		}
	} else {
		if (salesRepLbl && salesRepFld) {
			salesRepLbl.style.visibility = "hidden";
			salesRepFld.style.visibility = "hidden";
		}
	}
}

function handleRegisterSubmission() {
	var title = getSelectValue(document.getElementById("Title"));
	var firstName = document.getElementById("FirstName");
	var surname = document.getElementById("Surname");
	var userName = document.getElementById("Username");
	var email = document.getElementById("EmailAddress");
	var emailVer = document.getElementById("EmailAddressVerification");
	var company = document.getElementById("Company");
	var address1 = document.getElementById("AddressLine1");
	var address2 = document.getElementById("AddressLine2");
	var address3 = document.getElementById("AddressLine3");
	var address4 = document.getElementById("AddressLine4");
	var postCode = document.getElementById("PostCode");
	var country = getSelectValue(document.getElementById("Country"));
	var tel = document.getElementById("TelephoneNo");
	var mobile = document.getElementById("MobileNo");
	var orgCode = getSelectValue(document.getElementById("OrgCode"));
	var hearAboutUs = getSelectValue(document.getElementById("HearAboutUs"));
	var saleRepresentitive = document.getElementById("SalesRepFld");
	var optIn1 = document.getElementById("OptIn1");
	var optIn2 = document.getElementById("OptIn2");
	var register = {title:title, name:firstName.value, surname:surname.value, userName:userName.value, email:email.value, emailVerification:emailVer.value, company:company.value, address1:address1.value, address2:address2.value, address3:address3.value, address4:address4.value, postCode:postCode.value, country:country, telNo:tel.value, mobileNo:mobile.value, orgCode:orgCode,hearAboutUs:hearAboutUs, salesRep:saleRepresentitive.value, optIn1:optIn1.value, optIn2:optIn2.value};
	RegisterService.register(register, "KUKRI", function (iActSts) {
		var actionMessage = iActSts.actionMessage;
		var index = actionMessage.indexOf(";");
		var password = "";
		if  ( index > -1 ) {
			password = actionMessage.substring(index+1);
			actionMessage = actionMessage.substring(0,index);
		}
		
		alert(actionMessage);
		if (iActSts.actionSuccessful && iActSts.actionCode == "REGISTER_OK") {
			handleLogin(userName.value, password);
			document.forms["RegisterForm"].reset();
		}
	});
}

function handleLogin(username, password) {
	if  ( window.opener ) {
		var userIdFld = window.opener.document.getElementById("UserID");
		var passwordFld = window.opener.document.getElementById("Password");
		
		if (userIdFld != null && passwordFld != null) {
			userIdFld.value = username;
			passwordFld.value = password;
			if (window.opener.ajaxLogin) {
				window.opener.ajaxLogin();
			} else {
				window.opener.document.forms[0].submit();
			}
			
			window.close();
		}
	}
}

function validateRegisterForm() {
	var elId = checkForMandatory();
	if (elId) {
		var elLbl = document.getElementById(elId + "Lbl");
		if (elLbl.innerText) {
			alert("Please supply a value for '" + elLbl.innerText + "'");
		} else {
			alert("Please supply a value for '" + elLbl.textContent + "'");
		}
	} else {
		handleRegisterSubmission();
	}
}

function checkForMandatory() {
	var fieldIds = ["Title", "FirstName", "Surname", "Username", "EmailAddress", "EmailAddressVerification", "Company", "AddressLine1", "AddressLine4", "PostCode", "Country", "TelephoneNo", "OrgCode"];
	for (var i = 0; i < fieldIds.length; i = i + 1) {
		var fieldId = fieldIds[i];
		var fieldEl = document.getElementById(fieldId);
		if (fieldEl) {
			if (!fieldEl.value) {
				return fieldId;
			}
		}
	}
}
  
  //check that email addresses match
	var email = document.getElementById("EmailAddress");
	var emailVer = document.getElementById("EmailAddressVerification");
	if (email && emailVer) {
		if (email.value && emailVer.value) {
			if (email.value != emailVer.value) {
				alert("Both email addresses must match");
			}
		}
	}

