var DEBUG = false;
//------------------------------------------------
// GLOBAL EVENTHANDLING
//------------------------------------------------
document.onmouseover = _global_onmouseover;
document.onmouseout  = _global_onmouseout;
window.onunload      = _global_onunload;

//------------------------------------------------
// GLOBAL FORMVALIDATION
//------------------------------------------------
var arrFld;
var arrFieldnames = new Array();

//------------------------------------------------
// function arrFld()
// function ValidationRemove(p_sName) {
// function ValidateTQFields(frm)
// function ValidateByType(pFld)
// function validate_FileUpload(pFld)
// function validate_RegExp(pFld)
// function ValidateBLZ_DE(oEvent,pbFormat)
//------------------------------------------------

//------------------------------------------------
function arrFld() {
//------------------------------------------------
  var arg = arguments.length
  var frm = document.forms[0];
  var strfName = arguments[0],strFldName=strfName, strHidden="";
  if (strfName.length == 0)
    return
  if (strfName.indexOf("|") != -1) {
    strHidden  = strfName.split("|")[0]
    strFldName = strfName.split("|")[1]
  }
  if (arg > 5 && frm.elements[strFldName] != null && frm.elements[strFldName].type != null ) {
    this.CheckMode     = arg;
    this.xName         = strFldName;
    this.xDescription  = arguments[1];
    this.xStyle        = arguments[2];
    this.xMinLength    = parseInt(arguments[3], 10);
    this.xErrMsg       = arguments[4];
    this.xDefaultValue = arguments[5];
    this.FieldObj      = frm.elements[strFldName];
    this.FieldHiddenObj= frm.elements[strHidden];
    this.xType         = frm.elements[strFldName].type;
    this.xFieldStyle   = frm.elements[strFldName].style;
    this.xMaxValue     = 0
    this.xDepency      = 0
    this.xRegExp       = arguments[2];
    this.xDepencyCheck = true
    this.xIsOptional   = false
    this.xGroup        = ""

    if (arguments[2].indexOf("|")!=-1) {
      this.xStyle     = arguments[2].split("|")[0]
      this.xRegExp    = arguments[2].split("|")[1]
    }
    if (arg > 6) {
      if (arguments[6] != null) {
        this.xMaxValue = parseInt(arguments[6], 10);
      }
    }
    if (arg > 7) {
      if (arguments[7] != null && arguments[7]!=0) {
        this.xDepency = arguments[7]
      }
    }
    if (arg > 8) {
      if (arguments[8] != null) {
        this.xIsOptional = arguments[8];
      }
    }
    if (arg > 9) {
      if (arguments[9] != null) {
        this.xGroup = arguments[9];
      }
    }
  }
}

//-----------------------------------------------------------
function ValidationAdd(p_sName) {
//-----------------------------------------------------------
  var l_bAdd = true;
  for (var i = 0;i < arrFieldnames.length;i++) {
    if (arrFieldnames[i] == p_sName) l_bAdd = false
  }
  if (l_bAdd) arrFieldnames.push(p_sName)
}

//-----------------------------------------------------------
function ValidationRemove(p_sName) {
//-----------------------------------------------------------
  var l_aFieldnamesNew = new Array();
  for (var i = 0;i < arrFieldnames.length;i++) {
    if (arrFieldnames[i] != p_sName) l_aFieldnamesNew.push(arrFieldnames[i])
  }
  arrFieldnames = l_aFieldnamesNew;
}

//-----------------------------------------------------------
function ValidationGroupRemove(p_sName) {
//-----------------------------------------------------------
  var l_aFieldnamesNew = new Array();
  for (var i = 0;i < arrFieldnames.length;i++) {
    if (eval(arrFieldnames[i]).xGroup != p_sName) l_aFieldnamesNew.push(arrFieldnames[i])
  }
  arrFieldnames = l_aFieldnamesNew;
}

//-----------------------------------------------------------
function ValidateTQFields(frm) {
//-----------------------------------------------------------
  var arg = arguments.length;
  if (arg > 1) {
    var l_aFields = arguments[1].split(",");
    arrFieldnames = new Array();
    for (var i = 0;i < l_aFields.length;i++) arrFieldnames.push(l_aFields[i])
  }

  var arrFld = [];
  for (var i=0; i<arrFieldnames.length; i++) arrFld.push(eval(arrFieldnames[i]));

  var validate = true,i,l_bCheckForm=true;
  var oNextFocusName="";
  var oNextFocus=null,l_strErrMsg="",l_strRequiredFields="";
  if (parseInt(frm.action.indexOf("lSenderId=-1"))!= -1 || parseInt(frm.action.indexOf("bDelete=1"))!= -1) {
    l_bCheckForm=false;
  }
  if (frm.elements.length>0 && l_bCheckForm) {
    for (i=0;i<arrFld.length;i++) {
      if (!ValidateByType(arrFld[i])) {
        validate = false;
        if (oNextFocus==null) {
          oNextFocus=arrFld[i].FieldObj;
          oNextFocusName=arrFld[i].xDescription;
          if ( arrFld[i].FieldObj.displayStyle=='hidden' && arrFld[i].FieldHiddenObj ) {
              oNextFocus=arrFld[i].FieldHiddenObj;
          } else if (arrFld[i].xFieldStyle.visibility=='hidden') {
            arrFld[i].xFieldStyle.visibility='visible'
          }
        }
        l_strRequiredFields += "\t- " + arrFld[i].xDescription + "\n"
        if (l_strErrMsg=="")l_strErrMsg=arrFld[i].xErrMsg;
      }
    }
    if (l_strRequiredFields!="" && l_strErrMsg!="") {
        alert(g_strGlobalFillOut+"\n========================\t\n" + l_strRequiredFields +"\n"+oNextFocusName+":\n"+l_strErrMsg);
        if ( oNextFocus.type != "hidden" ) {
          try {
          oNextFocus.focus();
          } catch(e) {
            void(0);
          }
        }
    } else if (l_strRequiredFields!="" && l_strErrMsg=="") {
        if ( oNextFocus.type != "hidden" ) {
          try {
          oNextFocus.focus();
          } catch(e) {
            void(0);
          }
        }
    }
  }
  return validate;
}

//-----------------------------------------------------------
function ValidateByType(pFld) {
//-----------------------------------------------------------
  var validate=true,i,ii;
  var arrRegExp,bFoundErr=false;
  switch (pFld.xStyle) {

    case "empty":
      if ( pFld.FieldObj.value.length > 0) bFoundErr=true;
      break;

    case "text":
      if ( pFld.xIsOptional && pFld.FieldObj.value.length==0) break;
      if ( pFld.FieldObj.value.length<pFld.xMinLength) bFoundErr=true;
      break;

    case "MultipleIn":
      if (pFld.xDefaultValue.length>0) {
        var l_aDuty = pFld.xDefaultValue.split(",");
        var l_sTestValue = "," + pFld.FieldObj.value + ",";
        for (i = 0;i < l_aDuty.length;i++) {
          if(l_sTestValue.indexOf("," + l_aDuty[i] + ",") == -1) bFoundErr=true;
        }
      }
      break;

    case "MultipleNotIn":
      if (pFld.xDefaultValue.length>0) {
        var l_aFail = pFld.xDefaultValue.split(",");
        var l_sTestValue = "," + pFld.FieldObj.value + ",";
        for (i = 0;i < l_aFail.length;i++) {
          if(l_sTestValue.indexOf("," + l_aFail[i] + ",") > -1) bFoundErr=true;
        }
      }
      break;

    case "DateTime":
      if (pFld.xIsOptional && pFld.FieldObj.value.length == 0) break;
      if (pFld.FieldObj.value.length > 0) {
        var l_lTestvalue = GetUTCFromString(pFld.FieldObj.value, true)
        if (pFld.xMinLength > -1) {
          if (l_lTestvalue < pFld.xMinLength) bFoundErr=true;
        }
        if (pFld.xMaxValue > -1) {
          if (l_lTestvalue > pFld.xMaxValue) bFoundErr=true;
        }
      } else {
        bFoundErr=true;
      }
      break;

    case "Date":
      if (pFld.xIsOptional && pFld.FieldObj.value.length == 0) break;
      if (pFld.FieldObj.value.length > 0) {
        var l_lTestvalue = GetUTCFromString(pFld.FieldObj.value, false)
        if (pFld.xMinLength > -1) {
          if (l_lTestvalue < pFld.xMinLength) bFoundErr=true;
        }
        if (pFld.xMaxValue > -1) {
          if (l_lTestvalue > pFld.xMaxValue) bFoundErr=true;
        }
      } else {
        bFoundErr=true;
      }
      break;

    case "DateTimeCompare":
      if (pFld.FieldObj.value.length > 0 && document.forms[0].elements[pFld.xDefaultValue].value.length > 0) {
        var l_lFromvalue = GetUTCFromString(pFld.FieldObj.value, true)
        var l_lTovalue   = GetUTCFromString(document.forms[0].elements[pFld.xDefaultValue].value, true)
        if (l_lFromvalue > l_lTovalue) bFoundErr=true;
      } else {
        bFoundErr=true;
      }
      break;

    case "DateCompare":
      if (pFld.FieldObj.value.length > 0 && document.forms[0].elements[pFld.xDefaultValue].value.length > 0) {
        var l_lFromvalue = GetUTCFromString(pFld.FieldObj.value, false)
        var l_lTovalue   = GetUTCFromString(document.forms[0].elements[pFld.xDefaultValue].value, false)
        if (l_lFromvalue > l_lTovalue) bFoundErr=true;
      } else {
        bFoundErr=true;
      }
      break;

    case "currency":
      var l_ltmp = parseFloat(pFld.FieldObj.value.replace(/,/,"."))
      if (pFld.xMaxValue>0) {
        if (parseFloat(l_ltmp)<pFld.xMinLength || parseFloat(l_ltmp)>pFld.xMaxValue) {
          bFoundErr=true;
        }
      } else if (l_ltmp<pFld.xMinLength) {
        bFoundErr=true;
      }
      break;

    case "long":
      if ( pFld.xIsOptional && parseInt(pFld.FieldObj.value, 10)==0) {
        //dann ist nix
      } else {
          if (pFld.xMaxValue>0) {
            if (parseInt(pFld.FieldObj.value, 10)<pFld.xMinLength || parseInt(pFld.FieldObj.value, 10)>pFld.xMaxValue) {
              bFoundErr=true;
            }
          } else {
            if (parseInt(pFld.FieldObj.value)<pFld.xMinLength) {
              bFoundErr=true;
            }
          }
      }
      break;

    case "DropDown":
      if (pFld.FieldObj[pFld.FieldObj.selectedIndex].value.length==0) {
          bFoundErr=true;
      } else if (parseInt(pFld.FieldObj[pFld.FieldObj.selectedIndex].value, 10) < parseInt(pFld.xMinLength, 10)) {
          bFoundErr=true;
      }
      break;

    case "DropDownIndex":
      if (pFld.FieldObj.selectedIndex<pFld.xMinLength) {
        bFoundErr=true;
      }
      break;

    case "upload":
      if (!pFld.xIsOptional && parseInt(g_lLid)==-1 && pFld.FieldObj.value.length==0) {
        //leerer Datensatz ohne File is nicht
        bFoundErr=true;
      } else {
        if (pFld.FieldObj.value.length>0) {
          if (!validate_FileUpload(pFld)) {
            bFoundErr=true;
          }
        }
      }
      break;

    case "regexp":
      if ( pFld.xIsOptional && pFld.FieldObj.value.length==0) {
        //dann ist nix
      } else {
          if (!validate_RegExp(pFld))
              bFoundErr=true
      }
      break;

    default:
      if ( pFld.xStyle=="mail" || pFld.xStyle=="url" || pFld.xStyle=="ip" || pFld.xStyle=="articleno" ) {
          //abwärtskompatibel
          if (pFld.xIsOptional && pFld.FieldObj.value.length==0) {
          } else {
            pFld.xRegExp = pFld.xStyle;
            if ( !validate_RegExp(pFld) ) {
              bFoundErr=true
            }
          }
      }
  }
  if (bFoundErr) {
    if (pFld.xDepency.xStyle!=null) {
      pFld.xDepency.xIsOptional = false
      if (!ValidateByType(pFld.xDepency)) {
        validate = false;
      }
    } else {
      if (pFld.xDepency==-1) {
          pFld.xDepencyCheck=false
      } else if (pFld.xDepency==0) {
          validate=false;
      } else {
          if (!pFld.xDepency.xDepencyCheck) {
            validate=false;
          }
      }
    }
  }
  return validate
}

//--------------------------------------------------
function validate_FileUpload(pFld) {
//--------------------------------------------------
  var validate = true,l_strMime="",i,l_strMsg="", bMimeIsOk=false;
  var l_vRestrictedMime=pFld.xDepency;
    if (l_vRestrictedMime==0) {
    } else {
        l_strMime = pFld.FieldObj.value.substring(pFld.FieldObj.value.length-4,pFld.FieldObj.value.length).toLowerCase()
        l_strMsg = l_vRestrictedMime.length==1 ? "ist|das Format: |dem nicht." : "sind|die Formate: |keinem davon.";
        for (i=0;i<l_vRestrictedMime.length;i++) {
          if (l_vRestrictedMime[i].toLowerCase()==l_strMime) {
            bMimeIsOk = true;
            break;
          }
        }
        if (!bMimeIsOk) {
          alert('Achtung, Dateifehler =================\n\nim Feld: \"'+pFld.xDescription+'\" '+l_strMsg.split("|")[0]
                +' aus Sicherheitsgründen\nnur '+l_strMsg.split("|")[1]+l_vRestrictedMime.join("; ")
                +' zugelassen.\nDie von Ihnen gewählte Datei entspricht '+l_strMsg.split("|")[2]+'\t\t\n\n');
          validate = false;
        }
    }
    return validate;
  }

