var array_days   = new Array('zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag');
var array_months = new Array('januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december');

var result_per_page  = 5;
var search_time_from = "";
var search_time_to   = "";

var status          = ''; 
var search_query    = '';
var slide_direction = '';   

var logo_small    = new Array();  
var logo_medium   = new Array();  
var client_offset = new Array(); 
 
var old_detail_box;
var old_list_box;
var new_detail_box;
var new_list_box;

var active_client_id;
var old_client_id;


function initCollapse(client_id)
{
    status           = 'init';  
    new_detail_box   = document.getElementById('detail_box_'+client_id);
    new_list_box     = document.getElementById('list_box_'+client_id);
    old_client_id    = active_client_id;
    active_client_id = client_id;
    controlAnimation();  
}

function controlAnimation()
{
    var run_again = true;
    if (status == 'init')
    {
        status = '';
        collapseList();    
    }
    /*else if (status == 'old_box_hidden')
    {
        status = '';
        changeSize(old_detail_box, 80, 'old_size_changed'); 
    }*/
    else if (status == 'old_size_changed')
    {
        status = '';
        old_list_box.style.filter    = "alpha(opacity=0)";
        old_list_box.style.opacity   = 0;
        old_detail_box.style.display = 'none';
        old_list_box.style.display   = 'block'; 
           
        showZoekBox(old_list_box, 0, 'old_list_toggled', 30);
    }
    else if (status == 'old_list_toggled') 
    {
        status = '';  
        hideZoekBox(new_list_box, 100, 'new_list_hidden', 30);      
    }
    else if (status == 'new_list_hidden') 
    {
        status = ''; 
        new_detail_box.style.filter  = "alpha(opacity=0)";
        new_detail_box.style.opacity = 0;  
        new_list_box.style.display   = 'none';
        new_detail_box.style.display = 'block'; 
        new_detail_box.style.height  = '80px';
        changeSize(new_detail_box, 550, 'new_size_changed');     
    //}
    //else if (status == 'new_size_changed')
    //{           
        //enlargeLogo(true);
        showZoekBox(new_detail_box, 0, 'new_list_toggled', 5);
        run_again = false;
    }
    if (run_again)
    {
        setTimeout('controlAnimation()', 250);   
    }
} 

function shrinkLogo(init)
{
    var logo_small  = document.getElementById('logo_small_'+old_client_id); 
    var logo_medium = document.getElementById('logo_medium_'+old_client_id); 
    if (logo_medium.height > 20)
    {
        logo_medium.height -= 1;
        setTimeout(function(){shrinkLogo(false);}, 50); 
    }
    else
    {
        logo_small.style.display  = 'block';
        logo_medium.style.display = 'none';
    }  
}

function enlargeLogo(init)
{
    var logo_small  = document.getElementById('logo_small_'+active_client_id); 
    var logo_medium = document.getElementById('logo_medium_'+active_client_id); 
    if (init)
    {
        logo_small.style.display  = 'none';
        logo_medium.style.display = 'block';
        logo_medium.height = 20;  
    }
    if (logo_medium.height < 30)
    {
        logo_medium.height += 1;
        setTimeout(function(){enlargeLogo(false);}, 50); 
    }  
}

function collapseList()
{
    var divs = document.getElementsByTagName('div');
    for (var i = 0; i < divs.length; i++)
    {
        if (divs[i].getAttribute("id") != null)
        {
            if (divs[i].getAttribute("id").substr(0, 10) == 'detail_box')
            {
                if (divs[i].style.display == 'block')
                {
                    old_detail_box      = divs[i];
                    var detail_box_id   = old_detail_box.getAttribute('id');
                    var list_box_id     = detail_box_id.replace('detail', 'list');
                    old_list_box        = document.getElementById(list_box_id);  
                    hideZoekBox(old_detail_box, 100, 'old_box_hidden', 20);
                    changeSize(old_detail_box, 80, 'old_size_changed'); //HIER TOEGEVOEGD OM ANIMATIE TE VERSNELLEN
                    //shrinkLogo(true);
                }
            } 
        }  
    }
}

function showZoekBox(box, opacity, new_status, step)
{
    if (box != null)
    {
        if (opacity <= 100)
        {
            box.style.filter = "alpha(opacity="+opacity+")";
            box.style.opacity = opacity/100; 
            opacity += step; 
            setTimeout(function(){showZoekBox(box,opacity,new_status,step)}, 50);
        }
        else
        {
            status = new_status;
        }
    }
}

