function GetEvent(e) {
	
	if (window.event) {
		
		return window.event;
	}
	else if (e) {
		
		return e;
	}
	
	return null;
}

function GetEventTarget(e) {
	
	if (window.event && window.event.srcElement) {
		
		return window.event.srcElement;
	}
	else if (e && e.target) {
		
		return e.target;
	}
	
	return null;
}

function StopPropagation(e) {
	
	if (!e) {
		
		return;
	}
	
	if (window.event) {
		
		e.cancelBubble = true;
	}
	else if (e.stopPropagation) {
		
		e.stopPropagation();
	}
}

function PreventDefault(e) {
	
	if (!e) {
		
		return;
	}
	
	if (window.event) {
		
		e.returnValue = false;
	}
	else if (e.preventDefault) {
		
		e.preventDefault();
	}
}

function AddEvent(elm, evType, fn, useCapture) {
	
	if (!elm) {
		
		return;
	}
	
	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 AddListeners() {
	
	if (!document.getElementById) {
		
		return;
	}
	
	var btnDelete = document.getElementById('btnDelete');
	if (btnDelete) {
		
		AddEvent(btnDelete, 'click', HandleConfirmDelete, false);
	}
	
	var aInstrTgls = getElementsByPartialId('instrtgl', 'a', null);
	for (i = 0; i < aInstrTgls.length; i++) {
		
		AddEvent(aInstrTgls[i], 'click', HandleInstructionToggle, false);
		aInstrTgls[i].onclick = function() { return false; }
	}
	
	var rdoLocIds = getElementsByPartialId('rdoLocId', 'input', null);
	for (i = 0; i < rdoLocIds.length; i++) {
		
		AddEvent(rdoLocIds[i], 'click', HandleLocAddDetailDisplay, false);
	}
	
	var rdoAddIds = getElementsByPartialId('rdoAddId', 'input', null);
	for (i = 0; i < rdoAddIds.length; i++) {
		
		AddEvent(rdoAddIds[i], 'click', HandleLocAddDetailDisplay, false);
	}
	
	var rdoOrgIds = getElementsByPartialId('rdoOrgId', 'input', null);
	for (i = 0; i < rdoOrgIds.length; i++) {
		
		AddEvent(rdoOrgIds[i], 'click', HandleOrgDetailDisplay, false);
	}
	
	var aUncheckItems = document.getElementById('aUncheckItems');
	if (aUncheckItems) {
		
		AddEvent(aUncheckItems, 'click', HandleUncheckItems, false);
		aUncheckItems.onclick = function() { return false; }
	}
	
	var ddlLId = document.getElementById('ddlLId');
	var ddlIcId = document.getElementById('ddlIcId');
	if (ddlLId && ddlIcId) {
		
		AddEvent(ddlLId, 'change', HandleItemsAvailableDisplay, false);
		AddEvent(ddlIcId, 'change', HandleItemsAvailableDisplay, false);
	}
	
	var tbxLocPhone1 = document.getElementById('tbxLocPhone1');
	var tbxLocPhone2 = document.getElementById('tbxLocPhone2');
	if (tbxLocPhone1 && tbxLocPhone2) {
		
		AddEvent(tbxLocPhone1, 'keyup', HandlePhoneTabbing, false);
		AddEvent(tbxLocPhone2, 'keyup', HandlePhoneTabbing, false);
	}
}

function HandleConfirmDelete(e) {
	
	var event = GetEvent(e);

	if (!event || !document.getElementsByTagName) {
		
		return;
	}
	
	var hasGroup = false;
	var isGroupChecked = false;
	var inputArray = document.getElementsByTagName('input');
	for (i = 0; i < inputArray.length; i++) {
		
		if (inputArray[i].type == 'radio' || inputArray[i].type == 'checkbox') {
			hasGroup = true;
			
			if (inputArray[i].checked) {
			
				isGroupChecked = true;
				break;
			}
		}
	}
	
	if (hasGroup && !isGroupChecked) {
		
		alert('No items have been selected.'); PreventDefault(event);
	}
	else if (!confirm('Deleting is an unrecoverable action, please confirm.')) {
		
		PreventDefault(event);
	}
	
	StopPropagation(event);
}

function HandleInstructionToggle(e) {
	
	var event = GetEvent(e);
	
	if (!event || !document.getElementById) {
		
		return;
	}
	
	var id = GetElementId(GetEventTarget(event));
	if (!id) {
		
		return;
	}
	
	id = id.substring(id.indexOf('_', id.indexOf('_') + 1) + 1);
	if (!id) {
		
		return;
	}
	
	var divInstrBx = document.getElementById('instrbx_' + id);
	if (divInstrBx) {
		
		if (divInstrBx.style.display == 'none' || divInstrBx.style.display == '') {
			
			divInstrBx.style.display = 'block';
		}
		else {
			
			divInstrBx.style.display = 'none';
		}
	}
	
	PreventDefault(event);
	StopPropagation(event);
}

function HandleLocAddDetailDisplay(e) {
	
	var event = GetEvent(e);
	
	if (!event || !document.getElementById) {
		
		return;
	}
	
	var target = GetEventTarget(event);
	if (!target) {
		
		return;
	}
	
	var targetId = GetElementId(target);
	if (!targetId) {
		
		return;
	}
	
	var id = targetId.substring(targetId.indexOf('_') + 1);
	if (!id) {
		
		return;
	}
	
	var detail = null;
	if (targetId.substring(0, targetId.indexOf('_')) == 'rdoLocId') {
		
		detail = document.getElementById('locationDetail');
	}
	else if (targetId.substring(0, targetId.indexOf('_')) == 'rdoAddId') {
		
		detail = document.getElementById('addressDetail');
	}
	
	if (detail) {
		
		if (id > 0 && (detail.style.display == '' || detail.style.display == 'block')) {
			
			detail.style.display = 'none';
		}
		else if (id == 0 && (detail.style.display == 'none')) {
			
			detail.style.display = 'block';
		}
	}
	
	StopPropagation(event);
}

function HandleOrgDetailDisplay(e) {
	
	var event = GetEvent(e);
	
	if (!event || !document.getElementById) {
		
		return;
	}
	
	var target = GetEventTarget(event);
	if (!target) {
		
		return;
	}
	
	var targetId = GetElementId(target);
	if (!targetId) {
		
		return;
	}
	
	var id = targetId.substring(targetId.indexOf('_') + 1);
	if (!id) {
		
		return;
	}
	
	var trOrgDetail = document.getElementById('trOrgDetail');
	if (trOrgDetail) {
		
		if (((target.type == 'radio' && id > 0) || target.type == 'checkbox') && (trOrgDetail.style.display == '' || trOrgDetail.style.display == 'table-row' || trOrgDetail.style.display == 'block')) {
			
			trOrgDetail.style.display = 'none';
		}
		else if (((target.type == 'radio' && id == 0) || target.type == 'checkbox') && trOrgDetail.style.display == 'none') {
			
			trOrgDetail.style.display = '';
		}
	}
	
	StopPropagation(event);
}

function HandleUncheckItems(e) {
	
	var event = GetEvent(e);
	
	if (!event || !document.getElementById) {
		
		return;
	}
	
	var cbxItemIds = getElementsByPartialId('cbxItemId', 'input', null);
	for (i = 0; i < cbxItemIds.length; i++) {
		
		if (cbxItemIds[i].checked) {
			
			cbxItemIds[i].checked = false;
		}
	}
	
	PreventDefault(event);
	StopPropagation(event);
}

function HandleItemsAvailableDisplay(e) {
	
	var event = GetEvent(e);
	
	if (!event || !document.getElementById) {
		
		return;
	}
	
	var target = GetEventTarget(event);
	if (!target) {
		
		return;
	}
	
	var targetId = GetElementId(target);
	if (!targetId) {
		
		return;
	}
	
	var ddlLId = document.getElementById('ddlLId');
	var hidLId = document.getElementById('hidLId');
	var ddlIcId = document.getElementById('ddlIcId');
	var hidIcId = document.getElementById('hidIcId');
	if (!ddlLId || !hidLId || !ddlIcId || !hidIcId) {
		
		return;
	}
	
	var hasChanges = false;
	var cbxItemIdsChecked = new Array();
	var cbxItemIds = getElementsByPartialId('cbxItemId', 'input', null);
	var hidItemIds = getElementsByPartialId('hidItemId', 'input', null);
	
	if (cbxItemIds && cbxItemIds.length > 0) {
			
		var count = 0;
		
		for (var i = 0; i < cbxItemIds.length; i++) {
			
			if (cbxItemIds[i].checked) {
				
				cbxItemIdsChecked[count] = cbxItemIds[i].value;
				count++;
			}
		}
	}
	
	if ((ddlLId.value != hidLId.value) || (ddlIcId.value != hidIcId.value)) {
		
		if (hidItemIds && cbxItemIdsChecked.length != hidItemIds.length) {
			
			hasChanges = true;
		}
		else {
			
			for (var i = 0; i < hidItemIds.length; i++) {
				
				var itemIdExists = false;
				
				for (var j = 0; j < cbxItemIdsChecked.length; j++) {
					
					if (cbxItemIdsChecked[j] == hidItemIds[i].value) {
						
						itemIdExists = true;
						break;
					}
				}
				
				if (!itemIdExists) {
					
					hasChanges = true;
					break;
				}
			}
		}
	}
	
	if (hasChanges && !confirm('There are changes that have not been saved.')) {
		
		var ddlName = targetId.substring(targetId.indexOf('_'));
		if (!ddlName) {
			
			return;
		}
		
		if (ddlName == 'ddlLId') {
			
			for (var i = 0; i < ddlLId.options.length; i++) {
				
				if (ddlLId.options[i].value == hidLId.value) {
					
					ddlLId.options[i].selected = true;
					break;
				}
			}
		}
		else if (ddlName == 'ddlIcId') {
			
			for (var i = 0; i < ddlIcId.options.length; i++) {
			
				if (ddlIcId.options[i].value == hidIcId.value) {
					
					ddlIcId.options[i].selected = true;
					break;
				}
			}
		}
	}
	else {
		
		var divItemsAvaliable = document.getElementById('divItemsAvaliable');divNewSearch
		var divNewSearch = document.getElementById('divNewSearch');
		if (!divItemsAvaliable || !divNewSearch) {
			
			return;
		}
		
		if ((divItemsAvaliable.style.display == '' || divItemsAvaliable.style.display == 'block') && (ddlLId.value != hidLId.value || ddlIcId.value != hidIcId.value)) {
				
			divItemsAvaliable.style.display = 'none';
			divNewSearch.style.display = 'block';
		}
		else if (divItemsAvaliable.style.display == 'none' && (ddlLId.value == hidLId.value && ddlIcId.value == hidIcId.value)) {
			
			divItemsAvaliable.style.display = '';
			divNewSearch.style.display = 'none';
		}
	}
	
	StopPropagation(event);
}

function HandlePhoneTabbing(e) {
	
	var event = GetEvent(e);
	
	if (!event || !document.getElementById) {
		
		return;
	}
	
	var target = GetEventTarget(event);
	if (!target) {
		
		return;
	}
	
	var targetId = GetElementId(target);
	if (!targetId) {
		
		return;
	}
	
	// avoid keboard controls like shift, ctrl, alt, arrows, etc...
	if (event.keyCode && event.keyCode < 48) {
		
		return;
	}
	
	if (target.value.length == 3) {
		
		if (targetId == 'tbxLocPhone1') {
			
			var tbxLocPhone2 = document.getElementById('tbxLocPhone2');
			if (!tbxLocPhone2) {
				
				return;
			}
			
			tbxLocPhone2.focus();
		}
		else if (targetId == 'tbxLocPhone2') {
			
			var tbxLocPhone3 = document.getElementById('tbxLocPhone3');
			if (!tbxLocPhone3) {
				
				return;
			}
			
			tbxLocPhone3.focus();
		}
	}
	
	StopPropagation(event);
}

function InitializePage() {
	
	if (!document.getElementById) {
		
		return;
	}
	
	var login = document.getElementById('loginid');
	if (login) {
		
		login.select();
	}
	
	var zip = document.getElementById('zip');
	if (zip) {
		
		zip.select();
	}
	
	var aInstrTgls = getElementsByPartialId('instrtgl', 'a', null);
	var divInstrBxs = getElementsByPartialId('instrbx', 'div', null);
	if (aInstrTgls && divInstrBxs) {
		
		for (i = 0; i < aInstrTgls.length; i++) {
		
			aInstrTgls[i].style.display = 'inline';
		}
		
		for (i = 0; i < divInstrBxs.length; i++) {
			
			divInstrBxs[i].style.display = 'none';
		}
	}
	
	var rdoOrgIds = getElementsByPartialId('rdoOrgId', 'input', null);
	var trOrgDetail = document.getElementById('trOrgDetail');
	if (rdoOrgIds && trOrgDetail) {
		
		for (i = 0; i < rdoOrgIds.length; i++) {
		
			if (rdoOrgIds[i].checked) {
				
				var elementId = GetElementId(rdoOrgIds[i]);
				if (elementId) {
					
					var id = elementId.substring(elementId.indexOf('_') + 1);
					
					if (id && id > 0) {
					
						trOrgDetail.style.display = 'none';
						
						break;
					}
				}
			}
		}
	}
}

AddEvent(window, 'load', InitializePage, false);
AddEvent(window, 'load', AddListeners, false);

function HandleBinRequests(elm, usId, itemId, isAdd, isBinView) {
	
	if (!document.getElementsByTagName || !document.createTextNode) {
		
		return;
	}
	
	if (!elm, !usId || !itemId || isAdd == null || isBinView == null) {
		
		return;
	}
	
	if (xajax_savedItemXajax(usId, itemId, ((isAdd) ? 1 : -1), 'default notes', ((isBinView) ? 1 : -1))) {
		
		var text;
		
		if (isAdd) {
			
			text = document.createTextNode("adding...");
			
		}
		else {
			
			text = document.createTextNode("removing...");
		}
		
		var anchor =  document.createElement('a');
		anchor.appendChild(text);
		elm.replaceChild(anchor, elm.getElementsByTagName('a')[0]);
		elm.onclick = function() { HandleBinRequests(elm, usId , itemId , ((isAdd) ? false : true), ((isBinView) ? true : false)); return false; };
	}
}

function HandleBinItemDisplay(itemId) {
			
	if (!itemId ) {
		
		return;
	}
	
	var tdItems = getElementsByPartialId(itemId, 'td', null);
	for (i = 0; i < tdItems.length; i++) {
		
		tdItems[i].style.display = 'none';
	}
}

function HandleBinContainerDisplay(isShow) {
	
	if (!document.getElementById) {
		
		return;
	}
	
	var fullText = document.getElementById('full');
	var emptyText = document.getElementById('empty');
	var results = document.getElementById('results');
	
	if (!fullText || !emptyText || !results) {
		
		return;
	}
	
	if (!isShow) {
		
		fullText.style.display = 'none';
		emptyText.style.display = 'block';
		results.style.display = 'none';
	}
}