/* $Id: base.js 24947 2011-12-08 14:55:55Z mbi $ */
var root = document.location.href.substring(0,document.location.href.lastIndexOf("/")+1);
var approot = "";
var param = window.location.search;
if(param.length > 0) param = unescape(param.substring(1));
var popup = window.createPopup();

var doOK = false;
var okbtn = null;

var language = "";
var langdef = "DEFI";
var showbstdef = "ie";
var debug = "0";
var country = ""; // ch="", at, de
var countrysuff = "";

var title1="";

var beenden = false;

// ####################### START CALLS #######################

function CALL_PERS_DOCOMMIT(control){}

function CALL_WRITE_LOG(action){
	if(action == "logout"){
		doCloseWindow();
	}
}

// ####################### END   CALLS #######################

// ####################### START DB CALLS #######################
// Standard ist in db.js, hier nur wenn fuer Bausteine gueltig sein muss

var NO_DB = "Die Verbindung zur Datenbank ist unterbrochen.";
function getQueryData(handle){
  return(String(atlbplugin.GetQueryData(handle).replace(/\s/g,"")));
}
function showMsg(handle,msg1,msg2){
  var error = (handle < 0) ? "" : atlbplugin.GetQueryData(handle);
  var msg = (msg1=="" ? "" : translate(this, msg1)+"\n") + translate(this, msg2);
  showMessage(msg + (error == "" ? "" : "\nError: "+translate(this, error)),3);
}

function UPDATE_WRK(id,type,text1,text2,data){
  var handle = atlbplugin.OpenTransaction();
  if(handle < 0){
    showMsg(handle, NO_DB, "Der WRK kann nicht gespeichert werden.");
    return(false);
  }
  atlbplugin.SetQueryParam(handle, "TYPE", type);
  atlbplugin.SetQueryParam(handle, "TEXT1", text1);
  atlbplugin.SetQueryParam(handle, "TEXT2", text2);
  atlbplugin.SetQueryParam(handle, "DATA", data);
  if(id != "") atlbplugin.SetQueryParam(handle, "WRK_ID", id);
  if(atlbplugin.RunQuery(handle,"adi/insert_or_update/e_wrk") != 200){
    showMsg(handle, "", "Der WRK kann nicht gespeichert werden.");
    atlbplugin.CloseTransaction(handle);
    return("");
  }
  id = getQueryData(handle);
  atlbplugin.CloseTransaction(handle);
  return(id);
}

// ####################### END   DB CALLS #######################

function getAppRoot(){
  var sprotocol = document.location.protocol;
  if(sprotocol.toLowerCase()=="file:") return (root+approot);
  var shost = document.location.host;
  var spathname = document.location.pathname;
  var pos = spathname.indexOf("/",1);
  if (pos > 0) spathname = spathname.substring(0,pos+1);
  return (sprotocol+"//"+shost+spathname);
}

function getPrintURL(servlet,pid){
  if (servlet == null) servlet = "";
  if (pid == null) pid = "";
  
  var out = "/" + (servlet == "" ? "baseprint" : servlet) + (pid == "" ? "" : "?ID="+pid);

  var sprotocol = sbiplg.GetConfigString("CONFIG.DBSERVER", "protocol", "http");
  var shost = sbiplg.GetConfigString("CONFIG.DBSERVER", "host", ""); // localhost
  var sport = sbiplg.GetConfigString("CONFIG.DBSERVER", "port", "");
  var base  = sbiplg.GetConfigString("CONFIG.DBSERVER", "base", "");
  if (sport != "") sport = ":"+sport;

  if (shost == "") return getAppRoot() + "atlas" + out;
  return sprotocol+"://"+shost+sport+base + out;
}

function initSetting(){
  country = compute("F_BASE_Land");
  if (country == "ch") country = "";
  if (country.length > 0) countrysuff = "_" + country;
  langdef = sbiplg.GetConfigString("CONFIG.LANGUAGE", "value", langdef);
  showbstdef = sbiplg.GetConfigString("CONFIG.SHOWBAUSTEIN", "value", showbstdef);
  debug = sbiplg.GetConfigString("CONFIG.DEBUG", "value", debug);
}

// ------------ ONCONTEXTMENU ----------

function add_ocm(fr){
	try{
    if (!fr.contentWindow.document.oncontextmenu){
      fr.contentWindow.document.detachEvent('oncontextmenu',doc_oncontextmenu);
      fr.contentWindow.document.attachEvent('oncontextmenu',doc_oncontextmenu);
    }
  } catch(e){return false;}
}