function hideZoekBox(box, opacity, new_status, step)
{
    if (box != null)
    {
        if (opacity >= 0)
        {
            box.style.filter = "alpha(opacity="+opacity+")";
            box.style.opacity = opacity/100; 
            opacity -= step; 
            setTimeout(function(){hideZoekBox(box,opacity,new_status,step)}, 50); 
        }
        else
        {
            status = new_status;
        }   
    }
}

function changeSize(box, size, new_status)
{
    if (box != null)
    {
        if (size > box.offsetHeight)
        {
            var new_height   = box.offsetHeight+40;
            box.style.height = new_height+'px';
            if (new_height < size)
            {
                setTimeout(function(){changeSize(box,size,new_status)}, 50);         
            }
            else
            {
                box.style.height = size+'px';
                status = new_status;
            }
        }
        else if (size < box.offsetHeight)   
        {
            var new_height   = box.offsetHeight-40;
            box.style.height = new_height+'px';  
            if (new_height > size)
            {
                setTimeout(function(){changeSize(box,size,new_status)}, 50);         
            }
            else
            {
                box.style.height = size+'px';
                status = new_status;
            }        
        }
    }
}


function getNextResultSetForClient(search_query, client_id)
{
    slide_direction = 'forward';
    client_offset[client_id].offset += result_per_page;
    var client_object = client_offset[client_id];  
    loadSearchEntries(search_query, client_id, client_object.offset)   
}

function getPrevResultSetForClient(search_query, client_id)
{
    slide_direction = 'backward';
    client_offset[client_id].offset -= result_per_page;
    var client_object = client_offset[client_id];  
    loadSearchEntries(search_query, client_id, client_object.offset)   
}


function loadSearchEntries(query, client_id, offset)
{
    active_client_id = client_id;
    search_query     = query;
    loadXMLDoc('./../functions/ajax_zoeken_proxy.php?search_query='+query+'&client_id='+client_id+'&offset='+offset+'&limit='+result_per_page+'&time_from='+search_time_from+'&time_to='+search_time_to, handleSearchResult);
}


function slideHorizontal(scroll_table)
{
    if (slide_direction == 'forward')
    {   
        if (scroll_table.offsetLeft > -438)
        {
            scroll_table.style.marginLeft = scroll_table.offsetLeft-50+'px';
            setTimeout(function(){slideHorizontal(scroll_table);}, 50);         
        }
        else
        {
            scroll_table.style.marginLeft = '-467px'    
        }
    }
    else
    {
        if (scroll_table.offsetLeft < -20)
        {
            scroll_table.style.marginLeft = scroll_table.offsetLeft+50+'px';
            setTimeout(function(){slideHorizontal(scroll_table);}, 50);         
        }
        else
        {
            scroll_table.style.marginLeft = '0px'    
        }        
    }
}

