
/***************  Global Variables  ***************/

var wsurl = 'webServices.php';
var validate = 'soap_validate.php';
var create = 'soap_createRecip.php';
var update = 'soap_updateRecip.php';
var forgot = 'soap_forgotPass.php';
var division = 'soap_getDivisions.php';
var selectstr = '[object HTMLSelectElement]';
var objectstr = '[object]';
var user, thank_you_div, err_message, name; // made global to see durring development;
var d_order = ['workPhone','homePhone','mobilePhone','ttyPhone','workEmail','homeEmail','numericPager','onewayPager','twowayPager','fax','sms'];
var phone_ary = ['workPhone','homePhone','mobilePhone','ttyPhone','numericPager','onewayPager','twowayPager','fax','sms'];
var phone_ary_len = [1,1,2,1,2,2,2,1,1];
var email_ary = ['workEmail','homeEmail','new_username'];
var errImg = '<img alt="Error:" src="/images/err_stop.jpg" />&nbsp;';
var create_message = '<p>Thank you for registering with the MIR3 system. Your new password has been emailed to you.<br /><br />'+
	'<a href="javascript:;" onClick="toggle_content(\'login\');"><b>CLICK HERE</b></a> to login and update your profile.</p>';

var allAddressIds = new Array('facilityLocation','address1','address2','building','floor','city','state','zip','province','country');
var total_devices = [];
var divisions = [];
var pagingCarriers = [];
var tmpUserNew = [];
var tmpUserOrig = [];
var tmpUserTagName = [];
var tmpUserId = '';
var affStatus = '';
var debug = false;

/***************  Objects for Update Recip  ***************/

function Division(name, path) {
	this.name = name;
	this.path = path;
	this.children = []
}

function Pager(type, address, desc, pin, carrier) {
	this.type = type;
	this.address = address;
	this.desc = desc;
	this.pin = pin;
	this.carrier = carrier;
}

function User(user_id, first_name, last_name, division) {
	this.user_id = user_id;
	this.first_name = first_name;
	this.last_name = last_name;
	this.division = division;
	this.devices = [];
	this.pagers = [];
}

/***************  API  ***************/

function createUser() {
	var all_create_fields = document.createfrm.getElementsByTagName('input');
	var all_fields = checkFields(create_fields, all_create_fields, 'create');
	if (all_fields == true) {
		var new_username = getObject('new_username').value;
		var post_str = ('new_username=' + new_username + '&wscall=' + create);
		Post(wsurl, post_str, create);
		toggle_content('processing');
	}
}

function parse_createUser(xml_string) {
	xmlDoc = domObj(xml_string);
	try { xmlDoc = domObj(xml_string); success = xmlDoc.getElementsByTagName('success')[0].childNodes[0].nodeValue; } catch(err) { if (debug) alert(err); }
	if (success!=null && xmlDoc != null) {
		if (success == 'true') {
			getObject('thank_you').innerHTML = create_message;
			toggle_content('thank_you');
		} else {
			var err = ("<p>"+xmlDoc.getElementsByTagName('errorMessage')[0].childNodes[0].nodeValue+"</p>");
			err.replace("'", "");
			toggle_content('login');
			err_message.innerHTML = err;
		}
	} else { 
		var err = '<p>'+errImg+' Sorry, this service is temporarily unavailable.</p>';
		toggle_content('login');
		err_message.innerHTML = err;
	}
}

function forgotPass() {
	var all_forgot_fields = document.forgotfrm.getElementsByTagName('input');
	var username = escape(getObject('forgot_pass').value);
	var all_fields = checkFields(forgot_fields, all_forgot_fields, 'forgot');
	if (all_fields == true) {
		var post = ('username=' + username + '&wscall=' + forgot);
		Post(wsurl, post, forgot);
		toggle_content('processing');
	}
}

function parse_forgotPass(xml_string) {
	var success = null; var xmlDoc = null;
	try { xmlDoc = domObj(xml_string); success = xmlDoc.getElementsByTagName('success')[0].childNodes[0].nodeValue; } catch(err) { if (debug) alert(err); }
	if (success!=null && xmlDoc != null) {
		if (success == 'true') {
			var fName = getObject('fName').value;
			var lName = getObject('lName').value;
			getObject('thank_you').innerHTML = ('<p>Thank you. An email will be sent to you with instructions on how to update your password.</p>'+
												'<div class="redirect">'+redirectLink+'</div>');
			toggle_content('thank_you');
		}
	} else { 
		var err = '<p>'+errImg+' Sorry, this service is temporarily unavailable.</p>';
		toggle_content('login');
		err_message.innerHTML = err;
	}
}

function getForgotPass() {
	var all_forgot_fields = document.udpateforgotfrm.getElementsByTagName('input');
	var username = escape(getObject('forgot_pass').value);
	var all_fields = checkFields(update_forgot_fields, all_update_forgot_fields, 'forgot');
	if (all_fields == true) {
		var post = ('username=' + username + '&wscall=' + forgot);
		Post(wsurl, post, forgot);
		toggle_content('processing');
	}
}

function validateUser() {
	var all_login_fields = document.loginfrm.getElementsByTagName('input');
	var all_fields = checkFields(validate_fields, all_login_fields, 'validate');
	if (all_fields == true) {
		var post_str = '';
		var username = escape(getObject('username').value);
		var password = escape(getObject('password').value);
		var post_str = ('username=' + username + '&password=' + password + '&wscall=' + validate);
		Post(wsurl, post_str, validate);
		toggle_content('processing');
	}
}

