// auto suggest for search string
var search_complite = {};
search_complite.rtimer = null;
search_complite.engine = 'google';
search_complite.setEngine = function(engine) {
    search_complite.engine = engine;
    search_complite.changeForm();
}
search_complite.JSONP = function(url) {
    var scrpt=document.createElement('SCRIPT');
    //if(search_complite.engine == 'yandex')
    //    scrpt.charset = 'windows-1251'; // set encode for yandex, because they use windows-1251, other use utf-8
	scrpt.src=url;
	document.getElementById('for-json-p').appendChild(scrpt);
}
search_complite.str_results = function() {
    if(typeof searchlang != 'undefined' && searchlang == 'uk')
        return 'результатів';
    return 'результатов';
}
search_complite.changeForm = function() {
    if(search_complite.selectedText) {
        document.f.q.value = search_complite.selectedText;
    }
    if(search_complite.engine == 'google') {
        document.f.method = 'get';
        document.f.action = 'http://search.ukr.net/google/search.php';
    }
    else if(search_complite.engine == 'yandex') {
        document.f.search_query.value = document.f.q.value;
        document.f.method = 'get';
            document.f.action = 'http://search.ukr.net/yandex/search.php';
    } else {
        document.f.method = 'post';
        document.f.action = 'http://www.ukr.net/search.php';
    }
}
search_complite.complitestring = function(q) {
    search_complite.hideresults();
    document.f.q.value = q;
    search_complite.changeForm();
    document.f.submit();
}
search_complite.escapeQuote = function(str) {
    return (str+'').replace(/([\\'])/g, "\\$1"); // escape quots
}
search_complite.autocomplite = function(el, evt) {
    var keyCode =
        document.layers ? evt.which :
        document.all ? event.keyCode :
        document.getElementById ? evt.keyCode : 0;
    if(keyCode == 12 || keyCode == 27 || keyCode == 40 || keyCode == 38) { // don't need request new data
        return true;
    }
    search_complite.selected = null;
    search_complite.rowNum = 0;
    clearTimeout(search_complite.rtimer);
    setTimeout(function() {
        var q = el.value;
        if(q == '') {
            setTimeout(function(){search_complite.hideresults();},500);
        } else {
            var queryDelay = 100;
            if(typeof searchlang == 'undefined') searchlang = 'ru';
            var qurl = 'http://clients1.google.com/complete/search?hl='+searchlang+'&q='+q;
            /*
            if(search_complite.engine == 'google') {
                qurl = 'http://clients1.google.com/complete/search?hl='+searchlang+'&q='+q;
            } else if(search_complite.engine == 'yandex') {
                qurl = 'http://suggest.yandex.ru/suggest-ya.cgi?ct=text/html&part='+q+'&v=2';
            } else if(search_complite.engine == 'rambler') {
                qurl = 'http://nova.rambler.ru/suggest?callback=suggest.apply&query='+q;
            } else if(search_complite.engine == 'yahoo') {
                qurl = 'http://sugg.search.yahoo.net/sg/?output=fxjsonp&nresults=10&command='+q;
            }
            */
            search_complite.rtimer = setTimeout(function(){search_complite.JSONP(qurl);},queryDelay);
        }
    }, 50);
}
search_complite.unhideresults = function() {
    document.getElementById('autocomplite').style.display = '';
}
search_complite.hideresults = function() {
    document.getElementById('autocomplite').style.display = 'none';
    search_complite.userText = document.f.q.value;
    search_complite.startSuggest = false;
}
search_complite.reshtml = '';
search_complite.rowNum = 0;
search_complite.userText = '';
search_complite.selectedText = '';
search_complite.buildRow = function(data) {
    var name = data[0] || '';
    if(name == '') return;
    //var num = data[1] || '';
    var num = '';
    search_complite.rowNum++;
    if(search_complite.selected && search_complite.rowNum == search_complite.selected) {
        var className = 'res-selected';
        search_complite.selectedText = name;
    } else {
        var className = '';
    }
    var nameClass = 'long';
    if(num != '') nameClass = 'short';
    search_complite.reshtml +='<tr class="'+className+'" onclick="search_complite.complitestring(\''+search_complite.escapeQuote(name)+'\');"><td class="name"><span class="'+nameClass+'">'+name+'</span></td><td class="res">'+num+'</td></tr>';
}
search_complite.buildResults = function() {
    search_complite.selectedText = '';
    search_complite.reshtml = '';
    search_complite.rowNum = 0;
    if(search_complite.data.length == 0)
        return
    for (var i=0,len = search_complite.data.length;i<len;i++) {
        search_complite.buildRow(search_complite.data[i]);
    }
    document.getElementById('autocomplite').innerHTML = '<table cellpadding="0" cellspacing="0" border="0">' + search_complite.reshtml + '</table>';
    search_complite.unhideresults();
}
search_complite.startSuggest = false;
search_complite.selected = null;
search_complite.checkArrows = function(field, evt) {
    var keyCode =
        document.layers ? evt.which :
        document.all ? event.keyCode :
        document.getElementById ? evt.keyCode : 0;        
    switch(keyCode) {
        case 12: // key "Enter"
            search_complite.userText = document.f.q.value;
            if(search_complite.selectedText)
                document.f.q.value = search_complite.selectedText;
            break;
        case 27: // key "Esc"
            document.f.q.value = search_complite.userText;
            search_complite.hideresults();
            break;
        case 40: // key "Arrow Down"
            if(!search_complite.startSuggest)
                search_complite.userText = document.f.q.value;
            search_complite.startSuggest = true;
            if(search_complite.rowNum == 0 && search_complite.selected + 1 <= 10 ||
               search_complite.rowNum > 0 && search_complite.selected + 1 <= 10 && search_complite.selected + 1 <= search_complite.rowNum) {
                search_complite.selected = search_complite.selected + 1;
            } else {
                search_complite.selected = 0;
                if(search_complite.userText) {
                    document.f.q.value = search_complite.userText;
                }
                search_complite.buildResults();
                return;
            }
            search_complite.buildResults();
            document.f.q.value = search_complite.selectedText;
            break;
        case 38: // key "Arrow Up"
            if(search_complite.selected == 0 && search_complite.rowNum) {
                search_complite.selected = search_complite.rowNum;
            } else if(search_complite.selected - 1 > 0) {
                search_complite.selected = search_complite.selected - 1;
            } else {
                search_complite.selected = 0;
                search_complite.buildResults();
                if(search_complite.userText) {
                    document.f.q.value = search_complite.userText;
                }
                return;
            }
            search_complite.buildResults();
            document.f.q.value = search_complite.selectedText;
            break;
    }
    return true;
}
search_complite.data = []; // array of suggested words and counts

// yahoo
function fxsearch(response) {
    search_complite.data = [];
    if (typeof response != 'undefined' && response && response[1]) {
        for (var i=0,ilength=response[1].length;i<ilength;i++) {
            if(typeof response[1][i] == 'string')
                search_complite.data.push([response[1][i],null]);
        }
    }
    if(search_complite.data.length==0)
        search_complite.hideresults();
    else
        search_complite.buildResults();
}


// yandex & rambler
var suggest = {};
suggest.apply = function(response, data) {
    search_complite.data = [];
    if(typeof data != 'undefined') {
        for (var i=0,ilength=data.length;i<ilength;i++) {
            if(typeof data[i] == 'string') {
                search_complite.data.push([data[i],null])
            } else if(typeof data[i] != 'undefined') {
                if(data[i][0] && data[i][1])
                    search_complite.data.push([data[i][0],data[i][1]+' '+search_complite.str_results()]);
                else if(data[i][0])
                    search_complite.data.push([data[i][0],null]);
            }
        }
    }
    if(search_complite.data.length==0)
        search_complite.hideresults();
    else
        search_complite.buildResults();
}

// google
var google = {};
google.ac = {};
google.ac.h = function(response) {
    search_complite.data = [];
    for (var i=0,ilength=response.length;i<ilength;i++) {
        for (var j=0,jlength=response[i].length;j<jlength;j++) {
            if(typeof response[i][j] == 'object')
                search_complite.data.push([response[i][j][0],response[i][j][1]]);
        }
    }
    if(search_complite.data.length==0)
        search_complite.hideresults();
    else
        search_complite.buildResults();
}

/* cookies */
function zakl_GetCookie(c_name) {
    if (document.cookie.length>0) {
        c_start=document.cookie.indexOf(c_name + "=");
        if (c_start!=-1) {
            c_start=c_start + c_name.length+1; 
            c_end=document.cookie.indexOf(";",c_start);
            if (c_end==-1) c_end=document.cookie.length;
            return unescape(document.cookie.substring(c_start,c_end));
        } 
    }
    return "";
}
function zakl_SetCookie(c_name,value,expiredays) {
    var exdate=new Date();
    exdate.setDate(exdate.getDate()+expiredays);
    document.cookie=c_name+ "=" +escape(value)+
    ((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
}
function zakl_DeleteCookie (name) {
   var expt = new Date();
   expt.setTime (expt.getTime() - 1000000000);  // This cookie is history (changed -1 to make it previous time)
   var cval = zakl_GetCookie (name);
   document.cookie = name + "=" + cval + "; expires=" + expt.toGMTString() + ";";
}
function zakl_GetCookieVal (offset) {
   var endstr = document.cookie.indexOf (";", offset);
   if (endstr == -1)
      endstr = document.cookie.length;
   return unescape(document.cookie.substring(offset, endstr));
}