// Copyright 2003, 2004 Peter L. Blum, All Rights Reserved, www.PeterBlum.com
// Professional Validation And More v2.0.1 Level 2


function VAM_ReformatInit(pAO)
{
var vFld = VAM_GetById(pAO.Cond.IDToEval);
if (vFld == null)
{
pAO.Enabled = false;
return;
}



VAM_AttachEvent(vFld, "onblur", "VAM_OnBlur('" + pAO.Cond.IDToEval + "');");
} 

function VAM_ReformatAction(pAO, pEvalRes)
{
var vFld = VAM_GetById(pAO.Cond.IDToEval);
vFld.Dirty = false;
if (pEvalRes == 1)
{
var vText = pAO.ToStrFnc(pAO, pAO.Cond.Val);
if (vText != null)
{
vFld.value = vText;
vFld.Dirty = true;
}
}
else if (vFld.value == "") 
if (pAO.DefVal != null)
{
vFld.value = pAO.DefVal;
vFld.Dirty = true;
}
} 

function VAM_DateFmt(pAO, pVal)
{
var vR = pAO.DateTmpt;
var vM = pVal.getMonth() + 1;
var vD = pVal.getDay();
var vY = pVal.getFullYear();
if (vR.indexOf("MM") > -1)
vR = vR.replace("MM", (vM > 9) ? vM : "0" + vM.toString());
else
vR = vR.replace("M", vM);
if (vR.indexOf("DD") > -1)
vR = vR.replace("DD", (vD > 9) ? vD : "0" + vD.toString());
else
vR = vR.replace("D", vD);
if (vR.indexOf("YYYY") > -1)
vR = vR.replace("YYYY", vY);
else
vR = vR.replace("YY", vY % 100);
return vR;
} 

function VAM_CurrFmt(pAO, pVal)
{
var vCurr = Math.abs(pVal).toString(); if (pAO.mindecdig > 0) 
{
var vPos = vCurr.indexOf(".");
if ((vPos > -1) || !pAO.hidezero) 
{
var vNeeded = (vPos == -1) ? pAO.mindecdig : (pAO.mindecdig - (vCurr.length - vPos - 1));
if (vPos == -1)
vCurr = vCurr + ".";
if (vNeeded > 0)
vCurr = vCurr + String("00000000").substr(0, vNeeded);

}
}
if (pAO.Cond.decsep != ".")
vCurr = vCurr.replace(".", pAO.Cond.decsep);
vCurr = VAM_AddGrpSep(pAO, vCurr);
if (pVal >= 0)
return pAO.PosTmpt.replace("{0}", vCurr);
else
return pAO.NegTmpt.replace("{0}", vCurr);
} 

function VAM_IntFmt(pAO, pVal)
{
var vR = Math.abs(pVal).toString();
vR = VAM_AddGrpSep(pAO, vR);
if (pVal < 0)
vR = pAO.NegTmpt.replace("{0}", vR);
return vR;
} 

function VAM_DecFmt(pAO, pVal)
{
var vR = Math.abs(pVal).toString();
if ((pAO.trzero != 0) && (vR.indexOf(".") == -1))
vR = vR + ".0"; if (pAO.trzero > 0)
{
var vN = pAO.trzero - (vR.length - vR.indexOf(".") - 1);
if (vN > 0)
vR = vR + String("000000000000000000").substr(0, vN);
}

if (pAO.Cond.decsep != ".")
vR = vR.replace(".", pAO.Cond.decsep);
vR = VAM_AddGrpSep(pAO, vR);
if (pVal < 0)
vR = pAO.NegTmpt.replace("{0}", vR);
return vR;
} 

function VAM_AddGrpSep(pAO, pText)
{
if (!pAO.Cond.ShowTS)
return pText;
var vDecPos = pText.indexOf(pAO.Cond.decsep);
var vR = "";
var vEndPos = pText.length;
if (vDecPos > -1) 
{
vR = pText.substring(vDecPos, vEndPos);
vEndPos = vDecPos;
}
vDecPos = vEndPos - 3;
while (vEndPos > 3)
{
if (vDecPos < 0)
vDecPos = 0;
vR = pAO.Cond.grpsep + pText.substring(vDecPos, vEndPos) + vR;
vDecPos = vDecPos - 3;
vEndPos = vEndPos - 3;
}
if (vEndPos > 0)
vR = pText.substring(0, vEndPos) + vR;
return vR;
} 