function parse_validateUser(xml_string) {
	assignAnchor('update');
	user = new User();
	var success = null; var xmlDoc = null; var add_facLoc = null; var add_add1 = null; var add_add2 = null; var add_bld = null;
	var add_floor = null; var add_city = null; var add_state = null; var add_zip = null; var add_prov = null; var add_country = null;
	
	try { xmlDoc = domObj(xml_string); success = xmlDoc.getElementsByTagName('success')[0].childNodes[0].nodeValue; } catch(err) { if (debug) alert(err); }
	//alert(xmlDoc.getElementsByTagName('success')[0].childNodes[0].nodeValue);
	//alert('xml_string='+xml_string+' '+success+' '+xmlDoc);
	if (success!=null && xmlDoc != null) {
		if (success == 'true') {
			if (xmlDoc.getElementsByTagName('matchCount')[0].childNodes[0].nodeValue >= 1) {
				var recips = xmlDoc.getElementsByTagName('recipientDetail');
				var add_carriers = xmlDoc.getElementsByTagName('pagingCarrier');
				var user_id, xml_devices, f_name, l_name, division, username, customFields, timeZoneId;
				
				for (var i=0; i<recips.length; i++) {
					if (getObject('username').value.toLowerCase() == recips[i].getElementsByTagName('username')[0].childNodes[0].nodeValue.toLowerCase()) {
						//alert(String (recips[i]));
						user_id = recips[i].getElementsByTagName('userId')[0].childNodes[0].nodeValue;
						xml_devices = recips[i].getElementsByTagName('devices')[0].childNodes;
						f_name = recips[i].getElementsByTagName('firstName')[0].childNodes[0].nodeValue;
						l_name = recips[i].getElementsByTagName('lastName')[0].childNodes[0].nodeValue;
						division = recips[i].getElementsByTagName('division')[0].childNodes[0].nodeValue;
						username = recips[i].getElementsByTagName('username')[0].childNodes[0].nodeValue;
						customFields = recips[i].getElementsByTagName('customField');
						timeZoneId = recips[i].getElementsByTagName('timeZone')[0].childNodes[0].nodeValue;
						assignAddressValues(recips[i]);

						var jobTitle_val = null; var jobTitle_inp = document.getElementById('jobTitle');
						try { jobTitle_val = recips[i].getElementsByTagName('jobTitle')[0].childNodes[0].nodeValue; } catch(err) { if (debug) alert(err); }
						if (jobTitle_val != null && jobTitle_val != 'n/a' && jobTitle_inp != null && jobTitle_inp != undefined) { jobTitle_inp.value = jobTitle_val; }
						
						var company_val = null; var company_inp = document.getElementById('company');
						try { company_val = recips[i].getElementsByTagName('company')[0].childNodes[0].nodeValue; } catch(err) { if (debug) alert(err); }
						if (company_val != null && company_val != 'n/a' && company_inp != null && company_inp != undefined) { company_inp.value = company_val; }
						
						break;
					}
				}
				
				user.user_id = user_id;
				user.first_name = (f_name);
				user.last_name = (l_name);
				user.division = (division);

				try { 
					for (var i=0; i<add_carriers.length; i++) {
						if (add_carriers[i].nodeType == '1') {
							var id = add_carriers[i].getElementsByTagName('pagingCarrierId')[0].childNodes[0].nodeValue;
							var name = add_carriers[i].getElementsByTagName('pagingCarrierName')[0].childNodes[0].nodeValue;
							pagingCarriers[id+"_id"] = name;
						}
					}
					var selects = document.getElementsByTagName("select");
					for (var i=0; i<selects.length; i++) {
						if (selects[i].id.substr(0,8) == "car_pgr_") {
							popSelect(selects[i],pagingCarriers);
						}
					}
				} catch(err) { alert(err); }
						
				try {
					var pgrIndex=0;
					for (var i=0; i<xml_devices.length; i++) {
						if (xml_devices[i].nodeType == '1') {
							var address = xml_devices[i].getElementsByTagName('address')[0].childNodes[0].nodeValue;
							var desc = xml_devices[i].getElementsByTagName('description')[0].childNodes[0].nodeValue;
							var type = xml_devices[i].getElementsByTagName('deviceType')[0].childNodes[0].nodeValue;
							if (type == '1-Way Pager' || type == '2-Way Pager' || type == 'Numeric Pager') {
								var type = xml_devices[i].tagName;
								var pin = null;
								if (xml_devices[i].getElementsByTagName('pagerPin').length != 0) {
									pin = xml_devices[i].getElementsByTagName('pagerPin')[0].childNodes[0].nodeValue;
								}
								var carrier = xml_devices[i].getElementsByTagName('pagingCarrierId')[0].childNodes[0].nodeValue;
								user.pagers[pgrIndex] = (new Pager(type, address, desc, pin, carrier));
								pgrIndex++;
							} else {
								user.devices[desc] = address;
							}
						}
					}
				} catch(err) { if (debug) alert(err); }
				
				var loc = false; var reg_thru = false; var prim_bld = null; sec_bld = null; 
				prim_bld = null; sec_bld = null; reg_thru_date = null; 
				
				for (var i=0; i<customFields.length; i++) {
					if (customFields[i].nodeType == '1') {
						var tag = customFields[i].childNodes;
						for (var j=0; j<tag.length; j++) {
							if (tag[j].nodeType == '1') {
								if (tag[j].tagName == 'name') var name = tag[j].childNodes[0].nodeValue;
								if (tag[j].tagName == 'value') var val = tag[j].childNodes[0].nodeValue;
							}
						}
		
						if (name == 'Affiliation' && document.getElementById('aff') != null) {
							var o = getObject('aff').options;
							var display;
							for (var j=0; j<o.length; j++) {
								if (o[j].innerHTML == val) { display = o[j].className; o[j].selected = true; toggleView(); }
							}
						}
						
						if (name == 'NUID' && val!='n/a' && document.getElementById('nuid') != null) document.getElementById('nuid').value = val; 
						if (name == 'Medical License' && document.getElementById('license') != null) selectOption('license', val); 
						if (name == 'Primary Building' && document.getElementById('prim_bld') != null) selectOption('prim_bld', val); 
						if (name == 'Secondary Building' && document.getElementById('sec_bld') != null) selectOption('sec_bld', val); 
						if (name == 'Primary Department' && document.getElementById('prim_dept') != null) selectOption('prim_dept', val); 
						if (name == 'Secondary Department' && document.getElementById('sec_dept') != null) selectOption('sec_dept', val); 
						if (name == 'Registered Through' && document.getElementById('month') != null) {
							var year = val.substr(0,4);
							//alert(val);
							var month = val.substr(5);
							selectOption('month', month);
							selectOption('year', year);
						}
					}
				}
		
				selectOption('timeZoneId', timeZoneId);
				
				getObject('display_username').innerHTML = getObject('username').value;
				if (user.first_name != 'First Name') getObject('fName').value = user.first_name;
				if (user.last_name != 'Last Name') getObject('lName').value = user.last_name;
				
				for (var title in user.devices) {
					var address = user.devices[title];
					var inputs = document.updatefrm.getElementsByTagName('input');
					for (var i=0; i<inputs.length; i++) {
						if (inputs[i].title == title) inputs[i].value = address;
					}
				}
				// populate devices ===========
				for (var i=0; i<user.pagers.length; i++) {
					var p = user.pagers[i];
					for (var j=0; j<pagerOrder.length; j++) {
						//alert(pagerOrder[j] +' '+ p.desc);
						if (pagerOrder[j] == p.desc) {
							document.getElementById('add_pgr_'+(j+1)).value = p.address;
							if (p.pin != null) document.getElementById('pin_pgr_'+(j+1)).value = p.pin;
							document.getElementById('car_pgr_'+(j+1)).value = p.carrier;
							break;
						}
					}
				}
				if (getDivisionsSet) { getDivisions(); } else { toggle_content('content'); }
			} else {
				var err = '<p>'+errImg+' User not found.</p>';
				toggle_content('login');
				err_message.innerHTML = err;
			}
		} else {
			var err = xmlDoc.getElementsByTagName('errorMessage')[0].childNodes[0].nodeValue;
			var auth = '<p>'+errImg+' Invalid username and password. Please try again.</p>';
			if (err.substr(0,20) == 'Authorization failed') err = auth;
			toggle_content('login');
			err_message.innerHTML = err;
		}
	} else { 
		var err = '<p>'+errImg+' Sorry, this service is temporarily unavailable.</p>';
		toggle_content('login');
		err_message.innerHTML = err;
	}
}

function getDivisions() {
	var post_str = '';
	var username = escape(getObject('username').value);
	var password = escape(getObject('password').value);
	var post_str = ('username=' + username + '&password=' + password + '&wscall=' + division);
	Post(wsurl, post_str, division);
	toggle_content('processing');
}

function parse_getDivisions(xml_string) {
	var success = null; var xmlDoc = null;
	try { xmlDoc = domObj(xml_string); success = xmlDoc.getElementsByTagName('success')[0].childNodes[0].nodeValue; } catch(err) { if (debug) alert(err); }
	if (success!=null && xmlDoc != null) {
		if (success == 'true') {
			var names = xmlDoc.getElementsByTagName('name');
			loadDivision(names);
			renderDivisions();
			toggle_content('content');
		} else {
			var err = '<p>'+errImg+' Sorry, this service is temporarily unavailable.</p>';
			toggle_content('login');
			err_message.innerHTML = err;
		}
	} else { 
		var err = '<p>'+errImg+' Sorry, this service is temporarily unavailable.</p>';
		toggle_content('login');
		err_message.innerHTML = err;
	}
}

