// $Name:  $
// $Header: /home/cvs/DC5/dc5_barchasp/www/js/dc_methodmenu.js,v 1.2 2007/02/27 15:00:08 thoms Exp $


function DC_MethodMenu_SelectAll()
{ if (document.forms[ 'result_block' ].elements['selobj[]'])
	{ if (document.forms[ 'result_block' ].elements['selobj[]'].length)
		{ for (i = 0; i < document.forms[ 'result_block' ].elements['selobj[]'].length; i++)
			document.forms[ 'result_block' ].elements['selobj[]'][i].checked = true;
		}
	  else
		document.forms[ 'result_block' ].elements['selobj[]'].checked = true;
	}
}


function DC_MethodMenu_DeselectAll()
{ if (document.forms[ 'result_block' ].elements['selobj[]'])
	{ if (document.forms[ 'result_block' ].elements['selobj[]'].length)
		{ for (i = 0; i < document.forms[ 'result_block' ].elements['selobj[]'].length; i++)
			document.forms[ 'result_block' ].elements['selobj[]'][i].checked = false;
		}
	  else
		document.forms[ 'result_block' ].elements['selobj[]'].checked = false;
	}
}


function DC_MethodMenu_GetSelectedIds()
{ result = new Array();
  result[ 'objectids' ] = new Array();
  result[ 'colitmids' ] = new Array();

  if (document.forms[ 'result_block' ] && document.forms[ 'result_block' ].elements[ 'selobj[]' ])
	{ if (document.forms[ 'result_block' ].elements[ 'selobj[]' ].length)
		{ for (i = 0; i < document.forms[ 'result_block' ].elements[ 'selobj[]' ].length; i++)
			{ if (document.forms[ 'result_block' ].elements[ 'selobj[]' ][ i ].checked == true)
				{ sel_id = document.forms[ 'result_block' ].elements[ 'selobj[]' ][ i ].value;

				  postfix = '[' + sel_id + ']';

				  if (document.forms[ 'result_block' ].elements[ 'objid' + postfix ])
					result[ 'objectids' ][ result[ 'objectids' ].length ] = document.forms[ 'result_block' ].elements[ 'objid' + postfix ].value;

				  if (document.forms[ 'result_block' ].elements[ 'colid' + postfix ])
					result[ 'colitmids' ][ result[ 'colitmids' ].length ] = document.forms[ 'result_block' ].elements[ 'colid' + postfix ].value;
				}
			}
		}
	  else
		{ sel_id = document.forms[ 'result_block' ].elements[ 'selobj[]' ].value;

		  postfix = '[' + sel_id + ']';

		  if (document.forms[ 'result_block' ].elements[ 'objid' + postfix ])
			result[ 'objectids' ][ result[ 'objectids' ].length ] = document.forms[ 'result_block' ].elements[ 'objid' + postfix ].value;

		  if (document.forms[ 'result_block' ].elements[ 'colid' + postfix ])
			result[ 'colitmids' ][ result[ 'colitmids' ].length ] = document.forms[ 'result_block' ].elements[ 'colid' + postfix ].value;
		}
	}

  return result;
}


/* XXX Why don't we utilize DC_Dialog_Open() here? */

function DC_MethodMenu_Run(method, mode, confirmtxt, objcnt, x, y, label, winoptions, selected_ids)
{ if (! selected_ids)
	selected_ids = DC_MethodMenu_GetSelectedIds();

  cnt_ids = selected_ids[ 'objectids' ].length;

  if (objcnt == 'selected')
	{ if (cnt_ids < 1)
		{ alert(trans[ 'nothingselected' ]);
		  return;
		}
	}

  if (confirmtxt != '')
	if (! confirm(confirmtxt))
		return;

  document.forms[ 'ctx_menu' ].elements['method[objectids]'].value = selected_ids[ 'objectids' ];
  document.forms[ 'ctx_menu' ].elements['method[colitmids]'].value = selected_ids[ 'colitmids' ];
  document.forms[ 'ctx_menu' ].elements['method[name]'].value = method;
  document.forms[ 'ctx_menu' ].elements['method[text_selected]'].value = DC_Main_GetSelectedText();
  document.forms[ 'ctx_menu' ].elements['method[mode]'].value = mode;

  switch(mode)
	{ case 'layer':

		document.forms[ 'ctx_menu' ].action = DC_WWW + 'methods.php';
		document.forms[ 'ctx_menu' ].target = 'dialogframe';
	 	document.getElementById('dcModal').style.visibility = 'visible';
	  	document.getElementById('dcModal').style.display = 'block';

		dialoglayer.resizeTo(x,y);
		dialoglayer.zIndex(100);         //doesn't matter!?
		dialoglayer.moveTo('n',0 , true);
		dialoglayer.show();
		dialoglayer.slideTo('center','center',500);

		document.forms[ 'ctx_menu' ].submit();

		break;

	  case 'window':

		if (winoptions == '')
		  winoptions = 'left=0,top=0,scrollbars=yes,resizable=yes';

		now = new Date;
		winname = 'dc_dialog' + now.getTime();

		winhandle = window.open('', winname, 'width=' + x + ',height=' + y + ',' + winoptions);

		document.forms[ 'ctx_menu' ].action = DC_WWW + 'methods.php';
		document.forms[ 'ctx_menu' ].target = winname;
		document.forms[ 'ctx_menu' ].submit();

		winhandle.focus();

		break;

	  case 'background':
	  case 'inline':

		document.forms[ 'ctx_menu' ].target = '_self';
		document.forms[ 'ctx_menu' ].action = DC_SELF;
		document.forms[ 'ctx_menu' ].submit();

		break;
	}
}


// Returns an array of the same structure as DC_MethodMenu_GetSelectedIds(),
// use this to pass a single objectid/colitmid to DC_MethodMenu_Run()'s selected_ids parameter.

function DC_MethodMenu_Array(objectid, colitmid)
{ result = new Array;

  result[ 'objectids' ] = new Array;
  result[ 'colitmids' ] = new Array;

  result[ 'objectids' ][ 0 ] = objectid;
  result[ 'colitmids' ][ 0 ] = colitmid;

  return result;
}