function handleSearchResult()
{
    // if xmlhttp shows "loaded"
    if (xmlhttp.readyState==4)
    {
        // if "OK"
        if (xmlhttp.status==200)
        {           
            var detail_div   = document.getElementById('detail_box_'+active_client_id);
            var scroll_table = document.getElementById('scroll_table_'+active_client_id); 
            var nav_bar      = document.getElementById('nav_bar_'+active_client_id); 
            
            if (slide_direction == 'forward')
            {
                var old_div = document.getElementById('left_scroll_box_'+active_client_id);
                var active_div    = document.getElementById('right_scroll_box_'+active_client_id); 
                if (scroll_table.style.marginLeft != '0px')
                {
                    old_div.innerHTML = active_div.innerHTML;    
                }
                scroll_table.style.marginLeft = '0px';     
            } 
            else
            {
                var active_div     = document.getElementById('left_scroll_box_'+active_client_id);
                var old_div  = document.getElementById('right_scroll_box_'+active_client_id); 
                if (scroll_table.style.marginLeft != '-467px')
                {
                    old_div.innerHTML = active_div.innerHTML;    
                }
                scroll_table.style.marginLeft = '-467px';     
            }
            
            if (active_div.hasChildNodes()) 
            {
                while (active_div.childNodes.length >= 1 ) 
                {
                    active_div.removeChild(active_div.firstChild);
                }
            }
            
            var xmlDoc  = xmlhttp.responseXML.documentElement;
            var results = xmlDoc.getElementsByTagName("result");
            for (var i = 0; i < results.length; i++)
            {         
                var dom_id              = results[i].getElementsByTagName('dom_id')[0].firstChild.nodeValue;
                var title               = results[i].getElementsByTagName('entry_title')[0].firstChild.nodeValue;
                var text                = results[i].getElementsByTagName('entry_text')[0].firstChild.nodeValue;
                var date                = results[i].getElementsByTagName('entry_create_date')[0].firstChild.nodeValue;
                var thumb               = results[i].getElementsByTagName('entry_thumb_uri')[0].firstChild.nodeValue;
                var client_detail_uri   = results[i].getElementsByTagName('client_detail_uri')[0].firstChild.nodeValue;
                var client_entry_id     = results[i].getElementsByTagName('client_entry_id')[0].firstChild.nodeValue; 
                
                var table       = document.createElement('table'); 
                var tbody       = document.createElement('tbody');     
                var row         = document.createElement('tr');        
                var td_left     = document.createElement('td');  
                var td_right    = document.createElement('td');
                var div_left    = document.createElement('div');
                var div_title   = document.createElement('div'); 
                var div_date    = document.createElement('div'); 
                var div_text    = document.createElement('div'); 
                var a_thumb     = document.createElement('a');
                var a_title     = document.createElement('a');
                                 
                table.className     = 'global_search_table';  
                div_left.className  = 'thumb_cell';    
                div_title.className = 'result_title_box';  
                div_date.className  = 'result_date';  
                div_text.className  = 'result_text';  
                a_title.className   = 'result_title';
                
                var time_parts  = date.split(" ");
                var month_parts = time_parts[0].split("-"); 
                var d = new Date();
                d.setFullYear(month_parts[0],month_parts[1]-1,month_parts[2]);
                date = array_days[d.getDay()]+" "+d.getDate()+" "+array_months[d.getMonth()]+" "+d.getFullYear();
                  
                a_title.appendChild(document.createTextNode(title));
                div_date.appendChild(document.createTextNode(date)); 
                div_text.innerHTML = createResultText(text, search_query);
                
                var target = '_blank';
                if (dom_id == d_id)
                {
                    target = '_self';    
                }
                a_thumb.setAttribute('href', client_detail_uri + client_entry_id); 
                a_thumb.setAttribute('target', target); 
                a_title.setAttribute('href', client_detail_uri + client_entry_id); 
                a_title.setAttribute('target', target); 
                
                if (thumb != '')
                {
                    var img = new Image();  
                    img.src = thumb;             
                    a_thumb.appendChild(img); 
                    div_left.appendChild(a_thumb); 
                    td_left.appendChild(div_left);
                }
                                  
                div_title.appendChild(a_title);        
                td_right.appendChild(div_title);        
                td_right.appendChild(div_date);        
                td_right.appendChild(div_text);        
                row.appendChild(td_left);       
                row.appendChild(td_right);  
                table.appendChild(tbody);     
                tbody.appendChild(row);  
                active_div.appendChild(table);     
            }
            
            if (nav_bar.hasChildNodes()) 
            {
                while (nav_bar.childNodes.length >= 1 ) 
                {
                    nav_bar.removeChild(nav_bar.firstChild);
                }
            }

            var nav_table  = document.createElement('table'); 
            var nav_tbody  = document.createElement('tbody'); 
            var nav_row    = document.createElement('tr'); 
            
            var btn_prev_td = document.createElement('td'); 
            if (client_offset[active_client_id].offset >= result_per_page)
            {
                var btn_prev = document.createElement('a');
                btn_prev.setAttribute('href', 'javascript:void(0);');  
                btn_prev.setAttribute('id', 'search_nav_prev_'+active_client_id);  
                btn_prev.className = ' btn_onze_media';
                btn_prev.onclick = function(){getPrevResultSetForClient(search_query, active_client_id); return false;};     
            }
            else
            {
                var btn_prev = document.createElement('div'); 
                btn_prev.className = ' btn_disabled';            
            }
            btn_prev.style.height = '18px'; 
            btn_prev.style.width = '100px'; 
            btn_prev.appendChild(document.createTextNode('vorige')); 
            btn_prev_td.appendChild(btn_prev); 
            nav_row.appendChild(btn_prev_td);
             
            var btn_next_td = document.createElement('td'); 
            if (client_offset[active_client_id].offset < client_offset[active_client_id].total-result_per_page)
            { 
                var btn_next = document.createElement('a');
                btn_next.setAttribute('href', 'javascript:void(0);');  
                btn_next.setAttribute('id', 'search_nav_next_'+active_client_id);
                btn_next.className = ' btn_onze_media';    
                btn_next.onclick = function(){getNextResultSetForClient(search_query, active_client_id); return false;};     
            }
            else
            {
                var btn_next = document.createElement('div'); 
                btn_next.className = ' btn_disabled';          
            }
            btn_next.style.height = '18px'; 
            btn_next.style.width = '100px'; 
            btn_next.appendChild(document.createTextNode('volgende'));
            btn_next_td.appendChild(btn_next); 
            nav_row.appendChild(btn_next_td); 
            
            nav_table.setAttribute('align', 'center');
            nav_table.appendChild(nav_tbody);
            nav_tbody.appendChild(nav_row);
            nav_bar.appendChild(nav_table);
            detail_div.appendChild(nav_bar);   
            slideHorizontal(scroll_table);
        }
        else
        {
            alert("Problem retrieving data:" + xmlhttp.statusText)
        }
    }
}