// This is really ugly but there was no way to render the divisions dinamic the way that 
// they come back out of the API unless you hard code the depth. This will go 20 layers deep.
function divisionAssign(splits, divObj) {
  try {
	switch (splits.length) {
		case 2: divisions[splits[0]].children[divObj.name] = divObj; break;
		case 3: divisions[splits[0]].children[splits[1]].children[divObj.name] = divObj; break;
		case 4: divisions[splits[0]].children[splits[1]].children[splits[2]].children[divObj.name] = divObj; break;
		case 5: divisions[splits[0]].children[splits[1]].children[splits[2]].children[splits[3]].children[divObj.name] = divObj; break;
		case 6: divisions[splits[0]].children[splits[1]].children[splits[2]].children[splits[3]].children[splits[4]].children[divObj.name] = divObj; break;
		case 7: divisions[splits[0]].children[splits[1]].children[splits[2]].children[splits[3]].children[splits[4]].children[splits[5]].children[divObj.name] = divObj; break;
		case 8: divisions[splits[0]].children[splits[1]].children[splits[2]].children[splits[3]].children[splits[4]].children[splits[5]].children[splits[6]].children[divObj.name] = divObj; break;
		case 9: divisions[splits[0]].children[splits[1]].children[splits[2]].children[splits[3]].children[splits[4]].children[splits[5]].children[splits[6]].children[splits[7]].children[divObj.name] = divObj; break;
		case 10: divisions[splits[0]].children[splits[1]].children[splits[2]].children[splits[3]].children[splits[4]].children[splits[5]].children[splits[6]].children[splits[7]].children[splits[8]].children[divObj.name] = divObj; break;
		case 11: divisions[splits[0]].children[splits[1]].children[splits[2]].children[splits[3]].children[splits[4]].children[splits[5]].children[splits[6]].children[splits[7]].children[splits[8]].children[splits[9]].children[divObj.name] = divObj; break;
		case 12: divisions[splits[0]].children[splits[1]].children[splits[2]].children[splits[3]].children[splits[4]].children[splits[5]].children[splits[6]].children[splits[7]].children[splits[8]].children[splits[9]].children[splits[10]].children[divObj.name] = divObj; break;
		case 13: divisions[splits[0]].children[splits[1]].children[splits[2]].children[splits[3]].children[splits[4]].children[splits[5]].children[splits[6]].children[splits[7]].children[splits[8]].children[splits[9]].children[splits[10]].children[splits[11]].children[divObj.name] = divObj; break;
		case 14: divisions[splits[0]].children[splits[1]].children[splits[2]].children[splits[3]].children[splits[4]].children[splits[5]].children[splits[6]].children[splits[7]].children[splits[8]].children[splits[9]].children[splits[10]].children[splits[11]].children[splits[12]].children[divObj.name] = divObj; break;
		case 15: divisions[splits[0]].children[splits[1]].children[splits[2]].children[splits[3]].children[splits[4]].children[splits[5]].children[splits[6]].children[splits[7]].children[splits[8]].children[splits[9]].children[splits[10]].children[splits[11]].children[splits[12]].children[splits[13]].children[divObj.name] = divObj; break;
		case 16: divisions[splits[0]].children[splits[1]].children[splits[2]].children[splits[3]].children[splits[4]].children[splits[5]].children[splits[6]].children[splits[7]].children[splits[8]].children[splits[9]].children[splits[10]].children[splits[11]].children[splits[12]].children[splits[13]].children[splits[14]].children[divObj.name] = divObj; break;
		case 17: divisions[splits[0]].children[splits[1]].children[splits[2]].children[splits[3]].children[splits[4]].children[splits[5]].children[splits[6]].children[splits[7]].children[splits[8]].children[splits[9]].children[splits[10]].children[splits[11]].children[splits[12]].children[splits[13]].children[splits[14]].children[splits[15]].children[divObj.name] = divObj; break;
		case 18: divisions[splits[0]].children[splits[1]].children[splits[2]].children[splits[3]].children[splits[4]].children[splits[5]].children[splits[6]].children[splits[7]].children[splits[8]].children[splits[9]].children[splits[10]].children[splits[11]].children[splits[12]].children[splits[13]].children[splits[14]].children[splits[15]].children[splits[16]].children[divObj.name] = divObj; break;
		case 19: divisions[splits[0]].children[splits[1]].children[splits[2]].children[splits[3]].children[splits[4]].children[splits[5]].children[splits[6]].children[splits[7]].children[splits[8]].children[splits[9]].children[splits[10]].children[splits[11]].children[splits[12]].children[splits[13]].children[splits[14]].children[splits[15]].children[splits[16]].children[splits[17]].children[divObj.name] = divObj; break;
		case 20: divisions[splits[0]].children[splits[1]].children[splits[2]].children[splits[3]].children[splits[4]].children[splits[5]].children[splits[6]].children[splits[7]].children[splits[8]].children[splits[9]].children[splits[10]].children[splits[11]].children[splits[12]].children[splits[13]].children[splits[14]].children[splits[15]].children[splits[16]].children[splits[17]].children[splits[18]].children[divObj.name] = divObj; break;
	}
  } catch (e) { ; }
}

function loadDivision(namesXml) {
	for (var i=0; i<namesXml.length; i++) {
		var path = namesXml[i].childNodes[0].nodeValue;
		if (!(path.length==1 && path=='/')) { 
			var splits = path.substr(1, (path.length-1)).split('/');
			var root = createDivision(splits); 
		}
	}
}

function createDivision(splits) {
	var parent = divisions[splits[0]];
	if (parent) {
		var path = '';
		for (var k=0; k<=splits.length-1; k++) { path += ("/"+splits[k]); }
		var divObj = new Division(splits[splits.length-1], path);
		divisionAssign(splits, divObj);
	} else {
		divisions[splits[splits.length-1]] = new Division(splits[splits.length-1], ("/"+splits.join('/')));
	}
}

function renderDivisions() {
	var content = ''; var gap = ''; var selected = '';
	var divisionsDiv = document.getElementById('divisionsDiv');
	var divisionsInput = document.getElementById('divisions');
	if (divisionsInput != null && divisionsInput != undefined && divisionsDiv != null && divisionsDiv != undefined ) {
		if (user.division == '/') { selected = "selected=\"selected\""; }
		content += "<select name=\"divisions\" id=\"divisions\" title=\""+divisionsInput.title+"\"><option value=\"\">- select -</option>";
		if (parent == '/' || parent == 'root') { content += "<option title=\"root\" value=\"/\" "+selected+">"+parentDivision+"</option>"; }
		content = createDivisionOptions(divisions, content, gap);
		content += "</select><span id=\"divisions_req\"  class=\"reqField\"></span>";
		divisionsDiv.innerHTML = content;
		changeFieldStatus(document.getElementById('divisions'), update_fields, 'update', true);
	}
}


function createDivisionOptions(ary, content, gap) {
	gap += '&nbsp;&nbsp;';
	for (var name in ary) {
		var selected = '';
		divisionObj = ary[name];
		var divNodes = user.division.split("/");
		if (divNodes[divNodes.length-1] == name) { selected = "selected=\"selected\""; }
		content += ("<option value=\""+divisionObj.path+"\" title=\""+name+"\" "+selected+">"+gap+name+"</option>");
		content = createDivisionOptions(divisionObj.children, content, gap);
	}
	return content;
}

function hasChildren(ary) { var hasChild = false; for (var id in ary) { hasChild = true; } return hasChild; }

function selectOption(id, target_val) {
	var obj = getObject(id);
	if (obj!=undefined && obj!=null) {
		var o = getObject(id).options;
		for (var i=0; i<o.length; i++) {
			if (o[i].value == target_val) o[i].selected = true;
		}
	}
}

function popSelect(obj, valuesAry) {
	var o = obj.options; var i=1;
	o[0] = new Option("- select paging provider -","");
	for (var value in valuesAry) {
		var text = valuesAry[value];
		o[i] = new Option(text,value.substr(0,(value.length-3)));
		o[i].title = text;
		i++;
	}
}

function trimString(str) { /*str = this != window? this : str;*/ 
	str = str.replace(/^\s+/g, ''); 
	str = str.replace(/\s+$/g, ''); 
	return str;
}

function removeTrail() {
	var all_update_fields = document.updatefrm.getElementsByTagName('input');
	for (var i=0; i<all_update_fields.length; i++) {
		all_update_fields[i].value = trimString(all_update_fields[i].value);
	}
}

