if( typeof printerFriendlyFormatNeeded == "undefined" )
  printerFriendlyFormatNeeded=false;
if( printerFriendlyFormatNeeded )
  printerFriendlyFormat=true;

if( typeof printerFriendlyFormat == "undefined" )
  printerFriendlyFormat=false;

function createLayersFieldsInCurrentForm(lay){ //Netscape Only
  var lastElmtName = '';
  for(var j=0 ; j<lay.document.forms[0].elements.length ; j++){
    var elmt = lay.document.forms[0].elements[j];
    if( elmt.type.toLowerCase() == 'file' ){}
    else if( elmt.name!=lastElmtName  && elmt.name.length>0 )
      document.write('<input type="hidden" name="'+elmt.name+'" value=""></input>');
    lastElmtName = elmt.name;
  }
}

function copyValueOfLayersInCurrentForm(){ //Netscape Only
  for(var i=0 ; i<tlLayers.length ; i++){
    var lay = eval('document.layers.'+tlLayers[i]);
    for(var j=0 ; j<lay.document.forms[0].elements.length ; j++){
      var elefrom = lay.document.forms[0].elements[j];
      if( elefrom.type.toLowerCase()=='file' ){
      // 2DO
      }
      else{
        var eleto = eval('document.forms[0].'+elefrom.name);
        if( !eleto ){
          alert('No submited : '+elefrom);
        }
        else
          if( elefrom.type.toLowerCase()=='select-one')
            eleto.value = elefrom.options[elefrom.selectedIndex].value;
            else
              if( elefrom.type.toLowerCase()=='select-multiple'){
                eleto.value = '';
                for(var k=0 ; k <elefrom.options.length ; k++)
                  if( elefrom.options[k].selected && elefrom.options[k].value.length>0 )
                    if( eleto.value=='' )
                      eleto.value = elefrom.options[k].value;
                    else
                      eleto.value += ', '+elefrom.options[k].value;
              }
              else
                if( elefrom.type.toLowerCase()=='radio' || elefrom.type.toLowerCase()=='checkbox' ){
                  if( elefrom.checked )
                    eleto.value = elefrom.value;		
                }
          else
            eleto.value = elefrom.value;
      }
    }
  }
}

function tlAddToOnSubmit(str){
  if( document.forms[0].onsubmit ){
    var onsub = document.forms[0].onsubmit.toString();
    var onsubIndex1 = onsub.indexOf('{')+1;
    var onsubIndex2 = onsub.lastIndexOf('}');
    onsub = onsub.substring(onsubIndex1, onsubIndex2);
    document.forms[0].onsubmit = new Function('event', str+onsub);
  }
  else
    document.forms[0].onsubmit = new Function('event', str+'return true;');
}

function tlAddToOnLoad(str){
  if( window.onload ){
    var onsub = window.onload.toString();
    var onsubIndex1 = onsub.indexOf('{')+1;
    var onsubIndex2 = onsub.lastIndexOf('}');
    onsub = onsub.substring(onsubIndex1, onsubIndex2);
    window.onload = new Function('event', str+onsub);
  }
  else
    window.onload = new Function('event', str+'return true;');
}

var tlGroupName;
var tlGroupNames=new Array();
var tlTitles;
var tlGroupTitles=new Array();
var tlTheme;
var tlLayerNumber;
var tlUseDivs=true;
var tlPath='document.getElementById(\'';
var tlEndPath='\')';
var tlGetHeight = 'offsetHeight';
var tlLayers = new Array();
var eolString = '#EOL#';
var tlSetVisible = 'visibility="visible"';
var tlSetHidden = 'visibility="hidden"';

if(document.layers){ // for NS 4
  tlUseDivs=false;
  tlPath='document.';
  tlEndPath='';
  tlGetHeight='clip.height';
}

if(document.all){ // for IE 4
  tlPath='document.all.';
  tlEndPath='';
}

