function popup_help(url)
    {
    if (!window.focus)
        return true;
    if (typeof(url) != 'string')
       url = url.href;
    w = window.open(url, 'help', 'width=400,height=400,dependent=yes,status=no,location=no,scrollbars=yes');
    w.focus();
    return false;
   }

// Show or hide a window
function show_hide(id, show)
    {
    if (document.getElementById)
        {
        obj = document.getElementById(id);
        if (typeof(show) == 'undefined')
            show = obj.style.display == "none";
        
        if (show)
            obj.style.display = "";
        else
            obj.style.display = "none";
        }
    }

function clear_prompt(field, prompt)
    {
    if (field.value == prompt)
        {
        field.value = '';
        field.style.color = 'black';
        }
    }

function set_prompt(field, prompt)
    {
    if (field.value == '')
        {
        field.value = prompt;
        field.style.color = 'gray';
        }
    }

// Mark or unmark a single record using AJAX
function update_marked_record(obj, record_url, post_url)
    {
    // prepare post data
    var data = "url=" + escape(encodeURI(record_url));
    
    // mark record
    if (obj.checked == true)
        data += "&mark_record=1";
    else
        data += "&unmark_record=1";
    // add flag
    data += "&ajax=1";

    var xmlHttp = getRequester();
    // wrap this in a try-catch to help IE6
    try { xmlHttp.record_url = record_url; }
    catch (e) {}
    
    // callback code
    xmlHttp.onreadystatechange=function()
        {
        // state 4: request complete
        if(xmlHttp.readyState==4)
            {
            if (xmlHttp.status != 200)
                return;
            
            // special case, empty response, some sort of unknown error
            if (xmlHttp.responseText == '')
                {
                document.getElementById("status_message").className='info-message';
                document.getElementById("status_message").innerHTML = '';
                return;
                }
            
            // set message and message class
            // check for marking error
            var error=false;
            if (xmlHttp.responseText == 'Too many records')
                {
                document.getElementById("status_message").className='error-message';
                error=true;
                // clear the checkbox from the last selected record
                // wrap in try-catch to help IE6
                try { document.getElementsByName(xmlHttp.record_url)[0].checked = false; }
                catch (e) {}
                }
            else
                document.getElementById("status_message").className='info-message';
            
            document.getElementById("status_message").innerHTML = xmlHttp.responseText;
            
            // update count value on menu
            if (!error)
                {
                count = parseInt(document.getElementById("marked_count").innerHTML);
                if (xmlHttp.responseText == 'Record marked')
                    count++;
                else
                    count--;
                document.getElementById("marked_count").innerHTML = count;
                }
            }
        }
    
    xmlHttp.open('POST', post_url, true);
    xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
    xmlHttp.send(data);
    }

// Toggle a saved search as active or not using AJAX
function update_active_saved_search(obj, key, post_url)
    {
    // prepare post data
    var data = "key=" + escape(encodeURI(key));
    
    // active checkbox
    if (obj.checked == true)
        data += "&set_active=1";
    else
        data += "&remove_active=1";
    // add flag
    data += "&ajax=1";

    var xmlHttp = getRequester();
    
    // callback code
    xmlHttp.onreadystatechange=function()
        {
        // state 4: request complete
        if(xmlHttp.readyState==4)
            {
            if (xmlHttp.status != 200)
                return;
            
            // special case, empty response, some sort of unknown error
            if (xmlHttp.responseText == '')
                {
                document.getElementById("status_message").className='info-message';
                document.getElementById("status_message").innerHTML = '';
                return;
                }
            
            // set message and message class
            document.getElementById("status_message").className='info-message';
            document.getElementById("status_message").innerHTML = xmlHttp.responseText;
            }
        }
    
    xmlHttp.open('POST', post_url, true);
    xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
    xmlHttp.send(data);
    }

// Updated the saved search day using AJAX
function update_search_day(day, post_url)
    {
    // prepare post data
    var data = "day=" + escape(encodeURI(day));
    data += "&set_day=1";
    // add flag
    data += "&ajax=1";

    var xmlHttp = getRequester();
    
    // callback code
    xmlHttp.onreadystatechange=function()
        {
        // state 4: request complete
        if(xmlHttp.readyState==4)
            {
            if (xmlHttp.status != 200)
                return;
            
            // special case, empty response, some sort of unknown error
            if (xmlHttp.responseText == '')
                {
                document.getElementById("status_message").className='info-message';
                document.getElementById("status_message").innerHTML = '';
                return;
                }
            
            // set message and message class
            document.getElementById("status_message").className='info-message';
            document.getElementById("status_message").innerHTML = xmlHttp.responseText;
            }
        }
    
    xmlHttp.open('POST', post_url, true);
    xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
    xmlHttp.send(data);
    }

// Creates the XMLHttpRequest object (AJAX)
function getRequester()
    {
    var xmlHttp;
    // this should work for all browsers except IE6 and older IE
    try
        {
        // try to create XMLHttpRequest object
        xmlHttp = new XMLHttpRequest();
        }
    catch(e)
        {
        // assume IE6 or older
        var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
                                        "MSXML2.XMLHTTP.5.0",
                                        "MSXML2.XMLHTTP.4.0",
                                        "MSXML2.XMLHTTP.3.0",
                                        "MSXML2.XMLHTTP",
                                        "Microsoft.XMLHTTP");
        // try every prog id until one works
        for (var i=0; i < XmlHttpVersions.length && !xmlHttp; i++)
            {
            try
                {
                // try to create XMLHttpRequest object
                xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
                }
            catch (e) {}
            }
        }
    // return the created object or display an error message
    if (!xmlHttp)
        alert("Error creating the XMLHttpRequest object.");
    else
        return xmlHttp;
    }
