// setupajlib.js
// Ajax support

// Create a boolean variable to check for a valid IE instance.
var xmlhttp = false;				// Object used by tabs to load main area pages
var pos_x = 0;
var pos_y = 0;

try {
	xmlhttp = new XMLHttpRequest();
} catch (E) {
	try {
		xmlhttp = new ActiveXObject( "Msxml2.XMLHTTP" );
	} catch (E) {
		try {
			xmlhttp = new ActiveXObject( "Microsoft.XMLHTTP" );
		} catch (E) {
			alert( "Error instantiating XMLHttpRequest" );
		}
	}
}

function loadPage( serverPage, dispField ) {
    
//	alert( "loadPage server page: " + serverPage + ", to field: " + dispField );
	if ( xmlhttp ) {
		var dispObj = document.getElementById( dispField );
        if ( dispObj ) {
			xmlhttp.open( "GET", serverPage );
			xmlhttp.onreadystatechange = function() {
				if ( xmlhttp.readyState == 4 ) {
					if ( xmlhttp.status == 200 ) {
//						alert( "loadPage returns: " + xmlhttp.responseText );
						dispObj.innerHTML = xmlhttp.responseText;
					} else {
						alert( "loadPage status returned: " + xmlhttp.status + ", status text: " + xmlhttp.statusText );
						alert( "loadPage page: " + serverPage );
//						alert( "Display data returned: " + xmlhttp.responseText );
						dispObj.innerHTML = xmlhttp.responseText;
					}
				}
			}
			xmlhttp.send(null);
		} else {
            alert( "In loadPage, display pane obj get failed for " + dispField );
            return false;
        }
	} else {
		alert( "In loadPage, unable to find XMLHttpRequest" );
		return false;
	}
	
    return true;
}


function findX( editElement ) {
	var currLeft = 0;
	if ( editElement.offsetParent ) {
		while ( editElement.offsetParent ) {
//			alert( 'X parent ID ' + editElement.id + ', name ' + editElement.name + ', offset ' + editElement.offsetLeft );
			currLeft += editElement.offsetLeft;
			editElement = editElement.offsetParent;
		}
	} else {
		if ( editElement.x ) {
			currLeft += editElement.x;
		}
	}
	return currLeft;
}

function findY( editElement ) {
	var currTop = 0;
	if ( editElement.offsetParent ) {
		while ( editElement.offsetParent ) {
//			alert( 'Y parent ID ' + editElement.id + ', name ' + editElement.name + ', offset ' + editElement.offsetTop );
			currTop += editElement.offsetTop;
			editElement = editElement.offsetParent;
		}
	} else {
		if ( editElement.y ) {
			currTop += editElement.y;
		}
	}
	return currTop;
}


// Used to autocomplete names in chicoach find form
function autocomplete_lname_del( currentValue, theEvent ) {
	var	nextCharCodeDel;
	if ( window.event )			// IE
		nextCharCodeDel = window.event.keyCode;
	else
		if ( theEvent.which )	// Netscape/Firefox/Opera
			nextCharCodeDel = theEvent.which;
		else {
//			alert( "In autocomplete_lname_del, event problem" );
			return;
		}

	if ( nextCharCodeDel == 8 ) {	// If backspace
		var acObj = document.getElementById( "autocompletediv" );
		if ( acObj ) {
//			var pos_x, pos_y;
			var	elem1 = document.getElementById( "lname" );
			if ( elem1 ) {
				if ( 0 == pos_x )
					pos_x = findX( elem1 ) + 1;
				if ( 0 == pos_y )
					pos_y = findY( elem1 ) + elem1.clientHeight + 3;
//				alert( "In autocomplete_lname_del, x is " + pos_x + " and y is " + pos_y );
				acObj.style.left = pos_x + "px";
				acObj.style.top = pos_y + "px";
				acObj.style.width = (elem1.clientWidth + 0) + "px";
				acObj.style.visibility = "visible";
				if ( currentValue.length > 0 ) {
					var serverPage = "/coachnearyou/lastname.php?match=" + currentValue.substring( 0, ( currentValue.length - 1 ) );
//					alert( "In autocomplete_lname_del, serverPage is [ " + serverPage + " ]" );
					loadPage( serverPage, "autocompletediv" );
				} else {
					clear_ac_value();
				}
//			} else {
//				alert( "In autocomplete_lname_del, lname not found for backspace" );
			}
//		} else {
//			alert( "In autocomplete_lname_del, autocompletediv not found for backspace" );
		}
	} else {
		if ( nextCharCodeDel == 9 ) {
//			alert( "In autocomplete_lname_del, got tab" );
			clear_ac_value();
//		} else {
//			alert( "Keydown got [ " + nextCharCodeDel + " : " + String.fromCharCode( nextCharCodeDel ) + " ]" );
		}
	}
//	alert( "In autocomplete_lname_del, currentValue is [ " + currentValue + " ] (len= " + currentValue.length + "), next character code is [ " + nextCharCodeDel + " ]" );
}

// This function is called for onkeypressed events. Backspace key events
// are not reported here so are handled in above routine.
function autocomplete_lname( currentValue, theEvent ) {

	var	nextCharCode;
	if( window.event )			// IE
		nextCharCode = window.event.keyCode;
	else
		if ( theEvent.which )	// Netscape/Firefox/Opera
			nextCharCode = theEvent.which;
		else {
			alert( "In autocomplete_lname, event problem" );
			return;
		}

	if ( nextCharCode == 8 )	// If backspace
		return;
	var acObj = document.getElementById( "autocompletediv" );
	if ( acObj ) {
//		alert( "In autocomplete_lname for acObj, x is " + findX( acObj ) + " and y is " + findY( acObj ) );
//		alert( 'Parent node id is ' + acObj.parentNode.id )
//		acObj.parentNode.style.zIndex = 10;
//		var pos_x, pos_y;
		var	elem1 = document.getElementById( "lname" );
		if ( elem1 ) {
			if ( 0 == pos_x )
				pos_x = findX( elem1 ) + 1;
			if ( 0 == pos_y )
				pos_y = findY( elem1 ) + elem1.clientHeight + 3;
//			alert( "In autocomplete_lname, x is " + pos_x + " and y is " + pos_y );
			acObj.style.left = pos_x + "px";
			acObj.style.top = pos_y + "px";
			acObj.style.width = (elem1.clientWidth + 0) + "px";
			acObj.style.visibility = "visible";
//			acObj.style.zIndex = 11;
			var serverPage = "/coachnearyou/lastname.php?match=" + currentValue + String.fromCharCode( nextCharCode );
//			alert( "In autocomplete_lname, serverPage is [ " + serverPage + " ]" );
			loadPage( serverPage, "autocompletediv" );
		} else {
			alert( "In autocomplete_lname, "+fieldName+id+" not found" );
		}
	} else {
		alert( "In autocomplete_lname, autocompletediv not found" );
	}
	
}

function clear_ac_value() {
//	alert( "In clear_ac_value" );
	var acObj = document.getElementById( "autocompletediv" );
	if ( acObj ) {
		acObj.style.visibility = "hidden";
		acObj.style.height = "0px";
		acObj.style.width = "0px";
//		acObj.parentNode.style.zIndex = 1;
	} else {
		alert( "In clear_ac_value, autocompletediv not found" );
	}
}

