// $Name:  $
// $Header: /home/cvs/DC5/dc5_ringier/www/js/dc_main.js,v 1.17 2006/09/20 22:11:02 ino Exp $

var dialoglayer;


// This function is automatically called by CBE's window.onload function

function windowOnload()
{ // Initializing the dialog layer

  dialoglayer = document.getElementById('dialoglayer').cbe;
  dialoglayer.resizeTo(600, 500);
  dialoglayer.moveTo('n', 0, true);

  // Initializing the main menu

  if (document.all && document.getElementById)
	{ navRoot = document.getElementById('dcMainNavMenu');

	  if (navRoot)
		{ for (i = 0; i < navRoot.childNodes.length; i++)
			{ node = navRoot.childNodes[ i ];

			  if (node.nodeName == 'LI')
				{ node.onmouseover = function()
					{ this.className += ' over';
                      switchSelects(false);
					}

				  node.onmouseout = function()
					{ this.className = this.className.replace(' over', '');
                      switchSelects(true);
					}
				}
			}
		}
	}

  initSelectCookie();
}

function switchSelects(on)
{
    if (document.all && document.getElementById)
    { var allSelects = document.getElementsByTagName('select');

      if (allSelects)
        { for (i = 0; i < allSelects.length; i++)
            { node = allSelects[ i ];

              if (on == false)
                { node.className += ' off'; //setAttribute('style', 'display:none;');
                }
              else
                { node.className = node.className.replace(' off', '');
                //node.setAttribute('style', 'display:inline;');
                }
            }
        }
    }
}


function DC_Main_InitWindowName(win)
{ if (win.name.substr(0, 6) != 'dc5win')
	{ var now = new Date();
	  win.name = 'dc5win' + now.getTime();
	  return 1;
	}

  return 0;
}


function DC_Main_WriteWindowName(win)
{ for (i = 0; i < document.forms.length; i++)
	if (document.forms[ i ].elements[ 'window_name' ])
	  document.forms[ i ].elements[ 'window_name' ].value = win.name;
}


function DC_Main_HideMethodWin()
{ dialoglayer.slideTo( dialoglayer.offsetLeft(), -1200, 500);
  dialoglayer.moveTo('n',0 , true);
}


function DC_Main_ShowCalendar(x,y,form_name,field,dialogmode)
{ var value = document.forms[ form_name ].elements[ field ].value;

  // XXX clean this up
  var url   = DC_WWW + "assistant/calendar.php?form="+escape(form_name)+"&field="+escape(field)+"&value="+escape(value);

  DC_Dialog_Open(dialogmode, x, y, false, url);
}


function DC_Main_ShowSaveQuery(x,y,form_name,field,dialogmode,pageid)
{ var value = document.forms[ form_name ].elements[ field ].value;
  // XXX clean this up
  var url   = DC_WWW + "savequery.php?form="+escape(form_name)+"&field="+escape(field)+"&value="+escape(value)+"&pageid="+escape(pageid);

  DC_Dialog_Open(dialogmode, x, y, false, url);
}


function DC_Main_OpenAssistant(dialogmode, dlg_width, dlg_height, winoptions, assistant_url, form_name, field_name, querystr)
{ val = '';

  if (document.forms[ form_name ].elements[ field_name ].value)
	val = document.forms[ form_name ].elements[ field_name ].value;

  url =
	DC_WWW + assistant_url +
	'?env[form_name]=' + escape(form_name) +
	'&env[field_name]=' + escape(field_name) +
	'&env[value]=' + encodeURIComponent(val) +
	'&env[callback]=DC_Main_AssistantCallback_1' +
	'&' + querystr;

  DC_Dialog_Open(dialogmode, dlg_width, dlg_height, winoptions, url);
}

function DC_Main_AssistantCallback_1(env, values, labels)
  {
    DC_Main_AssistantCallback(env, values, labels);
    
    if (env[ 'field_name' ].substring(0, 18) == 'edit[form][DOS_DE]')
      { 
        
        var dos_de = '';
        var dos_en = '';
        
        var value = values[ 0 ];
        var pos = value.indexOf('#');
        
        if (pos)
          { dos_de = value.substring(0, pos);
          	dos_en = value.substring(pos + 1);
          	
          	pos = dos_en.indexOf('#');
          	if (pos)
          	  dos_en = dos_en.substring(0, pos);
          }
        else
          { dos_de = value;
          }
          	 
        var element = document.forms[ env[ 'form_name' ] ].elements[ 'DOS_DE' ];
        element.value = dos_de;
        
        var element = document.forms[ env[ 'form_name' ] ].elements[ 'DOS_EN' ];
        element.value = dos_en;
      } 
    
    if (env[ 'field_name' ].substring(0, 14) == 'edit[form][AT]')
      { 
        var pre = 'edit[form][AT_PRE]';
        var end = env[ 'field_name' ].substring(14);
        pre += end.substring(0, end.indexOf(']') + 1);
        
        var pre_name = pre + '[0]';
        
        var element = document.forms[ env[ 'form_name' ] ].elements[ pre_name ];
        element.value = '';
        
        pre_name = pre + '[1]';
        element = document.forms[ env[ 'form_name' ] ].elements[ pre_name ];
        element.value = '';
        
        DC_Main_RunOnFormSubmit('result_block');
        document.forms[ env[ 'form_name' ] ].submit();
      }  
   
    if ( (env[ 'field_name' ].substring(0, 14) == 'edit[form][FA]') ||
         (env[ 'field_name' ].substring(0, 14) == 'edit[form][TH]')
       ) 
      { 
      	DC_Main_RunOnFormSubmit('result_block');
        document.forms[ env[ 'form_name' ] ].submit();
      }  
  }
  
