var undefinedDdlValue = '-1';
var maxShortMultiLineLengthLimit = 255;
var maxLongMultiLineLengthLimit = 2000;
// !!! TODO: define applicationPath
var applicationPath = '/';
var initApplicationPathTM = false;
var _shortMonthEnglishNames = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
var _shortMonthNames = _shortMonthEnglishNames;

function enableBackgroundImageCache()
{
  try 
  {
    document.execCommand("BackgroundImageCache", false, true);
  } 
  catch(err) {}
}

function initApplicationPath(appPath)
{
  applicationPath = appPath;
}

function getApplicationPath()
{
  return applicationPath;
}

function stopBubblig(evt)
{
   if (evt.cancelBubble != null) evt.cancelBubble = true;
   if (evt.stopPropagation) evt.stopPropagation();
   if (evt.preventDefault) evt.preventDefault();
}

function getTrim(s)
{
  var m = s.match(/^\s*(\S+(\s+\S+)*)\s*$/);
  return m == null ? '' : m[1];
}

function parseIntTrimNan(s)
{
  var val, sgn;
  sgn = 1;
  val = getTrim(s).replace(/,/g, '');
  if (val.length == 0)
    return 0;
  sgn = 1;
  if (val.substr(0, 1) == '(' && val.substr(val.length - 1, 1) == ')')
  {
    val = getTrim(val.substr(1, val.length - 2));
    sgn = -1;
  }
  return isNaN(val = parseInt(val, 10)) ? 0 : sgn * val;
}

function getFormatedThousand(x)
{
  var v, i;
  v = typeof(x) == 'string' ? x : '' + Math.abs(x);
  i = (i = v.indexOf('.')) < 0 ? 3 : 3 + v.length - i;
  while (v.length > i)
  {
    v = v.substr(0, v.length - i) + ',' + v.substr(v.length - i);
    i += 4;
  }
  return x < 0 ? '(' + v + ')' : v;
}

function getFormatedPositiveDecimal(x, dec)
{
  var v, d, ix, len;
  v = '' + x;
  d = (dec == null ? 2 : dec) + 1;
  ix = v.indexOf('.');
  len = v.length;
  if (ix < 0)
  {
    v += '.';
    ix = len;
    len++;
  }
  while (len - ix < d)
  {
    v += '0';
    len++;
  }
  if (len - ix > d)
    v = v.substr(0, ix + d);
  return v;
}

function getFirstChldTagNode(obj)
{
  var chs, i;
  chs = obj.childNodes;
  for (i = 0; i < chs.length; i++)
  {
    if (chs[i].tagName) return chs[i];
  }
  return false;
}

var $scrollBarWidth = false;
function getScrollBarWidth()
{
  if (!$scrollBarWidth)
  {
    var objDiv, idDiv;
    $scrollBarWidth = 20;
    objDiv = document.createElement('DIV');
    if(objDiv)
    {
      idDiv = 'idSBD_' + (new Date()).getTime();
      objDiv.id = idDiv;
      objDiv.style.position = 'absolute';
      objDiv.style.left = objDiv.style.top = '1px';
      objDiv.style.width = objDiv.style.height = '100px';
      objDiv.style.overflow = 'scroll';
      objDiv.style.visibility = 'hidden';
      if(document.body)
      {
        document.body.appendChild(objDiv);
        objDiv = document.getElementById(idDiv);
        if (objDiv && objDiv.offsetWidth && objDiv.clientWidth)
        {
          $scrollBarWidth = objDiv.offsetWidth - objDiv.clientWidth;
		      if(document.all) objDiv.removeNode(true);
		      else document.body.removeChild(objDiv);
        }
      }
	  }
	}
	return $scrollBarWidth;
}

function getXY(obj)
{
  var parTemp;
  obj.X = 0;
  obj.Y = 0;
  try
  {
      if (obj.offsetParent)
      {
        parTemp = obj;
        while (parTemp.offsetParent)
        {
          parTemp = parTemp.offsetParent;
          obj.X += parTemp.offsetLeft;
          obj.Y += parTemp.offsetTop;
        }
      }
      obj.X += obj.offsetLeft;
      obj.Y += obj.offsetTop;
  }
  catch (err) {}
}

