// $Id: mlang_tab.js,v 1.6 2008-01-05 20:39:59 patrick Exp $

var MLANG_TAB_IDX=0;
var MLANG_TAB_INFO=new Array;

function mlang_tab_show (el)
{
 el.className='mlangtabactive';
 document.getElementById(el.id+'_content').style.display='';
}

function mlang_tab_hide (el)
{
 el.className='';
 document.getElementById(el.id+'_content').style.display='none';
}

function mlang_tab_onclick ()
{
 var id=this.id;
 if (this.className == 'mlangtabactive')
 {
  mlang_tab_hide(this);
 } else
 {
  mlang_tab_show(this);
 }
 this.blur();
 return false;
}

function mlang_tab_onclick_tout ()
{
 var tabinfo=MLANG_TAB_INFO[this.tabinfo];
 for(var i=0;i<tabinfo.tabs.length;i++)
 {
  mlang_tab_show(document.getElementById(tabinfo.tabs[i]));
 }
 this.blur();
 return false;
}

function mlang_tab_onclick_rien ()
{
 var tabinfo=MLANG_TAB_INFO[this.tabinfo];
 for(var i=0;i<tabinfo.tabs.length;i++)
 {
  mlang_tab_hide(document.getElementById(tabinfo.tabs[i]));
 }
 this.blur();
 return false;
}

function mlang_tab_onclick_cross ()
{
 mlang_tab_hide(document.getElementById(this.tabid));
 return false;
}

function mlang_tab_onmouseover ()
{
 document.getElementById(this.id+'_content').style.display='';
 return true;
}

function mlang_tab_onmouseout ()
{
 if (this.className != 'mlangtabactive') document.getElementById(this.id+'_content').style.display='none';
 return true;
}

function mlang_tab_add_lang ()
{
 var tabinfo=MLANG_TAB_INFO[this.tabinfo];
 var lang=this.options[this.selectedIndex].value;
 var langname=this.options[this.selectedIndex].text;
 var newcontent=tabinfo.content_newlang;

 if (lang=='0') return;

 var newtabid='tab_'+lang;

 // Create new tab
 var lt=document.getElementById(tabinfo.tabs[tabinfo.tabs.length-1]); // last true tab
 var nt=lt.cloneNode(1);
 nt.id=newtabid;
 tabinfo.tabs.push(newtabid);
 nt.firstChild.firstChild.data=lang;
 nt.firstChild.title=langname;
 lt.parentNode.insertBefore(nt,lt.nextSibling);

 // Remove lang from select
 this.options[this.selectedIndex]=null;

 // Add lang to list of all lang
 var hl=document.getElementById(tabinfo.hidden_lang);
 hl.value=hl.value+' '+lang;

 // Create content div from model
 var pd=document.getElementById(tabinfo.tabs[0]+'_content'); // we take first div as example
 var nd=pd.cloneNode(1);
 var imgs=nd.getElementsByTagName('img');
 for(var j=0;j<imgs.length;j++)
 {
  imgs[j].parentNode.removeChild(imgs[j]);
 }
 nd.id=newtabid+'_content';
 (nd.getElementsByTagName('span'))[0].id=newtabid+'_cross';
 var t=new String(tabinfo.content_newlang);
 (nd.getElementsByTagName('h3'))[0].firstChild.data=t.replace('##LANG##',langname);
 mlang_tab_reset_form_fields(nd,tabinfo.content_firstlang,lang);

 pd.parentNode.appendChild(nd);

 // Activate & select new tab
 mlang_tab_activate(newtabid,lt.tabinfo);
 nt.onclick();
}

function mlang_tab_reset_form_fields (d,oldlang,newlang)
{
 var lcoldlang=String(oldlang).toLowerCase();
 var lcnewlang=String(newlang).toLowerCase();
 var fi=d.getElementsByTagName('input');
 for(var i=0;i<fi.length;i++)
 {
  fi[i].value='';
  fi[i].name=String(fi[i].name).replace(oldlang,newlang);
  fi[i].className=String(fi[i].className).replace('forms_notify_change','');
  fi[i].id=String(fi[i].id).slice(0,-3)+lcnewlang;
  paint_changes_add_element(fi[i]);
 }
 fi=d.getElementsByTagName('textarea');
 for(var i=0;i<fi.length;i++)
 {
  fi[i].value='';
  fi[i].name=String(fi[i].name).replace(oldlang,newlang);
  fi[i].className=String(fi[i].className).replace('forms_notify_change','');
  fi[i].id=String(fi[i].id).slice(0,-3)+lcnewlang;
  paint_changes_add_element(fi[i]);
 }
 fi=d.getElementsByTagName('label');
 for(var i=0;i<fi.length;i++)
 {
  fi[i].className=String(fi[i].className).replace('forms_notify_change','');
  fi[i].setAttribute('for',String(fi[i].getAttribute('for')).slice(0,-3)+lcnewlang);
 }
}

function mlang_tab_activate (tabid,idx)
{
  var et=document.getElementById(tabid);
  var ec=document.getElementById(tabid+'_content');
  var eb=document.getElementById(tabid+'_cross');

  et.tabinfo=idx;
  et.className='';
  ec.style.display='none';
  et.onclick=mlang_tab_onclick;
  et.onmouseover=mlang_tab_onmouseover;
  et.onmouseout=mlang_tab_onmouseout;

  eb.tabid=tabid;
  eb.onclick=mlang_tab_onclick_cross;
}

function mlang_tab_register (tabs,tabtout,tabrien,select_newlang,content_newlang,content_firstlang,hidden_lang)
{
 if (! tabs[tabs.length-1]) { tabs.length=tabs.length-1; }

 var tabinfo=new Object;
 tabinfo.tabidx=MLANG_TAB_IDX;
 tabinfo.tabs=tabs;
 tabinfo.content_newlang=content_newlang;
 tabinfo.content_firstlang=content_firstlang;
 tabinfo.hidden_lang=hidden_lang;
 MLANG_TAB_INFO[MLANG_TAB_IDX]=tabinfo;

 for(var i=0;i<tabs.length;i++)
 {
  if (tabs[i]) mlang_tab_activate(tabs[i],MLANG_TAB_IDX);
 }

 if (tabtout)
 {
  var et=document.getElementById(tabtout)
  et.tabinfo=MLANG_TAB_IDX;
  et.onclick=mlang_tab_onclick_tout;
  et.onmouseover=function () { return true; }
  tabinfo.tabtout=et;
 }

 if (tabrien)
 {
  var et=document.getElementById(tabrien);
  et.tabinfo=MLANG_TAB_IDX;
  et.onclick=mlang_tab_onclick_rien;
  et.onmouseover=function () { return true; }
  tabinfo.tabrien=et;
 }

 if (select_newlang)
 {
  var et=document.getElementById(select_newlang);
  et.tabinfo=MLANG_TAB_IDX;
  et.onchange=mlang_tab_add_lang;
 }
 MLANG_TAB_IDX++;
 return tabinfo;
}

function mlang_tab_default ()
{
 for(var i=0;i<arguments.length;i++)
 {
  if (arguments[i]) document.getElementById(arguments[i]).onclick();
 }
}