function doc_oncontextmenu(e){
  try{
    // e.ctrlKey e.altKey
    if (!e) return false;
    if (popup.document.styleSheets.length == 0) popup.document.createStyleSheet(getAppRoot()+"styles.css");
    if (!popup.document.oncontextmenu) popup.document.oncontextmenu = parent.doc_oncontextmenu;
    popup.document.doc = e.srcElement.document;

    var mtitle = new Array();var mfunc = new Array();
    if (debug == "1"){
      mtitle = new Array("Attribute","Property","Attribute und Property","Reset Attribute und/oder Property","Show (Clipboard) XML Data","Show (Clipboard) B64 Data","Write XML Data","Read XML Data","JS Direct (doc)","Original Menu");
      mfunc = new Array("parent.doc_ocm_show_attr(doc,'A');","parent.doc_ocm_show_attr(doc,'P');","parent.doc_ocm_show_attr(doc,'AP');","parent.doc_ocm_del_attr(doc);parent.popup.hide();","parent.doc_ocm_showdata(doc,'XML');","parent.doc_ocm_showdata(doc,'B64');","parent.doc_ocm_xmldata(doc,'w');","parent.doc_ocm_xmldata(doc,'r');","parent.doc_ocm_js(doc);","parent.doc_ocm_browser(doc);");
      if (e.srcElement.id.indexOf("pmsattrdiv_") >= 0){
        mtitle = new Array("Copy to Clipboard");
        mfunc = new Array("parent.doc_ocm_copy_attr(doc,'"+e.srcElement.id+"');");
      }
    }
    var b = "<div class=rmc style='width:100%;height:100%;padding:2px;border:none'>";
    for(var i = 0; i < mtitle.length; i++){
      b = b + " <div class='rmc' onMouseOver=this.className='rmc_m'; onMouseOut=this.className='rmc'; onClick="+mfunc[i]+">"+mtitle[i]+"</div>";
    }
    b = b + " <div class='rmc_last' onMouseOver=this.className='rmc_last_m'; onMouseOut=this.className='rmc_last'; onClick=parent.doc_ocm_sbi(event);>&#169;&nbsp;"+getYearNow()+" Software Beratungs-Institut AG</div>";
    b = b + "</div>";
    popup.document.body.innerHTML = b;
    // 19 = item Height, 5 = 2x2px padding + 1px last border
    popup.show((e.offsetX+5), (e.offsetY+0), 215, ((mtitle.length+1)*19+5), e.srcElement);
    return false;
  } catch(er){showJSErrMessage("doc_oncontextmenu",er);return false;}
}

function doc_ocm_sbi(ev){
  if(ev.ctrlKey && ev.altKey){
    debug = "1";
    showMessage("Debug is enabled.");
  } else open('http://www.sbi.ch','_blank');
  popup.hide();
}
function doc_ocm_js(doc){
  try{
    popup.hide();
    var js = "alert(compute('A_BORG_ROLLE'));";
    if (popup.document.js) js = popup.document.js
    var rc = showPromt("Java Script Code:", js);
    if (rc){
      popup.document.js = rc;
      eval(rc);
    }
  } catch(er){showJSErrMessage("doc_ocm_js",er);return false;}
  return true;
}
function doc_ocm_xmldata(doc,mode){
  try{
    popup.hide();
    var path = "c:\\temp\\blob.xml";
    if (popup.document.fil) path = popup.document.fil
    var fil = showPromt((mode=='w'?"XML speichern in :":"XML lesen von :"), path, 2);
    if (fil){
      var corfile = fil.replace(/\\/g,"/"); 
      var fr = this;
      if(typeof(frBase) != "undefined") fr = frBase;
      if(mode == "w"){
        fr.sbiplg_writeXmlData(corfile);
        showMessage("Daten wurden gespeichert in :<br><br>"+fil+"<br><br>("+corfile+")");
      } else{
        fr.sbiplg_readXmlData(corfile);
        showMessage("Daten wurden gelesen von :<br><br>"+fil+"<br><br>("+corfile+")");
      }
      popup.document.fil = fil;
    }
  } catch(er){showJSErrMessage("doc_ocm_xmldata",er);return false;}
  return true;
}
function doc_ocm_showdata(doc,mode){
  try{
    popup.hide();
    sbiplg.storexmlsession();
    var blob = "";
    var plg = sbiplg;
    //if(doc.frames.window.sc) plg = doc.frames.window.sc.sbiplg;
    if((typeof(frBase) != "undefined") && frBase.sbiplg) plg = frBase.sbiplg;
    plg.storexmlsession();
    if (mode == "B64") blob = plg.base64data;
    if (mode == "XML") blob = plg.storeddata;
    popup.document.body.innerHTML = "<div id='bdata' class='rmc_storedata'></div>";
    popup.document.all.item("bdata").innerText = blob;
    var sw = 700; var sh = 500;
    var sx = (screen.availWidth - sw)/2;
    var sy = (screen.availHeight - sh)/2;
    popup.show(sx, sy, sw, sh, doc.top);
    window.clipboardData.setData("Text", blob);
  } catch(er){showJSErrMessage("doc_ocm_showdata",er);return false;}
  return true;
}
function doc_ocm_browser(doc){
  try{
    doc.detachEvent('oncontextmenu',doc_oncontextmenu);
    popup.hide();
  } catch(er){showJSErrMessage("doc_ocm_browser",er);return false;}
  return true;
}
function doc_ocm_add_attr(doc,mode){
  try{
    var frm = doc.forms[0];
    if (frm){
      for(var i = 0; i < frm.elements.length; i++){
        var control = frm.elements[i];
        if (control.name == "") continue;
        var td = control.parentElement;

        var pref = (td.title==""?"":td.title+" , ");
        var attr = control.name;
        promostype = "";
        var item = null;
        if (!item && doc.frames.attributes){
          item = doc.frames.attributes.searchItemByControl(attr);
          if (item){attr = item.attributeName; promostype = "A";}
        }
        if (!item && doc.frames.properties){
          item = doc.frames.properties.searchItemByControl(attr);
          if (item){attr = item.propertyName; promostype = "P";}
        }
        if (promostype == "") continue;
        //if (control.type && control.type == "select-one") attr = attr + " (" + compute(attr+".table") + ")";
        if (mode == "A" && promostype == "P") attr = "";
        if (mode == "P" && promostype == "A") attr = "";
        td.title = pref + attr;
      }
    }
  } catch(er){showJSErrMessage("doc_ocm_add_attr",er);return false;}
  return true;
}
function doc_ocm_del_attr(doc){
  try{
    var frm = doc.forms[0];
    if (frm){
      for(var i = 0; i < frm.elements.length; i++){
        var control = frm.elements[i];
        var td = control.parentElement;
        var divx = doc.all.item("pmsattrdiv_"+String(i));
        if (divx) divx.removeNode(true);
        td.title = "";
      }
    }
  } catch(er){showJSErrMessage("doc_ocm_del_attr",er);return false;}
  return true;
}
function doc_ocm_copy_attr(doc,divxid){
  try{
    var divx = doc.all.item(divxid);
    if (divx) window.clipboardData.setData("Text", divx.innerText);
    popup.hide();
  } catch(er){showJSErrMessage("doc_ocm_del_attr",er);return false;}
  return true;
}
function doc_ocm_show_attr(doc,mode){
  try{
    var frm = doc.forms[0];
    if (frm){
      if (!doc_ocm_del_attr(doc)) return false;
      if (!doc_ocm_add_attr(doc,mode)) return false;
      var tdid = "";
      for(var i = 0; i < frm.elements.length; i++){
        var control = frm.elements[i];
        var td = control.parentElement;
        if (td.title == "" || td.uniqueID  == tdid) continue;
        tdid = td.uniqueID;

        var tag =   "<div id='pmsattrdiv_"+i+"' nowrap style='position:relative;z-index:100; padding: 0,2,0,2; overflow: hidden; text-align: left; font-size: 10px; background-color: #ffffcc;'>"+td.title+"</div>";
        td.innerHTML = tag + td.innerHTML;
        
        var dx = doc.all("pmsattrdiv_"+i);
        dx.style.position = "absolute";
        dx.style.top = parseInt(dx.offsetTop)-parseInt(dx.clientHeight);
      }
    }
  } catch(er){showJSErrMessage("doc_ocm_show_attr",er);return false;}
  return true;
}
// ------------ ONCONTEXTMENU ----------

