/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
 * The contents of this file are subject to the Netscape Public
 * License Version 1.1 (the "License"); you may not use this file
 * except in compliance with the License. You may obtain a copy of
 * the License at http://www.mozilla.org/NPL/
 * 
 * Software distributed under the License is distributed on an "AS
 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
 * implied. See the License for the specific language governing
 * rights and limitations under the License.
 * 
 * The Original Code is Mozilla Communicator client code, released
 * March 31, 1998.
 * 
 * The Initial Developer of the Original Code is Netscape
 * Communications Corporation. Portions created by Netscape are
 * Copyright (C) 1998-1999 Netscape Communications Corporation. All
 * Rights Reserved.
 */

function createHTML(tag) {
    return document.createElementWithNameSpace(tag, "http://www.w3.org/TR/REC-html40");
}

function createXUL(tag) {
    return document.createElementWithNameSpace(tag, "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
}

function createOption(label,value) {
    var opt = new Option(label, value);
    return opt;
}

function createTextField() {
    var text = createHTML("INPUT");
    text.type = "text";

    return text;
}

function createStringSelect() {
    var sel = createHTML("select");

    addStringComparators(sel);
    
    return sel;
}

function addStringComparators(selWidget) {
    var opt1=createOption("contains", "contains");
    var opt2=createOption("doesn't contain", "nocontain");

    dump("adding " + opt1.text + "\n");
    selWidget.add(opt1, null);
    selWidget.add(opt2, null);
}

function addDateComparators(selWidget) {
    var opt1=createOption("is before", "before");
    var opt2=createOption("is after",  "after");

    selWidget.add(opt1, null);
    selWidget.add(opt2, null);
}

function addNumericComparators(selWidget) {
    var opt1=createOption("is", "is");
    var opt2=createOption("is greater than", "gt");
    var opt3=createOption("is less than", "lt");

    selWidget.add(opt1, null);
    selWidget.add(opt2, null);
    selWidget.add(opt3, null);
    
}
// eventually this will come from the search service
function createFieldSelect() {
    var sel = createHTML("select");
    var opt1=createOption("subject", "subject");
    var opt2=createOption("sender", "sender");
    var opt3=createOption("date", "date");
    var opt4=createOption("text", "any text");
    var opt5=createOption("keyword", "keyword");
    var opt6=createOption("age in days", "age");

    sel.add(opt1, null);
    sel.add(opt2, null);
    sel.add(opt3, null);
    sel.add(opt4, null);
    sel.add(opt5, null);
    sel.add(opt6, null);
    sel.onChange = OnFieldSelect;
    sel.onchange = OnFieldSelect;
    return sel;
}

function createRow() {
    var result = createHTML("DIV");

    var fieldSelect = createFieldSelect();
    var containSelect = createStringSelect();
    var fieldText = createTextField();
    
    fieldText.setAttribute("flex", "100%");
    
    result.appendChild(fieldSelect);
    result.appendChild(containSelect);
    result.appendChild(fieldText);
    return result;
}

function OnMore(event) {
    var parentBox = document.getElementById("criteriabox");
    parentBox.appendChild(createRow());

    var sel = document.getElementById("zoober");
}

function OnLess(event) {
    var parentBox = document.getElementById("criteriabox");
    if (parentBox.childNodes.length > 1) {
        parentBox.removeChild(parentBox.lastChild);
    }
}
function OnFieldSelect(event) {
    var selWidget = event.target;
    var selectedValue = selWidget.options[selWidget.selectedIndex].value;
    dump(selectedValue + " was just selected\n");

    var comp = selWidget.nextSibling;
    // clear out the widget
    while (comp.length != 0) {
        comp.remove(0);
    }
    
    if (selectedValue == "subject" ||
        selectedValue == "sender" ||
        selectedValue == "text" ||
        selectedValue == "keyword") {
        addStringComparators(comp);

    } else if (selectedValue == "age") {
        addNumericComparators(comp);
    } else if (selectedValue == "date") {
        addDateComparators(comp);
    }
}

function OnComparatorSelect(event) {
    var selWidget = event.target;

    var selectedValue = selWidget.options[selWidget.selectedIndex].value;
    dump(selectedValue + " was just selected\n");
    
}
// onchange="OnFieldSelect(event);"

function onOptions(event) {
    window.openDialog("chrome://messenger/content/SearchOptions.xul", "options", "chrome,modal,height=100,width=70");
}
