// Copyright Jobanova GmbH, 2005-2007. All rights reserved.
// Author: Evgeni Krasnopolski

// Version
var js_suggest_ver = 1.9;

//var cache_bbg_swh      = 0;

var debug               = false;	// switches to debug mode

var inputForm 			= null;
var inputField1         = null;     // input field element 1
var inputField2         = null;     // input field element 2

var backupValue			= new Array();

var suggBox 			= null;     // suggestion box (DIV)
var suggVisible 		= false;
var QueryBoxContainer	= null;		// last queries and other aids
var xmlhttp 			= null;
var lastHighlightedId  	= -1;
var suggCount 			= -1;
var searchDelay 		= 250;      // ms until search is started
var fixedwidth 			= -1;       // if -1, width is calculated automatically; can be set in the setup function
var ElementCSS			= new Array();

//var requestURL 		= "";       // URL to be called for the request. The input field value is escaped and appended
var callcounter 		=  0;
var lastkeyevent 		= -1;		// code of the first pressed key - important for key combinations(f.Ex. Ctrl+C)
//var fieldupdate 		= "";

var cache_on			= true;			// cache switch
var request_cache 		= new Object();	// cache object
var last_ajax_request	= null;

//var request_var			= "";

var qstartime 			= 0;			// point of time of the start request sending
//var lastquery		= "";
var search_range_el		= false;

var submited			= false;



function doBlur(event){
    if (!event && window.event) {
       event = window.event;
    }
    lastkeyevent = "";
    // hide suggestion box
    hideSuggBox();
}

function doFieldKeyDown(event) {

   if (!event && window.event) {
           event = window.event;
   }
    if ( lastkeyevent == 17 &&  (event.keyCode == 86 || event.keyCode == 88)){}
    else if ( lastkeyevent == 17 ||   lastkeyevent == 18){
    		lastkeyevent = event.keyCode;
    	return;
    }

    if (!xmlhttp) return;

    if(     (event.keyCode >111 && event.keyCode <124)
        ||  (event.keyCode >143 && event.keyCode <146)
        ||  (event.keyCode >15  && event.keyCode <21 ) )
    {
            lastkeyevent = event.keyCode;
        return;
    }
    //alert( "Key-Event" );

    switch (event.keyCode) {

            case 17: // Ctrl
            case 18: // Alt
            case 37: // left
            case 39: // right
            case 45: // Insert
            case 93: // Context Key
            case 91: // Windows Key
            {
             break;
            }
            case 40: {
                    // down

                    if (!suggVisible) {
                    		setTimeout( "showResults( )", 50 );
                            //setTimeout("doSearch()", 10);
                    } else if (suggCount > 0) {
                        if (lastHighlightedId < suggCount - 1) {
                            selectRow(lastHighlightedId + 1);
                            showSuggBox();
                        }
                        cancelEvent(event);
					}
			     break;
            }
            case 38: {
                    // up
                    if (suggCount > 0) {
                        if (lastHighlightedId > 0) {
                            selectRow(lastHighlightedId - 1);
                            showSuggBox();
                        }
                        cancelEvent(event);
                    }
                 break;
            }
            case 33: {
                    // PgUp
                    if (suggVisible && (suggCount > 0)) {
                        selectRow(0);
                        cancelEvent(event);
                    }
                break;
            }
            case 34: {
                    // PgDn
                    if (suggVisible && (suggCount > 0)) {
                        selectRow(suggCount - 1);
                        cancelEvent(event);
                    }
                 break;
            }
            case 35: {
                    // End
                    if (suggVisible && (suggCount > 0)) {
                        selectRow(suggCount - 1);
                        cancelEvent(event);
                    }
                 break;
            }
            case 36: {
                    // Home
                    if (suggVisible && (suggCount > 0)) {
                        selectRow(0);
                        cancelEvent(event);
                    }
                 break;
            }
            case 13: {
            		// Enter
                 	if (suggVisible && (lastHighlightedId >= 0)) {
                        var row = document.getElementById("suggRow" + lastHighlightedId);
                        cancelEvent(event);
                        if (row) {
                            var fx = row.onmousedown;
                            fx();document
                        }
                    }
            	break;
            }
            case 27: {
                    // Escape
                    if (suggVisible) {
                        selectRow(-1);
                        hideSuggBox();
                        cancelEvent(event);

                        // restore input value after a short time
                        backupValue[0] = inputField1.value;
                        backupValue[1] = inputField2.value;

                        setTimeout("inputField1.value = backupValue[0]", 10);
                        setTimeout("inputField2.value = backupValue[1]", 10);
                    }
                 break;
            }
            default: {
//----------------------------------------------------------------
				showDebugMsg( "T1", " | submited: " + submited, false );

                if( !submited ) setTimeout( "showResults()", 50 );
                else{
                	submited = false;
                	cancelEvent(event);
                	return;
                }
                //submited = false;
//----------------------------------------------------------------
            }


    }
//    lastkeyevent = event.keyCode;
}