function DC_Main_AssistantCallback(env, values, labels)
{ var element = document.forms[ env[ 'form_name' ] ].elements[ env[ 'field_name' ] ];

  if ((element.type == 'select-multiple') || (element.type == 'select-one'))
	{ for (i = 0; i < values.length; i++)
		{ if (document.all)
			position = element.length;
		  else
			position = null;

		  var entry = document.createElement('option');
		  entry.value = values[ i ];
		  entry.text  = labels[ i ];
		  entry.selected = true;

		  element.add(entry, position);
		}
	}
  else
	{ if (! env[ 'separator' ])
		env[ 'separator' ] = '; ';

	  // XXX hack
	  if (env[ 'separator' ] == 'NEWLINE')
		env[ 'separator' ] = '\n';

	  if (! env[ 'clean' ])
		env[ 'clean' ] = 'yes';

	  if (env[ 'clean' ] == 'yes')
		element.value = '';

	  for (i = 0; i < values.length; i++)
		{ if (element.value != '')
			element.value = element.value + env[ 'separator' ];

		  element.value = element.value + values[ i ];
		}
	
	}
}


function DC_Main_GetSelectedText()
{ txtselected = '';

  if (window.getSelection)
	txtselected = window.getSelection();
  else if(document.getSelection)
	txtselected = document.getSelection();
  else if(document.selection)
	txtselected = document.selection.createRange().text;

  return txtselected;
}


function DC_Main_RemoveSelectedOptions(form_name, myelement)
{ var f = document.forms[ form_name ];

  if (! f)
	return;

  var e = f.elements[ myelement ];

  if (! e)
	return;

  // Convenience hack: Make this work for text and textarea fields as well
  // (can be useful for read-only text fields)

  if ((e.type == 'text') || (e.type == 'textarea'))
	e.value = '';
  else if ((e.type == 'select-multiple') || (e.type == 'select-one'))
	{ len = e.length - 1;

	  for (i = len; i >= 0; i--)
		if (e.options[ i ].selected)
		  e.remove(i);
	}
  
  if (myelement.substring(0, 14) == 'edit[form][AT]')
    { 
      var pre = 'edit[form][AT_PRE]' + myelement.substring(14,17);
      var pre_name = pre + '[0]';
        
      var element = f.elements[ pre_name ];
      element.value = '';
        
      pre_name = pre + '[1]';
      element = f.elements[ pre_name ];
      element.value = '';
    }  	
  
  if ( (myelement.substring(0, 14) == 'edit[form][FA]') ||
       (myelement.substring(0, 14) == 'edit[form][AT]') ||
       (myelement.substring(0, 14) == 'edit[form][TH]')
     )
    { var pre = myelement.substring(0,17);
      var pre_name = pre + '[0]';
        
      var element = f.elements[ pre_name ];
      element.value = '';
        
      pre_name = pre + '[1]';
      element = f.elements[ pre_name ];
      element.value = '';
      
      DC_Main_RunOnFormSubmit('result_block');
      f.submit();
    }   
}


function DC_Main_SelectAllOptions(form_name, myelements)
{ var f = document.forms[ form_name ];

  if (! f)
	return;

  len = myelements.length;

  // In myelements, accept form field name (string) or array of form field names

  if (typeof(myelements) == 'string')
	{ tmp = myelements;
	  myelements = new Array;
	  myelements[ 0 ] = tmp;
	}

  for (i = 0; i < len; i++)
	{ var e = f.elements[ myelements[ i ] ];

	  if (e)
		{ l = e.length;

		  for (j = 0; j < l; j++)
			{ e.options[ j ].selected = true;
			}
		}
	}
}


function DC_Main_FocusFirstElement(form_name)
{ cnt = document.forms[ form_name ].elements.length;

  for (i = 0; i < cnt; i++)
	// Filter out <fieldset>
	if (document.forms[ form_name ].elements[ i ].type)
	  // Filter out hidden and disabled fields
	  if ((document.forms[ form_name ].elements[ i ].type != 'hidden') && (! document.forms[ form_name ].elements[ i ].disabled))
		{ document.forms[ form_name ].elements[ i ].focus();
		  break;
		}
}


var dc_main_onformsubmit = new Array;

function DC_Main_RegisterOnFormSubmit(form_name, code)
{ len = dc_main_onformsubmit.length;

  dc_main_onformsubmit[ len ] = new Array;
  dc_main_onformsubmit[ len ][ 0 ] = form_name;
  dc_main_onformsubmit[ len ][ 1 ] = code;
}


function DC_Main_RunOnFormSubmit(form_name)
{ len = dc_main_onformsubmit.length;
  code = '';

  for (i = 0; i < len; i++)
	if (dc_main_onformsubmit[ i ][ 0 ] == form_name)
	  code = code + ' ' + dc_main_onformsubmit[ i ][ 1 ];

  if (code != '')
	{ eval(code);
	}

  return true;
}

function DC_Main_Trim(sString)
  {
    while (sString.substring(0,1) == ' ')
      {
        sString = sString.substring(1, sString.length);
      }

    while (sString.substring(sString.length-1, sString.length) == ' ')
      {
        sString = sString.substring(0,sString.length-1);
      }
   return sString;
 }


function DC_RNG_Add_Person(form_name)
  {             
    var f = document.forms[ form_name ];
                    
    if (! f) return;
                  
    var person = DC_Main_Trim(f.elements[ 'edit[form][PE_INPUT]' ].value);
                    
    if (person == '') return;
            
    element = f.elements[ 'edit[form][PE][]' ];
     
    if (document.all)
      position = element.length;
    else
      position = null;
   
    var entry = document.createElement('option');
    entry.value = person;
    entry.text  = person;
    entry.selected = true;

    element.add(entry, position);
 
    f.elements[ 'edit[form][PE_INPUT]' ].value = '';
  }