//--------------------------------------------------
function validate_RegExp(pFld) {
//--------------------------------------------------
  var validate=false,bDefaultMode=false,i,ii,k;
  var strRegExp,sTmp="";
  switch (pFld.xRegExp) {
    case "mail":
      bDefaultMode=true
      strRegExp = /^([_a-zA-Z0-9-.])+\@([_a-zA-Z0-9-.])+\.([a-z]{2,6})$/ ;
      break
    case "ip":
      bDefaultMode=true
      strRegExp = /^([0-9])+\.([0-9])+\.([0-9])+\.([0-9]{1,3})$/ ;
      break
    case "articleno":
      bDefaultMode=true
      strRegExp = /^([0-9]{5})+\.([0-9]{6})$/ ;
      if (pFld.FieldObj.value.length==0) {
        pFld.FieldObj.value=0
      }
      break
    case "mimetype":
      bDefaultMode=true
      if (pFld.FieldObj.value.length>0) {
        pFld.FieldObj.value=pFld.FieldObj.value.toLowerCase();
      }
      strRegExp = /^\.+([a-zA-Z]{3})$/ ;
      break
    case "plz":
      bDefaultMode=true
      if (isNaN(pFld.FieldObj.value) || pFld.FieldObj.value.length==0) {
          pFld.FieldObj.value="";
      } else {
          pFld.FieldObj.value = parseInt(pFld.FieldObj.value, 10)
      }
      if (pFld.FieldObj.value.length>pFld.xMinLength)
        pFld.FieldObj.value = pFld.FieldObj.value.substring(0,pFld.xMinLength)
      strRegExp = eval("/^([0-9]{"+pFld.xMinLength+"})$/ ");
      break
    case "blz_de":
      bDefaultMode=true
      if (pFld.xDepency==-1) {
          strRegExp = /^([0-9]{3})+ ([0-9]{3})+ ([0-9]{2})$/ ;
      } else {
          strRegExp = /^([0-9]{8})$/ ;
      }
      ValidateBLZ_DE(pFld.FieldObj,pFld.xDepency==-1 ? true:false);
      break
    case "url":
      bDefaultMode=true
      strRegExp = /^([_a-zA-Z0-9-.:\/]{3,15})+\.([_a-zA-Z0-9-]{3,30})+\.([_a-zA-Z0-9-]{2,6})+([_a-zA-Z0-9-\/?&,|.=]{0,300})$/ ;
      break
    case "url_http":
      arrRegExp = new Array();
      arrRegExp[0] = /^(http:\/\/)+([_a-zA-Z0-9-.:\/]{3,15})+\.([_a-zA-Z0-9-]{3,30})+\.([_a-zA-Z0-9-]{2,6})+([_a-zA-Z0-9-\/?&,|.=]{0,300})$/ ;
      arrRegExp[1] = /^(https:\/\/)+([_a-zA-Z0-9-.:\/]{3,15})+\.([_a-zA-Z0-9-]{3,30})+\.([_a-zA-Z0-9-]{2,6})+([_a-zA-Z0-9-\/?&,|.=]{0,300})$/ ;
      if (pFld.FieldObj.value.length != 0) {
        validate = arrRegExp[0].test(pFld.FieldObj.value) || arrRegExp[1].test(pFld.FieldObj.value)
      }
      break
  }
  if (bDefaultMode) {
    if (pFld.FieldObj.value.length != 0) {
      validate = strRegExp.test(pFld.FieldObj.value);
    }
  }
  return validate;
}

//--------------------------------------------------
function ValidateBLZ_DE(oEvent,pbFormat) {
//--------------------------------------------------
  if (oEvent.value.length>0) {
    var i=0,strRegExp = /^([0-9]{1})$/ ;
    var sT1="",sT2="",sChr="",iMax=8;
    sT1=oEvent.value;
    for (i=0;i<sT1.length;i++) {
      sChr=sT1.substring(i,i+1);
      if (strRegExp.test(sChr)) {
        sT2+=sChr;
      }
    }
    if (pbFormat) {
        // dann Leerzeichen einfügen
        sT1=sT2,sT2="",iMax=10;
        for (i=0;i<sT1.length;i++) {
          sChr=sT1.substring(i,i+1);
          if (i==2 ||i==5) {
            sT2+=sChr+' ';
          } else {
            sT2+=sChr;
          }
        }
    }
    sT2=trim(sT2);
    if (sT2.length>iMax) {
      oEvent.value=sT2.substring(0,iMax);
    } else {
      oEvent.value=sT2;
    }
    return
  }
}

//------------------------------------------------
function _global_onmouseover(event) {
//------------------------------------------------
  try {
    var windowEvent   = document.all ? window.event : event;
    var elementTarget = document.all ? windowEvent.srcElement : windowEvent.target;
    // Tooltips...
    if ( elementTarget.getAttribute('tooltip') != null ) {
      if ( elementTarget.getAttribute('tooltip').length > 0 ) {
        showTooltip(event, elementTarget);
      }
    }
  } catch(e) { DEBUG ? alert(e) : void(0); }
}

//------------------------------------------------
function _global_onmouseout(event) {
//------------------------------------------------
  try {
    var windowEvent   = document.all ? window.event : event;
    var elementTarget = document.all ? windowEvent.srcElement : windowEvent.target;
    // Tooltips...
    if ( elementTarget.getAttribute('tooltip') != null ) {
      if ( elementTarget.getAttribute('tooltip').length > 0 ) {
        top.document.getElementById('tooltipcontainer').innerHTML = '';
        top.document.getElementById('tooltipcontainer').style.display = 'none';
      }
    }
  } catch(e) { DEBUG ? alert(e) : void(0); }
}

//------------------------------------------------
function $id(id) {
//------------------------------------------------
  return document.getElementById(id);
}

//------------------------------------------------
function $name(name) {
//------------------------------------------------
  return document.getElementsByName(name);
}

//------------------------------------------------
function $tag(tag) {
//------------------------------------------------
  return document.getElementsByTagName(tag);
}

//------------------------------------------------
function _global_onunload() {
//------------------------------------------------
  try {
    // prevent tooltip from 'hanging'
    top.document.getElementById('tooltipcontainer').style.visibility='hidden';
  } catch(e) { DEBUG ? alert(e) : void(0); }
}

//------------------------------------------------
function showTooltip(event, elementTarget) {
//------------------------------------------------
  try { top.tooltipTimeout.clearTimeout(); top.tooltipTimeoutHide.clearTimeout(); } catch(e) { void(0); }
  var windowEvent = document.all ? window.event : event;
  var body = top.document.getElementsByTagName('body')[0];

  if ( !top.document.getElementById('tooltipcontainer') ) {
    var newDiv = document.createElement('div');
    newDiv.id               = 'tooltipcontainer';
    newDiv.style.display    = 'none';
    newDiv.style.position   = 'absolute';
    newDiv.className        = 'tooltip';
    try {
      body.appendChild(newDiv);
    } catch(e) { DEBUG ? alert('in '+top.document.location+'\n'+e) : void(0); }
  }

  l_objTooltip = top.document.getElementById('tooltipcontainer');
  l_objTooltip.innerHTML = elementTarget.getAttribute('tooltip');
  l_objTooltip.style.visibility = 'hidden';
  l_objTooltip.style.display = 'block';

  var windowOffsetX = 0;
  var windowOffsetY = 0;
  var temp = self;
  var i = 0;

  if ( temp.parent && temp !== temp.parent ) {
    while ( temp !== top ) {
      try {
        var offsetElement = temp.parent.document.getElementsByName(temp.name)[0];
        if ( typeof offsetElement != 'object' ) offsetElement = temp.parent.document.getElementById(temp.id);
        if ( typeof offsetElement != 'object' ) { alert("ERROR: the frame displaying: "+temp.src +"\nhas neither #name# nor #id# set. tooltip failure."); return false; };
        windowOffsetX += offsetElement.offsetLeft;
        windowOffsetY += offsetElement.offsetTop;
        while ( offsetElement != null ) {
          windowOffsetX += offsetElement.offsetParent.offsetLeft;
          windowOffsetY += offsetElement.offsetParent.offsetTop;
          offsetElement = offsetElement.offsetParent;
        }
      } catch(e) { void(0); }
      if ( ++i >= 5 ) break; // stop at obscene amounts of nested frames
      temp = temp.parent;
    }
  }

  var fullX = parseInt(body.offsetWidth);
  var fullY = parseInt(body.offsetHeight);

  var posX = Number(document.all ? windowEvent.clientX : windowEvent.pageX) + Number(windowOffsetX);
  var posY = Number(document.all ? windowEvent.clientY : windowEvent.pageY) + Number(windowOffsetY);

  if ( (posX+parseInt(l_objTooltip.offsetWidth))+20 >= fullX ) {
    l_objTooltip.style.left = null;
    l_objTooltip.style.right = 0;
  } else {
    l_objTooltip.style.left = posX;
    l_objTooltip.style.right = null;
  }

  if ( (posY+parseInt(l_objTooltip.offsetHeight))+10 >= fullY ) {
    l_objTooltip.style.top  = null;
    l_objTooltip.style.bottom = 0;
  } else {
    l_objTooltip.style.top  = posY;
    l_objTooltip.style.bottom = null;
  }

  top.tooltipTimeout = top.setTimeout("top.document.getElementById('tooltipcontainer').style.visibility=''",200);
  // hide tooltips after a total of 30secs...
  top.tooltipTimeoutHide = top.setTimeout("top.document.getElementById('tooltipcontainer').style.visibility='hidden'",30200);
}