function getTitlesObject(titles){
  var titlesObject = {};
  titlesObject.titles = [];
  titlesObject.titlesLines = [];
  titlesObject.titlesLines[0] = [];
  for(var i = 0 ; i < titles.length ; i++){
    if(titles[i] == eolString)
      titlesObject.titlesLines[titlesObject.titlesLines.length] = [];
    else{
      titlesObject.titles[titlesObject.titles.length] = titles[i];
      titlesObject.titlesLines[titlesObject.titlesLines.length-1][titlesObject.titlesLines[titlesObject.titlesLines.length-1].length] = titles[i];
    }
  }
  return titlesObject;
}

function beginTabedLayers(groupName, titlesArray, theme, optionalMargin){
  tlGroupName = groupName;
  tlGroupNames = tlGroupNames.concat(groupName);

  if( titlesArray[titlesArray.length-1]=='' )
    titlesArray = titlesArray.slice(0, -1);

  var titlesObject = getTitlesObject(titlesArray);
  tlTitles = titlesObject.titles;
  tlGroupTitles = tlGroupTitles.concat(new Array(titlesObject.titles));
  tlLayerNumber=0;
	
  tlTheme = (theme!='Ice' ? 'Sun' : 'Ice');

  if( ! printerFriendlyFormat ){
    if( tlUseDivs )
      document.write('<div id="'+tlGroupName+'"></div>');
    else
      document.write('<a name="'+tlGroupName+'"></a>');
    generateTabsMenuHere(titlesObject, 0, tlTheme, tlGroupName);
  }
}

function getTitleHtml(label){
  return getTabsMenuHtml([label], -1, 'Ice', '_title', ['#']);
}

function generateTitleHere(label){
  document.write( getTitleHtml(label) );
}

function getSubtitleHtml(label){
  return getTabsMenuHtml([label], 0, tlTheme, '_stitle', ['#']);
}

function generateSubtitleHere(label){
  document.write( getSubtitleHtml(label) );
}

function getSubtitleWithMarginHtml(label){
  return '<table width=100%><td>&nbsp;</td><td width=100%>' + getSubtitleHtml( label ) + '</td><td>&nbsp;</td></table>';
}

function generateSubtitleWithMarginHere(label){
  document.write( getSubtitleWithMarginHtml(label) );
}

function getTabsMenuLineHtml(labels, selectedIndex, theme, groupName, optionalLinks, base, displayBar){
  if( ! groupName )
    groupName = '__SectionMenu__';

  var selected = groupName+selectedIndex;

  if( !optionalLinks )
    eval(groupName+'_Selected'+'="'+selected+'";');

  if( tlUseDivs && !printerFriendlyFormat && !optionalLinks ){
    var link=' ondblclick="javascript:this.onclick();" onClick="';
    var endLink='';
  }
  else{
    var link='><a class="tabsMenu" href="';
    var endLink='</a>';
  }

  var blankImg = '<img src="'+tlPtPath+'" border=0 height="1" width="1">';
  var celsToSpan = labels.length*2-1;

  var html='<table cellpadding="0" cellspacing="1"><tr><td><table cellspacing="0" cellpadding="0" border="0">'+
	'<tr><td width="1" rowspan="3" class="border">'+blankImg+'</td>'+
	'<td height="1" colspan="'+celsToSpan+'" class="border">'+blankImg+'</td>'+
	'<td width="1" rowspan="3" class="border">'+blankImg+'</td>'+
	'</tr>'+
	'<tr>';

  for(var i=0 ; i<labels.length ; i++){
    var content;
    if( optionalLinks )
      if( optionalLinks[i+base]=='#' || i+base==selectedIndex )
        content = '>&nbsp;'+labels[i]+'&nbsp;';
      else
        content = link+optionalLinks[i+base]+'">&nbsp;'+ labels[i]+'&nbsp;'+endLink;
    else
      if( printerFriendlyFormat )
        if( i+base==selectedIndex )
          content = '>&nbsp;'+labels[i]+'&nbsp;';
        else
          if( tlUseDivs )
            content = link+'#'+groupName+(i+base)+'">&nbsp;'+ labels[i]+'&nbsp;'+endLink;
          else
            content = link+'javascript:scrollTo(document.anchors.'+groupName+(i+base)+'.x, document.anchors.'+groupName+(i+base)+'.y-30)">&nbsp;'+ labels[i]+'&nbsp;'+endLink; // because NS4 reload the last save document on anchor click (problem with refresh)
      else
        content = link+'javascript:selectThisTab(\''+groupName+'\', \''+groupName+(i+base)+'\', \''+theme+'\');">&nbsp;'+ labels[i]+'&nbsp;'+endLink;

    var styleClass = 'tab'+theme;

    if( (printerFriendlyFormat || tlUseDivs || groupName=='_stitle' || optionalLinks) && i+base==selectedIndex )
      styleClass = 'tabSelected';
    if( groupName=='_title' )
      styleClass = 'tabTitle';

    html += '<td rowspan="1" align="center" valign="middle" nowrap><div id="B__'+groupName+(i+base)+'" class="'+styleClass+'"'+content+'</div></td>';

    if( i != labels.length-1 )
      html += '<td rowspan="1" width="1"class="border">'+blankImg+'</td>';
  }

  html += '</tr>';

  html += '<tr><td height="1" colspan="'+celsToSpan+'" class="border">'+blankImg+'</td></tr>'

  html += '</table></td><td width="100%" align="right">'

  if( groupName == "main" ) {
    html += '<span class="rouge">Saisissez/modifiez les informations suivantes :&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>'
  }
  else {
    html += '<span class="rouge">Les informations qui suivent sont-elles exactes ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>'
  }

  html += '</td></tr></table>';
  return html;
}

