    var now_sel=-1;
    
    function w_code(e){
        if(e && e.which){ //if which property of event object is supported (NN4)
            e = e;
            code = e.which; //character code is contained in NN4's which property
        }
        else{
            e = event;
            code = e.keyCode; //character code is contained in IE's keyCode property
        }
        
        
    }
    
    function suggest_m(text, _id, _type, id){
        
        do_suggest(_type, $(_id), 99); // bugsplorer bug
        $(_id).value=text;
        
        $(_id+'_id').value = id;
        
        $('suggest_div').hide();
        now_sel = -1;
    }

    function suggest_page(type, obj, e){
        
        try{
            if(e && e.which){ //if which property of event object is supported (NN4)
                e = e;
                code = e.which; //character code is contained in NN4's which property
            }
            else{
                e = event;
                code = e.keyCode; //character code is contained in IE's keyCode property
            }
            
            if(code == 40){
                $('suggest_div').show();
                now_sel = now_sel+1;
                suggest_active();
            }
            if(code == 38){
                now_sel = now_sel-1;
                suggest_active();    
            }
            
            if(code == 13){
                suggest_links = document.getElementsByName('suggest_a');
                for(i=0; i<suggest_links.length; i++){
                    suggest_links[i].removeClassName('active');
                }
                $(obj.id).value = suggest_links[now_sel].innerHTML;
                do_suggest(type, $(obj.id), 99);
                $(obj.id+'_id').value = suggest_links[now_sel].id;
                $('suggest_div').hide();
                now_sel = -1;
            }
            
            if(code != 37 && code != 38 && code != 39 && code != 40 && code != 13 && code != 9 && code != 27 && code != 20 && code != 20 && code != 16 && code != 17 && code != 91 && code != 18 && code != 92 && code != 93 && code != 36 && code != 35 && code != 34 && code != 33 && code != 0){
                now_sel=0;                                                                                
                try {
                    window.clearTimeout(z);
                }
                catch(e){
                    //alert(e);
                }
                z = setTimeout(function(){do_suggest(type, $(obj.id))}, 250);
            }
        }
        catch(e){
            //alert(e);    
        }
    }
    
    function suggest_active(){
        var length, suggest_links;
        suggest_links = document.getElementsByName('suggest_a');
        length = suggest_links.length;
        length = length-1;

        if(now_sel<0) {
            $('suggest_div').hide();
            now_sel = -1;
        }        
        else $('suggest_div').show();
        if(now_sel>length) now_sel = length;
        
        for(i=0; i<suggest_links.length; i++){
            //alert($(suggest_links[i].id));
            
            $(suggest_links[i].id).removeClassName('active');
            if(i==now_sel) $(suggest_links[now_sel].id).addClassName('active');
        }
    }
    
    function setnow_sel(obj){
        suggest_links = document.getElementsByName('suggest_a');
                
        for(i=0; i<suggest_links.length; i++){
            if(suggest_links[i] == $(obj.id)) now_sel = i;
            
        }    
    }
    
    function do_suggest(type, obj, del){
        $(obj.id+'_id').value = "";
        suggest = obj.value;
        
        divs = '';
        if($(obj.id).value.length > 0){
            url = encodeURI(base_href+'xml.php?get=custom1&type='+type+'&suggest='+suggest);
            
            //alert(url);
            $j.ajax({
                type: "GET",
                url: url,
                dataType: "xml",
                success: function(xml) {
                    $j(xml).find('object').each(function(){
                        var id = $j(this).attr('id');
                        var text = $j(this).text();
                        
                        divs += '<div class="suggest_div"><a id="'+id+'" href="#" name="suggest_a" onmouseover="setnow_sel(this); suggest_active();" onclick="suggest_m(\''+text+'\', \''+obj.id+'\', \''+type+'\', \''+id+'\'); return false;" >'+text+'</a></div>';
                        //alert(text);

                    }); //close each(
                    
                    offset = $(obj.id).cumulativeOffset();
                    dims = $(obj.id).getDimensions();
                    offset[1] = offset[1] + dims.height;

                    $('suggest_div').innerHTML = divs;
                    //$('suggest_div').setStyle({'left':offset[0]+'px','top':offset[1]+'px', 'width':dims.width+'px'});
                    $('suggest_div').setStyle({'left':offset[0]+'px','top':offset[1]+'px'});
                    $('suggest_div').show();
                    suggest_active();
                }
            });
        }
        if(obj.value.length == 0){
            $('suggest_div').hide();
            $(obj.id).value = "";
            $(obj.id+'_id').value = "";
        } 
    }
    
    function URLEncode(str) {
        var result = "";
        
        for (i = 0; i < str.length; i++) {
            if (str.charAt(i) == " ") result += "+";
            else result += str.charAt(i);
        }
        
        return escape(result);
    }