var categoryArray = new Array();    // Array to store how many subcategories have been checked.

function resetChecks(list)
{
    var cBoxes = list.getElementsByTagName('input');
    for (var i = 0; i < cBoxes.length; i++)
    {
        cBoxes[i].checked = false;
        var starTag = document.getElementById('category_' + cBoxes[i].title + '_subselected');
        if (starTag != undefined)
        {
            starTag.style.display = "none";
        }
    }
    toggleChildrenEnabled(false, list);
    categoryArray = new Array();
//    initSelectSubCategories();
}

/** disable/enable checkboxes
 *  @author Adrian Rogers
 */

function toggleChildrenEnabled(disable, list)
{
    var cBoxes = list.getElementsByTagName('input');
    // First toggle all child boxes 
    for (var i = 0; i < cBoxes.length; i++)
    {
        cBoxes[i].disabled=disable;
    }
    var ttText  = disable ? "*To select this category please deselect its parent category first." : "";
    var ttSpans = list.getElementsByTagName('span');
    for (var i = 0; i < ttSpans.length; i++)
    {
        if ( ttSpans[i].id == "ttSpan" )
        {
            ttSpans[i].title = ttText;
        }
    }
    if ( !disable )
    {
        // If enabling need to go through a second time and ensure all selected subcategories
        // are disabled correctly.
        for (var i = 0; i < cBoxes.length; i++)
        {
            if ( cBoxes[i].checked )
            {
                // We need to toggle all sub checkboxes too if they exist
                var nextName = ('category_' + cBoxes[i].value + '_subcategories');
                var nextListItems = document.getElementById(nextName);
                if ( nextListItems != null )
                {
                    toggleChildrenEnabled(true, nextListItems);
                }
            }
        }
    }
}

/** show/hide subcategory selected *s
 *  @author Adrian Rogers
 */

function selectSubCategory(parent_id, select)
{
    if ( select )
    {
        if ( categoryArray[parent_id] == null )
        {
            categoryArray[parent_id] = 0;
        }
        categoryArray[parent_id]++;
        if ( categoryArray[parent_id] == 1)
        {
            // Show marker and update parent of this (if it exists).
            var aTag = document.getElementById('category_' + parent_id + '_subselected');
            if ( aTag != null )
            {
                aTag.style.display = '';
                selectSubCategory(aTag.title, select);
            }
        }
    }
    else
    {
        categoryArray[parent_id]--;
        if ( categoryArray[parent_id] == 0)
        {
            // Hide marker and update parent of this (if it exists).
            var aTag = document.getElementById('category_' + parent_id + '_subselected');
            if ( aTag != null )
            {
                aTag.style.display = 'none';
                selectSubCategory(aTag.title, select);
            }
        }
    }
}

/** Initialisation function for the subcategory selected *s
 *  @author Adrian Rogers
 */
function initSelectSubCategories()
{
    var cBoxes = document.getElementsByName("category");
    for ( var i = 0; i < cBoxes.length; i++ )
    {
        if ( cBoxes[i].checked )
        {
            selectSubCategory(cBoxes[i].title, true);
        }
    }
}

var boolean_visible;
var boolean_fields = new Array();
var fulltext_fields = new Array();

function init()
{
    boolean_visible = document.getElementById('boolean_visible').value == 'true';
    populateFieldArrays();
    var rows = YAHOO.util.Dom.getElementsByClassName(boolean_visible ? "fulltext_field" : "boolean_field", "tr");
    for (i in rows)
    {
        var input = YAHOO.util.Dom.getElementsByClassName("text_search_control", "input", rows[i])[0];
        input.value = '';
        YAHOO.util.Dom.setStyle(rows[i],'display','none');
    }
}

function populateFieldArrays()
{
    var rows = YAHOO.util.Dom.getElementsByClassName("boolean_field", "tr");
    for (i in rows)
    {
        var input = YAHOO.util.Dom.getElementsByClassName("text_search_control", "input", rows[i])[0];
        boolean_fields[i] = input.value;
    }
    var rows = YAHOO.util.Dom.getElementsByClassName("fulltext_field", "tr");
    for (i in rows)
    {
        var input = YAHOO.util.Dom.getElementsByClassName("text_search_control", "input", rows[i])[0];
        fulltext_fields[i] = input.value;
    }
}

function toggleBooleanFields(specify_visible)
{
    if(specify_visible != undefined && specify_visible == boolean_visible)
    {
        //We've passed a specify parameter and it matches what we have, so DON'T toggle.
        return;
    }
    boolean_visible = !boolean_visible;
    document.getElementById("boolean_visible").value = boolean_visible ? "true" : "false";
    var rows = YAHOO.util.Dom.getElementsByClassName("boolean_field", "tr");
    for (i in rows)
    {
        var input = YAHOO.util.Dom.getElementsByClassName("text_search_control", "input", rows[i])[0];
        if (YAHOO.util.Dom.getStyle(rows[i],'display') == 'none')
        {
            input.value = boolean_fields[i] ? boolean_fields[i] : "";
            YAHOO.util.Dom.setStyle(rows[i],'display','');
        }
        else
        {
            boolean_fields[i] = input.value;
            input.value = '';
            YAHOO.util.Dom.setStyle(rows[i],'display','none');
        }
    }
    var rows = YAHOO.util.Dom.getElementsByClassName("fulltext_field", "tr");
    for (i in rows)
    {
        var input = YAHOO.util.Dom.getElementsByClassName("text_search_control", "input", rows[i])[0];
        if (YAHOO.util.Dom.getStyle(rows[i],'display') == 'none')
        {
            input.value = fulltext_fields[i] ? fulltext_fields[i] : "";
            YAHOO.util.Dom.setStyle(rows[i],'display','');
        }
        else
        {
            fulltext_fields[i] = input.value;
            input.value = '';
            YAHOO.util.Dom.setStyle(rows[i],'display','none');
        }
    }
}

YAHOO.util.Event.addListener(window, "load", init);