function confirmUpdate() {
	removeTrail();
	var all_update_fields = document.updatefrm.getElementsByTagName('input');
	var all_update_select = document.updatefrm.getElementsByTagName('select');
	var all_update_merged = concatCollections(all_update_fields, all_update_select);
	var all_fields = checkFields(update_fields, all_update_merged, 'update');
	var month = null; var year = null;
	if (all_fields == true) {
		var content = '';
		var div = getObject('confirm');
		var username = getObject('username').value;
		
		content += ('<div><br /><br /><p>Please review the following information. Press <b>Back</b> to make changes or <b>Confirm</b> if all information is correct.</p>');
		content += ('<br /><table cellspacing="10">');
		content += ('<tr><td class="confirm_l">Username:</td><td class="confirm_r">'+username+'</td></tr>');
		
		for (var i=0; i<all_update_merged.length; i++) {
			var omit_field = false;
			for (var j=0; j<all_update_merged.length; j++) { if (all_update_merged[i].id == omit_ids[j]) { omit_field = true; } }
			if (!omit_field) {
				//alert(all_update_merged[i].title);
				var render = true;
				var _i = all_update_merged[i];
				if (_i.id == 'divisions') render = false;
				if (_i.type == 'select-one' && document.getElementById('aff')!=null) { 
					if (_i.id == 'aff') render = false;
					if ((_i.id == 'prim_bld') || (_i.id == 'sec_bld') || (_i.id == 'prim_dept') || (_i.id == 'sec_dept')) {
						if (affStatus == 'reg_thru' || affStatus == 'none') { render = false; }
					}
				}
				//alert('_i.id='+_i.id+' _i.type='+_i.type+' affStatus='+affStatus+' render='+render);
				if (_i.type != 'button' && _i.type != 'submit' && _i.value != '' && render == true) {
					var val = '';
					var title = _i.title;
					if (_i.id == 'newPassword') {
						for (var j=0; j<_i.value.length; j++) { val += '&bull;'; }
						content += ('<tr><td class="confirm_l">'+title+':</td><td class="confirm_r">'+val+'</td></tr>');
					} else 	if (_i.type != 'password' && (_i.id!='month' && _i.id!='year')) {
						val = _i.value;
						if (_i.type == 'hidden' && _i.name == 'sms') { 
							content += ('');
						} else {
							content += ('<tr><td class="confirm_l">'+title+':</td><td class="confirm_r">'+val+'</td></tr>');
						}
					}
				}
			}
		}
		
		for (var i=0; i<pagerOrder.length; i++) {
			var add = document.getElementById('add_pgr_'+(i+1));
			var pin = document.getElementById('pin_pgr_'+(i+1));
			var car = document.getElementById('car_pgr_'+(i+1));
			if (add.value!="") content += ('<tr><td class="confirm_l">'+add.title+' Number:</td><td class="confirm_r">'+add.value+'</td></tr>');
			if (pin.value!="") content += ('<tr><td class="confirm_l">'+pin.title+':</td><td class="confirm_r">'+pin.value+'</td></tr>');
			if (car.value!="") content += ('<tr><td class="confirm_l">'+car.title+':</td><td class="confirm_r">'+car[car.selectedIndex].title+'</td></tr>');
		}
		
		// display Affiliation Options
		if (document.getElementById('aff')!=null) {
			var aff = getObject('aff');
			content += ('<tr><td class="confirm_l">'+aff.title+':</td><td class="confirm_r">'+aff.value+'</td></tr>');
			var index = getObject('aff').selectedIndex;
			var display = getObject('aff').options[index].className;
		}
		var all_divs = document.getElementsByTagName('div');
		var loc = false; var reg_thru = false;
		
		if (document.getElementById('aff') != null) {
			if (display == 'loc' || display == 'all') loc = true;
			if (display == 'reg_thru' || display == 'all') reg_thru = true;
		} else {
			if ((document.getElementById('prim_bld') != null) || (document.getElementById('prim_dept') != null)) loc = true;
			if (document.getElementById('year') != null) reg_thru = true;
		}
		
		var division = document.getElementById('divisions');
		if (division != 'undefined' && division != null) {
			if (division.name == 'divisions') { 
				var selectedTitle = '';
				for (var j=0; j<division.options.length; j++) { 
					if (division.value == "/") {
						selectedTitle = 'root';
					} else {
						var divNodes = division.value.split("/");
						if (division.options[j].title == divNodes[divNodes.length-1]) { selectedTitle = division.options[j].title; break; } 
					}
				}
				content += ('<tr><td class="confirm_l">'+division.title+':</td><td class="confirm_r">'+selectedTitle+'</td></tr>'); 
			}
		}

		if (reg_thru && document.getElementById('month') != null) {
			var month = getObject('month').value;
			var year = getObject('year').value;
			content += ('<tr><td class="confirm_l">Registered Through:</td><td class="confirm_r">'+month+'/'+year+'</td></tr>');
		}
		// End Affiliation Options
	
		content += ('<tr><td>&nbsp;</td><td><input type="button" onClick="toggle_content(\'content\');" class="button" value="Back" />');
		content += ('<input type="submit" class="button" value="Confirm" /></td></table></div>');
		
		div.innerHTML = content;
		toggle_content('confirm');
	}
}

