/************************************************************************************************************ (C) www.dhtmlgoodies.com, April 2006 This is a script from www.dhtmlgoodies.com. You will find this and a lot of other scripts at our website. Terms of use: You are free to use this script as long as the copyright message is kept intact. However, you may not redistribute, sell or repost it without our permission. Thank you! www.dhtmlgoodies.com Alf Magne Kalleland ************************************************************************************************************/ var ajaxBox_offsetX = 0; var ajaxBox_offsetY = 0; var ajax_list_externalFile = 'ajax-autocomplete.ajax'; // Path to external file var minimumLettersBeforeLookup = 0; // Number of letters entered before a lookup is performed. var ajax_list_objects = new Array(); var ajax_list_cachedLists = new Array(); var ajax_list_activeInput = false; var ajax_list_activeItem; var ajax_list_optionDivFirstItem = false; var ajax_list_currentLetters = new Array(); var ajax_optionDiv = false; var ajax_optionDiv_iframe = false; var maxOffsetWidth = 0; var ajax_list_MSIE = false; if(navigator.userAgent.indexOf('MSIE')>=0 && navigator.userAgent.indexOf('Opera')<0)ajax_list_MSIE=true; function ajax_getTopPos(inputObj) { var returnValue = inputObj.offsetTop; while((inputObj = inputObj.offsetParent) != null){ returnValue += inputObj.offsetTop; } return returnValue; } function ajax_list_cancelEvent() { return false; } function ajax_getLeftPos(inputObj) { var returnValue = inputObj.offsetLeft; while((inputObj = inputObj.offsetParent) != null)returnValue += inputObj.offsetLeft; return returnValue; } function ajax_option_setValue(e,inputObj) { if(!inputObj)inputObj=this; var tmpValue = inputObj.innerHTML; if(ajax_list_MSIE)tmpValue = inputObj.innerText;else tmpValue = inputObj.textContent; if(!tmpValue)tmpValue = inputObj.innerHTML; ajax_list_activeInput.value = tmpValue; if(document.getElementById(ajax_list_activeInput.name.replace('Text', 'Id'))) document.getElementById(ajax_list_activeInput.name.replace('Text', 'Id')).value = inputObj.id; ajax_options_hide(); } function ajax_options_hide() { if (ajax_optionDiv) { ajax_optionDiv.style.display='none'; } if (ajax_optionDiv_iframe) { ajax_optionDiv_iframe.style.display='none'; } // Need to override this to re-set the standard behaviour of the text and textareas after leaving an ajax list } function ajax_options_rollOverActiveItem(item,fromKeyBoard) { if(ajax_list_activeItem)ajax_list_activeItem.className='optionDiv'; item.className='optionDivSelected'; ajax_list_activeItem = item; if(fromKeyBoard){ if(ajax_list_activeItem.offsetTop>ajax_optionDiv.offsetHeight){ ajax_optionDiv.scrollTop = ajax_list_activeItem.offsetTop - ajax_optionDiv.offsetHeight + ajax_list_activeItem.offsetHeight + 2 ; } if(ajax_list_activeItem.offsetTop maxOffsetWidth) { maxOffsetWidth = offsetWidth; } } ajax_optionDiv_iframe.style.width = maxOffsetWidth; //TODO: check if we could calculate this ajax_optionDiv_iframe.style.height = '250px'; } } function ajax_option_list_showContent(ajaxIndex,inputObj,paramToExternalFile) { var letters = inputObj.value; var content = ajax_list_objects[ajaxIndex].response; var elements = content.split('|'); ajax_list_cachedLists[paramToExternalFile][letters.toLowerCase()] = elements; ajax_option_list_buildList(letters,paramToExternalFile); } function ajax_option_resize(inputObj) { ajax_optionDiv.style.top = (ajax_getTopPos(inputObj) + inputObj.offsetHeight + ajaxBox_offsetY) + 'px'; ajax_optionDiv.style.left = (ajax_getLeftPos(inputObj) + ajaxBox_offsetX) + 'px'; if(ajax_optionDiv_iframe){ ajax_optionDiv_iframe.style.left = ajax_optionDiv.style.left; ajax_optionDiv_iframe.style.top = ajax_optionDiv.style.top; } } function ajax_showOptions(inputObj,paramToExternalFile,e) { //alert(" The Param file is " +paramToExternalFile); if(e.keyCode==13 || /*e.keyCode==9 || */e.keyCode == 38 || e.keyCode == 40)return; // if(ajax_list_currentLetters[inputObj.name]==inputObj.value)return; if(!ajax_list_cachedLists[paramToExternalFile]) //no cache: SOKS 26.07.2006 ajax_list_cachedLists[paramToExternalFile] = new Array(); ajax_list_currentLetters[inputObj.name] = inputObj.value; if(!ajax_optionDiv){ ajax_optionDiv = document.createElement('DIV'); ajax_optionDiv.id = 'ajax_listOfOptions'; document.body.appendChild(ajax_optionDiv); // With IE, we need to put an IFRAME between a DIV and a SELECT to hide the SELECT if(ajax_list_MSIE) { ajax_optionDiv_iframe = document.createElement('IFRAME'); ajax_optionDiv_iframe.border='0'; ajax_optionDiv_iframe.style.width = ajax_optionDiv.clientWidth + 'px'; ajax_optionDiv_iframe.style.height = ajax_optionDiv.clientHeight + 'px'; ajax_optionDiv_iframe.id = 'ajax_listOfOptions_iframe'; document.body.appendChild(ajax_optionDiv_iframe); } /* var allInputs = document.getElementsByTagName('INPUT'); for(var no=0;no