function getTabsMenuHtml(labels, selectedIndex, theme, groupName, optionalLinks){
  if(!labels.titlesLines)
    labels = getTitlesObject(labels);
  var html = '';
  var base = 0;
  for (var i = 0 ; i < labels.titlesLines.length ; i++){
    html += getTabsMenuLineHtml(labels.titlesLines[i], selectedIndex, theme, groupName, optionalLinks, base, i == labels.titlesLines.length-1);
    base += labels.titlesLines[i].length;
  }
  return html;
}

function generateTabsMenuHere(labels, selectedIndex, theme, groupName, optionalLinks){
	if(!labels.titles)
		labels = getTitlesObject(labels);
	document.write( getTabsMenuHtml(labels, selectedIndex, theme, groupName, optionalLinks) );
}

function selectThisTab(_groupName, _tabToSelect, _theme){
  if( eval(_groupName+'_Selected'+'=="'+_tabToSelect+'"') )
    return;
  if(tlUseDivs){
    eval(tlPath+'B__'+eval(_groupName+'_Selected')+tlEndPath+'.className="tab'+_theme+'"');
    eval(tlPath+'B__'+_tabToSelect+tlEndPath+'.className="tabSelected"');
		
    eval(tlPath+_tabToSelect+tlEndPath+'.style.'+tlSetVisible);
    eval(tlPath+eval(_groupName+'_Selected')+tlEndPath+'.style.'+tlSetHidden);
  }
  else{
    eval(tlPath+eval(_groupName+'_Selected')+'__S.visibility="hide"');
    eval(tlPath+'B__'+eval(_groupName+'_Selected')+'.visibility="show"');
    eval(tlPath+'B__'+_tabToSelect+'.visibility="hide"');
    eval(tlPath+_tabToSelect+'__S.visibility="show"');
		
    eval(tlPath+eval(_groupName+'_Selected')+'.visibility="hide"');
    eval(tlPath+_tabToSelect+'.visibility="show"');
  }	
  eval(_groupName+'_Selected'+'="'+_tabToSelect+'";');
}