function showJSErrMessage(fname,er){
  try{
    showMessage("Error in JavaScript ("+fname+"):<br>  name : "+er.name+"<br>  number : "+er.number + "<br>  message : "+er.message+ "<br>  description : "+er.description, 3);
  } catch(e){return false;}
}

function setVarsParameter(){
  if(param.length == 0) return;
  var urlparam  = sbiplg.GetConfigString("CONFIG.URLPARAM", "value",  "&");
  var paarArr = param.split(urlparam);
  for(var i = 0; i < paarArr.length; i++){
    var paramArr = paarArr[i].split("=");
    if(paramArr[0] == "debug"){debug = paramArr[1];continue;}
    if(paramArr[0] == "lang") paramArr[0] = "A_BASE_Sprache";
    if(paramArr[0] == "A_BASE_Sprache") paramArr[1] = convertLanguage(paramArr[1]);
    if(paramArr[0] != "") sbiplg_setvar(paramArr[0], paramArr[1]);
  }
}

function getParameter(s){
  if(param.length == 0) return "";
  var urlparam  = sbiplg.GetConfigString("CONFIG.URLPARAM", "value",  "&");
  var paarArr = param.split(urlparam);
  for(var i = 0; i < paarArr.length; i++){
    var paramArr = paarArr[i].split("=");
    if(paramArr[0] == s){
      return paramArr[1];
    }
  }
  return "";
}

function convertLanguage(lan){
  switch(lan.toLowerCase()){
    case "de": lan = "D";     break;
    case "fr": lan = "F";     break;
    case "it": lan = "I";     break;
    case "en": lan = "E";     break;
    default  :                break;
  }
  return(lan);
}

function compute(prop,err,format){
  if (err == null) err = "";
  if(sbiplg_compute(prop) != 0) return(err);
  var rv = document.sbiplg.result;
  if (format != null) rv = compute("format(\""+rv+"\";\""+format+"\")",rv,null)
  return(document.sbiplg.result);
}

function compute2(prop,err,format){
  if (err == null) err = "";
  if(sbiplg2.compute(prop) != 0) return(err);
  var rv = sbiplg2.result;
  if (format != null) rv = compute2("format(\""+rv+"\";\""+format+"\")",rv,null)
  return(sbiplg2.result);
}

function getPLGFormat(f){
  // Formate: W0,W1,W2 - Waerung; P0,..P4 - Prozent; N0,N1,N2 - Nummer;
  if(f.length != 2) return "";
  f = f.toUpperCase();
  var fn = f.substr(0,1);
  var fz = f.substr(1,1);
  if(isNaN(fz)) return "";
  
  // ch
  var CURRENCY    = "CHF";
  var DECIMALSEP  = ".";
  var GROUPINGSEP = "'";

  // at, de
  if(country != ""){
    CURRENCY    = "€";
    DECIMALSEP  = ",";
    GROUPINGSEP = ".";
  }

  // bei bedarf wird duerch config ueberschrieben
  var currency    = sbiplg.GetConfigString("CONFIG.CURRENCY", "value", CURRENCY);
  var decimalSep  = sbiplg.GetConfigString("CONFIG.DECIMALSEP", "value", DECIMALSEP);
  var groupingSep = sbiplg.GetConfigString("CONFIG.GROUPINGSEP", "value", GROUPINGSEP);

  var pref = "~"+groupingSep+"1"+decimalSep;

  if(fn == "W") return (pref+fz+" "+currency);
  if(fn == "P") return (pref+fz+" %");
  if(fn == "N") return (pref+fz);

  return "";
}

