var bfSmarty = {};
bfSmarty.hHover = null;
bfSmarty.hoverInit = function(){
  return;
}
bfSmarty.hoverOn = function(oCaller,sClass){
  return;
}
bfSmarty.hoverOff = function(oCaller,sClass){
  return;
}
bfSmarty.cmbOpen = function(oTbl,oCaller,oInput,bCloseOnClick){
  if (typeof(bCloseOnClick) == 'undefined'){
    var bCloseOnClick = 1;
  }
  if (typeof(oCaller) == 'undefined'){
    oCaller = oTbl;
  }
  if (typeof(oInput) == 'undefined' && typeof(sel_input) != 'undefined'){
    oInput = sel_input;
  }
  if (bIE && document.selection && typeof(oInput) != 'undefined' && oInput && oInput.tagName == "TEXTAREA"){
    oInput.focus();
    var oRange = document.selection.createRange();
    var oStored = oRange.duplicate();
    oStored.moveToElementText(oInput);
    oStored.setEndPoint('EndToEnd',oRange);
    oInput.selectionStart = oStored.text.length - oRange.text.length;
    oInput.selectionEnd   = oInput.selectionStart + oRange.text.length;
  }
  var aDivs  = oTbl.getElementsByTagName('div');
  var bOn = 0;
  bOn = (!aDivs[0].style.display) ? 1 : 0;
  if (bOn){
    aDivs[0].style.display = 'none';
  }else{
    aDivs[0].style.display = '';
    var aoScroll;
    if ((aoScroll = bfPage.getElementsByClassName(aDivs[0],'scroll_cntrl')).length > 0){
      for (var i=0;i<aoScroll.length;i++){
        bfPage.fixHScroll(aoScroll[i]);
      }
    }
    bfPage.layerAutoClose.openLayer(aDivs[0],oCaller,bfSmarty.cmbOpen,[oTbl,oCaller,undefined,bCloseOnClick],bCloseOnClick);
  }
}
bfSmarty.cmbOpenSub = function(oTbl,sKey,oCaller,bCloseOnClick){
  if (typeof(bCloseOnClick) == 'undefined'){
    var bCloseOnClick = 1;
  }
  if (typeof(oCaller) == 'undefined'){
    oCaller = oTbl;
  }
  var aDivs = oTbl.getElementsByTagName('div');
  for (var x=0; x<aDivs.length; x++){
    if (sKey != null && aDivs[x].title == sKey && aDivs[x].style.display == 'none'){
      aDivs[x].style.display = '';
      bfPage.layerAutoClose.openLayer(aDivs[x],oCaller,bfSmarty.cmbOpenSub,[oTbl,null,oCaller,bCloseOnClick],bCloseOnClick);
    }else if (x > 0 || !bCloseOnClick){
      aDivs[x].style.display = 'none';
    }
  }
}
bfSmarty.cmbChange = function(oCaller){
  oSel = jsHelper.getTable(jsHelper.getTable(oCaller).parentNode).rows[0];
  sKey = oCaller.getElementsByTagName('img')[0].alt;
  oSel.cells[0].innerHTML = oCaller.cells[0].innerHTML;
  oSel.cells[1].innerHTML = oCaller.cells[1].innerHTML;
  return sKey;
}
bfSmarty.insertPlaceholder = function(table,txt,sPH){
  if (!document.selection || typeof(txt.selectionStart) != 'undefined'){
    var iPos = txt.selectionStart;
    txt.value = txt.value.substring(0,txt.selectionStart) + sPH + txt.value.substring(txt.selectionEnd);
    txt.selectionStart = iPos + sPH.length;
    txt.selectionEnd = txt.selectionStart;
    var iPos = txt.selectionStart;
  }else{
    txt.value += sPH;
    var iPos = txt.value.length;
  }
  if (document.selection){
    var oRange = txt.createTextRange();
    oRange.moveStart('character',iPos);
    oRange.collapse();
    oRange.select();
  }
  txt.focus();
  bfPage.layerAutoClose.closeOpenLayers(0,1);
}
bfSmarty.changeImgbox = function(oCaller){
  var oImgTbl = jsHelper.getTable(oCaller);
  var oTbl = jsHelper.getTable(oImgTbl.parentNode);
  var oCell = jsHelper.getTBody(oTbl).rows[0].cells[0];
  var oInp = oTbl.getElementsByTagName('input')[0];
  var aTmp = oCaller.alt.split('/');
  oCell.innerHTML = aTmp[aTmp.length-1];
  var oImgs = oImgTbl.getElementsByTagName('img');
  for(var i=0; i<oImgs.length; i++){
    if (oImgs[i].alt.search(oInp.value) != -1){
      jsHelper.setClass(oImgs[i],0,'data_entry_hover');
    }
  }
  if (oCaller.nodeName == 'IMG'){
    jsHelper.setClass(oCaller,1,'data_entry_hover');
  }
  oInp.value = aTmp[aTmp.length-2]+'/'+aTmp[aTmp.length-1];
  if (typeof(oInp.onchange) != 'undefined' && oInp.onchange != null){
    oInp.onchange();
  }
}
bfSmarty.resetImgbox = function(oCaller){
  var oImgTbl = jsHelper.getTable(oCaller);
  var oTbl = jsHelper.getTable(oImgTbl.parentNode);
  var oInp = oTbl.getElementsByTagName('input')[0];
  var oImgs = oImgTbl.getElementsByTagName('img');
  var oCell = oTbl.rows[0].cells[0];
  for(var i=0; i<oImgs.length; i++){
    oImgs[i].className = oImgs[i].className.replace(/ data_entry_hover/,'');
  }
  oCell.innerHTML = '';
  oInp.value = '';
  if (typeof(oInp.onchange) != 'undefined' && oInp.onchange != null){
    oInp.onchange();
  }
}
bfSmarty.bfDate = function (sDate,bRetNull){
  if (typeof(bRetNull) == 'undefined'){
    bRetNull = 0;
  }
  return (sDate=="0000-00-00" || sDate=="0000-00-00 00:00:00" || sDate=="00.00.0000") ? (bRetNull ? "" : _now) : jsHelper.dateOut(sDate);
}