//------------------------------------------------
function tqslider(name) {
//------------------------------------------------
  this.name = name;
  if ( name != null ) {
    eval(name+" = this;");
    eval("object_"+name+" = this;");
  } else {
    return false;
  }

  // public attr
  this.showStatus = Boolean(true);
  this.valueMap   = Array();
  this.majorTickEvery = Number(10);
  this.minorTickEvery = Number(5);
  this.microTickEvery = Number(1);
  this.majorTickLegendEvery = Number(10);
  this.minorTickLegendEvery = Number(0);
  this.microTickLegendEvery = Number(0);
  this.accessKey = String();
  this.tabIndex = Number(0);
  this.onChange = String();
  this.key = String();
  this.value = String();

  // public methods
  this.enableSlide  = _enable_slide;
  this.disableSlide = _disable_slide;
  this.getInput = _get_input;
  this.getContainer = _get_container;
  this.getSlide = _get_slide;
  this.getSlideArea = _get_slide_area;
  this.getSlideTable = _get_slide_table;
  this.getSlideKnob = _get_slide_knob;
  this.getSlideScaleContainer = _get_slide_scale_container;
  this.getPos = _get_pos;
  this.movePos = _move_pos;
  this.render = _render;
  this.getValue = _get_value;
  this.setValue = _set_value;
  this.setValueByIndex = _set_value_by_index;
  this.setValueByKey = _set_value_by_key;
  this.showPosition = _show_position;
  this.getPositionForValue = _get_position_for_value;
  this.createScale = _create_scale;
  this.processKeydown = _process_keydown;
  this.setTicks = _set_ticks;
  this.setTickLegends = _set_tick_legends;
  this.setDisabled = _set_disabled;
  this.setReadonly = _set_readonly;
  this.isDisabled = _is_disabled;
  this.isReadonly = _is_readonly;
  this.swapClass = _swap_class;


  // private attr
  var _readonly = Boolean(false);
  var _disabled = Boolean(false);
  var _onchange = Boolean(false);
  var _value = Number(0);
  var _position = Number(0);
  var _steps = Number(0);
  var _keys = Array();
  var _values = Array();
  var _major_tick_every = Number(10);
  var _minor_tick_every = Number(5);
  var _micro_tick_every = Number(1);
  var _major_tick_legend_every = Number(10);
  var _minor_tick_legend_every = Number(0);
  var _micro_tick_legend_every = Number(0);

  // pseudo-constants
  var _CLASS_SLIDECONTAINER          = "tqslidecontainer";
  var _CLASS_SLIDECONTAINER_DISABLED = "tqslidecontainer_disabled";
  var _CLASS_SLIDECONTAINER_READONLY = "tqslidecontainer_readonly";

  function _get_container() {
    return $id(this.name+'_slidecontainer');
  }

  function _get_input() {
    return $id(this.name);
  }

  function _get_slide() {
    return $id(this.name+'_slide');
  }

  function _get_slide_area() {
    return $id(this.name+'_slidearea');
  }

  function _get_slide_table() {
    return $id(this.name+'_slidetable');
  }

  function _get_slide_knob() {
    return $id(this.name+'_slideknob');
  }

  function _get_slide_scale_container() {
    return $id(this.name+'_slidescalecontainer');
  }

  function _set_disabled(bNew) {
    _disabled = bNew;
    _disabled && _readonly ? this.setReadonly(false) : void(0);
    _disabled ? this.swapClass('', _CLASS_SLIDECONTAINER_DISABLED) : this.swapClass(_CLASS_SLIDECONTAINER_DISABLED, '')
    return _disabled;
  }

  function _set_readonly(bNew) {
    _readonly = bNew;
    _readonly && _disabled ? this.setDisabled(false) : void(0);
    _readonly ? this.swapClass('', _CLASS_SLIDECONTAINER_READONLY) : this.swapClass(_CLASS_SLIDECONTAINER_READONLY, '');
    return _readonly;
  }

  function _is_disabled() {
    return _disabled;
  }

  function _is_readonly() {
    return _readonly;
  }

  function _swap_class(prevClass, newClass) {
    if ( prevClass.length==0 ) {
      this.getContainer().className += " "+newClass;
    } else {
      RX = eval("/"+prevClass+"( +|$)/gi");
      this.getContainer().className = this.getContainer().className.replace(RX, newClass+"$1");
    }
    return this;
  }

  function _process_keydown(event) {
    var windowEvent = window.event ? window.event : event;
    switch(windowEvent.keyCode) {
      case 37: // left arrow
      case 40: // down arrow
        this.setValue(_value-1);
      break;
      case 38: // up arrow
      case 39: // right arrow
        this.setValue(_value+1);
      break;
      case 33: // page up
        this.setValue(_steps);
      break;
      case 34: // page down
        this.setValue(0);
      break;
    }
  }

  function _get_pos(event) {
    var windowEvent = window.event ? window.event : event;

    var slideArea = this.getSlideArea();
    var offsetX = 0;
    var offsetY = 0;
    var offsetElement = this.getSlide();
    while ( offsetElement ) {
      offsetX += offsetElement.offsetLeft;
      offsetY += offsetElement.offsetTop;
      offsetElement = offsetElement.offsetParent;
    }
    var posX = Number(document.all ? windowEvent.clientX : windowEvent.pageX) - Number(offsetX);
    var posY = Number(document.all ? windowEvent.clientY : windowEvent.pageY) - Number(offsetY);
    var fullX = parseInt(slideArea.offsetWidth);
    var fullY = parseInt(slideArea.offsetHeight);
    _position = parseInt((posX/fullX)*100);
    if ( _position > 100 ) _position = 100;
    if ( _position < 0 ) _position = 0;
    this.showPosition();
  }

  function _get_value() {
    var newval = Math.round(_position * _steps / 100);
    if ( _value != newval ) _onchange = true;
    return _value = newval;
  }

  function _get_position_for_value(value) {
    return (value * 100 / _steps);
  }

  function _set_value(newval) {
    for (var i=0; i<_values.length; i++ ) {
      if ( _values[i] == newval ) {
        if ( _value != i ) _onchange = true;
        _value = i;
        _position = Math.round(_value * 100 / _steps) ;
        this.showPosition();
        return _value;
      }
    }
    return false;
  }

  function _set_value_by_index(newval) {
    newval = Number(newval) >= _keys.length-1 ? _keys.length-1 : Number(newval);
    newval = Number(newval) <= 0 ? 0 : Number(newval);
    if ( _value != newval ) _onchange = true;
    _value = newval;
    _position = Math.round(_value * 100 / _steps) ;
    this.showPosition();
    return _value;
  }

  function _set_value_by_key(newval) {
    for (var i=0; i<_keys.length; i++ ) {
      if ( _keys[i] == newval ) {
        if ( _value != i ) _onchange = true;
        _value = i;
        _position = Math.round(_value * 100 / _steps) ;
        this.showPosition();
        return _value;
      }
    }
    return false;
  }

  function _show_position() {
    if ( Boolean(_readonly+_disabled) ) return false;
    this.getValue();
    this.getInput().value =  _keys[_value];
    this.key = _keys[_value];
    this.value = _values[_value];
    _position = Math.round(_value * 100 / _steps) ;
    if ( this.showStatus ) window.status = _values[_value];
    this.getSlide().style.width = String(_position+'%');
    this.getSlideKnob().style.left=String(_position+'%');
    try {
      if ( this.onChange.length>0 && _onchange == true ) {
        eval(this.onChange);
        _onchange = false;
      }
    } catch(e) {
      alert(e);
    } finally {
      return _position;
    }
  }

  function _move_pos(evt) {
    var windowEvent = window.event ? window.event : evt;
    var that = this;
    if ( ! that.getPos ) that = eval(this.getAttribute('object'));
    that.getPos(windowEvent);
  }

  function _enable_slide() {
    if ( Boolean(_readonly+_disabled) ) return;
    if ( $id(this.name+"_helper") ) $id(this.name+"_helper").parentNode.removeChild($id(this.name+"_helper"));
    var helper = document.createElement('div');
    helper.id = this.name+"_helper";
    helper.unselectable = 'on';
    helper.style.MozUserSelect = 'none';
    helper.style.position = 'absolute';
    helper.style.width = "100%";
    helper.style.height = "100%";
    helper.style.top = 0;
    helper.style.left = 0;
    helper.style.zIndex = 10000;
    helper.setAttribute('object',this.name);
    helper.onmousemove = eval(this.name+".movePos");
    helper.onmouseup = eval(this.name+".disableSlide");
    helper.onclick = eval(this.name+".disableSlide");
    // beim verlassen des browsers mit der mouse abbrechen funktioniert nicht im IE!!!
    if ( !document.all ) helper.onmouseout = eval(this.name+".disableSlide");
    $tag('body')[0].appendChild(helper);
  }

  function _disable_slide() {
    var that = this;
    if ( ! that.getPos ) that = eval(this.getAttribute('object'));
    var helper = $id(that.name+"_helper");
    if ( helper ) helper.parentNode.removeChild(helper);
  }

  function _set_ticks(major, minor, micro) {
    _major_tick_every = parseInt(major);
    _minor_tick_every = parseInt(minor);
    _micro_tick_every = parseInt(micro);
  }

  function _set_tick_legends(major, minor, micro) {
    _major_tick_legend_every = parseInt(major);
    _minor_tick_legend_every = parseInt(minor);
    _micro_tick_legend_every = parseInt(micro);
  } 

  function _create_scale() {
    var temp = new StringBuffer();
    temp.append("<div class=tqslidescalecontainer id="+this.name+"_slidescalecontainer style=\"-moz-user-select:none;cursor:default;\">");
    var tick = "";
    var pos = 0;
    var legend = String();
    var tick_legend = String();
    for ( var i=0; i<_keys.length; i++ ) {
      legend = "<div class=tqslidelegend style=\"-moz-user-select:none;cursor:default;position:relative;overflow:visible;white-space:nowrap;left:-50%\" unselectable=on>"+_values[i]+"</div>";
      pos = _get_position_for_value(i);
      x = i;
      if ( x % _major_tick_every == 0 ) {
        tick = " major";
        tick_legend = x % _major_tick_legend_every == 0 ? legend : "&nbsp;";
      } else if ( x % _minor_tick_every == 0 ) {
        tick = " minor";
        tick_legend = x % _minor_tick_legend_every == 0 ? legend : "&nbsp;";
      } else if ( x % _micro_tick_every == 0 ) {
        tick = " micro";
        tick_legend = x % _micro_tick_legend_every == 0 ? legend : "&nbsp;";
      } else {
        tick = "";
        tick_legend = "";
      }
      temp.append("<div class=\"tqslidescale"+tick+"\" nowrap style=\"-moz-user-select:none;cursor:default;position:absolute;left:"+pos+"%;overflow:visible;\" unselectable=on>"+tick_legend+"</div>");
    }
    temp.append("</div>");
    return temp.toString();
  }

  function _render() {
    for ( var key in this.valueMap ) {
      _keys.push(key);
      _values.push(this.valueMap[key]);
    }
    _steps = _keys.length-1;

    var sliderClass = _CLASS_SLIDECONTAINER;
    if ( this.disabled ) {
      sliderClass+= " "+_CLASS_SLIDECONTAINER_DISABLED;
    } else if ( this.readonly ) {
      sliderClass+= " "+_CLASS_SLIDECONTAINER_READONLY;
    }

    var temp = new StringBuffer();
    temp.append("<div class=\""+sliderClass+"\" id="+this.name+"_slidecontainer style=\"position:relative\">");
    temp.append("<table class=tqslidetable cellpadding=0 cellspacing=0 border=0 id="+this.name+"_slidetable style=\"width:100%;position:relative;-moz-user-select:none;-moz-box-sizing: border-box\" unselectable=on>");
    temp.append("<tr>");
    temp.append("  <td class=tqslidearea id="+this.name+"_slidearea unselectable=on style=\"-moz-user-select:none;-moz-box-sizing:border-box;\"");
    temp.append("  onclick=\"object_"+this.name+".getPos(event);\">");
    temp.append("    <div class=tqslide id="+this.name+"_slide unselectable=on style=\"-moz-user-select:none;-moz-box-sizing:border-box;cursor:default;z-index:100;width:0\">");
    temp.append("      <a href=\"javascript:void(0)\" accesskey=\""+this.accessKey+"\" tabindex=\""+this.tabIndex+"\" onkeydown=\"object_"+this.name+".processKeydown(event);\" onselectstart=\"return false\" unselectable=on class=tqslideknob id=\""+this.name+"_slideknob\" style=\"left:0;-moz-user-select:none;-moz-box-sizing:border-box;cursor:default;position:absolute;\" onMousedown=\"object_"+this.name+".enableSlide();return false\"></a>");
    temp.append("    </div>");
    temp.append("  </td>");
    temp.append("</tr>");

    temp.append("<tr>");
    temp.append(" <td");
    temp.append("  onclick=\"object_"+this.name+".getPos(event);\">");
    temp.append(this.createScale());
    temp.append(" </td>");
    temp.append("</tr>");

    temp.append("</table>");
    temp.append("<input type=hidden value=\""+_keys[_value]+"\" name=\""+this.name+"\" id=\""+this.name+"\">");
    temp.append("</div>");
    return temp.toString();
  }
}