function VAM_GetDTTBValue(pTBId)
{
var vR = null;
var vAO = VAM_FindAOById(pTBId);
var vFld = VAM_GetById(pTBId);
if ((vAO != null) && (vFld != null))
{
if (VAM_EvalCondition(vAO.Cond) == 1)
vR = vAO.Cond.Val;
}
return vR;
} 

function VAM_SetDTTBValue(pTBId, pValue)
{
var vR = false;
var vText = VAM_FormatDTTBValue(pTBId, pValue);
if (vText != null)
{
var vFld = VAM_GetById(pTBId);
vFld.value = vText;
vFld.Dirty = true;
vR = true;
}
return vR;
}
function VAM_FormatDTTBValue(pTBId, pValue)
{
var vR = null;
var vAO = VAM_FindAOById(pTBId);
if (vAO != null)
{
vR = vAO.ToStrFnc(vAO, pValue);
}
return vR;
}
var gVAM_PassThruKey = false; function VAM_KeyFilter(pTBId, pE, pFltr, pEnt, pExc)
{
if (gVAM_PassThruKey) 
return true;
var vR = false;
var vTBFld = VAM_GetById(pTBId);
if (vTBFld.disabled || vTBFld.readOnly)
return false;
if (VAM_IsCtrl(pE)) 
return true;
var vKC = VAM_GetKeyCode(pE);
if ((vKC == null) || (vKC == 0))
return true; var vKCS = String.fromCharCode(vKC); if (vKC == 13) 
{
vR = pEnt ? !pExc : false;
}
else if (vKC < 30) 
vR = true;
else if (pFltr == "") 
vR = true;
else if (pFltr.indexOf(vKCS) > -1)
vR = !pExc;
else
vR = pExc;
if (!vR)
VAM_StopEvent(pE);
return vR;
} 

function VAM_OnKeyDown(pTBId, pE)
{
if (gIsSafari) 
return true;
gVAM_PassThruKey = false;
var vKC = VAM_GetKeyCode(pE);
var vKCStr = String.fromCharCode(vKC);
if ((vKC >= 33) && (vKC <= 47))
gVAM_PassThruKey = true;
return true;
} 

function VAM_GetKeyCode(pE)
{
var vKeyCode = null;
if (pE.keyCode)
vKeyCode = pE.keyCode;
else if (pE.which)
vKeyCode = pE.which;
return vKeyCode; } 
function VAM_StopEvent(pE)
{
if (pE.cancelBubble != null)
pE.cancelBubble = true;
if (pE.stopPropagation)
pE.stopPropagation();
if (pE.preventDefault)
pE.preventDefault();
} 

function VAM_IsCtrl(pE)
{
var vCtrlKey = false;
if (pE.ctrlKey != null)
vCtrlKey = pE.ctrlKey
else if (pE.modifiers != null)
vCtrlKey = (pE.modifiers | 2) != 0;
return vCtrlKey;
} 

function VAM_OnBlur(pTBId)
{
var vTBFld = VAM_GetById(pTBId);
if (vTBFld.Dirty == true)
{
vTBFld.Dirty = false;
if (vTBFld.fireEvent != null) 
vTBFld.fireEvent('onChange');
else if (document.createEvent != null) 
{
var vEvt = document.createEvent('HTMLEvents');
vEvt.initEvent('change', true, false);
vTBFld.dispatchEvent(vEvt);
}
else 
{
var vOnChange = vTBFld.getAttribute('onchange');
var vEv = vOnChange.toString();
vEv = vEv.substring(vEv.indexOf("{") + 1, vEv.lastIndexOf("}"));
eval(vEv + ';');
}
}
} 

function VAM_AttachEvent(pFld, pEvtName, pCode)
{
var vEv = eval("pFld." + pEvtName + ";");
if (typeof(vEv) == "function")
{
vEv = vEv.toString();
vEv = vEv.substring(vEv.indexOf("{") + 1, vEv.lastIndexOf("}"));
if (vEv.charAt(vEv.length - 1) != ";")
vEv = vEv + ";";
}
else
vEv = "";
var vFunc = new Function(vEv + pCode); eval("pFld." + pEvtName + "=vFunc;");
} 

