/*
  jsFlexDynamicData.  Written by Joe McCormack.  www.virtualsecrets.com.
*/
var optionSelectedIndex = 0, IE_trackPageY = 0, FF_trackPageY = 0, thelastKeyPressed = 0, arrayUse = "", strValue = "";

nv_a = new Array(); nv_b = new Array(); nv_c = new Array(); nv_d = new Array(); nv_e = new Array();
nv_f = new Array(); nv_g = new Array(); nv_h = new Array(); nv_i = new Array(); nv_j = new Array();
nv_k = new Array(); nv_l = new Array(); nv_m = new Array(); nv_n = new Array(); nv_o = new Array();
nv_p = new Array(); nv_q = new Array(); nv_r = new Array(); nv_s = new Array(); nv_t = new Array();
nv_u = new Array(); nv_v = new Array(); nv_w = new Array(); nv_x = new Array(); nv_y = new Array();
nv_z = new Array(); nv_0 = new Array(); nv_1 = new Array(); nv_2 = new Array(); nv_3 = new Array();
nv_4 = new Array(); nv_5 = new Array(); nv_6 = new Array(); nv_7 = new Array(); nv_8 = new Array();
nv_9 = new Array();
function initFlexDynamics() {
var xypos = "", xpos = 0, ypos = 0; position = new Array();
xypos = query_element(interactiveBoxID, 0, 0);
position = xypos.split(","); xpos = parseInt(position[0]); ypos = parseInt(position[1]);
/* Align Select Box */
if (navigator.userAgent.toLowerCase().indexOf("msie") != -1) {
							      /*IE*/
							      document.getElementById(MoveContainer).style.top = ypos + 22;
							      document.getElementById(MoveContainer).style.left = xpos;
							      IE_trackPageY = ypos + 22;
							     }
else {
      /*Other*/
      document.getElementById(MoveContainer).style.top = ypos + 22 + "px";
      document.getElementById(MoveContainer).style.left = xpos + "px";
      FF_trackPageY = ypos + 22;
     }
}
function query_element(actor, ox, oy) {
var x_posi = 0, y_posi = 0;
if (document.all) { actor = document.all[actor]; }
else { actor = document.getElementById(actor); }
while (actor != null) {
		       x_posi += actor.offsetLeft - actor.scrollLeft;
		       y_posi += actor.offsetTop - actor.scrollTop;
		       /* Recycle */
		       actor = actor.offsetParent;
		      }
return((x_posi + ox) + "," + (y_posi + oy));
}
function DataFind(stringValue, keyPress) {
var lastKeyPressed = keyPress.keyCode ? keyPress.keyCode : keyPress.charCode;
thelastKeyPressed = lastKeyPressed;
if (lastKeyPressed == 13) {
			   /* Enter key pressed; submit form */
			   submitState();
			  }
else {
      /* If Down arrow is pressed, shift focus to drop-down if it is visible */
      if (lastKeyPressed == 40) {
			         if (document.getElementById(selBoxID).options[0]) {
									            if (document.getElementById(selBoxID).options[0].value.length > 0) { optionSelectedIndex = 0; document.getElementById(selBoxID).focus(); document.getElementById(selBoxID).selectedIndex = optionSelectedIndex; }
									           }
			        }
      else {
	    /* When no data & backspace is pressed ensure drop-down is not visible */
	    if (lastKeyPressed == 8) { if (document.getElementById(interactiveBoxID).value.length == 0) { document.getElementById(selBoxID).style.display = "none"; } }
	    /* Bypass checking for back-arrow */
	    if (lastKeyPressed != 37) {
				       arrayUse = stringValue.charAt(0).toLowerCase();
				       strValue = stringValue.toLowerCase();
				       dataMatch();
				      }
	    }
     }
}
function xml_Request() {
if (navigator.userAgent.toLowerCase().indexOf("msie") != -1) {
							      /*IE*/
							      xml_data = new ActiveXObject("Microsoft.XMLHTTP");
							     }
else {
      /*Other*/
      xml_data = new XMLHttpRequest();
      if (xml_data.overrideMimeType) { xml_data.overrideMimeType("text/xml"); }
     }
xml_data.onreadystatechange = xml_RequestProgress;
xml_data.open("POST", datafile, true);
xml_data.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xml_data.send("text=" + document.getElementById(interactiveBoxID).value);
}
function xml_RequestProgress() {
if (xml_data.readyState == 4 && xml_data.status == 200) {
							 var xmlArray = new Array(); var filteredArray = new Array();
							 var xml = xml_data.responseText; xml = xml.replace(/\t/g, "").replace(/\v/g, "");
							 xmlArray = xml.split(/\n/); var requestText = "", requestValue = "";
							 for (line = 0; line < xmlArray.length; line++) {
													 if (xmlArray[line].indexOf("<" + reqTag) > -1) { requestText = xmlArray[line].split(">")[1].split("<")[0]; }
													 if (xmlArray[line].indexOf("<" + valTag) > -1) {
																			 requestValue = xmlArray[line].split(">")[1].split("<")[0];
																			 filteredArray[filteredArray.length] = requestText + "," + requestValue;
																			 requestText = ""; requestValue = "";
																			}

													}
							 if (filteredArray.length > 0) {
											if (arrayUse == "a") { nv_a.length = 0; nv_a = filteredArray.slice(); }
											else if (arrayUse == "b") { nv_b.length = 0; nv_b = filteredArray.slice(); }
											else if (arrayUse == "c") { nv_c.length = 0; nv_c = filteredArray.slice(); }
											else if (arrayUse == "d") { nv_d.length = 0; nv_d = filteredArray.slice(); }
											else if (arrayUse == "e") { nv_e.length = 0; nv_e = filteredArray.slice(); }
											else if (arrayUse == "f") { nv_f.length = 0; nv_f = filteredArray.slice(); }
											else if (arrayUse == "g") { nv_g.length = 0; nv_g = filteredArray.slice(); }
											else if (arrayUse == "h") { nv_h.length = 0; nv_h = filteredArray.slice(); }
											else if (arrayUse == "i") { nv_i.length = 0; nv_i = filteredArray.slice(); }
											else if (arrayUse == "j") { nv_j.length = 0; nv_j = filteredArray.slice(); }
											else if (arrayUse == "k") { nv_k.length = 0; nv_k = filteredArray.slice(); }
											else if (arrayUse == "l") { nv_l.length = 0; nv_l = filteredArray.slice(); }
											else if (arrayUse == "m") { nv_m.length = 0; nv_m = filteredArray.slice(); }
											else if (arrayUse == "n") { nv_n.length = 0; nv_n = filteredArray.slice(); }
											else if (arrayUse == "o") { nv_o.length = 0; nv_o = filteredArray.slice(); }
											else if (arrayUse == "p") { nv_p.length = 0; nv_p = filteredArray.slice(); }
											else if (arrayUse == "q") { nv_q.length = 0; nv_q = filteredArray.slice(); }
											else if (arrayUse == "r") { nv_r.length = 0; nv_r = filteredArray.slice(); }
											else if (arrayUse == "s") { nv_s.length = 0; nv_s = filteredArray.slice(); }
											else if (arrayUse == "t") { nv_t.length = 0; nv_t = filteredArray.slice(); }
											else if (arrayUse == "u") { nv_u.length = 0; nv_u = filteredArray.slice(); }
											else if (arrayUse == "v") { nv_v.length = 0; nv_v = filteredArray.slice(); }
											else if (arrayUse == "w") { nv_w.length = 0; nv_w = filteredArray.slice(); }
											else if (arrayUse == "x") { nv_x.length = 0; nv_x = filteredArray.slice(); }
											else if (arrayUse == "y") { nv_y.length = 0; nv_y = filteredArray.slice(); }
											else if (arrayUse == "z") { nv_z.length = 0; nv_z = filteredArray.slice(); }
											else if (arrayUse == "0") { nv_0.length = 0; nv_0 = filteredArray.slice(); }
											else if (arrayUse == "1") { nv_1.length = 0; nv_1 = filteredArray.slice(); }
											else if (arrayUse == "2") { nv_2.length = 0; nv_2 = filteredArray.slice(); }
											else if (arrayUse == "3") { nv_3.length = 0; nv_3 = filteredArray.slice(); }
											else if (arrayUse == "4") { nv_4.length = 0; nv_4 = filteredArray.slice(); }
											else if (arrayUse == "5") { nv_5.length = 0; nv_5 = filteredArray.slice(); }
											else if (arrayUse == "6") { nv_6.length = 0; nv_6 = filteredArray.slice(); }
											else if (arrayUse == "7") { nv_7.length = 0; nv_7 = filteredArray.slice(); }
											else if (arrayUse == "8") { nv_8.length = 0; nv_8 = filteredArray.slice(); }
											else if (arrayUse == "9") { nv_9.length = 0; nv_9 = filteredArray.slice(); }
										       }
							 dataMatch();
							}
}
function dataMatch() {
var processAllow = 1; arrayData = new Array();
/* Grab array of data based on first character user entered */
if (arrayUse == "a") { try { arrayData = nv_a.slice(); } catch(e) { processAllow = 0; } }
else if (arrayUse == "b") { try { arrayData = nv_b.slice(); } catch(e) { processAllow = 0; } }
else if (arrayUse == "c") { try { arrayData = nv_c.slice(); } catch(e) { processAllow = 0; } }
else if (arrayUse == "d") { try { arrayData = nv_d.slice(); } catch(e) { processAllow = 0; } }
else if (arrayUse == "e") { try { arrayData = nv_e.slice(); } catch(e) { processAllow = 0; } }
else if (arrayUse == "f") { try { arrayData = nv_f.slice(); } catch(e) { processAllow = 0; } }
else if (arrayUse == "g") { try { arrayData = nv_g.slice(); } catch(e) { processAllow = 0; } }
else if (arrayUse == "h") { try { arrayData = nv_h.slice(); } catch(e) { processAllow = 0; } }
else if (arrayUse == "i") { try { arrayData = nv_i.slice(); } catch(e) { processAllow = 0; } }
else if (arrayUse == "j") { try { arrayData = nv_j.slice(); } catch(e) { processAllow = 0; } }
else if (arrayUse == "k") { try { arrayData = nv_k.slice(); } catch(e) { processAllow = 0; } }
else if (arrayUse == "l") { try { arrayData = nv_l.slice(); } catch(e) { processAllow = 0; } }
else if (arrayUse == "m") { try { arrayData = nv_m.slice(); } catch(e) { processAllow = 0; } }
else if (arrayUse == "n") { try { arrayData = nv_n.slice(); } catch(e) { processAllow = 0; } }
else if (arrayUse == "o") { try { arrayData = nv_o.slice(); } catch(e) { processAllow = 0; } }
else if (arrayUse == "p") { try { arrayData = nv_p.slice(); } catch(e) { processAllow = 0; } }
else if (arrayUse == "q") { try { arrayData = nv_q.slice(); } catch(e) { processAllow = 0; } }
else if (arrayUse == "r") { try { arrayData = nv_r.slice(); } catch(e) { processAllow = 0; } }
else if (arrayUse == "s") { try { arrayData = nv_s.slice(); } catch(e) { processAllow = 0; } }
else if (arrayUse == "t") { try { arrayData = nv_t.slice(); } catch(e) { processAllow = 0; } }
else if (arrayUse == "u") { try { arrayData = nv_u.slice(); } catch(e) { processAllow = 0; } }
else if (arrayUse == "v") { try { arrayData = nv_v.slice(); } catch(e) { processAllow = 0; } }
else if (arrayUse == "w") { try { arrayData = nv_w.slice(); } catch(e) { processAllow = 0; } }
else if (arrayUse == "x") { try { arrayData = nv_x.slice(); } catch(e) { processAllow = 0; } }
else if (arrayUse == "y") { try { arrayData = nv_y.slice(); } catch(e) { processAllow = 0; } }
else if (arrayUse == "z") { try { arrayData = nv_z.slice(); } catch(e) { processAllow = 0; } }
else if (arrayUse == "0") { try { arrayData = nv_0.slice(); } catch(e) { processAllow = 0; } }
else if (arrayUse == "1") { try { arrayData = nv_1.slice(); } catch(e) { processAllow = 0; } }
else if (arrayUse == "2") { try { arrayData = nv_2.slice(); } catch(e) { processAllow = 0; } }
else if (arrayUse == "3") { try { arrayData = nv_3.slice(); } catch(e) { processAllow = 0; } }
else if (arrayUse == "4") { try { arrayData = nv_4.slice(); } catch(e) { processAllow = 0; } }
else if (arrayUse == "5") { try { arrayData = nv_5.slice(); } catch(e) { processAllow = 0; } }
else if (arrayUse == "6") { try { arrayData = nv_6.slice(); } catch(e) { processAllow = 0; } }
else if (arrayUse == "7") { try { arrayData = nv_7.slice(); } catch(e) { processAllow = 0; } }
else if (arrayUse == "8") { try { arrayData = nv_8.slice(); } catch(e) { processAllow = 0; } }
else if (arrayUse == "9") { try { arrayData = nv_9.slice(); } catch(e) { processAllow = 0; } }
else { processAllow = 0; }
if (processAllow == 1) {
			/* Clear the select options */
			if (document.getElementById(selBoxID).options[0]) {
									   for (list = document.getElementById(selBoxID).length - 1; list >= 0; list--) {
																			 if (document.getElementById(selBoxID).options[list].value.length > 0) { document.getElementById(selBoxID).remove(list); }
																			}
									  }
			var numRows = 0, lastRowName = "", lastRowID = "";
			for (list = 0; list < arrayData.length; list++) {
									 var nameTxt = arrayData[list].split(",")[0].toLowerCase();
									 nameTxt = nameTxt.substr(0, strValue.length);
									 if (nameTxt == strValue) {
												   var selChild = document.createElement("option");
												   selChild.text = arrayData[list].split(",")[0];
												   selChild.value = arrayData[list].split(",")[1];
												   try { document.getElementById(selBoxID).add(selChild, null); }
												   catch(onerror) { document.getElementById(selBoxID).add(selChild); }
												   document.getElementById(selBoxID).style.display = "inline";
												   numRows = numRows + 1; document.getElementById(selBoxID).setAttribute("size", numRows);
												   lastRowName = arrayData[list].split(",")[0]; lastRowID = arrayData[list].split(",")[1];
												  }
									}
			if (numRows == 1) {
					   /* Firefox 3.0.6 will mysteriously display a blank select box option even though one was explicitly added.  Compensate for this bug. */
					   if (navigator.userAgent.toLowerCase().indexOf("firefox") != -1) {
													    var selChild = document.createElement("option");
													    selChild.text = lastRowName;
													    selChild.value = lastRowID;
													    try { document.getElementById(selBoxID).add(selChild, null); }
													    catch(onerror) { document.getElementById(selBoxID).add(selChild); }
													   }
					   if (thelastKeyPressed != 8) {
									document.getElementById(optIndexTxtElementID).value = lastRowName;
									document.getElementById(optIndexElementID).value = lastRowID;
								       }
					   else {
						 document.getElementById(optIndexTxtElementID).value = "";
						 document.getElementById(optIndexElementID).value = "";
						}
					  }
			else if (numRows == 0) { document.getElementById(selBoxID).style.display = "none"; xml_Request(); }
		       }
else { document.getElementById(selBoxID).style.display = "none"; xml_Request(); }
}
function DataSelect(txtName, txtID) {
document.getElementById(interactiveBoxID).value = txtName;
document.getElementById(optIndexTxtElementID).value = txtName;
document.getElementById(optIndexElementID).value = txtID;
}
function DataMovement(txtName, txtID, keyPress) {
var lastKeyPressed = keyPress.keyCode ? keyPress.keyCode : keyPress.charCode;
var maxIndex = document.getElementById(selBoxID).length - 1;
if (lastKeyPressed == 40) {
			   /* Down Arrow Pressed */
			   if (optionSelectedIndex < maxIndex) { optionSelectedIndex = optionSelectedIndex + 1; }
			   document.getElementById(selBoxID).selectedIndex = optionSelectedIndex;
			  }
if (lastKeyPressed == 38) {
			   /* Up Arrow Pressed */
			   if (optionSelectedIndex > 0) { optionSelectedIndex = optionSelectedIndex - 1; }
			   document.getElementById(selBoxID).selectedIndex = optionSelectedIndex;
			  }
if (lastKeyPressed == 13) {
			   /* Enter Pressed */
			   document.getElementById(selBoxID).style.display = "none";
			   selectDataAssign(txtName, txtID);
			  }
}
function DataSelectViaMouse(fontSizePY, fontSizeBuffer, elemID, event) {
var mouseXPos = 0, mouseYPos = 0, txtName = "", txtID = "";
document.getElementById(elemID).focus();
if (navigator.userAgent.toLowerCase().indexOf("msie") != -1) {
							      /*IE*/
							      mouseXPos = event.clientX; mouseYPos = event.clientY;
							      mouseYPos = mouseYPos - IE_trackPageY;
							     }
else {
      /*Other*/
      mouseXPos = event.pageX; mouseYPos = event.pageY;
      mouseYPos = mouseYPos - FF_trackPageY;
     }
var verticalOptionSize = fontSizePY + fontSizeBuffer;
var optionIndexSelected = parseInt(mouseYPos / verticalOptionSize);
try {
     /* IE Only: Bottom edge of last element was clicked resulting in index miscalculation of one. */
     document.getElementById(elemID).selectedIndex = optionIndexSelected;
     txtName = document.getElementById(elemID).options[optionIndexSelected].text;
     txtID = document.getElementById(elemID).options[optionIndexSelected].value;
    }
catch(onerror) {
		/* IE Only: Offset index by one. */
		optionIndexSelected = optionIndexSelected - 1;
		document.getElementById(elemID).selectedIndex = optionIndexSelected;
		txtName = document.getElementById(elemID).options[optionIndexSelected].text;
		txtID = document.getElementById(elemID).options[optionIndexSelected].value;
	       }
document.getElementById(elemID).style.display = "none";
/* Assign the values */
selectDataAssign(txtName, txtID);
}
function selectDataAssign(txtName, txtID) {
document.getElementById(optIndexTxtElementID).value = txtName;
document.getElementById(optIndexElementID).value = txtID;
document.getElementById(interactiveBoxID).value = txtName;
document.getElementById(interactiveBoxID).focus();
optionSelectedIndex = -1;
}
function submitState() {
/* Submit Data */
document.getElementById(submitButton).focus();
document.getElementById(frmID).submit();
}
