var bShowCalc=false
var ctrlCalc="empty"
var modCalc,decCalc
var operand
var field
function ShowPopUpCalculator(fieldFrom,keyCode,modPict,decPict) {
  bShowCalc=true
  documentAddClick(hideCalc)
  modCalc=modPict
  decCalc=decPict
  operand=String.fromCharCode(keyCode)
  field=fieldFrom
  var imgclse="../"+m_cThemePath +"/formPage/close.gif"
  var imgChgMrk="../"+m_cThemePath +"/formPage/changemark.gif"
  var title="<label style='font-size:12'>Basic Calculator</label>"
  var close="<IMG SRC='"+imgclse+"' WIDTH='15' HEIGHT='13' BORDER='0' ALT='Close the Calculator' style='cursor:pointer' onclick=CloseCalc()>"
  var chgMark="<IMG SRC='"+imgChgMrk+"' WIDTH='20' HEIGHT='17' BORDER='0' ALT='Change the mark' style='cursor:pointer' onclick=ChangeMarkField(Ctrl(field.id+'_CALC'))>"
  var head="<table class='Title' style='width:100%'><tr><td id='head' onmousedown=dragToolbar(event,'calculatorDiv',5,5)>"+title+"</td><td align=right>"+close+"</td></tr></table>"
  var text=field.value
  var input="<input id="+field.id+"_CALC type=text title='Insert the second operand of the operation' value='' maxlength="+field.maxLength+" style='height:"+field.offsetHeight+";width:"+field.offsetWidth+";text-align:right'>"
  var result="<div onclick=ProcessEqual() style='font-size:17;color:black;font-weight:bold;cursor:pointer'>=</div>"
  var OperationTbl="<table class='FormDefault'><tr><td></td><td align=right>"+text+"</td><td style='font-size:17;color:black;font-weight:bold'>"+operand+"</td></tr>"+
                          "<tr><td>"+chgMark+"</td><td>"+input+"</td><td>"+result+"</td></tr></table>"
  var MainTbl="<table id='calculator' onmouseover='PrepareToDoNotHideCalc()' onmouseout='PrepareToHideCalc()'>"+
              "<tr><td align=center>"+head+"</td></tr><tr><td>"+OperationTbl+"</td></tr></table>"
  ctrlCalc=="empty" ? ctrlCalc=document.createElement("div") : ctrlCalc.style.display='block'
  ctrlCalc.id='calculatorDiv'
  ctrlCalc.style.position="absolute"
  var aTag = field
  var leftpos=0,toppos=0
  do {
    aTag = aTag.offsetParent
    leftpos += aTag.offsetLeft
    toppos += aTag.offsetTop
  } while(aTag.tagName!="BODY")
  ctrlCalc.style.left=field.offsetLeft+leftpos
  ctrlCalc.style.top=field.offsetTop+toppos+field.offsetHeight + 2
  ctrlCalc.className='Calculator'
  ctrlCalc.innerHTML=MainTbl
  aTag.appendChild(ctrlCalc)
  Ctrl(field.id+"_CALC").onkeypress=ApplyPictCalc
  Ctrl(field.id+"_CALC").onkeydown=EscReturnCalc
  try {
    Ctrl(field.id+"_CALC").focus()
    last_focused_comp=Ctrl(field.id+"_CALC")
  } catch(e) {}
  if(document.body.offsetLeft+document.body.offsetWidth - 1 < field.offsetLeft+Ctrl("calculatorDiv").offsetWidth)
    ctrlCalc.style.left = field.offsetLeft - Ctrl("calculatorDiv").offsetWidth + field.offsetWidth - (!IsIE()||!IsIE_Mac?42:0)
  if(document.body.offsetTop+document.body.offsetHeight < field.offsetTop+Ctrl("calculatorDiv").offsetHeight)
    ctrlCalc.style.top = field.offsetTop - Ctrl("calculatorDiv").offsetHeight - 4
}
function CalcAndClose() {
  DoCalc() ? CloseCalc() : SetControlFocus(field.id+'_CALC')
}
function PercentageCalc() {
  var x=HtW(field.value,'N')
  var y=HtW(Ctrl(field.id+'_CALC').value,'N')
  Ctrl(field.id+'_CALC').value=WtH(x*y/100,'N',0,0)
}
function DoCalc() {
  var x=HtW(field.value,'N')
  var y=HtW(Ctrl(field.id+'_CALC').value,'N')
  var calculatedVal
  if (y==0 && operand=='/') {
    alert("Cannot divide by zero")
    return false
  }
  calculatedVal=eval(x+operand+"("+y+")")
  var maxVal=eval(Replicate('9',modCalc)+'.'+Replicate('9',decCalc))
  if (Math.abs(calculatedVal) > maxVal) {
    alert("Picture overflow")
    return false
  }
  eval('w_'+field.name+'=calculatedVal')
  SetControlsValue()
  return true
}
function CloseCalc() {
  ctrlCalc.style.display='none'
  SetControlFocus(field.id)
  documentRemoveClick(hideCalc)
}
function ApplyPictCalc(e) {
  var keyCode=KeyCodeCalc(e)
  if (keyCode==42 || keyCode==43 || keyCode==47 || keyCode==45) {
    if (!Empty(Ctrl(field.id+'_CALC').value)) {
      if (DoCalc()) {
        CloseCalc()
        ShowPopUpCalculator(field,keyCode==95?45:keyCode,modCalc,decCalc)
      } else
        SetControlFocus(field.id+'_CALC')
    } else {
      CloseCalc()
      ShowPopUpCalculator(field,keyCode==95?45:keyCode,modCalc,decCalc)
    }
    return false
  } else if (keyCode==61)
    Empty(Ctrl(field.id+'_CALC').value) ? CloseCalc() : CalcAndClose()
  else if(keyCode==37 && !Empty(Ctrl(field.id+'_CALC').value))
    PercentageCalc()
  else if(keyCode==95)
    ChangeMarkField(Ctrl(field.id+'_CALC'))
  return CheckNumWithPict(e,[modCalc,decCalc,''])
}
function EscReturnCalc(e) {
  var keyCode=KeyCodeCalc(e)
  if(typeof(e)=='undefined')
    e=window.event
  if (keyCode == 27) {
    CloseCalc()
    IsIE() || IsIE_Mac() ? e.keyCode = null : e.preventDefault()
  } else if (keyCode == 13) {
    ProcessEqual()
    IsIE() || IsIE_Mac() ? e.keyCode = null : e.preventDefault()
  }
}
function ProcessEqual(){
  Empty(Ctrl(field.id+'_CALC').value) ? CloseCalc() : CalcAndClose()
}
function KeyCodeCalc(e) {
  var keyCode
  if (typeof(e)!='undefined' && typeof(e.rootEvent) != 'undefined') {
    keyCode = e.keyCode
    e = e.rootEvent
  } else if(typeof(e)=='undefined' && (IsIE() || IsIE_Mac()))
      e=window.event
  if (typeof(keyCode)=='undefined')
    keyCode = GetKeyCode(e)
  return keyCode
}
function hideCalc() {
  if (!bShowCalc && ctrlCalc!="empty")
    CloseCalc()
}
function PrepareToDoNotHideCalc(){
  bShowCalc = true
}
function PrepareToHideCalc(){
  bShowCalc = false
}

