// JavaScript Document var checkText = ''; var sugImgPath = 'efa/img/sug/'; var sendOdvSuggestMin = '3'; var sendOdvSuggestMax = '7'; var lastOdvPoints = 'true'; function odvSuggest(event, value, usage){ if(event.keyCode == 38 || event.keyCode == 40 || event.keyCode == 27) { return false; } checkText = value; window.setTimeout( function(){ if(checkText != value){ return false } sendOdvSuggest(value, usage) }, 600); } function sendOdvSuggest(value, usage){ //Control sendOdvSuggestMax and sendOdvSuggestMax from Def Date if(value.length >= sendOdvSuggestMin){//&& value.length < 7 var URL = suggestURL; var _params = { language: 'de', locationServerActive: '1', anyObjFilter_sf: 126, //10, //$('#anyObjFilter_origin').val() SpEncId: 0, itdLPxx_usage: usage, anyMaxSizeHitList: '50', useHouseNumberList: 'true', type_sf: 'any', name_sf: value, itdLPxx_checkText: value, reducedAnyWithoutAddressObjFilter_sf: '103', reducedAnyPostcodeObjFilter_sf: '64', reducedAnyTooManyObjFilter_sf: '2', stateless: '1', outputFormat: 'JSON' } if (document.getElementById('SpEncId')) { _params.SpEncId = jQuery('#SpEncId').attr('value'); } // set region filter if (jQuery('.regionFilter:checked').length > 0) { _params.regionID_sf = jQuery('.regionFilter:checked').attr('value'); } checkText = value; var _ajax = mdvLib.ajax({ host: URL, parameters: _params, onComplete: odvSuggest_onAjaxComplete}); } else { if(document.getElementById('odvOverlay')){ $('#odvOverlay').remove(); } } }; /* this function creates the odv suggest overlay */ function odvSuggest_onAjaxComplete(response){ var json = null; var efa = null; if (response.responseText) { json = response.responseText; } eval('efa = ' + json + ';'); var usage = efa.parameters[1].value; if($('#odvOverlay')){ $('#odvOverlay').remove(); } if(!efa.stopFinder){ return false; } var length = 0; if (efa.stopFinder.points.length != null) length = efa.stopFinder.points.length; //var length = efa.stopFinder.length if(efa.stopFinder.point){ length = 1; } //efa.stopFinder.sort(sortContent); // sort result list if more than one hit if(length > 1){ efa.stopFinder.points.sort(typeComparison); //efa.stopFinder.sort(typeComparison); } var results = ''; if(efa.stopFinder.points.length > 1){ for(i=0;i < efa.stopFinder.points.length; i ++) { var point = efa.stopFinder.points[i]; var stateless= point.stateless; // alert(point.stateless); //for(i=0;i < length; i ++){ // var point = efa.stopFinder[i] || efa.stopFinder.point; // var stateless= point.stateless; if(point.type=='street' && !ptRef.coords){ break; } var type = "\'any\'"; var add= ''; var txt = point.name; if(point.anyType =='loc'){ txt = point.ref.place; } switch(point.anyType){ case 'stop': add = ''; break; case 'poi': add = ''; break; case 'street': add = ''; break; case 'address': add = ''; break; default: add = ''; break; } //var href ="javascript:submitPoint('"+stateless+"','"+usage+"','"+escape(txt)+"')"; var href = 'javascript:submitPoint(\''+stateless+'\',\''+usage+'\',\''+(txt)+'\');'; var pointDiv = "
" + add + "" + txt + "
"; results = results.concat(pointDiv); } } else if (efa.stopFinder.points.point.stateless) { // efa.stopFinder.points.length == 1 i = 0; var point = efa.stopFinder.points.point; var stateless= point.stateless; // alert(point.stateless); var txt = point.name; if(point.anyType =='loc') { txt = point.ref.place; } var add= ''; switch(point.anyType){ case 'stop': add = ''; break; case 'poi': add = ''; break; case 'street': add = ''; break; case 'address': add = ''; break; default: add = ''; break; } var href = 'javascript:submitPoint(\''+stateless+'\',\''+usage+'\',\''+(txt)+'\');'; var pointDiv = "
" + add + "" + txt + "
"; results = results.concat(pointDiv); /* i = 0; var point = efa.stopFinder.points.point; var stateless= point.stateless; // alert(point.stateless); var txt = point.name; if(point.anyType =='loc') { txt = point.ref.place; } submitPoint("'"+stateless+"'","'"+usage+"'","'"+(txt)+"'"); /* */ } //results = ""+results+""; var odvSuggest = document.createElement('div'); odvSuggest.id='odvSg'; odvSuggest.innerHTML = results; var odvSuggestDiv = document.createElement('div'); odvSuggestDiv.className='odvSg'; odvSuggestDiv.id='odvOverlay'; $(odvSuggestDiv).insertAfter($('#namef_' + usage)); $("#odvOverlay").append(odvSuggest); $("#odvOverlay").css('zIndex','990'); }; function sortContent(a, b) { return a.name > b.name; } function typeComparison(a, b) { if(a.anyType == 'loc') { a.sortPos = 2 } else if(a.anyType == 'stop') { a.sortPos = 1 } else if(a.anyType == 'poi') { a.sortPos = 3 } else { a.sortPos = 4 } if(b.anyType == 'loc') { b.sortPos = 2 } else if(b.anyType == 'stop') { b.sortPos = 1 } else if(b.anyType == 'poi') { b.sortPos = 3 } else { b.sortPos = 4 } return a.sortPos > b.sortPos; } function insertAfter(parent, node, referenceNode) { if (parent && node && referenceNode) { parent.insertBefore(node, referenceNode.nextSibling); } } //function submitPoint(stateless,usage,row){ function submitPoint(stateless,usage,row){ if($("#namefState_" + usage).val() != "empty"){ $('#namef_' +usage).val(stateless); alert($('#namef_' +usage).val()+':'+usage); } else{ $('#namefInfo_' +usage).val(stateless); $('#namef_' +usage).val(row); //alert($('#namef_' +usage).find('a').val() +' | '+ row); } if (usage == 'origin') $("#namef_destination").focus(); else if (usage == 'destination') $("#itdDateDayMonthYear").focus(); sugFocusId = -1 } function removeSuggest() { if($('#odvOverlay')){ $('#odvOverlay').remove(); } } // changes onBlur the color and value of the odv inputfields function odvStdText(id){ var origin = $("#namef_origin")[0]; var destination = $("#namef_destination")[0]; var via = $("#namef_via")[0]; if(id == origin.id && origin.value == ""){ origin.value = origValue; origin.style.color = "gray"; } else if(id == destination.id && destination.value == ""){ destination.value = destValue; destination.style.color = "gray"; } //else if(via && id == via.id && via.value == ""){ // via.value = viaValue; // via.style.color = "gray"; //} } var sugFocusId = -1; // some functions which will be called when the document is ready $(document).ready(function() { // the individual behaviors when some keys will be pressed $(document).keyup(function(event){ if($('#sug_0')[0] && (event.keyCode == 40 || event.keyCode == 38)){ var parentSg = $('#odvSg')[0]; var counter = parentSg.childNodes.length; // check if cursor key were used //down if(event.keyCode == 40){ if(sugFocusId < counter -1){ sugFocusId++; $('div.actSug').removeClass('actSug'); $('#sug_' + sugFocusId)[0].className='actSug'; $('#sug_' + sugFocusId)[0].firstChild.focus() } } //up else if(event.keyCode == 38 && sugFocusId > 0){ sugFocusId--; $('div.actSug').removeClass('actSug'); $('#sug_' + sugFocusId)[0].className='actSug'; $('#sug_' + sugFocusId)[0].firstChild.focus() } } if(($('#sug_0')[0] && event.keyCode == 27)){ var from = $("#namef_origin")[0]; var to = $("#namef_destination")[0]; var sug = $(".odvSg"); for(i = 0; i < sug.length; i++){ sug[i].style.display = "none"; } } }); $('.enterPoint').focus(function() { sugFocusId = -1 }); });