function updateRecip() {
	var all_update_fields = document.updatefrm.getElementsByTagName('input');
	var all_update_select = document.updatefrm.getElementsByTagName('select');
	var all_update_merged = concatCollections(all_update_fields, all_update_select, null);
	var all_fields = checkFields(update_fields, all_update_merged, 'update');
	var post_str = '';
	
	user.first_name = getObject('fName').value;
	user.last_name = getObject('lName').value;
	
	if (all_fields == true) {
		var total_dev=0;
		var username = escape(getObject('username').value);
		var oldPassword = escape(getObject('password').value);
		var new_pass_field = getObject('newPassword');
		if (new_pass_field!=null) { newPassword = escape(new_pass_field.value); }
		
		var post_str = ('username='+username+'&oldPassword='+oldPassword+'&wscall='+update);
		post_str += ('&firstName='+escape(user.first_name)+'&lastName='+escape(user.last_name)+'&user_id='+user.user_id);
		if (new_pass_field!=null) { post_str += ('&newPassword='+newPassword) }
		var sms = getObject('sms');
		if (document.getElementById('sms')!=null) {
			if (sms.type == 'hidden') sms.value = getObject('mobilePhone').value;
		}

		for (var i=0; i<d_order.length; i++) {
			var d_name = d_order[i];
			for (var j=0; j<all_update_merged.length; j++) {
				var title = all_update_merged[j].title; var id = all_update_merged[j].id; 
				var val = escape(all_update_merged[j].value); var name = all_update_merged[j].name;
				if (val != '') {
					if ((name.substr(0,8) == d_name.substr(0,8)) || (name.substr(0,3) == d_name.substr(0,3) && d_name == "sms")) {
						if (id.substr(0,4) == "car_") {
							post_str += ('&d_'+name+'_pcar='+val);
						} else if (id.substr(0,4) == "pin_") {
							post_str += ('&d_'+name+'_ppin='+val);
						} else if (id.substr(0,4) == "add_") {
							post_str += ('&d_'+name+'='+val);
							post_str += ('&d_'+name+'_desc='+title);
						} else {
							post_str += ('&d_'+id+'='+val);
							post_str += ('&d_'+id+'_desc='+title);
							total_dev++;
						}
					}
				}
			}
		}
		
		// display Affiliation Options
		var all_divs = document.getElementsByTagName('div');
		
		var license = document.getElementById('license');
		var licenseVal = null;
		if (license != null) { 
			if (getObject('license').value == '') { licenseVal = 'n/a'; } else { licenseVal = getObject('license').value }
			custom_fields['license'] = escape(licenseVal); 
		}
	
		var nuid = document.getElementById('nuid');
		var nuidVal = null;
		if (nuid != null) { 
			if (getObject('nuid').value == '') { nuidVal = 'n/a'; } else { nuidVal = getObject('nuid').value }
			custom_fields['nuid'] = escape(nuidVal); 
		}
		
		var aff = document.getElementById('aff');
		if (aff != null) { custom_fields['aff'] = escape(getObject('aff').value); }
		if (aff!=null) {
			var index = getObject('aff').selectedIndex;
			var display = getObject('aff').options[index].className;
		}
		
		var loc = false; var reg_thru = false;
		if (document.getElementById('aff') != null) {
			if (display == 'loc' || display == 'all') loc = true;
			if (display == 'reg_thru' || display == 'all') reg_thru = true;
		} else {
			if ((document.getElementById('prim_bld') != null) || (document.getElementById('prim_dept') != null)) loc = true;
			if (document.getElementById('year') != null) reg_thru = true;
		}

		for (var i=0; i<all_divs.length; i++) {
			if ( (loc && document.getElementById('prim_bld') != null) || (loc && document.getElementById('prim_dept') != null)) {
				if (all_divs[i].id == 'loc') {
					var selects = all_divs[i].getElementsByTagName('select');
					for (var j=0; j<selects.length; j++) {
						var sel_id = selects[j].id;
						for (var id in custom_fields) {
							if (id == sel_id) {
								if (document.getElementById(id) != null) {
									var val = selects[j].value;
									if (val == '- select -' || val == '') val = 'n/a';
									custom_fields[id] = val;
								} 
							}
						}
					}
				}
			}
		}
		
		//post_str += postAddressValues();
			
		var division = document.getElementById('divisions');
		if (division != 'undefined' && division != null) { 
			if (division.value == '') division.value = 'n/a';
			if (division.name == 'divisions') { post_str += ('&'+division.id+'=' + escape(division.value)); } 
		}
		
		var timeZoneId = document.getElementById('timeZoneId');
		if (timeZoneId != 'undefined' && timeZoneId != null) { 
			if (timeZoneId.value == '') timeZoneId.value = 'n/a';
			if (timeZoneId.name == 'timeZoneId') { post_str += ('&'+timeZoneId.id+'=' + escape(timeZoneId.value)); } 
		}
		
		var add_facLoc = document.getElementById('facilityLocation');
		if (add_facLoc != 'undefined' && add_facLoc != null) { 
			if (add_facLoc.value == '') add_facLoc.value = 'n/a';
			if (add_facLoc.name == 'facilityLocation') { post_str += ('&'+add_facLoc.id+'=' + escape(add_facLoc.value)); } 
		}
		
		var add_add1 = document.getElementById('address1');
		if (add_add1 != 'undefined' && add_add1 != null) { 
			if (add_add1.value == '') add_add1.value = 'n/a';
			if (add_add1.name == 'address1') { post_str += ('&'+add_add1.id+'=' + escape(add_add1.value)); } 
		}
		
		var add_add2 = document.getElementById('address2');
		if (add_add2 != 'undefined' && add_add2 != null) { 
			if (add_add2.value == '') add_add2.value = 'n/a';
			if (add_add2.name == 'address2') { post_str += ('&'+add_add2.id+'=' + escape(add_add2.value)); } 
		}
		
		var add_bld = document.getElementById('building');
		if (add_bld != 'undefined' && add_bld != null) { 
			if (add_bld.value == '') add_bld.value = 'n/a';
			if (add_bld.name == 'building') { post_str += ('&'+add_bld.id+'=' + escape(add_bld.value)); } 
		}
		
		var add_floor = document.getElementById('floor');
		if (add_floor != 'undefined' && add_floor != null) { 
			if (add_floor.value == '') add_floor.value = 'n/a';
			if (add_floor.name == 'floor') { post_str += ('&'+add_floor.id+'=' + escape(add_floor.value)); } 
		}
		
		var add_city = document.getElementById('city');
		if (add_city != 'undefined' && add_city != null) { 
			if (add_city.value == '') add_city.value = 'n/a';
			if (add_city.name == 'city') { post_str += ('&'+add_city.id+'=' + escape(add_city.value)); } 
		}
		
		var add_state = document.getElementById('state');
		if (add_state != 'undefined' && add_state != null) {
			var val = 'n/a';
			if (add_state.value != '') val = add_state.value;
			if (add_state.name == 'state') { post_str += ('&'+add_state.id+'=' + escape(val)); } 
		}
		
		var add_zip = document.getElementById('zip');
		if (add_zip != 'undefined' && add_zip != null) { 
			if (add_zip.value == '') add_zip.value = 'n/a';
			if (add_zip.name == 'zip') { post_str += ('&'+add_zip.id+'=' + escape(add_zip.value)); } 
		}
		
		var add_prov = document.getElementById('province');
		if (add_prov != 'undefined' && add_prov != null) { 
			if (add_prov.value == '') add_prov.value = 'n/a';
			if (add_prov.name == 'province') { post_str += ('&'+add_prov.id+'=' + escape(add_prov.value)); } 
		}
		
		var add_country = document.getElementById('country');
		if (add_country != 'undefined' && add_country != null) { 
			if (add_country.value == '') add_country.value = 'n/a';
			if (add_country.name == 'country') { post_str += ('&'+add_country.id+'=' + escape(add_country.value)); } 
		}	

		var add_jobTitle = document.getElementById('jobTitle');
		if (add_jobTitle != 'undefined' && add_jobTitle != null) { 
			if (add_jobTitle.value == '') add_jobTitle.value = 'n/a';
			if (add_jobTitle.name == 'jobTitle') { post_str += ('&'+add_jobTitle.id+'=' + escape(add_jobTitle.value)); } 
		}	

		var add_company = document.getElementById('company');
		if (add_company != 'undefined' && add_company != null) { 
			if (add_company.value == '') add_company.value = 'n/a';
			if (add_company.name == 'company') { post_str += ('&'+add_company.id+'=' + escape(add_company.value)); } 
		}	

		if (reg_thru) {
			var month = escape(getObject('month').value); custom_fields['month'] = month;
			var year = escape(getObject('year').value); custom_fields['year'] = year;
		}

		for (var id in custom_fields) {
			post_str += ('&'+id+'=' + escape(custom_fields[id]) );
		}
		
		// End Affiliation Options
		post_str += ('&total_dev='+total_dev);
		Post(wsurl, post_str, update);
		toggle_content('processing');
	}
}

function parse_updateRecip(xml_string) {
	var success = null; var xmlDoc = null;
	try { xmlDoc = domObj(xml_string); success = xmlDoc.getElementsByTagName('success')[0].childNodes[0].nodeValue; } catch(err) { if (debug) alert(err); }
	if (success!=null && xmlDoc != null) {
		if (success == 'true') {
			var errNum = 0;
			try { errNum = xmlDoc.getElementsByTagName('errorMessage')[0].childNodes.length != 0 } catch(err) { if (debug) alert(err); }
			if (errNum = 0) {
				var err = ("<p>"+xmlDoc.getElementsByTagName('errorMessage')[0].childNodes[0].nodeValue+"</p>");
				toggle_content('content');
				err_message.innerHTML = err;
			} else {
				var fName = getObject('fName').value;
				var lName = getObject('lName').value;
				getObject('thank_you').innerHTML = ('<p>Thank you <b>'+fName+' '+lName+'</b> for updating your profile with the emergency notification system.<br />'+
						'An email will be sent to you with all of your current updated information.</p>'+
						'<div class="redirect">'+redirectLink+'</div>');
				toggle_content('thank_you');
			}
		} else {
			var err = '<p>'+errImg+' Sorry, this service is temporarily unavailable.</p>';
			toggle_content('login');
			err_message.innerHTML = err;
		}
	} else { 
		var err = '<p>'+errImg+' Sorry, this service is temporarily unavailable.</p>';
		toggle_content('login');
		err_message.innerHTML = err;
	}
}

/*************  End API  *************/

/***************  Interface  ***************/

function doReplace(url) { location.replace(url); }