bfSmarty.bfPhone = function(sNumber){
  var hRet = {
    'land':'',
    'prefix':'',
    'number':''
  };
  if (typeof(sNumber) == 'undefined'){
    sNumber = '';
  }
  var aFrag = sNumber.split(' ');
  for(var i=0; i<aFrag.length; i++){
    if (i == 0){
      hRet['land']+= jsHelper.trim(aFrag[i].replace(/\+/,''));
    }else if(i == 1){
      hRet['prefix']+= jsHelper.trim(aFrag[i]);
    }else{
      hRet['number']+= jsHelper.trim(aFrag[i]);
    }
  }
  return hRet;
}
bfSmarty.setOptions = function(oCmb,hValues){
  var sKey = '';
  while(oCmb.options.length){
    oCmb.removeChild(oCmb.options[0]);
  }
  for (sKey in hValues){
    var oOpt = new Option(hValues[sKey],sKey,false,false);
    oCmb.options[oCmb.length] = oOpt;
  }
}
bfSmarty.cmbGetText = function(oCmb){
  return oCmb.options[oCmb.selectedIndex].text;
}
bfSmarty.switchPwdFld = function(oImg,sFrm,sFld){
  if (oImg.src.search(/eye\.gif/) == -1){
    oImg.src = oImg.src.replace(/eye_off\.gif/,'eye.gif');
  }else{
    oImg.src = oImg.src.replace(/eye\.gif/,'eye_off.gif');
  }
  this.switchPwdFldType(document[sFrm][sFld]);
}
bfSmarty.switchPwdFldType = function(oFld){
  var oFrm = oFld;
  while(oFrm != null && oFrm.tagName != 'FORM'){
    oFrm = oFrm.parentNode;
  }
  var oInput = document.createElement('input');
  var sOldName = oFld.name;
  if (!bIE){
    oFld.name = 'temporary_Field';
  }
  oInput.setAttribute('type',(oFld.type == 'text' ? 'password' : 'text'));
  oInput.name = sOldName;
  oInput.className = oFld.className;
  oInput.disabled = oFld.disabled;
  oInput.setAttribute('name',sOldName);
  oInput.setAttribute('value',oFld.value);
  if (bIE){
    var oParentNode = oFld.parentNode;
    jsHelper.rmvInput(oFrm,sOldName);
    oParentNode.appendChild(oInput);
    if (typeof(oFrm[sOldName]) == 'undefined'){
      oFrm[sOldName] = oInput;
    }
  }else{
    oFld.parentNode.replaceChild(oInput,oFld);
    delete oFld;
  }
}
bfSmarty.hidePassword = function(oFld){
  function doWork(){
    oFld.value = oFld.lang;
    bfSmarty.switchPwdFldType(oFld);
  }
  oFld.setAttribute('lang',oFld.value);
  oFld.value = '-wait-';
  setTimeout(doWork,1000);
}
bfSmarty.usageUpd = function(oTbl,hUsage){
  var sKey;
  var bMlt;
  var hChk = new Object();
  hChk['tr'] = oTbl.getElementsByTagName('tr')[0].getElementsByTagName('tr');
  hChk['td'] = oTbl.getElementsByTagName('tr')[0].getElementsByTagName('td');
  var hTgt = new Object();
  for (sType in {'tr':1,'td':1}){
    for (var i=0;i<hChk[sType].length;i++){
      if (typeof(hChk[sType][i].lang) != 'undefined' && hChk[sType][i].lang.indexOf('usage') == 0){
        sKey = hChk[sType][i].lang.replace(/^usage\|?/g,'');
        if (sKey.length == 0){
          sKey = 'tmp';
        }
        hTgt[sKey] = hChk[sType][i];
      }
    }
  }
  var sTmp;
  for (sTmp in hUsage){
    bMlt = (typeof(hUsage[sTmp]) == 'object') ? 1 : 0;
    break;
  }
  if (!bMlt){
    var hTmp = new Object();
    hTmp['tmp'] = new Object();
    for (sTmp in hUsage){
      hTmp['tmp'][sTmp] = hUsage[sTmp];
    }
    delete hUsage;
    hUsage = hTmp;
  }
  for (sKey in hUsage){
    if (typeof(hTgt[sKey]) != 'undefined'){
      if (hTgt[sKey].nodeName == 'TR'){
        hTgt[sKey].cells[1].innerHTML = hUsage[sKey].used.toString() + '/';
      }else if (hTgt[sKey].nodeName == 'TD'){
        hTgt[sKey].innerHTML = hTgt[sKey].innerHTML.replace(/^\s*[0-9]+\//,hUsage[sKey].used.toString() + '/');
      }
    }
  }
}
bfSmarty.isEnabled = function(oCaller){
  if (   (oCaller.tagName == 'TABLE' && oCaller.getElementsByTagName('tr')[0].className.indexOf('form_button_off') >= 0)
      || (oCaller.tagName == 'IMG' && oCaller.className && oCaller.className.indexOf('hand') < 0)){
    return 0;
  }
  return 1;
}
bfSmarty.truncate = function(sStringIn,iLength,sEtc,bBreak,bMiddle,bPopup){
  var sStringIn = (typeof(sStringIn) != 'undefined')  ? sStringIn : '';
  var iLength   = (typeof(iLength)   != 'undefined')  ? iLength   : 80;
  var sEtc      = (typeof(sEtc)      != 'undefined')  ? sEtc      : '...';
  var bBreak    = (typeof(bBreak)    != 'undefined')  ? bBreak    : 0;
  var bMiddle   = (typeof(bMiddle)   != 'undefined')  ? bMiddle   : 0;
  var bPopup    = (typeof(bPopup)    != 'undefined')  ? bPopup    : 0;

  var sString = sStringIn;
  if (iLength == 0){
    return '';
  }
  if (sString.length > iLength){
    iLength -= sEtc.length;
    if (!bBreak && !bMiddle){
      sString = sString.substr(0,iLength+1).replace(/\s+?(\S+)?$/,'');
    }
    if (!bMiddle){
      sString = sString.substr(0,iLength)+sEtc;
    }else{
      sString = sString.substr(0,iLength/2)+sEtc+sString.substr(sString.length-(iLength/2));
    }
    if (bPopup){
      sString = '<span onmouseout="bfInfo.close();" onmouseover="bfInfo.show(this,\'info\',\'_a;'+sStringIn.replace(/'|"/g,'\\\'')+'\');">'+sString+'</span>';
    }
  }
  return sString;
}
bfSmarty.selectionCreateLayer = function(oCntr,hData,sName){
  if (typeof(sName) == 'undefined'){
    var sName = null;
  }
  var oDiv = bfPage.createElement('div', {
    'className': 'selection_layer',
    'style':     {'zIndex':'2','display':'none','width':'180px'},
    'title':     (sName) ? sName : ''
  });
  oCntr.appendChild(oDiv);
  var oTbl = bfPage.createElement('table', {'className': 'table_plain','width': '100%'});
  var oTBdy = bfPage.createElement('tbody')
  oTbl.appendChild(oTBdy);
  oDiv.appendChild(oTbl);
  var sKey;
  var sEvent;
  for (sKey in hData){
    var hEntry = hData[sKey];
    var oTr = bfPage.createElement('tr');
    oTBdy.appendChild(oTr);
    if (typeof(hEntry['disabled']) == 'undefined' || hEntry['disabled'] == '0'){
      oTr.className = 'hand';
      if (hEntry['typ'] == 'folder'){
        sEvent = 'bfSmarty.cmbOpenSub(jsHelper.getTable(jsHelper.getTable(this).parentNode),\''+((sName) ? sName+'.' : '')+sKey+'\',this);';
      }else{
        if (typeof(hEntry['onclick']) != 'undefined'){
          sEvent = hEntry['onclick'];
        }else{
          sEvent = 'document.location=\'/'+_sid+'/'+_mod+'/'+hEntry['relurl']+'\';';
        }
      }
      jsHelper.setEvent(oTr,'onclick',sEvent);
    }
    jsHelper.setEvent(oTr,'onmouseover','bfSmarty.hoverOn(this);');
    jsHelper.setEvent(oTr,'onmouseout','bfSmarty.hoverOff(this);');
    var oTd = bfPage.createElement('td',
      {'width':'99%','className':'td_left_padding smallfont'+((hEntry['disabled'] == '1') ? ' disabled': '')},
      hEntry['name']);
    oTr.appendChild(oTd);
    var oTd = bfPage.createElement('td',{'width':'1%'});
    oTr.appendChild(oTd);
    var oImg = bfPage.createElement('img',{'src': _iconset+'main/'+((hEntry['typ'] == 'folder') ? 'pointer2_left' : (typeof(hEntry['info']) == 'undefined' || hEntry['info'] == '') ? 'blank' : 'info_ico')+'.gif'});
    oTd.appendChild(oImg);
    if (typeof(hEntry['info']) != 'undefined' && hEntry['info'].length > 0){
      jsHelper.setEvent(oImg,'onmouseover','bfInfo.show(this,\'info\',\''+hEntry['info'].replace(/'/g,'\\\'')+'\');');
    }
  }
  for (sKey in hData){
    if (hData[sKey]['typ'] == 'folder'){
      bfSmarty.selectionCreateLayer(oCntr,hData[sKey]['data'],((sName) ? sName+'.' : '')+sKey);
    }
  }
}
bfSmarty.selectionRefresh = function(sId,hData){
  var oCntr = document.getElementById(sId);
  oCntr.innerHTML = '';
  bfSmarty.selectionCreateLayer(oCntr,hData);
}


/*
// Problem bei folgender Funktion:
// die Zielbreite muss bekannt sein.
// alte Lösung: Container mit overflow: hidden; und tatsächlich fester Breite...
bfSmarty.cutTextByWidth = function(oSource, sThis){
  this.bInit         = true;
  this.sThis         = sThis;
  this.sText         = '';
  this.sOrigText     = '';
  this.sLastText     = 0;
  this.iLengthChange = 1;
  this.iLastWidth    = 0;
  this.bChanged      = false;
  this.bFinal        = false;
  this.oSource       = oSource;
  this.oElement      = undefined;
  this.oTextContainer = undefined;
  this.fctHdlFinished = undefined;

  this.destroy = function(){
    if (    typeof(this.oElement) != 'undefined'
         && document.getElementById(this.oElement.id) != null
         && this.oElement.id.match(/_cloned$/) ) {
      this.oElement.parentNode.removeChild(this.oElement);
    }
    eval("delete " + this.sThis + ";");
  }

  this.cutIt = function(){
    if ( this.bInit ) {
      if ( this.oSource.scrollWidth != 0 && this.oSource.scrollWidth <= parseInt(this.oSource.style.width.replace(/px/, '')) ) {
        if ( typeof(this.fctHdlFinished) == 'function' ) {
          this.fctHdlFinished(this.oSource);
        }
        this.destroy();
        return;
      }
      var oClone = this.oSource.cloneNode(true);
      oClone.id = oClone.id + '_cloned';
      oClone.style.position = 'absolute';
      oClone.style.top = '-500px';
      oClone.style.fontSize = jsHelper.getRealStyle(this.oSource,'font-size');
      oClone.style.fontFamily = jsHelper.getRealStyle(this.oSource,'font-family');
      document.getElementsByTagName('body')[0].appendChild(oClone);
      this.oElement = oClone;
      this.oTextContainer = this.oElement;
      if ( this.oTextContainer.getElementsByTagName('label').length > 0 ) {
        this.oTextContainer = this.oTextContainer.getElementsByTagName('label')[0];
      }
      if ( this.oTextContainer.hasChildNodes() && this.oTextContainer.firstChild.data ) {
        this.sOrigText = this.oTextContainer.firstChild.data.replace(/&nbsp;/g, ' ');
        this.sText = this.sOrigText + '...'
      } else {
        this.sOrigText = '';
        this.sText = '';
      }
      this.iLengthChange = this.sText.length;
      this.bInit = false;
    }
    var iNewLength;
    if (    ((   this.oElement.scrollWidth > this.oElement.clientWidth && this.oElement.scrollWidth != this.iLastWidth)
             || this.sLastText != this.sText)
         && this.iLengthChange >= 0.5 ) {
      this.sLastText = this.sText;
      this.iLengthChange = this.iLengthChange / 2;
      if ( this.oElement.scrollWidth > this.oElement.clientWidth && this.oElement.scrollWidth != this.iLastWidth ) {
        iNewLength = this.sText.length - Math.round(this.iLengthChange + 0.5);
      } else {
        iNewLength = this.sText.length + Math.round(this.iLengthChange + 0.5);
      }
      this.iLastWidth = this.oElement.scrollWidth;
      this.sText = this.sOrigText.substr(0, iNewLength - 3) + '...';
      if ( this.sText != this.sOrigText + '...' ) {
        this.oTextContainer.innerHTML = this.sText.replace(/&/g, '&amp;').replace(/</, '&lt;').replace(/ /g, '&nbsp;');
        this.bChanged = true;
      }
    } else if (    this.oElement.scrollWidth > this.oElement.clientWidth
                && this.iLengthChange < 0.5
                && !this.bFinal ) {
      this.sText = this.sOrigText.substr(0, this.sText.length - 4) + '...';
      this.oTextContainer.innerHTML = this.sText.replace(/&/g, '&amp;').replace(/</, '&lt;').replace(/ /g, '&nbsp;');
      this.bFinal = true;
    } else if ( this.bChanged ) {
      this.bChanged = false;
      if ( this.oElement.id != 'tobedeleted' ) {
        this.oElement.id = this.oSource.id;
//        addHoverEvent(this.oElement, this.oElement.id + '_error', this.sOrigText.replace(/&/g, '&amp;').replace(/</, '&lt;'));
        this.oElement.style.position = '';
        this.oElement.style.top = '';
        this.oSource.id = 'tobedeleted';
        if ( oParent = this.oSource.parentNode ) {
          oParent.replaceChild(this.oElement, this.oSource);
        }
        if ( document.getElementById('tobedeleted') != null ) {
          document.getElementById('tobedeleted').parentNode.removeChild(document.getElementById('tobedeleted'));
        }
      }
    } else {
      removeHoverEvent(this.oSource, this.oSource.id + '_error');
    }
    if ( this.bChanged ) {
      window.setTimeout(this.sThis + '.cutIt();', 0);
    } else {
      if ( typeof(this.fctHdlFinished) == 'function' ) {
        this.fctHdlFinished(this.oElement);
      }
      this.destroy();
    }
  }
}
// Beispielaufruf cutText::
var oCutText = new Array();
function testCutting(oCut){
  oCutText[0] = new bfSmarty.cutTextByWidth(oCut, "oCutText['0']");
  oCutText[0].cutIt();
}
*/
bfSmarty.jsSelect = {};
bfSmarty.jsSelect.aOpened = new Array();
bfSmarty.jsSelect.hValueCache = {};
bfSmarty.jsSelect.bLoading = 0;
bfSmarty.jsSelect.hSelected = {};
bfSmarty.jsSelect.hLang = {};
bfSmarty.jsSelect.enable = function(oInput,bOn){
  var bOn = bOn || 1;
  jsHelper.setClass(oInput.parentNode,!bOn,'disabled');
  jsHelper.enableEvent(oInput.parentNode,'onclick',bOn);
  oInput.disabled = (bOn) ? false : true;
  var aoImgs = oInput.parentNode.getElementsByTagName('img');
  aoImgs[aoImgs.length-1].src = _iconset+'main/js_cmb_arrow'+((bOn) ? '' : '_off')+'.gif';
}
bfSmarty.jsSelect.disable = function(oInput){
  bfSmarty.jsSelect.enable(oInput,0);
}
bfSmarty.jsSelect.setHeight = function(oInput,sHeight){
  var oCmb = jsHelper.getNodeTag(jsHelper.getNodeTag(oInput,'DIV').parentNode,'DIV');
  var divValues = jsHelper.getNextSibling(oCmb).getElementsByTagName('div')[0];
  divValues.style.height = sHeight;
}
bfSmarty.jsSelect.reset = function(oInput){
  bfSmarty.jsSelect.setText(oInput,'');
  bfSmarty.jsSelect.setValue(oInput,'');
  bfSmarty.jsSelect.setOptions(oInput,{});
  if (typeof(bfSmarty.jsSelect.hLang[oInput.name]) != 'undefined'){
    oInput.parentNode.parentNode.lang = bfSmarty.jsSelect.hLang[oInput.name];
  }
  if (typeof(bfSmarty.jsSelect.hValueCache[oInput.name]) != 'undefined'){
    delete(bfSmarty.jsSelect.hValueCache[oInput.name]);
  }
}
bfSmarty.jsSelect.setValue = function(oInput,sValue){
  oInput.value = sValue;
  var oCmb = jsHelper.getNodeTag(jsHelper.getNodeTag(oInput,'DIV').parentNode,'DIV');
  var divValues = jsHelper.getNextSibling(oCmb).getElementsByTagName('div')[0];
  if(divValues.childNodes.length){
    for(var i=0;i<divValues.childNodes.length;i++){
      if (sValue == divValues.childNodes[i].lang){
        if (typeof(bfSmarty.jsSelect.hSelected[oInput.name]) != 'undefined'){
          divValues.childNodes[bfSmarty.jsSelect.hSelected[oInput.name]].className = '';
        }
        bfSmarty.jsSelect.hSelected[oInput.name] = i;
        break;
      }
    }
  }
}
bfSmarty.jsSelect.setText = function(oInput,sText){
  var oCmb = jsHelper.getNodeTag(jsHelper.getNodeTag(oInput,'DIV').parentNode,'DIV');
  var divText = oCmb.getElementsByTagName('div')[1];
  divText.innerHTML = sText;
}
bfSmarty.jsSelect.setSelection = function(oCaller){
  var oCmb = jsHelper.getPreviousSibling(jsHelper.getNodeTag(jsHelper.getNodeTag(oCaller.parentNode,'DIV').parentNode,'DIV'));
  var oInput = oCmb.getElementsByTagName('input')[0];
  if (typeof(oInput.onchange) != 'undefined' && oInput.onchange){
    oInput.onchange();
  }
  bfSmarty.jsSelect.setValue(oInput,oCaller.lang);
  bfSmarty.jsSelect.setText(oInput,oCaller.innerHTML);
}
bfSmarty.jsSelect.setOptions = function(oInput,hValues){
  var oCmb = jsHelper.getNodeTag(jsHelper.getNodeTag(oInput,'DIV').parentNode,'DIV');
  var divValues = jsHelper.getNextSibling(oCmb).getElementsByTagName('div')[0];
  var divNewValues = document.createElement('div');
  divNewValues.className = divValues.className;
  if (typeof(divValues.style) != 'undefined' && typeof(divValues.style.height) != 'undefined'){
    divNewValues.style.height = divValues.style.height;
  }
  var sStyleDisplay = divValues.style.display;
  var sKey = '';
  var iCount = 0;
  for (sKey in hValues){
    var divNewValue = document.createElement('div');
    divNewValue.innerHTML = hValues[sKey];
    divNewValue.lang = sKey;
    divNewValues.appendChild(divNewValue);
    if (oInput.value == sKey){
      divNewValue.className = 'data_selected';
      bfSmarty.jsSelect.hSelected[oInput.name] = iCount;
    }
    jsHelper.setEvent(divNewValue,'onclick','bfSmarty.jsSelect.setSelection(this);bfSmarty.jsSelect.close();');
    jsHelper.setEvent(divNewValue,'onmouseover','bfSmarty.jsSelect.hoverOn(this)');
    jsHelper.setEvent(divNewValue,'onmouseout','bfSmarty.jsSelect.hoverOff(this)');
    iCount++;
  }
  divValues.parentNode.replaceChild(divNewValues,divValues);
  divNewValues.style.zIndex = 3;
  divNewValues.style.width = oCmb.clientWidth+'px';
  divNewValues.style.display = sStyleDisplay;
}
bfSmarty.jsSelect.click = function(oCaller){
  if (!bfSmarty.jsSelect.bLoading){
    var oCmb = jsHelper.getNodeTag(jsHelper.getNodeTag(oCaller,'DIV').parentNode,'DIV');
    if (bfSmarty.jsSelect.aOpened.length){
      bfSmarty.jsSelect.close();
    }else{
      bfSmarty.jsSelect.open(oCmb,oCaller);
    }
  }
}
bfSmarty.jsSelect.open = function(oCmb,oCaller){
  var divContainer = jsHelper.getNextSibling(oCmb);
  var divValues = divContainer.getElementsByTagName('div')[0];
  var oInput = oCmb.getElementsByTagName('input')[0];
  if (oCmb.lang){
    if (typeof(bfSmarty.jsSelect.hValueCache[oInput.name]) == 'undefined'){
      bfSmarty.jsSelect.bLoading = 1;
      var oImg = oCmb.getElementsByTagName('img')[0];
      oImg.src = _iconset+'main/loading.gif';
      function execLoader(){
        var oInput = oCmb.getElementsByTagName('input')[0];
        eval('bfSmarty.jsSelect.hValueCache[\''+oInput.name+'\'] ='+oCmb.lang);
        bfSmarty.jsSelect.setOptions(oInput,bfSmarty.jsSelect.hValueCache[oInput.name]);
        oImg.src = _iconset+'main/js_cmb_arrow.gif';
        bfSmarty.jsSelect.hLang[oInput.name] = oCmb.lang;
        oCmb.lang = '';
        var divContainer = jsHelper.getNextSibling(oCmb);
        bfSmarty.jsSelect.bLoading = 0;
        bfSmarty.jsSelect.aOpened.push(oCmb);
        divContainer.style.display = '';
        bfPage.fixHScroll(bfPage.getElementsByClassName(divContainer,'scroll_cntrl')[0]);
        bfPage.layerAutoClose.openLayer(divContainer,oCaller,bfSmarty.jsSelect.click,[oCaller]);
      }
      setTimeout(execLoader,100);
    }
  }else{
    bfSmarty.jsSelect.aOpened.push(oCmb);
    divContainer.style.display = '';
    bfPage.layerAutoClose.openLayer(divContainer,oCaller,bfSmarty.jsSelect.close);
    if(divValues.childNodes.length && typeof(divValues.childNodes[bfSmarty.jsSelect.hSelected[oInput.name]]) != 'undefined'){
      divValues.childNodes[bfSmarty.jsSelect.hSelected[oInput.name]].className = 'data_selected';
    }
  }
}
bfSmarty.jsSelect.close = function(){
  var oCmb;
  function enableEvent(){
    jsHelper.enableEvent(jsHelper.getFirstChild(oCmb),'onclick');
  }
  for (var i=0;i<bfSmarty.jsSelect.aOpened.length; i++){
    var oCmb = bfSmarty.jsSelect.aOpened[i];
    var divValues = jsHelper.getNextSibling(oCmb);
    divValues.style.display = 'none';
    window.setTimeout(enableEvent,100);
  }
  bfSmarty.jsSelect.aOpened = new Array();
}
bfSmarty.jsSelect.hoverOn = function(oCaller){
  if (oCaller.className.indexOf('data_selected') == -1){
    jsHelper.setClass(oCaller,1,'data_selected'); 
  }
}
bfSmarty.jsSelect.hoverOff = function(oCaller){
  if (oCaller.className.indexOf('data_selected') != -1){
    jsHelper.setClass(oCaller,0,'data_selected'); 
  }
}
bfSmarty.jsCheckbox = {};
bfSmarty.jsCheckbox.click = function(oCaller){
  var aoInps = oCaller.getElementsByTagName('input');
  if (aoInps.length == 1){
    var oInpCheck  = aoInps[0];
  }else{
    var oInpCheck  = aoInps[1];
  }
  var oImg = oCaller.getElementsByTagName('img')[0];
  if (oImg.src.indexOf('check_on_off') == -1 && oImg.src.indexOf('check_off_off') == -1){
    var bOn = (oImg.src.indexOf('check_on') == -1) ? 1 : 0;
    bfSmarty.jsCheckbox.checked(oInpCheck,bOn);
  }
}
bfSmarty.jsCheckbox.checked = function(xInp,bChecked){
  if (typeof(xInp.length) == 'undefined'){
    var oInpCheck  = xInp;
  }else{
    var oInpCheck  = xInp[1];
  }
  var oDiv = jsHelper.getNodeTag(oInpCheck,'SPAN');
  var oImg = oDiv.getElementsByTagName('img')[0];
  oImg.src = _iconset+'action/check_'+(bChecked ? 'on' : 'off')+(oInpCheck.disabled ? '_off' : '')+'.gif';
  oInpCheck.checked = (bChecked) ? 'checked' : 0;
}
bfSmarty.jsCheckbox.disable = function(xInp,bDisable){
  if (typeof(xInp.length) == 'undefined'){
    var oInpHidden = null;
    var oInpCheck  = xInp;
  }else{
    var oInpHidden = xInp[0];
    var oInpCheck  = xInp[1];
  }
  var oDiv = jsHelper.getNodeTag(oInpCheck,'SPAN');
  var oImg = oDiv.getElementsByTagName('img')[0];
  jsHelper.setClass(oDiv,bDisable,'disabled');
  oImg.src = _iconset+'action/check_'+((oImg.src.indexOf('check_on') == -1) ? 'off' : 'on')+(bDisable ? '_off' : '')+'.gif';
  oInpCheck.disabled = (bDisable) ? 'disabled' : '';
  if (oInpHidden){
    oInpHidden.disabled = (bDisable) ? 'disabled' : '';
  }
}
bfSmarty.jsOption = {};
bfSmarty.jsOption.click = function(oCaller){
  var oInpClicked = oCaller.getElementsByTagName('input')[0];
  var oImg = oCaller.getElementsByTagName('img')[0];
  if (oImg.src.indexOf('option_on_off') == -1 && oImg.src.indexOf('option_off_off') == -1){
    bfSmarty.jsOption.checked(oInpClicked,1);
  }
}
bfSmarty.jsOption.checked = function(oInp,bChecked){
  var oDiv = jsHelper.getNodeTag(oInp,'SPAN');
  var oImg = oDiv.getElementsByTagName('img')[0];
  if (bChecked){
    var aInps = oInp.form[oInp.name];
    if (typeof(aInps.length) != 'undefined'){
      for(var i=0; i<aInps.length; i++){
        bfSmarty.jsOption.checked(aInps[i],0);
      }
    }
  }
  oImg.src = _iconset+'action/option_'+(bChecked ? 'on' : 'off')+(oInp.disabled ? '_off' : '')+'.gif';
  oInp.checked = (bChecked) ? 'checked' : 0;
}
bfSmarty.jsOption.disable = function(oInp,bDisable){
  var oDiv = jsHelper.getNodeTag(oInp,'SPAN');
  var oImg = oDiv.getElementsByTagName('img')[0];
  jsHelper.setClass(oDiv,bDisable,'disabled');
  oImg.src = _iconset+'action/option_'+((oImg.src.indexOf('option_on') == -1) ? 'off' : 'on')+(bDisable ? '_off' : '')+'.gif';
  oInp.disabled = (bDisable) ? 'disabled' : '';
}
bfSmarty.jsOption.getValue = function(oInps){
  for(var i=0; i<oInps.length; i++){
    if (oInps[i].checked){
      return oInps[i].value;
      break;
    }
  }
}
bfSmarty.jsDatepicker = {};
bfSmarty.jsDatepicker.aDayShort = new Array('So','Mo','Di','Mi','Do','Fr','Sa');
bfSmarty.jsDatepicker.aDayMed = new Array('So','Mo','Di','Mi','Do','Fr','Sa');
bfSmarty.jsDatepicker.aDayLong = new Array('Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag');
bfSmarty.jsDatepicker.aMonthShort = new Array('Jan','Feb','Mar','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez');
bfSmarty.jsDatepicker.aMonthMed = new Array('Jan','Feb','Mar','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez');
bfSmarty.jsDatepicker.aMonthLong = new Array('Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember');
bfSmarty.jsDatepicker.sDateSeperator = '.';
bfSmarty.jsDatepicker.sDateFormat = 'dmy';
bfSmarty.jsDatepicker.sDivID = 'datepicker';
bfSmarty.jsDatepicker.sIFrameDivID = 'datepickeriframe';
bfSmarty.jsDatepicker.oInpDisplay = null;
bfSmarty.jsDatepicker.oInpValue   = null;
bfSmarty.jsDatepicker.display = function(oCaller){
  if (oCaller){
    var oInp = oCaller;
  }else if (bfSmarty.jsDatepicker.oInpDisplay){
    var oInp = bfSmarty.jsDatepicker.oInpDisplay;
  }else{
    return;
  }
  bfSmarty.jsDatepicker.oInpDisplay = oInp;
  bfSmarty.jsDatepicker.oInpValue = jsHelper.getPreviousSibling(oInp);
  var x = oInp.offsetLeft;
  var y = oInp.offsetTop + oInp.offsetHeight;
  var oParent = oInp;
  while(oParent.offsetParent){
    oParent = oParent.offsetParent;
    x+= oParent.offsetLeft;
    y+= oParent.offsetTop;
  }
  bfSmarty.jsDatepicker.draw(oInp,x,y);
}
bfSmarty.jsDatepicker.disable = function(oInp,bDisable){
  if (typeof(bDisable) == 'undefined'){
    var bDisable = 1;
  }
  oInp.disabled = bDisable;
  jsHelper.getNextSibling(oInp).disabled = bDisable;
}
bfSmarty.jsDatepicker.enable = function(oInp){
  bfSmarty.jsDatepicker.disable(oInp,0);
}
bfSmarty.jsDatepicker.setValue = function(oInp,sValue){
  if (sValue != '00.00.0000'){
    oInp.value = sValue;
    jsHelper.getNextSibling(oInp).value = sValue;
  }
}
bfSmarty.jsDatepicker.draw = function(oInp,x,y){
  var oDiv;
  if (!(oDiv = document.getElementById(bfSmarty.jsDatepicker.sDivID))){
    oDiv = document.createElement('div');
    oDiv.setAttribute('id',bfSmarty.jsDatepicker.sDivID);
    jsHelper.setClass(oDiv,1,'cmb_layer');
    oDiv.setAttribute('style','visibility: hidden;');
    document.body.appendChild(oDiv);
  }
  oDiv.style.position = 'absolute';
  oDiv.style.left = x + 'px';
  oDiv.style.top = y + 'px';
  oDiv.style.visibility = (oDiv.style.visibility == 'visible' ? 'hidden' : 'visible');
  oDiv.style.display = (oDiv.style.display == 'block' ? 'none' : 'block');
  oDiv.style.zIndex = 2;
  if (oDiv.style.visibility == 'visible'){
    bfPage.layerAutoClose.openLayer(oDiv,oInp,bfSmarty.jsDatepicker.display);
    var oDate = bfSmarty.jsDatepicker.getDateByString(oInp.value);
    bfSmarty.jsDatepicker.refresh(oDate.getFullYear(),oDate.getMonth(),oDate.getDate());
  }
}
bfSmarty.jsDatepicker.openMonthCmb = function(oCaller){
  var oCmb = jsHelper.getNodeTag(jsHelper.getNodeTag(oCaller,'DIV').parentNode,'DIV');
  var divValues = jsHelper.getNextSibling(oCmb);
  divValues.style.width = oCmb.offsetWidth+'px';
  divValues.style.display = (divValues.style.display == 'none' ? '' : 'none');
}
bfSmarty.jsDatepicker.setMonthCmb = function(iYear,iMonth,iDay){
  bfSmarty.jsDatepicker.refresh(iYear,iMonth,iDay);
}
bfSmarty.jsDatepicker.setDay = function(sDateString){
  var oInp      = bfSmarty.jsDatepicker.oInpDisplay;
  var oInpValue = bfSmarty.jsDatepicker.oInpValue;
  if (sDateString){
    oInp.value = sDateString;
    oInpValue.value = sDateString;
    if (typeof(oInp.lang) != 'undefined'){
      eval(oInp.lang);
    }
  }
  bfPage.layerAutoClose.closeOpenLayers(0,1);
  oInp.focus();
  bfSmarty.jsDatepicker.oInpDisplay = null;
  bfSmarty.jsDatepicker.oInpValue   = null;
}
bfSmarty.jsDatepicker.createMonthCmb = function(iMonth){
  var oCmb = bfPage.createElement('div',{
    'style':{
      'width':'100%',
      'position':'relative'
    }
  },'');
  var oDiv = bfPage.createElement('div',{
    'className':'smallfont ico16 form_text',
    'style':{
      'position':'relative',
      'width':'100%',
      'left':'0px',
      'margin-bottom':'0px',
      'margin-top':'0px'
    }
  },'');
  jsHelper.setEvent(oDiv,'onclick','bfSmarty.jsDatepicker.openMonthCmb(this)');
  var oTxt = bfPage.createElement('div',{
    'style':{
      'position':'absolute'
    }
  },bfSmarty.jsDatepicker.aMonthLong[iMonth]);
  var oImg = bfPage.createElement('div',{
    'style':{
      'position':'absolute',
      'right':'0px',
      'top':'0px'
    }
  },'<img src="'+_iconset+'main/js_cmb_arrow.gif" class="ico16">');
  oDiv.appendChild(oTxt);
  oDiv.appendChild(oImg);
  oCmb.appendChild(oDiv);
  return oCmb;
}
bfSmarty.jsDatepicker.createMonthCmbValues = function(iYear,iMonth,iDay){
  var oDiv = bfPage.createElement('div',{
    'className':'cmb_layer smallfont',
    'style':{
      'zIndex':'3',
      'display':'none'
    }
  },'');
  for (var i=0; i<bfSmarty.jsDatepicker.aMonthLong.length; i++){
    var oDivVal = document.createElement('div');
    oDivVal.innerHTML = bfSmarty.jsDatepicker.aMonthLong[i];
    oDivVal.lang = i;
    if (i == iMonth){
      oDivVal.className = 'bold data_selected';
    }
    jsHelper.setEvent(oDivVal,'onmouseover','bfSmarty.jsDatepicker.hoverOn(this)');
    jsHelper.setEvent(oDivVal,'onmouseout','bfSmarty.jsDatepicker.hoverOff(this)');
    jsHelper.setEvent(oDivVal,'onclick','bfSmarty.jsDatepicker.setMonthCmb(\''+iYear+'\',\''+i+'\',\''+iDay+'\')');
    oDiv.appendChild(oDivVal);
  }
  return oDiv;
}
bfSmarty.jsDatepicker.refresh = function(iYear,iMonth,iDay){
  var oNow = new Date();
  if((iMonth >= 0) && (iYear > 0)){
    oNow = new Date(iYear,iMonth,1);
  }else{
    iDay = oNow.getDate();
    oNow.setDate(1);
  }
  var oTbl = bfPage.createElement('table',{'className':'table_plain'},'');
  var oTblBdy = bfPage.createElement('tbody');
  oTbl.appendChild(oTblBdy); 
  var oTr = bfPage.createElement('tr',{},'');
  var oCmb = bfSmarty.jsDatepicker.createMonthCmb(oNow.getMonth());
  var oCmbVals = bfSmarty.jsDatepicker.createMonthCmbValues(oNow.getFullYear(),oNow.getMonth(),iDay);
  var oTd = bfPage.createElement('td',{'colSpan':'4','className':'td_left_padding td_right_padding'},'');
  oTd.appendChild(oCmb);
  oTd.appendChild(oCmbVals);
  oTr.appendChild(oTd);
  var oTd = bfPage.createElement('td',{'colSpan':'3','className':'td_left_padding td_right_padding'},'');
  var oYearBox = bfSmarty.jsDatepicker.createYearBox(oNow.getFullYear(),oNow.getMonth(),iDay);
  oTd.appendChild(oYearBox);
  oTr.appendChild(oTd);
  oTblBdy.appendChild(oTr);
  var oTr = bfPage.createElement('tr',{},'');
  for (var i=0; i<bfSmarty.jsDatepicker.aDayShort.length; i++){
    var oTd = bfPage.createElement('td',{'className':'smallfont bold td_left_padding'},bfSmarty.jsDatepicker.aDayShort[i]);
    oTr.appendChild(oTd);
  }
  oTblBdy.appendChild(oTr);
  var oTr = bfPage.createElement('tr',{},'');
  for (var i=0; i<oNow.getDay(); i++){
    var oTd = bfPage.createElement('td',{'className':'smallfont'},'&nbsp;');
    oTr.appendChild(oTd);
  }
  do {
    var iDayNum = oNow.getDate();
    var oTd = bfPage.createElement('td',{
      'className':'smallfont right td_left_padding td_right_padding',
      'onclick':''
    },iDayNum);
    jsHelper.setEvent(oTd,'onmouseover','bfSmarty.jsDatepicker.hoverOn(this)');
    jsHelper.setEvent(oTd,'onmouseout','bfSmarty.jsDatepicker.hoverOff(this)');
    jsHelper.setEvent(oTd,'onclick','bfSmarty.jsDatepicker.setDay(\''+bfSmarty.jsDatepicker.getDateString(oNow)+'\')');
    if (iDayNum == iDay){
      jsHelper.setClass(oTd,1,'bold');
    }
    oTr.appendChild(oTd);
    if (oNow.getDay() == 6){
      oTblBdy.appendChild(oTr);
      var oTr = bfPage.createElement('tr',{},'');
    }
    oNow.setDate(oNow.getDate()+1);
  } while(oNow.getDate() > 1)
  if (oNow.getDay() > 0){
    for (var i=6; i>oNow.getDay(); i--){
      var oTd = bfPage.createElement('td',{'className':'smallfont'},'&nbsp;');
      oTr.appendChild(oTd);
    }
  }
  oTblBdy.appendChild(oTr);
  oTblBdy.appendChild(oTr);
  var oDiv = document.getElementById(bfSmarty.jsDatepicker.sDivID);
  while(oDiv.childNodes.length){
    oDiv.removeChild(oDiv.childNodes[0]);
  }
  oDiv.appendChild(oTbl);
  oDiv.style.width = oTbl.offsetWidth+'px';
}
bfSmarty.jsDatepicker.getDateByString = function(sDate){
  var dateVal;
  var aDate;
  var d,m,y;
  try {
    aDate = bfSmarty.jsDatepicker.splitDateString(sDate);
    if (aDate){
      switch (bfSmarty.jsDatepicker.sDateFormat){
        case "dmy" :
          d = parseInt(aDate[0],10);
          m = parseInt(aDate[1],10) -1;
          y = parseInt(aDate[2],10);
          break;
        case "ymd" :
          d = parseInt(aDate[2],10);
          m = parseInt(aDate[1],10) -1;
          y = parseInt(aDate[0],10);
          break;
        case "mdy" :
        default :
          d = parseInt(aDate[1],10);
          m = parseInt(aDate[0],10) -1;
          y = parseInt(aDate[2],10);
          break;
      }
      dateVal = new Date(y,m,d);
    }else if (sDate){
      dateVal = new Date(sDate);
    }else{
      dateVal = new Date();
    }
  } catch(e) {
    dateVal = new Date();
  }
  return dateVal;
}
bfSmarty.jsDatepicker.splitDateString = function(sDate){
  var aTmp;
  if (sDate.indexOf('/') >= 0){
    aTmp = sDate.split('/');
  }else if (sDate.indexOf('.') >= 0){
    aTmp = sDate.split('.');
  }else if (sDate.indexOf('-') >= 0){
    aTmp = sDate.split('-');
  }else{
    aTmp = false;
  }
  return aTmp;
}
bfSmarty.jsDatepicker.getDateString = function(oDate){
  var sDay = '00'+oDate.getDate();
  var sMonth = '00'+(oDate.getMonth()+1);
  sDay = sDay.substring(sDay.length-2);
  sMonth = sMonth.substring(sMonth.length-2);
  switch(bfSmarty.jsDatepicker.sDateFormat){
    case 'dmy' :
      return sDay+bfSmarty.jsDatepicker.sDateSeperator+sMonth+bfSmarty.jsDatepicker.sDateSeperator+oDate.getFullYear();
    case 'ymd' :
      return oDate.getFullYear()+bfSmarty.jsDatepicker.sDateSeperator+sMonth+bfSmarty.jsDatepicker.sDateSeperator+sDay;
    case 'mdy' :
    default :
      return sMonth+bfSmarty.jsDatepicker.sDateSeperator+sDay+bfSmarty.jsDatepicker.sDateSeperator+oDate.getFullYear();
  }
}
bfSmarty.jsDatepicker.hoverOn = function(oCaller){
  if (oCaller.className.indexOf('data_selected') == -1){
    jsHelper.setClass(oCaller,1,'data_selected'); 
  }
}
bfSmarty.jsDatepicker.hoverOff = function(oCaller){
  if (oCaller.className.indexOf('data_selected') != -1){
    jsHelper.setClass(oCaller,0,'data_selected'); 
  }
}
bfSmarty.jsDatepicker.createYearBox = function(iYear,iMonth,iDay){
  var oBox = bfPage.createElement('div',{
    'className':'smallfont ico16 form_text',
    'style':{
      'position':'relative',
      'width':'100%',
      'left':'0px',
      'margin-bottom':'0px',
      'margin-top':'0px'
    }
  },'');
  var oTxt = bfPage.createElement('div',{
    'style':{
      'position':'absolute'
    }
  },iYear);
  var oImgs = bfPage.createElement('div',{
    'style':{
      'position':'absolute',
      'right':'0px',
      'top':'0px'
    }
  },'');
  var oImg = bfPage.createElement('img',{
    'className':'ico8 hand',
    'src':_iconset+'action/pos_up.gif'
  },'');
  jsHelper.setEvent(oImg,'onclick','bfSmarty.jsDatepicker.refresh(\''+(iYear+1)+'\',\''+iMonth+'\',\''+iDay+'\')');
  oImgs.appendChild(oImg);
  var oBr = bfPage.createElement('br',{},'');
  oImgs.appendChild(oBr);
  var oImg = bfPage.createElement('img',{
    'className':'ico8 hand',
    'src':_iconset+'action/pos_down.gif'
  },'');
  jsHelper.setEvent(oImg,'onclick','bfSmarty.jsDatepicker.refresh(\''+(iYear-1)+'\',\''+iMonth+'\',\''+iDay+'\')');
  oImgs.appendChild(oImg);
  oBox.appendChild(oTxt);
  oBox.appendChild(oImgs);
  return oBox;
}
bfSmarty.jsDatepicker.getInputElement = function(oInput){
  return jsHelper.getNextSibling(oInput);
}
bfSmarty.switchLegend = function(oCaller){
  var oLegend = document.getElementById('_legend');
  var oTblMain = document.getElementById('_tbl_main');
  if (oLegend.style.display == 'block'){
    oLegend.style.display = 'none';
  }else{
    oLegend.style.display = 'block';
    oLegend.style.height = oTblMain.offsetHeight+'px';
    oLegend.style.right = '0px';
    bfPage.layerAutoClose.openLayer(oLegend,oCaller,bfSmarty.switchLegend,[oCaller]);
  }
}

bfSmarty.editOnClick = {};
bfSmarty.editOnClick.iTimeout = 10;
bfSmarty.editOnClick.oTimeout = {};
bfSmarty.editOnClick.oDef = {};
bfSmarty.editOnClick.init = function(oTgt,sName,sValue,oDef,bForceCreate){
  var oCntr = null;
  if (typeof(bfSmarty.editOnClick.oDef[sName]) == 'undefined' || bForceCreate){
    if (typeof(bForceCreate) != 'undefined' && bForceCreate && typeof(bfSmarty.editOnClick.oDef[sName]) != 'undefined'){
      var oInput = document.getElementById('value_'+sName);
      if (oInput){
        jsHelper.rmvInput(oInput.form,sName);
      }
      var oCntr = document.getElementById('cntr_'+sName);
      if (oCntr){
        oCntr.parentNode.removeChild(oCntr);
      }
    }
    if (typeof(oDef) == 'undefined'){
      oDef = {'translateI2T':{},'translateI2V':{}};
    }else{
      if (typeof(oDef['translateI2T']) == 'undefined'){
        oDef['translateI2T'] = {};
      }
      if (typeof(oDef['translateI2V']) == 'undefined'){
        oDef['translateI2V'] = {};
      }
    }
    bfSmarty.editOnClick.oDef[sName] = oDef;
    oCntr = bfPage.createElement('div',{
      'style':{'width':'100%'},
      'id':'cntr_'+sName});
    var oDivText = bfPage.createElement('div',{
      'style':{'width':'100%'},
      'className':'hand'+((typeof(oDef['classText'])!='undefined') ? ' '+oDef['classText'] : ''),
      'id':'text_'+sName});
    oCntr.appendChild(oDivText);
    var oDivInput = bfPage.createElement('div',{
      'style':{'display':'none','width':'100%'},
      'id':'input_cntr_'+sName});
    oCntr.appendChild(oDivInput);
    var oValue = bfPage.createElement('input',{
      'type':  'hidden',
      'id':    'value_'+sName,
      'name':  sName});
    oDivInput.appendChild(oValue);
    var oInput = bfPage.createElement('input',{
      'type':      'text',
      'id':        'input_'+sName,
      'className': 'form_text'+((typeof(oDef['classInput'])!='undefined') ? ' '+oDef['classInput'] : '')});
    oDivInput.appendChild(oInput);
    jsHelper.setEvent(oDivText,'onclick','bfSmarty.editOnClick.showInput(\''+sName+'\');');
    bfSmarty.limitInput.init(oInput,bfSmarty.editOnClick.validate,0,function(){
      bfSmarty.editOnClick.showText(sName);});
    //jsHelper.setEvent(oInput,'onkeydown','bfSmarty.editOnClick.validate(\''+sName+'\',this);');
    jsHelper.setEvent(oInput,'onchange','bfSmarty.editOnClick.setValue(\''+sName+'\');');
    jsHelper.setEvent(oInput,'onblur','bfSmarty.editOnClick.setTimeout(\''+sName+'\');');
    jsHelper.setEvent(oInput,'onfocus','bfSmarty.editOnClick.resetTimeout(\''+sName+'\');');
    oTgt.appendChild(oCntr);
  }
  if (sValue){
    bfSmarty.editOnClick.setValue(sName,sValue);
  }
  return oCntr;
}
bfSmarty.editOnClick.showInput = function(sName){
  document.getElementById('text_'+sName).style.display = 'none';
  document.getElementById('input_cntr_'+sName).style.display = '';
  document.getElementById('input_'+sName).focus();
}
bfSmarty.editOnClick.showText = function(sName){
  bfSmarty.editOnClick.resetTimeout(sName);
  document.getElementById('text_'+sName).style.display = '';
  document.getElementById('input_cntr_'+sName).style.display = 'none';
}
bfSmarty.editOnClick.setValue = function(sName,sValue){
  if (typeof(sValue) == 'undefined'){
    var sValue = document.getElementById('input_'+sName).value;
  }else{
    document.getElementById('input_'+sName).value = sValue;
  }
  if (typeof(bfSmarty.editOnClick.oDef[sName]['translateI2T'][sValue]) != 'undefined'){
    document.getElementById('text_'+sName).innerHTML = bfSmarty.editOnClick.oDef[sName]['translateI2T'][sValue];
  }else{
    document.getElementById('text_'+sName).innerHTML = sValue;
  }
  if (typeof(bfSmarty.editOnClick.oDef[sName]['translateI2V'][sValue]) != 'undefined'){
    document.getElementById('value_'+sName).value = bfSmarty.editOnClick.oDef[sName]['translateI2V'][sValue];
  }else{
    document.getElementById('value_'+sName).value = sValue;
  }
}
bfSmarty.editOnClick.validate = function(sId,sValue){
  var sName = sId.substr(6);
  var bValid = 1;
  if (typeof(bfSmarty.editOnClick.oDef[sName]['valRegex']) != 'undefined' && typeof(bfSmarty.editOnClick.oDef[sName]['valRegex'].test) == 'function' && !bfSmarty.editOnClick.oDef[sName]['valRegex'].test(sValue)){
    bValid = 0;
  }
  if (bValid && typeof(bfSmarty.editOnClick.oDef[sName]['valFct']) != 'undefined' && typeof(bfSmarty.editOnClick.oDef[sName]['valFct']) == 'function' && !bfSmarty.editOnClick.oDef[sName]['valFct'](sValue)){
    bValid = 0;
  }
  return bValid;
}
bfSmarty.editOnClick.enable = function(sName,bEnable){
  if (bEnable){
    var oTxt = document.getElementById('text_'+sName);
    jsHelper.setClass(oTxt,1,'hand');
    jsHelper.enableEvent(oTxt,'onclick');
  }else{
    this.showText(sName);
    var oTxt = document.getElementById('text_'+sName);
    jsHelper.setClass(oTxt,0,'hand');
    jsHelper.disableEvent(oTxt,'onclick');
  }
}
bfSmarty.editOnClick.setTimeout = function(sName){
  bfSmarty.editOnClick.resetTimeout(sName);
  bfSmarty.editOnClick.oTimeout[sName] = window.setTimeout('bfSmarty.editOnClick.showText(\''+sName+'\')',bfSmarty.editOnClick.iTimeout);
}
bfSmarty.editOnClick.resetTimeout = function(sName){
  if (bfSmarty.editOnClick.oTimeout[sName]){
    window.clearTimeout(bfSmarty.editOnClick.oTimeout[sName]);
    bfSmarty.editOnClick.oTimeout[sName] = null;
  }
}
bfSmarty.limitInput = {};
bfSmarty.limitInput.hTgt = {};
bfSmarty.limitInput.init = function(oTgt,fctValidate,bSubmitOnEnter,fctOnEnter){
  this.hTgt[oTgt.id] = {
    'fctValidate':    fctValidate,
    'bSubmitOnEnter': ((typeof(bSubmitOnEnter) != 'undefined') ? bSubmitOnEnter : 1),
    'fctOnEnter':     ((typeof(fctOnEnter) == 'function') ? fctOnEnter : null),
    'sEditCache':     oTgt.value,
    'bPrecheck':      1};
  jsHelper.setEvent(oTgt,'onkeydown', 'bfSmarty.limitInput.eventHdl(oEvent,\''+oTgt.id+'\');','bfSmarty::limitInput');
  jsHelper.setEvent(oTgt,'onkeypress','bfSmarty.limitInput.eventHdl(oEvent,\''+oTgt.id+'\');','bfSmarty::limitInput');
  jsHelper.setEvent(oTgt,'onkeyup',   'bfSmarty.limitInput.eventHdl(oEvent,\''+oTgt.id+'\');','bfSmarty::limitInput');
}
bfSmarty.limitInput.eventHdl = function(oEvent,sId){
  if (!oEvent){
    var oEvent = window.event;
  }
  if (oEvent.ctrlKey || oEvent.altKey){
    return true;
  }
  var oInp = document.getElementById(sId);
  if (oEvent.type == 'keydown'){
    this.hTgt[sId].iKeyCode = (oEvent.which) ? oEvent.which : oEvent.keyCode;
    this.hTgt[sId].iCharCode = null;
  }
  if (oEvent.type == 'keypress'){
    this.hTgt[sId].iCharCode = (typeof(oEvent.charCode) == 'undefined') ? oEvent.keyCode : oEvent.charCode;
  }
  var iKeyCode  = this.hTgt[sId].iKeyCode;
  var iCharCode = this.hTgt[sId].iCharCode;
  if ((oEvent.type == 'keydown' || oEvent.type == 'keypress') && iKeyCode == 13){
    if (!this.hTgt[sId].sOnsubmit && typeof(oInp.form.onsubmit) != 'undefined'){
      this.hTgt[sId].sOnsubmit = jsHelper.getEvent(oInp.form,'onsubmit');
    }
    if (this.hTgt[sId].sOnsubmit){
      jsHelper.setEvent(oInp.form,'onsubmit','return false;');
    }
  }else if (oEvent.type == 'keyup' && iKeyCode == 13){
    if (this.hTgt[sId].sOnsubmit){
      jsHelper.setEvent(oInp.form,'onsubmit',this.hTgt[sId].sOnsubmit);
    }
    if (this.hTgt[sId].fctOnEnter){
      this.hTgt[sId].fctOnEnter(oInp);
    }
    if (this.hTgt[sId].bSubmitOnEnter){
      if (this.hTgt[sId].sOnsubmit){
        var fctTmp = new Function(this.hTgt[sId].sOnsubmit);
        fctTmp();
      }else{
        oInp.form.submit();
      }
    }
  }else if (   oEvent.type == 'keypress'
            && (   (iKeyCode > 47 && iKeyCode < 91)
                || (iKeyCode > 95 && iKeyCode < 112)
                || iKeyCode > 185)){
    this.checkInput(sId,iCharCode);
    if (!this.hTgt[sId].bPrecheck){
      this.hTgt[sId].bPrecheck = 1;
      if (oEvent.preventDefault){
        oEvent.preventDefault();
      }
      if (oEvent.returnValue){
        oEvent.returnValue = false;
      }
      return false;
    }
  }else if (oEvent.type == 'keyup' && !(iKeyCode == 38 || iKeyCode == 40 || iKeyCode == 27)){
    this.checkInput(sId);
  }
}
bfSmarty.limitInput.checkInput = function(sId,iCharCode){
  oTgt = document.getElementById(sId);
  if (typeof(iCharCode) == 'undefined'){
    iCharCode = -1;
  }
  if (iCharCode < 0){
    var sNewVal = oTgt.value;
  }else if (iCharCode == 0){
    return;
  }else{
    if (oTgt.createTextRange) {
      var oRng = document.selection.createRange().duplicate();
      oRng.moveEnd('character', oTgt.value.length)
      if (oRng.text == ''){
        var iStart = oTgt.value.length;
      }else{
        var iStart = oTgt.value.lastIndexOf(oRng.text);
      }
      var oRng = document.selection.createRange().duplicate();
      oRng.moveStart('character',-oTgt.value.length);
      var iEnd = oRng.text.length;
    }else{
      var iStart = oTgt.selectionStart;
      var iEnd   = oTgt.selectionEnd;
    }
    var sNewVal = oTgt.value.substr(0,iStart) + String.fromCharCode(iCharCode) + oTgt.value.substr(iEnd);
    if (sNewVal == oTgt.value){
      return;
    }
  }
  var bValid = this.hTgt[sId]['fctValidate'](sId,sNewVal);
  if (iCharCode >= 0 && !bValid){
    this.hTgt[sId].bPrecheck = 0;
    return;
  }
  if (!bValid){
    if (oTgt.value != this.hTgt[sId].sEditCache){
      oTgt.value = this.hTgt[sId].sEditCache;
      this.checkInput(sId);
    }
  }else{
    this.hTgt[sId].sEditCache = sNewVal;
  }
}
