// GLOBAL VERIABLES
var SuggestInputItemSelected = 0;
var SuggestInputMax = 10;
var SuggestionCurrentObject = '';
var SuggestionListArray = Array();
var SuggestionListArrayID = Array();
var SuggestionInsertList = Array();
var SuggestionSelectedID = null;
var SuggestionKeyRealses = true;

///////////////// LIST SUGGESTION
function SuggestInput(ObjectID,ListName,ListArray,evt,ListWidth,InsertList) {

if (ListName != SuggestionCurrentObject) {
SuffestionClear();	
SuggestionCurrentObject = ListName;
}
	
// INSERT LIST
SuggestionInsertList = InsertList;
KeyFunctionEnable = false;	
if (SuggestionKeyRealses) {

// SAFARI 2.0 FIX
SuggestionKeyRealses = false;
ObjectID.onkeydown = function () { SuggestionKeyRealses = true };

// GET VERIABLES
var InputText = ObjectID.value.toLowerCase();
var iKeyCode = evt.keyCode? evt.keyCode : evt.charCode;

// CHECK IF CHARACTER BUTTON
var ShowSuggestions = true;
if (iKeyCode < 32 || (iKeyCode >= 33 && iKeyCode <= 46) || (iKeyCode >= 112 && iKeyCode <= 123)) {
ShowSuggestions = false;
}

// CHECK IF DOWN AND UP
var SuggestionsScroll = false;
if (iKeyCode == 38 || iKeyCode == 40) {
SuggestionsScroll = true;
} else {
SuggestInputItemSelected = 0;
}


	// DISPLAY LIST
	if (InputText.length > 1 && !SuggestionsScroll) {
	
	ObjectID.onblur = function () { InsertSuggestionHide(ListName,ObjectID); };
	document.getElementById(ListName).style.display = "block";
	document.getElementById(ListName).style.width = ListWidth+"px";
	document.getElementById(ListName).innerHTML = '';
	
	var OneSuggestion = false;
	var FirstSuggestion = '';
	var LastSuggestion = '';
	var SuggestionCount = 0;
	SuggestInputItemSelected = 0;
	SuggestionListArray = Array();
	SuggestionListArrayID = Array();
	SuggestionSelectedID = null;
	
		for (var i = 0; i < ListArray.length; i++) {
		var TempName = ListArray[i].toLowerCase();
		var Patter = '/^'+InputText+'/';
		var SearchPatter = eval(Patter);			
			if (TempName.match(SearchPatter)) {
			if (SuggestInputMax > SuggestionListArray.length) {	
				document.getElementById(ListName).innerHTML +=  "<div class=\"Item\" onclick=\"InsertSuggestion("+i+",'"+ListArray[i]+"','"+ObjectID.id+"','"+ListName+"')\">"+ListArray[i]+"</div>";
				SuggestionListArray[SuggestionCount] = ListArray[i];
				SuggestionListArrayID[SuggestionCount] = i;
				SuggestionCount++;
				if (!OneSuggestion) {
				FirstSuggestion =  SuggestionInsertList[i];		
				}
				OneSuggestion = true;
				LastSuggestion = TempName;
			}
			}
		}	
		if (!OneSuggestion || LastSuggestion == InputText) {
		document.getElementById(ListName).style.display = "none";
		KeyFunctionEnable = true;
		ObjectID.onblur = null;
		} else if (ShowSuggestions) {			
			if(ObjectID.setSelectionRange) { 		
			ObjectID.setSelectionRange(InputText.length,FirstSuggestion.length);
			} else if(ObjectID.createTextRange) {			
			ObjectID.value = FirstSuggestion;	
			var oRange = ObjectID.createTextRange(); 
       		oRange.moveStart("character", InputText.length); 
        	oRange.moveEnd("character", FirstSuggestion.length); 
        	oRange.select();		
			} 
		}		
	} 
	
	// SCROLL LIST
	else if (SuggestionsScroll && document.getElementById(ListName).style.display == 'block') {
		if (iKeyCode == 40) { // DOWN
		if (SuggestInputItemSelected < (SuggestionListArray.length-1)) {
		SuggestInputItemSelected++;
		} else {
		SuggestInputItemSelected = 0;
		}
		}
		
		if (iKeyCode == 38) { // UP
		if (SuggestInputItemSelected > 0) {
		SuggestInputItemSelected--;
		} else {
		SuggestInputItemSelected = (SuggestionListArray.length-1);
		}
		}
		
		var SuggestionCount = 0;
		document.getElementById(ListName).innerHTML = '';
			for (var i = 0; i < SuggestionListArray.length; i++) {			
				if (SuggestInputItemSelected == SuggestionCount) {
				ObjectID.value = SuggestionInsertList[SuggestionListArrayID[i]];
				SuggestionSelectedID = SuggestionListArrayID[i];
				document.getElementById(ListName).innerHTML +=  "<div class=\"ItemSelected\" id=\"SelectedSuggestionItem_"+ListName+"\" onclick=\"InsertSuggestion("+SuggestionListArrayID[i]+",'"+SuggestionListArray[i]+"','"+ObjectID.id+"','"+ListName+"')\">"+SuggestionListArray[i]+"</div>";
				} else {
				document.getElementById(ListName).innerHTML +=  "<div class=\"Item\" onmouseover=\"document.getElementById('SelectedSuggestionItem_"+ListName+"').className = 'Item';\"; onclick=\"InsertSuggestion("+SuggestionListArrayID[i]+",'"+SuggestionListArray[i]+"','"+ObjectID.id+"','"+ListName+"')\">"+SuggestionListArray[i]+"</div>";
				}
				SuggestionCount++;
			}	
	
	// HIDE ELSE	
	} else {
	document.getElementById(ListName).style.display = "none";
	ObjectID.onblur = null;
	KeyFunctionEnable = true;
	}
	
	// ON ENTER 
	if (iKeyCode == 13) {
	document.getElementById(ListName).style.display = "none";
	//InsertAddList(SuggestionSelectedID,ObjectID.value);
	//ObjectID.value = '';	
	}	
	
}
}
///////////////// LIST SUGGESTION