function toggle_content(divId) {
	err_message.innerHTML = '&nbsp;';
	var login_div = getObject('login');
	var forgot_div = getObject('forgot');
	var create_div = getObject('create');
	var content_div = getObject('content');
	var confirm_div = getObject('confirm');
	var thank_you_div = getObject('thank_you'); 
	var validate_div = getObject('processing'); 
	var poweredBy_div = getObject('poweredBy'); 
	var foot_span = getObject('foot'); 
	if (divId == 'content') {
		login_div.style.display = 'none';
		forgot_div.style.display = 'none';
		create_div.style.display = 'none';
		content_div.style.display = 'block';
		thank_you_div.style.display = 'none';
		validate_div.style.display = 'none';
		confirm_div.style.display = 'none';
		poweredBy_div.style.display = 'block';
		foot_span.style.display = 'none';
		thank_you_div.innerHTML = '';
	} else if (divId == 'thank_you'){
		login_div.style.display = 'none';
		forgot_div.style.display = 'none';
		create_div.style.display = 'none';
		content_div.style.display = 'none';
		thank_you_div.style.display = 'block';
		validate_div.style.display = 'none';
		confirm_div.style.display = 'none';
		foot_span.style.display = 'none';
		poweredBy_div.style.display = 'block';
	} else if (divId == 'create'){
		login_div.style.display = 'none';
		forgot_div.style.display = 'none';
		create_div.style.display = 'block';
		content_div.style.display = 'none';
		thank_you_div.style.display = 'none';
		validate_div.style.display = 'none';
		confirm_div.style.display = 'none';
		foot_span.style.display = 'block';
		poweredBy_div.style.display = 'block';
		thank_you_div.innerHTML = '';
	} else if (divId == 'forgot'){
		login_div.style.display = 'none';
		forgot_div.style.display = 'block';
		create_div.style.display = 'none';
		content_div.style.display = 'none';
		thank_you_div.style.display = 'none';
		validate_div.style.display = 'none';
		confirm_div.style.display = 'none';
		foot_span.style.display = 'block';
		poweredBy_div.style.display = 'block';
		thank_you_div.innerHTML = '';
	} else if (divId == 'processing'){
		login_div.style.display = 'none';
		forgot_div.style.display = 'none';
		create_div.style.display = 'none';
		content_div.style.display = 'none';
		thank_you_div.style.display = 'none';
		validate_div.style.display = 'block';
		confirm_div.style.display = 'none';
		foot_span.style.display = 'none';
		poweredBy_div.style.display = 'none';
		thank_you_div.innerHTML = '';
	} else if (divId == 'confirm'){
		login_div.style.display = 'none';
		forgot_div.style.display = 'none';
		create_div.style.display = 'none';
		content_div.style.display = 'none';
		thank_you_div.style.display = 'none';
		validate_div.style.display = 'none';
		confirm_div.style.display = 'block';
		foot_span.style.display = 'none';
		poweredBy_div.style.display = 'block';
		thank_you_div.innerHTML = '';
	} else {
		login_div.style.display = 'block';
		forgot_div.style.display = 'none';
		create_div.style.display = 'none';
		content_div.style.display = 'none';
		thank_you_div.style.display = 'none';
		validate_div.style.display = 'none';
		confirm_div.style.display = 'none';
		foot_span.style.display = 'block';
		poweredBy_div.style.display = 'block';
		thank_you_div.innerHTML = '';
	}
}

function logout() {
	clearAllFields();
	user = '';
	toggle_content('login');
}

function concatCollections(obj1, obj2) {
	var merged = new Array();
	for (var i=0; i<obj1.length; i++) { merged.push(obj1[i]); }
	for (var i=0; i<obj2.length; i++) { merged.push(obj2[i]); }
	return merged;
}

function checkSelect(field) {
	// this function returns a bool for whether or not to validate the value of a select
	var check_field = true;
	if ((field == selectstr || field == objectstr) && document.getElementById('aff') != null && document.getElementById('aff') != undefined) {
		if ((field.id == 'prim_bld') || (field.id == 'sec_bld') || (field.id == 'prim_dept') || (field.id == 'sec_dept')) {
			if (!(affStatus == 'loc' || affStatus == 'all')) { check_field = false; }
		}
	}
	return check_field;
}

function checkFields(required_fields, all_inputs, frm_name) {
	var ok_val = true; var ok_email = true; var ok_phone = true; var ok_pass = true; var ok = true; var ok_req = true; var ok_terms = true;
	var ok_new_user = true; var ok_pager = true; var ok_pager_pin = true;
	var incorrect_fields = '';
	var msg = '';
	
	for (var i=0; i<all_inputs.length; i++) {
		var is_req = false;
		var field = all_inputs[i];

		if (field.id == "termsAndCond") {
			if (!field.checked) {
				field.className = 'err';
				ok_req = false; ok_terms = false; is_req = true;
				incorrect_fields += ('<li>'+field.title+'</li>');
			} else {
				field.className = '';
			}
		} else if (((filterSpa(field.value)!=field.value) && (filterSpa(field.value) == ''))) { 
			ok_val = false; 
			changeFieldStatus(field, required_fields, frm_name, false);
		} else if (field.value == '') {
			for (var j=0; j<required_fields.length; j++) {
				if ((field.id == required_fields[j]) && (field.value.length == 0) && checkSelect(field)) { 
					ok_req = false;
					is_req = true; 
				}
			}
			if (is_req && checkSelect(field)) {
				changeFieldStatus(field, required_fields, frm_name, false);
				incorrect_fields += ('<li>'+field.title+'</li>');
			} else {
				changeFieldStatus(field, required_fields, frm_name, true);
			}
			if (checkPager(field.id)) {
				var is_pgr_cool = checkPagerComplete(field.id);
				//alert('field.id '+field.id+' ok_pager '+ok_pager+' checkPager(field.id)'+checkPager(field.id));
				//alert('is_pgr_cool'+is_pgr_cool);
				if (!is_pgr_cool) {
					ok_pager = false;
					changeFieldStatus(field, required_fields, frm_name, false);
					incorrect_fields += ('<li>'+field.title+'</li>');
				}
			}
		} else {
			var title = checkFieldValues(field);
			var is_pager_pin = checkPagerPin(field.id);
			if (is_pager_pin) {
				var pgrNum = field.id.substr((field.id.length-1),1);
				if ((document.getElementById('add_pgr_'+pgrNum).value == "") && (document.getElementById('car_pgr_'+pgrNum).value == "")) {
					ok_pager_pin = false;
					ok_pager = false;
					ok_val = false;	
				}
			}
	
			if (title != true) {
				if (field.id == 'new_username') { ok_new_user = false; }
				var is_email = checkType(field.id, email_ary); 
				var is_phone = checkType(field.id, phone_ary);
				var is_pager = checkPager(field.id);
				
				if (is_email) {
					ok_email = false;
					ok_val = false;	
				} else if (is_phone) {
					ok_phone = false;
					ok_val = false;	
				} else if (is_pager) {
					ok_pager = false;
					ok_val = false;	
				} else if (is_pager_pin) {
					ok_pager_pin = false;
					ok_val = false;	
				} else {
					ok_val = false;	
				}
				changeFieldStatus(field, required_fields, frm_name, false);
				incorrect_fields += ('<li>'+title+'</li>');
				ok_val = false;
			} else {
				changeFieldStatus(field, required_fields, frm_name, true);
			}
		}
	}
	
	if (ok_req) {
		var new_pass = getObject('newPassword');
		var new_pass2 = getObject('newPassword2');
		if (new_pass!=null) { 
			ok_pass = checkPass(new_pass.value, new_pass2.value); 
		} else { 
			ok_pass = true 
		}
	} 
	
	var ok_reg = true;
	var checkDate = false;
	try { affVal = document.getElementById('aff').options[document.updatefrm.aff.selectedIndex].className; if (affVal == 'reg_thru' || affVal == 'all') checkDate = true; 
	} catch(err) { if (debug) alert(err); }
	if (frm_name == 'update' && checkDate) ok_reg = chkCurMonth();
	if (!ok_req) msg += 'Required fields are missing values. ';
	if (!ok_pass) msg += 'New passwords must match exactly and be 6-10 characters long.';
	if (!ok_reg) msg += 'Please select a month and year in the future. ';
	if (!ok_new_user) msg += 'Please correct the following fields by entering a valid organization email address: ';
	if (!ok_val || !ok_phone || !ok_email || !ok_pager || !ok_pager_pin) {
		//alert((!ok_val || !ok_phone || !ok_email)+' ok_val:'+!ok_val+' ok_phone:'+!ok_phone +' ok_email:'+ !ok_email)
		if (!ok_email && !ok_phone) {
			msg += 'Please correct the following fields by entering correct email addresses and phone numbers (111-222-3333): ';
		} else if (ok_email == true && ok_phone == true && ok_pager == true) {
			msg += 'Please correct the following fields by entering valid information: ';
		} else {
			if (!ok_email && ok_new_user) msg += 'Please correct the following fields by entering valid email addresses: ';
			if (!ok_phone && !ok_pager) { 
				msg += 'Please correct the following fields by entering valid information.<br \>Pagers must have a number and provider.<br \>';
				msg += 'Pager and phone numbers should resemble the following: (111-222-3333)<br /> ';
			} else 	if (!ok_pager) { 
				msg += 'Please correct the following fields by entering valid information.<br \>Pagers must have a number and provider.<br \>';
				msg += 'Pager numbers should resemble the following: (111-222-3333)<br /> ';
			} else if (!ok_phone) {
				msg += 'Please correct the following fields by entering valid information.<br \>'+'Phone numbers should resemble the following: (111-222-3333)<br \>';
			}
		}
		if (!ok_pager_pin) {
			msg += 'Pager pin numbers should be 1-10 digits.';
		}
	}
	if (!ok_req || !ok_val || !ok_phone || !ok_email || !ok_pass || !ok_reg || !ok_pager || !ok_terms) {
		err_message.innerHTML = ('<p>'+errImg+' '+msg+'</p><ul>'+incorrect_fields+'</ul>');
		ok = false;
		assignAnchor();
		if (!ok_terms) getObject("termsAndCond").focus();
	}
	
	return ok;
}

