framework.widget.suggest={init:function(a,d,f,b){if(!framework.util.isType(a,framework.DataType.STRING)||!framework.util.isType(b,framework.DataType.STRING)||!framework.util.isType(d,framework.DataType.ARRAY)||!framework.util.isType(f,framework.DataType.FUNCTION)){return framework.Status.UNDEFINED_ARGUMENT;
}var c=document.getElementById(a);if(framework.util.isUndefinedOrNull(c)){return framework.Status.ELEMENT_DOES_NOT_EXIST;}c._suggestAlways=c.getAttribute("suggestAlways")=="true"?true:false;if(d.length>0||c._suggestAlways===true){framework.eventmodel.addElementEvent(a,framework.EventType.KEYDOWN,framework.widget.suggest._suggestOnKeyDownEventHandler);
framework.eventmodel.addElementEvent(a,framework.EventType.KEYUP,framework.widget.suggest._search);framework.eventmodel.addElementEvent(a,framework.EventType.CLICK,framework.widget.suggest._textBoxOnClickEventHandler);framework.eventmodel.addElementEvent(a,framework.EventType.FOCUS,framework.widget.suggest._setFocusIdOff);
framework.eventmodel.addElementEvent(a,framework.EventType.BLUR,framework.widget.suggest._suggestTextBoxOnBlurEventHandler);}var e=a+"._LookupButton";if(d.length>0||c._suggestAlways===true){framework.eventmodel.addElementEvent(e,framework.EventType.CLICK,framework.widget.suggest._search);framework.eventmodel.addElementEvent(e,framework.EventType.FOCUS,framework.widget.suggest._setFocusIdOn);
framework.eventmodel.addElementEvent(e,framework.EventType.BLUR,framework.widget.suggest._setFocusIdOff);framework.widget.suggest._listArray[a]=d;c.value=b;framework.util.setElementVisible(e,true);}else{c.value="";framework.util.setElementVisible(e,false);}framework.widget.suggest._functionName[a]=f;
framework.widget.suggest._defaultText[a]=b;return framework.Status.SUCCESS;},updateListArray:function(a,c){if(!framework.util.isType(a,framework.DataType.STRING)||!framework.util.isType(c,framework.DataType.ARRAY)){return framework.Status.UNDEFINED_ARGUMENT;}framework.widget.suggest._listArray[a]=c;var d=a+"._LookupButton";
var b=document.getElementById(a);if(c.length>0||b._suggestAlways===true){framework.eventmodel.addElementEvent(a,framework.EventType.KEYDOWN,framework.widget.suggest._suggestOnKeyDownEventHandler);framework.eventmodel.addElementEvent(a,framework.EventType.KEYUP,framework.widget.suggest._search);framework.eventmodel.addElementEvent(a,framework.EventType.FOCUS,framework.widget.suggest._setFocusIdOff);
framework.eventmodel.addElementEvent(a,framework.EventType.BLUR,framework.widget.suggest._suggestTextBoxOnBlurEventHandler);framework.eventmodel.addElementEvent(a,framework.EventType.CLICK,framework.widget.suggest._textBoxOnClickEventHandler);if(b.value===""&&!framework.util.isUndefinedOrNull(framework.widget.suggest._defaultText[a])){b.value=framework.widget.suggest._defaultText[a];
}framework.util.setElementVisible(d,true);framework.eventmodel.addElementEvent(d,framework.EventType.CLICK,framework.widget.suggest._search);framework.eventmodel.addElementEvent(d,framework.EventType.FOCUS,framework.widget.suggest._setFocusIdOn);framework.eventmodel.addElementEvent(d,framework.EventType.BLUR,framework.widget.suggest._setFocusIdOff);
}else{framework.eventmodel.removeElementEvent(a,framework.EventType.KEYDOWN,framework.widget.suggest._suggestOnKeyDownEventHandler);framework.eventmodel.removeElementEvent(a,framework.EventType.KEYUP,framework.widget.suggest._search);framework.eventmodel.removeElementEvent(a,framework.EventType.FOCUS,framework.widget.suggest._setFocusIdOff);
framework.eventmodel.removeElementEvent(a,framework.EventType.BLUR,framework.widget.suggest._suggestTextBoxOnBlurEventHandler);framework.eventmodel.removeElementEvent(a,framework.EventType.CLICK,framework.widget.suggest._textBoxOnClickEventHandler);if(b.value==framework.widget.suggest._defaultText[a]){b.value="";
}framework.util.setElementVisible(d,false);}return framework.Status.SUCCESS;},listEntry:function(b,a){if(!framework.util.isType(b,framework.DataType.STRING)||!framework.util.isType(a,framework.DataType.STRING)){return framework.Status.UNDEFINED_ARGUMENT;}this.key=b;this.name=a;return framework.Status.SUCCESS;
},listEntryFF:function(b,a){this.key=b;this.name=a;return framework.Status.SUCCESS;},_clickedopen:false,_holdTextElementId:"",_holdFunctionName:"",_holdFocusId:"",_listArray:new Array(),_functionName:new Array(),_defaultText:new Array(),_setFocusIdOff:function(){framework.widget.suggest._holdFocusId="";
return framework.Status.SUCCESS;},_setFocusIdOn:function(){framework.widget.suggest._holdFocusId="on";return framework.Status.SUCCESS;},_textBoxOnClickEventHandler:function(){var a=document.getElementById(this.id);if(a.value==framework.widget.suggest._defaultText[this.id]){a.value="";}framework.widget.suggest._clickedopen=false;
return framework.Status.SUCCESS;},_suggestOnKeyDownEventHandler:function(a){if(framework.util.isUndefinedOrNull(a.keyCode)){return framework.Status.ELEMENT_DOES_NOT_EXIST;}else{if(a.keyCode==framework.KeyCode.KEY_TAB){framework.util.hideElement(this.id+"._Dropdown");}else{if(a.keyCode==framework.KeyCode.KEY_DOWN_ARROW||a.keyCode==framework.KeyCode.KEY_UP_ARROW){framework.widget.suggest._setFocusIdOn();
}}}return framework.Status.SUCCESS;},_suggestTextBoxOnBlurEventHandler:function(b){var a=document.getElementById(this.id);if(framework.util.isEmpty(a.value)){a.value=framework.widget.suggest._defaultText[this.id];}if(framework.util.isEmpty(framework.widget.suggest._holdFocusId)){framework.util.hideElement(this.id+"._Dropdown");
}return framework.Status.SUCCESS;},_suggestSelectOnBlurEventHandler:function(){var a=this.id;var b=this.id.indexOf("._InputSelect");if(b>-1){a=this.id.substr(0,b);}if(framework.util.isEmpty(framework.widget.suggest._holdFocusId)){framework.util.hideElement(a+"._Dropdown");}var c=document.getElementById(a);
if(framework.util.isEmpty(c.value)){c.value=framework.widget.suggest._defaultText[a];}return framework.Status.SUCCESS;},_search:function(d){var b=false;if(framework.widget.suggest._getKeyCodeFromEvent(d)==framework.KeyCode.KEY_NONE){b=true;}var a=this.id;var c=this.id.indexOf("._LookupButton");if(c>-1){a=this.id.substr(0,c);
}framework.widget.suggest._searchText(d,b,a,framework.widget.suggest._listArray[a],framework.widget.suggest._functionName[a]);return framework.Status.SUCCESS;},_searchText:function(event,fromClick,textElementId,listArray,functionName){if(!framework.util.isType(fromClick,framework.DataType.BOOLEAN)||!framework.util.isType(textElementId,framework.DataType.STRING)||!framework.util.isType(listArray,framework.DataType.ARRAY)||!framework.util.isType(functionName,framework.DataType.FUNCTION)){return framework.Status.UNDEFINED_ARGUMENT;
}var dropdownId=textElementId+"._Dropdown";var keyCode=framework.widget.suggest._getKeyCodeFromEvent(event);if(keyCode==framework.KeyCode.KEY_ESCAPE||keyCode==framework.KeyCode.KEY_TAB){framework.util.hideElement(dropdownId);framework.widget.suggest._clickedopen=false;return true;}framework.widget.suggest._holdTextElementId=textElementId;
framework.widget.suggest._holdFunctionName=functionName;if(framework.widget.suggest._clickedopen&&fromClick){framework.util.hideElement(dropdownId);framework.widget.suggest._clickedopen=false;}else{var textElement=document.getElementById(textElementId);var capturedtext=textElement.value;textElement._listSize=parseInt(textElement.getAttribute("listSize"));
if(framework.util.isUndefinedOrNull(capturedtext)){return framework.Status.ELEMENT_DOES_NOT_EXIST;}var capturedTextLowerCase=capturedtext.toLowerCase();var innerdiv=document.getElementById(dropdownId);if(framework.util.isUndefinedOrNull(innerdiv)){return framework.Status.ELEMENT_DOES_NOT_EXIST;}var html=new Array;
var results=0;var listsize=0;var first=true;var item="";var capturedTextIndex=-1;var htmlString="";framework.widget.suggest._clickedopen=true;for(var i=0;i<listArray.length;i+=1){item=listArray[i].name.toLowerCase();capturedTextIndex=item.indexOf(capturedTextLowerCase);if(capturedTextIndex===0||item.indexOf(" "+capturedTextLowerCase)>-1||fromClick||(keyCode==framework.KeyCode.KEY_DOWN_ARROW&&capturedTextIndex===0)){if(first){html.push('<option value="');
html.push(listArray[i].key);html.push('" selected>');html.push(listArray[i].name);html.push("</option>");first=false;}else{html.push('<option value="');html.push(listArray[i].key);html.push('">');html.push(listArray[i].name);html.push("</option>");}results+=1;}}htmlString=html.join("");listsize=results;
if(listsize>textElement._listSize){listsize=textElement._listSize;}var inputSelectId=textElementId+"._InputSelect";var elementWidth=textElement.clientWidth>textElement.size?textElement.clientWidth:textElement.size;var innerHTML='<select id="'+inputSelectId+'"'+' name="'+inputSelectId+'"'+' size="'+listsize+'"'+' style="width:'+(elementWidth+4)+'px">'+htmlString+"</select>";
innerdiv.innerHTML=innerHTML;framework.util.showElement(dropdownId);if(results===0){framework.util.hideElement(inputSelectId);framework.widget.suggest._clickedopen=false;}else{if(keyCode==framework.KeyCode.KEY_DOWN_ARROW||keyCode==framework.KeyCode.KEY_UP_ARROW||keyCode==framework.KeyCode.KEY_NONE){framework.util.showElement(dropdownId);
document.getElementById(inputSelectId).focus();}if(keyCode==framework.KeyCode.KEY_ENTER){try{eval("framework.widget.suggest._populateElement()");}catch(e){}}}framework.eventmodel.addElementEvent(inputSelectId,framework.EventType.KEYDOWN,framework.widget.suggest._populateNameKeyPress);framework.eventmodel.addElementEvent(inputSelectId,framework.EventType.CLICK,framework.widget.suggest._populateElement);
framework.eventmodel.addElementEvent(inputSelectId,framework.EventType.BLUR,framework.widget.suggest._setFocusIdOff);framework.eventmodel.addElementEvent(inputSelectId,framework.EventType.BLUR,framework.widget.suggest._suggestSelectOnBlurEventHandler);framework.eventmodel.addElementEvent(inputSelectId,framework.EventType.FOCUS,framework.widget.suggest._setFocusIdOn);
framework.eventmodel.addElementEvent(inputSelectId,framework.EventType.MOUSEOVER,framework.widget.suggest._setFocusIdOn);framework.eventmodel.addElementEvent(inputSelectId,framework.EventType.MOUSEOUT,framework.widget.suggest._setFocusIdOff);}return framework.Status.SUCCESS;},_populateElement:function(event){var inputSelectElement=document.getElementById(framework.widget.suggest._holdTextElementId+"._InputSelect");
var selectedOption=inputSelectElement.options[inputSelectElement.selectedIndex];var selectText=selectedOption.text;var selectValue=selectedOption.value;framework.widget.suggest._clickedopen=false;document.getElementById(framework.widget.suggest._holdTextElementId).focus();framework.util.hideElement(framework.widget.suggest._holdTextElementId+"._Dropdown");
var myFunction=framework.widget.suggest._holdFunctionName.toString().match(/^\s*function\s+([^\s\(]+)/);try{eval(myFunction[1]+'("'+selectValue+'","'+selectText+'","'+framework.widget.suggest._holdTextElementId+'")');}catch(e){}return framework.Status.SUCCESS;},_populateNameKeyPress:function(a){var b=framework.widget.suggest._getKeyCodeFromEvent(a);
if(b==framework.KeyCode.KEY_ESCAPE||b==framework.KeyCode.KEY_TAB){framework.util.hideElement(framework.widget.suggest._holdTextElementId+"._Dropdown");framework.widget.suggest._clickedopen=false;return framework.Status.SUCCESS;}else{if(b==framework.KeyCode.KEY_ENTER){framework.widget.suggest._populateElement(a);
}}a.stopPropagation();return framework.Status.SUCCESS;},_getKeyCodeFromEvent:function(a){var c=framework.KeyCode.KEY_NONE;try{if(!framework.util.isUndefinedOrNull(a.keyCode)){c=a.keyCode;}}catch(b){}return c;},loaded:true};