function beginLayer(){
  if( tlUseDivs || printerFriendlyFormat ){
    if( !printerFriendlyFormat )
      document.write('<style>#'+tlGroupName+tlLayerNumber+'{position:absolute;visibility:'+(tlLayerNumber==0?'visible':'hidden')+'}</style>');
    else{
      document.write('<a name="'+tlGroupName+tlLayerNumber+'"></a>');
      generateTabsMenuHere(tlTitles, tlLayerNumber, tlTheme, tlGroupName);
    }
    document.write('<div id='+tlGroupName+tlLayerNumber+' class="layer'+tlTheme+'">');
    if( !tlUseDivs )
      document.write('<table width=100% cellspacing="0" cellpadding="0" border="0" class="layer'+tlTheme+'"><td>');
  }
  else{
    tlAddToOnLoad('updateLayerContent(document.'+tlGroupName+tlLayerNumber+');');
    document.write('<nolayer>');
  }
}

function endLayer(){
  if( tlUseDivs || printerFriendlyFormat ){
    document.write('</div>');
    if( !tlUseDivs )
      document.write('</td></table>');
    if( printerFriendlyFormat )
      document.write('<br>');
  }
  else
    createLayersFieldsInCurrentForm(eval('document.'+tlGroupName+(tlLayerNumber)));
  tlLayerNumber++;
}

function finalizeLayerTabs(){
  if( printerFriendlyFormat )
    return;
  if( tlUseDivs )
    for(var k=0 ; k<tlGroupNames.length ; k++)
      tlAddToOnLoad(tlPath+tlGroupNames[k]+'_Compensator'+tlEndPath+'.innerHTML = "<img src='+tlPtPath+' border=0 height='+getHigherLayer(k)+' width=1>";');
  else{
    for(var k=0 ; k<tlGroupNames.length ; k++){
      var xlay=eval(tlPath+tlGroupNames[k]+'_Compensator.pageX');
      var ylay=eval(tlPath+tlGroupNames[k]+'_Compensator.pageY');
      var wlay=eval(tlPath+tlGroupNames[k]+'_Compensator.clip.width');
      for(var i=0 ; i < tlGroupTitles[k].length ; i++){
        //generation of the selected layers
        var x=eval(tlPath+'B__'+tlGroupNames[k]+i+'.pageX');
        var y=eval(tlPath+'B__'+tlGroupNames[k]+i+'.pageY');
        document.write('<layer id="'+tlGroupNames[k]+i+'__S" top='+y+' left='+x+' class="tabSelected" visibility=hidden>&nbsp;'+tlGroupTitles[k][i]+'&nbsp;</layer>');
        // repositioning of the layers
        var lay = eval(tlPath+tlGroupNames[k]+i);
        lay.top = ylay;
        lay.left = xlay;
        lay.clip.width = wlay;
        lay.visibility = (i==0?'show':'hidden');
      }
      eval(tlPath+'B__'+eval(tlGroupNames[k]+'_Selected')+'.visibility="hide"');
      eval(tlPath+eval(tlGroupNames[k]+'_Selected')+'__S.visibility="show"');
    }
  }
  if( !tlUseDivs )
    tlAddToOnSubmit('copyValueOfLayersInCurrentForm();');
}

function endTabedLayers(){
  if( !printerFriendlyFormat )
//    document.write('<div id="'+tlGroupName+'_Compensator" class="layerHide"><table width=100% height='+getHigherLayer(tlGroupNames.length-1)+'><tr><td>&nbsp;</td></tr></table></div>');
    document.write('<div id="'+tlGroupName+'_Compensator" class="layerHide"><table width=100% height='+getHigherLayer(tlGroupNames.length-1)+'><tr><td>&nbsp;</td></tr></table></div>');
//    document.write('<div id="'+tlGroupName+'_Compensator" class="layerHide">&nbsp;</div>');
}

function getHigherLayer(_groupNameIndex){
  var higher = 0;
//  for(var i=0 ; i<tlGroupTitles[_groupNameIndex].length ; i++)
//    higher=Math.max(higher, eval(tlPath+tlGroupNames[_groupNameIndex]+i+tlEndPath+'.'+tlGetHeight));
//alert('higher : ' + higher);
  return higher;
}


