package your.app.components;

import com.webobjects.appserver.WOActionResults;
import com.webobjects.appserver.WOContext;
import com.webobjects.foundation.NSArray;
import com.webobjects.foundation.NSMutableArray;

import er.extensions.components.ERXComponent;
import er.extensions.foundation.ERXStringUtilities;

public class Main extends ERXComponent {
	public Main(WOContext context) {
		super(context);
		//Load item array
		for(int i = 0, j = 0; i < 10; i++) {
			Item item = new Item();
			item.name = "container " + i;
			for(int k = j + 10; j < k; j++) {
				item.valueArray.add( "item " + j );
			}
			allValues.add( item );
		}
	}

    private NSMutableArray<Item> allValues = new NSMutableArray<Item>();
	public String value;
    public Item currentValue;
    private Item selectedObject;
	private String browserItem;
	private String _safeElementID;

    public NSArray<Item> currentValues() {
        NSMutableArray<Item> result = new NSMutableArray<Item>();
        for(Item c : allValues) {
        	if(result.count() > 10) { break; }
            if(value == null || c.name.toLowerCase().indexOf(value.toLowerCase()) >= 0) {
                result.addObject(c);
            }
        }
        return result;
    }
    
    public class Item {
    	public String name;
    	public NSMutableArray<String> valueArray = new NSMutableArray<String>();
    }

	public NSArray<String> browserList() {
		return (selectedObject == null)?null:selectedObject.valueArray;
	}

	public String browserItem(){return browserItem;}
	public void setBrowserItem( String browserItem ){this.browserItem = browserItem;}

	public String searchTermSelectedFunction()
	{
		return "function(e) { " + searchTermSelectedFunctionName() + "(); }";
	}
	
	public String searchTermSelectedFunctionName()
	{
		if (_safeElementID == null) {
			_safeElementID = ERXStringUtilities.safeIdentifierName(this.context().elementID());
		}
		return "oxtorlu_" + _safeElementID + "CompleteFunction";
	}
	
	public WOActionResults selectObject() {
		for(Item c: allValues) {
			if(c.name.equals( value )) {
				selectedObject = c;
			}
		}
		return null;
	}

	
}