function checkFieldValues(field) {
	var ok = true;
	var title = field.title;
	var id = field.id.substr(0,8); 
	// the checkType function uses the global arrays for each type of device filter: email_ary, phone_ary, other
	var is_email = checkType(id, email_ary);
	var is_phone = checkType(id, phone_ary);
	var is_pager = checkPager(id);
	var is_pager_pin = checkPagerPin(id);
	
	// customFilter is in renderForm.php so it can be customized in config.php
	if (field.value != '') {
		if (is_email) {
			if (field.id == 'new_username') {
				ok = checkmail(field.value, customFilter);
			} else {
				ok = checkmail(field.value, defFilter);
			}
			if (field.value.length > 499) ok = false;
		} else if (is_phone) {
			ok = checkPhone(field.value);
			if (field.value.length > 499) ok = false;
		} else if (is_pager) {
			// nothing special
		} else if (is_pager_pin) {
			if (field.id.substr(0,3) == 'pin') {
				ok = filterBra(field.value);
				if (field.value.length > 10) ok = false;
			} 
		} else {
			if (field.id == 'divisions') {
				ok = filterDivisions(field.value);
			} else if (field.id=='zip') {
				if ((filter_num.test(field.value)) || (re_let.test(field.value))) ok = false;
				if (field.value.length>20) ok = false;
				if (field.value.length<5)  ok = false;
			} else {
				ok = filterBra(field.value);
				if (field.value.length > 49) ok = false;
			}
		}
	} 

	if (ok == true) { return ok; } else { return title; }
}

function filterDivisions(str) {
	var returnval = true;
	if(str != '') {
		if (filter_divisions.test(str)) returnval = false;
	}
	return returnval;
}

function filterBra(str) {
	var returnval = true;
	if(str != '') {
		if (filter_bra.test(str) || (filter_utf8.test(str))) returnval = false;
	}
	return returnval;
}

function filterNum(str) {
	//re = /\$|,|@|#|~|`|\%|\*|\^|\&|\(|\)|\+|\=|\[|\-|\_|\]|\[|\}|\{|\;|\:|\'|\"|\<|\>|\?|\||\\|\!|\$|\./g;
	return str.replace(filter_num, "");
}
function filterLet(str) {
	//re = /[a-zA-Z]/g;
	return str.replace(filter_let, "");
}
function filterSpa(str) {
	//re = /^[ \t]+|[ \t]/g;
	return str.replace(filter_spa, "");
}

function checkType(type, typeAry) {
	var is_type = false;
	for (var i=0; i<typeAry.length; i++) {
		if (typeAry[i].substr(0,8) == type.substr(0,8)) is_type = true; //this input.substr() is university specific... delete if using anywhere else;
	}
	return is_type;
}

///////////		Validate Pager	 //////////
function checkPager(id) {
	var is_pager = false;
	if (id.substr(3, 5) == "_pgr_" && id.substr(0, 8) != "pin_pgr_") { is_pager = true; }
	return is_pager;
}

function checkPagerPin(id) {
	var is_pager_pin = false;
	if (id.substr(0, 8) == "pin_pgr_") { is_pager_pin = true; }
	return is_pager_pin;
}

function checkPagerComplete(id) {
	var is_cool = true;
	var pgrNum = id.substr((id.length-1),1);
	var add = (document.getElementById('add_pgr_'+pgrNum).value == "");
	//var pin = (document.getElementById('pin_pgr_'+pgrNum).value == "");
	var car = (document.getElementById('car_pgr_'+pgrNum).value == "");
	
	if (!(add && car)) { is_cool = false; }
	//if (!(add && pin && car)) { is_cool = false; }
	
	return is_cool;
}

///////////		Validate Email		//////////
function checkmail(email, filter) {
	var returnval = true;
	if(email != '') {
		for (var i=0; i<filter.length; i++) {
			returnval = filter[i].test(email);
			if (returnval) break;
		}
	}
	return returnval;
}
///////////		End Validate Email		//////////

function checkPass(new_pass, new_pass2) {
	is_ok = false;
	
	if ((filterSpa(new_pass) == '' && filterSpa(new_pass2).length == '') && (new_pass.length == 0 && new_pass2.length == 0)) {
		is_ok = true;
	} else {
		if (filterSpa(new_pass).length > 5 && filterSpa(new_pass).length < 11) {
			if (new_pass == new_pass2) {
				is_ok = true;
			}
		}
	} 
	return is_ok;
}

function clearPhone(elem) {
	var deviceVal; 
	//document.frm.Phone.value=filterNum(document.frm.Phone.value)
	if(elem != 'undefined'){
		deviceVal = filterNum(elem.value);
		elem.value = deviceVal;
		deviceVal = filterLetX(elem.value)
		elem.value = deviceVal;
		deviceVal = filterSpa(elem.value)
		elem.value = deviceVal;
	} else {
		alert("elem is blank");
	}
}

function checkPhone(phone) {
	var deviceVal; 
	var isFull = true;
	if (phone != 'undefined'){
		deviceVal = filterSpa(phone);
		if ((filter_num.test(deviceVal)) || (re_let.test(deviceVal))) isFull = false;
		if (deviceVal.length<10) isFull = false;
		//alert(filter_num.test(deviceVal) +', '+ re_let.test(deviceVal));
	} else {
		isFull = false;
	}
	return isFull;
}

function filterForLetX(str) { 
	var re_num = /[0-9]/g; str = str.replace(re_num, "");
	var re_spe = /\(|\)|\.|\+/g; str = str.replace(re_spe, "");
	str = filterLetX(str);
	str = filterSpa(str);
	return str;
}