function getChoiceArrayResult(attr,plg){
  if (plg == null) plg = sbiplg;
  var col = new Array();
  var code = plg.choice("", attr);
  while(code == 1){
    col.push(plg.result);
    code = plg.choice("", attr);
  }
  return col;
}

function getChoiceArrayMessage(attr,plg){
  if (plg == null) plg = sbiplg;
  var col = new Array();
  var code = plg.choice("", attr);
  while(code == 1){
    col.push(plg.message);
    code = plg.choice("", attr);
  }
  return col;
}

function setModelData(data){
  if(data.length > 0){
    sbiplg.base64data = data;
    sbiplg.restorexmlsession();
    sbiplg_setvar("A_BASE_Sprache", language);
  }
}

function setModelDataEx(data){
  setModelData(data);
}

function setNavTit(fr,id){
  var navtit = frNavInfo.document.all("navtitel");
  if(!navtit) return;
  var titobj = fr.document.all(id);
  if(!titobj) return;
  var lbl = (titobj.originText ? titobj.originText : titobj.innerText);
  navtit.originText = "";
  navtit.innerText = lbl;
  translateObject(fr, navtit);
  setTitle(lbl,"",""); 
  if(id == "kv") title1 = compute("F_BASE_ICBez");
  else title1 = document.title;
  setTitleT1(title1);
}

function setNavImg(img){
  var navpic = frNavInfo.document.all("navpic");
  if(!navpic) return;
  navpic.src = img;
}

function setTitle(t2,t3,t4){
  var delt = " > ";
  var fr = frKopfzeile;
  if(fr.st1){
    if(t2 != null){fr.st2.originText="";fr.st2.innerText=t2;translateObject(fr, fr.st2);fr.st12.innerText=(t2==""?"":delt);}
    if(t3 != null){fr.st3.originText="";fr.st3.innerText=t3;translateObject(fr, fr.st3);fr.st23.innerText=(t3==""?"":delt);}
    if(t4 != null){fr.st4.originText="";fr.st4.innerText=t4;translateObject(fr, fr.st4);fr.st34.innerText=(t4==""?"":delt);}
  }
}

function setTitleT1(t1){
  if(t1 != null && frKopfzeile.st1 != null) frKopfzeile.st1.innerText=t1;
}

function resetTitle1(){
  if(title1 == "" || title1 == null)
    setTitleT1(document.title);
  else setTitleT1(title1);
}

function setLanguage(l){
  l = l.toUpperCase();
  if(l == "" || language == l) return;

  try{ // Sperren falls Modus: EDIT
    for(var i = 0; i < frMain.frames.length; i++){
      var j=0;
      do{
        var fx = frMain.frames[i];
        if(frMain.frames[i].frames.length != 0)
          fx = frMain.frames[i][j];
        if(fx && typeof(fx.name) == "string" && fx.name != ""){
          if (fx.sel && fx.sel.table){if (!fx.sel.changeRecord) return;}
          if (fx.sel_sub && fx.sel_sub.table){if (!fx.sel_sub.changeRecord) return;}
        }
         j++;
      }while(j < frMain.frames[i].frames.length)
    }
  } catch(e){showJSErrMessage("setLanguage",e);return;}
  
  language = l;
  sbiplg_setvar("A_BASE_Sprache", language);
  sbiplg_setvar("A_DRK_Sprache", language);

  var frCol = new Array(frKopfzeile, frFusszeile, frNavInfo, frNavigation);
  for(var i = 0; i < frCol.length; i++){
    try{ translatePage(frCol[i]); }catch(e){}
    try{ if(frCol[i].retranslatePage) frCol[i].retranslatePage(); }catch(e){}
  }
  for(var i = 0; i < frMain.frames.length; i++){
    var j=0;
    do{
      var fx = frMain.frames[i];
      if(frMain.frames[i].frames.length != 0)
        fx = frMain.frames[i][j];
        
      if(fx && typeof(fx.name) == "string" && fx.name != ""){
        try{ translatePage(fx); }catch(e){}
        try{ if(fx.retranslatePage) fx.retranslatePage(); }catch(e){}
        try{ if(fx.properties) fx.properties.updateAll(); }catch(e){}
        try{ 
          if(fx.attributes){
            if(fx.attributes.items[0] && typeof(fx.attributes.items[0].prepared) != "undefined"){
              fx.attributes.updateAll();
            }
          }
        }catch(e){}
      }
      j++;
    }while(j < frMain.frames[i].frames.length)
  }
  
  if (frCol) delete frCol;
  if(resetTitle1)
    resetTitle1();
    
  if(frMain.frSM2 && !frMain.frSM3.frWrk_Sub) 
    if(frMain.frSM2.sel != null)
      frMain.frSM2.sel.setDisabled();
}

