/*
* LiveMediaArchive 1.0
*
* http://media.yask.org
*
* released under the terms of the GPL
* see http://www.fsf.org/licensing/licenses/gpl.txt for details
*
* $Id: search.js.php,v 1.5 2006/04/17 20:55:49 rhayader Exp $
*
*/
var searchFields = new Array();
var searchCache = new Array();

// defaults
date = new Date();
searchFields['q'] = '';
searchFields['where_title'] = true;
searchFields['where_text'] = true;
searchFields['where_keywords'] = true;
searchFields['doctype_text'] = true;
searchFields['doctype_images'] = true;
searchFields['d1'] = '08-09-2010';
searchFields['d2'] = '08-09-2010';
searchFields['use_d1'] = false;
searchFields['use_d1'] = false;
searchFields['sort'] = 'date';

function doSearch()
{
    var f = document.forms.searchform;
    searchFields['q'] = f.q.value;
    cp.call('backend.php', 'load_search_results', loadSearchResults, f.q.value, 0);

    document.getElementById('restable').innerHTML = '<div id="extsearch"></div>загрузка...';

    var sr = document.getElementById('searchres');
    var rt = document.getElementById('restable');
    var st = document.getElementById('searchtitle');
    sr.style.display = 'block';
    sr.style.top = (absoluteY(f) + f.offsetHeight + 5) + 'px';
    rt.style.height = (parseInt(sr.offsetHeight) - parseInt(st.offsetHeight) * 2) + 'px';
    sr.style.height = (document.body.clientHeight - 80) + 'px';

    return false;
}

function restoreExtFields()
{
    var f = document.forms.extsearchform;
    f.q.value = searchFields['q'];
    f.d1.value = searchFields['d1'];
    f.d2.value = searchFields['d2'];
    f.use_d1.checked = searchFields['use_d1'];
    f.d1.disabled = !f.use_d1.checked;
    f.d1b.disabled = !f.use_d1.checked;
    f.use_d2.checked = searchFields['use_d2'];
    f.d2.disabled = !f.use_d2.checked;
    f.d2b.disabled = !f.use_d2.checked;
    f.where_title.checked = searchFields['where_title'];
    f.where_text.checked = searchFields['where_text'];
    f.where_keywords.checked = searchFields['where_keywords'];
    f.doctype_text.checked = searchFields['doctype_text'];
    f.doctype_images.checked = searchFields['doctype_images'];
    f.sort.value = searchFields['sort'];

    Calendar.setup(
    {
      flat         : "calendar-d1",
      flatCallback : d1DateChanged
    }
    );
    Calendar.setup(
    {
      flat         : "calendar-d2",
      flatCallback : d2DateChanged
    }
    );
}

function doExtSearch(search)
{
    if(search)
    {
        var f = document.forms.extsearchform;
        var query = 'q=' + (searchFields['q'] = f.q.value);
        query += '&range=' + (searchFields['range'] = document.forms.searchform.range.value);
        if(searchFields['where_title'] = f.where_title.checked) query += '&where_title=1';
        if(searchFields['where_text'] = f.where_text.checked) query += '&where_text=1';
        if(searchFields['where_keywords'] = f.where_keywords.checked) query += '&where_keywords=1';
        if(searchFields['doctype_text'] = f.doctype_text.checked) query += '&doctype_text=1';
        if(searchFields['doctype_images'] = f.doctype_images.checked) query += '&doctype_images=1';
        if(searchFields['use_d1'] = f.use_d1.checked) query += '&d1='+ (searchFields['d1'] = f.d1.value);
        if(searchFields['use_d2'] = f.use_d2.checked) query += '&d2='+ (searchFields['d2'] = f.d2.value);
        if(searchFields['sort'] != 'date') query += '&sort='+ (searchFields['sort'] = f.sort.value);
        cp.call('backend.php', 'load_search_results', loadSearchResults, query, 0);
        return false;
    }

    document.getElementById('restable').innerHTML = '<div id="extsearch"></div>';

    var esf = document.getElementById('extsearch');
    var sr = document.getElementById('searchres');
    var rt = document.getElementById('restable');
    var st = document.getElementById('searchtitle');
    if(!controlCache['extsearchform'])
    {
        esf.innerHTML = 'загрузка...';
        ct.call('backend.php', 'load_extended_searchform', extendedSearchFormLoaded);
    }
    else
    {
        esf.innerHTML = controlCache['extsearchform'];
        restoreExtFields();
    }
    sr.style.display = 'block';
}