function getCW(obj)
{
  return obj.clientWidth ? obj.clientWidth : obj.offstWidth;
}

function getCH(obj)
{
  return obj.clientHeight ? obj.clientHeight : obj.offstHeight;
}

function getScrollLeft()
{
  return ((typeof(window.pageXOffset) == 'number')
    ? window.pageXOffset
    : ((document.documentElement && document.documentElement.scrollLeft)
      ? document.documentElement.scrollLeft
      : ((document.body && document.body.scrollLeft)
        ? document.body.scrollLeft
        : 0)));
}

function getScrollTop()
{
  return ((typeof(window.pageYOffset) == 'number')
    ? window.pageYOffset
    : ((document.documentElement && document.documentElement.scrollTop)
      ? document.documentElement.scrollTop
      : ((document.body && document.body.scrollTop)
        ? document.body.scrollTop
        : 0)));
}

function getScrollWidth()
{
  return document.body.scrollWidth;
}

function getScrollHeight()
{
  return document.body.scrollHeight;
}

function getInnerWidth()
{
  return (isIE)
    ? ((document.documentElement.clientWidth)
      ? document.documentElement.clientWidth
      : document.body.clientWidth)
    : ((getScrollHeight() > window.innerHeight)
      ? window.innerWidth - getScrollBarWidth()
      : window.innerWidth);
}

function getInnerHeight()
{
  return (isIE)
    ? ((document.documentElement.clientHeight)
      ? document.documentElement.clientHeight
      : document.body.clientHeight)
    : ((getScrollWidth() > window.innerWidth)
      ? window.innerHeight - getScrollBarWidth()
      : window.innerHeight);
}

// Useful functions 

function anchorClick(anchorId, href)
{
    var a = document.getElementById ? document.getElementById(anchorId) : false;
    if (a && isIE) {
        try {
            a.href = href; a.click();
        } catch (e) {

        }
    }
    else window.location = href;

    return false;
}

function preventKeySubmit(ev)
{
  if (isIE) return;
  if (ev.which && 13 == ev.which && ev.preventDefault) ev.preventDefault();
}

function searchKeyDown(box, ev, searchBtnId, resetBtnId)
{
  var b = document.getElementById ? document.getElementById(searchBtnId) : false;
  if (!b) return;
  if (b.disabled) return;
  if (!ev) ev = window.event;
  if (13 == (isIE ? ev.keyCode : (ev.which ? ev.which : 0)) && !b.disabled)
  {
    b.focus();
    if (ev.stopPropagation)
    {
      ev.stopPropagation();
      ev.preventDefault();
    }
    else
    {
      ev.cancelBubble = true;
      ev.returnValue = false;
    }
    b.click();
    b.disabled = true;
    return false;
  }
  if (box.value.length > 0)
  {
    var r = resetBtnId ? document.getElementById(resetBtnId) : false;
    if (r && r.disabled) r.disabled = false;
  }
}

function addOption(dd, txt, id, selId)
{
  var i, sel;
  i = dd.options.length;
  dd.options[i] = new Option(txt, '' + id);
  sel = id == selId;
  if (sel)
    dd.selectedIndex = i;
  return sel;
}

function getSelectedOptionIntValue(dd)
{
  return parseInt(dd.options[dd.selectedIndex].value, 10);
}

// Convert value from MonthPickerTextBox to format MMM'yy
// mytb - MonthYearTextBox
function mytbValueToString(mytb)
{
  var yi, spl, y, m, i;
  yi = mytb.value.indexOf('/') > 0 ? 1 : 0;
  spl = mytb.value.split(yi > 0 ? '/' : '-');
  if (spl.length < 2)
    return '\'';
  y = parseInt(getTrim(spl[yi]), 10);
  if (isNaN(y))
    y = '';
  else
  {
    y = ' ' + y;
    while (y.length < 5)
      y = ' ' + y;
  }
  y = y.substr(3);
  m = getTrim(spl[1 - yi]).toUpperCase();
  for (i = 0; i < _shortMonthNames.length; i++)
    if (m.indexOf(_shortMonthNames[i].toUpperCase()) == 0)
      return _shortMonthEnglishNames[i] + '\'' + y;
  return '\'' + y;
}