///////////////// INSERT SUGGESTION
function InsertSuggestion(InsertID,InsertValue,ObjectIDName,ListName) {
document.getElementById(ObjectIDName).value = InsertValue;
//InsertAddList(InsertID,InsertValue);
document.getElementById(ListName).style.display = "none";
document.getElementById(ObjectIDName).onblur = null;
	if(document.getElementById(ObjectIDName).setSelectionRange) { 			
	//document.getElementById(ObjectIDName).setSelectionRange(0,0);
	} else if(document.getElementById(ObjectIDName).createTextRange) {	
	//var oRange = document.getElementById(ObjectIDName).createTextRange(); 
	//oRange.moveStart("character", document.getElementById(ObjectIDName).value.length); 
	//oRange.moveEnd("character", document.getElementById(ObjectIDName).value.length); 
	//oRange.select();		
	} 
KeyFunctionEnable = true;	
}
///////////////// INSERT SUGGESTION

///////////////// CLEAR SELECTIOn
function SuffestionClear() {
SuggestInputItemSelected = 0;
SuggestInputMax = 10;
SuggestionListArray = Array();
SuggestionListArrayID = Array();
SuggestionInsertList = Array();
SuggestionSelectedID = null;
SuggestionKeyRealses = true;	
}

///////////////// HIDE SUGGESTION
var SuggestionTimeDelay;
function InsertSuggestionHide(ListName,ObjectID) {
SuggestionTimeDelay = setTimeout('InsertSuggestionHideCompleted("'+ListName+'","'+ObjectID.id+'")', 150);
KeyFunctionEnable = true;
}

function InsertSuggestionHideCompleted(ListName,ObjectIDName) {
clearTimeout(SuggestionTimeDelay);
document.getElementById(ListName).style.display = "none";
	if(document.getElementById(ObjectIDName).setSelectionRange) { 			
	//document.getElementById(ObjectIDName).setSelectionRange(0,0);
	} else if(document.getElementById(ObjectIDName).createTextRange) {	
	//var oRange = document.getElementById(ObjectIDName).createTextRange(); 
	//oRange.moveStart("character", document.getElementById(ObjectIDName).value.length); 
	//oRange.moveEnd("character", document.getElementById(ObjectIDName).value.length); 
	//oRange.select();		
	}
KeyFunctionEnable = true;	
}
///////////////// HIDE SUGGESTION


// INSERT TO ADD LIST
function InsertAddList(InsertID,InsertValue) {	
	if (InsertID == null || SuggestionInsertList[InsertID] == 'undefined' || !SuggestionInsertList[InsertID]) {	
		if (InsertValue.match('@')) {
		document.getElementById('SuggestionAddListHeader').style.display = "block";
		document.getElementById('SuggestionAddList').style.display = "block";	
		document.getElementById('SuggestionAddList').innerHTML += '<div class="EmailHolder"><div class="EmailAddressHolder">'+InsertValue+'</div> <div class="EmailRemoveItem" onclick="RemoveFromTheList(\''+InsertValue+'\')" title="Remove Email"></div><div style="clear:both"></div></div><br>';	
		}
	} else {	
		if (SuggestionInsertList[InsertID].match('@')) {
		document.getElementById('SuggestionAddListHeader').style.display = "block";
		document.getElementById('SuggestionAddList').style.display = "block";	
		document.getElementById('SuggestionAddList').innerHTML += '<div class="EmailHolder"><div class="EmailAddressHolder">'+SuggestionInsertList[InsertID]+'</div> <div class="EmailRemoveItem" onclick="RemoveFromTheList(\''+SuggestionInsertList[InsertID]+'\')" title="Remove Email"></div><div style="clear:both"></div></div><br>';	
		}
	}	
	document.getElementById('PostEmailAddresses').value = document.getElementById('SuggestionAddList').innerHTML;
	KeyFunctionEnable = true;
	ScrollBarSet('ContentAreaA');
}

// REMOVE FROM THE LIST
function RemoveFromTheList(RemoveEmail) {

	var LineArray = document.getElementById('SuggestionAddList').innerHTML.replace(/<br>$/,'').split(/<br>/gi);
	document.getElementById('SuggestionAddList').innerHTML = '';
	var RemovedCheck = false;
	for (i=0; i < LineArray.length; i++) {
		if (!RemovedCheck && LineArray[i].match(RemoveEmail)) {	
		RemovedCheck = true;
		} else {
		document.getElementById('SuggestionAddList').innerHTML += LineArray[i]+'<br>';	
		}
	}	
	document.getElementById('PostEmailAddresses').value = document.getElementById('SuggestionAddList').innerHTML;
	if (!document.getElementById('SuggestionAddList').innerHTML.match('@')) {
	document.getElementById('SuggestionAddListHeader').style.display = "none";
	document.getElementById('SuggestionAddList').style.display = "none";		
	}
	ScrollBarSet('ContentAreaA');
}


// DISABLED SUBMIT ON ENTER
function stopRKey(evt) { 
  var evt = (evt) ? evt : ((event) ? event : null); 
  var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null); 
  if ((evt.keyCode == 13) && (node.type=="text"))  {return false;} 
} 
document.onkeypress = stopRKey; 

//////////////////////////////////////////////////////////////////////////////// FUNCTION: SUGESTIONS
/////////////////////////////////////////////////////////////////////////////////////////////////////