function setVarsEmptyPer(handle){
  if(handle < 0) return;
  sbiplg_setvar("A_PERi", "1");
  sbiplg_setvar("A_PER_BORG_ID", atlbplugin.GetQueryResultItem(handle, "BORG_ID", 0));
  sbiplg_setvar("A_PER_Type[0]", atlbplugin.GetQueryResultItem(handle, "TYPE", 0));
  sbiplg_setvar("A_PER_Extern_ID[0]", atlbplugin.GetQueryResultItem(handle, "EXTERN_ID", 0));
  sbiplg_setvar("A_PER_Anrede[0]", atlbplugin.GetQueryResultItem(handle, "ANREDE", 0));
  sbiplg_setvar("A_PER_Titel[0]", atlbplugin.GetQueryResultItem(handle, "TITEL", 0));
  sbiplg_setvar("A_PER_VName[0]", atlbplugin.GetQueryResultItem(handle, "VNAME", 0));
  sbiplg_setvar("A_PER_Name[0]", atlbplugin.GetQueryResultItem(handle, "NAME", 0));
  sbiplg_setvar("A_PER_Geschlecht[0]", atlbplugin.GetQueryResultItem(handle, "GESCHLECHT", 0));
  sbiplg_setvar("A_PER_Gebdat[0]", atlbplugin.GetQueryResultItem(handle, "GEBDAT", 0));
  sbiplg_setvar("A_PER_Nationalitaet[0]", atlbplugin.GetQueryResultItem(handle, "NATIONALITAET", 0));
  sbiplg_setvar("A_PER_Zivilstand[0]", atlbplugin.GetQueryResultItem(handle, "ZIVILSTAND", 0));
  sbiplg_setvar("A_PER_Status[0]", atlbplugin.GetQueryResultItem(handle, "STATUS", 0));
  sbiplg_setvar("A_PER_Strasse[0]", atlbplugin.GetQueryResultItem(handle, "STRASSE", 0));
  sbiplg_setvar("A_PER_Postfach[0]", atlbplugin.GetQueryResultItem(handle, "POSTFACH", 0));
  sbiplg_setvar("A_PER_PLZ[0]", atlbplugin.GetQueryResultItem(handle, "PLZ", 0));
  sbiplg_setvar("A_PER_Ort[0]", atlbplugin.GetQueryResultItem(handle, "ORT", 0));
  sbiplg_setvar("A_PER_Land[0]", atlbplugin.GetQueryResultItem(handle, "LAND", 0));
  sbiplg_setvar("A_PER_Tel[0]", atlbplugin.GetQueryResultItem(handle, "TEL", 0));
  sbiplg_setvar("A_PER_Mobil[0]", atlbplugin.GetQueryResultItem(handle, "MOBIL", 0));
  sbiplg_setvar("A_PER_Fax[0]", atlbplugin.GetQueryResultItem(handle, "FAX", 0));
  sbiplg_setvar("A_PER_EMail[0]", atlbplugin.GetQueryResultItem(handle, "EMAIL", 0));
  sbiplg_setvar("A_PER_Privat[0]", atlbplugin.GetQueryResultItem(handle, "PRIVAT", 0));
  sbiplg_setvar("A_PER_Kontakt[0]", atlbplugin.GetQueryResultItem(handle, "KONTAKT", 0));
}

function config_refreshbeadata(){
  return (sbiplg.GetConfigString("CONFIG.REFRESHBEADATA", "value", "1") == "1");
}
function config_importfile(){
  return sbiplg.GetConfigString("CONFIG.IMPORTFILE", "value", "");
}

function allBorg(){
  return (compute("A_BASE_EigeneBorg","1") == "0");
}
function getORG_ID(){
  return compute("A_ORG_ID");
}
function setORG_ID(id){
  sbiplg_setvar("A_ORG_ID", id);
}
function getBORG_ID(){
  return compute("A_BORG_ID");
}
function setBORG_ID(id){
	
	if(id.indexOf('_')>0){
		setORG_ID(id.split("_")[0]);
		setBEA_ID(id.split("_")[1]);
  }

	
  sbiplg_setvar("A_BORG_ID", id);
  
}
function getBEA_ID(){
  return compute("A_BEA_ID");
}
function setBEA_ID(id){
  sbiplg_setvar("A_BEA_ID", id);
}
function getPER_ID(){
  return compute("A_PER_ID");
}
function setPER_ID(id){
  sbiplg_setvar("A_PER_ID", id);
}
function getVOR_ID(){
  return compute("A_VOR_ID");
}
function setVOR_ID(id){
  sbiplg_setvar("A_VOR_ID", id);
}
function getRolle(){
  return compute("A_BORG_Rolle");
}
function setRolle(id){
  sbiplg_setvar("A_BORG_Rolle", id);
}

function isAllowed(action){
  if (debug == "1"){
    var cfgStati = sbiplg.GetConfigString("CONFIG.ENABLEDBTNID."+action, "value", "");
    if (cfgStati == "1" || cfgStati == "0") return(cfgStati=="1");
  }
  return(compute('isAllowed("'+action+'")')=="1");
}

function saveAllowed(){
  return (compute("F_VOR_SaveAllowed") == "1");
}

function printAllowed(){
  return (compute("F_VOR_PrintAllowed") == "1");
}

function hideFrameset(){
  lOben.location.href=lOben.location.href.replace("leer.html","watermark.html");
  rowsfrset.rows="*,0,1";
}

function showFrameset(){
  lOben.location.href=lOben.location.href.replace("watermark.html","leer.html");
  rowsfrset.rows="1,*,1";
}

function mover(control){
  var cl = getCl(control);
  if(control.className==cl+"_e") control.className=cl+"_m";
}