// limits width of defined select to maxWidth
function limitSelectWidth(selectId, minWidth, maxWidth)
{
  var select = document.getElementById(selectId);
  if (select)
  {
    if (maxWidth > 0 && select.clientWidth > maxWidth)
    {
      select.style.width = maxWidth + 'px';
    }    
    else if (minWidth > 0 && select.clientWidth < minWidth)
    {
      select.style.width = minWidth + 'px';
    }
  }
}

function getBaselineFullName(namePrefix, mytbFrom, mytbTo, tbDescription)
{
  var descr = getTrim(tbDescription.value);
  var arr = new Array();
  arr.splice(0, 0, namePrefix, mytbValueToString(mytbFrom), '-', mytbValueToString(mytbTo));
  if (descr.length > 0)
    arr.push(descr.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;'));
  return arr.join(' ');
}

function setClass(obj, className)
{
  obj.className = className;
}

// Telerik controls related scripts 

function tg_rmOver(obj, classNamePostfix)
{
  obj.className = obj.className + classNamePostfix;
}

function tg_rmOut(obj, classNamePostfix)
{
  obj.className = obj.className.replace(classNamePostfix, '');
}

// Validators 

// Validates selected value of some DropDownList
// valid, if selected value > undefinedDdlValue
function validateDdl(sender, args)
{
  args.IsValid = args.Value > undefinedDdlValue;
}
function ValidateEmailFormat(source, args) 
{
  var domainNames = ['NET','COM','BIZ','ORG','EDU','MIL','GOV','PRO','INT','COOP','NAME','INFO','AERO','ARPA','TRAVEL','MUSEUM','US','CA','UK','GB','FR','RU','AC','AD','AE','AF','AG','AI','AL','AM','AN','AO','AQ','AR','AS','AT','AU','AW','AZ','BA','BB','BD','BE','BF','BG','BH','BI','BJ','BM','BN','BO','BR','BS','BT','BV','BW','BY','BZ','CC','CD','CF','CG','CH','CI','CK','CL','CM','CN','CO','CR','CU','CV','CX','CY','CZ','DE','DJ','DK','DM','DO','DZ','EC','EE','EG','ER','ES','ET','EU','FI','FJ','FK','FM','FO','GA','GD','GE','GF','GG','GH','GI','GL','GM','GN','GP','GQ','GR','GS','GT','GU','GW','GY','HK','HM','HN','HR','HT','HU','ID','IE','IL','IM','IN','IO','IQ','IR','IS','IT','JE','JM','JO','JP','KE','KG','KH','KI','KM','KN','KR','KW','KY','KZ','LA','LB','LC','LI','LK','LR','LS','LT','LU','LV','LY','MA','MC','MD','MG','MH','MK','ML','MM','MN','MO','MP','MQ','MR','MS','MT','MU','MV','MW','MX','MY','MZ','NA','NC','NE','NF','NG','NI','NL','NO','NP','NR','NU','NZ','OM','PA','PE','PF','PG','PH','PK','PL','PM','PN','PR','PS','PT','PW','PY','QA','RE','RO','RW','SA','SB','SC','SD','SE','SG','SH','SI','SJ','SK','SL','SM','SN','SO','SR','ST','SU','SV','SY','SZ','TC','TD','TF','TG','TH','TJ','TK','TL','TM','TN','TO','TP','TR','TT','TV','TW','TZ','UA','UG','UM','UY','UZ','VA','VC','VE','VG','VI','VN','VU','WF','WS','YE','YT','YU','ZA','ZM','ZW'];      
  args.IsValid = true;
  var checkedString = getTrim(args.Value);
  if (checkedString == '')
    return;
  var emailMatches = checkedString.match(/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/);
  if (emailMatches != null && emailMatches.length > 0)
  {
    checkedString = checkedString.substr(checkedString.lastIndexOf('.')+1).toUpperCase();
    for (var i = 0; i < domainNames.length; i++)
    {
      if (checkedString == domainNames[i])
        return;
    }
  }
  args.IsValid = false;
}
function ValidatePassword(sender, args) 
{
    if (args.Value == '' || args.Value.length < MinPasswordLength) 
    {
         args.IsValid = false;
    }
}

function checkInputIsDecimal(source, args)
{
  return (args.IsValid = !isNaN(parseFloat(1 * getTrim(args.Value))));
}

function checkInputIsInt(source, args)
{
  return (args.IsValid = checkInputIsDecimal(source, args) && args.Value.indexOf('.') < 0);
}

function checkInputIsPositiveDecimal(source, args)
{
  var parsedValue = parseFloat(1 * getTrim(args.Value));
  return (args.IsValid = (!isNaN(parsedValue) && parsedValue >= 0.0));
}

function checkInputIsPositiveInt(source, args)
{
  return (args.IsValid = checkInputIsPositiveDecimal(source, args) && args.Value.indexOf('.') < 0);
}

function checkInputIsPercent(source, args)
{
  var parsedValue = parseFloat(args.Value);
  return (args.IsValid = !isNaN(parsedValue) && parsedValue >= 0 && parsedValue <= 100);
}

function intKeyPress(box, ev)
{
  if (!ev) ev = window.event;
  var kc = isIE ? ev.keyCode : (ev.which ? ev.which : 0);
  return (kc > 47 && kc < 58) || kc == 0 || kc == 8 || kc == 13;
}

function intCommaSeparatedKeyPress(box, ev)
{
  if (!ev) ev = window.event;
  var kc = isIE ? ev.keyCode : (ev.which ? ev.which : 0);
  return (kc > 47 && kc < 58) || kc == 44 || kc == 32 || kc == 0 || kc == 8 || kc == 13;
}

function decimalKeyPress(box, ev)
{
  if (!ev) ev = window.event;
  var kc = isIE ? ev.keyCode : (ev.which ? ev.which : 0);
  return kc == 0 || kc == 8
    || !(kc < 45 || kc > 57 || kc == 47 || kc == 13
      || (kc == 45 && box.value.indexOf('-') >= 0)
      || (kc == 46 && box.value.indexOf('.') >= 0));
}

function decimalPositiveKeyPress(box, ev)
{
  if (!ev) ev = window.event;
  var kc = isIE ? ev.keyCode : (ev.which ? ev.which : 0);
  return kc == 0 || kc == 8
    || !(kc < 46 || kc > 57 || kc == 47 || kc == 13
      || (kc == 46 && box.value.indexOf('.') >= 0));
}

//Keep alive handler
var _keepSessionAliveId;
function keepSessionAlive(delayMs)
{
  if (_keepSessionAliveId) return;
  if (typeof(temp_img) == 'undefined')
  {
    temp_img = new Image(); 
  }
  _keepSessionAliveId = setInterval( 
    function() 
    {
      temp_img.src = getApplicationPath() + 'KeepSessionAlive.ashx?' + (new Date()).valueOf();
    },
    delayMs
  );
}

// function for validation short text fields
function CheckShortMultiLineFieldLength(source, args) {
  var mesVal = args.Value;
  if (mesVal != null && mesVal.length > maxShortMultiLineLengthLimit ) {
    args.IsValid = false;
  } else {
    args.IsValid = true;
  }
}

// function for validation long text fields
function CheckLongMultiLineFieldLength(source, args) {
  var mesVal = args.Value;
  if (mesVal != null && mesVal.length > maxLongMultiLineLengthLimit ) {
    args.IsValid = false;
  } else {
    args.IsValid = true;
  }
}


//========================================================
// TrnasPassingMessage

var wMsgTM = false;
var objWaitMsg = new Array();

function BonaWaitMsg(msgText, msgTMStart, msgTMStop, msgHTML, msgClass, msgX, msgY, msgW, msgH, msgZ, msgFLView, msgFLVD, msgFLHide, msgFLHD, msgFLClose) {
  var iframeEmptyPage = getApplicationPath() + 'blank.html';
	var i, objStyleLinks;
	var msgRndDate = new Date();
	var co = objWaitMsg.length;
	this.msgId = 'WaitMsgID' + msgRndDate.getTime() + Math.round(Math.random() * 1000000) + (co + '');
	this.msgText = (msgText) ? msgText : 'Please wait...';
	this.msgTMStart = (msgTMStart) ? msgTMStart : 0;
	this.msgTMStop = (msgTMStop) ? msgTMStop : 0;
	this.msgHTML = bonaWaitMsgHTML;
	if(msgHTML) {
		if(msgHTML.substr(0, 6) == '##ID##') {
			if(document.getElementById(msgHTML.substr(6)) && document.getElementById(msgHTML.substr(6)).innerHTML) {
				this.msgHTML = document.getElementById(msgHTML.substr(6)).innerHTML;
			}
		}
		else {
			this.msgHTML = msgHTML;
		}
	}
	this.msgClass = (msgClass) ? msgClass : 'waitMsgBlock';
	this.msgX = (msgX) ? msgX : 0;
	this.msgY = (msgY) ? msgY : 0;
	this.msgW = (msgW) ? msgW : 0;
	this.msgH = (msgH) ? msgH : 0;
	this.msgZ = (msgZ) ? msgZ : 0;
	this.msgFLView = (msgFLView) ? msgFLView : null;
	this.msgFLViewD = (msgFLVD) ? msgFLVD : 0.2;
	this.msgFLHide = (msgFLHide) ? msgFLHide : null;
	this.msgFLHideD = (msgFLHD) ? msgFLHD : 0.2;
	this.msgFLClose = (msgFLClose) ? msgFLClose : false;
	
	this.spnMsg = document.createElement('SPAN');
	this.spnMsg.id = this.msgId + 'spn';
	document.body.insertBefore(this.spnMsg, document.body.firstChild);
	this.spnMsg = document.getElementById(this.msgId + 'spn');
	if(isIE) {
	  this.spnMsg.innerHTML = '<iframe id="' + this.msgId + '" name="' + this.msgId + 'ifrnm" src="' + iframeEmptyPage + '" frameborder="0" marginheight="0" marginwidth="0" hspace="0" vspace="0" scrolling="no" style="position: absolute; left: ' + this.msgX + 'px; top: ' + this.msgY + 'px; z-index: ' + ((this.msgZ) ? this.msgZ : 35000 + co) + '; filter: progid:DXImageTransform.Microsoft.Shadow(color=#858585, direction=135, strength=4, enabled=true); visibility: hidden;"></iframe>';
		this.objMsg = document.getElementById(this.msgId);
		this.contMsg = window.frames[this.msgId + 'ifrnm'];
	}
	else {
		this.objMsg = document.createElement('IFRAME');
		this.objMsg.id = this.msgId;
		this.objMsg.name = this.msgId;
		this.objMsg.style.position = 'absolute';
		this.objMsg.style.visibility = 'hidden';
		this.objMsg.style.left = this.msgX;
		this.objMsg.style.top = this.msgY;
		this.objMsg.style.zIndex = (this.msgZ) ? this.msgZ : 35000 + co;
		this.objMsg.frameborder = this.objMsg.marginheight = this.objMsg.marginwidth = this.objMsg.hspace = this.objMsg.vspace = 0;
		this.objMsg.scrolling = 'no';
		this.objMsg.src = iframeEmptyPage;
		this.spnMsg.appendChild(this.objMsg);
		this.objMsg = document.getElementById(this.msgId);
		this.contMsg = this.objMsg;
	}
	this.sfdTM = false;
	this.msgTM = false;
	objWaitMsg[co] = this;
	this.sfdTM = setInterval('setInFrmDiv("' + this.msgId + '");', 100);
}

function setInFrmDiv(id) {
	var i = 0;
	while(i < objWaitMsg.length && objWaitMsg[i].msgId != id) i++;
	if(i < objWaitMsg.length && window.frames[objWaitMsg[i].objMsg.name] && window.frames[objWaitMsg[i].objMsg.name].document && window.frames[objWaitMsg[i].objMsg.name].document.body && window.frames[objWaitMsg[i].objMsg.name].document.body.innerHTML.toLowerCase().indexOf('blank') != -1) {
		if(objWaitMsg[i].sfdTM) clearInterval(objWaitMsg[i].sfdTM);
		try {
		  window.frames[objWaitMsg[i].objMsg.name].document.body.innerHTML = '<div id="' + objWaitMsg[i].msgId + 'infrmdiv" class="' + objWaitMsg[i].msgClass + '" style="width: ' + ((objWaitMsg[i].msgW) ? objWaitMsg[i].msgW + 'px' : 'auto') + '; height: ' + ((objWaitMsg[i].msgH) ? objWaitMsg[i].msgH + 'px' : 'auto') + ';"><table><tr><td>' + (objWaitMsg[i].msgHTML.replace(/##TEXT##/g, objWaitMsg[i].msgText)) + '</td></tr></table></div>';
			objWaitMsg[i].inFrmDiv = window.frames[objWaitMsg[i].objMsg.name].document.getElementById(objWaitMsg[i].msgId + 'infrmdiv');
		}
		catch(e){}
		if(objWaitMsg[i].inFrmDiv) {
		  objWaitMsg[i].objMsg.width = objWaitMsg[i].inFrmDiv.offsetWidth;
			objWaitMsg[i].objMsg.height = objWaitMsg[i].inFrmDiv.offsetHeight;
			if(objWaitMsg[i].msgFLClose) {
				objWaitMsg[i].inFrmDiv.title = ((typeof(objWaitMsg[i].msgFLClose)).toUpperCase() == 'STRING') ? objWaitMsg[i].msgFLClose : 'Click to Close/Open message';
				objWaitMsg[i].inFrmDiv.style.cursor = 'hand';
				objWaitMsg[i].inFrmDiv.onclick = new Function('parent.hideWaitMsgDo("' + objWaitMsg[i].msgId + '", true);');
			}
		}
	}
}

BonaWM = BonaWaitMsg.prototype;

BonaWM.initWaitMsg = function(msgText, msgTMStart, msgTMStop, msgHTML, msgClass, msgX, msgY, msgW, msgH, msgZ, msgFLView, msgFLVD, msgFLHide, msgFLHD, msgFLClose) {
	this.msgText = (msgText) ? msgText : 'Please wait...';
	this.msgTMStart = (msgTMStart) ? msgTMStart : 0;
	this.msgTMStop = (msgTMStop) ? msgTMStop : 0;
	this.msgHTML = bonaWaitMsgHTML;
	if(msgHTML) {
		if(msgHTML.substr(0, 6) == '##ID##') {
			if(document.getElementById(msgHTML.substr(6)) && document.getElementById(msgHTML.substr(6)).innerHTML) {
				this.msgHTML = document.getElementById(msgHTML.substr(6)).innerHTML;
			}
		}
		else {
			this.msgHTML = msgHTML;
		}
	}
	this.msgClass = (msgClass) ? msgClass : 'waitMsgBlock';
	this.msgX = (msgX) ? msgX : 0;
	this.msgY = (msgY) ? msgY : 0;
	this.msgW = (msgW) ? msgW : 0;
	this.msgH = (msgH) ? msgH : 0;
	this.msgZ = (msgZ) ? msgZ : 0;
	this.msgFLView = (msgFLView) ? msgFLView : null;
	this.msgFLViewD = (msgFLVD) ? msgFLVD : 0.2;
	this.msgFLHide = (msgFLHide) ? msgFLHide : null;
	this.msgFLHideD = (msgFLHD) ? msgFLHD : 0.2;
	this.msgFLClose = (msgFLClose) ? msgFLClose : false;
}

BonaWM.viewWaitMsg = function(st) {
  if(this.msgTM) clearTimeout(this.msgTM);
	this.msgTM = setTimeout('viewWaitMsgDo("' + this.msgId + '", ' + ((st) ? true : false) + ');', this.msgTMStart + 33);
}

function viewWaitMsgDo(id, st) {
	var i = 0, strRE = ' ';
	while(i < objWaitMsg.length && objWaitMsg[i].msgId != id) i++;
	if(i < objWaitMsg.length) {
		if(objWaitMsg[i].msgTM) clearTimeout(objWaitMsg[i].msgTM);
		if(objWaitMsg[i].inFrmDiv) { // && st ?
			objWaitMsg[i].inFrmDiv.className = objWaitMsg[i].msgClass;
			objWaitMsg[i].objMsg.style.position = 'absolute';
			if(objWaitMsg[i].msgW) {
				objWaitMsg[i].inFrmDiv.style.width = objWaitMsg[i].msgW;
				objWaitMsg[i].objMsg.width = objWaitMsg[i].inFrmDiv.offsetWidth;
			}
			if(objWaitMsg[i].msgH) {
			  objWaitMsg[i].inFrmDiv.style.height = objWaitMsg[i].msgH;
				objWaitMsg[i].objMsg.height = objWaitMsg[i].inFrmDiv.offsetHeight;
			}
			if(objWaitMsg[i].inFrmDiv.innerHTML) {
			  objWaitMsg[i].inFrmDiv.innerHTML = objWaitMsg[i].msgHTML.replace(/##TEXT##/g, '<table><tr><td>' + objWaitMsg[i].msgText + '</td></tr></table>');
			}
		}
		objWaitMsg[i].objMsg.style.left = ((objWaitMsg[i].msgX) ? objWaitMsg[i].msgX : ((getWindowWidth() - objWaitMsg[i].objMsg.offsetWidth) / 2) + getScrollX()) + 'px';
		objWaitMsg[i].objMsg.style.top = ((objWaitMsg[i].msgY) ? objWaitMsg[i].msgY : ((((getWindowHeight() <= getDocumentHeight()) ? getWindowHeight() : getDocumentHeight()) - objWaitMsg[i].objMsg.offsetHeight) / 2) + getScrollY()) + 'px';
		if(objWaitMsg[i].objMsg.style.visibility == 'hidden') {
			if(isIE && isDOM && objWaitMsg[i].msgFLView) {
				if(objWaitMsg[i].objMsg.currentStyle.filter.indexOf("DXImageTransform.Microsoft.RevealTrans") == -1) {
					objWaitMsg[i].objMsg.style.filter = objWaitMsg[i].objMsg.currentStyle.filter + ' progid:DXImageTransform.Microsoft.RevealTrans()';
				}
				objWaitMsg[i].objMsg.filters.item("DXImageTransform.Microsoft.RevealTrans").Apply();
				objWaitMsg[i].objMsg.filters.item("DXImageTransform.Microsoft.RevealTrans").Transition = objWaitMsg[i].msgFLView - 1;
				objWaitMsg[i].objMsg.filters.item("DXImageTransform.Microsoft.RevealTrans").Duration = objWaitMsg[i].msgFLViewD;
				objWaitMsg[i].objMsg.style.visibility = 'visible';
				objWaitMsg[i].objMsg.filters.item("DXImageTransform.Microsoft.RevealTrans").Play();
			}
			else {
				objWaitMsg[i].objMsg.style.visibility = 'visible';
			}
		}
		strRE.match(/./);
		((document.body.onresize + '').replace(/\n/g, '')).match(/.*?\{(.*?)\}.*?/);
		document.body.onresize = new Function(RegExp.$1 + '; viewWaitMsgRefresh("' + objWaitMsg[i].msgId + '");');
		strRE.match(/./);
		((document.body.onscroll + '').replace(/\n/g, '')).match(/.*?\{(.*?)\}.*?/);
		document.body.onscroll = new Function(RegExp.$1 + '; viewWaitMsgRefresh("' + objWaitMsg[i].msgId + '");');
		if(objWaitMsg[i].msgTMStop) {
			objWaitMsg[i].msgTM = setTimeout('hideWaitMsgDo("' + objWaitMsg[i].msgId + '", ' + false + ');', objWaitMsg[i].msgTMStop);
		}
	}
}

function viewWaitMsgRefresh(id) {
  var i = 0;
	while(i < objWaitMsg.length && objWaitMsg[i].msgId != id) i++;
	if(i < objWaitMsg.length) {
		objWaitMsg[i].objMsg.style.left = (objWaitMsg[i].msgX) ? objWaitMsg[i].msgX : ((getWindowWidth() - objWaitMsg[i].objMsg.offsetWidth) / 2) + getScrollX();
		objWaitMsg[i].objMsg.style.top = (objWaitMsg[i].msgY) ? objWaitMsg[i].msgY : ((((getWindowHeight() <= getDocumentHeight()) ? getWindowHeight() : getDocumentHeight()) - objWaitMsg[i].objMsg.offsetHeight) / 2) + getScrollY();
	}
}

BonaWM.hideWaitMsg = function(st) {
  if(this.msgTM) clearTimeout(this.msgTM);
	hideWaitMsgDo(this.msgId, st);
}

function hideWaitMsgDo(id, st) {
	var i = 0;
	while(i < objWaitMsg.length && objWaitMsg[i].msgId != id) i++;
	if(i < objWaitMsg.length) {
		if(objWaitMsg[i].msgTM) clearTimeout(objWaitMsg[i].msgTM);
		if(objWaitMsg[i].objMsg.style.visibility == 'visible') {
			if(!st && isIE && isDOM && objWaitMsg[i].msgFLHide) {
				if(objWaitMsg[i].objMsg.currentStyle.filter.indexOf("DXImageTransform.Microsoft.RevealTrans") == -1) {
					objWaitMsg[i].objMsg.style.filter = objWaitMsg[i].objMsg.currentStyle.filter + ' progid:DXImageTransform.Microsoft.RevealTrans()';
				}
				objWaitMsg[i].objMsg.filters.item("DXImageTransform.Microsoft.RevealTrans").Apply();
				objWaitMsg[i].objMsg.filters.item("DXImageTransform.Microsoft.RevealTrans").Transition = objWaitMsg[i].msgFLHide - 1;
				objWaitMsg[i].objMsg.filters.item("DXImageTransform.Microsoft.RevealTrans").Duration = objWaitMsg[i].msgFLHideD;
				objWaitMsg[i].objMsg.style.visibility = 'hidden';
				objWaitMsg[i].objMsg.filters.item("DXImageTransform.Microsoft.RevealTrans").Play();
			}
			else {
				objWaitMsg[i].objMsg.style.visibility = 'hidden';
			}
		}
	}
}

bonaWaitMsgHTML = '##TEXT##';


var cwmObjectsTM;
var confirmMessage;

function CreateWaitMessageObjects() {
  if(document && document.body && document.body.innerHTML) {
    if(cwmObjectsTM) clearInterval(cwmObjectsTM);
    confirmMessage = new BonaWaitMsg();
  }
}

function setNewLocation(newLocation)
{
  if (typeof(DataChangeWatcher) != 'undefined') 
  {
    if (DataChangeWatcher.confirmIfDataChanged()) 
    {
      window.location = newLocation;
    }
  }
  else
  {
    window.location = newLocation;
  }
}

// Teleric Rad Tree Enhunsment -->

function switchTelericRadTreeDisableNode(ev)
{
  var img, div, src;
  if (!ev) ev = window.event;
  img = isIE ? ev.srcElement : ev.target;
  if (div = document.getElementById('G' + img.parentNode.id))
  {
    src = img.src;
    if (src.indexOf('Minus') > 0)
    {
      div.style.display = 'none';
      img.src = src.replace('Minus', 'Plus');
    }
    else if (src.indexOf('Plus') > 0)
    {
      div.style.display = 'block';
      img.src = src.replace('Plus', 'Minus');
    }
  }
}

function setTelericRadTreeDisableNodesAsSwitchable(treeId, range)
{
  var tree, divs, i, imgs, j, src;
  if (tree = document.getElementById(treeId))
  {
    divs = tree.getElementsByTagName('DIV');
    for (i = 0; i < divs.length; i++)
      if (divs[i].id.indexOf(treeId) == 0)
      {
        imgs = divs[i].getElementsByTagName('IMG');
        for (j = 0; j <= range; j++)
        {
          src = imgs[j].src;
          if (src.indexOf('Minus') > 0 || src.indexOf('Plus') > 0)
          {
            if (isIE)
              imgs[j].attachEvent('onclick', switchTelericRadTreeDisableNode);
            else
              imgs[j].addEventListener('click', switchTelericRadTreeDisableNode, false);
          }
        }
      }
  }
}

function scrollToTelericRadTreeNode(nodeId)
{
  var marker, yM, yW;
  if (marker = document.getElementById(nodeId))
  {
    yM = marker.offsetTop;
    yW = getInnerHeight();
    if (yM + 30 > yW) window.scroll(0, yM - (yW / 2));
  }
}

