﻿/******************************************
 * Autocompleter created by Exi (http://www.technobase.fm/member/1)
 * please find some information about on
 * http://blog.rarecore.eu/autocompleter-using-xajax.html 
 ******************************************/

var rc_autocompleter_date = 0;
var rc_autocompleter_refresh = 0;
var rc_autocompleter_delay_stamp = 0;
var rc_autocompleter_dev_delay_stamp = 0;
var rc_autocompleter_lok_delay_stamp = 0;
var rc_active;

function rc_autocompleter_click(t, r, d) {        
    document.getElementById(t).value = r;
    rc_autocompleter_blur2(d);
}

function rc_autocompleter_focus(d) {
    document.getElementById(d).style.visibility = 'visible';
}

function rc_autocompleter_blur(d) {
    window.setTimeout('rc_autocompleter_blur2(\'' + d + '\')', 300);
}

function rc_autocompleter_dev_blur(d) {
    window.setTimeout('rc_autocompleter_dev_blur2(\'' + d + '\')', 300);
}

function rc_autocompleter_lok_blur(d) {
    window.setTimeout('rc_autocompleter_lok_blur2(\'' + d + '\')', 300);
}
        
function rc_autocompleter_blur2(d) {
    document.getElementById(d).style.visibility = 'hidden';
}

function rc_autocompleter_dev_blur2(d) {
    document.getElementById(d).style.visibility = 'hidden';
}

function rc_autocompleter_lok_blur2(d) {
    document.getElementById(d).style.visibility = 'hidden';
}

function rc_autocompleter_call() {
    var now = new Date().getTime() / 1000;   
    var s = parseInt(now);   
      
    rc_autocompleter_date = now;
}

function rc_autocompleter_return(d, t, v, i) {
    if(t >= rc_autocompleter_refresh) {
        rc_autocompleter_refresh = t;
        document.getElementById(d).style.visibility = v;
        document.getElementById(d).innerHTML = i;
    }
}

function rc_autocompleter_move(id1, id2, keyc) {
    var child = document.getElementById(id2).childNodes[0].childNodes;    
    var idx = -1;

    for(var i=0; i < child.length; i++) {
        if(child[i].className == 'li_hover') {
            idx = i;
        }	
        
        child[i].className = '';
    }
    
    // return
    if(keyc == 13) {
        var text = '';
        
        if(child[idx].innerText) {
            text = child[idx].innerText;
        } else {
            text = child[idx].textContent;        
        }
    
        text = text.split(".", 1);
        rc_autocompleter_click(id1, text, id2);
    
    } else {
        // up
        if(keyc == 40) {
            if(idx == (child.length - 1)) {
                idx = 0;
            } else {
                idx++;
            }
        
        // down
        } else if(keyc == 38) {
            idx--;
            
            if(idx < 0) {
                idx = (child.length - 1);
            }
        }
        
        child[idx].className = 'li_hover';
    }
}

function rc_microtime () {
    return new Date().getTime();
}

function rc_autocompleter(e, id1, id2) {
    if(!e) e = window.event; 
    var keyc = e.keyCode || e.which;     
    
    //if(keyc == 38 || keyc == 40 || keyc == 13) {
    if(keyc == 38 || keyc == 40) {
        rc_autocompleter_move(id1, id2, keyc);
        
    } else {
        rc_autocompleter_delay_stamp = rc_microtime();
        rc_active = window.setTimeout('rc_autocompleter_delay(\'' + rc_autocompleter_delay_stamp + '\')', 100);
    }
}

function rc_autocompleter_dev(e, id1, id2) {
    if(!e) e = window.event; 
    var keyc = e.keyCode || e.which;     
    
    //if(keyc == 38 || keyc == 40 || keyc == 13) {
    if(keyc == 38 || keyc == 40) {
        rc_autocompleter_move(id1, id2, keyc);
        
    } else {
        rc_autocompleter_dev_delay_stamp = rc_microtime();
        rc_active = window.setTimeout('rc_autocompleter_dev_delay(\'' + rc_autocompleter_dev_delay_stamp + '\')', 100);
    }
}

function rc_autocompleter_lok(e, id1, id2) {
    if(!e) e = window.event; 
    var keyc = e.keyCode || e.which;     
    
    //if(keyc == 38 || keyc == 40 || keyc == 13) {
    if(keyc == 38 || keyc == 40) {
        rc_autocompleter_move(id1, id2, keyc);
        
    } else {
        rc_autocompleter_lok_delay_stamp = rc_microtime();
        rc_active = window.setTimeout('rc_autocompleter_lok_delay(\'' + rc_autocompleter_lok_delay_stamp + '\')', 100);
    }
}