function createResultText(text, query)
{
    var haystack = (text+'').toLowerCase();
    var needle   = (query+'').toLowerCase();
    var position = 0;  
    var ret_text = '';
    var substr_start = 0;
    
    if ((position = haystack.indexOf(needle, haystack)) !== -1) 
    {
        var replacement = text.substr(position, needle.length);
        var substr_offset = 75;
        if (position > substr_offset)
        {
            substr_start = position - substr_offset;   
        }
        ret_text = text.substr(substr_start, substr_offset*2) + '...';
        if (substr_start != 0)
        {
            ret_text = '...' + ret_text;    
        }
        ret_text = ret_text.replace(new RegExp(query,  "gi" ), '<span class="colorText" style="font-weight: bold;">'+replacement+'</span>');
    }
    else
    {
        ret_text = text;
        if (text.length > 150)
        {
            ret_text = text.substr(0, 150) + '...'   
        } 
    }
    return ret_text;     
}

function sendGlobalSearchForm()
{
    var valid_form = true;
    var label_q = document.getElementById('label_q');
    var label_f = document.getElementById('label_f');
    var label_t = document.getElementById('label_t');
    var label_c = document.getElementById('label_c');
    label_q.style.color = '#000000';
    label_f.style.color = '#000000';   
    label_t.style.color = '#000000';   
    label_c.style.color = '#000000';   
    with (document.global_search_form)
    {
        if (q.value == '')
        {
            label_q.style.color = 'red';  
            q.focus();
            alert('U dient een zoekopdracht in te voeren');  
            valid_form = false;      
        }
        else if (q.value.length < 2)
        {
            label_q.style.color = 'red';  
            q.focus();
            alert('Het zoekwoord dient langer te zijn dan één teken');  
            valid_form = false;      
        } 
        else if (dateIntVal(f.value) > dateIntVal(t.value))
        {
            label_f.style.color = 'red';  
            label_t.style.color = 'red';  
            alert('De startdatum is groter dan de einddatum');
            valid_form = false;  
        }
        else
        {
            valid_form = false;
            var boxes = getElementsByTagName('input');
            for (i = 0; i < boxes.length; i++)
            {
                if (boxes[i].name.substring(0,2) == "c[" && boxes[i].type == 'checkbox' && boxes[i].checked)
                {
                    valid_form = true; 
                }
            }
            if (valid_form == false)
            {
                label_c.style.color = 'red';
                alert('U dient ten minste één locatie op te geven\r\nwaarbinnen moet worden gezocht.'); 
            } 
        }
        
        if (q.value.length < 4)
        {
            valid_form = false; 
            if (confirm('Het zoeken op korte woorden kan veel tijd kosten en zeer veel resultaten opleveren!\r\nWeet u zeker dat u door wilt gaan?'))
            {
                valid_form = true; 
            }   
        }
           
        if (valid_form == true)
        {
            submit();   
        }
    }   
}

function globalSearchInverse()
{
    with (document.global_search_form)
    {
        var boxes = getElementsByTagName('input');
        for (i = 0; i < boxes.length; i++)
        {
            if (boxes[i].name.substring(0,2) == "c[" && boxes[i].type == 'checkbox')
            {
                if (boxes[i].checked)
                {
                    boxes[i].checked = false;    
                }
                else
                {
                    boxes[i].checked = true; 
                }
            }
        }
    }        
}