function mout(control){
  var cl = getCl(control);
  if(control.className==cl+"_m") control.className=cl+"_e";
}

function setAktiv(control){
  if(control == null) return;
  control.className=getCl(control)+"_a";
  control.document.body.setAttribute("aktivebutton", control.id);
  setRegisterWidth(control);
}

function setRegisterWidth(control, norefresh){

  if(control.tagName.toLowerCase() == "td" && control.className.indexOf("register") > -1){

    var l = "90px";
    if(control.className.indexOf("subregister2") > -1) l = "500px";
    else if(control.className.indexOf("subregister120") > -1) l = "120px";
    else if(control.className.indexOf("subregister") > -1) l = "250px";
     
    if(norefresh == null){
      var allTd = control.document.getElementsByTagName("TD");
      for(i = 0; i < allTd.length; i++){ 
        if(allTd[i].className.indexOf("register") > -1 && allTd[i].className.indexOf("_a") == -1){
          //alert(allTd[i].innerHTML  );
          allTd[i].width=null;
        }
      }
    } 
    control.width = l;

    var pe = control.parentElement; 
    while(pe){
      if(pe.tagName.toLowerCase() == "td" ) pe.width = l;
      pe = pe.parentElement;
    }
  }
}

function setAllRegisterWidth(fr){
  for(var i = 0; i < fr.document.getElementsByTagName("td").length; i++) {
    var control = fr.document.getElementsByTagName("td")[i];
    if(control.className.indexOf("register") > -1 && control.className.indexOf("_a") > -1){ 
      setRegisterWidth(control, true)
    }
  }  
}

function setEnabled(control){
  if(control == null) return;
  control.className=getCl(control)+"_e";
}

function setDisabled(control){
  if(control == null) return;
  control.className=getCl(control)+"_d";
}

function getCl(control){
  return control.className.substr(0, control.className.indexOf("_"));
}

function cannNavigate(control){
  if(!isAllowed(control.id)) return false;
  var cl = getCl(control);
  if (control.className==cl+"_d") return false;
  if (control.className==cl+"_a") return false;
  return true;
}

function doNavigate(control,exitcode){
  if(!cannNavigate(control)) return;
  sbiplg.ExitProcess(exitcode);
}

function doNav(control,aktivate){
  
  if(!cannNavigate(control)) return;
  
  var aktivobj = control.document.all.item(control.document.body.getAttribute("aktivebutton"));
  if (aktivobj) setEnabled(aktivobj);

  if (aktivate) setAktiv(control);
  try{ eval("control.document.frames.self.do_"+control.id+"(control);"); } catch(e){} 
}

// ------------------------ START TABLE STEUERUNG -----------------------------------
function repaintTitle(table,tableTit){
  var origTitRow = table.rows(0);
  var imgWidth = new Array();

  var nc = origTitRow.insertCell(origTitRow.cells.length);
  nc.className = "tab_title_scroll";
  nc.style.width = "0px";

  var origTitRowCloned = origTitRow.cloneNode(true);
  tableTit.tBodies[0].appendChild(origTitRowCloned);
  for (var i=0; i<origTitRowCloned.cells.length-1; i++) imgWidth.push(origTitRowCloned.cells(i).scrollWidth);

  for (var i=0; i<origTitRowCloned.cells.length-1; i++){
    origTitRowCloned.cells(i).style.setExpression("width","tableSelection.rows(0).cells("+i+").offsetWidth");
  }
  origTitRowCloned.cells(origTitRowCloned.cells.length-1).style.setExpression("width","divSelection.offsetWidth-tableSelection.offsetWidth");

  for (var i=0; i<origTitRow.cells.length; i++){
    var dc = origTitRow.cells(i);
    if (imgWidth[i]) dc.innerHTML = "<img src='img/space.gif' width='" + imgWidth[i] + "' height='1' border='0'>";
    dc.style.height = "1px";
    dc.className = "tab_title_scroll";
    dc.id = "";
  }
  if (imgWidth) delete imgWidth;
}

function tableChangeClass(tab,rowToSel){
  if (!tab) return;
  for (var i = 1; i < tab.rows.length; i++){
    var row = tab.rows[i];
    for (var j = 0; j < row.childNodes.length; j++){
      row.childNodes[j].className = (row.childNodes[j].className).replace("_selected","");
      if (i == rowToSel && (row.childNodes[j].className).indexOf("_selected") < 0){
        row.childNodes[j].className = row.childNodes[j].className + "_selected";
      }
    }
  }
}
// ------------------------ STOP  TABLE STEUERUNG -----------------------------------

function setButtonStatus(stati,doc){
  if (stati && stati.length == 1) stati = getAllStati(stati, doc);
  var statiArr = stati.split(",");
  for(var i = 0; i < statiArr.length; i++){
    var objArr = statiArr[i].split("=");
    var obj = doc.all.item(objArr[0]);
    if(obj){
      if(objArr[1] == "0"){
        setDisabled(obj);
      } else if(isAllowed(objArr[0])){
        setEnabled(obj);
      } else{
        setDisabled(obj);
      }
    }
  }
}

function getAllStati(stati, doc){
  var allstati = "";
  var aktivebtnid = "";
  if (doc.body) aktivebtnid = doc.body.getAttribute("aktivebutton");
  var coll = doc.all.tags("td");
  if (coll!=null){
    for (var i=0; i<coll.length; i++){
      if (coll[i].id != "" && coll[i].className.indexOf("btn")>=0){
        if (aktivebtnid != coll[i].id) allstati = allstati + (allstati==""?"":",") + coll[i].id+"="+stati;
      }
    }
  }
  return allstati;
}