//------------------------------------------------
function TQMultiselectFilter(that,p_strMultipleField,p_strTargetField) {
//------------------------------------------------
  l_objLeftBox  = document.getElementById("left_"+p_strMultipleField);
  l_objRightBox = document.getElementById("right_"+p_strMultipleField);
  if (typeof l_objLeftBox  != "object") return false;
  if (typeof l_objRightBox != "object") return false;
  l_arrSelected  = document.getElementById(p_strTargetField).value.split('|');
  l_objAvailable = document.getElementById('hidden_'+p_strTargetField)

  while ( l_objLeftBox.options[0] != null ) {
    l_objLeftBox.options[l_objLeftBox.options.length-1] = null;
  }

  l_strSearch = that.value;

  l_strSearch = l_strSearch.replace(/\\/gi,"\\\\");
  l_strSearch = l_strSearch.replace(/\./gi,"\\.");
  l_strSearch = l_strSearch.replace(/\*/gi,"\\*");
  l_strSearch = l_strSearch.replace(/\+/gi,"\\+");
  l_strSearch = l_strSearch.replace(/\?/gi,"\\?");
  l_strSearch = l_strSearch.replace(/\//gi,"\\/");
  l_strSearch = l_strSearch.replace(/\[/gi,"\\[");
  l_strSearch = l_strSearch.replace(/\]/gi,"\\]");
  l_strSearch = l_strSearch.replace(/\{/gi,"\\{");
  l_strSearch = l_strSearch.replace(/\}/gi,"\\}");
  l_strSearch = l_strSearch.replace(/\(/gi,"\\(");
  l_strSearch = l_strSearch.replace(/\)/gi,"\\)");

  if ( l_strSearch == "" ) l_strSearch = ".";

  l_RX = eval("/"+l_strSearch+"/i");

  for ( var i=0; i < l_objAvailable.options.length; i++ ) {
    l_objAvailable.options[i].setAttribute("isSelected", "false");
  }

  if ( l_arrSelected.length > 0 ) {
    while ( l_strEntry = l_arrSelected.shift() ) {
      for ( var i=0; i < l_objAvailable.options.length; i++ ) {
        if ( l_objAvailable.options[i].value == l_strEntry ) {
          l_objAvailable.options[i].setAttribute("isSelected", "true");
        }
      }
    }
  }

  for ( var i=0; i < l_objAvailable.options.length; i++ ) {
    if ( l_objAvailable.options[i].getAttribute("isSelected") != "true" ) {
      if ( l_RX.test(l_objAvailable.options[i].text) ) {
        l_objLeftBox.options[l_objLeftBox.options.length] = new Option(l_objAvailable.options[i].text,l_objAvailable.options[i].value);
      }
    }
  }
}

//------------------------------------------------
function SelectArea() {
//------------------------------------------------
  // public properties
  this.SelectId  = "";
  this.DivButtonId   = "";
  this.DivTitleId    = "";
  this.ImgButtonId   = "";
  this.TitleMinimize = "";
  this.TitleMaximize = "";
  this.MinHeight     = 0;
  this.MaxHeight     = 0;
  this.Status        = false;
  this.Light         = false;

  // public methods
  this.Resize       = SelectAreaResize;
  this.Minimize     = SelectAreaMinimize;
  this.Maximize     = SelectAreaMaximize;
  this.SwitchStyle  = SelectAreaSwitchStyle;
  this.DarkStyle    = SelectAreaDarkStyle;
  this.LightStyle   = SelectAreaLightStyle;
  // private properties

  // private methods
}

//------------------------------------------------
function SelectAreaResize() {
//------------------------------------------------
  this.Status ? this.Minimize() : this.Maximize();
}

//------------------------------------------------
function SelectAreaMinimize() {
//------------------------------------------------
  this.Status = false;
  document.getElementById(this.SelectId).size = this.MinHeight;
  document.getElementById(this.ImgButtonId).title = this.TitleMaximize;
  document.getElementById(this.ImgButtonId).src = '../../../images/sdk/apptqstyle/' + (this.Light ? 'black_down.gif' : 'white_down.gif');
}

//------------------------------------------------
function SelectAreaMaximize() {
//------------------------------------------------
  this.Status = true;
  document.getElementById(this.SelectId).size = this.MaxHeight;
  document.getElementById(this.ImgButtonId).title = this.TitleMinimize;
  document.getElementById(this.ImgButtonId).src = '../../../images/sdk/apptqstyle/' + (this.Light ? 'black_up.gif' : 'white_up.gif');
}

//------------------------------------------------
function SelectAreaSwitchStyle() {
//------------------------------------------------
  this.Light ? this.DarkStyle() : this.LightStyle();
}

//------------------------------------------------
function SelectAreaDarkStyle() {
//------------------------------------------------
  this.Light = false;
  document.getElementById(this.DivButtonId).className ='TQtableSubtitle';
  document.getElementById(this.DivTitleId).className='TQtableSubtitle';
  document.getElementById(this.ImgButtonId).src = '../../../images/sdk/apptqstyle/' + (this.Status ? 'white_up.gif' : 'white_down.gif');
}

//------------------------------------------------
function SelectAreaLightStyle() {
//------------------------------------------------
  this.Light = true;
  document.getElementById(this.DivButtonId).className='TQtableSubtitleLight';
  document.getElementById(this.DivTitleId).className='TQtableSubtitleLight';
  document.getElementById(this.ImgButtonId).src = '../../../images/sdk/apptqstyle/' + (this.Status ? 'black_up.gif' : 'black_down.gif');
}

//------------------------------------------------
function TextArea() {
//------------------------------------------------
  // public properties
  this.TxtContentId  = "";
  this.DivButtonId   = "";
  this.DivTitleId    = "";
  this.ImgButtonId   = "";
  this.TitleMinimize = "";
  this.TitleMaximize = "";
  this.MinHeight     = 0;
  this.MaxHeight     = 0;
  this.Status        = false;
  this.Light         = false;

  // public methods
  this.Resize       = TextAreaResize;
  this.Minimize     = TextAreaMinimize;
  this.Maximize     = TextAreaMaximize;
  this.SwitchStyle  = TextAreaSwitchStyle;
  this.DarkStyle    = TextAreaDarkStyle;
  this.LightStyle   = TextAreaLightStyle;
  // private properties

  // private methods
}

//------------------------------------------------
function TextAreaResize() {
//------------------------------------------------
  this.Status ? this.Minimize() : this.Maximize();
}

//------------------------------------------------
function TextAreaMinimize() {
//------------------------------------------------
  this.Status = false;
  document.getElementById(this.TxtContentId).rows = this.MinHeight;
  document.getElementById(this.ImgButtonId).title = this.TitleMaximize;
  document.getElementById(this.ImgButtonId).src = '../../../images/sdk/apptqstyle/' + (this.Light ? 'black_down.gif' : 'white_down.gif');
}

//------------------------------------------------
function TextAreaMaximize() {
//------------------------------------------------
  this.Status = true;
  document.getElementById(this.TxtContentId).rows = this.MaxHeight;
  document.getElementById(this.ImgButtonId).title = this.TitleMinimize;
  document.getElementById(this.ImgButtonId).src = '../../../images/sdk/apptqstyle/' + (this.Light ? 'black_up.gif' : 'white_up.gif');
}

//------------------------------------------------
function TextAreaSwitchStyle() {
//------------------------------------------------
  this.Light ? this.DarkStyle() : this.LightStyle();
}

//------------------------------------------------
function TextAreaDarkStyle() {
//------------------------------------------------
  this.Light = false;
  document.getElementById(this.DivButtonId).className ='TQtableSubtitle';
  document.getElementById(this.DivTitleId).className='TQtableSubtitle';
  document.getElementById(this.ImgButtonId).src = '../../../images/sdk/apptqstyle/' + (this.Status ? 'white_up.gif' : 'white_down.gif');
}

//------------------------------------------------
function TextAreaLightStyle() {
//------------------------------------------------
  this.Light = true;
  document.getElementById(this.DivButtonId).className='TQtableSubtitleLight';
  document.getElementById(this.DivTitleId).className='TQtableSubtitleLight';
  document.getElementById(this.ImgButtonId).src = '../../../images/sdk/apptqstyle/' + (this.Status ? 'black_up.gif' : 'black_down.gif');
}

//------------------------------------------------
function FoldArea() {
//------------------------------------------------
  // public properties
  this.DivContentId  = "";
  this.DivButtonId   = "";
  this.DivTitleId    = "";
  this.ImgButtonId   = "";
  this.TitleMinimize = "";
  this.TitleMaximize = "";
  this.Status        = false;
  this.Light         = false;
  // public methods
  this.Resize       = FoldAreaResize;
  this.Minimize     = FoldAreaMinimize;
  this.Maximize     = FoldAreaMaximize;
  this.SwitchStyle  = FoldAreaSwitchStyle;
  this.DarkStyle    = FoldAreaDarkStyle;
  this.LightStyle   = FoldAreaLightStyle;
  // private properties

  // private methods
}

//------------------------------------------------
function FoldAreaResize() {
//------------------------------------------------
  this.Status ? this.Minimize() : this.Maximize();
}

//------------------------------------------------
function FoldAreaMinimize() {
//------------------------------------------------
  this.Status = false;
  document.getElementById(this.DivContentId).style.display='none';
  document.getElementById(this.ImgButtonId).title = this.TitleMaximize;
  document.getElementById(this.ImgButtonId).src = '../../../images/sdk/apptqstyle/' + (this.Light ? 'black_down.gif' : 'white_down.gif');
}

//------------------------------------------------
function FoldAreaMaximize() {
//------------------------------------------------
  this.Status = true;
  document.getElementById(this.DivContentId).style.display='block';
  document.getElementById(this.ImgButtonId).title = this.TitleMinimize;
  document.getElementById(this.ImgButtonId).src = '../../../images/sdk/apptqstyle/' + (this.Light ? 'black_up.gif' : 'white_up.gif');
}

//------------------------------------------------
function FoldAreaSwitchStyle() {
//------------------------------------------------
  this.Light ? this.DarkStyle() : this.LightStyle();
}

//------------------------------------------------
function FoldAreaDarkStyle() {
//------------------------------------------------
  this.Light = false;
  document.getElementById(this.DivButtonId).className ='TQtableSubtitle';
  document.getElementById(this.DivTitleId).className='TQtableSubtitle';
  document.getElementById(this.ImgButtonId).src = '../../../images/sdk/apptqstyle/' + (this.Status ? 'white_up.gif' : 'white_down.gif');
}

//------------------------------------------------
function FoldAreaLightStyle() {
//------------------------------------------------
  this.Light = true;
  document.getElementById(this.DivButtonId).className='TQtableSubtitleLight';
  document.getElementById(this.DivTitleId).className='TQtableSubtitleLight';
  document.getElementById(this.ImgButtonId).src = '../../../images/sdk/apptqstyle/' + (this.Status ? 'black_up.gif' : 'black_down.gif');
}

//------------------------------------------------
function ShowArea() {
//------------------------------------------------
  // public properties
  this.DivContentId  = "";
  this.DivButtonId   = "";
  this.DivTitleId    = "";
  this.ImgButtonId   = "";
  this.TitleMinimize = "";
  this.TitleMaximize = "";
  this.MinHeight     = 0;
  this.MaxHeight     = 0;
  this.Status        = false;
  this.Light         = false;
  // public methods
  this.Resize       = ShowAreaResize;
  this.Minimize     = ShowAreaMinimize;
  this.Maximize     = ShowAreaMaximize;
  this.SwitchStyle  = ShowAreaSwitchStyle;
  this.DarkStyle    = ShowAreaDarkStyle;
  this.LightStyle   = ShowAreaLightStyle;
  // private properties
  // private methods
}

//------------------------------------------------
function ShowAreaResize() {
//------------------------------------------------
  this.Status ? this.Minimize() : this.Maximize();
}

//------------------------------------------------
function ShowAreaMinimize() {
//------------------------------------------------
  this.Status = false;
  document.getElementById(this.DivContentId).style.height=this.MinHeight;
  document.getElementById(this.ImgButtonId).title = this.TitleMaximize;
  document.getElementById(this.ImgButtonId).src = '../../../images/sdk/apptqstyle/' + (this.Light ? 'black_down.gif' : 'white_down.gif');
}

//------------------------------------------------
function ShowAreaMaximize() {
//------------------------------------------------
  this.Status = true;
  document.getElementById(this.DivContentId).style.height=this.MaxHeight;
  document.getElementById(this.ImgButtonId).title = this.TitleMinimize;
  document.getElementById(this.ImgButtonId).src = '../../../images/sdk/apptqstyle/' + (this.Light ? 'black_up.gif' : 'white_up.gif');
}

//------------------------------------------------
function ShowAreaSwitchStyle() {
//------------------------------------------------
  this.Light ? this.DarkStyle() : this.LightStyle();
}

//------------------------------------------------
function ShowAreaDarkStyle() {
//------------------------------------------------
  this.Light = false;
  document.getElementById(this.DivButtonId).className ='TQtableSubtitle';
  document.getElementById(this.DivTitleId).className='TQtableSubtitle';
  document.getElementById(this.ImgButtonId).src = '../../../images/sdk/apptqstyle/' + (this.Status ? 'white_up.gif' : 'white_down.gif');
}

//------------------------------------------------
function ShowAreaLightStyle() {
//------------------------------------------------
  this.Light = true;
  document.getElementById(this.DivButtonId).className='TQtableSubtitleLight';
  document.getElementById(this.DivTitleId).className='TQtableSubtitleLight';
  document.getElementById(this.ImgButtonId).src = '../../../images/sdk/apptqstyle/' + (this.Status ? 'black_up.gif' : 'black_down.gif');
}

//------------------------------------------------
function GetJSCookie(p_strVariable) {
//------------------------------------------------
  if (document.cookie) {
    if (document.cookie.indexOf(p_strVariable) == -1) { return false; }
    var l_lValueStart = document.cookie.indexOf(p_strVariable+"=")+p_strVariable.length+1;
    var l_lValueEnd   = l_lValueStart+document.cookie.substr(l_lValueStart,document.cookie.length).indexOf(";");
    var l_strValue    = document.cookie.substr(l_lValueStart,(l_lValueEnd-l_lValueStart));
    return l_strValue;
  } else {
    return false;
  }
}

//------------------------------------------------
function SetJSCookie(p_strVariable,p_strValue,p_lMsec) {
//------------------------------------------------
  if (navigator.cookieEnabled == true) {
    if ( p_strValue.length == 0 ) return DeleteJSCookie(p_strVariable); 
    var l_dtNow     = new Date();
    var l_lMsec = 1000*60*60*24*61;
    if ( SetJSCookie.arguments.length == 3 ) l_lMsec = p_lMsec;
    var l_dtExpires = new Date(l_dtNow.getTime() + l_lMsec);
    if ( document.all )
      document.cookie = p_strVariable + "=" + p_strValue + "; expires=" + l_dtExpires.toGMTString(); // + "; path=" + location.pathname;
    else
      document.cookie = p_strVariable + "=" + p_strValue + "; expires=" + l_dtExpires.toGMTString() + "; path=" + location.pathname;
    return true;
  } else {
    return false; 
  }
}

//------------------------------------------------
function DeleteJSCookie(p_strVariable) {
//------------------------------------------------
  if (navigator.cookieEnabled) {
    var l_dtNow     = new Date();
    var l_dtExpires = new Date(l_dtNow.getTime() -1);
    document.cookie = p_strVariable+"=null; expires="+l_dtExpires.toGMTString();
    return true;
  } else {
    return false; 
  }
}

//------------------------------------------------
function showhover(event,p_strHover) {
//------------------------------------------------
  if ( window.event ) { event = window.event; }
  if ( !document.getElementById(p_strHover) ) return;
  objHover = document.getElementById(p_strHover);
  objHover.style.display = "block";
  objHover.style.top = event.clientY;
  objHover.style.left = event.clientX;
}

//------------------------------------------------
function hidehover(p_strHover) {
//------------------------------------------------
  if ( !document.getElementById(p_strHover) ) return;
  objHover = document.getElementById(p_strHover);
  objHover.style.display = "none";
}

//------------------------------------------------
function ParseQueryString() {
//------------------------------------------------
var p_objQuery = new Object();
var p_strQuery = location.search.substring(1);
var p_arrQuery = p_strQuery.split("&");
var p_arrPair = [];
for (var i = 0; i < p_arrQuery.length; i++)
  {
  p_arrPair = p_arrQuery[i].split("=");
  if (p_arrPair.length == 2)
    {
    p_objQuery[unescape(p_arrPair[0])] = unescape(p_arrPair[1]);
    }
  }
return p_objQuery; // querystringobjekt
}

//------------------------------------------------
function ActivateReminderDropdown(p_bChecked, p_strFieldName, p_lngStartIndex) {
//------------------------------------------------
  var l_objDropdown = window.document.getElementById(p_strFieldName +'_Dropdown');
  var l_objField    = window.document.getElementById(p_strFieldName);
  if (p_bChecked) {
    l_objDropdown.disabled = "";
    l_objDropdown.selectedIndex  = p_lngStartIndex;
    l_objField.value = l_objDropdown.value;
  } else {
    l_objDropdown.selectedIndex  = 0;
    l_objDropdown.disabled = "disabled";
    l_objField.value = -1;
  }
}

//------------------------------------------------
function CheckAddressReference(p_strField, p_strFieldPreview, p_strFieldSingleMode) {
//------------------------------------------------
  var l_objField        = eval('document.forms[0].' + p_strField);
  var l_objPreviewField = eval('document.forms[0].' + p_strFieldPreview);
  if (l_objField.value != "-1" && l_objField.value != "-1|-1" && l_objField.value != "") {
    l_bConfirm = confirm("Wollen Sie den gewählten Kontakt zurücksetzen und freie Eingabe verwenden ?");
    if (l_bConfirm) {
    l_objPreviewField.value = "";
      if (p_strFieldSingleMode) {
        l_objField.value = "-1";
        eval('document.forms[0].' + p_strFieldSingleMode + '.value = -1');
      } else {
        l_objField.value = "-1|-1";
      }
    } else {
      skipWriteProtectedElement(p_strFieldPreview);
    }
  }
}

//------------------------------------------------
function TabMouseover(p_lngTabRowID, p_lngTabID, p_bOver) {
//------------------------------------------------
  var l_strLeftImgSrc  = document.getElementById('tl_' + p_lngTabRowID + '_' + p_lngTabID).src.toLowerCase();
  var l_strCenterSrc   = document.getElementById('tc_' + p_lngTabRowID + '_' + p_lngTabID).style.backgroundImage;
  var l_strRightImgSrc = document.getElementById('tr_' + p_lngTabRowID + '_' + p_lngTabID).src.toLowerCase();

  if (p_bOver) {
    l_strLeftImgSrc  = l_strLeftImgSrc.replace("_a.gif", "_b.gif");
    l_strRightImgSrc = l_strRightImgSrc.replace("_a.gif", "_b.gif");
    l_strCenterSrc   = l_strCenterSrc.replace("_a.gif", "_b.gif");
  } else {
    l_strLeftImgSrc  = l_strLeftImgSrc.replace("_b.gif", "_a.gif");
    l_strRightImgSrc = l_strRightImgSrc.replace("_b.gif", "_a.gif");
    l_strCenterSrc   = l_strCenterSrc.replace("_b.gif", "_a.gif");
  }

  document.getElementById('tl_' + p_lngTabRowID + '_' + p_lngTabID).src = l_strLeftImgSrc;
  document.getElementById('tr_' + p_lngTabRowID + '_' + p_lngTabID).src = l_strRightImgSrc;
  document.getElementById('tc_' + p_lngTabRowID + '_' + p_lngTabID).style.backgroundImage = l_strCenterSrc;
}

//------------------------------------------------
function ResizeShowArea(p_imgObj) {
//------------------------------------------------
  var strSrc = p_imgObj.src;
  var p_arrID = p_imgObj.id.split(",");
  p_lminsize    = parseInt(document.getElementById("DID," + p_arrID[1]).minsize);
  p_lmaxsize    = parseInt(document.getElementById("DID," + p_arrID[1]).maxsize);
  p_lstepsize   = parseInt(document.getElementById("DID," + p_arrID[1]).stepsize);
  p_lactualsize = parseInt(document.getElementById("DID," + p_arrID[1]).style.height.substr(0,document.getElementById("DID," + p_arrID[1]).style.height.length-2));

  if (p_lstepsize==0) {
    if(strSrc.indexOf("01_b.gif") > -1 || strSrc.indexOf("01_a.gif") > -1) {
      strSrc = strSrc.replace(/01_b./,"02_a.");
      strSrc = strSrc.replace(/01_a./,"02_a.");
      document.getElementById("DID," + p_arrID[1]).style.height = p_lmaxsize;
    } else {
      strSrc = strSrc.replace(/02_b./,"01_a.");
      strSrc = strSrc.replace(/02_a./,"01_a.");
      document.getElementById("DID," + p_arrID[1]).style.height = p_lminsize;
    }
    p_imgObj.src=strSrc;
  } else {
    switch(p_arrID[2]) {
      case "more":
        p_lactualsize = p_lactualsize + p_lstepsize;
      break;
      case "less":
        if(p_lactualsize - p_lstepsize >= p_lminsize)
          {p_lactualsize = p_lactualsize - p_lstepsize;}
        else
          {p_lactualsize = p_lminsize;}
      break;
    }
  document.getElementById("DID," + p_arrID[1]).style.height = p_lactualsize;
  }
}

var g_CancelFormsFriendlyName = false;

//------------------------------------------------
function prepareColorPicker(color) {
//------------------------------------------------
  try {
    COLORPICKER.dialog.destroy();
  } catch(e) {};
  COLORPICKER = {};
  if (!color) color = '#000000';
  COLORPICKER.palette = new Ext.ColorPalette({});
  COLORPICKER.dialog = new Ext.Window({
    width:160,
    title:'ColorPicker',
    items:[COLORPICKER.palette]
  });
  COLORPICKER.dialog.show();
  COLORPICKER.dialog.hide();
  COLORPICKER.fieldname = new Ext.form.Hidden({});
  COLORPICKER.update = function(palette, color) {
    var fieldname = COLORPICKER.fieldname.getValue();
    var preview = $id(fieldname + '_preview_img');
    var field = Ext.get(fieldname);
    field.dom.value = '#'+color;
    preview.style.backgroundColor = '#'+color;
    COLORPICKER.dialog.close(field);
  };
  COLORPICKER.palette.on('select', COLORPICKER.update);

  return COLORPICKER;
};

//------------------------------------------------
function GetColorWindow(p_strPreviewFieldname,p_strOldcolor,p_bhash,p_strType) { // 09122002.ul
//------------------------------------------------
  var field = Ext.get(p_strPreviewFieldname);
  var cp = prepareColorPicker(p_strOldcolor);
  cp.fieldname.setValue(p_strPreviewFieldname);
  cp.dialog.alignTo(field, "br?", [5, 5]);
  cp.dialog.show(field);
  return true;
}

//------------------------------------------------
function swapimg(oImg, sSearchFor, sReplace, sCursorStyle) {
//------------------------------------------------
  var strSrc = oImg.src.toLowerCase();
  var a=sSearchFor.toLowerCase();
  var b=sReplace.toLowerCase();
  var sC=sCursorStyle.toLowerCase();
  if (sC!='pointer' && sC!='hand')
    sC='pointer';
  if (IE4 )
    if (sC=='pointer')
      sC='hand';
  strSrc = strSrc.replace(a,b);
  oImg.src=strSrc;
  oImg.style.cursor = sC;
}

//------------------------------------------------
function Tooltip() {
//------------------------------------------------
  // public properties
  this.TooltipId        = '';         // tooltip div -id
  this.TooltipContentId = '';         // tooltip content div -id
  this.Template         = '';         // tooltip template
  this.Width            = 200;        // tooltip width
  this.Align            = 0;          // align  0=right  1=left
  this.Valign           = 0;          // valign 0=beyond 1=above
  this.ValignLimit      = 100;        // valign switch limit
  this.CursorMargin     = 10;         // margin from cursor
  this.ClassName        = '';         // div - classname
  // public methods
  this.Initialize       = TooltipInitialize;
  this.Show             = TooltipShow;
  this.SetContent       = TooltipSetContent;
  this.Hide             = TooltipHide;
  this.SetClass         = TooltipSetClass;
  // private properties
  this.Status           = false;       // show hide status
  this.CurrentAlign     = this.Align;  // current align
  this.CurrentValign    = this.Valign; // current valign
  this.MouseX           = 0;
  this.MouseY           = 0;
  // private methods
}

//------------------------------------------------
function TooltipSetClass(p_strClassName) {
//------------------------------------------------
  this.ClassName = p_strClassName;
  document.getElementById(this.TooltipContentId).className = this.ClassName;
}

//------------------------------------------------
function TooltipSetContent(p_strContent) {
//------------------------------------------------
  if(this.Template.length > 0) p_strContent = this.Template.replace(/\{\{CON\}\}/,p_strContent);
  document.getElementById(this.TooltipId).innerHTML = '<div id=\"' + this.TooltipContentId + '\" class=\"' + this.ClassName + '\" style=\"width:' + this.Width + '\;display:block !Important;">' + p_strContent + '</div>';
}

//------------------------------------------------
function TooltipInitialize() {
//------------------------------------------------
  document.onmousemove = CursorMove;
  this.Status = false;
  g_strCurrentTooltip = '';
}

//------------------------------------------------
function TooltipShow() {
//------------------------------------------------
  if (this.TooltipId == '') return;
  this.CurrentAlign  = this.Align;
  this.CurrentValign = this.Valign;
  var l_strRelWidth = CrossInnerWindowWidth() + CrossGetScroll('x');
  var l_strRelHeight = CrossInnerWindowHeight() + CrossGetScroll('y');
  if (this.MouseX + this.Width + this.CursorMargin > l_strRelWidth) this.CurrentAlign = 1;
  else if (this.MouseX < this.Width + this.CursorMargin) this.CurrentAlign = 0;
  if (this.MouseY + this.ValignLimit > l_strRelHeight) this.CurrentValign = 1;
  else if (this.MouseY - this.ValignLimit < 0) this.CurrentValign = 0;
  document.getElementById(this.TooltipId).style.visibility='visible';
  this.Status = true;
  g_strCurrentTooltip = this.TooltipId;
}

//------------------------------------------------
function TooltipHide() {
//------------------------------------------------
  document.getElementById(this.TooltipId).style.visibility='hidden';
  this.Status = false;
  g_strCurrentTooltip = ''
  CrossMoveTo(this.TooltipId, -1024, 0);
}

//------------------------------------------------
function CrossMousePosition(e) {
//------------------------------------------------
  var l_objTooltip = eval('l_obj_' + g_strCurrentTooltip);
  if (document.all) {
    l_objTooltip.MouseX = event.x + document.body.scrollLeft;
    l_objTooltip.MouseY = event.y + document.body.scrollTop;
  } else {
    l_objTooltip.MouseX = e.pageX;
    l_objTooltip.MouseY = e.pageY;
  }
}

//------------------------------------------------
function CrossInnerWindowWidth() {
//------------------------------------------------
  var l_lngReturn;
  if (document.all) {
    l_lngReturn = document.body.clientWidth;
  } else {
    l_lngReturn = window.innerWidth;
  }
  return l_lngReturn;
}

//------------------------------------------------
function crossOuterWindowWidth() {
//------------------------------------------------
  var l_lngReturn;
  if (document.all) {
    l_lngReturn = document.body.offsetWidth;
  } else {
    l_lngReturn = window.outerWidth;
  }
  return l_lngReturn;
}

//------------------------------------------------
function CrossInnerWindowHeight() {
//------------------------------------------------
  var l_lngReturn;
  if (document.all) {
    l_lngReturn = document.body.clientHeight;
  } else {
    l_lngReturn = window.innerHeight;
  }
  return l_lngReturn;
}

//------------------------------------------------
function CrossGetScroll(l_strAxis) {
//------------------------------------------------
  var l_lngReturn;
  if (l_strAxis == 'y') {
    if (document.all) {
      l_lngReturn = document.body.scrollTop;
    } else {
      l_lngReturn = window.pageYOffset;
    }
  } else {
    if (document.all) {
      l_lngReturn = document.body.scrollLeft;
    } else {
      l_lngReturn = window.pageXOffset;
    }
  }
  return l_lngReturn;
}

//------------------------------------------------
function CrossMoveTo(p_strId, p_lngX, p_lngY) {
//------------------------------------------------
  var l_objTooltipDiv = document.getElementById(p_strId);
  if (document.all) {
    l_objTooltipDiv.style.pixelLeft = p_lngX;
    l_objTooltipDiv.style.pixelTop = p_lngY;
  } else {
    l_objTooltipDiv.style.left = p_lngX + "px";
    l_objTooltipDiv.style.top = p_lngY + 'px';
  }
}

//------------------------------------------------
function CursorMove(event) {
//------------------------------------------------
  if (g_strCurrentTooltip != '') {
    var l_objTooltip = eval('l_obj_' + g_strCurrentTooltip);
    CrossMousePosition(event);
    var l_lngPosX, l_lngPosY;
    if (l_objTooltip.CurrentAlign == 0) {
        l_lngPosX = l_objTooltip.MouseX + l_objTooltip.CursorMargin;
        if (l_objTooltip.CurrentValign == 0) {
          l_lngPosY = l_objTooltip.MouseY + l_objTooltip.CursorMargin;
        } else {
          l_lngPosY = l_objTooltip.MouseY - l_objTooltip.ValignLimit;
        }
    } else {
      l_lngPosX = l_objTooltip.MouseX - l_objTooltip.Width - l_objTooltip.CursorMargin;
      if (l_objTooltip.CurrentValign == 0) {
        l_lngPosY = l_objTooltip.MouseY + l_objTooltip.CursorMargin;
      } else {
        l_lngPosY = l_objTooltip.MouseY - l_objTooltip.ValignLimit;
      }
    }
    CrossMoveTo(g_strCurrentTooltip, l_lngPosX, l_lngPosY)
  }
}

//------------------------------------------------
function executeOnKeyCode(event, keycode, action) {
//------------------------------------------------
  try{
    var windowEvent = window.event ? window.event : event;
    parseInt(keycode)==windowEvent.keyCode ? void(eval(action)) : void(0);
  }catch(e){alert(e)}
  return true;
}

//------------------------------------------------
function swapClass(that, prevClass, newClass) {
//------------------------------------------------
  if ( typeof that == 'string' ) that = document.getElementById(that);
  if ( that == null ) return false;
  if ( prevClass.length==0 ) {
    that.className += " "+newClass;
  } else {
    RX = eval("/"+prevClass+"( +|$)/gi");
    that.className = that.className.replace(RX, newClass+"$1");
  }
  return this;
}

//------------------------------------------------
function AddOnChangeEvent(p_sField, p_strFunction) {
//------------------------------------------------
  element = document.getElementById(p_sField);
  if ( document.all ) {
    // .attachEvent for IE only 
    if (element.attachEvent)      element.attachEvent('onchange', function() { eval(p_strFunction) });
  } else {
    // .addEventListener for all other browsers
    if (element.addEventListener) element.addEventListener('change', function() { eval(p_strFunction) }, false);
  }
}

//------------------------------------------------
function AddOnBlurEvent(p_sField, p_strFunction) {
//------------------------------------------------
  element = document.getElementById(p_sField);
  if ( document.all ) {
    // .attachEvent for IE only 
    if (element.attachEvent)      element.attachEvent('onblur', function() { eval(p_strFunction) });
  } else {
    // .addEventListener for all other browsers
    if (element.addEventListener) element.addEventListener('blur', function() { eval(p_strFunction) }, false);
  }
}

//------------------------------------------------
function StringBuffer() {
//------------------------------------------------
  this.buffer = Array();
  this.append = _append;
  this.toString = _to_string;

  function _append(string) {
    this.buffer.push(string);
    return this; 
  }

  function _to_string() {
    return this.buffer.join("");
  }
}

//------------------------------------------------
function addEvent(object, handler, code) {
//------------------------------------------------
  handler = handler.toLowerCase();
  if ( ! /^on[a-z]+/.test(handler) ) alert('error: '+handler+' is invalid!');
  if (object.addEventListener){
    object.addEventListener(handler.replace(/^on/, '').toString(), code, false); 
  } else if (object.attachEvent){
    object.attachEvent(handler, code);
  } else {
    alert('error adding event, browser unsupported?!');
  }
}

//------------------------------------------------
function removeEvent(object, handler, code) {
//------------------------------------------------
  handler = handler.toLowerCase();
  if ( ! /^on[a-z]+/.test(handler) ) alert('error: '+handler+' is invalid!');
  if (object.removeEventListener){
    object.removeEventListener(handler.replace(/^on/, ''), code, false); 
  } else if (object.detachEvent){
    object.detachEvent(handler, code);
  } else {
    alert('error removing event, browser unsupported?!');
  }
}

//------------------------------------------------
function SyncDuration(p_lngSyncMode) {
//------------------------------------------------
  var l_lngCurrentDuration = document.forms[0].fr_lngDuration.value;
  switch(p_lngSyncMode) {
  case 1: // sync by from date 
    if (l_lngCurrentDuration > 0) {
      document.forms[0].strnospecifictime.value = '';
      ValidateDateTime(document.forms[0].dtdatefrom);
      ValidateDateTime(document.forms[0].dtdateto);
      var l_objNewDate = GetDateTimeField('dtdatefrom');
      l_objNewDate.setTime(l_objNewDate.getTime()+(60000 * l_lngCurrentDuration));
      SetDateTimeField('dtdateto', l_objNewDate);
    }
    if(l_lngCurrentDuration == -1) {
      document.forms[0].strnospecifictime.value = 'Ja';
      ValidateDate(document.forms[0].dtdatefrom);
      ValidateDate(document.forms[0].dtdateto);
    }
    if(l_lngCurrentDuration == -2) {
      document.forms[0].strnospecifictime.value = '';
      ValidateDateTime(document.forms[0].dtdatefrom);
      ValidateDateTime(document.forms[0].dtdateto);
    }
  break;

  case 2: // sync by to date
    if (l_lngCurrentDuration > 0) {
      document.forms[0].strnospecifictime.value = '';
      ValidateDateTime(document.forms[0].dtdatefrom);
      ValidateDateTime(document.forms[0].dtdateto);
      var l_objNewDate = GetDateTimeField('dtdateto');
      l_objNewDate.setTime(l_objNewDate.getTime()-(60000 * l_lngCurrentDuration));
      SetDateTimeField('dtdatefrom', l_objNewDate);
    }

    if(l_lngCurrentDuration == -1) {
      document.forms[0].strnospecifictime.value = 'checked';
      ValidateDate(document.forms[0].dtdatefrom);
      ValidateDate(document.forms[0].dtdateto);
    }

    if(l_lngCurrentDuration == -2) {
      document.forms[0].strnospecifictime.value = '';
      ValidateDateTime(document.forms[0].dtdatefrom);
      ValidateDateTime(document.forms[0].dtdateto);
    }
  break;

  case 3: // sync by duration
    if (l_lngCurrentDuration > 0) {
      document.forms[0].strnospecifictime.value = '';
      ValidateDateTime(document.forms[0].dtdatefrom);
      ValidateDateTime(document.forms[0].dtdateto);
      var l_objNewDate = GetDateTimeField('dtdatefrom');
      l_objNewDate.setTime(l_objNewDate.getTime()+(60000 * l_lngCurrentDuration));
      SetDateTimeField('dtdateto', l_objNewDate);
    }

    if(l_lngCurrentDuration == -1) {
      document.forms[0].strnospecifictime.value = 'checked';
      ValidateDate(document.forms[0].dtdatefrom);
      ValidateDate(document.forms[0].dtdateto);
    }

    if(l_lngCurrentDuration == -2) {
      document.forms[0].strnospecifictime.value = '';
      ValidateDateTime(document.forms[0].dtdatefrom);
      ValidateDateTime(document.forms[0].dtdateto);
    }
  break;
  }
}

//------------------------------------------------
function SetDateTimeField(p_strFormElement, l_objNewDate) {
//------------------------------------------------
  eval('var l_strValue = document.forms[0].' + p_strFormElement+ '.value;');

  // get date by lcid
  l_bBuildDate = false;
  var l_iDay,l_iMonth,l_iYear,l_strSeperator;
  var l_dtCurrDate = new Date();
  var l_strInput   = new String(l_strValue);
  var l_strSeperator = new String();

  if ( isNaN(l_LCID) ) l_LCID = 1031;

  switch (l_LCID) {
    case 1088:
      l_strFormat = "d.m.yy";
    break;

    case 1031: case 1044: case 1048: case 1049: case 1055: case 1058: case 1059: case 1061:
    case 1067: case 1068: case 1071: case 1079: case 1087: case 1095: case 2055: case 2064:
    case 2068: case 2092: case 2115: case 3079: case 4103: case 4108: case 5127:
      l_strFormat = "dd.mm.yyyy";
    break;

    case 1050: case 1026: case 1029: case 1035: case 1039: case 1060: case 2074: case 2077:
    case 3098:
      l_strFormat = "d.m.yyyy";
    break;

    case 1051:
      l_strFormat = "d. m. yyyy";
    break;

    case 1104:
      l_strFormat = "yy.mm.dd";
    break;

    case 1038:
      l_strFormat = "yyyy. mm. dd.";
    break;

    case 1062:
      l_strFormat = "yyyy.mm.dd.";
    break;

    case 1063:
      l_strFormat = "yyyy.mm.dd";
    break;

    case 1043:
      l_strFormat = "d-m-yyyy";
    break;

    case 1094: case 1095: case 1098: case 1099:
      l_strFormat = "dd-mm-yy";
    break;

    case 1030: case 1080: case 1081: case 1102: case 1103: case 1111: case 2070: case 5121:
    case 6145: case 7168:
    case 13322:
      l_strFormat = "dd-mm-yyyy";
    break;

    case 2052:
      l_strFormat = "yyyy-m-d";
    break;

    case 1045: case 1042: case 1052: case 1053: case 3084:
      l_strFormat = "yyyy-mm-dd";
    break;

    case 1032: case 1046: case 1054: case 3076: case 4100: case 5124:
      l_strFormat = "d/m/yyyy";
    break;

    case 1110: case 1125:
      l_strFormat = "dd/mm/yy";
    break;

    case 1091:
      l_strFormat = "dd/mm yyyy";
    break;

    case 1033: case 1089: case 12297:
    case 13321:
      l_strFormat = "m/d/yyyy";
    break;

    case 6154: case 9225:
      l_strFormat = "mm/dd/yyyy";
    break;

    case 1028: case 1041: case 1065: case 1069: case 1078: case 7177:
      l_strFormat = "yyyy/mm/dd";
    break;

    default:
      l_strFormat = "dd/mm/yyyy";
    break;
  }

  l_Format = /^([ymd]+)([^ymd]*)([ymd]+)([^ymd]*)([ymd]+)([^ymd]*)$/i;
  l_Format = l_strFormat.match(l_Format);
  l_Sep1 = l_Format[2];
  l_Sep2 = l_Format[4];
  l_Sep3 = l_Format[6];

  switch (l_Format[1]) {
    case "yy":
      l_bFullYear = false;
      l_Re1  = "^(\\d{2})(\\D*)";
    break;

    case "yyyy":
      l_bFullYear = true;
      l_Re1  = "^(\\d{1,4})(\\D*)";
    break;

    case "m":
      l_Re1  = "^(\\d{1,2})(\\D*)";
    break;

    case "mm":
      l_Re1  = "^(\\d{1,2})(\\D*)";
    break;

    case "d":
      l_bFill = false;
      l_Re1  = "^(\\d{1,2})(\\D*)";
    break;

    case "dd":
      l_bFill = true;
      l_Re1  = "^(\\d{1,2})(\\D*)";
    break;
  }

  switch (l_Format[3]) {
    case "yy":
      l_bFullYear = false;
      l_Re2  = "(\\d{2})(\\D*)";
    break;

    case "yyyy":
      l_bFullYear = true;
      l_Re2  = "(\\d{1,4})(\\D*)";
    break;

    case "m":
      l_Re2  = "(\\d{1,2})(\\D*)";
    break;

    case "mm":
      l_Re2  = "(\\d{1,2})(\\D*)";
    break;

    case "d":
      l_bFill = false;
      l_Re2  = "(\\d{1,2})(\\D*)";
    break;

    case "dd":
      l_bFill = true;
      l_Re2  = "(\\d{1,2})(\\D*)";
    break;
  }

  switch (l_Format[5]) {
    case "yy":
      l_bFullYear = false;
      l_Re3  = "(\\d{2})(\\D*)";
    break;

    case "yyyy":
      l_bFullYear = true;
      l_Re3  = "(\\d{1,4})(\\D*)";
    break;

    case "m":
      l_Re3  = "(\\d{1,2})(\\D*)";
    break;

    case "mm":
      l_Re3  = "(\\d{1,2})(\\D*)";
    break;

    case "d":
      l_bFill = false;
      l_Re3  = "(\\d{1,2})(\\D*)";
    break;

    case "dd":
      l_bFill = true;
      l_Re3  = "(\\d{1,2})(\\D*)";
    break;
  }

  var l_iDay;
  var l_iMonth;
  var l_iYear;

  // get time by lcid
  var l_strSep     = ":";
  var l_strAM      = "";
  var l_strPM      = "";
  var l_b24hours   = true;
  var l_bSeconds   = false;
  var l_bFill      = true;
  var l_bPM        = false;

  if ( isNaN(l_LCID))
    l_LCID = 1031;

  switch (l_LCID) {
    case 1040: case 1080:
      l_strSep = ".";
      l_bSeconds = true;
    break;

    case 1052:
      l_b24hours = false;
      l_bFill = false;
      l_strAM = "PD";
      l_strPM = "MD";
    break;

    case 1033: case 1089: case 3081: case 4105: case 9225:
    case 12297: case 13321:
      l_b24hours = false;
      l_bFill = false;
      l_strAM = "AM";
      l_strPM = "PM";
    break;

    case 7177: case 8201:
    case 10249: case 11273:
      l_b24hours = false;
      l_strAM = "AM";
      l_strPM = "PM";
    break;

    case 5129:
      l_b24hours = false;
      l_bFill = false;
      l_strAM = "a.m.";
      l_strPM = "p.m.";
    break;

    case 2058: case 4106: case 5130: case 6154: case 7178: case 8202: case 9226:
    case 10250: case 11274: case 14346: case 15370: case 16394: case 17418: case 18442:
    case 19466: case 20490:
      l_b24hours = false;
      l_strAM = "a.m.";
      l_strPM = "p.m.";
    break;

    default:
    break;
  }

  // set new date
  l_iYear    = l_objNewDate.getFullYear();
  l_iMonth   = l_objNewDate.getMonth() + 1;
  l_iDay     = l_objNewDate.getDate();
  l_iHour    = l_objNewDate.getHours();
  l_iMinutes = l_objNewDate.getMinutes();
  l_iSeconds = l_objNewDate.getSeconds();

  // format date, insert leading 0 if needed
  if ( l_bFill ) { l_iDay = FillLeading(l_iDay); l_iMonth = FillLeading(l_iMonth); }
  if ( !l_bFullYear ) { l_iYear =  FillLeading(l_iYear); }

  // determine order
  if ( l_Format[1] == "yyyy" || l_Format[1] == "yy" ) { l_Pos1 = l_iYear; }
  if ( l_Format[3] == "yyyy" || l_Format[3] == "yy" ) { l_Pos2 = l_iYear; }
  if ( l_Format[5] == "yyyy" || l_Format[5] == "yy" ) { l_Pos3 = l_iYear; }

  if ( l_Format[1] == "m" || l_Format[1] == "mm" ) { l_Pos1 = l_iMonth; }
  if ( l_Format[3] == "m" || l_Format[3] == "mm" ) { l_Pos2 = l_iMonth; }
  if ( l_Format[5] == "m" || l_Format[5] == "mm" ) { l_Pos3 = l_iMonth; }

  if ( l_Format[1] == "d" || l_Format[1] == "dd" ) { l_Pos1 = l_iDay; }
  if ( l_Format[3] == "d" || l_Format[3] == "dd" ) { l_Pos2 = l_iDay; }
  if ( l_Format[5] == "d" || l_Format[5] == "dd" ) { l_Pos3 = l_iDay; }

  // format time
  l_strIndicator = trim(RegExp.$4);

  if ( isNaN(l_iHour) || !isIntegerInRange(l_iHour,0,23) )
    l_iHour = l_dtCurrDate.getHours();

  if ( !l_b24hours ) {
    if ( l_iHour > 12 ) {
      l_iHour = l_iHour-12;
      l_bPM = true;
    } else if ( l_iHour < 12 && l_strIndicator == "" ) {
      l_bPM = false;
    }
    if ( l_strIndicator == "PM" || l_strIndicator.toUpperCase() == l_strPM.toUpperCase() )
      l_bPM = true;
  }

  if (isNaN(l_iMinutes) || !isIntegerInRange(l_iHour,0,59) ) l_iMinutes = "00";
  if (isNaN(l_iSeconds) || !isIntegerInRange(l_iSeconds,0,59) ) l_iSeconds = "00";

  if ( !l_b24hours ) {
    if ( l_strIndicator.toUpperCase() == l_strAM.toUpperCase() || l_strIndicator.toUpperCase() == "AM" || !l_bPM)
      l_strIndicator = " " + l_strAM;
    if ( l_strIndicator.toUpperCase() == l_strPM.toUpperCase() || l_strIndicator.toUpperCase() == "PM" || l_bPM )
      l_strIndicator = " " + l_strPM;
  } else {
    l_strIndicator = "";
  }

  if ( l_bFill ) l_iHour = FillLeading(l_iHour);

  l_iMinutes = FillLeading(l_iMinutes);
  l_iSeconds = FillLeading(l_iSeconds);

  if ( l_bSeconds ) {
  eval("document.forms[0]." + p_strFormElement + ".value = '" + l_Pos1 + l_Sep1 + l_Pos2 + l_Sep2 + l_Pos3 + l_Sep3 + ' ' + l_iHour + l_strSep + l_iMinutes + l_strSep + l_iSeconds + l_strIndicator + "';");
  } else {
  eval("document.forms[0]." + p_strFormElement + ".value = '" + l_Pos1 + l_Sep1 + l_Pos2 + l_Sep2 + l_Pos3 + l_Sep3 + ' ' + l_iHour + l_strSep + l_iMinutes + l_strIndicator + "';");
  }
}

//-----------------------------------------------------------
function CorrectOverlapDateTime(p_sChanged, p_sStart, p_sEnd) {
//-----------------------------------------------------------
  var l_oStart = GetDateTimeField(p_sStart);
  var l_oEnd   = GetDateTimeField(p_sEnd);
  if (p_sChanged == p_sStart && l_oStart > l_oEnd) SetDateTimeField(p_sEnd, l_oStart);
  if (p_sChanged == p_sEnd && l_oEnd < l_oStart) SetDateTimeField(p_sStart, l_oEnd);
}

//------------------------------------------------
function GetDateTimeField(p_strFormElement) {
//------------------------------------------------
  eval('var l_strValue = document.forms[0].' + p_strFormElement+ '.value;');
  return GetDateTimeFromString(l_strValue);
}

//------------------------------------------------
function formFreeze(oForm, bPartial) {
//------------------------------------------------
  if ( typeof oForm == 'string' ) oForm = $id(oForm);
  if ( typeof oForm != 'object' ) return false;
  if ( oForm.getAttribute('frozen') == "1" ) formThaw(oForm);

  oForm.setAttribute('freezeaction', oForm.action);
  oForm.setAttribute('freezer', "freezer_" + oForm.id);
  oForm.action='';

  var formWidth  = "100%";
  var formHeight = "100%";
  var formTop    = 0;
  var formLeft   = 0;

  if ( bPartial ) {
    formWidth  = oForm.offsetWidth;
    formHeight = oForm.offsetHeight;
    formTop = 50;
    formLeft = 50;
  }

  var oBody = $tag('body')[0];
  if ( ! oBody ) return false;
  var helper = document.createElement('div');
  helper.setAttribute('freezeform', oForm.id);
  helper.id = "freezer_" + oForm.id;
  helper.className = "formfreeze";
  helper.style.position = "absolute";
  helper.style.top = formTop+oBody.scrollTop ;
  helper.style.left = formLeft;
  helper.style.width = formWidth;
  helper.style.height = formHeight;
  helper.innerHTML = "";
  oBody.appendChild(helper);
  oForm.setAttribute('frozen', "1");

  return true;
}

//------------------------------------------------
function formThaw(oForm) {
//------------------------------------------------
  if ( typeof oForm == 'string' ) oForm = $id(oForm);
  if ( typeof oForm != 'object' ) return false;
  if ( ! oForm.getAttribute('frozen') == "1" ) return false;
  oForm.setAttribute('frozen', "0");
  oForm.action = oForm.getAttribute('freezeaction');
  var freezer = $id(oForm.getAttribute('freezer'));
  freezer.parentNode.removeChild(freezer);
  return true;
}

/*
function setTabEx       (p_lTab)
function changeTabEx    (p_objTab,p_objTextbox)
function overTabEx      (p_objTab)
function outTabEx       (p_objTab)
function insertTabsEx   ()
*/

//------------------------------------------------
function setTabEx(p_lTab) {
//------------------------------------------------
  var l_strTab         = 'tab' + (p_lTab);
  var l_strTextbox     = 'textbox' + (p_lTab);
  g_objPreviousTab     = g_objActiveTab;
  g_objPreviousTextbox = g_objActiveTextbox;
  g_objActiveTab       = document.getElementById(l_strTab);
  g_objActiveTextbox   = document.getElementById(l_strTextbox);
  changeTabEx(g_objActiveTab,g_objActiveTextbox);
}

//------------------------------------------------
function changeTabEx(p_objTab,p_objTextbox) {
//------------------------------------------------
  if ( g_objActiveTab != false && g_objActiveTab != g_objPreviousTab )
    g_objPreviousTab.className = 'inactivetabEx';
  if ( g_objActiveTextbox != false && g_objActiveTextbox != g_objPreviousTextbox )
    g_objPreviousTextbox.style.display='none';
  p_objTab.className = 'activetabEx';
  p_objTextbox.style.display='block';
}

//------------------------------------------------
function overTabEx(p_objTab) {
//------------------------------------------------
  if ( g_objActiveTab != p_objTab )
    p_objTab.className = 'hovertabEx';
}

//------------------------------------------------
function outTabEx(p_objTab) {
//------------------------------------------------
  if ( g_objActiveTab != p_objTab )
    p_objTab.className = 'inactivetabEx';
}

//------------------------------------------------
function insertTabsEx() {
//------------------------------------------------
  var l_lTabCount = document.getElementById('textboxes').getElementsByTagName('div').length;
  var l_lTabTmpCount = l_lTabCount;
  var l_strDivList = '';
  for ( var i = 0; i < l_lTabCount; i++ ) {
    var l_strClassname = document.getElementById('textboxes').getElementsByTagName('div')[i].className;
    if ( l_strClassname != 'textboxesEx' ) {
      l_lTabTmpCount = l_lTabTmpCount - 1;
    } else {
      var l_strId = document.getElementById('textboxes').getElementsByTagName('div')[i].id;
      if ( l_strDivList.length == 0 ) {
        l_strDivList = l_strId;
      } else {
        l_strDivList = l_strDivList + '||' + l_strId;
      }
    }
  }
  var l_aTabs = l_strDivList.split("||");
  var l_strTab = "";
  for ( var i = 0; i < l_aTabs.length; i++ ) {
    var l_strTitle = document.getElementById(l_aTabs[i]).getAttribute('tabtitle');
        l_strTab += '<td><a href=\"javascript:void(0)\" accesskey='+(i+1)+' onFocus=setTabEx('+(i+1)+')><table style=\"clear:none;cursor:pointer;\" width=1 cellpadding=0 cellspacing=0 border=0 id=tab'+(i+1)+' onClick=setTabEx('+(i+1)+') onMouseover=overTabEx(this) onMouseout=outTabEx(this) class=inactivetabEx><tr>';
        l_strTab += '<td class=tableftEx><img src=\"../../../images/10pxtrans.gif\" width=7 height=28 border=0></td>';
        if ( document.getElementById(l_aTabs[i]).getAttribute('tabimage').length > 0 ) {
          l_strTab += '<td nowrap width=1 class=tabcenterEx style="padding-right:4px"><img src=\"../../../images/10pxtrans.gif\" border=0 style=\"background-image:url(' + document.getElementById(l_aTabs[i]).getAttribute('tabimage') + ');\" width=16 height=16></td>';
        }
        l_strTab += '<td nowrap class=tabcenterEx>' + l_strTitle + '</td>';
        l_strTab += '<td class=tabrightEx><img src=\"../../../images/10pxtrans.gif\" width=7 height=28 border=0></td>';
        l_strTab += '</tr></table></a></td>';
  }
  document.getElementById('tabcontainer').innerHTML += '<table border=0 width=\"100%\" cellspacing=0 cellpadding=0><tr>' + l_strTab + '</tr></table>';

  g_objActiveTab       = document.getElementById('tab1');
  g_objActiveTextbox   = document.getElementById('textbox1');
  g_objPreviousTab     = g_objActiveTab;
  g_objPreviousTextbox = g_objActiveTextbox;
}

//------------------------------------------------
function GetDateTimeFromString(p_sDate) {
//------------------------------------------------
  var l_aDate = CheckDate(p_sDate, true);
  var l_aTime = CheckTime(p_sDate, true);
  var l_oDateTime = new Date(l_aDate[0], l_aDate[1]-1, l_aDate[2], l_aTime[0], l_aTime[1], l_aTime[2]);
  return l_oDateTime;
}

//------------------------------------------------
function GetUTCFromString(p_sDate, p_bTime) {
//------------------------------------------------
  var l_aDate = CheckDate(p_sDate, true);
  var l_aTime = new Array(0,0,0);
  if (p_bTime) l_aTime = CheckTime(p_sDate, true);
  var l_lReturn = Date.UTC(l_aDate[0], l_aDate[1]-1, l_aDate[2], l_aTime[0], l_aTime[1], l_aTime[2]);
  return l_lReturn;
}

//------------------------------------------------
function CheckPeriod(p_oDate1, p_lRTN1Start, p_lRTN1End, p_oDate2, p_lRTN2Start, p_lRTN2End, p_lMinDiff, p_lMaxDiff, p_bAllowNegative) {
//------------------------------------------------
  var l_oNow     = new Date();
  var l_lTime1    = p_oDate1.getTime() - (p_oDate1.getTimezoneOffset() * 60000);
  var l_lTime2    = p_oDate2.getTime() - (p_oDate2.getTimezoneOffset() * 60000);
  var l_lTimeNow  = l_oNow.getTime() - (l_oNow.getTimezoneOffset() * 60000);
  var l_lTimeDiff = l_lTime1 - l_lTime2;
  var l_bReturn = true;
  if(l_lTime1 != 0 && l_lTime2 != 0) {
    if (p_lMinDiff > 0 && Math.abs(l_lTimeDiff) < p_lMinDiff) l_bReturn = false;
    if (p_lMaxDiff > 0 && Math.abs(l_lTimeDiff) > p_lMaxDiff) l_bReturn = false;
    if (p_bAllowNegative == false && l_lTimeDiff > 0) l_bReturn = false;
  }
  if (p_lRTN1Start != 0 && l_lTime1 != 0) {
    if(l_lTime1 < l_lTimeNow + p_lRTN1Start) l_bReturn = false;
  }
  if (p_lRTN1End != 0 && l_lTime1 != 0) {
    if(l_lTime1 > l_lTimeNow + p_lRTN1End) l_bReturn = false;
  }
  if (p_lRTN2Start != 0 && l_lTime2 != 0) {
    if(l_lTime1 < l_lTimeNow + p_lRTN2Start) l_bReturn = false;
  }
  if (p_lRTN2End != 0 && l_lTime2 != 0) {
    if(l_lTime1 > l_lTimeNow + p_lRTN2End) l_bReturn = false;
  }
  return l_bReturn
}

//------------------------------------------------
function getElementByNameAndParent(name, object) {
//------------------------------------------------
  if ( name && object ) {
    var elements = document.getElementsByName(name);
    for ( var i=0; i<elements.length; i++ ) if(elements[i].parentNode === object) return elements[i];
  }
  return null;
}

//------------------------------------------------
function DoUnloadDirectEdit() {
//------------------------------------------------
  var l_oTarget = top;
  var l_lSourceOpener = 2;
  if (opener) {
    l_lSourceOpener = 1;
    l_oTarget = opener.top;
  }

  if (parent.opener) {
    l_lSourceOpener = 1;
    l_oTarget = parent.opener.top;
  }
  try {
    if ( /nodocument/.test(l_oTarget.embedded.location.href)==false ) l_oTarget.embedded.location.href='../../../_UpInclude/scriptEx/extensions/__embedded_nodocument.asp';
  } catch(e) { void(0); }
}

//------------------------------------------------
function DoDirectEdit(p_lId, p_sDropDown, p_lFileSrc, p_sSelectTemplateFirst, p_sEnterTitleFirst, p_bSpaceBase, p_sIdent) {
//------------------------------------------------
  var l_oTarget = top;
  var l_sUrl = '../../../_UpInclude/scriptEx/extensions/__embedded.asp';
  var l_lSourceOpener = 2;
  var l_lMode = 0;
  var l_sTemplateId = -1;
  if ( p_sDropDown.length > 0 ) {
    l_sTemplateId = document.getElementById(p_sDropDown).value;
    l_lMode = 1;
  }

  if (opener) {
    l_lSourceOpener = 1;
    l_oTarget = opener.top;
  }

  if (parent.opener) {
    l_lSourceOpener = 1;
    l_oTarget = parent.opener.top;
  }

  l_sUrl += '?rq_lRecord=' + p_lId + '&rq_lFile=' + p_lFileSrc + '&rq_lMode=' + l_lMode + '&rq_lTemplate=' + l_sTemplateId + '&rq_lFileTitle=' + HexEncodeString(document.getElementById('xstrtitle').value) + '&rq_lOpener=' + l_lSourceOpener;

  try {
    if ( p_lId == -1 ) {
      if ( document.getElementById(p_sDropDown).value == 0 ) {
        alert(p_sSelectTemplateFirst);
        return;
      }
      if ( document.getElementById('xstrtitle').value.length > 0 )
        if ( p_bSpaceBase )
          l_oTarget.embedded.location.href = l_sUrl + '&rq_sSpaceBaseIdent=' + p_sIdent;
        else
          l_oTarget.embedded.location.href = l_sUrl;
      else
        alert(p_sEnterTitleFirst);
    } else {
      if ( p_bSpaceBase )
        l_oTarget.embedded.location.href = l_sUrl + '&rq_sSpaceBaseIdent=' + p_sIdent;
      else
        l_oTarget.embedded.location.href = l_sUrl;
    }
  } catch(e) { void(0); }
}


// Functions: __class_userselector.asp

//------------------------------------------------
function userselectorSwapClass(object, prevClass, newClass) { 
//------------------------------------------------
  if ( prevClass.length==0 ) {
    object.className += " "+newClass;
  } else {
    RX = eval("/"+prevClass+"( +|$)/gi");
    object.className = object.className.replace(RX, newClass+"$1");
  }
}

//------------------------------------------------
function userselectorSelectrow(p_sUserSelectorTableId, p_sSelectedRowId, p_sSelectedRecord) {
//------------------------------------------------
  if (document.getElementById(p_sUserSelectorTableId).getAttribute("currentRow", "false").length > 0) {
    userselectorSwapClass(document.getElementById(document.getElementById(p_sUserSelectorTableId).getAttribute("currentRow", "false")),'RowSelected','');
  }
  userselectorSwapClass(document.getElementById(p_sSelectedRowId),'','RowSelected');
  document.getElementById(p_sUserSelectorTableId).setAttribute("currentRow", p_sSelectedRowId);
  document.getElementById(p_sUserSelectorTableId).setAttribute("currentRecord", p_sSelectedRecord);
}

//------------------------------------------------
function userselectorDoSearch(p_sIdent, p_lMinLength, p_sMinLength1, p_sMinLength2) {
//------------------------------------------------
  try {
    document.getElementById('BID_USERS_FULL').className = 'TQbutton';
    document.getElementById('BID_GROUPS_FULL').className = 'TQbutton';
    document.getElementById('BID_ORGAS_FULL').className = 'TQbutton';
  }
  catch(e) {
    void(0)
  }
  if(document.forms[0].fr_Search.value.length < p_lMinLength) {
    alert(p_sMinLength1 + ' ' + p_lMinLength + ' ' + p_sMinLength2);
  }
  else {
    document.getElementById('DID_SEARCHRESULT').innerHTML = "<table cellpadding=0 cellspacing=0 border=0 width='100%' style='height:100%;'><tr><td><center><img src='../../../images/sdk/userselector/hourglass.gif' border=0></center></td></tr></table>"
    var l_sQuery  = '?rq_sIdent=' + p_sIdent
                  + '&rq_lSearchUsers=' + document.forms[0].fr_SearchUsers.value
                  + '&rq_lSearchGroups=' + document.forms[0].fr_SearchGroups.value
                  + '&rq_lSearchOrgas=' + document.forms[0].fr_SearchOrgas.value
                  + '&rq_sSearch=' + escape(document.forms[0].fr_Search.value)
    transfer_userselector.location.href='../../../_UpInclude/scriptEx/extensions/__class_userselector_searchresult.asp' + l_sQuery;
  }
}

//------------------------------------------------
function contactselectorDoSearch(p_sIdent, p_lMinLength, p_sMinLength1, p_sMinLength2) {
//------------------------------------------------
  if(document.forms[0].fr_Search.value.length < p_lMinLength) {
    alert(p_sMinLength1 + ' ' + p_lMinLength + ' ' + p_sMinLength2);
  }
  else {
    document.getElementById('DID_SEARCHRESULT').innerHTML = "<table cellpadding=0 cellspacing=0 border=0 width='100%' style='height:100%;'><tr><td><center><img src='../../../images/sdk/contactselector/hourglass.gif' border=0></center></td></tr></table>"
    var l_sQuery  = '?rq_sIdent=' + p_sIdent
                  + '&rq_sSearch=' + HexEncodeString(document.forms[0].fr_Search.value)
    transfer_contactselector.location.href='../../../_UpInclude/scriptEx/extensions/__class_contactselector_searchresult.asp' + l_sQuery;
  }
}

//------------------------------------------------
function userselectorDoSearchFull(p_sIdent, p_sMode) {
//------------------------------------------------
  try {
  document.getElementById('BID_USERS_FULL').className = 'TQbutton';
  document.getElementById('BID_GROUPS_FULL').className = 'TQbutton';
  document.getElementById('BID_ORGAS_FULL').className = 'TQbutton';
  }
  catch(e) {
    void(0)
  }
  document.getElementById('BID_' + p_sMode + '_FULL').className = 'TQbutton TQbuttonselected';
  document.getElementById('DID_SEARCHRESULT').innerHTML = "<table cellpadding=0 cellspacing=0 border=0 width='100%' style='height:100%;'><tr><td><center><img src='../../../images/sdk/userselector/hourglass.gif' border=0></center></td></tr></table>"
  var l_sQuery  = '?rq_sIdent=' + p_sIdent
                + '&rq_sSearchFull=' + p_sMode
  transfer_userselector.location.href='../../../_UpInclude/scriptEx/extensions/__class_userselector_searchresult.asp' + l_sQuery;
}

//------------------------------------------------
function userselectorAddItem(p_sSpaceBaseTableId, p_sItemId, p_bAdd, p_sIdent) {
//------------------------------------------------
  var l_sItemId;
  if(p_sItemId.length == 0) {
    l_sItemId = document.getElementById(p_sSpaceBaseTableId).getAttribute("currentRecord", "false");
  }
  else {
    l_sItemId = p_sItemId;
  }

  var l_sQuery  = '?rq_sIdent=' + p_sIdent
                + '&rq_sItemId=' + l_sItemId
                + '&rq_bAdd=' + p_bAdd
                + '&rq_sSelected=' + document.getElementById(p_sIdent).value
  transfer_userselector.location.href='../../../_UpInclude/scriptEx/extensions/__class_userselector_addremove.asp' + l_sQuery;
}

//------------------------------------------------
function contactselectorAddItem(p_sItemId, p_bAdd, p_sIdent) {
//------------------------------------------------
  var l_sQuery  = '?rq_sIdent=' + p_sIdent
                + '&rq_sItemId=' + p_sItemId
                + '&rq_bAdd=' + p_bAdd
                + '&rq_sSelected=' + document.getElementById(p_sIdent).value
  transfer_contactselector.location.href='../../../_UpInclude/scriptEx/extensions/__class_contactselector_addremove.asp' + l_sQuery;
}

//------------------------------------------------
function userselectorAccept(p_sIdent) {
//------------------------------------------------
  var l_sQuery  = '?rq_sIdent=' + p_sIdent
                + '&rq_sSelected=' + document.getElementById(p_sIdent).value
  opener.transfer_userselector.location.href='../../../_UpInclude/scriptEx/extensions/__class_userselector_accept.asp' + l_sQuery;
  window.close();
}

//------------------------------------------------
function contactselectorAccept(p_sIdent) {
//------------------------------------------------
  var l_sQuery  = '?rq_sIdent=' + p_sIdent
                + '&rq_sSelected=' + document.getElementById(p_sIdent).value
  opener.transfer_contactselector.location.href='../../../_UpInclude/scriptEx/extensions/__class_contactselector_accept.asp' + l_sQuery;
  window.close();
}

// Functions: __class_customfields.asp

//------------------------------------------------
function customfieldsSetPreview(p_sIdent, p_bResetDefault) {
//------------------------------------------------
  var l_sDefault = '';
  var l_sOrientation = '';

  if (!p_bResetDefault) {
    try {l_sDefault = escape(document.forms[0].fr_Default.value)} catch(e) {void(0)}
  }
  try {l_sOrientation = escape(document.forms[0].fr_Orientation.value)} catch(e) {void(0)}

  var l_sQuery  = '?rq_sType=' + document.forms[0].fr_Type.value
                + '&rq_sProtected=' + document.forms[0].fr_Protected.value
                + '&rq_sOrientation=' + l_sOrientation
                + '&rq_lCustomFieldRecord=' + document.forms[0].lid.value
                + '&rq_sIdent=' + p_sIdent
                + '&rq_sDefault=' + l_sDefault
  transfer_customfields.location.href='../../../_UpInclude/scriptEx/extensions/__class_customfields_setpreview.asp' + l_sQuery;
}

//------------------------------------------------
function customfieldsSetSeparatorList(p_lngValue,p_strField) {
//------------------------------------------------
  var l_bInsert         = new Boolean(true);
  var l_arrSelectedTemp = new Array();
  var l_strSelected     = eval('document.forms[0].' + p_strField + '.value;');
  if(l_strSelected.length > 0) {
    var l_arrSelected = l_strSelected.split(',');
    for (var i = 0; i < l_arrSelected.length; i++) {
      if (p_lngValue != l_arrSelected[i]) {
        l_arrSelectedTemp.push(l_arrSelected[i])
        }
      else {
        l_bInsert = false;
        }
      }
    }
  if (l_bInsert) {
    l_arrSelectedTemp.push(p_lngValue)
    }
  eval('document.forms[0].'+ p_strField +'.value = l_arrSelectedTemp.join(\",\");');
  }

//------------------------------------------------
function customfieldsAddRight(p_objLeft,p_objRight) {
//------------------------------------------------
  var l_objOption;
  var l_objLeft  = eval('document.forms[0].' + p_objLeft);
  var l_objRight = eval('document.forms[0].' + p_objRight);
  while(l_objLeft.selectedIndex != -1) {
    l_lSelected = l_objLeft.selectedIndex;
    if(l_lSelected == -1)
      return;
    l_objOption = new Option(l_objLeft.options[l_lSelected].text,l_objLeft.options[l_lSelected].value,false,false);
    l_objRight.options[l_objRight.length] = l_objOption;
    l_objLeft.options[l_lSelected] = null;
    }
  }

//------------------------------------------------
function customfieldsAddLeft(p_objLeft,p_objRight) {
//------------------------------------------------
  var l_objOption;
  var l_objLeft  = eval('document.forms[0].' + p_objLeft);
  var l_objRight = eval('document.forms[0].' + p_objRight);
  while(l_objRight.selectedIndex != -1) {
    l_lSelected = l_objRight.selectedIndex;
    if(l_lSelected == -1)
      return;
    l_objOption = new Option(l_objRight.options[l_lSelected].text,l_objRight.options[l_lSelected].value,false,false);
    l_objLeft.options[l_objLeft.length] = l_objOption;
    l_objRight.options[l_lSelected] = null;
    }
  }

//------------------------------------------------
function customfieldsSetValue(p_objRight,p_objTarget) {
//------------------------------------------------
  var l_objTarget = eval('document.forms[0].' + p_objTarget);
  var l_objRight  = eval('document.forms[0].' + p_objRight);
  l_strOut = '';
  for(i=0;i<l_objRight.options.length;i++) {
    if(i==0) {
      l_strOut = l_objRight.options[i].value
    } else {
      l_strOut += ','
      l_strOut += l_objRight.options[i].value
    }
  }
  l_objTarget.value = l_strOut;
  return true;
}

//------------------------------------------------
function customfieldsInsertTemplate(p_sLabel_Template_Available, p_sLabel_Template_Confirm, p_sTarget) {
//------------------------------------------------
  if(document.getElementById('SID_CUSTOMFIELDS_TEMPLATE').innerHTML.length == 0) {
    alert(p_sLabel_Template_Available);
    }
  else {
    if (document.getElementById(p_sTarget).value.length > 0) {
      if (confirm(p_sLabel_Template_Confirm)) {
        document.getElementById(p_sTarget).value = document.getElementById('SID_CUSTOMFIELDS_TEMPLATE').innerHTML;
        }
      }
    else {
      document.getElementById(p_sTarget).value = document.getElementById('SID_CUSTOMFIELDS_TEMPLATE').innerHTML;
      }
    }
  }

//----------------------------------------------------
function customfieldsCheckboxHide(p_sFieldId, p_sAction) {
//----------------------------------------------------
  switch(p_sAction) {
    case 'SHOW': {
      $id('DID_CheckboxHide_' + p_sFieldId).style.display = 'block';
    }
    break;
    case 'HIDE': {
      $id('DID_CheckboxHide_' + p_sFieldId).style.display = 'none';
      $id('frcf' + p_sFieldId).value = '';
    }
    break;
    case 'AUTO': {
      var l_sValue = $id('frcf' + p_sFieldId).value;
      if (l_sValue.length > 0) {
        $id('DID_CheckboxHide_' + p_sFieldId).style.display = 'block';
        $id('CBID_CheckboxHide_' + p_sFieldId).checked = 'checked';
      } else {
        $id('DID_CheckboxHide_' + p_sFieldId).style.display = 'none';
        $id('CBID_CheckboxHide_' + p_sFieldId).checked = '';
      }
    }
    break;
  }
}

//------------------------------------------------
function CreateCombofield(p_sName, p_sMode, p_oParams, p_oFieldParams, p_oStoreParams) {
//------------------------------------------------
  var l_sQuery = '';
  if (arguments.length > 2) {
    for (var l_sKey in p_oParams) {
      l_sQuery += '&'  + l_sKey + '=' + p_oParams[l_sKey];
    }
  }

  var l_oFieldParams = {};
  if(arguments.length > 3) l_oFieldParams = p_oFieldParams;

  var l_oStoreParams = {};
  if(arguments.length > 4) l_oStoreParams = p_oStoreParams;

  if(typeof l_oComboFields == 'undefined') l_oComboFields = {};
  l_oComboFields[p_sName] = {};

  l_oComboFields[p_sName].store = new Ext.data.JsonStore(Ext.applyIf({
    autoDestroy:    true,
    url:            '../../../_UpInclude/scriptEx/__TQComboStore.asp?rq_sMode=' + p_sMode + l_sQuery,
    storeId:        'Combofield_' + p_sName,
    root:           'items',
    idProperty:     'value',
    fields:         ['value']
  }, l_oStoreParams));

  l_oComboFields[p_sName].combo = new Ext.form.ComboBox(Ext.applyIf({
    editable:       true,
    typeAhead:      true,
    minChars:       0,
    forceSelection: false,
    triggerAction:  'all',
    lazyRender:     true,
    mode:           'remote',
    store:          l_oComboFields[p_sName].store,
    valueField:     'value',
    displayField:   'value',
    name:           (p_sName),
    value:          document.forms[0].elements[p_sName].value
  }, l_oFieldParams));

  l_oComboFields[p_sName].input = Ext.get(p_sName);
  l_oComboFields[p_sName].container = l_oComboFields[p_sName].input.wrap('<div id=input_container_' + p_sName + '>');
  l_oComboFields[p_sName].input.remove();
  l_oComboFields[p_sName].combo.render(l_oComboFields[p_sName].container);
}
