// JavaScript Document
function JS_UseEntity(){
// Use this whenever a valid record is found
window.location='http://mynakedcity.com/entityprofile.php?gvEnt='+document.getElementById('frmEntID').value;
}
function JS_NoEntity(){
// Use this whenever a valid record is not found
window.location='http://mynakedcity.com/namesearch.php?gvSearch='+document.getElementById('frmEnt').value;
}

function JS_ShowList(inputboxID,evt) {
//Get table and field names
	var FieldData=document.getElementById(inputboxID+'Data').value.split(', ');
	//0 [allow add], 1 [table], 2 [id], 3 [text], 4 [edituser], 5 [editdate], 6 [category]
//------------------------------------------
//Settings to display box
	var inputbox=document.getElementById(inputboxID);
	var obj=inputbox; var curleft = curtop = 0; curtop += obj.offsetHeight;
	if (obj.offsetParent) {
		do {curleft += obj.offsetLeft; curtop += obj.offsetTop; obj = obj.offsetParent
		} while (obj);
	}
	var target=document.getElementById('divList');
	target.style.top=curtop+'px'; target.style.left=curleft+'px';
	document.getElementById('frmList').style.width=inputbox.offsetWidth+'px';
	var currD=target.style.display;
//------------------------------------------
//Settings to create list
	var list=window.frames['frmList'].document.getElementsByTagName('option');
	var len=list.length;
	var num=-1;for(var i=0;i<len;i++) {if(list[i].selected==true) num=i; }
//------------------------------------------	
//Evaluate key strokes to set actions
	if ((evt.keyCode==40||evt.keyCode==38)&& currD=='block'&& evt.type=='keyup') { // up and down arrows
		if (evt.keyCode==40) num +=1;
		if (evt.keyCode==38) num += -1;
		if (num==-1) {for(var i=0;i<len;i++) {list[i].selected=false; i++}	
			target.style.display='none';}
		else {
			if (num==-2) var sel=len-1;
			else if (num>=len) var sel=0;
			else if (num>=0) var sel=num;
			if(len) list[sel].selected=true;
			target.style.display='block';	
		}
	var num=-1;
	for(var i=0;i<len;i++) {if(list[i].selected==true) num=i; }
	}
	else if (evt.keyCode==27 && evt.type=='keyup') {//Escape key
		JS_RevertValue(inputbox);
	}
	else if ((evt.keyCode==13 || evt.keyCode==9) && evt.type=='keydown') {//Return key
		JS_SaveValue(inputbox.id,evt.keyCode);
	}
	else if(evt.keyCode!=13 && evt.keyCode!=37 && evt.keyCode!=39 && evt.keyCode!=9 && evt.keyCode!=20 && evt.keyCode!=16 && evt.keyCode!=17 && evt.keyCode!=91 && evt.keyCode!=18 && evt.type=='keyup') { //Left and Right Arrows, tab, shift, caps lock, ctrl,alt, 
		if(inputbox.value) document.getElementById('frmList').src='return_list.php?gvLike='+
			inputbox.value+'&gvID='+FieldData[2]+'&gvItem='+FieldData[3]+'&gvTable='+FieldData[1]+
			'&gvObj='+inputbox.id;	
		target.style.display='block';	
	}
	
}

function JS_ListListen(inputbox) {
	window.addEventListener('click', JS_ManageList, false)
		function JS_ManageList(event) {
			if(event.target.id!=window.frames['frmList'].document.getElementById('frmList')) {
				window.removeEventListener('click', JS_ManageList, false);
				JS_RevertValue(inputbox);
			}
		}
}

function JS_SaveValue(inputboxID,key) {
//Get table and field names
	var FieldData=document.getElementById(inputboxID+'Data').value.split(', ');
	//0 [allow add], 1 [table], 2 [id], 3 [text], 4 [edituser], 5 [editdate], 6 [category]
//----------------------------------------
//Get form variables
var list=window.frames['frmList'].document.getElementsByTagName('option');
	var len=list.length;
	var inputbox=document.getElementById(inputboxID);
	var valuebox=document.getElementById(inputboxID +'ID');
	var revertbox=document.getElementById(inputboxID +'Cur');
	var nomatch=document.getElementById(inputboxID +'None');
	var num=-1;	for(var i=0;i<len;i++) {if(list[i].selected==true) num=i; }
//If a value is selected from the list, save that value
	if(num>=0) {
		inputbox.value=list[num].innerHTML;
		revertbox.value=list[num].innerHTML;
		valuebox.value=list[num].value
		JS_ShowHideScreen('divList','hide');
		inputbox.select();
		JS_UseEntity()
	}	
//If no list value selected, and no value in input box
	else if (!inputbox.value){
		inputbox.value='';
		revertbox.value='';
		valuebox.value='';
		JS_RevertValue(inputbox);
	}
//If no list value selected, but something in input box -- check if it is on the list
	else if (inputbox.value && inputbox.value!=revertbox.value) {
	var old=-1; for(var i=0;i<len;i++) {if(list[i].innerHTML.toUpperCase==inputbox.value.toUpperCase) old=i; }
		if (old!=-1) {
		inputbox.value=list[old].innerHTML;
		revertbox.value=list[old].innerHTML;
		valuebox.value=list[old].value
		JS_ShowHideScreen('divList','hide');
		inputbox.select();
		JS_UseEntity()
		}
//If not on list, create new if allowed
		else if(FieldData[0]=='true') {
			var r=confirm(inputbox.value + ' is not currently in this list.  Would you like to add it?');
			if (r==true){
				revertbox.value=inputbox.value;
				document.getElementById('frmList').src='return_list.php?gvNewItem='+
				inputbox.value+'&gvObj='+inputbox.id+'&gvTable='+FieldData[1]+'&gvItem='+FieldData[3]+'&gvUser='+FieldData[4]+'&gvDate='+FieldData[5];
				JS_ShowHideScreen('divList','hide');
				inputbox.select();
				return 'newValue';
			}
			else {
				if (key==9) inputbox.value=revertbox.value; 
				JS_ShowHideScreen('divList','hide');
				inputbox.select();
				JS_RevertValue(inputbox);
			}
		}
//If not on list, and cant create new, say cant create new
		else if(FieldData[0]=='false') {
			JS_ShowHideScreen('divList','hide');
			inputbox.select();
 			JS_NoEntity();
		}
	}
}

function JS_RevertValue(inputbox) {
		revertbox=document.getElementById(inputbox.id+'Cur');
		inputbox.value=revertbox.value;
		document.getElementById('divList').style.display='none'
}