function getStatiRecord(prefix,ind){  
  var indA = ind.substring(1, ind.length-1).split(";")
  var i1 = "0";
  var i2 = "0";
  
  if(indA.length > 1){
    i1 = indA[0];
    i2 = indA[1]; 
  }
  var ignore = compute("F_BASE_IgnoreHerkunft(\""+prefix+"\";"+i1+";"+i2+")") == "1";
  if(ignore) return "1";
  else{
    var attrArr = getChoiceArrayMessage("$ATTRIBUTES("+prefix+"Herkunft"+")");
    if (attrArr.length == 1){
      return ("change="+(compute(attrArr[0]+ind) == "IC" ? "1" : "0"));
    }
}
  return null;
}

/*function getStatiRecord(prefix,ind){
  var attrArr = getChoiceArrayMessage("$ATTRIBUTES("+prefix+"Herkunft"+")");
  if (attrArr.length == 1){
    return ("change="+(compute(attrArr[0]+ind) == "IC" ? "1" : "0"));
  }
  return null;
}
*/
function getDateNow(styleCl){
  if (styleCl == null) styleCl = "";
  if (styleCl != "") styleCl = " class='"+styleCl+"'";
  var aktDate = new Date();
  var tag = aktDate.getDate();
  if (tag < 10) tag = "0" + tag;
  var monat = aktDate.getMonth()+ 1;
  if (monat < 10) monat = "0" + monat;
  var wochentag = new Array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
  return("<span"+styleCl+">"+translate(this, wochentag[aktDate.getDay()])+"</span>"+", "+tag+"."+monat+"."+getYearNow());
}

function getCopyrightYear(){
  return("© 2004-" + getYearNow());
}

function getYearNow(){
  var jahr = new Date().getYear();
  if(jahr < 100) jahr += 1900;
  return jahr;
}

function setFusszeile(id){
  var fr = frFusszeile;
  var auspr ="";
  var bst ="";
  var land="ch";
  if(id=="kv") bst = compute("F_BASE_ICBez")+"."+compute("F_ASS_CockpitLastAuspraegungFusszeile").toLowerCase();
  else bst = compute("F_BASE_Produkt");
   
   if(country != "")
    land = country;
   
   bst = getCopyrightYear()+" "+ bst+"."+land+" | www.sbi.ch";
   
  if(fr.bstName)
    fr.bstName.innerHTML='<a href="http://www.sbi.ch" target="_blank" class="fusszeile">'+ bst + '</a>';
 }



function closeWindow(){
  beenden = true;
  CALL_WRITE_LOG("logout");
  doCloseWindow();
}

function doCloseWindow(){
  sbiplg.SendMessageToBrowser("CloseWindow", "");
  opener = this;
  close();   
}

function getBlanks(count){
  var out = "";
  for (var i=0; i<count; i++) out = out + "&nbsp;";
  return out;
}

function uncheckAll(doc){
  var coll = doc.all.tags("input");
  if (coll!=null){
    for (var i=0; i<coll.length; i++){
      if (coll[i].type == "radio") coll[i].checked = false;
    }
  }
}

function getSQL(frm, ignore){
  var sql = "";
  if(frm && frm.elements.length){
    for(var i = 0; i < frm.elements.length; i++){
      var name = frm.elements[i].name;
      var value = frm.elements[i].value.replace(/\*/g,"%");
      if(ignore.indexOf(name) < 0){
        if(value.length > 0){
          if(sql.length > 0) sql = sql + " AND ";
          sql = sql + name + " LIKE '" + value + "'";
        }
      }
    }
  }
  return sql;
}

function delCR(txt){
  return txt.replace(/\r/g,"$r$").replace(/\n/g,"$n$");
}

function addCR(txt){
  return txt.replace(/\$r\$/g,String.fromCharCode(13)).replace(/\$n\$/g,String.fromCharCode(10));
}

function getVersion(bstInfo, path){
  if (!path) path = getAppRoot();
  if (!bstInfo){
    bstInfo = new Object();
    bstInfo.bstname = compute("F_BASE_Produkt");
    bstInfo.version = compute("F_BASE_Version");
    bstInfo.runtime = compute("$VERSION") + ", " + compute("$DATE");
    bstInfo.relpath = path+"version/releases.html";
  }
  bstInfo.sc = this;
  var rc = window.showModalDialog(path+"version/index.html",bstInfo,"dialogWidth:800px;dialogHeight:600px;help:no;status:no;scroll:no;resizable:yes;");
}

function executeFromConfig(configItem){
  var cmd = sbiplg.GetConfigString("CONFIG."+configItem, "value", "");
  if (cmd.length > 0) sbiplg_execute(cmd);
}

function showMessage(msg, msgType, btnOK, btnNOK, path){
  if (!path) path = getAppRoot();
  if (!btnNOK) btnNOK = "";
  if (!btnOK) btnOK = "OK";
  if (!msgType) msgType = 1;
  msgInfo = new Object();
  msgInfo.msg = msg;
  msgInfo.btnOK = btnOK;
  msgInfo.btnNOK  = btnNOK;
  msgInfo.msgType = msgType;
  msgInfo.sc = this;
  return window.showModalDialog(path+"message.html",msgInfo,"dialogWidth:440px;dialogHeight:170px;help:no;status:no;scroll:no;");
}

