<!--
var shRpc = {};
shRpc.sTitle = null;
shRpc.sStatusHandler = null;
shRpc.hLibs = {}
shRpc.bLibsChecked = 0;
shRpc.hLibsExceptions = {
  'tinymce': {
    'lib': 'tiny_mce/tiny_mce.js',
    'load': function(sLib){
      if (typeof(tinymce) != 'undefined'){
        shRpc.hLibsExceptions['tinymce']['loaded'](sLib);
      }else if (typeof($().tinymce) == 'undefined'){
        setTimeout('shRpc.hLibsExceptions[\'tinymce\'][\'load\'](\''+sLib+'\')',0);
      }else{
        shRpc.hLibsExceptions['tinymce'].oTmp = bfPage.createElement('textarea',{'name':'tmptextarea'});
        var oTmpFrm = bfPage.createElement('form',{'name':'tmpfrm','style':{'position': 'absolute','top':'-1000px'}});
        oTmpFrm.appendChild(shRpc.hLibsExceptions['tinymce'].oTmp);
        document.body.appendChild(oTmpFrm);
        $(shRpc.hLibsExceptions['tinymce'].oTmp).tinymce({
          script_url: '/schemes/default/java/tiny_mce/tiny_mce.js',
          theme:      'advanced',
          language:   'de',
          setup:      function(oEd){
            oEd.onInit.add(function(oEd){
              shRpc.hLibsExceptions['tinymce']['loaded'](sLib);
            });
          }
        });
      }
    },
    'loaded': function(sLib){
      shRpc.hLibs[sLib] = 1;
      if (shRpc.hLibsExceptions['tinymce'].oTmp){
        setTimeout(shRpc.hLibsExceptions['tinymce'].removeTmp,0);
      }
    },
    'removeTmp': function(){
      $(shRpc.hLibsExceptions['tinymce'].oTmp).tinymce().remove();
      var oTmp = shRpc.hLibsExceptions['tinymce'].oTmp.parentNode;
      jsHelper.rmvInput(shRpc.hLibsExceptions['tinymce'].oTmp);
      oTmp.parentNode.removeChild(oTmp);
      shRpc.hLibsExceptions['tinymce'].oTmp = null;
    },
    'oTmp': null
  }
}
shRpc.libLoaded = function(sLib,bReadyState){
  //this:: oScript, welches Event ausgelöst hat
  if (shRpc.hLibs[sLib] != 1 && (!bReadyState || this.readyState == 'complete' || this.readyState == 'loaded')){
    shRpc.hLibs[sLib] = 1;
  }
}
shRpc.checkLibs = function(){
  var aoScript = document.getElementsByTagName('script');
  for (var i=0;i<aoScript.length;i++){
    if (aoScript[i].src.length){
      sSrc = aoScript[i].src.replace(/^.*(\/schemes\/[^\/]+\/java\/.*)(\?.*)?$/,'$1');
      sSrc = sSrc.replace(/^.*(\/(modules|include\/mirl\/plugins)\/[^\/]+\/js\/.*)(\?.*)?$/,'$1');
      shRpc.hLibs[sSrc] = 1;
    }
  }
  shRpc.bLibsChecked = 1;
}
shRpc.loadLibs = function(asLibs,sCallback/*++ axArgs for callback */){
  if (!shRpc.bLibsChecked){
    shRpc.checkLibs();
  }
  for (var i=0;i<asLibs.length;i++){
    var sLib = asLibs[i];
    if (typeof(shRpc.hLibs[sLib]) == 'undefined'){
      var bLoaded = 0;
      shRpc.hLibs[sLib] = 0;
      for (var sKey in shRpc.hLibsExceptions){
        var oException = shRpc.hLibsExceptions[sKey];
        if (sLib.indexOf(oException['lib']) >= 0){
          oException.load(sLib);
          bLoaded = 1;
        }
      }
      if (!bLoaded){
        var oScript = bfPage.createElement('script',{'type':'text/javascript','src':sLib,'id':'_script_'+sLib});
        jsHelper.setEvent(oScript,'onload',shRpc.libLoaded.createDelegate(oScript,[sLib,0]),'shRpc::loadLibs');
        jsHelper.setEvent(oScript,'onreadystatechange',shRpc.libLoaded.createDelegate(oScript,[sLib,1]),'shRpc::loadLibs');
        document.body.appendChild(oScript);
      }
    }
  }
  for (var sLib in shRpc.hLibs){
    if (shRpc.hLibs[sLib] == 0){
      var axArgs = [[]];
      for (var i=1;i<arguments.length;i++){
        axArgs.push(arguments[i]);
      }
      setTimeout(function(){shRpc.loadLibs.apply(this,axArgs);},0);
      return;
    }
  }
  var axArgs = [];
  for (var i=2;i<arguments.length;i++){
    axArgs.push(arguments[i]);
  }
  eval(sCallback+'.apply(this,axArgs);');
}
shRpc.hashToParams = function(hParams,hRet,sName){
  var sName = sName || '';
  if (typeof(hParams) == 'object' && typeof(hParams.length) != 'undefined'){
    for (var i=0;i<hParams.length;i++){
      sNext = sName + '['+i+']';
      if (typeof(hParams[i]) == 'object'){
        shRpc.hashToParams(hParams[i],hRet,sNext);
      }else{
        hRet[sNext] = hParams[i].toString();
      }
    }
  }else{
    for (var sKey in hParams){
      sNext = sName + '['+sKey+']';
      if (typeof(hParams[sKey]) == 'object' && hParams[sKey] != null){
        shRpc.hashToParams(hParams[sKey],hRet,sNext);
      }else{
        hRet[sNext] = (hParams[sKey] != null) ? hParams[sKey].toString() : 'null';
      }
    }
  }
}
shRpc.convertParams = function(params){
  var sRet = '&js_call=1';
  if (typeof(params) != 'undefined' && params != null){
    if (typeof(params.nodeName) == 'string' && params.nodeName == 'FORM'){
      for (var i=0; i<params.elements.length; i++){
        if (params.elements[i].name && !params.elements[i].disabled
            && (params.elements[i].type != 'checkbox' && params.elements[i].type != 'radio'
               || params.elements[i].checked)
           ){
          sRet+= '&'+params.elements[i].name+'='+escape(params.elements[i].value);
        }
      }
    }else{
      for (var sName in params){
        sRet+= '&'+sName+'='+escape(params[sName]);
      }
    }
    sRet = sRet.replace(/\+/g,'%2B').replace(/%u20AC/g,'%80');
  }
  return sRet;
}
shRpc.parseResult = function(hResult,frm,hInputReplace,bAsync,sCallback/*++ xArg for callback */){
  function getTabName(){
    var sTabName = null;
    var oTbl = jsHelper.getTable(frm.elements[i]);
    if (oTbl.id && oTbl.id.match(/^(tab_form_|tab_form_([^_]+_)+)entry_/)){
      sTabName = oTbl.id.replace(/^(tab_form_|tab_form_([^_]+_)+)entry_/,'');
    }else{
      var oTbl = jsHelper.getTable(oTbl.parentNode);
      if (oTbl != undefined && oTbl.id && oTbl.id.match(/^(tab_form_|tab_form_([^_]+_)+)entry_/)){
        sTabName = oTbl.id.replace(/^(tab_form_|tab_form_([^_]+_)+)entry_/,'');
      }
    }
    return sTabName;
  }
  if (typeof(hInputReplace)=='undefined'){
    var hInputReplace = {};
  }
  var sCallSid = null;
  if (typeof(hResult['_sid']) != 'undefined'){
    sCallSid = hResult['_sid'];
  }else if(typeof(hResult['_mirl']['globals']['sid']) != 'undefined'){
    sCallSid = hResult['_mirl']['globals']['sid'];
  }
  if (sCallSid != null && sCallSid != _sid){
    _sid = sCallSid;
    bfDialog.showGhost(1,1);
    shRpc.loadLibs(['/schemes/default/java/bf.mirl.class.js'],'shRpc.viewLogin');
    return;
  }
  if (hResult['_maintenance'] == '1'){
    bfDialog.showGhost(1,1);
    shRpc.loadLibs(['/schemes/default/java/bf.mirl.class.js'],'shRpc.viewMaintenance');
    return;
  }
  var hAssigns = {};
  if (typeof(hResult['_mirl']) != 'undefined'){
    var hMirl = hResult['_mirl'];
    //load Libs
    if (hMirl['jlibs'] && hMirl['jlibs'].length > 0){
      var asLibs = [];
      for (var i=0;i<hMirl['jlibs'].length;i++){
        asLibs.push(hMirl['jlibs'][i]);
      }
      hMirl['jlibs'] = null;
      var axArgs = [asLibs,'shRpc.parseResult'];
      for (var i=0;i<arguments.length;i++){
        axArgs.push(arguments[i]);
      }
      shRpc.loadLibs.apply(this,axArgs);
      return;
    }
    bfMirl.process(hMirl);
    for (var sKey in bfMirl.hAssign['opt']){
      hAssigns[sKey] = bfMirl.hAssign['opt'][sKey];
    }
    if (typeof(bfMirl.hAssign[bfMirl.sLastPage]) != 'undefined'){
      for (var sKey in bfMirl.hAssign[bfMirl.sLastPage]){
        hAssigns[sKey] = bfMirl.hAssign[bfMirl.sLastPage][sKey];
      }
    }
  }
  var i = '';
  if (shRpc.sStatusHandler == null){
    for (i in hResult['_status']){
      var hStatus = hResult['_status'][i];
      shStatus.add(hStatus['typ'],hStatus['msg']);
    }
  }else{
    eval(shRpc.sStatusHandler+'(hResult[\'_status\'])');
  }
  if (typeof(frm) != 'undefined' && typeof(frm.nodeName) == 'string' && frm.nodeName == 'FORM'){
    for (i=0; i<frm.elements.length; i++){
      var sName = (typeof(frm.elements[i].name) != 'undefined') ? frm.elements[i].name : '';
      var oInput;
      if (sName.length && (oInput = (typeof(hInputReplace[sName]) == 'undefined') ? frm.elements[i] : hInputReplace[sName])){
        oInput.className = oInput.className.replace(/ form_error/,'');
        var iRow = null;
        var aTmp = sName.split('[');
        var sFld = aTmp[aTmp.length-1].substr(0,aTmp[aTmp.length-1].length-1);
        if (sFld.match(/^[0-9]+$/)){
          iRow = sFld;
          sFld = aTmp[aTmp.length-2].substr(0,aTmp[aTmp.length-2].length-1);
        }else if(
          sFld=='land' && frm.elements[i+1].name.substr(frm.elements[i+1].name.length-7) == 'prefix]' ||
          sFld=='prefix' && frm.elements[i-1].name.substr(frm.elements[i-1].name.length-5) == 'land]' ||
          sFld=='number' && frm.elements[i-1].name.substr(frm.elements[i-1].name.length-7) == 'prefix]'
        ){
          sFld = aTmp[aTmp.length-2].substr(0,aTmp[aTmp.length-2].length-1);
        }
        if (hResult['_error_fields'] && hResult['_error_fields'][sFld]){
          if (typeof(hResult['_error_fields'][sFld]['row']) == 'object'){
            if (iRow == null){
              var iRow = (aTmp.length > 1) ? aTmp[aTmp.length-2].substr(0,aTmp[aTmp.length-2].length-1) : null;
              var iRow2 = (aTmp.length > 2) ? aTmp[aTmp.length-3].substr(0,aTmp[aTmp.length-3].length-1) : null;
            }
            var iRows = 0;
            for (var iTmp in hResult['_error_fields'][sFld]['row']){
              if (iRow == hResult['_error_fields'][sFld]['row'][iTmp] || iRow2 == hResult['_error_fields'][sFld]['row'][iTmp]){
                if (typeof(hResult['_error_fields'][sFld]['tab']) == 'object'){
                  var iTabRows = 0;
                  var sTab = getTabName();
                  for (var iTmpTab in hResult['_error_fields'][sFld]['tab']){
                    if (sTab == hResult['_error_fields'][sFld]['tab'][iTmpTab]){
                      oInput.className+= ' form_error';
                    }
                    iTabRows++;
                  }
                  if (iTabRows == 0){
                    oInput.className+= ' form_error';
                  }
                }else{
                  oInput.className+= ' form_error';
                }
              }
              iRows++;
            }
            if (iRows == 0){
              if (typeof(hResult['_error_fields'][sFld]['tab']) == 'object'){
                var iTabRows = 0;
                var sTab = getTabName();
                for (var iTmpTab in hResult['_error_fields'][sFld]['tab']){
                  if (sTab == hResult['_error_fields'][sFld]['tab'][iTmpTab]){
                    oInput.className+= ' form_error';
                  }
                  iTabRows++;
                }
                if (iTabRows == 0){
                  oInput.className+= ' form_error';
                }
              }else{
                oInput.className+= ' form_error';
              }
            }
          }
        }
      }
    }
  }
  if (!bAsync){
    return hResult['result'];
  }else{
    if (typeof(sCallback) == 'string'){
      var axArgs = [];
      for (var i=5;i<arguments.length;i++){
        axArgs.push(arguments[i]);
      }
      axArgs.push(hResult['result']);
      axArgs.push(hAssigns);
      eval(sCallback+'.apply(this,axArgs);');
    }
  }
}
shRpc.jsCall = function(url,form){
  var params = shRpc.convertParams(form);
  var hRet = {};
  if (window.ActiveXObject){
    var hr = new ActiveXObject("Msxml2.XMLHTTP");
    if (hr){
      hr.open("POST",escape(url),false);
      hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      hr.send(params);
      if (hr.status == 200){
        eval('hRet ='+hr.responseText);
      }
    }
  }else if (window.XMLHttpRequest){
    var hr = new XMLHttpRequest();
    hr.open("POST",escape(url),false);
    hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    hr.send(params);
    if (hr.status == 200){
      try{
        eval('hRet ='+hr.responseText);
      }catch(e){
        var iNum = hr.responseText.indexOf('{');
        if (iNum>-1){
          eval('hRet ='+hr.responseText.substr(iNum));
          hRet['_status'] = {
            '0':{
              'typ':'err',
              'msg':hr.responseText.substr(0,iNum-1)
            }
          }
        }else{
          hRet = {
            '_status':{
              '0':{
                'typ':'err',
                'msg':hr.responseText
              }
            },
            '_error_fields':{},
            'result':''
          };
        }
      }
    }
  }
  return hRet;
}
shRpc.jsAsyncCall = function(sUrl,xCallParams,sWorker,hWorkerParams){
  var params = shRpc.convertParams(xCallParams);
  if (window.ActiveXObject){
    var hr = new ActiveXObject("Msxml2.XMLHTTP");
  }else if (window.XMLHttpRequest){
    var hr = new XMLHttpRequest();
  }
  if (hr){
    hr.onreadystatechange = function(){
      if (hr.readyState == 4){
        if (hr.status == 200){
          try{
            eval('hRet ='+hr.responseText);
          }catch(e){
            var iNum = hr.responseText.indexOf('{');
            if (iNum>-1){
              eval('hRet ='+hr.responseText.substr(iNum));
              hRet['_status'] = {
                '0':{
                  'typ':'err',
                  'msg':hr.responseText.substr(0,iNum-1)
                }
              }
            }else{
              hRet = {
                '_status':{
                  '0':{
                    'typ':'err',
                    'msg':hr.responseText
                  }
                },
                '_error_fields':{},
                'result':''
              };
            }
          }
        }
        shRpc.parseResult(hRet,params,{},1,'shRpc.jsAsyncCallback',sWorker,hWorkerParams);
      }
    }
    hr.open("POST",escape(sUrl),true);
    hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    hr.send(params);
  }
}
shRpc.jsAsyncCallback = function(sWorker,hWorkerParams,hRet,hAssigns){
  if (typeof(sWorker) != 'undefined'){
    if (typeof(sWorker) == 'function'){
      var hParams = {
        'data':hRet,
        'assigns':hAssigns
      };
      if (typeof(hWorkerParams) != 'undefined'){
        hParams['params'] = hWorkerParams;
      }
      sWorker(hParams);
    }else{
      eval(sWorker+'({\'data\':hRet,\'assigns\':hAssigns'+(typeof(hWorkerParams) != 'undefined' ? ',\'params\':hWorkerParams' : '')+'})');
    }
  }else{
    if (sWorker){
      shStatus.add('err','Worker-Function: '+sWorker+' not valid');
    }
  }
}