function showResults()
{
	// var val = new Array( inputField1.value, inputField2.value);

    if( inputField1.value.length > 1  ||  inputField2.value.length > 1 ){
//------
		// inputField.value.replace( /[\ ]*([^\ ]*)[\ ]*/, '$1')

        var CacheVar = "request_cache[new Array(\"" + inputField1.value +"\", \""+ inputField2.value +
        							 "\", \""+ takeRadioChoice("job_type").value 		+"\", \""+ takePartnerID() +
        							 ((search_range_el)? "\", \""+ takeRadioChoice( "search_range" ).text : "" ) +"\")]";

		showDebugMsg( "T4", "<div style='color: #aaaaaa;'>looking in cache: "+ CacheVar +"</div>", true );

        if( typeof eval(CacheVar) == "undefined" || !cache_on ){
        	callSearch();
/*
        	// not found in the cache - send request
          // not found in the cache - send request
          if( last_ajax_request != inputField1.value +" "+ inputField2.value){
          	callSearch();
          }
          else{
		   		document.getElementById("T4").innerHTML = "<div style='color: brown;'> - waiting response !</div>" +
		   												  document.getElementById("T4").innerHTML;
		 	return;
	      }
*/
        }else{
			showCacheData( CacheVar );
        }
//------
    }
    else hideSuggBox();
}


function cancelEvent( event ){
    if( event.cancelBubble ) event.cancelBubble();
    if( event.returnValue  ) event.returnValue = false;
}


