- TECH_ARCHITECTURE.md: technical blueprint for the new platform - AI_LAYER_DESIGN_NOTES.md: AI agent, event/action, SQL and audit design - Axpert 11.2 web runtime source, structure exports and release notes (reference) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3377 lines
111 KiB
JavaScript
3377 lines
111 KiB
JavaScript
|
|
|
|
//<Description> Function to call the appropriate function from the function List </Description>
|
|
//<Return> Returns the result evaluated by the function </Return>
|
|
//c - Constant
|
|
//n - number
|
|
//d - date
|
|
//s - string
|
|
//f - function
|
|
//e - end of function
|
|
//o - operator
|
|
//b - bracket
|
|
//l - delimiter
|
|
var expressiontype = "";
|
|
var prerow = "";
|
|
var frmno = "";
|
|
var expFldname = "";
|
|
var rno = 0;
|
|
var rowno = "";
|
|
var constword = false;
|
|
var wordstring = '';
|
|
var wordtype = 'c';
|
|
var brackets = '';
|
|
var bcount = 0;
|
|
var wordlist = new Array();
|
|
var p = 0;
|
|
var z = 0;
|
|
var params = new Array();
|
|
var pos;
|
|
var varlist = new Array();
|
|
var valuelist = new Array();
|
|
var funclist = new Array();
|
|
funclist.push("abs", "addtodate", "addtomonth", "amtword");
|
|
funclist.push("checkemail", "chkuniqchar", "cmonthyear", "convertmd5", "ctod", "curramtword");
|
|
funclist.push("date", "datediff", "dayofdate", "dayselapsed", "daysinmonth", "decode", "dtoc");
|
|
funclist.push("encode", "evaluatepower", "extractnum");
|
|
funclist.push("findandreplace", "findcharpos", "formataccamount", "formatamount", "formatval");
|
|
funclist.push("getallvalues", "getinteger", "getlength", "getmax", "getmin", "getmod", "getnthstring", "getrow", "getrowcount", "getseperatorcount", "getsubtotal", "getold", "getvalue", "getvarvalue");
|
|
funclist.push("iif", "infixtopostfix", "inputprecedence", "insertcommas", "isempty", "isemptyvalue", "isoperator", "isvarempty");
|
|
funclist.push("lastdayofmonth", "leftpad", "length", "lower", "lowercase");
|
|
funclist.push("makedate", "mods", "monthofdate");
|
|
funclist.push("pad", "postfixeval", "postfixtoinfix");
|
|
funclist.push("regvar", "removecommas", "rightpad", "rnd", "round", "roundoff");
|
|
funclist.push("setfont", "stackprecedence", "str", "stuff", "substr", "sum", "sumtill");
|
|
funclist.push("time", "timeelapsed", "trim", "trimall", "triminbetwnspaces", "total");
|
|
funclist.push("upper", "uppercase");
|
|
funclist.push("val", "validencodedate");
|
|
funclist.push("yearofdate");
|
|
funclist.push("floor", "ceil", "networkdays", "days360", "axpfloor", "axpceil");
|
|
funclist.push("axhidecontrols", "axunhidecontrols", "axenablecontrols", "axdisablecontrols", "setvalue", "axvalueexits", "axaddrow","loadform","loadformanddata","loadiview","loadpage","openpage");
|
|
|
|
|
|
function CallFunction(functionname, params) {
|
|
|
|
if ((functionname == "length") || (functionname == "getlength"))
|
|
result = 'n' + Length(params[0]);
|
|
else if (functionname == "substr")
|
|
result = 's' + SubStr(params[0], params[1], params[2]);
|
|
else if (functionname == "abs")
|
|
result = 'n' + PAbs(params[0]);
|
|
else if (functionname == "iif") {
|
|
let IfFunVal = IfFun(params[0], params[1], params[2]);
|
|
result = isNaN(IfFunVal) ? 's' + IfFunVal : 'n' + IfFunVal;
|
|
}
|
|
else if (functionname == "findcharpos")
|
|
result = 'n' + FindCharPos(params[0], params[1]);
|
|
else if (functionname == "chkuniqchar")
|
|
result = 's' + ChkUniqChar(params[0]);
|
|
else if (functionname == "trimall" || functionname == "trim")
|
|
result = 's' + TrimAll(params[0]);
|
|
else if (functionname == "extractnum")
|
|
result = 'n' + ExtractNum(params[0]);
|
|
else if (functionname == "mods")
|
|
result = 'n' + Mods(params[0], params[1]);
|
|
else if (functionname == "lastdayofmonth")
|
|
result = 'd' + LastDayOfMonth(params[0]);
|
|
else if (functionname == "daysinmonth")
|
|
result = 'n' + DaysInMonth(params[0], params[1]);
|
|
else if (functionname == "validencodedate")
|
|
result = 'd' + ValidEncodeDate(params[0], params[1], params[2]);
|
|
else if (functionname == "getinteger")
|
|
result = 'n' + GetInteger(params[0]);
|
|
else if (functionname == "addtomonth")
|
|
result = 'd' + AddToMonth(params[0], params[1]); //result = 's' + AddToMonth(params[0], params[1]);
|
|
else if (functionname == "addtodate")
|
|
result = 'd' + AddToDate(params[0], params[1]);//result = 's' + AddToDate(params[0], params[1]);
|
|
else if (functionname == "timeelapsed")
|
|
result = 's' + TimeElapsed(params[0], params[1]);
|
|
else if (functionname == "dayselapsed")
|
|
result = 'n' + DaysElapsed(params[0], params[1]);
|
|
else if (functionname == "mandy")
|
|
result = 's' + MandY(params[0]);
|
|
else if (functionname == "findandreplace")
|
|
result = 's' + FindAndReplace(params[0], params[1], params[2]);
|
|
else if (functionname == "removecommas")
|
|
result = 's' + removeCommas(params[0]);
|
|
else if (functionname == "getnthstring")
|
|
result = 's' + GetNthString(params[0], params[1]);
|
|
else if ((functionname == "roundoff") || (functionname == "round"))
|
|
result = 'n' + RoundOff(params[0], params[1]);
|
|
else if (functionname == "insertcommas")
|
|
result = 'n' + InsertCommas(params[0]);
|
|
else if (functionname == "leftpad")
|
|
result = 's' + LeftPad(params[0], params[1], params[2]);
|
|
else if (functionname == "rightpad")
|
|
result = 's' + RightPad(params[0], params[1], params[2]);
|
|
else if (functionname == "pad")
|
|
result = 's' + Pad(params[0], params[1], params[2]);
|
|
else if (functionname == "getseperatorcount")
|
|
result = 'n' + GetSeperatorCount(params[0], params[1]);
|
|
else if (functionname == "val")
|
|
result = 'n' + Val(params[0]);
|
|
else if (functionname == "str")
|
|
result = 's' + Str(params[0]);
|
|
else if ((functionname == "uppercase") || (functionname == "upper"))
|
|
result = 's' + UpperCase(params[0]);
|
|
else if ((functionname == "lowercase") || (functionname == "lower"))
|
|
result = 's' + LowerCase(params[0]);
|
|
else if (functionname == "isvarempty")
|
|
result = 's' + IsVarEmpty(params[0]);
|
|
else if (functionname == "getvarvalue")
|
|
result = 's' + GetVarValue(params[0]);
|
|
else if (functionname == "amtword")
|
|
result = 's' + Amt_Word(params[0]);
|
|
else if (functionname == "evaluatepower")
|
|
result = 'n' + EvaluatePower(params[0], params[1]);
|
|
else if (functionname == "infixtopostfix")
|
|
result = 's' + InfixToPostfix(params[0]);
|
|
else if (functionname == "postfixtoinfix")
|
|
result = 's' + PostfixToInfix(params[0]);
|
|
else if (functionname == "postfixeval")
|
|
result = 'n' + PostfixEval(params[0]);
|
|
else if (functionname == "inputprecedence")
|
|
result = 'n' + InputPrecedence(params[0]);
|
|
else if (functionname == "stackprecedence")
|
|
result = 'n' + StackPrecedence(params[0]);
|
|
else if (functionname == "isoperator")
|
|
result = 's' + ISOperator(params[0]);
|
|
else if (functionname == "encode")
|
|
result = 's' + Encode(params[0]);
|
|
else if (functionname == "decode")
|
|
result = 's' + Decode(params[0]);
|
|
else if (functionname == "dtoc")
|
|
result = 's' + DTOC(params[0]);
|
|
else if (functionname == "ctod")
|
|
result = 'd' + CTOD(params[0]);
|
|
else if (functionname == "cmonthyear")
|
|
result = 'd' + CMonthYear(params[0]);
|
|
else if (functionname == "stuff")
|
|
result = 's' + Stuff(params[0], params[1], params[2]);
|
|
else if (functionname == "rnd")
|
|
result = 'n' + Rnd(params[0], params[1]);
|
|
else if (functionname == "isemptyvalue")
|
|
result = 's' + IsEmptyValue(params[0], params[1]);
|
|
else if (functionname == "formatval")
|
|
result = 'n' + FormatVal(params[0], params[1]);
|
|
else if (functionname == "formataccamount")
|
|
result = 'n' + FormatAccAmount(params[0], params[1], params[2], params[3], params[4]);
|
|
else if (functionname == "formatamount")
|
|
result = 'n' + FormatAmount(params[0], params[1], params[2], params[3], params[4]);
|
|
else if (functionname == "triminbetwnspaces")
|
|
result = 's' + TrimInbetwnSpaces(params[0]);
|
|
else if (functionname == "date")
|
|
result = 'd' + TodaysDate();
|
|
else if (functionname == "time")
|
|
result = 's' + Time();
|
|
else if (functionname == "isempty")
|
|
result = 's' + ISEMPTY(params[0]);
|
|
else if (functionname == "datediff")
|
|
result = 'n' + DateDiff(params[0], params[1]);
|
|
else if (functionname == "checkemail")
|
|
result = 's' + CheckEmail(params[0]);
|
|
else if (functionname == "convertmd5")
|
|
result = 's' + MD5(params[0]);
|
|
else if (functionname == "total")
|
|
result = 'n' + Total(params[0]);
|
|
else if (functionname == "curramtword")
|
|
result = 's' + CurrAmtWord(params[0], params[1], params[2], params[3], params[4]);
|
|
else if (functionname == "str")
|
|
result = 's' + str(params[0]);
|
|
else if (functionname == "getvalue") {
|
|
let isActual = typeof params[2] != "undefined" ? params[2] : false;
|
|
result = GetGridCellValue(params[0], params[1], isActual);
|
|
}
|
|
else if (functionname == "makedate")
|
|
result = 'd' + makedate(params[0], params[1], params[2]);//result = 's' + makedate(params[0], params[1], params[2]);
|
|
else if (functionname == "getallvalues")
|
|
result = 's' + GetAllValues(params[0], params[1]);
|
|
else if (functionname == "dayofdate")
|
|
result = 'n' + DayOfDate(params[0]);
|
|
else if (functionname == "yearofdate")
|
|
result = 'n' + YearOfDate(params[0]);
|
|
else if (functionname == "monthofdate")
|
|
result = 'n' + MonthOfDate(params[0]);
|
|
else if (functionname == "getmin")
|
|
result = 'n' + GetMinValue(params[0]);
|
|
else if (functionname == "getmax")
|
|
result = 'n' + GetMaxValue(params[0]);
|
|
else if (functionname == "getrowcount")
|
|
result = 'n' + GetRowCount(params[0]);
|
|
else if (functionname == "sumtill") {
|
|
if (isSumTillGrid != undefined)
|
|
isSumTillGrid = true;//Refer: HEA000101
|
|
result = 'n' + SumTill(params[0], params[1], params[2], params[3], params[4]);
|
|
}
|
|
else if (functionname == "sum")
|
|
result = 'n' + Sum(params[0], params[1], params[2]);
|
|
else if (functionname == "regvar")
|
|
result = 's' + RegisterVariables(params[0], params[1], params[2]);
|
|
else if (functionname == "getrow")
|
|
result = 'n' + GetRow(params[0], params[1], params[2]);
|
|
else if (functionname == "getsubtotal")
|
|
result = 'n' + SubTotal(params[0], params[1]);
|
|
else if (functionname == "getmod")
|
|
result = 'n' + GetMod(params[0], params[1]);
|
|
else if (functionname == "getold")
|
|
result = 's' + GetOld(params[0], params[1]);
|
|
else if (functionname == "ceil" || functionname == "axpceil")
|
|
result = 'n' + AxCeil(params[0]);
|
|
else if (functionname == "floor" || functionname == "axpfloor")
|
|
result = 'n' + AxFloor(params[0]);
|
|
else if (functionname == "networkdays")
|
|
result = 'n' + NetworkDays(params[0], params[1], params[2]);
|
|
else if (functionname == "days360")
|
|
result = 'n' + Days360(params[0], params[1], params[2]);
|
|
else if (functionname == "setfont")
|
|
result = 's' + SetAxFont(params[0], params[1], params[2], params[3]);
|
|
//else if (functionname == "randomno")
|
|
//result = 'n' + RandomNo();
|
|
else if (functionname == "axhidecontrols")
|
|
result = 's' + AxHideControls(params[0]);
|
|
else if (functionname == "axunhidecontrols")
|
|
result = 's' + AxUnhideControls(params[0]);
|
|
else if (functionname == "axenablecontrols")
|
|
result = 's' + AxEnableControls(params[0]);
|
|
else if (functionname == "axdisablecontrols")
|
|
result = 's' + AxDisableControls(params[0]);
|
|
else if (functionname == "setvalue")
|
|
result = 's' + AxSetValue(params[0], params[1], params[2]);
|
|
else if (functionname == "axvalueexits")
|
|
result = 'n' + AxValueExits(params[0], params[1], params[2], params[3]);
|
|
else if (functionname == "axaddrow")
|
|
result = 's' + AxAddRow(params[0]);
|
|
else if(functionname=="loadform")
|
|
result="s"+LoadForm(params[0],params[1],params[2],params[3]);
|
|
else if(functionname=="loadformanddata")
|
|
result="s"+LoadFormAndData(params[0],params[1],params[2],params[3]);
|
|
else if(functionname=="loadiview")
|
|
result="s"+LoadIView(params[0],params[1],params[2],params[3]);
|
|
else if(functionname=="loadpage")
|
|
result="s"+LoadPage(params[0],params[1],params[2],params[3]);
|
|
else if(functionname=="openpage")
|
|
result="s"+OpenPage(params[0],params[1],params[2],params[3]);
|
|
return result;
|
|
}
|
|
|
|
function SetAxFont(fldName, cond, truestyle, falsestyle) {
|
|
var dcno = 0;
|
|
var thisFldId = "";
|
|
dcno = GetDcNo(fldName);
|
|
if (parseInt(dcno, 10) > 0) {
|
|
var rowNo = "";
|
|
if (DCIsGrid[dcno - 1].toLowerCase() == "true") {
|
|
var rcount = parseInt(GetDcRowCount(dcno), 10);
|
|
if (rcount > 0) {
|
|
if (applyFontListView) {
|
|
for (var k = 0; k < rcount; k++) {
|
|
rowNo = GetClientRowNo(k + 1, dcno);
|
|
thisFldId = fldName + rowNo + "F" + dcno;
|
|
if (cond) {
|
|
SetAxFontCondition($("#" + thisFldId), truestyle);
|
|
} else {
|
|
SetAxFontCondition($("#" + thisFldId), falsestyle);
|
|
}
|
|
}
|
|
} else {
|
|
rowNo = GetRowNoHelper(AxActiveRowNo);
|
|
thisFldId = fldName + rowNo + "F" + dcno;
|
|
if (cond) {
|
|
SetAxFontCondition($("#" + thisFldId), truestyle);
|
|
} else {
|
|
SetAxFontCondition($("#" + thisFldId), falsestyle);
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
else {
|
|
rowNo = "000";
|
|
thisFldId = fldName + rowNo + "F" + dcno;
|
|
if (cond) {
|
|
SetAxFontCondition($("#" + thisFldId), truestyle);
|
|
} else {
|
|
SetAxFontCondition($("#" + thisFldId), falsestyle);
|
|
}
|
|
}
|
|
}
|
|
return "MessageSetAxFont";
|
|
}
|
|
|
|
function SetAxFontCondition(thisFld, applyStyle) {
|
|
if (applyStyle != "") {
|
|
ResetAxFont(thisFld);
|
|
applyStyle = applyStyle.split(',');
|
|
for (var y = 0; y < applyStyle.length; y++) {
|
|
var currentStyle = applyStyle[y].split('=');
|
|
switch (currentStyle[0].toLowerCase()) {
|
|
case "fontname":
|
|
thisFld.css("font-family", currentStyle[1]);
|
|
break;
|
|
case "fontsize":
|
|
thisFld.css("font-size", currentStyle[1] + "pt");
|
|
break;
|
|
case "fontstyle":
|
|
for (var z = 0; z < currentStyle[1].toLowerCase().length; z++) {
|
|
switch (currentStyle[1].toLowerCase()[z]) {
|
|
case "b":
|
|
thisFld.css('font-weight', 'bold');
|
|
break;
|
|
case "i":
|
|
thisFld.css('font-style', 'italic');
|
|
break;
|
|
case "u":
|
|
if (thisFld.css("text-decoration") == "line-through") {
|
|
thisFld.css("text-decoration", "line-through underline");
|
|
} else {
|
|
thisFld.css("text-decoration", "underline");
|
|
}
|
|
break;
|
|
case "s":
|
|
if (thisFld.css("text-decoration") == "underline") {
|
|
thisFld.css("text-decoration", "underline line-through");
|
|
} else {
|
|
thisFld.css("text-decoration", "line-through");
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
break;
|
|
case "fontcolor":
|
|
if (typeof isSpecialRow != "undefined" && isSpecialRow) {
|
|
thisFld.css("color", currentStyle[1]);
|
|
} else {
|
|
thisFld.css("color", AxClColors[currentStyle[1]]);
|
|
}
|
|
break;
|
|
case "backcolor":
|
|
if (AxClColors[currentStyle[1]]) {
|
|
thisFld.css("background", AxClColors[currentStyle[1]]);
|
|
} else if (currentStyle[1].indexOf("#") == 0) {
|
|
thisFld.css("background", currentStyle[1]);
|
|
} else {
|
|
thisFld.css("background", "");
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
} else {
|
|
ResetAxFont(thisFld);
|
|
}
|
|
}
|
|
|
|
function ResetAxFont(thisFld) {
|
|
thisFld.css("font-family", "");
|
|
thisFld.css('font-weight', "");
|
|
thisFld.css('font-style', "");
|
|
thisFld.css("text-decoration", "");
|
|
thisFld.css("color", "");
|
|
thisFld.css("background", "");
|
|
}
|
|
|
|
function GetOld(fieldName, rowNo) {
|
|
var oldValue = "";
|
|
var dcNo = GetDcNo(fieldName);
|
|
var fldId = fieldName + GetRowNoHelper(rowNo) + "F" + dcNo;
|
|
var indx = $j.inArray(fldId, FldLoadedFields);
|
|
if (indx != -1)
|
|
oldValue = FldLoadedValues[indx];
|
|
|
|
return oldValue;
|
|
}
|
|
|
|
function CheckEval(exprStr, rowNo) {
|
|
var strEval = exprStr.substring(0, 5);
|
|
if (strEval.toLowerCase() == "eval(") {
|
|
isEvalGrid = true;
|
|
var fldName = exprStr.substring(5, exprStr.indexOf(")"));
|
|
var fldIndx = "";
|
|
fldIndx = GetFieldIndex(fldName);
|
|
if (fldIndx != -1)
|
|
fldName = FNames[fldIndx].toString();
|
|
|
|
var dcNo = GetDcNo(fldName);
|
|
fldName = fldName + rowNo + "F" + dcNo;
|
|
|
|
if (document.getElementById(fldName)) {
|
|
if (document.getElementById(fldName).type == "select-one") {
|
|
var IndexValue = document.getElementById(fldName).selectedIndex;
|
|
return document.getElementById(fldName).options[IndexValue].value;
|
|
}
|
|
else {
|
|
return document.getElementById(fldName).value;
|
|
}
|
|
}
|
|
else {
|
|
return "";
|
|
}
|
|
}
|
|
else
|
|
return exprStr;
|
|
}
|
|
|
|
function Evaluate(a, b, Expstr, exprtype, fromIview) {
|
|
if (Expstr != "")
|
|
Expstr = Expstr.replace(/♦/g, ",");
|
|
expressiontype = exprtype;
|
|
prerow = b;
|
|
var i = 0;
|
|
var tem = '';
|
|
varlist = new Array();
|
|
valuelist = new Array();
|
|
wordlist = new Array();
|
|
var w = 0;
|
|
expFldname = a;
|
|
var trid = transid;
|
|
var fIndx = a.lastIndexOf("F");
|
|
if (fIndx != -1)
|
|
rowno = a.substring(fIndx - 3, a.length);
|
|
var curActiveRowNo = 0;
|
|
if (typeof (AxActiveRowNo) != "undefined")
|
|
curActiveRowNo = parseInt(AxActiveRowNo);//Refer: HEA000101
|
|
var activerowno = curActiveRowNo == 0 ? parseInt(a.substring(fIndx - 3, fIndx), 10) : curActiveRowNo; //parseInt(GetActiveRow(expFldname),10) + 1;
|
|
|
|
rno = rowno.substring(0, 3);
|
|
rno = parseInt(rno);
|
|
frmno = rowno.substring(rowno.length - 1, rowno.length);
|
|
Expstr = CheckEval(Expstr, b);
|
|
var expression = Expstr;
|
|
if (Parameters.length > 1) {
|
|
for (var pki = 0; pki < Parameters.length; pki++) {
|
|
var list = Parameters[pki].toString();
|
|
list = list.split("~");
|
|
varlist[w] = list[0].toString();
|
|
valuelist[w] = list[1].toString();
|
|
w++;
|
|
}
|
|
}
|
|
|
|
varlist[w] = "activerow";
|
|
valuelist[w] = activerowno;
|
|
|
|
var tempvar = new Array();
|
|
var tempval = new Array();
|
|
var vi = 0;
|
|
var ji = 0;
|
|
var Isfound = false;
|
|
var tempcount = 0;
|
|
expression = TrimAll(expression);
|
|
expression = expression + " ";
|
|
var ch = expression.split('');
|
|
for (var j = 0; j < ch.length; j++) {
|
|
|
|
if (ch[j] == "{") {
|
|
if (bcount > 0) {
|
|
wordstring = wordstring + ch[j];
|
|
}
|
|
else {
|
|
constword = true;
|
|
wordstring = '';
|
|
}
|
|
bcount++;
|
|
continue;
|
|
}
|
|
|
|
if (ch[j] == "}") {
|
|
if (bcount == 1) {
|
|
constword = false;
|
|
s = "c" + wordstring;
|
|
wordlist[i] = s;
|
|
i++;
|
|
bcount = 0;
|
|
wordstring = '';
|
|
}
|
|
else {
|
|
bcount--;
|
|
wordstring = wordstring + ch[j];
|
|
}
|
|
continue;
|
|
}
|
|
|
|
if (constword) {
|
|
wordstring = wordstring + ch[j];
|
|
continue;
|
|
}
|
|
var t;
|
|
|
|
if ((isDelimiter(ch[j])) || (isOperator(ch[j]))) {
|
|
var chrstate = false;
|
|
tem = wordstring;
|
|
tem = tem.toLowerCase();
|
|
|
|
|
|
var temp2 = "";
|
|
if ((tem != "") && (isNaN(tem))) {
|
|
var templ = "";
|
|
if (isNaN(rowno.substring(rowno.length - 1, rowno.length)) || (tem == "activerow" || tem.toString() == "activeprow")) {
|
|
|
|
if (tem == "activerow") {
|
|
//templ = GetClientRowNo(AxActiveRowNo, AxActiveDc);
|
|
//wordlist[i] = "n" + templ.replace(/^0+/, ''); //Removing the leading zeros, since it is changing to Octal literal. Eg. Eval(010) is = to 8, not 10.
|
|
templ = activerowno;//Refer: HEA000101
|
|
wordlist[i] = "n" + templ;
|
|
i++;
|
|
wordstring = "";
|
|
}
|
|
else if (tem == "activeprow") {
|
|
templ = GetClientRowNo(AxActivePRow, AxActivePDc);
|
|
wordlist[i] = "n" + templ.replace(/^0+/, ''); //Removing the leading zeros, since it is changing to Octal literal. Eg. Eval(010) is = to 8, not 10.
|
|
i++;
|
|
wordstring = "";
|
|
}
|
|
else {
|
|
templ = wordstring;
|
|
}
|
|
}
|
|
else {
|
|
var dcNo = GetDcNo(wordstring);
|
|
if (fromIview == undefined)
|
|
wordstring = GetExactFieldName(wordstring);
|
|
templ = wordstring + "000F" + dcNo;
|
|
temp2 = wordstring;
|
|
if (document.getElementById(templ)) {
|
|
templ = templ;
|
|
}
|
|
else {
|
|
|
|
var dcNo = GetDcNo(wordstring);
|
|
var clientRow = "";
|
|
if (IsDcPopGrid(dcNo)) {
|
|
clientRow = GetClientRowNo(AxActiveRowNo, AxActiveDc);
|
|
templ = wordstring + clientRow + "F" + AxActiveDc;
|
|
}
|
|
else if (TstructHasPop) {
|
|
if (IsDcParentGrid(dcNo)) {
|
|
|
|
if (AxActivePRow != "" && AxActivePDc != "") {
|
|
clientRow = GetClientRowNo(AxActivePRow, AxActivePDc);
|
|
templ = wordstring + clientRow + "F" + AxActivePDc;
|
|
}
|
|
else {
|
|
clientRow = GetClientRowNo(AxActiveRowNo, AxActiveDc);
|
|
templ = wordstring + clientRow + "F" + AxActiveDc;
|
|
}
|
|
}
|
|
else {
|
|
templ = wordstring + rowno;
|
|
}
|
|
}
|
|
else {
|
|
templ = wordstring + rowno;
|
|
}
|
|
|
|
if (document.getElementById(templ)) {
|
|
templ = templ;
|
|
}
|
|
else {
|
|
if (document.title != "Iview" && (typeof fromIview == "undefined" || fromIview != "table"))
|
|
templ = wordstring + b + "F" + AxActiveDc;
|
|
}
|
|
}
|
|
}
|
|
|
|
var elevalue = "";
|
|
if (document.getElementById(templ) && tem != "activerow") {
|
|
chrstate = true;
|
|
if (fromIview != undefined)
|
|
elevalue = document.getElementById(templ).value;
|
|
else
|
|
elevalue = GetFieldValue(templ);
|
|
if (document.getElementById(templ).type == "select-one") {
|
|
var fldValSplit = elevalue.split(",,");
|
|
elevalue = fldValSplit[0];
|
|
}
|
|
else if (document.getElementById(templ).type == "checkbox") {
|
|
var isGrid = IsGridField(temp2);
|
|
var chkboxValues = document.getElementById(templ).alt;
|
|
var chkboxVal = chkboxValues.split(",");
|
|
chkboxVal = $j.grep(chkboxVal, function (n) { //Removing empty string
|
|
return (n);
|
|
});
|
|
if (document.getElementById(templ).checked) {
|
|
if (chkboxVal.length > 1) {
|
|
if (isGrid == true)
|
|
elevalue = chkboxVal[0].toString();
|
|
else
|
|
elevalue = "T";
|
|
}
|
|
|
|
else {
|
|
if (isGrid == true)
|
|
elevalue = chkboxVal[1].toString();
|
|
else {
|
|
if (document.getElementById(templ).value != "" && document.getElementById(templ).value == "T")
|
|
elevalue = "T";
|
|
else
|
|
elevalue = "F";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
elevalue = elevalue + "";
|
|
|
|
var fldInd = $j.inArray(wordstring, FNames);
|
|
var fldDType = "";
|
|
if (fldInd != -1)
|
|
fldDType = FDataType[fldInd].toString();
|
|
|
|
if (fldDType != "") {
|
|
if (fldDType == "Date/Time") {
|
|
s = "d" + elevalue;
|
|
}
|
|
else if (fldDType == "Character") {
|
|
s = "s" + elevalue;
|
|
}
|
|
else {
|
|
if (fldDType == "Numeric") {
|
|
if (elevalue.length > 3) {
|
|
if (elevalue.indexOf(',') != -1)
|
|
elevalue = removeCommas(document.getElementById(templ).value);
|
|
}
|
|
}
|
|
if (elevalue == "") elevalue = 0;
|
|
s = 'n' + elevalue;
|
|
if (s.length == 1)
|
|
s = 'n' + 0;
|
|
}
|
|
}
|
|
else {
|
|
if (isNaN(elevalue)) {
|
|
s = 's' + elevalue;
|
|
}
|
|
else {
|
|
|
|
if (elevalue == "") elevalue = 0;
|
|
elevalue = elevalue;
|
|
s = 'n' + elevalue;
|
|
if (s.length == 1)
|
|
s = 'n' + 0;
|
|
}
|
|
}
|
|
wordlist[i] = s;
|
|
i++;
|
|
}
|
|
else if (typeof ChangedTblFields != "undefined" && $j.inArray(templ, ChangedTblFields) != -1) {
|
|
chrstate = true;
|
|
var fldTblIndex = $j.inArray(templ, ChangedTblFields);
|
|
var tblVal = ChangedTblFieldVals[fldTblIndex].split('~');
|
|
tblVal = tblVal[b];
|
|
if (typeof tblVal == "undefined")
|
|
tblVal = "";
|
|
if (tblVal.indexOf('/') != -1)
|
|
s = "d" + tblVal;
|
|
else if (isNaN(tblVal) || tblVal == "")
|
|
s = "s" + tblVal;
|
|
else
|
|
s = 'n' + tblVal;
|
|
wordlist[i] = s;
|
|
i++;
|
|
}
|
|
else {
|
|
|
|
templ = wordstring;
|
|
for (var k = 0; k < varlist.length; k++) {
|
|
|
|
if (templ == varlist[k].toLowerCase()) {
|
|
chrstate = true;
|
|
elevalue = valuelist[k];
|
|
var dtlenth = elevalue.split('/');
|
|
if (dtlenth[0].length == 2 && (typeof dtlenth[1] != "undefined" && dtlenth[1].length == 2) && (typeof dtlenth[2] != "undefined" && dtlenth[2].length == 4)) {
|
|
s = 'd' + elevalue;
|
|
}
|
|
else if (isNaN(elevalue)) {
|
|
s = 's' + elevalue;
|
|
}
|
|
else {
|
|
if (elevalue == "") elevalue = 0;
|
|
elevalue = elevalue;
|
|
s = 'n' + elevalue;
|
|
if (s.length == 1)
|
|
s = 'n' + 0;
|
|
}
|
|
wordlist[i] = s;
|
|
i++;
|
|
break;
|
|
}
|
|
}
|
|
if (!chrstate && typeof RegVarFldList != "undefined" && RegVarFldList.length > 0) {//regvar function registered values Evaluate in client in case dependency call not there.
|
|
$.each(RegVarFldList, function (key, value) {
|
|
if (value.startsWith(templ + ":")) {
|
|
chrstate = true;
|
|
wordlist[i] = value.split(':')[1] + value.split(':')[2];
|
|
i++;
|
|
return;
|
|
}
|
|
});
|
|
}
|
|
|
|
if (!chrstate && typeof paramValuesArray != "undefined" && Object.keys(paramValuesArray).length > 0) {
|
|
// let valueStr = paramValuesArray[Object.keys(paramValuesArray)[Object.keys(paramValuesArray).indexOf(templ.toLowerCase())]];
|
|
let valueArr = getCaseInSensitiveJsonProperty(paramValuesArray, templ);
|
|
// if(valueStr !== "" && typeof valueStr != "undefined"){
|
|
if (valueArr.length > 0) {
|
|
chrstate = true;
|
|
// elevalue = valueStr;
|
|
elevalue = valueArr[0];
|
|
|
|
var dtlenth = elevalue.split('/');
|
|
if (dtlenth[0].length == 2 && (typeof dtlenth[1] != "undefined" && dtlenth[1].length == 2) && (typeof dtlenth[2] != "undefined" && dtlenth[2].length == 4)) {
|
|
s = 'd' + elevalue;
|
|
}
|
|
else if (isNaN(elevalue)) {
|
|
s = 's' + elevalue;
|
|
}
|
|
else {
|
|
if (elevalue == "") elevalue = 0;
|
|
elevalue = elevalue;
|
|
s = 'n' + elevalue;
|
|
if (s.length == 1)
|
|
s = 'n' + 0;
|
|
}
|
|
wordlist[i] = s;
|
|
|
|
i++;
|
|
}
|
|
}
|
|
} // end if 2
|
|
}
|
|
|
|
//TODO:The code needs to be re-factored
|
|
for (var r = 0; r < funclist.length; r++) {
|
|
if (wordstring.toLowerCase() == funclist[r].toString().toLowerCase()) {
|
|
chrstate = true;
|
|
s = 'f' + funclist[r];
|
|
wordlist[i] = s;
|
|
i++;
|
|
break;
|
|
}
|
|
}
|
|
if (!chrstate) {
|
|
if (wordstring != "") {
|
|
if (isNaN(wordstring))
|
|
t = 's';
|
|
else
|
|
t = 'n';
|
|
|
|
wordlist[i] = t + wordstring;
|
|
i++;
|
|
}
|
|
}
|
|
wordstring = '';
|
|
}
|
|
if (ch[j] == "(") {
|
|
if (wordlist.length > 0) {
|
|
var fchar = wordlist[wordlist.length - 1];
|
|
fchar = fchar.substr(0, 1);
|
|
if (fchar == 'f')
|
|
brackets = brackets + 'f';
|
|
else
|
|
brackets = brackets + '(';
|
|
}
|
|
else {
|
|
brackets = brackets + '(';
|
|
}
|
|
wordlist[i] = 'b(';
|
|
i++;
|
|
continue;
|
|
}
|
|
if (ch[j] == ")") {
|
|
if (brackets.charAt(brackets.length - 1) == "(") {
|
|
wordlist[i] = 'b)';
|
|
i++;
|
|
}
|
|
else {
|
|
wordlist[i] = 'e';
|
|
i++;
|
|
}
|
|
brackets = brackets.slice(0, -1);
|
|
continue;
|
|
}
|
|
|
|
if (isOperator(ch[j])) {
|
|
wordlist[i] = 'o' + ch[j];
|
|
i++;
|
|
continue;
|
|
}
|
|
|
|
if (ch[j] == ' ')
|
|
continue;
|
|
|
|
if (ch[j] == ',') {
|
|
wordlist[i] = 'l,';
|
|
i++;
|
|
wordstring = '';
|
|
continue;
|
|
}
|
|
wordstring = wordstring + ch[j];
|
|
}
|
|
var fun = true;
|
|
for (var i = 0; i < wordlist.length; i++) {
|
|
if (wordlist[i] == "sFIELDCHANGED" || wordlist[i].toString().toLowerCase() == "sfieldchanged")
|
|
fun = false;
|
|
}
|
|
if (fun) {
|
|
EvalFun();
|
|
var s = GetExprString();
|
|
if (s == "")
|
|
return "";
|
|
try {
|
|
var res = eval(s);
|
|
}
|
|
catch (ex) {
|
|
|
|
try {
|
|
var res = eval("'" + s + "'");
|
|
}
|
|
catch (exp) {
|
|
res = "";
|
|
}
|
|
}
|
|
|
|
if (res == "Infinity") res = 0;
|
|
return res;
|
|
}
|
|
else {
|
|
return true;
|
|
}
|
|
}
|
|
function EvalFun() {
|
|
// Begin For Loop
|
|
for (var i = wordlist.length - 1; i >= 0; i--) {
|
|
ch = wordlist[i];
|
|
var strch = ch;
|
|
ch = ch.split('');
|
|
var firstchar = ch[0];
|
|
var EvalString = ''; var EvalType = ''; var ExtEvalString = ''; var EvalResult = ''; var ParamIndx = 0;
|
|
if (firstchar == 'f') {
|
|
|
|
delete wordlist[i + 1];
|
|
j = i + 2;
|
|
exprEvalFun = '';
|
|
|
|
functionname = strch.substr(1, strch.length);
|
|
functionname = functionname.toLowerCase();
|
|
|
|
while (wordlist[j] != 'e') {
|
|
var value = '';
|
|
if ((wordlist[j] != "") && (wordlist[j] != null)) {
|
|
ch = wordlist[j];
|
|
strch = ch;
|
|
ch = ch.split('');
|
|
firstchar = ch[0];
|
|
value = strch.substr(1, strch.length);
|
|
|
|
if (wordlist[j] == 'b(') {
|
|
//EvalString = '';
|
|
EvalType = '';
|
|
ExtEvalString += '(';
|
|
}
|
|
else if (wordlist[j] == 'b)') {
|
|
if (ExtEvalString != '') {
|
|
EvalResult = GetEvalResult(EvalString, EvalType);
|
|
ExtEvalString = ExtEvalString + EvalResult + ')';
|
|
}
|
|
else {
|
|
EvalString = EvalString + ')';
|
|
EvalResult = GetEvalResult(EvalString, EvalType);
|
|
}
|
|
EvalString = '';
|
|
EvalType = '';
|
|
}
|
|
else if (wordlist[j] == 'o<' || wordlist[j] == 'o>' || wordlist[j] == 'o=' || wordlist[j] == 'o#') {
|
|
var op = ch[1];
|
|
if (op == '=')
|
|
op = '==';
|
|
else if (op == '#')
|
|
op = '!=';
|
|
EvalString = EvalString + op
|
|
}
|
|
else if (wordlist[j] == 'o+' || wordlist[j] == 'o-' || wordlist[j] == 'o*' || wordlist[j] == 'o/') {
|
|
var op = ch[1];
|
|
if (EvalString != '')
|
|
EvalString = EvalString + op;
|
|
else if (ExtEvalString != '')
|
|
ExtEvalString = ExtEvalString + op;
|
|
}
|
|
else if (firstchar == 'o') {
|
|
var op = ch[1];
|
|
EvalResult = GetEvalResult(EvalString, EvalType);
|
|
ExtEvalString = ExtEvalString + EvalResult + op + op;
|
|
EvalString = '';
|
|
EvalType = '';
|
|
}
|
|
else if (wordlist[j] == 'l,') {
|
|
EvalResult = GetEvalResult(EvalString, EvalType);
|
|
if (EvalResult != '') {
|
|
if (EvalType == 'd')
|
|
ExtEvalString = ExtEvalString + '"' + EvalResult + '"';
|
|
else
|
|
ExtEvalString = ExtEvalString + EvalResult;// ExtEvalString + '"' + EvalResult + '"';
|
|
EvalResult = GetEvalResult(ExtEvalString, EvalType);
|
|
}
|
|
else if (EvalResult != null) {
|
|
ExtEvalString = ExtEvalString + EvalResult;
|
|
EvalResult = GetEvalResult(ExtEvalString, EvalType);
|
|
}
|
|
params[ParamIndx] = EvalResult;
|
|
ParamIndx++;
|
|
EvalResult = '';
|
|
EvalType = '';
|
|
EvalString = '';
|
|
ExtEvalString = '';
|
|
}
|
|
else {
|
|
if (firstchar == 'n') {
|
|
if (value == null || value == '')
|
|
value = 0;
|
|
EvalString = EvalString + value;
|
|
EvalType = 'n';
|
|
}
|
|
else if (firstchar == 'd') {
|
|
EvalType = 'd';
|
|
if (value == "")
|
|
value = "01/01/1900";
|
|
EvalString = EvalString + '"' + value + '"';
|
|
}
|
|
else if (firstchar == 's') {
|
|
if ((value.indexOf("/") != -1 && value.split('/').length == 3) || EvalType == 'd') {
|
|
value = value.replace(/\"/g, "");
|
|
var dtlenth = value.split('/');
|
|
if (dtlenth[0].length == 2 && dtlenth[1].length == 2 && dtlenth[2].length == 4) {
|
|
EvalType = 'd';
|
|
EvalString = EvalString + '"' + value + '"';
|
|
}
|
|
else if (value.substr(0, 1) != '"') {
|
|
EvalType = 's';
|
|
EvalString = EvalString + '"' + value + '"';
|
|
}
|
|
else {
|
|
EvalType = 's';
|
|
EvalString = EvalString + value;
|
|
}
|
|
}
|
|
else if (value.substr(0, 1) != '"') {
|
|
EvalType = 's';
|
|
EvalString = EvalString + '"' + value + '"';
|
|
}
|
|
else {
|
|
EvalType = 's';
|
|
EvalString = EvalString + value;
|
|
}
|
|
}
|
|
else if (firstchar == 'c') {
|
|
if (value.indexOf("/") != -1 && value.split('/').length == 3) {
|
|
var dtlenth = value.split('/');
|
|
if (dtlenth[0].length == 2 && dtlenth[1].length == 2 && dtlenth[2].length == 4) {
|
|
EvalType = 'd';
|
|
EvalString = EvalString + '"' + value + '"';
|
|
}
|
|
else if (value.substr(0, 1) != '"')
|
|
EvalString = EvalString + '"' + value + '"';
|
|
else
|
|
EvalString = EvalString + value;
|
|
}
|
|
else if (value.substr(0, 1) != '"')
|
|
EvalString = EvalString + '"' + value + '"';
|
|
else
|
|
EvalString = EvalString + value;
|
|
}
|
|
params[ParamIndx] = EvalString;
|
|
}
|
|
}
|
|
delete wordlist[j];
|
|
j++;
|
|
if (wordlist[j] == "e") {
|
|
try {
|
|
if (EvalString != '')
|
|
params[ParamIndx] = eval(EvalString);
|
|
else if (ExtEvalString != '')
|
|
params[ParamIndx] = eval(ExtEvalString);
|
|
}
|
|
catch (expFldname) {
|
|
params[ParamIndx] = EvalString;
|
|
}
|
|
if (params[ParamIndx] == "Infinity" || params[ParamIndx] == "NaN") {
|
|
params[ParamIndx] = 0;
|
|
}
|
|
}
|
|
}
|
|
delete wordlist[j];
|
|
wordlist[i] = CallFunction(functionname, params);
|
|
params = new Array();
|
|
ParamIndx = 0;
|
|
z = 0;
|
|
}
|
|
}
|
|
// End For Loop
|
|
}
|
|
|
|
function GetEvalResult(EvalString, EvalType) {
|
|
var Result = "";
|
|
if (EvalType == 'd') {
|
|
if (EvalString.indexOf('<') != -1 || EvalString.indexOf('>') != -1 || EvalString.indexOf('==') != -1 || EvalString.indexOf('!=') != -1 || EvalString.indexOf('-') != -1) {
|
|
var Operator = EvalString.indexOf('<') != -1 ? '<' : EvalString.indexOf('>') != -1 ? '>' : EvalString.indexOf('==') != -1 ? '==' : EvalString.indexOf('!=') != -1 ? '!=' : EvalString.indexOf('-') != -1 ? '-' : '';
|
|
var Date1 = EvalString.split(Operator)[0];
|
|
var Date2 = EvalString.split(Operator)[1];
|
|
Date1 = Date1.replace(new RegExp('"', "gi"), '');
|
|
Date2 = Date2.replace(new RegExp('"', "gi"), '');
|
|
Operator = Operator == "==" ? '=' : Operator;
|
|
if (Operator == "-")
|
|
Result = SubtractDate(Date1, Date2, Operator);
|
|
else
|
|
Result = CompareDate(Date1, Date2, Operator);
|
|
}
|
|
else {
|
|
try {
|
|
Result = eval(EvalString);
|
|
}
|
|
catch (expFldname) {
|
|
Result = EvalString;
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
try {
|
|
Result = eval(EvalString);
|
|
}
|
|
catch (expFldname) {
|
|
Result = EvalString;
|
|
}
|
|
}
|
|
if (Result == "Infinity" || Result == "NaN") {
|
|
Result = 0;
|
|
}
|
|
if (Result == undefined)
|
|
Result = EvalString;
|
|
return Result;
|
|
}
|
|
|
|
|
|
function GetExprString() {
|
|
|
|
var s = '';
|
|
var variable = '';
|
|
for (var i = 0; i < wordlist.length; i++) {
|
|
if ((wordlist[i] != "") && (wordlist[i] != null)) {
|
|
ch = wordlist[i];
|
|
var strch = ch;
|
|
ch = ch.split('');
|
|
var firstchar = ch[0];
|
|
if (firstchar == "e") {
|
|
variable = ")";
|
|
}
|
|
else if ((firstchar == "s") || (firstchar == "c")) {
|
|
|
|
if ((ch[1] != '"'))// && (isNaN(strch.substr(1, strch.length)))
|
|
variable = '"' + strch.substr(1, strch.length) + '"';
|
|
else if (strch.substr(1, strch.length) == "")
|
|
variable = '"' + strch.substr(1, strch.length) + '"';
|
|
else
|
|
variable = strch.substr(1, strch.length);
|
|
}
|
|
else if (firstchar == "d") {
|
|
|
|
variable = '"' + strch.substr(1, strch.length) + '"';
|
|
}
|
|
else {
|
|
if (firstchar == "n") {
|
|
variable = strch.substr(1, strch.length);
|
|
if (parseInt(variable) < 0) variable = "(" + variable + ")";
|
|
}
|
|
else {
|
|
variable = strch.substr(1, strch.length);
|
|
}
|
|
}
|
|
s = s + variable;
|
|
}
|
|
}
|
|
return s;
|
|
}
|
|
|
|
|
|
function isOperator(who) {
|
|
|
|
return ((who == "+" || who == "-" || who == "*" || who == "/" || who == "^" || who == "=" || who == ">" || who == "<" || who == "#" || who == "&" || who == "|" || who == "$") ? true : false);
|
|
}
|
|
function isDelimiter(who) {
|
|
|
|
return ((who == " " || who == "(" || who == ")" || who == ",") ? true : false);
|
|
}
|
|
|
|
function ReturnDMYOfDate(dt, src) {
|
|
if (IsValidDate(dt) == 0) {
|
|
var day = "";
|
|
dt = dt.toString();
|
|
var arrdt = new Array();
|
|
arrdt = dt.split("/");
|
|
var result = 0;
|
|
if (dateString == "dd/mm/yyyy") {
|
|
if (src == "day")
|
|
result = parseInt(arrdt[0], 10);
|
|
else if (src == "month")
|
|
result = parseInt(arrdt[1], 10);
|
|
else if (src == "year")
|
|
result = parseInt(arrdt[2], 10);
|
|
}
|
|
else {
|
|
|
|
if (src == "day")
|
|
result = parseInt(arrdt[1], 10);
|
|
else if (src == "month")
|
|
result = parseInt(arrdt[0], 10);
|
|
else if (src == "year")
|
|
result = parseInt(arrdt[2], 10);
|
|
}
|
|
return result;
|
|
}
|
|
else
|
|
return 0;
|
|
}
|
|
|
|
function MonthOfDate(dt) {
|
|
return ReturnDMYOfDate(dt, "month");
|
|
}
|
|
|
|
|
|
function YearOfDate(dt) {
|
|
return ReturnDMYOfDate(dt, "year");
|
|
}
|
|
|
|
function IsValidDate(dtStr) {
|
|
|
|
if (dtStr != "" && dtStr != dateString) {
|
|
|
|
var daysInMonth = DaysArray(12);
|
|
var pos1 = dtStr.indexOf(dtCh);
|
|
var pos2 = dtStr.indexOf(dtCh, pos1 + 1);
|
|
var strDay = 0; var strMonth = 0;
|
|
var glCulture = eval(callParent('glCulture'));
|
|
if (glCulture != undefined && glCulture == "en-us") {
|
|
strMonth = dtStr.substring(0, pos1);
|
|
strDay = dtStr.substring(pos1 + 1, pos2);
|
|
}
|
|
else {
|
|
strDay = dtStr.substring(0, pos1);
|
|
strMonth = dtStr.substring(pos1 + 1, pos2);
|
|
}
|
|
var strYear = dtStr.substring(pos2 + 1);
|
|
strYr = strYear;
|
|
|
|
if (strDay.charAt(0) == "0" && strDay.length > 1) strDay = strDay.substring(1);
|
|
if (strMonth.charAt(0) == "0" && strMonth.length > 1) strMonth = strMonth.substring(1);
|
|
|
|
for (var i = 1; i <= 3; i++) {
|
|
if (strYr.charAt(0) == "0" && strYr.length > 1) strYr = strYr.substring(1);
|
|
}
|
|
|
|
var month = parseInt(strMonth, 10);
|
|
var day = parseInt(strDay, 10);
|
|
var year = parseInt(strYr, 10);
|
|
|
|
if (pos1 == -1 || pos2 == -1) {
|
|
return 1;
|
|
}
|
|
else if (strMonth.length < 1 || month < 1 || month > 12) {
|
|
return 2;
|
|
}
|
|
else if (strDay.length < 1 || day < 1 || day > 31 || (month == 2 && day > daysInFebruary(year)) || day > daysInMonth[month]) {
|
|
return 3;
|
|
}
|
|
else if (strYear.length != 4 || year == 0 || year < minYear || year > maxYear) {
|
|
return 4;
|
|
}
|
|
else if (dtStr.indexOf(dtCh, pos2 + 1) != -1 || isInteger(stripCharsInBag(dtStr, dtCh)) == false) {
|
|
return 5;
|
|
}
|
|
else
|
|
return 0;
|
|
}
|
|
else
|
|
return -1;
|
|
}
|
|
|
|
function DayOfDate(dt) {
|
|
return ReturnDMYOfDate(dt, "day");
|
|
}
|
|
|
|
function IfFun(val1, val2, val3) {
|
|
|
|
var result = '';
|
|
if (val1) {
|
|
if (!isNaN(val2))
|
|
result = val2;
|
|
else
|
|
result = '"' + val2 + '"';
|
|
}
|
|
else {
|
|
result = val3;
|
|
if (expressiontype == "vexpr") {
|
|
|
|
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
|
|
function Length(str) {
|
|
|
|
var length;
|
|
length = str.toString().length;
|
|
return length;
|
|
}
|
|
|
|
function SubStr(str, start, len) {
|
|
|
|
if (start == 0 || start == "0")
|
|
start = 0;
|
|
else
|
|
start = start - 1;
|
|
|
|
len = start + len;
|
|
if ((str != "") && (str != 0))
|
|
str = str.toString().substring(start, len);
|
|
return str;
|
|
}
|
|
|
|
function PAbs(x) {
|
|
|
|
var abs = Math.abs(x);
|
|
return abs;
|
|
}
|
|
|
|
function FindCharPos(my_str, my_char) {
|
|
|
|
var pos = my_str.indexOf(my_char);
|
|
if (pos == -1)
|
|
showAlertDialog("error", 2033, "client");
|
|
else
|
|
return pos;
|
|
}
|
|
|
|
function ChkUniqChar(str) {
|
|
|
|
var i, j, l;
|
|
var vstr = new Array();
|
|
var l = str.length;
|
|
var count = 0;
|
|
for (i = 0; i < l; i++) {
|
|
for (j = i + 1; j < l; j++) {
|
|
if (str.charAt(i) == str.charAt(j)) {
|
|
count++;
|
|
}
|
|
}
|
|
}
|
|
if (count > 0)
|
|
return true;
|
|
else
|
|
return false;
|
|
}
|
|
|
|
function TrimAll(sString) {
|
|
|
|
while (sString.substring(0, 1) == ' ') {
|
|
sString = sString.substring(1, sString.length);
|
|
}
|
|
while (sString.substring(sString.length - 1, sString.length) == ' ') {
|
|
sString = sString.substring(0, sString.length - 1);
|
|
}
|
|
return sString;
|
|
}
|
|
|
|
function ExtractNum(str) {
|
|
|
|
return (str.replace(/\D/g, ''));
|
|
}
|
|
|
|
function Mods(v1, v2) {
|
|
|
|
var x = v1 % v2;
|
|
return x;
|
|
}
|
|
|
|
function LastDayOfMonth(dateStr) {
|
|
try {
|
|
if (dateStr != "") {
|
|
var dtStr = dateStr.toString().split("/");
|
|
var month = ""; var year = ""; var day = "";
|
|
if (dateString == "dd/mm/yyyy") {
|
|
day = dtStr[0].toString();
|
|
month = dtStr[1].toString();
|
|
year = dtStr[2].toString();
|
|
}
|
|
else {
|
|
day = dtStr[1].toString();
|
|
month = dtStr[0].toString();
|
|
year = dtStr[2].toString();
|
|
}
|
|
|
|
var newDate = new Date(parseInt(year, 10), parseInt(month, 10) - 1, parseInt(day, 10));
|
|
var lastDay = "31";
|
|
month = parseInt(month, 10);
|
|
lastDay = DaysInMonth(year, month);
|
|
newDate = new Date(parseInt(year, 10), parseInt(month, 10) - 1, parseInt(lastDay, 10));
|
|
newDate = ConstructDate(newDate);
|
|
return newDate;
|
|
}
|
|
else
|
|
return "";
|
|
} catch (e) {
|
|
return "";
|
|
}
|
|
|
|
}
|
|
|
|
function IsLeapYear(yr) {
|
|
return new Date(yr, 2 - 1, 29).getDate() == 29;
|
|
}
|
|
|
|
function ConstructDate(dateObj) {
|
|
|
|
if (dateString == "dd/mm/yyyy") {
|
|
resultDate = ("0" + dateObj.getDate()).slice(-2) + "/" + ("0" + (dateObj.getMonth() + 1)).slice(-2) + "/" + dateObj.getFullYear();
|
|
}
|
|
else {
|
|
resultDate = ("0" + (dateObj.getMonth() + 1)).slice(-2) + "/" + ("0" + dateObj.getDate()).slice(-2) + "/" + dateObj.getFullYear();
|
|
}
|
|
return resultDate;
|
|
}
|
|
|
|
|
|
function DaysInMonth(year, month) {
|
|
|
|
month = parseInt(month, 10);
|
|
var noOfDays = 0;
|
|
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
|
|
noOfDays = 31;
|
|
else if (month == 4 || month == 6 || month == 9 || month == 11)
|
|
noOfDays = 30;
|
|
else {
|
|
if (IsLeapYear(parseInt(year, 10)))
|
|
noOfDays = 29;
|
|
else
|
|
noOfDays = 28;
|
|
}
|
|
return noOfDays;
|
|
}
|
|
|
|
|
|
function ValidEncodeDate(y, m, d) {
|
|
|
|
var dt = new Date(y, m - 1, d);
|
|
return dt;
|
|
}
|
|
|
|
|
|
function GetInteger(real) {
|
|
|
|
var x = 0;
|
|
if (!isNaN(real))
|
|
x = parseInt(real);
|
|
return x;
|
|
}
|
|
|
|
|
|
function AddToMonth(dateTime, i) {
|
|
if (dateTime != "" && dateTime != "0") {
|
|
var newDate = GetDateObj(dateTime);
|
|
if (newDate != null) {
|
|
newDate.setMonth(newDate.getMonth() + parseInt(i, 10));
|
|
var resultDate = ConstructDate(newDate);
|
|
return resultDate;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
function AddToDate(dateTime, i) {
|
|
if (dateTime != "") {
|
|
var newDate = GetDateObj(dateTime);
|
|
if (newDate != null) {
|
|
newDate.setDate(newDate.getDate() + parseInt(i, 10));
|
|
var resultDate = ConstructDate(newDate);
|
|
return resultDate;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
function Time() {
|
|
var dt = new Date();
|
|
var time = dt.toTimeString();
|
|
return time;
|
|
}
|
|
|
|
//Returns the date object from the given date string.
|
|
function GetDateObj(dateStr) {
|
|
if (dateStr != "" && dateStr.toString().indexOf("/") != -1) {
|
|
var dtStr = dateStr.toString().split("/");
|
|
var month = ""; var year = ""; var day = ""; var resultDate = "";
|
|
if (dateString == "dd/mm/yyyy") {
|
|
day = dtStr[0].toString();
|
|
month = dtStr[1].toString();
|
|
year = dtStr[2].toString();
|
|
}
|
|
else {
|
|
day = dtStr[1].toString();
|
|
month = dtStr[0].toString();
|
|
year = dtStr[2].toString();
|
|
}
|
|
if ((isNaN(day) || isNaN(month) || isNaN(year)))
|
|
return null;
|
|
resultDate = new Date(parseInt(year, 10), parseInt(month, 10) - 1, parseInt(day, 10));
|
|
return resultDate;
|
|
}
|
|
else
|
|
return "";
|
|
}
|
|
|
|
function TimeElapsed(d1, d2) {
|
|
|
|
if (d1 != "" && d2 != "") {
|
|
date1 = GetDateObj(d1);
|
|
var date2 = GetDateObj(d2);
|
|
if (date1 != null && date2 != null) {
|
|
var sec = date2.getTime() - date1.getTime();
|
|
var second = 1000, minute = 60 * second, hour = 60 * minute, day = 24 * hour;
|
|
var hr = trunc(sec / hour);
|
|
var min = trunc(sec / minute);
|
|
var secs = trunc(sec / second);
|
|
var days = Math.floor(sec / day);
|
|
//sec -= days * day;
|
|
sec = days * day;
|
|
var hours = Math.floor(sec / hour);
|
|
//sec -= hours * hour;
|
|
sec = hours * hour;
|
|
var minutes = Math.floor(sec / minute);
|
|
//sec -= minutes * minute;
|
|
sec = minutes * minute;
|
|
var seconds = Math.floor(sec / second);
|
|
var time = days + " day" + (days != 1 ? "s" : "") + ", " + hours + " hour" + (hours != 1 ? "s" : "") + ", " + minutes + " minute" + (minutes != 1 ? "s" : "") + ", " + seconds + " second" + (seconds != 1 ? "s" : "");
|
|
return time;
|
|
}
|
|
else
|
|
return "";
|
|
}
|
|
return "";
|
|
}
|
|
|
|
function trunc(n) {
|
|
return Math[n > 0 ? "floor" : "ceil"](n);
|
|
}
|
|
|
|
function DaysElapsed(d1, d2) {
|
|
|
|
try {
|
|
if (d1 == "01/01/1900")
|
|
d1 = "";
|
|
if (d2 == "01/01/1900")
|
|
d2 = "";
|
|
|
|
if (d1 != "" && d2 != "") {
|
|
var stdt = GetDateObj(d1);
|
|
var endt = GetDateObj(d2);
|
|
|
|
if (stdt != null && endt != null) {
|
|
|
|
var stdtUTC = new Date(Date.UTC(stdt.getUTCFullYear(), stdt.getUTCMonth(), stdt.getUTCDate(), 0, 0, 0));
|
|
var endtUTC = new Date(Date.UTC(endt.getUTCFullYear(), endt.getUTCMonth(), endt.getUTCDate(), 0, 0, 0));
|
|
|
|
if (endtUTC > stdtUTC)
|
|
return Math.floor((endtUTC - stdtUTC) / 8.64e7);
|
|
else if (endtUTC == stdtUTC)
|
|
return 0;
|
|
else
|
|
return Math.floor((stdtUTC - endtUTC) / 8.64e7);
|
|
}
|
|
}
|
|
return 0;
|
|
} catch (e) {
|
|
return "";
|
|
}
|
|
|
|
}
|
|
|
|
function MandY(dateTime) {
|
|
|
|
if (dateTime != 0 && dateTime != "") {
|
|
var newDate = GetDateObj(dateTime);
|
|
if (newDate != null) {
|
|
var mon = newDate.getMonth() + 1;
|
|
mon = PrefixZero(mon);
|
|
var year = newDate.getFullYear();
|
|
return (year + "" + mon);
|
|
}
|
|
}
|
|
return "";
|
|
}
|
|
|
|
function FindAndReplace(strText, findstr, repstr) {
|
|
|
|
strReplaceAll = strText.replace(new RegExp(findstr, "gi"), repstr);
|
|
return (strReplaceAll);
|
|
}
|
|
|
|
function removeCommas(aNum) {
|
|
|
|
if (aNum == undefined || (aNum == ""))
|
|
return "0";
|
|
aNum = aNum.toString();
|
|
aNum = aNum.replace(/,/g, "");
|
|
return aNum;
|
|
}
|
|
|
|
function GetNthString(str, pos) {
|
|
|
|
str = str.substring(pos);
|
|
return str;
|
|
}
|
|
|
|
function RoundOff(str, dig) {
|
|
|
|
var x = Math.pow(10, dig);
|
|
var Result = Math.round(str * x) / x;
|
|
return Result;
|
|
}
|
|
|
|
function InsertCommas(amount) {
|
|
|
|
var i = parseFloat(amount);
|
|
if (isNaN(i)) { i = 0.00; }
|
|
var minus = '';
|
|
if (i < 0) { minus = '-'; }
|
|
i = Math.abs(i);
|
|
i = parseInt((i + .005) * 100);
|
|
i = i / 100;
|
|
s = new String(i);
|
|
if (s.indexOf('.') < 0) { s += '.00'; }
|
|
if (s.indexOf('.') == (s.length - 2)) { s += '0'; }
|
|
s = minus + s;
|
|
var formattedamt = CommaFormatted(s);
|
|
|
|
return formattedamt;
|
|
}
|
|
|
|
function CommaFormatted(amount) {
|
|
var delimiter = ","; // replace comma if desired
|
|
var a = "";
|
|
if (amount.toString().indexOf(".") == -1)
|
|
amount = amount + ".";
|
|
|
|
a = amount.split('.');
|
|
var d = "";
|
|
if (a.length > 1)
|
|
d = a[1].toString();
|
|
var i = parseInt(a[0]);
|
|
if (isNaN(i)) { return ''; }
|
|
var minus = '';
|
|
if (amount < 0) { minus = '-'; }
|
|
i = Math.abs(i);
|
|
var n = new String(i);
|
|
var a = [];
|
|
while (n.length > 3) {
|
|
var nn = n.substr(n.length - 3);
|
|
a.unshift(nn);
|
|
n = n.substr(0, n.length - 3);
|
|
}
|
|
if (n.length > 0) { a.unshift(n); }
|
|
n = a.join(delimiter);
|
|
if (d.length < 1) { amount = n; }
|
|
else { amount = n + '.' + d; }
|
|
amount = minus + amount;
|
|
return amount;
|
|
}
|
|
|
|
function LeftPad(text, size, ch) {
|
|
|
|
var out = String(text);
|
|
if (!ch) ch = '0';
|
|
while (out.length < size) {
|
|
if (out.length == size)
|
|
out += ch;
|
|
else
|
|
out = ch + out;
|
|
}
|
|
return out;
|
|
}
|
|
|
|
function RightPad(text, size, ch) {
|
|
|
|
var out = String(text);
|
|
if (!ch) ch = '0';
|
|
while (out.length < size) {
|
|
if (out.length == size)
|
|
out = ch + out;
|
|
else
|
|
out += ch;
|
|
}
|
|
return out;
|
|
}
|
|
|
|
function Pad(text, size, ch) {
|
|
|
|
var out = String(text);
|
|
if (!ch) ch = '0';
|
|
while (out.length < size) {
|
|
out = ch + out;
|
|
if (out.length < size)
|
|
out += ch;
|
|
}
|
|
return out;
|
|
}
|
|
|
|
function GetSeperatorCount(srcstr, separator) {
|
|
|
|
var str = srcstr.toString();
|
|
var strArray = str.split(separator);
|
|
return (strArray.length - 1);
|
|
}
|
|
|
|
function Val(fldValue) {
|
|
|
|
var num = fldValue.toString();
|
|
if (num.indexOf("{") != -1 || num.indexOf("}") != -1) {
|
|
var x = num.replace(/^\{?([^\}])/, "");
|
|
x = x.split(')');
|
|
num = x[0];
|
|
}
|
|
num = removeCommas(num);
|
|
return parseFloat(num);
|
|
}
|
|
|
|
function Str(Number) {
|
|
|
|
var x = '';
|
|
if (isNaN(Number))
|
|
showAlertDialog("error", 2034, "client");
|
|
else
|
|
x = Number.toString();
|
|
return x;
|
|
}
|
|
|
|
function UpperCase(Strparam) {
|
|
|
|
var str = Strparam.toString();
|
|
if (str == "0") { str = ""; return str; }
|
|
else { return str.toUpperCase(); }
|
|
}
|
|
|
|
function LowerCase(Strparam) {
|
|
|
|
var str = Strparam.toString();
|
|
return str.toLowerCase();
|
|
}
|
|
|
|
function IsVarEmpty(Strparam) {
|
|
|
|
var str = Strparam.toString();
|
|
if (str == "")
|
|
return true;
|
|
else
|
|
return false;
|
|
}
|
|
|
|
function GetVarValue(Strparam) {
|
|
|
|
return Strparam.valueOf();
|
|
}
|
|
|
|
function Amt_Word(num) {
|
|
|
|
var Inwords = "";
|
|
if (num != undefined) {
|
|
if ((num.length == 0)) {
|
|
showAlertDialog('warning', 2035, "client");
|
|
return true;
|
|
}
|
|
else {
|
|
Inwords = toWords(num);
|
|
}
|
|
}
|
|
|
|
return Inwords;
|
|
}
|
|
|
|
function ValidateAmount(s) {
|
|
var junkVal = s;
|
|
junkVal = Math.floor(junkVal);
|
|
var obStr = new String(junkVal);
|
|
numReversed = obStr.split("");
|
|
actnumber = numReversed.reverse();
|
|
|
|
if (Number(junkVal) >= 0) {
|
|
//do nothing
|
|
}
|
|
else {
|
|
//showAlertDialog('error', 2036, "client");
|
|
return false;
|
|
}
|
|
|
|
if (Number(junkVal) == 0) {
|
|
return '';
|
|
}
|
|
if (actnumber.length > 9) {
|
|
showAlertDialog('warning', 2037, "client");
|
|
return false;
|
|
}
|
|
|
|
var iWords = ["Zero", "One", "Two", "Three", "Four", "Five", " Six", " Seven", " Eight", "Nine"];
|
|
var ePlace = ['Ten', 'Eleven', 'Twelve', 'Thirteen', 'Fourteen', 'Fifteen', 'Sixteen', 'Seventeen', 'Eighteen', 'Nineteen'];
|
|
var tensPlace = ['dummy', 'Ten', 'Twenty', 'Thirty', 'Forty', 'Fifty', 'Sixty', 'Seventy', 'Eighty', 'Ninety'];
|
|
var iWordsLength = numReversed.length;
|
|
var totalWords = "";
|
|
var inWords = new Array();
|
|
var finalWord = "";
|
|
j = 0;
|
|
for (i = 0; i < iWordsLength; i++) {
|
|
switch (i) {
|
|
case 0:
|
|
if (actnumber[i] == 0 || actnumber[i + 1] == 1) {
|
|
inWords[j] = '';
|
|
}
|
|
else {
|
|
inWords[j] = iWords[actnumber[i]];
|
|
}
|
|
inWords[j] = inWords[j];
|
|
break;
|
|
case 1:
|
|
tens_complication();
|
|
break;
|
|
case 2:
|
|
if (actnumber[i] == 0) {
|
|
inWords[j] = '';
|
|
}
|
|
else if (actnumber[i - 1] != 0 && actnumber[i - 2] != 0) {
|
|
inWords[j] = iWords[actnumber[i]] + ' Hundred and';
|
|
}
|
|
else {
|
|
inWords[j] = iWords[actnumber[i]] + ' Hundred';
|
|
}
|
|
break;
|
|
case 3:
|
|
if (actnumber[i] == 0 || actnumber[i + 1] == 1) {
|
|
inWords[j] = '';
|
|
}
|
|
else {
|
|
inWords[j] = iWords[actnumber[i]];
|
|
}
|
|
if (actnumber[i + 1] != 0 || actnumber[i] > 0) { //here
|
|
inWords[j] = inWords[j] + " Thousand";
|
|
}
|
|
break;
|
|
case 4:
|
|
tens_complication();
|
|
break;
|
|
case 5:
|
|
if (actnumber[i] == "0" || actnumber[i + 1] == 1) {
|
|
inWords[j] = '';
|
|
}
|
|
else {
|
|
inWords[j] = iWords[actnumber[i]];
|
|
}
|
|
if (actnumber[i + 1] != 0 || actnumber[i] > 0) { //here
|
|
inWords[j] = inWords[j] + " Lakh";
|
|
}
|
|
|
|
break;
|
|
case 6:
|
|
tens_complication();
|
|
break;
|
|
case 7:
|
|
if (actnumber[i] == "0" || actnumber[i + 1] == 1) {
|
|
inWords[j] = '';
|
|
}
|
|
else {
|
|
inWords[j] = iWords[actnumber[i]];
|
|
}
|
|
if (actnumber[i + 1] != 0 || actnumber[i] > 0) { // changed here
|
|
inWords[j] = inWords[j] + " Crore";
|
|
}
|
|
break;
|
|
case 8:
|
|
tens_complication();
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
j++;
|
|
}
|
|
|
|
function tens_complication() {
|
|
if (actnumber[i] == 0) {
|
|
inWords[j] = '';
|
|
}
|
|
else if (actnumber[i] == 1) {
|
|
inWords[j] = ePlace[actnumber[i - 1]];
|
|
}
|
|
else {
|
|
inWords[j] = tensPlace[actnumber[i]];
|
|
}
|
|
}
|
|
inWords.reverse();
|
|
for (i = 0; i < inWords.length; i++) {
|
|
if (inWords[i] != "")
|
|
finalWord += ' ' + inWords[i];
|
|
else
|
|
finalWord += '' + inWords[i];
|
|
}
|
|
return finalWord;
|
|
}
|
|
|
|
function toWords(s) {
|
|
var finalWord1 = ValidateAmount(s);
|
|
var finalWord2 = "";
|
|
|
|
var val = s;
|
|
var actual_val = s;
|
|
s = val;
|
|
val = val.toString();
|
|
|
|
var idx = val.indexOf('.');
|
|
if (idx != -1) {
|
|
val = val.substring(idx + 1, val.length);
|
|
if (val.length == 0 || val == "00") {
|
|
finalWord2 = "Zero paisa Only";
|
|
}
|
|
else {
|
|
s = val;
|
|
finalWord2 = ValidateAmount(s) + " paisa Only";
|
|
}
|
|
if (finalWord1 == "")
|
|
return finalWord2;
|
|
else
|
|
return (" Rupees" + finalWord1 + " and " + finalWord2);
|
|
}
|
|
else {
|
|
return (" Rupees" + finalWord1 + " Only");
|
|
}
|
|
}
|
|
|
|
function curtoWords(s) {
|
|
var finalWord1 = ValidateAmount(s);
|
|
var finalWord2 = "";
|
|
|
|
var val = s;
|
|
var actual_val = s;
|
|
s = val;
|
|
val = val.toString();
|
|
|
|
var idx = val.indexOf('.');
|
|
if (idx != -1) {
|
|
val = val.substring(idx + 1, val.length);
|
|
if (val.length == 0 || val == "00") {
|
|
finalWord2 = "Zero paisa";
|
|
}
|
|
else {
|
|
s = val;
|
|
finalWord2 = ValidateAmount(s) + " paisa";
|
|
}
|
|
if (finalWord1 == "")
|
|
return finalWord2;
|
|
else
|
|
return (finalWord1 + " and " + finalWord2);
|
|
}
|
|
else {
|
|
return (finalWord1);
|
|
}
|
|
}
|
|
|
|
function EvaluatePower(base, Strparam) {
|
|
|
|
var power = Strparam.value;
|
|
var exp = Math.pow(base, power);
|
|
return exp;
|
|
}
|
|
function push_stack(stackArr, ele) {
|
|
|
|
stackArr[stackArr.length] = ele;
|
|
}
|
|
function pop_stack(stackArr) {
|
|
|
|
var _temp = stackArr[stackArr.length - 1];
|
|
delete stackArr[stackArr.length - 1];
|
|
stackArr.length--;
|
|
return (_temp);
|
|
}
|
|
function isOperand(who) {
|
|
|
|
return ((!isOperator(who) && (who != "(") && (who != ")")) ? true : false);
|
|
}
|
|
function topStack(stackArr) {
|
|
|
|
return (stackArr[stackArr.length - 1]);
|
|
}
|
|
function isEmpty(stackArr) {
|
|
|
|
return ((stackArr.length == 0) ? true : false);
|
|
}
|
|
function prcd(who) {
|
|
|
|
if (who == "^")
|
|
return (5);
|
|
if ((who == "*") || (who == "/"))
|
|
return (4);
|
|
if ((who == "+") || (who == "-"))
|
|
return (3);
|
|
if (who == "(")
|
|
return (2);
|
|
if (who == ")")
|
|
return (1);
|
|
}
|
|
function InfixToPostfix(infixStr) {
|
|
|
|
var postfixStr = new Array();
|
|
var stackArr = new Array();
|
|
var postfixPtr = 0;
|
|
infixStr = infixStr.split('');
|
|
for (var i = 0; i < infixStr.length; i++) {
|
|
if (isOperand(infixStr[i])) {
|
|
postfixStr[postfixPtr] = infixStr[i];
|
|
postfixPtr++;
|
|
}
|
|
if (isOperator(infixStr[i])) {
|
|
if (infixStr[i] != "^") {
|
|
while ((!isEmpty(stackArr)) && (prcd(infixStr[i]) <= prcd(topStack(stackArr)))) {
|
|
postfixStr[postfixPtr] = topStack(stackArr);
|
|
pop_stack(stackArr);
|
|
postfixPtr++;
|
|
}
|
|
}
|
|
else {
|
|
while ((!isEmpty(stackArr)) && (prcd(infixStr[i]) < prcd(topStack(stackArr)))) {
|
|
postfixStr[postfixPtr] = topStack(stackArr);
|
|
pop_stack(stackArr);
|
|
postfixPtr++;
|
|
}
|
|
}
|
|
push_stack(stackArr, infixStr[i]);
|
|
}
|
|
if (infixStr[i] == "(") {
|
|
push_stack(stackArr, infixStr[i]);
|
|
}
|
|
if (infixStr[i] == ")") {
|
|
while (topStack(stackArr) != "(") {
|
|
postfixStr[postfixPtr] = pop_stack(stackArr);
|
|
postfixPtr++;
|
|
}
|
|
pop_stack(stackArr);
|
|
}
|
|
}
|
|
while (!isEmpty(stackArr)) {
|
|
if (topStack(stackArr) == "(")
|
|
pop_stack(stackArr)
|
|
else
|
|
postfixStr[postfixStr.length] = pop_stack(stackArr);
|
|
}
|
|
var returnVal = '';
|
|
for (var i = 0; i < postfixStr.length; i++) {
|
|
returnVal += postfixStr[i];
|
|
}
|
|
return (returnVal);
|
|
}
|
|
function PostfixToInfix(postfixStr) {
|
|
|
|
var stackArr = new Array();
|
|
postfixStr = postfixStr.split('');
|
|
for (var i = 0; i < postfixStr.length; i++) {
|
|
if (isOperand(postfixStr[i])) {
|
|
push_stack(stackArr, postfixStr[i]);
|
|
}
|
|
else {
|
|
var temp = topStack(stackArr);
|
|
pop_stack(stackArr);
|
|
var pushVal = topStack(stackArr) + postfixStr[i] + temp;
|
|
pop_stack(stackArr);
|
|
push_stack(stackArr, pushVal);
|
|
}
|
|
}
|
|
return (topStack(stackArr));
|
|
}
|
|
|
|
function PostfixSubEval(num1, num2, sym) {
|
|
|
|
var returnVal;
|
|
if (sym == "+")
|
|
returnVal = num1 + num2;
|
|
if (sym == "-")
|
|
returnVal = num1 - num2;
|
|
if (sym == "*")
|
|
returnVal = num1 * num2;
|
|
if (sym == "/")
|
|
returnVal = num1 / num2;
|
|
if (sym == "^")
|
|
returnVal = Math.pow(num1, num2);
|
|
return (returnVal);
|
|
}
|
|
|
|
|
|
function PostfixEval(postfixStr) {
|
|
|
|
var stackArr = new Array();
|
|
postfixStr = postfixStr.split('');
|
|
for (var i = 0; i < postfixStr.length; i++) {
|
|
if (isOperand(postfixStr[i])) {
|
|
push_stack(stackArr, postfixStr[i]);
|
|
}
|
|
else {
|
|
var temp = parseFloat(topStack(stackArr));
|
|
pop_stack(stackArr);
|
|
var pushVal = PostfixSubEval(parseFloat(topStack(stackArr)), temp, postfixStr[i]);
|
|
pop_stack(stackArr);
|
|
push_stack(stackArr, pushVal);
|
|
}
|
|
}
|
|
return (topStack(stackArr));
|
|
}
|
|
|
|
function InputPrecedence(Precedence) {
|
|
|
|
var result = 11;
|
|
result = parseInt(result);
|
|
if (Precedence == ')') { result = 0; return result; }
|
|
else if (Precedence == '|') { result = 1; return result; }
|
|
else if (Precedence == '&') { result = 3; return result; }
|
|
else if ((Precedence == '+') || (Precedence == '-')) { result = 5; return result; }
|
|
else if ((Precedence == '*') || (Precedence == '/')) { result = 7; return result; }
|
|
else if ((Precedence == '^') || (Precedence == '>') || (Precedence == '<') || (Precedence == '#') || (Precedence == '$')) { result = 10; return result; }
|
|
else if (Precedence == '(') { result = 13; return result; }
|
|
else { return result; }
|
|
}
|
|
|
|
function StackPrecedence(Precedence) {
|
|
|
|
var result = 12;
|
|
result = parseInt(result);
|
|
if (Precedence == '(') { result = 0; return result; }
|
|
else if (Precedence == '|') { result = 2; return result; }
|
|
else if (Precedence == '&') {
|
|
result = 4; return result;
|
|
}
|
|
else if ((Precedence == '+') || (Precedence == '-')) { result = 6; return result; }
|
|
else if (Precedence == '*' || Precedence == '/') {
|
|
result = 8; return result;
|
|
} else if (Precedence == '^' || Precedence == '>' || Precedence == '=' || Precedence == '<' || Precedence == '#' || Precedence == '$') { result = 9; return result; }
|
|
else { return result; }
|
|
}
|
|
|
|
function ISOperator(operator) {
|
|
|
|
if (operator == '+' || operator == '-' || operator == '*' || operator == '/' || operator == '<' || operator == '>' || operator == '=' || operator == '#' || operator == '&' || operator == '|' || operator == '$')
|
|
return true;
|
|
else
|
|
return false;
|
|
}
|
|
|
|
var enc64List, dec64List;
|
|
function initBase64() {
|
|
|
|
enc64List = new Array();
|
|
dec64List = new Array();
|
|
var i;
|
|
for (i = 0; i < 26; i++) {
|
|
enc64List[enc64List.length] = String.fromCharCode(65 + i);
|
|
}
|
|
for (i = 0; i < 26; i++) {
|
|
enc64List[enc64List.length] = String.fromCharCode(97 + i);
|
|
}
|
|
for (i = 0; i < 10; i++) {
|
|
enc64List[enc64List.length] = String.fromCharCode(48 + i);
|
|
}
|
|
enc64List[enc64List.length] = "+";
|
|
enc64List[enc64List.length] = "/";
|
|
for (i = 0; i < 128; i++) {
|
|
dec64List[dec64List.length] = -1;
|
|
}
|
|
for (i = 0; i < 64; i++) {
|
|
dec64List[enc64List[i].charCodeAt(0)] = i;
|
|
}
|
|
}
|
|
|
|
function Encode(str) {
|
|
|
|
var c, d, e, end = 0;
|
|
var u, v, w, x;
|
|
var ptr = -1;
|
|
var input = str.split("");
|
|
var output = "";
|
|
while (end == 0) {
|
|
c = (typeof input[++ptr] != "undefined") ? input[ptr].charCodeAt(0) :
|
|
((end = 1) ? 0 : 0);
|
|
d = (typeof input[++ptr] != "undefined") ? input[ptr].charCodeAt(0) :
|
|
((end += 1) ? 0 : 0);
|
|
e = (typeof input[++ptr] != "undefined") ? input[ptr].charCodeAt(0) :
|
|
((end += 1) ? 0 : 0);
|
|
u = enc64List[c >> 2];
|
|
v = enc64List[(0x00000003 & c) << 4 | d >> 4];
|
|
w = enc64List[(0x0000000F & d) << 2 | e >> 6];
|
|
x = enc64List[e & 0x0000003F];
|
|
|
|
if (end >= 1) { x = "="; }
|
|
if (end == 2) { w = "="; }
|
|
|
|
if (end < 3) { output += u + v + w + x; }
|
|
}
|
|
var formattedOutput = "";
|
|
var lineLength = 76;
|
|
while (output.length > lineLength) {
|
|
formattedOutput += output.substring(0, lineLength) + "\n";
|
|
output = output.substring(lineLength);
|
|
}
|
|
formattedOutput += output;
|
|
return formattedOutput;
|
|
}
|
|
|
|
function Decode(str) {
|
|
|
|
var c = 0, d = 0, e = 0, f = 0, i = 0, n = 0;
|
|
var input = str.split("");
|
|
var output = "";
|
|
var ptr = 0;
|
|
do {
|
|
f = input[ptr++].charCodeAt(0);
|
|
i = dec64List[f];
|
|
if (f >= 0 && f < 128 && i != -1) {
|
|
if (n % 4 == 0) {
|
|
c = i << 2;
|
|
} else if (n % 4 == 1) {
|
|
c = c | (i >> 4);
|
|
d = (i & 0x0000000F) << 4;
|
|
} else if (n % 4 == 2) {
|
|
d = d | (i >> 2);
|
|
e = (i & 0x00000003) << 6;
|
|
} else {
|
|
e = e | i;
|
|
}
|
|
n++;
|
|
if (n % 4 == 0) {
|
|
output += String.fromCharCode(c) +
|
|
String.fromCharCode(d) +
|
|
String.fromCharCode(e);
|
|
}
|
|
}
|
|
}
|
|
while (typeof input[ptr] != "undefined");
|
|
output += (n % 4 == 3) ? String.fromCharCode(c) + String.fromCharCode(d) :
|
|
((n % 4 == 2) ? String.fromCharCode(c) : "");
|
|
return output;
|
|
}
|
|
|
|
initBase64();
|
|
|
|
function PrefixZero(dayOrMonth) {
|
|
if (dayOrMonth.toString().length == 1)
|
|
dayOrMonth = "0" + dayOrMonth;
|
|
return dayOrMonth;
|
|
}
|
|
|
|
function DTOC(dateTimeparam) {
|
|
if (dateTimeparam != "" && dateTimeparam != undefined && dateTimeparam != "01/01/1900") {
|
|
|
|
var dd = GetDateObj(dateTimeparam);
|
|
if (dd != null) {
|
|
var mon = dd.getMonth() + 1;
|
|
mon = PrefixZero(mon);
|
|
var year = dd.getFullYear();
|
|
var date = dd.getDate();
|
|
date = PrefixZero(date);
|
|
if (dateString == "dd/mm/yyyy")
|
|
resultDate = date + "/" + mon + "/" + year;
|
|
else
|
|
resultDate = mon + "/" + date + "/" + year;
|
|
|
|
return resultDate.toString();
|
|
}
|
|
}
|
|
return "";
|
|
}
|
|
|
|
function CTOD(strDateparam) {
|
|
return DTOC(strDateparam);
|
|
}
|
|
|
|
function CMonthYear(dateTimeparam) {
|
|
try {
|
|
if (dateTimeparam != "" && dateTimeparam != "0") {
|
|
var dd = GetDateObj(dateTimeparam);
|
|
if (dd != null) {
|
|
var val = dd.valueOf();
|
|
var mon = dd.getMonth();
|
|
var year = dd.getFullYear();
|
|
var monthNames = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
|
|
mon = monthNames[mon];
|
|
return (mon + " " + year);
|
|
}
|
|
}
|
|
return "";
|
|
} catch (e) {
|
|
return "";
|
|
}
|
|
|
|
}
|
|
|
|
function Stuff(str1, str2, pos) {
|
|
|
|
var datatype = typeof (str1);
|
|
var str = str1.toString();
|
|
if (IsEmptyValue(str, datatype) == "T")
|
|
showAlertDialog("error", 2038, "client");
|
|
var lstr = str.substring(0, pos);
|
|
var Rstr = str.substring(parseInt(pos));
|
|
str = lstr + str2 + Rstr;
|
|
return str;
|
|
}
|
|
|
|
function Rnd(strReal, strInt) {
|
|
|
|
var amt;
|
|
var nval = parseFloat(strReal);
|
|
var x = parseInt(strInt);
|
|
var m = parseInt(nval * 100);
|
|
var h = parseInt(x / 2);
|
|
var d = m - x * parseInt(m / x);
|
|
if (d >= h)
|
|
amt = m + x - d;
|
|
else
|
|
amt = m - d;
|
|
var result = amt / 100.00;
|
|
|
|
if (isNaN(result))
|
|
return 0;
|
|
else
|
|
return result;
|
|
}
|
|
|
|
function IsEmptyValue(val, datatype) {
|
|
|
|
var Result = "F";
|
|
if (val == "01/01/1900")
|
|
val = "";
|
|
if ((val == "") || (val == null))
|
|
Result = "T";
|
|
else if ((datatype == "object") && (isNaN(val)))
|
|
Result = "T";
|
|
else if (datatype == "d" && (val == "dd/mm/yyyy" || val == "01/01/1900"))
|
|
Result = "T";
|
|
else if (datatype == "n" && parseFloat(val) == "0")
|
|
Result = "T";
|
|
GetVarValue(Result);
|
|
return Result;
|
|
}
|
|
|
|
function FormatVal(amount, declen) {
|
|
|
|
if (declen > 0)
|
|
declen = Math.pow(10, declen);
|
|
else
|
|
declen = Math.pow(10, 2);
|
|
var i = parseFloat(amount);
|
|
if (isNaN(i)) { i = 0.00; }
|
|
var minus = '';
|
|
if (i < 0) { minus = '-'; }
|
|
i = Math.abs(i);
|
|
i = parseInt((i + .005) * declen);
|
|
i = i / declen;
|
|
s = new String(i);
|
|
if (s.indexOf('.') < 0) { s += '.00'; }
|
|
if (s.indexOf('.') == (s.length - 2)) { s += '0'; }
|
|
s = minus + s;
|
|
CommaFormatted(s);
|
|
}
|
|
|
|
function FormatAccAmount(amount, declen, MillionRep, Malie, Rep) {
|
|
|
|
var amt = 0;
|
|
if (amount < 0)
|
|
amt = parseFloat(amount) * -1;
|
|
else
|
|
amt = amount;
|
|
var Result = 0;
|
|
var alie = Malie.toString();
|
|
var Rp = Rep.toString();
|
|
alie.toLowerCase();
|
|
alie = TrimAll(alie);
|
|
Rp.toLowerCase();
|
|
if (declen > 0)
|
|
declen = Math.pow(10, declen);
|
|
else
|
|
declen = Math.pow(10, 2);
|
|
var i = parseFloat(amt);
|
|
if (isNaN(i)) { i = 0.00; }
|
|
var minus = '';
|
|
if (i < 0) { minus = '-'; }
|
|
i = Math.abs(i);
|
|
i = parseInt((i + .005) * declen);
|
|
i = i / declen;
|
|
s = new String(i);
|
|
if (s.indexOf('.') < 0) { s += '.00'; }
|
|
if (s.indexOf('.') == (s.length - 2)) { s += '0'; }
|
|
s = minus + s;
|
|
|
|
if (MillionRep == "true")
|
|
Result = CommaFormatted(s);
|
|
else
|
|
Result = addCommas(s);
|
|
if ((alie == "a") || (alie == "e")) {
|
|
if ((amount < 0) && (Rp == "br"))
|
|
Result = "(" + Result + ")";
|
|
else
|
|
if (amount < 0)
|
|
Result = Result + " " + Rp;
|
|
}
|
|
else
|
|
if ((alie == "l") || (alie == "i")) {
|
|
if ((amount > 0) && (Rp == "br"))
|
|
Result = "(" + Result + ")";
|
|
else
|
|
if (amount > 0)
|
|
Result = Result + " " + Rp;
|
|
}
|
|
return Result;
|
|
}
|
|
|
|
function FormatAmount(amount, declen, MillionRep, NRep, PRep) {
|
|
|
|
var amt = 0;
|
|
if (amount < 0)
|
|
amt = parseFloat(amount) * -1;
|
|
else
|
|
amt = amount;
|
|
var Result = 0;
|
|
if (declen > 0)
|
|
declen = Math.pow(10, declen);
|
|
else
|
|
declen = Math.pow(10, 2);
|
|
var i = parseFloat(amt);
|
|
if (isNaN(i)) { i = 0.00; }
|
|
var minus = '';
|
|
if (i < 0) { minus = '-'; }
|
|
i = Math.abs(i);
|
|
i = parseInt((i + .005) * declen);
|
|
i = i / declen;
|
|
s = new String(i);
|
|
if (s.indexOf('.') < 0) { s += '.00'; }
|
|
if (s.indexOf('.') == (s.length - 2)) { s += '0'; }
|
|
s = minus + s;
|
|
if (MillionRep == "true")
|
|
Result = CommaFormatted(s);
|
|
else
|
|
Result = addCommas(s);
|
|
|
|
if ((NRep == "br") || (PRep == "br")) {
|
|
if (amount < 0)
|
|
Result = '(' + Result + ')';
|
|
}
|
|
else {
|
|
if (amount < 0)
|
|
Result = Result + " " + NRep;
|
|
else
|
|
Result = Result + " " + PRep;
|
|
}
|
|
Result = TrimAll(Result);
|
|
return Result;
|
|
}
|
|
|
|
function TrimInbetwnSpaces(aNum) {
|
|
|
|
aNum = aNum.replace(/\s/g, "");
|
|
|
|
return aNum;
|
|
}
|
|
|
|
function TodaysDate() {
|
|
|
|
var dd = new Date();
|
|
var mon = dd.getMonth() + 1;
|
|
mon = PrefixZero(mon);
|
|
var year = dd.getFullYear();
|
|
var date = dd.getDate();
|
|
date = PrefixZero(date);
|
|
var sdt = (date + "/" + mon + "/" + year);
|
|
var glCulture = callParentNew('glCulture');
|
|
if (glCulture != undefined && glCulture == "en-us")
|
|
sdt = GetDateStr(sdt, "mm/dd/yyyy", "dd/mm/yyyy");
|
|
return sdt;
|
|
}
|
|
|
|
function ISEMPTY(fldVar) {
|
|
|
|
var output = '';
|
|
if (fldVar == "" || fldVar == "dd/mm/yyyy" || fldVar == "01/01/1900")
|
|
output = "T";
|
|
else
|
|
output = "F";
|
|
return output;
|
|
}
|
|
|
|
//<Description> Function to Round off the value </Description>
|
|
//<Return> Rounded value </Return>
|
|
function Round(daysVal) {
|
|
|
|
return Math.round(daysVal);
|
|
}
|
|
|
|
function DateDiff(dt1, dt2) {
|
|
|
|
return DaysElapsed(dt1, dt2);
|
|
}
|
|
|
|
function ReplaceSpecialCharInDate(dt) {
|
|
if (dt.indexOf("(") != -1)
|
|
dt = dt.replace(/\(/g, "");
|
|
if (dt.indexOf(")") != -1)
|
|
dt = dt.replace(/\)/g, "");
|
|
return dt;
|
|
}
|
|
|
|
function CompareDate(dt1, dt2, operator) {
|
|
dt1 = ReplaceSpecialCharInDate(dt1);
|
|
dt2 = ReplaceSpecialCharInDate(dt2);
|
|
if (operator == "!=") {
|
|
if (dt1 == "")
|
|
dt1 = "01/01/1900";
|
|
if (dt2 == "")
|
|
dt2 = "01/01/1900";
|
|
return dt1 != dt2 ? true : false;
|
|
}
|
|
if (dt1 != "" && dt2 != "") {
|
|
var startdt1 = GetDateObj(dt1);
|
|
var enddt2 = GetDateObj(dt2);
|
|
if (startdt1 != null && enddt2 != null) {
|
|
if (operator == "<")
|
|
return startdt1 < enddt2 ? true : false;
|
|
else if (operator == ">")
|
|
return startdt1 > enddt2 ? true : false;
|
|
else if (operator == "=")
|
|
return startdt1 == enddt2 ? true : false;
|
|
}
|
|
}
|
|
return "";
|
|
}
|
|
|
|
function SubtractDate(dt1, dt2, operator) {
|
|
dt1 = ReplaceSpecialCharInDate(dt1);
|
|
dt2 = ReplaceSpecialCharInDate(dt2);
|
|
var days = 0;
|
|
if (dt1 != "" && dt2 != "") {
|
|
var startdt1 = GetDateObj(dt1);
|
|
var enddt2 = GetDateObj(dt2);
|
|
if (startdt1 != null && enddt2 != null) {
|
|
var diff = new Date(startdt1 - enddt2)
|
|
days = diff / 1000 / 60 / 60 / 24;
|
|
}
|
|
}
|
|
return days;
|
|
}
|
|
|
|
function CheckEmail(email) {
|
|
|
|
var emailReg = "^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+.[a-zA-Z]{2,4}$";
|
|
var regex = new RegExp(emailReg);
|
|
var output = regex.test(email);
|
|
if (!output)
|
|
showAlertDialog("warning", 2039, "client");
|
|
else
|
|
return output;
|
|
}
|
|
|
|
|
|
function Total(fldName) {
|
|
var sum = 0;
|
|
var dcno = 0;
|
|
dcno = GetDcNo(fldName);
|
|
if (parseInt(dcno, 10) > 0) {
|
|
var rcount = parseInt(GetDcRowCount(dcno), 10);
|
|
for (var nt = 1; nt <= rcount; nt++) {
|
|
var rowNo = GetClientRowNo(nt, dcno);
|
|
expFldname = fldName + rowNo + "F" + dcno;
|
|
if ($("#" + expFldname).hasClass("labelInp") || $("textarea[id='EDIT~" + expFldname + "']").length === 1 || $("#" + expFldname).length === 1) {
|
|
if (document.getElementById(expFldname)) {
|
|
var val = 0;
|
|
if (document.getElementById(expFldname).value != "" && document.getElementById(expFldname).value != "***") {
|
|
if ((document.getElementById(expFldname).value.length > 3) && (document.getElementById(expFldname).value.indexOf(',') != -1))
|
|
val = removeCommas(document.getElementById(expFldname).value);
|
|
else
|
|
val = document.getElementById(expFldname).value;
|
|
if (val != "")
|
|
sum += parseFloat(val);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return sum;
|
|
}
|
|
|
|
|
|
function CurrAmtWord(val1, val2, val3, val4, val5) {
|
|
if (typeof val1 == "undefined") {
|
|
return;
|
|
}
|
|
val1 = val1 + '';
|
|
var valSplit = val1.split('.');
|
|
var amt = curtoWords(valSplit[0]);
|
|
if (valSplit[1] != undefined) {
|
|
if (valSplit[1].length < val5) {
|
|
for (var j = valSplit[1].length; j < val5; j++)
|
|
valSplit[1] = valSplit[1] + "0";
|
|
}
|
|
var amtdec = curtoWords(parseInt(valSplit[1], 10));
|
|
if (amt != "")
|
|
return val2 + "" + amt + ' and ' + val3 + ' ' + amtdec + ' only';
|
|
else
|
|
return val3 + ' ' + amtdec + ' only';
|
|
}
|
|
else {
|
|
return val2 + "" + amt + ' only';
|
|
}
|
|
}
|
|
|
|
function str(param) {
|
|
|
|
if (isNaN(param)) {
|
|
var fresult = "";
|
|
var fldnm = param + rowno;
|
|
if (document.getElementById(fldnm)) {
|
|
fresult = document.getElementById(fldnm).value;
|
|
}
|
|
|
|
if (fresult != "")
|
|
return fresult;
|
|
}
|
|
}
|
|
|
|
function makedate(dd, mon, yy) {
|
|
dd = PrefixZero(dd);
|
|
mon = PrefixZero(mon);
|
|
var resultDate = "";
|
|
if (dateString == "dd/mm/yyyy")
|
|
resultDate = dd + "/" + mon + "/" + yy;
|
|
else
|
|
resultDate = mon + "/" + dd + "/" + yy;
|
|
return resultDate;
|
|
}
|
|
|
|
|
|
var dtCh = "/";
|
|
//var minYear = 1900;
|
|
//var maxYear = 2100;
|
|
var curDate = new Date();
|
|
var cYear = curDate.getFullYear();
|
|
var minYear = cYear - 100;
|
|
var maxYear = cYear + 100;
|
|
|
|
function isInteger(s) {
|
|
var i;
|
|
for (i = 0; i < s.length; i++) {
|
|
var c = s.charAt(i);
|
|
if (((c < "0") || (c > "9"))) return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
function stripCharsInBag(s, bag) {
|
|
var i;
|
|
var returnString = "";
|
|
for (i = 0; i < s.length; i++) {
|
|
var c = s.charAt(i);
|
|
if (bag.indexOf(c) == -1) returnString += c;
|
|
}
|
|
return returnString;
|
|
}
|
|
|
|
function daysInFebruary(year) {
|
|
return (((year % 4 == 0) && ((!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28);
|
|
}
|
|
function DaysArray(n) {
|
|
for (var i = 1; i <= n; i++) {
|
|
this[i] = 31
|
|
if (i == 4 || i == 6 || i == 9 || i == 11) { this[i] = 30 }
|
|
if (i == 2) { this[i] = 29 }
|
|
}
|
|
return this
|
|
}
|
|
|
|
function isDate(dtStr) {
|
|
|
|
var errCode = IsValidDate(dtStr);
|
|
if (errCode == 1) {
|
|
showAlertDialog("warning", 2040, "client");
|
|
return false;
|
|
}
|
|
else if (errCode == 2) {
|
|
showAlertDialog("warning", 2041, "client");
|
|
return false;
|
|
}
|
|
else if (errCode == 3) {
|
|
showAlertDialog("warning", 2042, "client");
|
|
return false;
|
|
}
|
|
else if (errCode == 4) {
|
|
showAlertDialog("warning", 2043, "client");
|
|
return false;
|
|
}
|
|
else if (errCode == 5) {
|
|
showAlertDialog("warning", 2044, "client");
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
function SubSumTill(criFld, criFldVal, sumFld, rowNo, prowNo) {
|
|
|
|
if (rowNo == "-1" || prowNo == "-1") return 0;
|
|
var dcno = 0; var sumVal = 0.0;
|
|
dcno = GetDcNo(criFld);
|
|
var subGridRows = GetPopRows(AxActivePDc, prowNo, dcno);
|
|
var popRows = subGridRows.split(",");
|
|
if (subGridRows == "" || popRows.length == 0) return 0;
|
|
var rno = 1;
|
|
while (rno <= rowNo) {
|
|
var actualRow = popRows[rno - 1];
|
|
var criFldname = criFld + actualRow + "F" + dcno;
|
|
var newSumFld = sumFld + actualRow + "F" + dcno;
|
|
var criItemVal = "";
|
|
var newSumFldVal = "";
|
|
criItemVal = GetFieldValue(criFldname);
|
|
newSumFldVal = GetFieldValue(newSumFld);
|
|
if (newSumFldVal != "") {
|
|
newSumFldVal = removeCommas(newSumFldVal);
|
|
sumVal += parseFloat(newSumFldVal);
|
|
}
|
|
rno++;
|
|
}
|
|
return sumVal;
|
|
}
|
|
|
|
function SumTill(criFld, criFldVal, sumFld, rowNo, prowNo) {
|
|
|
|
if (prowNo != undefined) {
|
|
return SubSumTill(criFld, criFldVal, sumFld, rowNo, prowNo);
|
|
}
|
|
|
|
var sumVal = 0.0;
|
|
var dcno = 0;
|
|
dcno = GetDcNo(criFld);
|
|
|
|
var rNo = parseInt(rowNo, 10);
|
|
|
|
var rcount = parseInt(GetDcRowCount(dcno), 10);
|
|
for (var i = 1; i <= rcount; i++) {
|
|
|
|
if (i > rNo) break;
|
|
var newRowNo = GetClientRowNo(i, dcno);
|
|
var criFldname = criFld + newRowNo + "F" + dcno;
|
|
var newSumFld = sumFld + newRowNo + "F" + dcno;
|
|
var criItemVal = "";
|
|
if (document.getElementById(criFldname)) {
|
|
criItemVal = GetFieldValue(criFldname);
|
|
|
|
var rnewNo = rowNo - 1;
|
|
if (criFldVal == "") {
|
|
var criFldparent = criFld + rnewNo + "F" + dcno;
|
|
criFldVal = GetFieldValue(criFldparent);
|
|
}
|
|
|
|
if (criItemVal == criFldVal) {
|
|
var newValue = GetFieldValue(newSumFld);
|
|
if (newValue != "") {
|
|
newValue = removeCommas(newValue);
|
|
sumVal += parseFloat(newValue);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return sumVal;
|
|
}
|
|
|
|
function Sum(criFld, criFldVal, sumFld) {
|
|
var sumVal = 0.0;
|
|
var dcno = 0;
|
|
dcno = GetDcNo(criFld);
|
|
|
|
var rcount = parseInt(GetDcRowCount(dcno), 10);
|
|
for (var i = 1; i <= rcount; i++) {
|
|
var newRowNo = GetClientRowNo(i, dcno);
|
|
var criFldname = criFld + newRowNo + "F" + dcno;
|
|
var newSumFld = sumFld + newRowNo + "F" + dcno;
|
|
var criItemVal = GetFieldValue(criFldname);
|
|
if (criItemVal == criFldVal) {
|
|
var sumFldVal = document.getElementById(newSumFld);
|
|
if (sumFldVal) {
|
|
var sum = GetFieldValue(newSumFld);
|
|
sumFldVal = removeCommas(sum);
|
|
if (sumFldVal != "***")
|
|
sumVal += eval(sumFldVal);
|
|
}
|
|
}
|
|
}
|
|
return sumVal;
|
|
}
|
|
|
|
function AxCeil(n) {
|
|
return Math.ceil(n);
|
|
}
|
|
|
|
function AxFloor(n) {
|
|
return Math.floor(n);
|
|
}
|
|
|
|
|
|
function NetworkDays(st, en, holidays) {
|
|
|
|
var stDate = new GetDateObj(st);
|
|
var enDate = new GetDateObj(en);
|
|
|
|
if (stDate > enDate)
|
|
return -1;
|
|
|
|
var days = 0;
|
|
|
|
while (stDate <= enDate) {
|
|
|
|
if (stDate.getDay() != 0 && stDate.getDay() != 6)
|
|
days++;
|
|
|
|
stDate.setDate(stDate.getDate() + 1);
|
|
}
|
|
|
|
if (!holidays || holidays == undefined || holidays == "")
|
|
holidays = 0;
|
|
|
|
return days - holidays;
|
|
}
|
|
|
|
function Days360(st, en, method) {
|
|
|
|
var stDate = GetDateObj(st);
|
|
var enDate = GetDateObj(en);
|
|
var res = "";
|
|
if (stDate != "" && enDate != "") {
|
|
|
|
if (method) {
|
|
|
|
if (stDate.getDate() == 31)
|
|
stDate.setDate(30);
|
|
|
|
if (enDate.getDate() == 31)
|
|
enDate.setDate(30);
|
|
}
|
|
else {
|
|
var start = new Date(st);
|
|
var lastDate = new Date(start.getFullYear(), start.getMonth() + 1, 0);
|
|
if (stDate.getDate() == lastDate.getDate())
|
|
stDate.setDate(30);
|
|
|
|
if (enDate.getDate() == lastDate.getDate() && stDate.getDate() < 30)
|
|
enDate.setDate(30);
|
|
}
|
|
|
|
res = (((enDate.getFullYear() - stDate.getFullYear()) * 12) + (enDate.getMonth() - stDate.getMonth())) * 30 + enDate.getDate() - stDate.getDate();
|
|
}
|
|
|
|
return res;
|
|
}
|
|
|
|
function GetAllValues(fld, F) {
|
|
|
|
var roles = "";
|
|
var roles1 = "";
|
|
var count = 0;
|
|
var dcno = 0;
|
|
dcno = GetDcNo(fld);
|
|
|
|
var rcount = parseInt(GetDcRowCount(dcno), 10);
|
|
for (var nt = 0; nt <= rcount; nt++) {
|
|
var newprevrow = GetClientRowNo(nt, dcno);
|
|
expFldname = fld + newprevrow + "F" + dcno;
|
|
if (document.getElementById(expFldname)) {
|
|
if (count == 0) {
|
|
roles = document.getElementById(expFldname).value;
|
|
if ((roles != "***") && (roles != "")) {
|
|
var rl = roles.split(',,');
|
|
roles = rl[0].toString();
|
|
count++;
|
|
}
|
|
}
|
|
else {
|
|
roles1 = document.getElementById(expFldname).value;
|
|
if ((roles1 != "***") && (roles1 != "")) {
|
|
var rl = roles1.split(',,');
|
|
roles += "," + rl[0].toString();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return roles;
|
|
}
|
|
|
|
Array.prototype.getMax = function () {
|
|
var max = 10, v, len = this.length, i = 1;
|
|
var indx = 0;
|
|
for (; i < len; ++i)
|
|
if ((typeof (v = this[i]) == 'number' || v != "") && v != "***") {
|
|
max = Math.max(max, v);
|
|
indx = max;
|
|
}
|
|
return indx;
|
|
}
|
|
Array.prototype.getMin = function () {
|
|
var min = 10000000, v, len = this.length, i = 1;
|
|
var indx = 0;
|
|
for (; i < len; ++i)
|
|
if ((typeof (v = this[i]) == 'number' || v != "") && v != "***") {
|
|
min = Math.min(min, v);
|
|
indx = min;
|
|
}
|
|
|
|
return indx;
|
|
}
|
|
|
|
function GetMinValue(fldname) {
|
|
var dcno = 0;
|
|
dcno = GetDcNo(fldname);
|
|
var i = "";
|
|
var rcount = parseInt(GetDcRowCount(dcno), 10);
|
|
var arrValues = new Array();
|
|
for (var nt = 1; nt <= rcount; nt++) {
|
|
var newprevrow = GetClientRowNo(nt, dcno);
|
|
expFldname = fldname + newprevrow + "F" + dcno;
|
|
arrValues[nt] = document.getElementById(expFldname).value;
|
|
}
|
|
i = arrValues.getMin();
|
|
for (var j = 1; j < arrValues.length; j++) {
|
|
if (arrValues[j] == i) {
|
|
i = j;
|
|
break;
|
|
}
|
|
}
|
|
return i;
|
|
}
|
|
|
|
function GetMaxValue(fldname) {
|
|
|
|
var dcno = 0;
|
|
dcno = GetDcNo(fldname);
|
|
var i = "";
|
|
|
|
var rcount = parseInt(GetDcRowCount(dcno), 10);
|
|
var arrValues = new Array();
|
|
|
|
for (var nt = 1; nt <= rcount; nt++) {
|
|
var newprevrow = GetClientRowNo(nt, dcno);
|
|
expFldname = fldname + newprevrow + "F" + dcno;
|
|
arrValues[nt - 1] = document.getElementById(expFldname).value;
|
|
}
|
|
i = Math.max.apply(Math, arrValues);
|
|
for (var j = 1; j < arrValues.length; j++) {
|
|
if (arrValues[j] == i) {
|
|
i = j;
|
|
break;
|
|
}
|
|
}
|
|
return i;
|
|
}
|
|
|
|
function GetRowCount(fldname) {
|
|
var dcno = 0;
|
|
dcno = GetDcNo(fldname);
|
|
var rcnt = 0;
|
|
if (isMobile && !axInlineGridEdit)
|
|
rcnt = (parseInt(GetDcRowCount(dcno), 10)) - 1;
|
|
else
|
|
rcnt = parseInt(GetDcRowCount(dcno), 10);
|
|
return rcnt;
|
|
}
|
|
|
|
function GetGridCellValue(fldname, ActiveRow, isActual) {
|
|
var dcno = 0;
|
|
var fldIndx = ""; var fldType = "";
|
|
fldIndx = GetFieldIndex(fldname);
|
|
fldType = FDataType[fldIndx];
|
|
dcno = GetDcNo(fldname);
|
|
if (!isActual)
|
|
ActiveRow = GetClientRowNo(ActiveRow, dcno);
|
|
var newrow = GetRowNoHelper(ActiveRow);
|
|
if (!IsDcGrid(dcno) && ActiveRow == "1")
|
|
newrow = "000";
|
|
|
|
var newFldName = fldname + newrow + "F" + dcno;
|
|
var newFldVal = "";
|
|
if (newrow != "") {
|
|
if (document.getElementById(newFldName)) {
|
|
newFldVal = $j("#" + newFldName).val();
|
|
if (fldType.toLowerCase() == "numeric")
|
|
newFldVal = removeCommas(newFldVal);
|
|
else
|
|
newFldVal = newFldVal;
|
|
}
|
|
}
|
|
if (newFldVal == "" && fldType.toLowerCase() == "numeric")
|
|
newFldVal = "0";
|
|
|
|
if (fldType.toLowerCase() == "numeric")
|
|
newFldVal = 'n' + newFldVal;
|
|
else
|
|
newFldVal = 's' + newFldVal;
|
|
return newFldVal;
|
|
}
|
|
|
|
|
|
function RegisterVariables(varName, varType, varValue) {
|
|
isEvalGrid = true;
|
|
var isAlreadyFound = false;
|
|
if (varName != "") {
|
|
for (var x = 0; x < varlist.length; x++) {
|
|
if (varlist[x] == varName) {
|
|
valuelist[x] = varValue;
|
|
|
|
isAlreadyFound = true; // the field name is already found and updated.
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (!isAlreadyFound) {
|
|
varlist.push(varName);
|
|
valuelist.push(varValue);
|
|
}
|
|
var isext = false;
|
|
$.each(RegVarFldList, function (key, value) {
|
|
if (value.startsWith(varName + ":")) {
|
|
RegVarFldList[key] = varName + ":" + varType + ":" + varValue;
|
|
isext = true;
|
|
return;
|
|
}
|
|
});
|
|
if (isext == false)
|
|
RegVarFldList.push(varName + ":" + varType + ":" + varValue);
|
|
}
|
|
|
|
return "";
|
|
}
|
|
|
|
|
|
function GetActiveRow(fieldname) {
|
|
|
|
var frameno = 0;
|
|
var actualCurrRno = 0;
|
|
var virtualCurrRno = 0;
|
|
if (fieldname != "") {
|
|
var index = fieldname.toString().lastIndexOf("F");
|
|
if (parseInt(index, 10) != -1) {
|
|
|
|
var fldRowNum = fieldname.toString().substring(0, index);
|
|
frameno = fieldname.toString().substring(index + 1);
|
|
virtualCurrRno = parseInt(fldRowNum.toString().substring(fldRowNum.toString().length - 3), 10);
|
|
for (var prev = virtualCurrRno - 1; prev > 0; prev--) {
|
|
var newprev = GetRowNoHelper(prev);
|
|
var fIndx = fieldname.toString().lastIndexOf("F");
|
|
var fld = fieldname.substring(0, fIndx - 3) + newprev + "F" + frameno;
|
|
|
|
if (document.getElementById(fld)) {
|
|
if (document.getElementById(fld).value != "***") {
|
|
actualCurrRno++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return actualCurrRno;
|
|
}
|
|
|
|
|
|
|
|
function GetRow(fldName, fldValue, activeProw) {
|
|
var fldIndx = "";
|
|
fldIndx = GetFieldIndex(fldName);
|
|
var htmlFldName = "";
|
|
|
|
var frmNo = GetDcNo(fldName);
|
|
|
|
var rowCnt = parseInt(GetDcRowCount(frmNo), 10);
|
|
var i = 0; var newRowNo = "";
|
|
|
|
for (i = 1; i <= rowCnt; i++) {
|
|
|
|
newRowNo = GetClientRowNo(i, frmNo);
|
|
newRowNo = GetRowNoHelper(newRowNo);
|
|
|
|
if (activeProw != undefined) {
|
|
|
|
activeProw = GetClientRowNo(AxActivePRow, AxActivePDc);
|
|
activeProw = activeProw.substring(0, activeProw.indexOf("F"));
|
|
var subGridRows = GetPopRows(AxActivePDc, activeProw, frmNo);
|
|
subGridRows = subGridRows.split(",");
|
|
for (var rCnt = 0; rCnt < subGridRows.length; rCnt++) {
|
|
if (newRowNo == subGridRows[rCnt]) {
|
|
htmlFldName = fldName + newRowNo + "F" + frmNo;
|
|
var fldVal = "";
|
|
fldVal = GetFieldValue(htmlFldName);
|
|
if (fldVal == fldValue)
|
|
return parseInt(newRowNo, 10);
|
|
else
|
|
continue;
|
|
}
|
|
else
|
|
continue;
|
|
}
|
|
}
|
|
else {
|
|
htmlFldName = fldName + newRowNo + "F" + frmNo;
|
|
var fldVal = "";
|
|
fldVal = GetFieldValue(htmlFldName);
|
|
if (fldVal == fldValue) {
|
|
|
|
return GetDbRowNo(parseInt(newRowNo, 10), frmNo);
|
|
}
|
|
else
|
|
continue;
|
|
}
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
function SubTotal(popFldName, parentRowNo) {
|
|
|
|
var popDcNo = GetDcNo(popFldName);
|
|
var totalVal = 0;
|
|
var subGridRows = GetPopRows(AxActivePDc, parentRowNo, popDcNo);
|
|
subGridRows = subGridRows.split(",");
|
|
|
|
for (var i = 0; i < subGridRows.length; i++) {
|
|
var fld = popFldName + subGridRows[i] + "F" + popDcNo;
|
|
totalVal += parseFloat(removeCommas(GetFieldValue(fld)));
|
|
}
|
|
|
|
return totalVal;
|
|
}
|
|
|
|
function GetMod(fld1, fld2) {
|
|
|
|
if (fld2 == 0)
|
|
return 0;
|
|
|
|
return fld1 % fld2;
|
|
}
|
|
|
|
function IsPopGridField(fldName) {
|
|
var fIndx = ""; var pIndx = -1;
|
|
fIndx = fldName.lastIndexOf("F"); var isPopField = false;
|
|
var title = document.title;
|
|
//The popGridDCs array is defined in tstruct.aspx, and if evaluate function is called from iview it should return -1.
|
|
if (title.toLowerCase().indexOf("tstruct") != -1) {
|
|
var FrmNo = fldName.substring(fIndx + 1, fldName.length);
|
|
if (FrmNo != undefined || FrmNo != "") {
|
|
for (var Indx = 0; Indx < PopGridDCs.length; Indx++) {
|
|
if (PopGridDCs[Indx] == FrmNo) {
|
|
pIndx = Indx;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return pIndx;
|
|
}
|
|
|
|
|
|
function GetActiveParentRow(popGridfldName, PIndex) {
|
|
|
|
var fIndex = popGridfldName.lastIndexOf("F");
|
|
var popRowNo = popGridfldName.substring(fIndex - 3, fIndex);
|
|
var popGridDc = popGridfldName.substring(fIndex + 1);
|
|
var parentGridDc = PopParentDCs[PIndex];
|
|
var parentFields = PopParentFlds[PIndex].toString().split(",");
|
|
var pFields = new Array();
|
|
var pValues = new Array();
|
|
var pField = ""; var pValue = "";
|
|
for (var i = 0; i < parentFields.length; i++) {
|
|
pFields[i] = parentFields[i].toString().trim();
|
|
pField = GetSubFieldId("sub" + popGridDc + "_" + parentFields[i].toString(), popRowNo, popGridDc);
|
|
pValue = GetFieldValue(pField);
|
|
pValues[i] = pValue;
|
|
|
|
}
|
|
var frow = "row" + parentGridDc + "temF0";
|
|
var PRcnt = 0; var parentIndex = -1;
|
|
if (document.getElementById(frow)) {
|
|
PRcnt = document.getElementById(frow).value;
|
|
PRcnt = parseInt(PRcnt, 10);
|
|
}
|
|
else
|
|
PRcnt = 2;
|
|
for (var j = 1; j < PRcnt; j++) {
|
|
var found = true;
|
|
var parentRNo = GetRowNoHelper(j);
|
|
for (var pCnt = 0; pCnt < pFields.length; pCnt++) {
|
|
pField = pFields[pCnt] + parentRNo + "F" + parentGridDc;
|
|
pValue = GetFieldValue(pField);
|
|
if (pValue != pValues[pCnt]) {
|
|
found = false;
|
|
break;
|
|
}
|
|
}
|
|
if (found) {
|
|
parentIndex = j;
|
|
break;
|
|
}
|
|
}
|
|
return parentIndex;
|
|
}
|
|
|
|
function RandomNo() {
|
|
var minm = 1000000000;
|
|
var maxm = 9999999999;
|
|
var rnumber = Math.floor(Math.random() * (maxm - minm + 1)) + minm;
|
|
return rnumber;
|
|
}
|
|
|
|
function AxHideControls(sfcFldNames) {
|
|
return "hide~" + sfcFldNames;
|
|
}
|
|
|
|
function AxUnhideControls(sfcFldNames) {
|
|
return "show~" + sfcFldNames;
|
|
}
|
|
|
|
function AxEnableControls(sfcFldNames) {
|
|
return "enable~" + sfcFldNames;
|
|
}
|
|
|
|
function AxDisableControls(sfcFldNames) {
|
|
return "disable~" + sfcFldNames;
|
|
}
|
|
|
|
function AxSetValue(sfcFldNames, sfcFldValue, sfcRowNo) {
|
|
return "setvalue~" + sfcFldNames + "♦" + sfcFldValue + "♦" + sfcRowNo;
|
|
}
|
|
|
|
function AxValueExits(sDcNo, sFldName, tDcNo, tFldName) {
|
|
var isGridDc = IsGridField(sFldName);
|
|
let sFulFldName = "";
|
|
if (isGridDc == false)
|
|
sFulFldName = sFldName + "000F" + sDcNo;
|
|
else {
|
|
var nrno = AxActiveRowNo;
|
|
if (nrno == "")
|
|
nrno = "001";
|
|
sFulFldName = sFldName + nrno + "F" + sDcNo;
|
|
}
|
|
let fldVal = GetFieldValue(sFulFldName);
|
|
let scanRow = "0";
|
|
if (fldVal != "") {
|
|
$("#gridHd" + tDcNo + " tbody tr").each(function (index, el) {
|
|
if (!isMobile && fldVal == $j(this).find('textarea[id^=' + tFldName + ']').val()) {
|
|
scanRow = GetFieldsRowNo($j(this).find('textarea[id^=' + tFldName + ']').attr("id"));
|
|
scanRow = parseInt(scanRow);
|
|
return false;
|
|
}
|
|
else if (isMobile && fldVal == $j(this).find('textarea[id^=gr' + tFldName + ']').val()) {
|
|
scanRow = GetFieldsRowNo($j(this).find('textarea[id^=gr' + tFldName + ']').attr("id"));
|
|
scanRow = parseInt(scanRow);
|
|
return false;
|
|
}
|
|
});
|
|
}
|
|
else
|
|
scanRow = "-1";
|
|
if (AxOldValue == "")
|
|
AxOldValueOnChange = fldVal;
|
|
else
|
|
AxOldValueOnChange = AxOldValue;
|
|
return scanRow;
|
|
}
|
|
|
|
function AxAddRow(sDcNo) {
|
|
return "axaddrow~dc" + sDcNo;
|
|
}
|
|
|
|
function EvalExprSet(exprset) {
|
|
var resVal = "";
|
|
var i = 0, p = 0;
|
|
var s, v, cond, cmd, op;
|
|
if (exprset != "") {
|
|
var cresult = true, skip = false, breakflag = false;
|
|
try {
|
|
var loops = new Array();
|
|
var loopcond = new Array();
|
|
while (i < exprset.length) {
|
|
s = exprset[i];
|
|
cmd = s.trimStart();
|
|
if (s == "" || cmd.startsWith("//")) {
|
|
i++;
|
|
continue;
|
|
}
|
|
op = cmd.split(' ')[0];
|
|
if (breakflag && op.toLowerCase() != 'endloop') {
|
|
i++;
|
|
continue;
|
|
}
|
|
|
|
if (op.toLowerCase() == 'if') {
|
|
cmd = cmd.substr(2);
|
|
cond = cmd.trim();
|
|
cond = "IIF(" + cond + ",{T},{F})";
|
|
var Value = Evaluate("", "", cond, "vexpr");
|
|
Value = Value == "T" ? true : false;
|
|
cresult = Value;
|
|
skip = cresult;
|
|
}
|
|
else if (op.toLowerCase() == 'elseif') {
|
|
if (skip)
|
|
cresult = false;
|
|
else
|
|
cresult = cresult == true ? false : true;
|
|
if (cresult) {
|
|
cmd = cmd.substr(6);
|
|
cond = cmd.trim();
|
|
cond = "IIF(" + cond + ",{T},{F})";
|
|
var Value = Evaluate("", "", cond, "vexpr");
|
|
Value = Value == "T" ? true : false;
|
|
cresult = Value;
|
|
skip = cresult;
|
|
}
|
|
}
|
|
else if (op.toLowerCase() == 'else') {
|
|
if (skip)
|
|
cresult = false;
|
|
else {
|
|
cresult = cresult == true ? false : true;
|
|
skip = cresult;
|
|
}
|
|
}
|
|
else if (op.toLowerCase() == 'end') {
|
|
cresult = true;
|
|
skip = false;
|
|
}
|
|
else if (op.toLowerCase() == 'endloop') {
|
|
if (breakflag) {
|
|
breakflag = false;
|
|
loopcond.splice(0, loops.length);
|
|
loops.splice(0, loops.length);
|
|
}
|
|
else {
|
|
cond = loopcond[loops.length - 1];
|
|
cond = "IIF(" + cond + ",{T},{F})";
|
|
var Value = Evaluate("", "", cond, "vexpr");
|
|
Value = Value == "T" ? true : false;
|
|
if (Value) {
|
|
i = loops[loops.length - 1];
|
|
}
|
|
else {
|
|
loopcond.splice(0, loops.length);
|
|
loops.splice(0, loops.length);
|
|
}
|
|
}
|
|
}
|
|
else if (op.toLowerCase() == "while") {
|
|
cmd = cmd.substr(5);
|
|
cond = cmd.trim();
|
|
var expcond = "IIF(" + cond + ",{T},{F})";
|
|
var Value = Evaluate("", "", expcond, "vexpr");
|
|
Value = Value == "T" ? true : false;
|
|
if (Value) {
|
|
loops.push(parseInt(i));
|
|
loopcond.push(cond);
|
|
}
|
|
else {
|
|
breakflag = true;
|
|
cresult = cresult == true ? false : true;
|
|
skip = false;
|
|
}
|
|
}
|
|
else if (op.toLowerCase() == "break") {
|
|
breakflag = true;
|
|
cresult = true;
|
|
skip = false;
|
|
}
|
|
else if (cresult) {
|
|
p = s.indexOf(":=");
|
|
v = '';
|
|
if (p > -1) {
|
|
v = s.substr(0, p);//s.substr(1, p - 1);
|
|
v = v.trim();
|
|
s = s.substr(p + 2, s.length);
|
|
}
|
|
if (v != '') {
|
|
var Value = Evaluate("", "", s, "vexpr");
|
|
var rtype = "n";
|
|
if (isNaN(Value))
|
|
rtype = "c";
|
|
var registervar = "regvar({" + v + "},{" + rtype + "},{" + Value + "})";
|
|
Evaluate("", "", registervar, "vexpr");
|
|
}
|
|
else {
|
|
resVal = Evaluate("", "", s, "vexpr");
|
|
break;
|
|
}
|
|
}
|
|
i++;
|
|
}
|
|
} catch (ex) { }
|
|
}
|
|
return resVal;
|
|
}
|
|
|
|
function LoadForm(Transid, Params, DisplayMode, RefreshOnClose)
|
|
{
|
|
Params=ParseParamValues(Params);
|
|
return "LoadForm♠"+Transid+"♠"+Params+"♠"+DisplayMode+"♠"+RefreshOnClose;
|
|
}
|
|
|
|
function LoadFormAndData(Transid, Params, DisplayMode, RefreshOnClose)
|
|
{
|
|
Params=ParseParamValues(Params);
|
|
return "LoadFormAndData♠"+Transid+"♠"+Params+"♠"+DisplayMode+"♠"+RefreshOnClose;
|
|
}
|
|
|
|
function LoadIView(Ivname, Params, DisplayMode, RefreshOnClose)
|
|
{
|
|
Params=ParseParamValues(Params);
|
|
return "LoadIView♠"+Ivname+"♠"+Params+"♠"+DisplayMode+"♠"+RefreshOnClose;
|
|
}
|
|
|
|
function LoadPage(PageId, Params, DisplayMode, RefreshOnClose)
|
|
{
|
|
Params=ParseParamValues(Params);
|
|
return "LoadPage"+PageId+"♠"+Params+"♠"+DisplayMode+"♠"+RefreshOnClose;
|
|
}
|
|
|
|
function OpenPage(PageId, Params, DisplayMode, RefreshOnClose)
|
|
{
|
|
Params=ParseParamValues(Params);
|
|
return "OpenPage♠"+PageId+"♠"+Params+"♠"+DisplayMode+"♠"+RefreshOnClose;
|
|
}
|
|
|
|
function ParseParamValues(Params) {
|
|
var ParamValue = Params.replace(/~/g, "♦");
|
|
if (ParamValue != "") {
|
|
if (ParamValue.indexOf(":") > -1) {
|
|
let repParamVal = "";
|
|
var paramsList = ParamValue.split('♦');
|
|
paramsList.forEach(item => {
|
|
repParamVal += item.split("=")[0];
|
|
let srFldName = item.split("=")[1];
|
|
srFldName = srFldName.substring(1);
|
|
var fldInd = GetFieldIndex(srFldName);
|
|
if (fldInd > -1) {
|
|
let thisFldVal = "";
|
|
var thisDc = GetDcNo(srFldName);
|
|
if (IsDcGrid(thisDc))
|
|
thisFldVal = GetFieldValue(srFldName + "001F" + thisDc);
|
|
else
|
|
thisFldVal = GetFieldValue(srFldName + "000F" + thisDc);
|
|
repParamVal += "=" + thisFldVal + ",";
|
|
} else {
|
|
let glbParamVal = Parameters.filter(word => word.startsWith(srFldName + "~"))[0];
|
|
if (typeof glbParamVal != "undefined")
|
|
repParamVal += "=" + glbParamVal.split("~")[1] + ",";
|
|
}
|
|
});
|
|
if (repParamVal != "")
|
|
repParamVal = repParamVal.slice(0, -1)
|
|
return repParamVal;
|
|
} else
|
|
return ParamValue;
|
|
}
|
|
return "";
|
|
} |