function filterNum(str) {
//	re = /\$|,|@|#|~|`|\%|\*|\^|\&|\(|\)|\+|\=|\[|\-|\_|\]|\[|\}|\{|\;|\:|\'|\"|\<|\>|\?|\||\\|\!|\$|\./g;
	re = /\$|@|~|`|\%|\*|\^|\&|\(|\)|\=|\[|\-|\_|\]|\[|\}|\{|\;|\:|\'|\"|\<|\>|\?|\||\\|\!|\$|\./g;
	return str.replace(re, "");
}
function filterLetX(str) { var re = /[a-wA-Wy-zY-Z]/g; return str.replace(re, ""); }
function filterLet(str) {	re = /[a-zA-Z]/g; return str.replace(re, ""); }
function filterSpa(str) { re = /^[ \t]+|[ \t]/g; return str.replace(re, ""); }

function changeDisplay(ary, display) {
	for (var i=0; i<ary.length; i++) {
		ary[i].style.display = display;
	}	
}

function toggleView() {
	var i_reg = [];
	var i_loc = [];
	var aff = document.updatefrm.aff;
	var input = document.getElementsByTagName("div");
	
	for (var i=0; i<input.length; i++) {
		if (input[i].id == 'reg_thru') i_reg.push(input[i]); 
		if (input[i].id == 'loc') i_loc.push(input[i]);
	}
	
	if (aff != null) {
		var index = document.updatefrm.aff.selectedIndex;
		if (affView[index] == "reg_thru") {
			changeDisplay(i_reg, "");
			changeDisplay(i_loc, "none");
			affStatus = "reg_thru";
		} else if (affView[index] == "loc") {
			changeDisplay(i_reg, "none");
			changeDisplay(i_loc, "");
			affStatus = "loc";
		} else if (affView[index] == "none") {
			changeDisplay(i_reg, "none");
			changeDisplay(i_loc, "none");
			affStatus = "none";
		} else {
			changeDisplay(i_reg, "");
			changeDisplay(i_loc, "");
			affStatus = "all";
		}
	} else {
		changeDisplay(i_reg, "");
		changeDisplay(i_loc, "");
	}

}

// show Registered Through drop downs
var currentTime = new Date();
var currentMonth = currentTime.getMonth() + 1;
var currentYear = currentTime.getFullYear();
if (currentMonth == 12) currentYear++;
var max_num = (currentYear + totalYears);
var month = ("");

var listMonths = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December")

function showSelectYear() {
    var tmp = currentYear;
	while (tmp < max_num) {
		document.write("<option value='" + tmp + "'>" + tmp + "</option>")
		tmp++;
	}
}

function iCheck(elem) {
	if (elem < 9) {
		month = ("0" + (elem + 1));
	} else {
		month = (elem + 1);
	}
}

function showSelectMonths() {
	for (var i=0; i<listMonths.length; i++) {
		iCheck(i);
		if (i == currentMonth) {
			document.write("<option selected=\"selected\" value=\"" + month + "\">" + listMonths[i] + "</option>")
		} else {
			document.write("<option value=\"" + month + "\">" + listMonths[i] + "</option>")
		}
	}
}

function chkCurMonth() {
	var is_ok = true;
	if (document.getElementById('year') != null) {
		if (getObject('year').value == currentTime.getFullYear() && getObject('month').value < currentMonth) {
			is_ok = false;
		}
	}
	return is_ok;
}

function clearHTML(id) {
	getObject(id).innerHTML = '';
	return true;
}

function clearAllFields() { 
	user = '';
	var input_obj = document.getElementsByTagName("input");
	for (var i=0; i<input_obj.length; i++) {
		if (input_obj[i].type == "checkbox") {
			input_obj[i].checked = false;
		} else {
			input_obj[i].value = '';
		}
	}

	var textarea_obj = document.getElementsByTagName("textarea");
	for (var i=0; i<textarea_obj.length; i++) {
		textarea_obj[i].value = '';
	}
}

function loadRequiredIds(titles) {
	if (titles != null) {
		for (var i=0; i<titles.length; i++) {
			var title = titles[i];
			var inputs = document.getElementsByTagName('input');
			for (var j=0; j<inputs.length; j++) {
				if (inputs[j].title == title) update_fields.push(inputs[j].id);
			}
			var selects = document.getElementsByTagName('select');
			for (var j=0; j<selects.length; j++) {
				if (selects[j].title == title) update_fields.push(selects[j].id);
			}
		}	
	}
}

function setRequiredFields() {
	var inputs = document.updatefrm.getElementsByTagName('input');
	var selects = document.updatefrm.getElementsByTagName('select');
	var merged = concatCollections(inputs, selects, null);
	for (var i=0; i<merged.length; i++) {
		changeFieldStatus(merged[i], update_fields, 'update', true);
	}
}

function changeFieldStatus(inputObj, req_ary, frm_name, is_ok) {
	var is_req = false;
	for (var i=0; i<req_ary.length; i++) { if (req_ary[i] == inputObj.id) is_req = true; }
	if (frm_name == 'update') { var size = 'mid'; } else { var size = 'sm'; }
	if (inputObj.type != 'button' && inputObj.type != 'submit') {
		var err = '';
		if (!is_ok) err = '_err';
		inputObj.className = size+err;
		var span = document.getElementById(inputObj.id+'_req');
		if (is_req && span!= null) span.innerHTML = '*';
	}
}

function init() {
	if (document.location.protocol != 'https:') {
		var url = ('https://'+window.location.host+window.location.pathname);
		document.location.replace(url);
	} else {
		var name = navigator.appName;
		var version = navigator.appVersion;
		loadRequiredIds(update_titles);
		setRequiredFields();
		toggleView();
		try {
			document.getElementById("newPassword").value = "";
			document.getElementById("newPassword2").value = "";
		} catch (e) { ; }
		postLogin();
	}
}

function assignAnchor(new_anchor) {
	var href = window.location.toString();
	var hash_num = href.indexOf('#');
	var hash_length = (href.length - hash_num);
	var hash = href.substr((hash_num+1), hash_length);
	var new_href = href.substr(href, hash_num);

	if (new_anchor == null) {
		window.location.assign(new_href + '#');
	} else {
		window.location.assign(new_href + '#' + new_anchor);
	}
}

function assignAddressValues(xmlDocRecip) {
	for (var i=0; i<allAddressIds.length; i++) {
		var val = null; var field = document.getElementById(allAddressIds[i]);
		try { val = xmlDocRecip.getElementsByTagName(allAddressIds[i])[0].childNodes[0].nodeValue; } catch(err) { if (debug) alert(err); }
		if (val != null && val != 'n/a' && field != null && field != undefined) { field.value = val; }
	}
}

function postAddressValues() {
	var addressPostStr = '';
	for (var i=0; i<allAddressIds.length; i++) {
		var field = document.getElementById(allAddressIds[i]);
		if (field != 'undefined' && field != null) { 
			if (field.value == '') field.value = 'n/a';
			if (field.id == allAddressIds[i]) addressPostStr += ('&'+field.id+'=' + escape(field.value)); 
		}
	}
	return addressPostStr;
}


/*************  End Interface  *************/

/***************  AJAX  ***************/

var ie4 = false; if (document.all) { ie4 = true; }

function getObject(id) { 
	if (ie4) { 
		return document.all[id]; 
	} else { 
		return document.getElementById(id); 
	} 
}

function domObj(xml_string) {
	if (window.ActiveXObject) {
		var doc=new ActiveXObject("Microsoft.XMLDOM");
		doc.async="false";
		doc.loadXML(xml_string);
	} else {
		var parser=new DOMParser();
		var doc=parser.parseFromString(xml_string,"text/xml");
	}
	var x=doc.documentElement;
	return x;
}

function Post(url, content, wscall) {
	var xhr = createXHR();
	xhr.open("POST", url, true);
	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	xhr.onreadystatechange = function() {
		if(xhr.readyState == 4) {
			err_message.innerHTML = '&nbsp;';
			if (wscall == validate) {
				parse_validateUser(xhr.responseText);
			} else if (wscall == create) {
				parse_createUser(xhr.responseText);
			} else if (wscall == forgot) {
				parse_forgotPass(xhr.responseText);
			} else if (wscall == division) {
				parse_getDivisions(xhr.responseText);
			} else if (wscall == update) {
				parse_updateRecip(xhr.responseText);
			}
		}
	}
	xhr.send(content);
}

function createXHR() {
	var request = false;
	try {
		request = new ActiveXObject('Msxml2.XMLHTTP');
	} catch (err2) {
		try {
			request = new ActiveXObject('Microsoft.XMLHTTP');
		} catch (err3) {
			try {
				request = new XMLHttpRequest();
			} catch (err1) {
				request = false;
			}
		}
	}
	return request;
}

/*************  End AJAX  *************/