function extendedSearchFormLoaded(result)
{
    controlCache['extsearchform'] = result;
    document.getElementById('extsearch').innerHTML = result;
    var f = document.forms.extsearchform;
    if(f.q.value == '') f.q.value = document.forms.searchform.q.value;
    restoreExtFields();
}
function d1DateChanged(calendar)
{
    var date = calendar.date;
    document.forms.extsearchform.d1.value = date.print("%d-%m-%Y");
    setCookie('d1', date.print("%d-%m-%Y"));
}
function d2DateChanged(calendar)
{
    var date = calendar.date;
    document.forms.extsearchform.d2.value = date.print("%d-%m-%Y");
    setCookie('d2', date.print("%d-%m-%Y"));
}

function loadSearchResults(result)
{
    var f = document.forms.searchform;
    var restable = document.getElementById('restable');
    var queryTitle = result.ajaxResponse[0].queryTitle[0].data;
    var query = result.ajaxResponse[0].query[0].data;
    if(!query) query = '';
    var found = result.ajaxResponse[0].found[0].data;
    var hash = result.ajaxResponse[0].hash[0].data;
    f.hash.value = hash;
    var page = result.ajaxResponse[0].page[0].data;
    var count = result.ajaxResponse[0].count[0].data;
    var sql = result.ajaxResponse[0].sql[0].data;
    var time = result.ajaxResponse[0].time[0].data;
    if(sql == '0') sql = '';
    var c = '';
    if(query != '') c += '<p>ищем: <b>' + queryTitle + '</b> | ' +
        '<a href="javascript://" onclick="addFeed(-1,\'search://' + query + '\');hide(\'searchres\');">' +
        'добавить результаты поиска в ленту</a> | ';
    c += '<a href="javascript:doExtSearch()">расширить поиск</a></p>';
    c += '<p>найдено: <b>' + found + '</b>, время: <b>' + time + '</b>';
    if(found > count)
    {
        c += '<p class="pages">';
        for(i=0; i<Math.ceil(found/20); i++)
        {
            if(i) c += ' | ';
            if(i!=page) c+= '<a href="javascript:spage(' + i + ')">';
            c += (i+1);
            if(i!=page) c+= '</a>';
        }
        c += '</p>';
    }
    c += '</p>';

    if(count) c += '<ul>';
    for(i=0; i<count; i++)
    {
        var item = result.ajaxResponse[0].item[i];
        var id = item.id[0].data;
        var title = item.title[0].data;
        var date = item.date[0].data;
        c += '<li><span>' + date +
            '</span> <a href="javascript:sd(' + id + ', \'sdb\')">' +
            title + '</a><div id="sdb' + id + '" class="db"></div></li>';
    }
    if(count) c += '</ul>';

    restable.innerHTML = c;
    searchCache[hash+page] = c;
}

function spage(page)
{
    var f = document.forms.searchform;
    var hash = f.hash.value;
    var rt = document.getElementById('restable')
    if(searchCache[hash+page])
    {
        rt.innerHTML = searchCache[hash+page];
    }
    else
    {
        rt.innerHTML = 'загрузка...';
        cp.call('backend.php', 'load_search_results', loadSearchResults, f.q.value, page);
    }
}

document.forms.searchform.searchsubmit.disabled = false;