/*******************************************************************************
/* AJAX Connection
/* Get the HTTP Object
/*
*/
function getHTTPObject() {   
  if (window.ActiveXObject)        
    return new ActiveXObject("Microsoft.XMLHTTP");   
  else if (window.XMLHttpRequest)        
    return new XMLHttpRequest();   
  else {      
    alert("Your browser does not support AJAX.");      
    return null;   
  }
}

/*******************************************************************************
/* AJAX fields
/*
*/

function inputCancel(field,num) {
		// Called by inputEntry during an ESC keypress or an onClick on the cancel button on the form.
		element = field   + num;
		original  = element + "_orig";

		// The default value is stored in a custom handler
		document.getElementById(element).value = document.getElementById(element).orig_value;

		// Reset the appearance of the field
		inputReset(element);
		document.getElementById(element).blur();	
}

function inputEntry(e,table,field,num,autonum) {
	// Called by onKeyup event.
	var keycode;

	if (window.event) { // IE
		keycode = event.keyCode;
	} else {            // Mozilla
		keycode = e.which;
	}
	
	if (keycode == 13) {
		// Enter was pressed so process the input as if OK were clicked.
		inputUpdate(table,field,num,autonum);
	}
	if (keycode == 27){
		// Escape key was pressed, so reset back to default value.
		inputCancel(field,num);
	}
}

function inputFocus(field,num) {
	// Called by onFocus event.
	element = field   + num;
	update  = element + "_update";
	cancel  = element + "_cancel";
	icon    = element + "_edit";
  if (document.getElementById(element).value == "click here to edit") document.getElementById(element).value = "";
	document.getElementById(element).focused 					= true; // Custom handler to determine focus
  document.getElementById(element).orig_value       = document.getElementById(element).value;
	// Make the input box look like a normal input box for editing.
	document.getElementById(element).style.background = "#ffffaf";
	document.getElementById(element).style.border     = "1px solid gray";
	document.getElementById(element).style.color		  = "black";
	document.getElementById(element).style.fontstyle	= "normal";
	if (document.getElementById(element).type != "checkbox") {
		document.getElementById(update).style.display     = "inline";
		document.getElementById(cancel).style.display     = "inline";
	}
	document.getElementById(icon).style.display       = "none";
}

function inputMouseout(field,num) {
	// Called by onMouseout event.
	element = field   + num;
	icon    = element + "_edit";
	// Hide the edit icon on mouseout.
	document.getElementById(icon).style.display       = "none";
	// Reset the field if it does not have focus.  Leave the field highlighted if it does have focus.
	if (document.getElementById(element).focused == undefined || document.getElementById(element).focused == false) inputReset(element);
}

function inputMouseover(field,num,icon) {
	// Called by onMouseover event.
	element = field   + num;
	icon    = element + "_edit";
	// Highlight the field a little to get some attention.
	document.getElementById(element).style.background = "#ffffaf";
	// If the field does not have focus then we can show the edit icon on mouseover.
	if (document.getElementById(element).focused == undefined || document.getElementById(element).focused == false) document.getElementById(icon).style.display = "inline";
}

function inputReset(element) {
	// Resets the input field back to default state.
	// These values should be changed to match whatever is in the style sheet to blend with the page/background.
	// Called by returnUpdate() and inputCancel().
  if (document.getElementById(element).value == "") {
    document.getElementById(element).style.fontstyle= "italic";
    document.getElementById(element).value = "click here to edit";
  }
	document.getElementById(element).disabled         = false;
	document.getElementById(element).style.cursor			= "default";
	document.getElementById(element).style.background = "white";	
	document.getElementById(element).style.border     = "1px solid white";

	if (document.getElementById(element).type != "checkbox") {
		document.getElementById(element + "_update").style.display     = "none";
		document.getElementById(element + "_cancel").style.display     = "none";
	}
	document.getElementById(element).focused					= false; // Custom handler to determine focus
}

function inputUpdate(table,field,num,autonum,datatype) {
	// Called by and "Enter" trigger in inputEntry() or by clicking OK on the form.
	element = field   + num;

	// Validate the data for datatype
	if (datatype == 2 && isNaN(document.getElementById(element).value)) {
		alert("Value must be a number");
		return;
	}
	
  // We're going to send data to the server to blank the field out so it looks busy.
  document.getElementById(element).disabled         = true;
  document.getElementById(element).style.cursor			= "wait";
  document.getElementById(element).style.background = "#cccccc";

	if (document.getElementById(element).type == "checkbox") {
		if (document.getElementById(element).checked) {
			value = "1";
		} else {
			value = "0";
		}
	} else {
		value = document.getElementById(element).value;
	}
  httpObject = getHTTPObject();
  if (httpObject != null) {
		//alert("field_update.php?r=input&table=" + table + "&field=" + field + "&value=" + value + "&autonum=" + autonum + "&num=" + num);
    httpObject.open("GET", "field_update.php?r=input&table=" + table + "&field=" + field + "&value=" + value + "&autonum=" + autonum + "&num=" + num, true);
    httpObject.send(null);
    httpObject.onreadystatechange = returnUpdate;
  }
}

function inputUndo(field,num) {
	
	
}

function returnUpdate() {
	// Called by inputUpdate()
  if (httpObject.readyState == 4) {
		if (httpObject.status == 200) {
			// Decode the data received back.
			// values[0] = field
			// values[1] = id
			// values[2] = error value
			// values[3] = error message
			// values[4] = auditSerial
			// values[5] = additional
			values = httpObject.responseText.split("|||")
	
			element = values[0] + values[1];
			check   = "check"   + values[1];
			undo		= element		+ "_undo";
			document.getElementById(element).style.background	= "#c0ffaf";
//			document.getElementById(undo).value = values[4];
//			document.getElementById(undo).style.display = "inline";
		}
	}
	// Reset the field regardless of events.
	inputReset(element);
}


function inputClear(e,t) {
	if (!e.orig_value || e.orig_value == e.value) {
		e.orig_value = e.value;
		e.value = "";
	}
	if (t) e.type = "password";
}

function inputBlur(e,t) {
	if (!e.value) {
		if (t) e.type = "text";
		e.value = e.orig_value;
	}
}

// Password stuff
function set_login() {
	loginverify = false;
	document.getElementById("loginverify").style.display = "none";
}