shRpc.call = function(sFunc,frm,hInputReplace){
  if (typeof(frm) == 'undefined'){
    var hRet = shRpc.jsCall('/'+_sid+'/'+sFunc);
  }else{
    var hRet = shRpc.jsCall('/'+_sid+'/'+sFunc,frm);
  }
  return shRpc.parseResult(hRet,frm,hInputReplace,0);
}
shRpc.aCall = function(sFunction,xCallParams,sWorker,hWorkerParams){
  shRpc.jsAsyncCall('/'+_sid+'/'+sFunction,xCallParams,sWorker,hWorkerParams);
}
shRpc.setSessionVal = function(hArgs){
  shRpc.aCall('_system/setSession/',hArgs);
}
shRpc.xmlCall = function(sUrl){ //DEPRICATED
  if (window.ActiveXObject){
    var hr = new ActiveXObject("Microsoft.XMLHTTP");
    if (hr){
      hr.open("GET",escape(sUrl),false);
      hr.send();
      if (hr.status == 200){
        doc = new ActiveXObject("Microsoft.XMLDOM");
        doc.async = 'false';
        doc.loadXML(hr.responseText);
      }
    }
  }else if (window.XMLHttpRequest){
    var parser = new DOMParser();
    var hr = new XMLHttpRequest();
    hr.open("GET",escape(sUrl),false);
    hr.send(null);
    if (hr.status == 200){
      var doc = parser.parseFromString(hr.responseText,"text/xml");
    }
  }
  return doc;
}
shRpc.getHashFromChilds = function(oChilds){ //DEPRICATED
  var entry = {};
  for (var j=0; j<oChilds.length; j++){
    entry[oChilds[j].tagName.substring(1)] = (oChilds[j].hasChildNodes() 
      ? (oChilds[j].firstChild.hasChildNodes()
        ? shRpc.getHashFromChilds(oChilds[j].childNodes)
        : oChilds[j].firstChild.nodeValue)
      : "");
  }
  return entry;
}
shRpc.viewMaintenance = function(){
  shRpc.aCall('data/getMaintenance',{},'shRpc.showMaintenance');
}
shRpc.showMaintenance = function(hParams){
  bfDialog.showGhost(1,0);
  if (bfDialog.getTop() == ''){
    bfDialog.show(1,'_maintenance');
  }else{
    bfDialog.sub.show(1,'_maintenance');
  }
}
shRpc.viewLogin = function(){
  shRpc.aCall('data/getLogin',{},'shRpc.showLogin');
}
shRpc.showLogin = function(hParams){
  bfDialog.showGhost(1,0);
  if (bfDialog.getTop() == ''){
    bfDialog.show(1,'_login');
  }else{
    bfDialog.sub.show(1,'_login');
  }
  document['_login'].action = '/'+_sid+'/'+_mod;
}
-->