function showPromt(msg, msgDefault, msgType, btnOK, btnNOK, path){
  if (!path) path = getAppRoot();
  if (!btnNOK) btnNOK = "Abbrechen";
  if (!btnOK) btnOK = "OK";
  if (!msgType) msgType = 1;
  if (!msgDefault) msgDefault = "";
  var msgInfo = new Object();
  msgInfo.msg = msg;
  msgInfo.msgDefault = msgDefault;
  msgInfo.msgType = msgType;
  msgInfo.btnOK = btnOK;
  msgInfo.btnNOK  = btnNOK;
  msgInfo.sc = this;
  return window.showModalDialog(path+"promt.html",msgInfo,"dialogWidth:440px;dialogHeight:170px;help:no;status:no;scroll:no;");
}

// ------------ ONKEYDOWN ----------

function add_okd(fr){
	try{
    if (!fr.contentWindow.document.onkeydown){
      fr.contentWindow.document.detachEvent('onkeydown',doc_onkeydown);
      fr.contentWindow.document.attachEvent('onkeydown',doc_onkeydown);
    }
  } catch(e){return false;}
}

function doc_onkeydown(e){
  try{
    if (!e) return false;
    key = e.keyCode;
    var isInputText = e.srcElement.tagName == "INPUT" && e.srcElement.type.toUpperCase() == "TEXT";
    var isInputFile = e.srcElement.tagName == "INPUT" && e.srcElement.type.toUpperCase() == "FILE";
    var isTextArea  = e.srcElement.tagName == "TEXTAREA";
    var isReadOnly  = e.srcElement.readOnly; 
    if(key == 8 && (!(isInputText || isInputFile || isTextArea) || isReadOnly)) e.keyCode = false;
    if(key == 27 && (isInputText || isInputFile || isTextArea)) return false;
  } catch(er){showJSErrMessage("doc_oncontextmenu",er);return false;}
}
// ------------ ONKEYDOWN ----------

function vor_writeLocalXml(nameExt){
  // Es wird je noch Eintrag in der Config bei jedem Speichern in der DB ein lokales 
  // XML mitgeschreiben. 

  if(!nameExt) nameExt = "";
  
  if(sbiplg.GetConfigString("CONFIG.SAVEXML","value", "0") == "1"){ 
      // mit lokalem Save aus \Config.xml 
      var fileName = sbiplg.GetConfigString("CONFIG.SAVEXML_PATH","value","C:\\tmp\\"); 
      var bst = compute("A_VOR_Bstein_ID"); 
      var calendar = new Date();
      
      var code = format(calendar.getFullYear(),"0000");
      code += format(calendar.getMonth()+1,"00");
      code += format(calendar.getDate(),"00");
      code += format(calendar.getHours(),"00");
      code += format(calendar.getMinutes(),"00");
      code += format(calendar.getSeconds(),"00");
      code += "_" + format(Math.random()*10000000000000000,"0000000000");
      fileName += getBEA_ID() + "_" + bst + "_" + code; 

      var BstFilter = sbiplg.GetConfigString("CONFIG.SAVEXML_BST_FILTER","value","FPACH"); 

      if(bst.substr(0, BstFilter.length) == BstFilter) sbiplg_writeXmlData( fileName + nameExt + ".xml" ); 
    } 
    
}

function format(s,p){
  s = String(s);
  p = String(p);
  var delta = s.length - p.length;
  if (delta > 0) s = s.substr(0,p.length);
  else if (delta < 0) s = p.substr(0,Math.abs(delta)) + s;
  return s;
}

function trim (s) {

  s=s.replace(/^\s*(.*)/, "$1");
  s=s.replace(/(.*?)\s*$/, "$1");
  return s;
}
// ------------ ONFOCUS ----------
function setBackFocus(doc){
	setFocus(doc,true);
}
function setFocus(doc,backFocus){

    var formLength = doc.forms[0].length;
		var tabindex = 1;
		var maxtabindex = 1;
    
  	for(i=0; i< formLength; i++){
        var el = doc.forms[0].elements[i];
        if (el.getAttribute('tabindex') && parseInt(el.getAttribute('tabindex')) > maxtabindex)
          maxtabindex = parseInt(el.getAttribute('tabindex'));
  	}
  	if(backFocus){
  	  tabindex = maxtabindex;	   
    }

    for(i=0; i< formLength; i++){
			 var el = doc.forms[0].elements[i];
			 if (el.getAttribute('tabindex') == String(tabindex)){			 	  
			 	  if(!el.disabled && !el.readOnly &&!objectUnvisible(el)){
			 	  	 el.focus();
             if(el.tagName != "SELECT" && el.tagName != "TEXTAREA") el.select();             
             return;
			 	  }else{
			 	    if(backFocus)tabindex--
            else tabindex++;
            i=-1;
            if(tabindex == 0 || tabindex > maxtabindex) break;
			 	  }
			 }else{
			  	if(i == formLength-1){
    	      if(backFocus)tabindex--
            else tabindex++;
            i=-1;
            if(tabindex == 0 || tabindex > maxtabindex) break;
          }
			 }					 		
	  }	 
}
function objectUnvisible(obj){
	var found = false;
	while(obj != null){
		found = obj.style.display=="none";
		if(found) break;
		obj = obj.parentElement;
	}
  return found;	
}
