/**
**/


:-object memberjs : [jsilib].

	var output.

	main :-
		get_window(Window),
		get_member(Window, 'document', Document),
		get_member(Document, example, Example),
		get_member(Example, output_area, OutputArea),
		output := OutputArea,

		get_member(Document, lastModified, LastModified),
		show('~npage last modified ~w~n', [LastModified]),
		get_member(Document, referrer, Referrer),
		show('referrer ~w~n', [Referrer]),
		get_member(Document, bgColor, Color),
		show('the document color = ~w~n', [Color]),
		set_member(Document, bgColor, cyan),
		get_member(Document, bgColor, NewColor),
		show('new background color = ~w~n', [NewColor]),

		get_member(Document, applets, Applets),
		get_member(Applets, length, Length),
		show('applets length value = ~w~n', [Length]),

		get_member(Example, input_area, InputArea),
		show('input_area ref = ~w~n', [InputArea]),
		get_member(InputArea, type, InputType),
		show('the input type = ~w~n', [InputType]),
		get_member(InputArea, value, InputValue),
		show('and the input value = ~w~n', [InputValue]),
		set_member(InputArea, value, '......'),
		get_member(InputArea, value, NewInputValue),
		show('the new input value = ~w~n', [NewInputValue]),

		option_list(Window, Example).

	option_list(Window, Example) :-
		show('~n', []),
		get_member(Example, language, Selects),
		get_member(Selects, options, Options),

		get_member(Options, length, Length),
		get_member(Options, selectedIndex, Index),
		show('number of options = ~w~n', [Length]),
		show('selected index = ~w~n', [Index]),
		option_eval(0, Length, Window).
		%% option_slot(0, Length, Selects, Options).	%% 1r18K: get_slot/3

	option_eval(I, L, Window) :-
		I < L,
		!,
		N is I + 1,
		format_to_atom(Option, 'document.example.language.options[~w].value', [I]),

		%% eval(Window, Option, Value),			%% +netscape, -explorer

		%% function evaluate_string(code)
		%% { return eval('' + code); }  :
		call(Window, evaluate_string, [Option], Value),	%% +netscape, +explorer

		show('eval ~w = ~w~n', [I, Value]),
		option_eval(N, L, Window).
	option_eval(_do_, _not_, _fail_).


/**
	option_slot(I, L, Selects, Options) :-
		I < L,
		!,
		N is I + 1,

		%% both "Selects" and "Options" work
		%% under netscape (but not explorer):
		get_slot(Options, I, TheSlot),			%% +netscape, -explorer

		get_member(TheSlot, value, SValueI),
		show('slot ~w = ~w~n', [I, SValueI]),
		option_slot(N, L, Selects, Options).
	option_slot(_do_, _not_, _fail_, _here_).
**/

	show(Format, Arguments) :-
		%% yet another  example of the
		%% get / set member methods :
		get_member(output, value, Area),
		format_to_atom(Line, Format, Arguments),
		format_to_atom(Text, '~w~w', [Area,Line]),
		set_member(output, value, Text).

:-end_object memberjs.


/**
**/