function getXMLHTTP() {
  var result = false;
  if(typeof XMLHttpRequest != "undefined") {
    result = new XMLHttpRequest();
  } else {
        try {
                result = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
                try {
                        result = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (ie) {}
        }
  }
  return result;
}


function getParentProps(elem, prop) {
        // returns the sum of the property "prop" along the offsetParent row of elem
        var result = 0;
        while (elem != null) {
                result += elem[prop];
                elem = elem.offsetParent;
        }
        return result;
}


function selectRow(row) {
        if (lastHighlightedId > -1) {
                rowDiv = document.getElementById("suggRow" + lastHighlightedId);
                rowDiv.className = ElementCSS[lastHighlightedId];
        }
        lastHighlightedId = row;
        rowDiv = document.getElementById("suggRow" + row);
        if (rowDiv) {
			rowDiv.className = ElementCSS[row] + "Sel";
		}
}

function mouseEnter(id) {
        selectRow(id);
}


function submitString(jd, orte, plzs, anz) {

//		inputForm.original_query.value	= inputField1.value +"{%}"	+ inputField2.value +"{%}"+ takeRadioChoice("job_type").value
//																						+"{%}"+ takeRadioChoice("search_range").text;

		document.cookie					= "sugg_what="	+ inputField1.value 						+ ";path=/;";
		document.cookie					= "sugg_where="	+ inputField2.value							+ ";path=/;";
		document.cookie					= "sugg_type="	+ takeRadioChoice("job_type"	).value		+ ";path=/;";
		document.cookie					= "sugg_range="	+ takeRadioChoice("search_range").text		+ ";path=/;";

        inputField1.value 				= unescape(jd);
        inputField2.value 				= unescape(orte);

        if(inputForm.suggest)   inputForm.suggest.value = '1';
        else{
            var sugg_f_field = document.createElement("input");
                sugg_f_field.setAttribute("type",  "hidden" );
                sugg_f_field.setAttribute("name",  "suggest");
                sugg_f_field.setAttribute("value", "1"      );
                inputForm.appendChild( sugg_f_field );
        }
/*
        inputForm.jd.value 				= jd;
        inputForm.ort.value 			= orte;
        inputForm.plz.value 			= plzs;
        inputForm.anzahl.value 			= anz;
*/
		init();

        if(pretty_strings)  {   doPretty();     }
        else                {   submitJNForm(); }
}


function submitJNForm(){
    try{
    	inputForm.submit();
    }
    catch(e){
    	inputForm.target = "";
    	inputForm.submit();
    }
}

function setDivSize() {

	var startF = document.getElementById("startF");
    if (suggBox) {
        suggBox.style.top   = getParentProps(inputField1, "offsetTop") 	+ inputField1.offsetHeight + "px";
        suggBox.style.left  = getParentProps(inputField2, "offsetLeft") + "px";

        suggBox.style.width =
        	( fixedwidth < 0 ?
				( ( getParentProps(inputField2, "offsetLeft")+ inputField2.offsetWidth) - getParentProps(inputField1, "offsetLeft") ) : fixedwidth
			);
    }
    if( QueryBoxContainer && document.getElementById("UpBtn") ){
    	UpBtn = document.getElementById("UpBtn");

        QueryBoxContainer.style.top   = getParentProps( startF, "offsetTop") + startF.offsetHeight + "px";
        QueryBoxContainer.style.left  =
        	getParentProps( UpBtn, "offsetLeft") + UpBtn.offsetWidth - QueryBoxContainer.offsetWidth + "px";
    }
/*
    if(document.getElementById("UpBtn")){
		UpBtn = document.getElementById("UpBtn");

		if( getParentProps(inputField1, "offsetTop") != getParentProps( UpBtn, "offsetTop") ){
			UpBtn.style.top = ( getParentProps(inputField1, "offsetTop") - getParentProps( UpBtn, "offsetTop") )+ "px;";
      	}
	}
*/
}

function fillDiv(jd, orte, plzs, anz, type, more_res, sugg_mes) {

    // remove previous elements
    while (suggBox.hasChildNodes()) {
            suggBox.removeChild(suggBox.firstChild);
    }
		if( more_res == 3 && sugg_mes != "" ){
			addSuggestMessage( sugg_mes );
		}
		ElementCSS	= new Array();	// remove previous element settings

		suggCount = jd.length;
        for (i = 0; i < jd.length; i++) {
                iDiv = document.createElement("div");
                iDiv.onmousemove = new Function("omo" + i, "mouseEnter("+ i +")");
                iDiv.onmousedown = new Function("omd" + i,
									"submitString('" + jd[i].replace(/'/g, "\"") + "'," +
												 "'" + orte[i].replace(/'/g, "\"") + "'," +
												 "'" + plzs[i].replace(/'/g, "\"") + "'," +
												 "'" +  anz[i] + "')");
                iDiv.id 			= "suggRow" + i;
                iDiv.style.cursor 	= "pointer";
/*                iDiv.innerHTML = "<span class='suggItem'><nowrap>" +
                        "<div class='suggProduct'>" + astrings[i] + "</div>" +
                        "<div class='suggCat'>" + bstrings[i] +"</div>" +
                        "</nowrap></span>";

		.suggProduct,
		.suggPLZ,
		.suggOrt
*/
				var encoded_jd  = unescape( jd[i] 	);
				var encoded_ort = unescape( orte[i] );
				var jd_cut		= 33;

                    switch( type[i] ){
                         case "S":
                         	ElementCSS[i] = "suggRowSyn";
                         	encoded_jd 	  = "&nbsp;&nbsp;"+encoded_jd;
                         	jd_cut		  = 43;
                           break;
                         case "A":	ElementCSS[i] = "suggRowAprox";		break;
                         case "N":	ElementCSS[i] = "suggRowNothing";	break;
                         case "T":
                         default:	ElementCSS[i] = "suggRow";			break;
                    }
                    iDiv.className = ElementCSS[i];

				iDiv.innerHTML = "<div class='suggItem'>" +
                		 		 "<span class='suggPLZ'><nobr>"  +
                		 				unescape( (!plzs[i])? " &nbsp;&nbsp;" :  plzs[i] ) +
                		 		 "</nobr></span><span class='suggOrt'><nobr>" +
                		 		 (( encoded_ort.length >25 )? (encoded_ort.substr(0, 23) + "...") : encoded_ort) +
                		 		 (( encoded_ort.length <1 )? "&nbsp;&nbsp;" : "") +
                		 		 "</nobr></span>" +
								 "<span class='suggProduct' ><nobr> "
								 + (( encoded_jd.length >jd_cut )? (encoded_jd.substr(0, jd_cut-1) + "...") : encoded_jd) +
                		 		 " (" + unescape( anz[i] ) + ")&nbsp;&nbsp;</nobr></span>" +
                		 		 "</div>";
                suggBox.appendChild(iDiv);
        }
		if(more_res == 1){
			addSuggestMessage( Sugg_no_exact_matches );
		}
		else if( more_res == 2 && sugg_mes != "" ){
			addSuggestMessage( sugg_mes );
		}

        lastHighlightedId = -1;
        setDivSize();
}

function displayResults( what, where, jd, orte, plzs, anz, type, more_res, sugg_mes) {

        if( unescape(what)  != unescape(inputField1.value) ||
			unescape(where) != unescape(inputField2.value) 		)
		{
        	showResults();
        }
		showDebugMsg( "T4",
					  unescape(what) +" : "+ unescape(where) +" | " + unescape(inputField1.value) +" :  " +unescape(inputField2.value) +"<br>",
					  true );
/*
        if( document.getElementById("T4") != null   && debug ){
       	 später ON

          	document.getElementById( "T4" ).innerHTML +=	new Date().getTime() - qstartime + " msec | " +
                                                        	unescape(what)  + " : " + unescape(inputField1.value) +" "+
                                                        	unescape(where) + " : " + unescape(inputField2.value);
        }
*/

        // add results to cache array ------
        if( cache_on ){
		/*
            if( document.getElementById("T4") != null   && debug ){
            // später ON

                  document.getElementById( "T4" ).innerHTML = new Date().getTime() - qstartime + " msec <br\>" +
                                                              unescape(request1) + " : " + inputField1.value +" | "+
                                                              unescape(request2) + " : " + inputField2.value;

            }
        */

            var CacheVar = 	"request_cache[new Array(\"" + unescape(what) + "\", \""+ unescape(where) +"\", \""+
            				takeRadioChoice("job_type").value 		+"\", \""+ takePartnerID() +
            				((search_range_el)? "\", \""+ takeRadioChoice( "search_range" ).text : "" )
            				+"\" )]";

			showDebugMsg( "T4", "<div>put to cache: "+ CacheVar +"</div>", true );

            if( typeof eval(CacheVar) == "undefined" ){
                eval( CacheVar+" = new Array( jd, orte, plzs, anz, type, more_res, sugg_mes );" );
            }
        }
        // ---------------------------------

        fillDiv(jd, orte, plzs, anz, type, more_res, sugg_mes);

        if (suggCount == 0 && sugg_mes.length < 1) {	// close suggest box if no results
                hideSuggBox();
                return;
        }
        showSuggBox();
}

function callSearch() {

		showDebugMsg( "T4", "<div style='color: brown;'> callSearch() from "+ callSearch.caller.name +"() </div>", true );

        callcounter++;
        setTimeout("doSearch()", searchDelay );
}

function doSearch() {

        if (callcounter > 0) callcounter--;
        if (callcounter > 0) return;
        if (inputField1.value.length < 2 && inputField2.value.length < 2){
        	hideSuggBox();
           return;
        }
        if (!xmlhttp){ return; }

        if (xmlhttp.readyState != 0) // search running right now?
        {
           showDebugMsg( "T2", "<div style='font-weight: bold;'>State"+xmlhttp.readyState+": kill ajax queries! </div>", true );

           xmlhttp.abort();	// cancel current search
        }
        var RadioChoice = takeRadioChoice("job_type");
        var SearchRange = (search_range_el)? takeRadioChoice( "search_range" ).text : "50";
        var PartnerID 	= takePartnerID();
// --------------------------------
		var CacheVar = "request_cache[new Array(\"" + inputField1.value +"\", \""+ inputField2.value +
        							 "\", \""+ RadioChoice.value +"\", \""+ PartnerID +"\", \""+ SearchRange +"\")]";

		showDebugMsg( "T4",
					  "<div style='color: #aaaaaa;'><b>cache security check: </b>"+ CacheVar +" <b>| callcounter: "+ callcounter +"</b></div>",
		 			  true );
        if( last_ajax_request == inputField1.value +" "+ inputField2.value +" "+ RadioChoice.value +" "+ SearchRange )	return;

        if( typeof eval(CacheVar) == "undefined" || !cache_on ){
// --------------------------------
/*
				if(lastquery == inputField.value)
				{
        	document.getElementById( "T4" ).innerHTML += inputField.value + " (!) ";
        	return;
        }

				lastquery = inputField.value;
*/
			qstartime = new Date().getTime();

            what_ready = inputField1.value.replace(/c\s*#/gi, "C*");

            xmlhttp.open("GET", "request.php?request="  + escape( what_ready +" "+ inputField2.value ).replace( /\+/g, "%2B") +
                                "&what="                + escape( what_ready ).replace( /\+/g, "%2B") +
                                "&where="               + escape( inputField2.value ).replace( /\+/g, "%2B") +
                                "&" + RadioChoice.name  + "=" + RadioChoice.value +"&partner_id=" + PartnerID +"&search_range=" + SearchRange, true );

            xmlhttp.onreadystatechange = checkRequestResponse;
            xmlhttp.send(null);
            last_ajax_request = inputField1.value +" "+ inputField2.value +" "+ RadioChoice.value +" "+ SearchRange;

			showDebugMsg( "T4", "<div style='font-weight: bold; color: green; font-size: 12px;'>send "+ inputField1.value + ": "+
								inputField2.value +" | "+ new Date().getTime() +"</div>",
		 			  	  true );
        }
        else{
			showDebugMsg( "T4", "<div style='color: #999999;'><b>cache security check: </b> found !</div>", true );
         	showCacheData( CacheVar );
        }
}


function checkRequestResponse() {

    if (xmlhttp.readyState == 4){
        if(xmlhttp.responseText)
        {
            var ajaxText = xmlhttp.responseText; //.replace(/.*(displayResults.*)/gi, "$1" );

			showDebugMsg( "T2", "HTTP: "+ xmlhttp.status +" "+ xmlhttp.statusText +"<br>State"+ xmlhttp.readyState +" : "+ xmlhttp.responseText +
								"<br><br><br>",
						  true );

            var ajaxText = xmlhttp.responseText;
            if (ajaxText.charAt(0) != "<"){
                // The response text gets executed as javascript...
                try{
                    eval( ajaxText );
                }
                catch (e){   // error - probably due to special characters ('), try again after character substitution

                    var txt =  ajaxText.replace(/\'/g, "''");

                    try                 { eval(txt); }
                    catch (ie)  {   // still errors? don't display anything
                                    hideSuggBox();
                    }
                }
            }
        }
        else{
        	if( xmlhttp.status &&  xmlhttp.statusText ){
                showDebugMsg( "T2", "<div style='color: red; font-weight: bold;'> KEIN xmlhttp.responseText ("+ xmlhttp.readyState +
                					") !!! ..... HTTP: "+ xmlhttp.status +" "+ xmlhttp.statusText +"</div><br>",
                              true );
        	}
            showResults();
        }
    }
}


function showLastSuggest(){
	if( !submited && readCookie("sugg_what") != null && readCookie("sugg_where") != null )
	{
        inputField1.value = readCookie("sugg_what");
        inputField2.value = readCookie("sugg_where");

        var sugg_type 	= readCookie("sugg_type");
        var sugg_range	= readCookie("sugg_range");

        if( sugg_type	!= null ) setFieldVal(document.test.job_type, 		sugg_type	);
        if( sugg_range	!= null ) setFieldVal(document.test.search_range, 	sugg_range	);
        inputField1.focus();
        setTimeout( "showResults()", 50 );
    }
}



function showMess( mess, name ){
	if( document.getElementById( name ) )
        	document.getElementById( name ).innerHTML = mess;
}


function takeRadioChoice(name){
  	if( 		!inputForm[name] 						) 	return null;
	else if(	inputForm[name].length > 0	)
	{
        for( i=0; i < inputForm[name].length; i++){
            if( inputForm[name][i].checked 	== true  ||
            	inputForm[name][i].selected == true 	)   return inputForm[name][i];
        }
    }else if(	inputForm[name].type == "hidden" 		) 	return inputForm[name];
     else if(	inputForm[name].type == "checkbox" &&
     			inputForm[name].checked 				)	return inputForm[name];
}


function takePartnerID(){
	val = takeRadioChoice("partner_id");
  return ( val != null )?  val.value : 0;
}


function SetupAutoSuggest(request, what, where, width){
        // request and input are mandatory, rest are optional

        //requestURL = request;
        inputForm  	= what.form;
        inputField1 = what;
		inputField2 = where;
        submited 	= false;

		if( document.getElementsByName("search_range").length > 0 ) search_range_el = true;

        if (typeof width != "undefined") {
                fixedwidth = width.replace(/\D.*/, "") -1 +"px";
        }

        xmlhttp = getXMLHTTP();
        if (!xmlhttp) {
          return;
        }
        if (typeof netscape != 'undefined' && typeof netscape.security != 'undefined') {
          try {
                  netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');
          }
          catch (e) {
//                        alert( e.message  );
          }
        }

        what.setAttribute("autocomplete","off");
        what.onblur       	= doBlur;
        //input.onfocus		= hideQueryBox;
        what.onkeydown    	= doFieldKeyDown;
        what.onmousedown  	= doBlur;

        where.setAttribute("autocomplete","off");
        where.onblur       	= doBlur;
        where.onkeydown    	= doFieldKeyDown;
        where.onmousedown  	= doBlur;


        //input.onselect = doBlur;
		QueryBoxContainer			= document.createElement("div");
		QueryBoxContainer.id 		= "QueryBoxContainer";
		QueryBoxContainer.className = "QueryBoxContainer";
		QueryBox 					= document.createElement("div");
    	QueryBox.name 				= "QueryBox";
		QueryBox.id 				= "QueryBox";
		QueryBox.className 			= "QueryBox";
		QueryFooterBox				= document.createElement("div");

		//  #99aacc;
        QueryFooterBox.innerHTML  =
        "<center> <table width='100%' style='border-top: 1px solid #909090; padding: 0px; color: #efefef; background-color: #e2b892;'>"	+
                  "<tr> <td class='suggItem'> <center> <span style='margin-left:6px;'> "+ QueryBox_close_wnd +"</span></center>"	+
                  "</td> "	+
                  "<td width='18'>"	+
                  	"<div style='width: 16px; height: 16px;' title='" + QueryBox_mouse_over_close +"' "+
                  	"onClick='hideQueryBox();' onMouseOver='this.style.cursor = \"pointer\";'><span class='close_btn'></span></div>" +
                    //"<img    src='"+ root_directory +"images/close.gif' align='absmiddle' border='0' title='" + QueryBox_mouse_over_close +"' "+
                    //        "onClick='hideQueryBox();' onMouseOver='this.style.cursor = \"pointer\";'>"		  +
                "</td> </tr> </table> </center>";

		QueryBoxContainer.appendChild(QueryBox);
        QueryBoxContainer.appendChild(QueryFooterBox);

		document.body.appendChild(QueryBoxContainer);



        suggBox 			= document.createElement("div");
        suggBox.name 		= "suggBox";
        document.body.appendChild(suggBox);

        suggBox.className 	= "suggBox";
        suggBox.id 			= "suggBox";
        setDivSize();

		moveSwitchEl();
        window.onresize = setDivSize;
}


function showSuggBox() {
	hideQueryBox();
	if( !submited && (inputField1.value != "" || inputField2.value != "" ) ){
        document.getElementById("suggBox").style.visibility="visible";
        suggVisible = true;
    }
    submited = false;
}


function hideSuggBox() {
        document.getElementById("suggBox").style.visibility="hidden";
        suggVisible = false;
}


function addSuggestMessage( message ) {
        iDiv = document.createElement("div");
        iDiv.innerHTML =    "<center> " +
                            "<div style = " +
                            "'color: black; background-color: #99aacc;' >" + unescape( message ) +
                            " </div> </center>";
        suggBox.appendChild(iDiv);
}


function clearCache(){
	for( var knote in request_cache){
		request_cache = new Object();
		break;
	}
}


function showCacheData( call ){
    // take results from the cache
    var ResultsArr = eval( call );
    fillDiv( ResultsArr[0], ResultsArr[1], ResultsArr[2], ResultsArr[3], ResultsArr[4], ResultsArr[5], ResultsArr[6] );

	showDebugMsg( "T4", "<br> - "+ call.replace(/.*\((.+),.*/, '$1') +" taken from cache<br>", true );
    // -----------------------

    if( ResultsArr[0].length > 0 || ResultsArr[6].length > 0)   showSuggBox();  // show suggest if something found
    else    hideSuggBox();
}


function doPretty(){
    try{
        var NotToForm =
        {
            "what"          : 1,
            "where"         : 1,
            "job_type"      : 1,
            "last_queries"  : 1
        }
    /*
    	var NewDiv 		 = document.createElement("div");
    	NewDiv.setAttribute("style", "display:none;");
    */
    	submit_what   = inputForm.what.value.replace(/c\s*#/gi, "C*").replace( /(^\s+)|(\s+$)/g, "").replace(/\//g,"--");
        submit_where  = inputForm.where.value.replace(/(^\s+)|(\s+$)/g, "").replace(/\//g,"--");
    	submit_fall   = "jd_location";
    	submit_fields = "/";

        if( submit_where != "" && submit_what == "" ){
            submit_fields += submit_where +"/";
            submit_fall   = "only_location";
        }
        else if( submit_what != "" && submit_where == "" ){
            submit_fields += submit_what +"/";
            submit_fall = "only_jd";
        }
        else if( submit_what != "" && submit_where != "" ){
            submit_fields += submit_what +"/"+ submit_where +"/";
        }
        submit_fields = submit_fields.replace( /\s/g, "+");

        pretty_url = root_directory + pretty_strings[submit_fall][takeRadioChoice("job_type").value] + submit_fields +'?';

    	NewDiv_HTML = '<form name="VirtualS" method="POST" action="'+
                      (root_directory + pretty_strings[submit_fall][takeRadioChoice("job_type").value] + submit_fields) +
                      '">\n';

    	var f_Field = inputForm.elements;
        for (var i=0; i<f_Field.length; i++) {

            if(f_Field[i].name && !NotToForm[f_Field[i].name] && typeof f_Field[i].type != "undefined" )
            {
                pretty_var_value = takeRadioChoice(f_Field[i].name)[(f_Field[i].type == "select-one")? "text" : "value"];

                if( !(f_Field[i].name == 'search_range' && pretty_var_value == '50') && pretty_var_value != '' )
                {
                    pretty_url  += f_Field[i].name +'='+ pretty_var_value +'&';

                    NewDiv_HTML += '\t<input type="hidden" name="'+ f_Field[i].name +
                                        '" value="'+ takeRadioChoice(f_Field[i].name)[(f_Field[i].type == "select-one")? "text" : "value"] +
                                        '">\n';
                }
            }

        }
        window.location = pretty_url.substr(0, pretty_url.length-1);
    /*
    //   alert(NewDiv_HTML +"</form>");
    	NewDiv.innerHTML = NewDiv_HTML +"</form>";

    	document.body.appendChild( NewDiv );
    	document.VirtualS.submit();
    */
    }catch(e_pretty){ submitJNForm(); }
}

function OnFieldSubmit(){
    submited = true;
    inputField1.blur();
    inputField2.blur();

    if(pretty_strings){
        setTimeout( "doPretty()", 50 );
      return false;
    }
    else{
    //	inputForm.anfrage.value	= inputField1.value +" "+ inputField2.value;
    	inputForm.jd.value 		= "";
        inputForm.ort.value     = "";
        inputForm.plz.value     = "";
        inputForm.anzahl.value  = "";
      return true;
    }
}


function showDebugMsg( El, Msg, old ){
    if( debug && document.getElementById(El) != null ){
              document.getElementById(El).innerHTML = Msg + ((old)? (document.getElementById(El).innerHTML) : "");
    }
}


function init(){

    suggVisible         = false;
    lastHighlightedId   = -1;
    suggCount           = -1;
    callcounter         =  0;
    lastkeyevent        = -1;
    request_cache       = new Object();
    qstartime           = 0;
    submited            = false;
}