1 /*****************************************************************************
2 * vlm.js: VLC media player web interface
3 *****************************************************************************
4 * Copyright (C) 2005-2006 the VideoLAN team
7 * Authors: Antoine Cellerier <dionoea -at- videolan -dot- org>
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
22 *****************************************************************************/
24 /* replace quotes and spaces by underscores */
25 function addunderscores( str ){ return str.replace(/\'|\"| /g, '_'); }
27 /**********************************************************************
28 * Input dialog functions
29 *********************************************************************/
31 function vlm_input_edit( dest )
33 document.getElementById( 'input_dest' ).value = dest;
37 function vlm_input_change()
39 document.getElementById( value( 'input_dest' ) ).value = value( 'input_mrl' ).replace( /\ :/g, " option " );
41 document.getElementById( value( 'input_dest' ) ).focus();
44 function vlm_output_edit( dest )
46 document.getElementById( 'sout_dest' ).value = dest;
50 function vlm_output_change()
52 document.getElementById( value( 'sout_dest' ) ).value = value( 'sout_mrl' ).substr(6).replace( /\ :/g, " option " ); /* substr <-> remove :sout= */
54 document.getElementById( value( 'sout_dest' ) ).focus();
57 function hide_vlm_add()
59 document.getElementById( 'vlm_add_broadcast' ).style.display = 'none';
60 document.getElementById( 'vlm_add_vod' ).style.display = 'none';
61 document.getElementById( 'vlm_add_schedule' ).style.display = 'none';
62 document.getElementById( 'vlm_add_other' ).style.display = 'none';
65 function toggle_schedule_date()
67 if( checked( 'vlm_schedule_now' ) )
69 disable( 'vlm_schedule_year' );
70 disable( 'vlm_schedule_month' );
71 disable( 'vlm_schedule_day' );
72 disable( 'vlm_schedule_hour' );
73 disable( 'vlm_schedule_minute' );
74 disable( 'vlm_schedule_second' );
78 enable( 'vlm_schedule_year' );
79 enable( 'vlm_schedule_month' );
80 enable( 'vlm_schedule_day' );
81 enable( 'vlm_schedule_hour' );
82 enable( 'vlm_schedule_minute' );
83 enable( 'vlm_schedule_second' );
87 function toggle_schedule_repeat()
89 if( checked( 'vlm_schedule_repeat' ) )
91 enable( 'vlm_schedule_period_year' );
92 enable( 'vlm_schedule_period_month' );
93 enable( 'vlm_schedule_period_day' );
94 enable( 'vlm_schedule_period_hour' );
95 enable( 'vlm_schedule_period_minute' );
96 enable( 'vlm_schedule_period_second' );
97 enable( 'vlm_schedule_repeat_times' );
101 disable( 'vlm_schedule_period_year' );
102 disable( 'vlm_schedule_period_month' );
103 disable( 'vlm_schedule_period_day' );
104 disable( 'vlm_schedule_period_hour' );
105 disable( 'vlm_schedule_period_minute' );
106 disable( 'vlm_schedule_period_second' );
107 disable( 'vlm_schedule_repeat_times' );
111 function vlm_schedule_type_change( name )
113 var act = document.getElementById( 'vlm_elt_' + name + '_action' ).value;
114 var itemname = document.getElementById( 'vlm_elt_' + name + '_name' );
115 var opt = document.getElementById( 'vlm_elt_' + name + '_opt' );
116 if( act == "play" || act == "pause" || act == "stop" )
118 itemname.style.display = "";
119 opt.style.display = "none";
121 else if( act == "seek" )
123 itemname.style.display = "";
124 opt.style.display = "";
128 itemname.style.display = "none";
129 opt.style.display = "";
133 function update_vlm_add_broadcast()
135 var cmd = document.getElementById( 'vlm_command' );
137 if( value( 'vlm_broadcast_name' ) )
139 cmd.value = "new " + addunderscores( value( 'vlm_broadcast_name' ) )
142 if( checked( 'vlm_broadcast_enabled' ) )
144 cmd.value += " enabled";
147 if( checked( 'vlm_broadcast_loop' ) )
149 cmd.value += " loop";
152 if( value( 'vlm_broadcast_input' ) )
154 cmd.value += " input " + value( 'vlm_broadcast_input' );
157 if( value( 'vlm_broadcast_output' ) )
159 cmd.value += " output " + value( 'vlm_broadcast_output' );
168 function update_vlm_add_vod()
170 var cmd = document.getElementById( 'vlm_command' );
172 if( value( 'vlm_vod_name' ) )
174 cmd.value = "new " + addunderscores( value( 'vlm_vod_name' ) )
177 if( checked( 'vlm_vod_enabled' ) )
179 cmd.value += " enabled";
182 if( value( 'vlm_vod_input' ) )
184 cmd.value += " input " + value( 'vlm_vod_input' );
187 if( value( 'vlm_vod_output' ) )
189 cmd.value += " output " + value( 'vlm_vod_output' );
198 function update_vlm_add_schedule()
200 var cmd = document.getElementById( 'vlm_command' );
202 check_and_replace_int( 'vlm_schedule_year', '0000' );
203 check_and_replace_int( 'vlm_schedule_month', '00' );
204 check_and_replace_int( 'vlm_schedule_day', '00' );
205 check_and_replace_int( 'vlm_schedule_hour', '00' );
206 check_and_replace_int( 'vlm_schedule_minute', '00' );
207 check_and_replace_int( 'vlm_schedule_second', '00' );
208 check_and_replace_int( 'vlm_schedule_period_year', '0000' );
209 check_and_replace_int( 'vlm_schedule_period_month', '00' );
210 check_and_replace_int( 'vlm_schedule_period_day', '00' );
211 check_and_replace_int( 'vlm_schedule_period_hour', '00' );
212 check_and_replace_int( 'vlm_schedule_period_minute', '00' );
213 check_and_replace_int( 'vlm_schedule_period_second', '00' );
215 if( value( 'vlm_schedule_name' ) )
217 cmd.value = "new " + addunderscores( value( 'vlm_schedule_name' ) ) + " schedule";
219 if( checked( 'vlm_schedule_enabled' ) )
221 cmd.value += " enabled";
224 if( checked( 'vlm_schedule_now' ) )
226 cmd.value += " date now";
230 cmd.value += " date " + value( 'vlm_schedule_year' ) + "/" + value( 'vlm_schedule_month' ) + "/" + value( 'vlm_schedule_day' ) + '-' + value( 'vlm_schedule_hour' ) + ':' + value( 'vlm_schedule_minute' ) + ':' + value( 'vlm_schedule_second' );
233 if( checked( 'vlm_schedule_repeat' ) )
235 cmd.value += " period " + value( 'vlm_schedule_period_year' ) + "/" + value( 'vlm_schedule_period_month' ) + "/" + value( 'vlm_schedule_period_day' ) + '-' + value( 'vlm_schedule_period_hour' ) + ':' + value( 'vlm_schedule_period_minute' ) + ':' + value( 'vlm_schedule_period_second' );
237 if( value( 'vlm_schedule_repeat_times' ) != 0 )
239 cmd.value += " repeat " + (value( 'vlm_schedule_repeat_times' ) - 1 );
250 function update_vlm_add_other()
252 var cmd = document.getElementById( 'vlm_command' );
256 function clear_vlm_add()
258 document.getElementById( 'vlm_command' ).value = "";
259 document.getElementById( 'vlm_broadcast_name' ).value = "";
260 document.getElementById( 'vlm_vod_name' ).value = "";
263 function create_button( caption, action )
265 /* var link = document.createElement( "input" );
266 link.setAttribute( 'type', 'button' );*/
267 /* link.setAttribute( 'onclick', action ); */
268 /* Above doesn't work on ie. You need to use something like
269 * link.onclick = function() { alert( 'pouet' ); };
270 * instead ... conclusion: IE is crap */
271 /* link.setAttribute( 'value', caption );*/
273 var d = document.createElement( 'div' );
274 d.innerHTML = "<input type='button' onclick='"+action+"' value='"+caption+"' />"; /* other IE work around ... still crap. Use double quotes only in action */
275 var link = d.firstChild;
278 function create_option( caption, value )
280 var opt = document.createElement( 'option' );
281 opt.setAttribute( 'value', value );
282 opt.appendChild( document.createTextNode( caption ) );
286 function parse_vlm_cmd()
288 if( req.readyState == 4 )
290 if( req.status == 200 )
292 var vlm_answer = req.responseXML.documentElement;
293 var error_tag = vlm_answer.getElementsByTagName( 'error' )[0];
294 var vlme = document.getElementById( 'vlm_error' );
295 clear_children( vlme );
296 if( error_tag.hasChildNodes() )
298 vlme.appendChild( document.createTextNode( 'Error: ' + error_tag.firstChild.data ) );
299 vlme.style.color = "#f00";
303 vlme.appendChild( document.createTextNode( 'Command succesful (' + value( 'vlm_command' ) + ') ' ) );
304 vlme.style.color = "#0f0";
307 vlme.appendChild( create_button( 'clear', 'clear_children( document.getElementById( "vlm_error" ) );' ) );
314 function parse_vlm_elements()
316 if( req.readyState == 4 )
318 if( req.status == 200 )
320 var vlmb = document.getElementById( 'vlm_broadcast_list' );
321 var vlmv = document.getElementById( 'vlm_vod_list' );
322 var vlms = document.getElementById( 'vlm_schedule_list' );
324 clear_children( vlmb );
325 clear_children( vlmv );
326 clear_children( vlms );
328 answer = req.responseXML.documentElement;
330 var elt = answer.firstChild;
334 if( elt.nodeName == "broadcast" || elt.nodeName == "vod" )
336 var nb = document.createElement( 'div' );
337 setclass( nb, 'list_element' );
338 if( elt.nodeName == "broadcast" )
340 vlmb.appendChild( nb );
344 vlmv.appendChild( nb );
346 var nbname = document.createElement( 'b' );
347 nbname.appendChild( document.createTextNode( elt.getAttribute( 'name' ) ) );
348 nb.appendChild( nbname );
350 if( elt.getAttribute( 'enabled' ) == 'yes' )
352 nb.appendChild( document.createTextNode( " enabled " ) );
353 nb.appendChild( create_button( "Disable", 'vlm_disable("'+elt.getAttribute( 'name' ) + '");' ) );
357 nb.appendChild( document.createTextNode( " disabled " ) );
358 nb.appendChild( create_button( "Enable", 'vlm_enable("'+elt.getAttribute( 'name' ) + '");' ) );
361 if( elt.nodeName == "broadcast" )
363 if( elt.getAttribute( 'loop' ) == 'yes' )
365 nb.appendChild( document.createTextNode( " loop " ) );
367 nb.appendChild( create_button( 'Un-loop', 'vlm_unloop("'+elt.getAttribute( 'name' ) + '");' ) );
371 nb.appendChild( document.createTextNode( " play once " ) );
372 nb.appendChild( create_button( 'Loop', 'vlm_loop("'+elt.getAttribute( 'name' ) + '");' ) );
376 if( elt.getAttribute( 'enabled' ) == 'yes' )
378 nb.appendChild( document.createTextNode( " " ) );
379 nb.appendChild( create_button( 'Play', 'vlm_play("'+elt.getAttribute('name')+'");' ) );
382 nb.appendChild( document.createTextNode( " " ) );
383 nb.appendChild( create_button( 'Pause', 'vlm_pause("'+elt.getAttribute('name')+'");' ) );
385 nb.appendChild( document.createTextNode( " " ) );
386 nb.appendChild( create_button( 'Stop', 'vlm_stop("'+elt.getAttribute('name')+'");' ) );
389 nb.appendChild( document.createTextNode( " " ) );
390 nb.appendChild( create_button( 'Delete', 'vlm_delete("'+elt.getAttribute( 'name' ) + '");' ) );
392 var list = document.createElement( "ul" );
394 /* begin input list */
395 var item = document.createElement( "li" );
396 list.appendChild( item );
397 item.appendChild( document.createTextNode( "Inputs: " ) );
398 var text = document.createElement( "input" );
399 text.setAttribute( 'type', 'text' );
400 text.setAttribute( 'size', '40' );
401 text.setAttribute( 'id', 'vlm_elt_'+elt.getAttribute('name')+'_input' );
402 text.setAttribute( 'onkeypress', 'if( event.keyCode == 13 ) vlm_add_input("'+elt.getAttribute('name')+'",document.getElementById("vlm_elt_'+elt.getAttribute('name')+'_input").value );' );
403 item.appendChild( text );
404 item.appendChild( document.createTextNode( ' ' ) );
405 item.appendChild( create_button( 'Edit', 'vlm_input_edit("vlm_elt_'+elt.getAttribute('name')+'_input");') );
406 item.appendChild( document.createTextNode( ' ' ) );
407 item.appendChild( create_button( 'Add input', 'vlm_add_input("'+elt.getAttribute('name')+'",document.getElementById("vlm_elt_'+elt.getAttribute('name')+'_input").value );' ) );
409 var inputs = elt.getElementsByTagName( 'input' );
410 if( inputs.length > 0 )
412 var ilist = document.createElement( "ol" );
413 ilist.setAttribute( 'start', '1' );
414 item.appendChild( ilist );
415 for( i = 0; i < inputs.length; i++ )
417 var item = document.createElement( "li" );
418 item.appendChild( document.createTextNode( inputs[i].firstChild.data + " " ) );
419 item.appendChild( create_button( "Delete", 'vlm_delete_input("' + elt.getAttribute( 'name' ) + '", '+(i+1)+' );' ) );
420 ilist.appendChild( item );
423 /* end of input list */
426 var item = document.createElement( "li" );
427 outputelt = elt.getElementsByTagName( 'output' )[0];
428 if( outputelt.hasChildNodes() )
430 output = outputelt.firstChild.data;
436 item.appendChild( document.createTextNode( 'Output: ' ) );
437 var text = document.createElement( "input" );
438 text.setAttribute( 'type', 'text' );
439 text.setAttribute( 'id', 'vlm_elt_'+elt.getAttribute('name')+'_output' );
440 text.setAttribute( 'value', output );
441 text.setAttribute( 'onkeypress', 'if( event.keyCode == 13 ) vlm_output("'+elt.getAttribute( 'name' )+ '",document.getElementById("vlm_elt_'+elt.getAttribute( 'name' )+'_output").value);' );
442 item.appendChild( text );
444 item.appendChild( document.createTextNode( ' ' ) );
446 item.appendChild( create_button( 'Edit', 'vlm_output_edit("vlm_elt_'+elt.getAttribute('name')+'_output");' ) );
447 item.appendChild( document.createTextNode( ' ' ) );
448 item.appendChild( create_button( 'Change output', 'vlm_output("'+elt.getAttribute( 'name' )+ '",document.getElementById("vlm_elt_'+elt.getAttribute( 'name' )+'_output").value);' ) );
449 list.appendChild( item );
452 /* begin options list */
453 var item = document.createElement( "li" );
454 list.appendChild( item );
455 item.appendChild( document.createTextNode( "Options: " ) );
457 var text = document.createElement( "input" );
458 text.setAttribute( 'type', 'text' );
459 text.setAttribute( 'size', '40' );
460 text.setAttribute( 'id', 'vlm_elt_'+elt.getAttribute('name')+'_option' );
461 text.setAttribute( 'onkeypress', 'if( event.keyCode == 13 ) vlm_option("'+elt.getAttribute('name')+'",document.getElementById("vlm_elt_'+elt.getAttribute('name')+'_option").value );' );
462 item.appendChild( text );
463 item.appendChild( document.createTextNode( ' ' ) );
464 item.appendChild( create_button( 'Add option', 'vlm_option("'+elt.getAttribute('name')+'",document.getElementById("vlm_elt_'+elt.getAttribute('name')+'_option").value );' ) );
466 var options = elt.getElementsByTagName( 'option' );
467 if( options.length > 0 )
469 var olist = document.createElement( "ul" );
470 item.appendChild( olist );
471 for( i = 0; i < options.length; i++ )
473 var item = document.createElement( "li" );
474 item.appendChild( document.createTextNode( options[i].firstChild.data ) );
475 olist.appendChild( item );
481 var instances = elt.getElementsByTagName( 'instance' );
482 if( instances.length > 0 )
484 var item = document.createElement("li");
485 var ilist = document.createElement("ul");
486 list.appendChild( item );
487 item.appendChild(document.createTextNode("Instances:"));
488 item.appendChild( ilist );
489 for( i = 0; i < instances.length; i++ )
491 var iname = instances[i].getAttribute( 'name' );
492 var istate = instances[i].getAttribute( 'state' );
493 var iposition = Number( instances[i].getAttribute( 'position' ) * 100);
494 var itime = Math.floor( instances[i].getAttribute( 'time' ) / 1000000);
495 var ilength = Math.floor( instances[i].getAttribute( 'length' ) / 1000000);
496 var irate = instances[i].getAttribute( 'rate' );
497 var ititle = instances[i].getAttribute( 'title' );
498 var ichapter = instances[i].getAttribute( 'chapter' );
499 var iseekable = instances[i].getAttribute( 'seekable' );
500 var iplaylistindex = instances[i].getAttribute( 'playlistindex' );
502 var item = document.createElement( "li" );
503 item.appendChild( document.createTextNode( iname + ": " + istate + " (" + iplaylistindex + ") " + (iposition.toFixed(2)) + "%" + " " + format_time( itime ) + "/" + format_time( ilength ) ) );
504 ilist.appendChild( item );
507 /* end of instances list */
509 nb.appendChild( list );
512 else if( elt.nodeName == "schedule" )
514 var nb = document.createElement( 'div' );
515 setclass( nb, 'list_element' );
516 vlms.appendChild( nb );
518 var nbname = document.createElement( 'b' );
519 nbname.appendChild( document.createTextNode( elt.getAttribute( 'name' ) ) );
520 nb.appendChild( nbname );
522 if( elt.getAttribute( 'enabled' ) == 'yes' )
524 nb.appendChild( document.createTextNode( " enabled " ) );
525 nb.appendChild( create_button( "Disable", 'vlm_disable("'+elt.getAttribute( 'name' ) + '");' ) );
529 nb.appendChild( document.createTextNode( " disabled " ) );
530 nb.appendChild( create_button( "Enable", 'vlm_enable("'+elt.getAttribute( 'name' ) + '");' ) );
533 nb.appendChild( document.createTextNode( " " ) );
534 nb.appendChild( create_button( "Delete", 'vlm_delete("'+elt.getAttribute( 'name' ) + '");' ) );
536 var list = document.createElement( 'ul' );
538 var item = document.createElement( 'li' );
539 item.appendChild( document.createTextNode( "Date: " + elt.getAttribute( 'date' ) ) );
540 list.appendChild( item );
542 var item = document.createElement( 'li' );
543 item.appendChild( document.createTextNode( "Period (in seconds): " + elt.getAttribute( 'period' ) ) );
544 list.appendChild( item );
546 var item = document.createElement( 'li' );
547 if( elt.getAttribute( 'repeat' ) == -1 )
549 item.appendChild( document.createTextNode( "Number of repeats left: for ever" ) );
553 item.appendChild( document.createTextNode( "Number of repeats left: " + elt.getAttribute( 'repeat' ) ) );
555 list.appendChild( item );
557 var commands = elt.getElementsByTagName( 'command' );
558 for( i = 0; i < commands.length; i++ )
560 var item = document.createElement( "li" );
561 item.appendChild( document.createTextNode( "Command: " + commands[i].firstChild.data + " " ) );
562 list.appendChild( item );
565 var item = document.createElement( 'li' );
566 var sel = document.createElement( 'select' );
567 sel.setAttribute( 'id', 'vlm_elt_'+elt.getAttribute('name')+'_action' );
568 sel.setAttribute( 'onchange', 'vlm_schedule_type_change("'+elt.getAttribute('name')+'");');
569 sel.appendChild( create_option( 'play', 'play' ) );
570 sel.appendChild( create_option( 'pause', 'pause' ) );
571 sel.appendChild( create_option( 'stop', 'stop' ) );
572 sel.appendChild( create_option( 'seek', 'seek' ) );
573 sel.appendChild( create_option( '(other)', '' ) );
574 item.appendChild( sel );
576 item.appendChild( document.createTextNode( " " ) );
577 var text = document.createElement( 'input' );
578 text.setAttribute( 'type', 'text' );
579 text.setAttribute( 'id', 'vlm_elt_'+elt.getAttribute('name')+'_name' );
580 text.setAttribute( 'size', '10' );
581 text.setAttribute( 'value', '(name)' );
582 text.setAttribute( 'onfocus', 'if( this.value == "(name)" ) this.value = "";' );
583 text.setAttribute( 'onblur', 'if( this.value == "" ) this.value = "(name)";' );
584 item.appendChild( text );
586 item.appendChild( document.createTextNode( " " ) );
587 text = document.createElement( 'input' );
588 text.setAttribute( 'type', 'text' );
589 text.setAttribute( 'id', 'vlm_elt_'+elt.getAttribute('name')+'_opt' );
590 text.setAttribute( 'size', '30' );
591 text.setAttribute( 'value', '(options)' );
592 text.setAttribute( 'onfocus', 'if( this.value == "(options)" ) this.value = "";' );
593 text.setAttribute( 'onblur', 'if( this.value == "" ) this.value = "(options)";' );
594 item.appendChild( text );
595 item.appendChild( document.createTextNode( " " ) );
596 item.appendChild( create_button( "Append command", 'vlm_schedule_append("' + elt.getAttribute( 'name' ) + '");') );
598 list.appendChild( item );
600 nb.appendChild( list );
601 vlm_schedule_type_change( elt.getAttribute('name') );
604 elt = elt.nextSibling;
610 function vlm_cmd( cmd )
612 loadXMLDoc( 'requests/vlm_cmd.xml?command='+cmd.replace(/\#/g, '%23'), parse_vlm_cmd );
615 function vlm_get_elements( )
617 loadXMLDoc( 'requests/vlm.xml', parse_vlm_elements );
620 /* helper functions */
622 function vlm_disable( name )
624 document.getElementById( 'vlm_command' ).value = "setup "+name+" disabled";
625 vlm_cmd( value( 'vlm_command' ) );
628 function vlm_enable( name )
630 document.getElementById( 'vlm_command' ).value = "setup "+name+" enabled";
631 vlm_cmd( value( 'vlm_command' ) );
634 function vlm_loop( name )
636 document.getElementById( 'vlm_command' ).value = "setup "+name+" loop";
637 vlm_cmd( value( 'vlm_command' ) );
640 function vlm_unloop( name )
642 document.getElementById( 'vlm_command' ).value = "setup "+name+" unloop";
643 vlm_cmd( value( 'vlm_command' ) );
646 function vlm_play( name )
648 document.getElementById( 'vlm_command' ).value = "control "+name+" play";
649 vlm_cmd( value( 'vlm_command' ) );
652 function vlm_pause( name )
654 document.getElementById( 'vlm_command' ).value = "control "+name+" pause";
655 vlm_cmd( value( 'vlm_command' ) );
658 function vlm_stop( name )
660 document.getElementById( 'vlm_command' ).value = "control "+name+" stop";
661 vlm_cmd( value( 'vlm_command' ) );
664 function vlm_delete( name )
666 document.getElementById( 'vlm_command' ).value = "del "+name;
667 vlm_cmd( value( 'vlm_command' ) );
670 function vlm_delete_input( name, num )
672 document.getElementById( 'vlm_command' ).value = "setup "+name+" inputdeln "+num;
673 vlm_cmd( value( 'vlm_command' ) );
676 function vlm_add_input( name, input )
678 document.getElementById( 'vlm_command' ).value = "setup "+name+" input "+input;
679 vlm_cmd( value( 'vlm_command' ) );
682 function vlm_output( name, output )
684 document.getElementById( 'vlm_command' ).value = "setup "+name+" output "+output;
685 vlm_cmd( value( 'vlm_command' ) );
688 function vlm_option( name, option )
690 document.getElementById( 'vlm_command' ).value = "setup "+name+" option "+option;
691 vlm_cmd( value( 'vlm_command' ) );
694 function vlm_batch( batch )
697 var commands = batch.split( '\n' );
698 for( i = 0; i < commands.length; i++ )
700 document.getElementById( 'vlm_command' ).value = commands[i];
701 vlm_cmd( value( 'vlm_command' ) );
705 function vlm_schedule_append( name )
707 var act = document.getElementById( 'vlm_elt_' + name + '_action' ).value;
708 document.getElementById( 'vlm_command' ).value = "setup " + name + " append ";
710 var itemname = document.getElementById( 'vlm_elt_' + name + '_name' ).value;
711 if( itemname == "(name)" ) itemname = "";
713 var opt = document.getElementById( 'vlm_elt_' + name + '_opt' ).value;
714 if( opt == "(options)" ) opt = "";
718 document.getElementById( 'vlm_command' ).value += opt;
722 document.getElementById( 'vlm_command' ).value += 'control ' + itemname + " " + act + " " + opt;
724 vlm_cmd( value( 'vlm_command' ) );
728 vlm_cmd( value( 'vlm_command' ) );