1// COPYRIGHT NOTICE 2// ---------------- 3// Copyright (c) 2000-2004. All rights reserved. 4// 5// Any unauthorised copying, reproduction or publishing in any form 6// or manner whatsoever, of either a part of or this entire script, 7// is strictly prohibited and will constitute an infringement of this 8// copyright. 9 10/*-------------------- INTERNATIONALIZATION - NUMERIC --------------------*/ 11var jSVClocid=1; 12var jSVCnumformat; 13var jSVCdtformat="dd/mm/yyyy"; 14var jSVCtmformat="HH:mm"; 15var jSVCloctmz; 16//var jSVCapptmz=8; // assume our DB server GMT+8! 17if(typeof(request)!=='undefined') 18 var jSVCapptmz = ( request.apptmz ? request.apptmz : 8.0 ); // It is now configurable and retrieved from settoken.cfm 19else 20 var jSVCapptmz=8; 21var jSVClgid=0; // current language ID 22var svcmain_vars = {}; 23var jSVCCanvas = JSVCCanvasSupported(); 24 25/* Lisa note : only affects non ie browsers. */ 26// mozXPath [http://km0ti0n.blunted.co.uk/mozxpath/] [email protected] 27// Code licensed under Creative Commons Attribution-ShareAlike License 28// http://creativecommons.org/licenses/by-sa/2.5/ 29if( document.implementation.hasFeature("XPath", "3.0") ){ 30 if( typeof XMLDocument == "undefined" ){ XMLDocument = Document; } 31 XMLDocument.prototype.selectNodes = function(cXPathString, xNode){ 32 if( !xNode ) { xNode = this; } 33 var oNSResolver = this.createNSResolver(this.documentElement) 34 var aItems = this.evaluate(cXPathString, xNode, oNSResolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null) 35 var aResult = []; 36 for( var i = 0; i < aItems.snapshotLength; i++){aResult[i] = aItems.snapshotItem(i); } 37 return aResult; 38 } 39 XMLDocument.prototype.selectSingleNode = function(cXPathString, xNode){ 40 if( !xNode ) { xNode = this; } 41 var xItems = this.selectNodes(cXPathString, xNode); 42 if( xItems.length > 0 ){return xItems[0]; } 43 else{return null; } 44 } 45 Element.prototype.selectNodes = function(cXPathString){ 46 if(this.ownerDocument.selectNodes){ return this.ownerDocument.selectNodes(cXPathString, this);} 47 else{throw "For XML Elements Only";} 48 } 49 Element.prototype.selectSingleNode = function(cXPathString){ 50 if(this.ownerDocument.selectSingleNode){return this.ownerDocument.selectSingleNode(cXPathString, this); } 51 else{throw "For XML Elements Only";} 52 } 53} 54else { 55 if( typeof XMLDocument != "undefined" ) //{ XMLDocument = new ActiveXObject("Msxml2.DOMDocument").prototype; } 56 { 57 XMLDocument.prototype.selectNodes = function(cXPathString, xNode){ 58 if( !xNode ) { xNode = this; } 59 var pathNodes = cXPathString.split('/'); 60 var tmpNode = xNode; 61 var tmpNodes = []; 62 for (var x = 0; x < pathNodes.length; x ++) { 63 tmpNodes = tmpNode.getElementsByTagName(pathNodes[x]); 64 if (x != pathNodes.length - 1) tmpNode = tmpNodes[0]; 65 } 66 return tmpNodes; 67 } 68 XMLDocument.prototype.selectSingleNode = function(cXPathString, xNode){ 69 if( !xNode ) { xNode = this; } 70 var xItems = this.selectNodes(cXPathString, xNode); 71 if( xItems.length > 0 ){return xItems[0]; } 72 else{return null; } 73 } 74 75 Element.prototype.selectNodes = function(cXPathString){ 76 if(this.ownerDocument.selectNodes){ return this.ownerDocument.selectNodes(cXPathString, this);} 77 else{throw "For XML Elements Only";} 78 } 79 Element.prototype.selectSingleNode = function(cXPathString){ 80 if(this.ownerDocument.selectSingleNode){return this.ownerDocument.selectSingleNode(cXPathString, this); } 81 else{throw "For XML Elements Only";} 82 } 83 } 84} 85 86function JSVCSetLocale(locid,numformat,dtformat,tmformat,loctmz) 87{ 88 if(locid!=null) 89 jSVClocid=locid; 90 if(numformat!=null) 91 jSVCnumformat=numformat; 92 if(dtformat==null) 93 { if(locid==10) 94 jSVCdtformat="mm/dd/yyyy"; 95 } 96 else 97 jSVCdtformat=dtformat; 98 if(tmformat!=null) 99 jSVCtmformat=tmformat; 100 if(loctmz!=null) 101 jSVCloctmz=loctmz; 102} 103function JSVCGetNumFormat(locid) 104{ 105 var arr; 106 var RE; 107 var strnodec; 108 var tmp, tmp2, strsep; 109 var dpsym, strdp; 110 111 if(jSVCnumformat!=null) 112 return jSVCnumformat; 113 if(locid==null) 114 locid=jSVClocid; 115 switch(locid) 116 { 117 case 4:return ("-|.|2|,|2,3".split("|"));break; // Indian numeric format 118// default:return ("-|.|0|,|3".split("|")); // Indonesian numeric format 119 120 //case 7:return ("-|.|0|,|3".split("|"));break; // Indonesian numeric format 121 //default:return ("-|.|2|,|3".split("|")); // Default numeric format 122 default: 123 if(request.CurrencyFormat != undefined) 124 { 125 tmp = (request.CurrencyFormat).match(/\D/gi); 126 RE = new RegExp('\\' + tmp[tmp.length - 1], "gi"); 127 tmp2 = (request.CurrencyFormat).search(RE); 128 tmp = tmp.join(''); 129 if(tmp.match(/^(\D)\1*[^\1]$/gi).length > 0) 130 { 131 if(tmp.charAt(0) != tmp.charAt(tmp.length - 1)) 132 { 133 dpsym = tmp.charAt(tmp.length - 1); 134 strdp = request.CurrencyFormat; 135 136 //remove 0 after decimal point to get true decimal point (.9900 -> .99) 137 if( strdp.indexOf(dpsym) >= 0 ) 138 strdp = strdp.substring(0, strdp.indexOf(dpsym)) + dpsym + strdp.substring(strdp.indexOf(dpsym)+1, strdp.length).replace(/0/g,""); 139 140 arr = "-|" + tmp.charAt(tmp.length - 1) + "|" + (strdp.length - tmp2 - 1); 141 142 // displayed decimal point 143 ddp = request.CurrencyFormat.length - tmp2 - 1; 144 } 145 else 146 { 147 arr = "-|.|0"; 148 ddp = "0"; 149 } 150 151 if(tmp.length > 0) 152 { 153 // building the 4th item in the array (separator symbol) 154 arr = arr + "|" + tmp.charAt(0);
155 156 // building the 5th item in the array (separator pattern) 157 if(tmp2 > 0 && tmp.charAt(0) != tmp.charAt(tmp.length - 1)) 158 strnodec = (request.CurrencyFormat).substr(0, tmp2); 159 else 160 strnodec = request.CurrencyFormat; 161 162 strsep = ""; 163 while (strnodec.length > 0) 164 { 165 if (strnodec.substring(0, strnodec.indexOf(tmp.charAt(0))).length != strnodec.substring(strnodec.lastIndexOf(tmp.charAt(0)) + 1).length) 166 { 167 strsep = "," + strnodec.substring(strnodec.lastIndexOf(tmp.charAt(0)) + 1).length.toString() + strsep; 168 strnodec = strnodec.substr(0, strnodec.lastIndexOf(tmp.charAt(0))); 169 } 170 else 171 { 172 strsep = strnodec.substring(0, strnodec.indexOf(tmp.charAt(0))).length.toString() + strsep; 173 strnodec = ""; 174 } 175 } 176 arr = arr + "|" + strsep; 177 } 178 else 179 arr = arr + "|0|0"; 180 181 // build the 6th item in the array - displayed decimal places(HKTIX1) 182 arr = arr + "|" + ddp; 183 184 arr = arr.split("|"); 185 } 186 else 187 arr = "-|.|2|,|3|2".split("|"); 188 189 } 190 else 191 arr = "-|.|2|,|3|2".split("|"); // Default numeric format 192 193 return arr; 194 break; 195 } 196 // Return array: Negative Symbol,Decimal Symbol,Default decimal-places for currency,Separator Symbol,Separator Pattern,displayed decimal places(HKTIX1) 197} 198function JSVCNumLOC(val,maxno,minno,decplace,decsymbol,separator,mode,currencyformat,roundup,roundthousand) 199{ // Mode: 0/null: If exceed, delete, 1: If breach, take min/max 200 var fl,obj,str; 201 if(typeof(val)=="object" && val){obj=val;val=val.value;} 202 if(minno==null)minno=0; 203 if(maxno==null){ 204 if (currencyformat != null){ 205 maxno=parseFloat(currencyformat.replace(/,/g, '')); 206 } 207 else{ 208 maxno=9999999999999; // max 13 digits #25165 (Edwin) 209 } 210 } 211 if(isNaN(maxno)) 212 try {maxno=eval(maxno)} catch(e) {}; 213 if(isNaN(minno)) 214 try {minno=eval(minno)} catch(e) {}; 215 if(maxno<minno){fl=minno;minno=maxno;maxno=fl;} 216 if(val==null)val=""; 217 fl=JSVCNumLOCtoDB(val,decsymbol,separator,1); 218 // Perform Rounding 219 if(fl!=null&&val!=""&&mode==1) 220 if(fl<minno)fl=minno 221 else if(fl>maxno)fl=maxno; 222 if(fl==null || fl<minno || fl>maxno) 223 str="" 224 else 225 str=JSVCNumDBtoLOC(fl,decplace,decsymbol,separator,currencyformat,roundup,roundthousand); 226 if(obj!=null){obj.value=str;DoReq(obj);} 227 return str; 228} 229function JSVCNumYear(val,maxno,minno) 230{ 231 var obj,val2; 232 if(typeof(val)=="object") 233 { obj=val; 234 val=val.value; 235 } 236 val=parseInt(val); 237 if(val<40 && val>=0) 238 val=val+2000 239 else if(val>=40 && val<100) 240 val=val+1900; 241 if(val>0) 242 { if(minno==null)minno=1920; 243 if(maxno==null)maxno=2100; 244 if(maxno<minno){val2=minno;minno=maxno;maxno=val2;} 245 if(val<minno || val>maxno) 246 val=0; 247 } 248 if(val>0) 249 { if(obj!=null){obj.value=val.toString();DoReq(obj);} 250 return val; 251 } else 252 { if(obj!=null){obj.value="";DoReq(obj);} 253 return null; 254 } 255} 256function JSVCNum(fl,decplace,decsymbol,separator) 257{ 258 return JSVCNumDBtoLOC(fl,decplace,decsymbol,separator); 259} 260//KY : Currency format for handling multiple currency in one page 261function JSVCNumDBtoLOC(fl,decplace,decsymbol,separator,currencyformat,roundup,roundthousand) 262{ 263 var neg,intstr,prefix,postfix,valstd,nformat,curspace,sepspace,decfixed; 264 neg=""; 265 if(fl==null) 266 return "" 267 else 268 { 269 if(typeof(fl)!="number") 270 fl=parseFloat(fl); 271 if(isNaN(fl)) 272 return ""; 273 } 274 //replace the currency format with the passed in one 275 if(currencyformat!=null){ 276 var currformat=request.CurrencyFormat; 277 request.CurrencyFormat=currencyformat; 278 jSVCnumformat=null; 279 } 280 nformat=JSVCGetNumFormat(); 281 if(decplace==null) 282 decplace=nformat[2]; 283 else 284 decfixed=decplace; 285 286 // Handle decimals 287 if(decplace>0) 288 { 289 if (roundup==1) 290 fl=Math.ceil(parseFloat(fl*Math.pow(10,decplace)).toFixed(decplace))/Math.pow(10,decplace); 291 else 292 fl=Math.round(parseFloat(fl*Math.pow(10,decplace)).toFixed(decplace))/Math.pow(10,decplace); 293 if (roundthousand==1) 294 fl=Math.ceil(fl/1000)*1000; 295 if(fl<0) 296 { 297 fl=-fl; 298 neg="-"; 299 } 300 if (fl.toString().indexOf("e")>=0) 301 fl = expToStr(fl); 302 valstd=fl.toString().split("."); 303 if(valstd.length==1) 304 valstd[1]="";
305 while((valstd[1].length)<decplace) 306 valstd[1]=valstd[1]+"0"; 307 if(decsymbol==null) 308 decsymbol=nformat[1]; 309 postfix=decsymbol+valstd[1]; 310 intstr=valstd[0]; 311 if(nformat.length >= 6 && nformat[5] > 0 && decfixed == null) 312 { 313 postfixlendiff = nformat[5] - (postfix.length - nformat[1].length); 314 postfix = postfix + (postfixlendiff>0? JSVCRepeatStr("0",postfixlendiff) : ""); 315 } 316 } else 317 { 318 if (roundup==1) 319 fl=Math.ceil(fl); 320 else 321 fl=Math.round(fl); 322 if (roundthousand==1) 323 fl=Math.ceil(fl/1000)*1000; 324 if(fl<0) 325 { 326 fl=-fl; 327 neg="-"; 328 } 329 intstr=fl.toString(); 330 postfix=""; 331 if(nformat.length >= 6 && nformat[5] > 0 && decfixed == null) 332 postfix = nformat[1] + JSVCRepeatStr("0",nformat[5]); 333 } 334 // Add separators 335 if(separator==null) 336 separator=nformat[3]; 337 if (separator.length > 0 && nformat[4]!=null) { 338 nformat[4]=nformat[4].toString(); 339 prefix = ""; 340 sepspace = nformat[4].split(","); 341 curspace = sepspace.pop(); 342 while (intstr.length > 0) { 343 if (intstr.length > curspace) { 344 prefix = separator + intstr.slice(intstr.length - curspace) + prefix; 345 intstr = intstr.substring(0, intstr.length - curspace); 346 if (sepspace.length > 0) 347 curspace = sepspace.pop(); 348 } 349 else { 350 prefix = intstr + prefix; 351 intstr = ""; 352 } 353 } 354 } 355 else { 356 prefix = intstr; 357 } 358 //repopulate the original currency format 359 if(currencyformat!=null){ 360 request.CurrencyFormat=currformat; 361 jSVCnumformat=null; 362 JSVCGetNumFormat(); 363 } 364 return neg+prefix+postfix; 365} 366function JSVCNumLOCtoDB(val,decsymbol,separator,returnblank) 367{ 368 var nformat,fl; 369 370 if(val==null || (val=="" && typeof val == 'string')) 371 return ((returnblank>0)?null:new Number(0)); 372 nformat=JSVCGetNumFormat(); 373 if(separator==null) 374 separator=nformat[3]; 375 val=val.toString(); 376 if(separator!="") 377 while(val.indexOf(separator)>=0) 378 val=val.replace(separator,""); 379 if(decsymbol==null) 380 decsymbol=nformat[1]; 381 if(decsymbol!=".") 382 val=val.replace(decsymbol,"."); 383 fl=parseFloat(val); 384 if(isNaN(fl)) 385 return ((returnblank>0)?null:new Number(0)); 386 return fl; 387} 388function JSVC2DP(val,maxno,minno) 389{ 390 return JSVCNumLOC(val,maxno,minno,2); 391} 392function JSVC1DP(val,maxno,minno) 393{ 394 return JSVCNumLOC(val,maxno,minno,1); 395} 396function JSVCInt(val,maxno,minno) 397{ 398 return JSVCNumLOC(val,maxno,minno,0); 399} 400function JSVCCurr(val,maxno,minno,currencyformat,roundup,roundthousand,separator) 401{ 402 return JSVCNumLOC(val,maxno,minno,null,null,separator,null,currencyformat,roundup,roundthousand); 403} 404function expToStr(exp) { 405 var arr = new Array(),exponent,precision=0; 406 arr = exp.toString().split('e'); 407 if(arr.length==2) { 408 exponent = Math.abs(arr[1]); 409 precision = new Number(exponent); 410 arr = arr[0].split('.'); 411 if(arr.length==2) 412 precision += arr[1].length; 413 return exp.toFixed(precision); 414 } else 415 return exp.toString(); 416} 417function ObjText(obj) 418{ 419 var maxchar=obj.getAttribute("MAXCHAR"); 420 if(maxchar!=null && maxchar!="") 421 { 422 maxchar=parseInt(maxchar); 423 if (obj.value.length>maxchar) 424 { 425 var varname=JSVCVarNameSet("varitem",obj,true); 426 SVCalert(JSVClang("You have entered a total of "+"{0}"+" characters, which is greater than the maximum allowed ("+"{1}"+" characters). Please shorten your description/comment.",5004,0,obj.value.length,maxchar),null,null,"JSVCDoFocus(JSVCVarNameGet(\""+varname+"\"));"); 427 } 428 } 429 DoReq(obj); 430} 431function JSVCDOBDate(yr,eoy,dtformat,base,day) { 432 var dt = new Date(), baseyr = sysdt.getFullYear(), baseobj, basemonth = sysdt.getMonth(), baseday = sysdt.getDate(), tmpdt; 433 if(base!=null) 434 { 435 baseobj = document.getElementById(base); 436 if(baseobj && baseobj.value != "") 437 { 438 tmpdt=CalParseDate(baseobj.value,dtformat); 439 baseyr=tmpdt.getFullYear(); 440 basemonth=tmpdt.getMonth(); 441 baseday=tmpdt.getDate(); 442 } 443 } 444 if(dtformat=="" || dtformat==null) 445 dtformat=jSVCdtformat; 446 if (yr==null) return ""; 447 if (eoy==null) eay=0; 448 if (day==null) day=0; 449 if (eoy==0) 450 return new Date(baseyr-yr, 0, 1); 451 else if (eoy==-1) 452 return new Date(baseyr-yr, basemonth, baseday-day); 453 else
454 return new Date(baseyr-yr, 11, 31); 455} 456/*-------------------- INTERNATIONALIZATION - DATES and CALENDAR --------------------*/ 457function JSVCdtDBtoLOC(db,locid,dtformat,tmformat,shiftsecs) { 458 if(db==null||db=="") 459 return ""; 460 if(db.constructor==String) { 461 var dt; 462 dt=new Date(db); // 1) parsing as client PC's locale format? 463 if(isNaN(dt)) { 464 dt=new Date(); 465 dt.setISO8601(db); // 2) parsing as ISO standard format 466 } 467 db=dt; 468 } 469 if(db.constructor!=Date) 470 return ""; 471 if(locid==null) 472 locid=jSVClocid; 473 if(dtformat==null) 474 dtformat=jSVCdtformat; 475 if(tmformat==null) 476 tmformat=""; 477 if(tmformat==""&&dtformat=="") 478 return ""; 479 if(shiftsecs==null) 480 shiftsecs=(jSVCloctmz-jSVCapptmz)*60*60; 481 else 482 shiftsecs=(jSVCloctmz-jSVCapptmz)*60*60+shiftsecs; 483 if(shiftsecs!=0) 484 db=db.add("s",shiftsecs); 485 if(tmformat=="") { 486 return db.DateFormat(dtformat); 487 } 488 else { 489 if(dtformat=="") 490 return db.TimeFormat(tmformat); 491 else 492 return db.DateFormat(dtformat) + " " + db.TimeFormat(tmformat); 493 } 494} 495function ObjTime12(obj) { 496 var result = false, m; 497 var re = /^\s*([0]?\d|1[0-2]):?([0-5]\d)?\s*$/; /* from 0:00 til 23:59 */ 498 var re12 = /^\s*(12):?([0-5]\d)?\s*$/; /* 12:00 will be converted to 00:00 */ 499 if(obj!=null && obj.value!='') { 500 if((m = obj.value.match(re12))) { 501 result = (m[1].length == 2 ? "" : "0") + "00:" + (m[2] || "00"); 502 obj.value=result; 503 } 504 else if ((m = obj.value.match(re))) { 505 result = (m[1].length == 2 ? "" : "0") + m[1] + ":" + (m[2] || "00"); 506 obj.value=result; 507 } 508 else { 509 obj.value=''; 510 //alert(JSVClang("Please use the 24-hour clock format (HH:MM).",25733)); 511 } 512 } 513 try { DoReq(obj); } catch(e) {} 514} 515function ObjTime24(obj) { 516 var result = false, m; 517 var re = /^\s*([01]?\d|2[0-3])[:|\.]?([0-5]\d)?\s*$/; /* from 0:00 til 23:59 *//*Sue 14/11/2018 #27299 : can accept . or : as delimiter*/ 518 var re24 = /^\s*(24)[:|\.]?([0-5]\d)?\s*$/; /* 24:00 will be converted to 00:00 */ 519 if(obj!=null && obj.value!='') { 520 if ((m = obj.value.match(re))) { 521 result = (m[1].length == 2 ? "" : "0") + m[1] + ":" + (m[2] || "00"); 522 obj.value=result; 523 } 524 else if((m = obj.value.match(re24))) { 525 result = (m[1].length == 2 ? "" : "0") + "00:" + (m[2] || "00"); 526 obj.value=result; 527 } 528 else { 529 obj.value=''; 530 //alert(JSVClang("Please use the 24-hour clock format (HH:MM).",25733)); 531 } 532 } 533 try { DoReq(obj); } catch(e) {} 534 return (obj!=null&&obj.value!=''?obj.value:null); 535} 536function ObjDate(obj,doNotPrompt) 537{ 538 var dtformat,dt,dtmin,dtmax,sid; 539 dtformat=obj.getAttribute("DTFORMAT"); 540 if(dtformat=="" || dtformat==null) 541 dtformat=jSVCdtformat; 542 if(doNotPrompt==null) 543 doNotPrompt=obj.getAttribute("DTNOTPROMPT"); 544 dt=CalParseDate(obj.value,dtformat); 545 if(dt!=null) 546 if(CalCheckRange(obj,dt,dtformat,doNotPrompt)!=null) 547 dt=null; 548 obj.value=(dt==null?"":CalConstructDate(dt.getDate(),dt.getMonth(),dt.getFullYear(),dtformat)); 549 if(obj.getAttribute("MRMOBJ")&&obj.getAttribute("MRMOBJ")=="CALDATE_BUD"){ 550 sid=obj.name; 551 if(sid==null || sid=="") 552 sid=obj.id; 553 if(sid!=null && sid!="" && document.getElementById(sid+"_buddhist")){ 554 CalConvertBuddhist(obj,document.getElementById(sid+"_buddhist"),1); 555 } 556 } 557 try { DoReq(obj); } catch(e) {} 558 return dt; 559} 560function CalConstructFromDate(dt,dtformat) 561{ 562 if(dtformat=="" || dtformat==null) 563 dtformat=jSVCdtformat; 564 return CalConstructDate(dt.getDate(),dt.getMonth(),dt.getFullYear(),dtformat,dt.getHours(),dt.getMinutes(),dt.getSeconds()); 565} 566function CalConstructDate(d,m,y,sTmp,hr,mi,sc) 567{ 568 var mthName = new Array(JSVClang("January",1681),JSVClang("February",1682),JSVClang("March",1683),JSVClang("April",1684),JSVClang("May",1685),JSVClang("June",1686),JSVClang("July",1687),JSVClang("August",1688),JSVClang("September",1689),JSVClang("October",1690),JSVClang("November",1691),JSVClang("December",1692)); 569 sTmp = sTmp.replace ("dd","<e>"); 570 sTmp = sTmp.replace ("d","<d>"); 571 sTmp = sTmp.replace ("<e>",(d<10)? '0'+d :d); 572 sTmp = sTmp.replace ("<d>",d); 573 sTmp = sTmp.replace ("mmm","<o>"); 574 sTmp = sTmp.replace ("mm","<n>"); 575 sTmp = sTmp.replace ("m","<m>"); 576 sTmp = sTmp.replace ("<m>", (m+1)); 577 sTmp = sTmp.replace ("<n>", ((m+1)<10)? '0'+(m+1) :(m+1)); 578 sTmp = sTmp.replace ("<o>",mthName[m]); 579 if(hr!="") sTmp = sTmp.replace("hh",(hr<10?'0':"")+hr); 580 if(mi!="") sTmp = sTmp.replace("nn",(mi<10?'0':"")+mi); 581 if(sc!="") sTmp = sTmp.replace("ss",(sc<10?'0':"")+sc); 582 return sTmp.replace ("yyyy",y) 583} 584function CalCheckRange(obj,dt,dtformat,doNotPrompt) 585{ 586 var dtmin=obj.getAttribute("DTMIN"); 587 var dtminmsg=obj.getAttribute("DTMINMSG"); 588 var custommsg=obj.getAttribute("CUSTOMMSG"); //#45459 add parameter 'custommsg' 589 var s; 590 if(dtmin!=null) 591 { 592 // Check minimum 593 if((typeof(dtmin))=="string") 594 { 595 if(dtmin.substring(0,3)!="FN:") 596 { 597 dtmin=CalParseDate(dtmin,dtformat); 598 obj.setAttribute("DTMIN",dtmin); 599 } 600 else 601 { 602 dtmin=eval(dtmin.substring(3,dtmin.length)); 603 dtmin=CalParseDate(dtmin.toString(),dtformat); 604 } 605 }
606 if(dtmin!=null && dt<dtmin) 607 { 608 if(!(doNotPrompt>0)){ 609 if(custommsg!=null) { //#45459 add checking parameter 'custommsg' 610 var s=JSVClang(custommsg,0)+" ("+CalConstructDate(dtmin.getDate(),dtmin.getMonth(),dtmin.getFullYear(),dtformat)+")"; 611 } else { 612 var s=JSVClang("Minimum date allowed is ",5013)+CalConstructDate(dtmin.getDate(),dtmin.getMonth(),dtmin.getFullYear(),dtformat)+"."; 613 } 614 if (dtminmsg!=null) 615 s+=dtminmsg; 616 alert(s); 617 //alert(JSVClang("Minimum date allowed is ",5013)+CalConstructDate(dtmin.getDate(),dtmin.getMonth(),dtmin.getFullYear(),dtformat)+"."); 618 } 619 return dtmin; 620 } 621 } 622 dtmax=obj.getAttribute("DTMAX"); 623 dtmaxmsg=obj.getAttribute("DTMAXMSG"); 624 if(dtmax!=null) 625 { 626 if((typeof(dtmax))=="string") 627 { 628 if(dtmax.substring(0,3)!="FN:") 629 { 630 dtmax=CalParseDate(dtmax,dtformat); 631 obj.setAttribute("DTMAX",dtmax); 632 } 633 else 634 { 635 dtmax=eval(dtmax.substring(3,dtmax.length)); 636 dtmax=CalParseDate(dtmax.toString(),dtformat); 637 } 638 } 639 if(dtmax!=null && dt>dtmax) 640 { 641 if(!(doNotPrompt>0)){ 642 var s=JSVClang("Maximum date allowed is ",5014)+CalConstructDate(dtmax.getDate(),dtmax.getMonth(),dtmax.getFullYear(),dtformat)+"."; 643 if (dtmaxmsg!=null) 644 s+=dtmaxmsg; 645 alert(s); 646 } 647 return dtmax; 648 } 649 } 650 return null; 651} 652function CalParseDateTime(val,valt,dtformat) 653{ 654 var dt,pos,dofs,tm,tm_hr,tm_min,tm_sec; 655 if(dtformat=="" || dtformat==null) 656 dtformat=jSVCdtformat; 657 if(valt!=null&&valt!='') { 658 tm=valt.split(":"); 659 if(tm.length>=1) tm_hr=tm[0]; 660 if(tm.length>=2) tm_min=tm[1]; 661 if(tm.length>=3) tm_sec=tm[2]; 662 } 663 664 pos=val.indexOf("{"); 665 if(pos>0) 666 { 667 dofs=parseInt(val.slice(pos+1)); 668 val=val.substring(0,pos); 669 } 670 if(val.toUpperCase()=="TODAY") 671 dt=new Date(sysdt.getFullYear(),sysdt.getMonth(),sysdt.getDate()) 672 else 673 { 674 if(dtformat.substring(0,5)=="dd/mm") { 675 dt=new Date(CalFlipDateMonth(val)+(valt!='' && parseInt(tm_hr)>=0 && parseInt(tm_min)>=0?' '+tm_hr+':'+tm_min+':'+(tm_sec!=null&&tm_sec!=''?tm_sec:'00'):'')); 676 } else 677 dt=new Date(val+(valt!='' && parseInt(tm_hr)>=0 && parseInt(tm_min)>=0?' '+tm_hr+':'+tm_min+':'+(tm_sec!=null&&tm_sec!=''?tm_sec:'00'):'')); 678 } 679 // Parsed correctly? 680 if(dt==null || isNaN(dt)) 681 return null; 682 // If 2-digit year then default to 19/20th century 683 curyear=dt.getFullYear(); 684 if(curyear<1900 || curyear>2999) 685 return null; 686 if(curyear>=1900 && curyear<1970 && (val.indexOf(curyear))<0) 687 dt.setFullYear(curyear+100); 688 if(!isNaN(dofs) && (dofs>0 || dofs<0)) 689 return new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() + dofs); 690 return dt; 691} 692function CalParseDate(val,dtformat) 693{ 694 var dt,pos,dofs,val=val.toString(); 695 if(dtformat=="" || dtformat==null) 696 dtformat=jSVCdtformat; 697 pos=val.indexOf("{"); 698 if(pos>0) 699 { 700 dofs=parseInt(val.slice(pos+1)); 701 val=val.substring(0,pos); 702 } 703 if(val.toUpperCase()=="TODAY") 704 dt=new Date(sysdt.getFullYear(),sysdt.getMonth(),sysdt.getDate()) 705 else 706 { 707 if(dtformat.substring(0,5)=="dd/mm") 708 dt=new Date(CalFlipDateMonth(val)) 709 else 710 dt=new Date(val); 711 } 712 // Parsed correctly? 713 if(dt==null || isNaN(dt)) 714 return null; 715 // If 2-digit year then default to 19/20th century 716 curyear=dt.getFullYear(); 717 if(curyear<1900 || curyear>2999) 718 return null; 719 if(curyear>=1900 && curyear<1970 && (val.indexOf(curyear))<0) 720 dt.setFullYear(curyear+100); 721 if(!isNaN(dofs) && (dofs>0 || dofs<0)) 722 return new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() + dofs); 723 return dt; 724} 725//Flips the date and month portion of a datestring, 1/2/2003 becomes 2/1/2003, can specify separator 726function CalFlipDateMonth(dt,separator) 727{ 728 var datearray,f,s; 729 dt=dt.replace(/[.-]/g,"/"); 730 if(separator==null) separator = "/"; 731 datearray = dt.split(separator); 732 f = datearray[0]; 733 s = datearray[1]; 734 datearray[0] = s; 735 datearray[1] = f; 736 dt = datearray.join(separator); 737 return dt; 738} 739/*-------------------- FORM PROCESSING --------------------*/ 740function IsDisplayed(obj) 741{ 742 while(obj!=null) 743 { 744 if(obj.style.display=="none" || obj.style.display=="NONE") 745 return false; 746 obj=obj.parentElement; 747 } 748 return true; 749} 750 751function FormObjVerify(obj,excRequired) 752{ 753 //excRequired is added to verify everything excluding CHKREQUIRED so the chkrequired wont bypassed other verification 754 if(excRequired!=1) excRequired=0; 755 var val,ver,ival,val2,extinfo; 756 val=""; 757 // Obtain val for all sort of form objs 758 if((obj.type=="radio" || obj.type=="checkbox") && obj.name!="") 759 { 760 if (obj.hasAttribute('name2')) /*HW: obj.name need to be unique due to some reason, thus use name2 for chkrequired checking (SOMPOMED HK #27666)*/
761 var objlist=$("[name2="+obj.getAttribute('name2')+"]"); 762 else 763 var objlist=document.getElementsByName(obj.name); 764 var len=objlist.length; 765 if(len!=null) 766 { 767 for(var t=0;t<len;t++) 768 { if(objlist[t].checked==true) 769 { 770 val=Trim(objlist[t].value); 771 break; 772 } 773 } 774 } else 775 if(objlist.checked==true) 776 val=Trim(obj.value); 777 } else 778 val=Trim(obj.value); 779 780 if(excRequired==0){ 781 // Check if CHKREQUIRED specified 782 ver=obj.getAttribute("CHKREQUIRED"); 783 extinfo=obj.getAttribute("CHKREQUIREDINFO"); 784 if(ver!=null) 785 { 786 if(ver!="") 787 { 788 // Dependency 789 try{ 790 if(eval(ver)==true && val=="") 791 return JSVClang("should be specified.",5005)+(extinfo!=null&&extinfo!=''?'\n'+extinfo:''); 792 } catch(e){} 793 } else 794 { 795 try{ 796 if(val=="") 797 return JSVClang("should be specified.",5005)+(extinfo!=null&&extinfo!=''?'\n'+extinfo:''); 798 } catch(e){} 799 } 800 } 801 } 802 if(val=="") 803 return ""; 804 ver=obj.getAttribute("CHKFORMAT"); 805 if(ver!=null && ver!="") 806 { if(ver.substring(0,3)=="FN:") 807 { 808 val2=eval(ver.substring(3,ver.length)); 809 if(val2!="") 810 return val2; 811 } else 812 { val2=eval(ver); 813 if(val2!="") 814 return val2; 815 } 816 } 817 // Otherwise check if compliant to other flags 818 ival=parseInt(val,10); 819 chkmin=obj.getAttribute("CHKMIN"); 820 chkmax=obj.getAttribute("CHKMAX"); 821 ver=obj.getAttribute("CHKINT"); 822 if (ver!=null) 823 { 824 if(Trim(val)!=ival.toString()) 825 return JSVClang("should be an integer.",5006); 826 if(chkmin!=null && ival<parseInt(ver,10)) 827 return JSVClang("should be more than ",5007)+ver+"."; 828 if(chkmax!=null && ival>parseInt(ver,10)) 829 return JSVClang("should be less than ",5008)+ver+"."; 830 } 831 ver=obj.getAttribute("CHKDATE"); 832 if (ver!=null) 833 { 834 var dt=CalParseDate(val); 835 if(dt!=null) 836 { 837 if(ver=="TODAY" && sysdt!=null && dt>sysdt) 838 return JSVClang("should be a valid date not later than today.",5009); 839 } else 840 return JSVClang("should be a valid date.",5010); 841 } 842 ver=obj.getAttribute("CHKREFORMAT"); 843 if(ver!=null && ver.length>0) { 844 var re=new RegExp(ver,"gi"); 845 if(!re.test(val)) { 846 var sample=obj.getAttribute("CHKRESAMPLE"); 847 if(sample!=null && sample.length>0){ 848 /* Customization for 19592. CHKNAMECUSTOM enables a fully custom message followed by "For Example <chkreformat>"*/ 849 var fullcustom = obj.getAttribute("CHKNAMECUSTOM"); 850 if(fullcustom == 0 || fullcustom == null){ 851 return JSVClang("invalid data. For example: {0}",7644,0,sample); 852 } 853 else if(fullcustom == 1){ 854 return JSVClang("For example: {0}",36232,0,sample); 855 } 856 else if(fullcustom == 2){ 857 return " "; 858 } 859 else if(fullcustom == 3){ 860 return "invalid data. "+sample; 861 } 862 else if(fullcustom == 4){ /*#30569*/ 863 return sample; 864 } 865 } 866 else{ 867 return JSVClang("should be specified.",5005); 868 } 869 } 870 } 871 return ""; 872} 873function JSVCgetInnerText(o){ 874 // Note: This does not really gives 100% compatibility across all browsers. See:http://clubajax.org/plain-text-vs-innertext-vs-textcontent/ 875 if (o == null) 876 return ""; 877 else 878 if (o.nodeName && o.nodeName=="#text" && o.nodeValue && typeof(o.nodeValue)=="string") 879 return o.nodeValue.replace(/\xA0/g," ") 880 if (o.textContent) 881 return o.textContent.replace(/\xA0/g," ") 882 else if (o.innerText) 883 return o.innerText 884 else 885 return ""; 886} 887function ObjVerify(obj,noprompt,showobjname,excRequired) 888{ 889 var nm,ret,objHL=obj; // objHL : object for highlight 890 if(showobjname==null)showobjname=false; 891 892 if(obj.getAttribute('selectize')!=null) { 893 objHL=obj.nextSibling; // skip return so that selectize object can be verified with CHKREQUIRED, marker will be placed the next of the object (temp solution) 894 } else if( ((obj.getAttribute('ui-type')===null || obj.getAttribute('ui-type') ==='') && (obj.disabled || IsDisplayed(obj)==false)) 895 || (obj.getAttribute('ui-type')=="multiselect" && $("#"+obj.id).multiselect("getButton").is(':hidden')) 896 ) 897// if(obj.disabled || IsDisplayed(obj)==false) 898// if(obj.disabled || obj.readOnly || IsDisplayed(obj)==false) 899 return true; 900 ret=FormObjVerify(obj,excRequired); 901 if(ret!="") 902 { 903 nm=obj.getAttribute("CHKNAME"); 904 if(nm==null) 905 { 906 // Check for preceding text first 907 if (obj.previousSibling && obj.previousSibling.nodeType==3) { 908 nm = JSVCgetInnerText(obj.previousSibling); 909 } 910 else 911 nm = null; 912 913 if(nm!=null) 914 { 915 nm=Trim(nm); 916 if(nm.search(/[^\s]/g)<0) 917 nm=""; 918 } 919 if(nm==null||nm=="") 920 { 921 var ptd=obj.parentNode,skip=-1; 922 while(ptd!=null && ptd.tagName!="TD" && ptd.parentNode) //obj is inside multiple div or span within td 923 ptd=ptd.parentNode; 924 if (obj.getAttribute('id')!=null) 925 skip=obj.getAttribute('id').indexOf('ATPOLPROD'); 926 if(ptd.tagName=="TD" && skip==-1) //#21607 skip for EPL ext attr element 927 { 928 ptd=ptd.previousSibling; 929 while(ptd!=null && ptd.tagName!="TD" && ptd.previousSibling) 930 ptd=ptd.previousSibling; 931 if(ptd!=null && ptd.tagName=="TD") 932 nm=JSVCgetInnerText(ptd);//.innerText; 933 } 934 } 935 if(nm==null||nm=="") { //for DIV/Responsive View 936 var ptd=obj.parentNode,skip=-1; 937 while(ptd!=null && ptd.tagName!="DIV" && ptd.parentNode) //obj is inside multiple div or span within div 938 ptd=ptd.parentNode; 939 if (obj.getAttribute('id')!=null) 940 skip=obj.getAttribute('id').indexOf('ATPOLPROD'); 941 if(ptd.tagName=="DIV" && skip==-1) //#21607 skip for EPL ext attr element 942 { 943 ptd=ptd.previousSibling; 944 while(ptd!=null && ptd.tagName!="DIV" && ptd.previousSibling) 945 ptd=ptd.previousSibling; 946 if(ptd!=null && ptd.tagName=="DIV") 947 nm=JSVCgetInnerText(ptd); 948 } 949 } 950 } 951 if(nm==null && showobjname) nm="Value highlighted (" + obj.name +") "; 952 if(nm==null) nm=JSVClang("Value highlighted",29190); 953 if(noprompt>0) 954 return false; 955 var varname=JSVCVarNameSet("varitem",objHL,true);
956 objHL.style.border="2px solid red"; 957 SVCalert(JSVClang("{0} {1}",8649,0,nm,ret),null,null,"JSVCDoFocus(JSVCVarNameGet(\""+varname+"\"));"); 958 /* 959 alert(JSVClang("{0} {1}",8649,0,nm,ret)); 960 obj.focus(); 961 if((obj.tagName=="INPUT" && obj.type=="text") || 962 obj.tagName=="TEXTAREA") 963 obj.select(); 964 */ 965 return false; 966 } 967 return true; 968} 969//same exact function as above but return the obj name instead of true false 970//return field description if the object is not filled in instead of true/false 971function ObjVerifyV2(obj,noprompt,showobjname) 972{ 973 974 var nm,ret; 975 if(showobjname==null)showobjname=false; 976 if( ((obj.getAttribute('ui-type')===null || obj.getAttribute('ui-type') ==='') && (obj.disabled || IsDisplayed(obj)==false)) 977 || (obj.getAttribute('ui-type')=="multiselect" && $("#"+obj.id).multiselect("getButton").is(':hidden')) 978 ) 979// if(obj.disabled || IsDisplayed(obj)==false) 980// if(obj.disabled || obj.readOnly || IsDisplayed(obj)==false) 981 return true; 982 ret=FormObjVerify(obj); 983 if(ret!="") 984 { 985 nm=obj.getAttribute("CHKNAME"); 986 if(nm==null) 987 { 988 // Check for preceding text first 989 if (obj.previousSibling && obj.previousSibling.nodeType==3) { 990 nm = JSVCgetInnerText(obj.previousSibling); 991 } 992 else 993 nm = null; 994 995 if(nm!=null) 996 { 997 nm=Trim(nm); 998 if(nm.search(/[^\s]/g)<0) 999 nm=""; 1000 } 1001 if(nm==null||nm=="") 1002 { 1003 var ptd=obj.parentNode,skip=-1; 1004 while(ptd!=null && ptd.tagName!="TD" && ptd.parentNode) //obj is inside multiple div or span within td 1005 ptd=ptd.parentNode; 1006 if (obj.getAttribute('id')!=null &&(obj.getAttribute('id').indexOf('ATPOLPROD')>=0||obj.getAttribute('id').indexOf('ATVEHDTLQ')>=0))//#28426 skip for ATVEHDTLQ as well 1007 skip=1; 1008 if(ptd.tagName=="TD" && skip==-1) //#21607 skip for EPL ext attr element 1009 { 1010 ptd=ptd.previousSibling; 1011 while(ptd!=null && ptd.tagName!="TD" && ptd.previousSibling) 1012 ptd=ptd.previousSibling; 1013 if(ptd!=null && ptd.tagName=="TD") 1014 nm=JSVCgetInnerText(ptd);//.innerText; 1015 } 1016 } 1017 if(nm==null||nm=="") { //for DIV/Responsive View 1018 var ptd=obj.parentNode,skip=-1; 1019 while(ptd!=null && ptd.tagName!="DIV" && ptd.parentNode) //obj is inside multiple div or span within div 1020 ptd=ptd.parentNode; 1021 if (obj.getAttribute('id')!=null &&(obj.getAttribute('id').indexOf('ATPOLPROD')>=0||obj.getAttribute('id').indexOf('ATVEHDTLQ')>=0))//#28426 skip for ATVEHDTLQ as well 1022 skip=1; 1023 if(ptd.tagName=="DIV" && skip==-1) //#21607 skip for EPL ext attr element 1024 { 1025 ptd=ptd.previousSibling; 1026 while(ptd!=null && ptd.tagName!="DIV" && ptd.previousSibling) 1027 ptd=ptd.previousSibling; 1028 if(ptd!=null && ptd.tagName=="DIV") 1029 nm=JSVCgetInnerText(ptd); 1030 } 1031 } 1032 } 1033 if(nm==null && showobjname) nm="Value highlighted (" + obj.name +") "; 1034 if(nm==null) nm=JSVClang("Value highlighted",29190); 1035 if(noprompt>0) 1036 return false; 1037 obj.style.border="2px solid red"; 1038 return nm+'~'+ret; 1039 } 1040 return ''; 1041} 1042function JSVCDoFocus(obj) 1043{ 1044 try 1045 { 1046 if(obj.tagName=='DIV') { 1047 $(window).scrollTop($(obj).position().top); // can scroll DIV by jq 1048 } else 1049 obj.focus(); 1050 if((obj.tagName=="INPUT" && obj.type=="text") || 1051 obj.tagName=="TEXTAREA") 1052 obj.select(); 1053 } catch(e) {} 1054} 1055function SectionVerify(obj,noprompt) { 1056 var objf,i; 1057 // get INPUT elements 1058 objf=obj.getElementsByTagName('INPUT'); 1059 for(i=0 ;i<objf.length;i++) { 1060 if(!ObjVerify(objf[i],noprompt)) 1061 return false; 1062 } 1063 // get SELECT elements 1064 objf=obj.getElementsByTagName('SELECT'); 1065 for(i=0 ;i<objf.length;i++) { 1066 if(!ObjVerify(objf[i],noprompt)) 1067 return false; 1068 } 1069 objf=obj.getElementsByTagName('TEXTAREA'); 1070 for(i=0 ;i<objf.length;i++) { 1071 if(!ObjVerify(objf[i],noprompt)) 1072 return false; 1073 } 1074 return true; 1075} 1076 1077function FormVerify(form,noprompt,showobjname,excRequired) 1078{ 1079 var nm,ret,obj,col,t; 1080 col=form.elements; 1081 if(col!=null) 1082 { for(t=0;t<col.length;t++) 1083 { obj=col[t]; 1084 if(!ObjVerify(obj,noprompt,showobjname,excRequired)) 1085 return false; 1086 } } 1087 return true; 1088} 1089
1090//list out all fields that not filled in 1091//Need CHKNAME for some fields! (e.g field that have field description on top of it (vertical) instead of left side, or dont have field description at all) 1092function FormVerifyList(form,noprompt,showobjname) 1093{ 1094 var nm,ret,obj,col,t; 1095 var fieldlst=''; 1096 var s=''; 1097 col=form.elements; 1098 if(col!=null) 1099 { 1100 var arrobj = new Array(); 1101 for(t=0;t<col.length;t++) 1102 { obj=col[t]; 1103 s=ObjVerifyV2(obj,noprompt,showobjname); 1104 if(s != '' && s !=true){ //need clean this up 1105 1106 var varname=JSVCVarNameSet("varitem",obj,true); 1107 if(!(arrobj.indexOf(obj.name)>=0)){ 1108 arrobj.push(obj.name); 1109 var onclickfunc='JSVCVarNameGet($(this).closest(\'.clsSVCCtxFrame\').attr(\'id\').replace(\'_CTXFRAME\',\'\')).clickButton(\'OK\');JSVCDoFocus(JSVCVarNameGet(\''+ varname+'\'));'; 1110 fieldlst+='<br><span style="cursor: pointer;" onmouseover="style.fontSize=12;style.fontWeight=\'bold\';$(this).next(\'div\').show()" onmouseout="style.fontSize=11;style.fontWeight=\'normal\';$(this).next(\'div\').hide();" onclick="'+onclickfunc+'">'+s.split('~')[0]+'</span>'; 1111 fieldlst+='<div style="display: none;margin-left: 10;">âª'+s.split('~')[1]+'</div>' 1112 } 1113 } 1114 } 1115 } 1116 if(fieldlst !== ''){
1117 SVCalert('<div align="left"><b>Please fill in the required field(s) :</b> '+fieldlst+'</div>'); 1118 return false; 1119 } 1120 1121 return true; 1122} 1123 1124function FormSubmit(obj) 1125{ 1126 var obj2=document.getElementById("FORMSAVESUCCESS"); 1127 if(obj2!=null) 1128 { 1129 if(obj2.value!="0") 1130 { 1131 SVCalert(JSVClang("This document is outdated. You might have clicked 'Back'\n or clicked on 'Save' twice.\n\nPlease click on Refresh now (next to Stop button at the top of the window).",5011)); 1132 return false; 1133 } 1134 obj2.value="1"; 1135 } 1136 if(obj!=null) 1137 if(obj.tagName=="INPUT" && obj.type=="submit") 1138 obj.click() 1139 else if(obj.tagName=="FORM") 1140 obj.submit(); 1141 return true; 1142} 1143function FormFail(win,errtxt) 1144{ 1145 var obj=document.getElementById("FormSubmitQuote"); 1146 if(obj!=null) 1147 { 1148 obj.style.display=""; 1149 if(errtxt!=null) 1150 obj.innerHTML="\n"+errtxt+"\n "; 1151 SVCalert(errtxt); 1152 } 1153} 1154function FormVSubmit(frm,confirmstr) 1155{ 1156 if(confirmstr==null) 1157 confirmstr=""; 1158 if(typeof(frm)=="string") 1159 frm=document.getElementById(frm); 1160 if(FormVerify(frm)) 1161 if(confirmstr=="" || confirm(confirmstr)) 1162 FormSubmit(frm); 1163} 1164function JSVCFormSetDOMValues(obj) 1165{ // Set the DOM values of FORM elements 1166 // Non-IE browsers innerHTML does not seems to read latest CHECKED/SELECTED/VALUE in FORM unlike IE 1167 // Therefore run this first to force the DOM to update the form values before using innerHTML 1168 var lo,i,o,tmp,osel; 1169 // set DOM 1170 lo=obj.getElementsByTagName('INPUT'); 1171 for(i=0 ;i<lo.length;i++) 1172 { o=lo[i]; 1173 if(o.type&&o.type=="radio"||o.type=="checkbox") 1174 if(o.checked) 1175 o.setAttribute("checked","checked") 1176 else 1177 o.removeAttribute("checked"); 1178 o.setAttribute("value",o.value); 1179 } 1180 lo=obj.getElementsByTagName('SELECT'); 1181 for(i=0 ;i<lo.length;i++) 1182 { o=lo[i]; 1183 osel=o.selectedIndex; 1184 for (var j=0; j<o.options.length; j++) 1185 { 1186 if(o.type == "select-one" && j == osel) { 1187 o.options[osel].setAttribute("selected","selected"); 1188 } 1189 else if(o.type == "select-multiple" && o.options[j].selected) { 1190 o.options[j].setAttribute("selected","selected"); 1191 } 1192 else { 1193 o.options[j].removeAttribute("selected"); 1194 // Ugly code to cater IE can't remove defaulted "SELECTED" attribute. 1195 if(o.options[j].getAttribute("selected")!=null) { 1196 tmp=osel; 1197 o.options[j].setAttribute("selected","selected"); 1198 o.options[j].removeAttribute("selected"); 1199 o.options[tmp].setAttribute("selected","selected"); 1200 } 1201 } 1202 } } 1203 lo=obj.getElementsByTagName('TEXTAREA'); 1204 for(i=0 ;i<lo.length;i++) 1205 { o=lo[i]; 1206 o.setAttribute("value",o.value); 1207 } 1208} 1209function JSVCSetReqList(list,chk) 1210{ 1211 var obj2,listarr,abc; 1212 listarr=list.split(","); 1213 for(abc in listarr) 1214 { obj2=(listarr[abc]==null||listarr[abc]==''?null:JSVCall(listarr[abc])); 1215 if(obj2!=null) 1216 { if(chk) 1217 { 1218 var elems = document.getElementsByName(obj2.getAttribute('name')); 1219 if(elems.length > 1) { 1220 for(var i = 0; i < elems.length; i++) 1221 { 1222 elems[i].setAttribute("CHKREQUIRED",""); 1223 } 1224 } else { 1225 obj2.setAttribute("CHKREQUIRED",""); 1226 } 1227 } 1228 else { 1229 var chk=obj2.getAttribute("CHKREQUIRED_FORCE"); 1230 if(chk==null) // Do not disable required field dynamically if CHKREQUIRED_FORCE is specified 1231 obj2.removeAttribute("CHKREQUIRED"); 1232 } 1233 DoReq(obj2); 1234} } } 1235function JSVCAddUniqueObject(arr,obj) 1236{ 1237 // Call this function to add an obj to an existing array arr, only if unique 1238 if(arr==null)arr=new Array(); 1239 if(obj==null)return arr; 1240 for(var y=0;y<arr.length;y++) 1241 if(arr[y]==obj) 1242 return arr; 1243 arr[arr.length]=obj; 1244 return arr; 1245} 1246function JSVCGetFirstFormElement(obj) 1247{ 1248 var col=obj.getElementsByTagName("input"); 1249 if(col.length>0)return col[0]; 1250 var col=obj.getElementsByTagName("select"); 1251 if(col.length>0)return col[0]; 1252 var col=obj.getElementsByTagName("textarea"); 1253 if(col.length>0)return col[0]; 1254 return null; 1255} 1256function JSVCGetFormElementsArray(obj) 1257{
1258 // Returns an array of FORM elements under a certain node 1259 var ret,col; 1260 ret=new Array(); 1261 col=obj.getElementsByTagName("input"); 1262 for (var y = 0; y < col.length; y++) 1263 ret[ret.length]=col[y]; 1264 col=obj.getElementsByTagName("select"); 1265 for (var y = 0; y < col.length; y++) 1266 ret[ret.length]=col[y]; 1267 col=obj.getElementsByTagName("textarea"); 1268 for (var y = 0; y < col.length; y++) 1269 ret[ret.length]=col[y]; 1270 return ret; 1271} 1272function JSVCGetBlockElementsArray(obj) 1273{ 1274 // Returns an array of FORM elements under a certain node 1275 var ret,col; 1276 ret=new Array(); 1277 col=obj.getElementsByTagName("input"); 1278 for (var y = 0; y < col.length; y++) 1279 ret[ret.length]=col[y]; 1280 col=obj.getElementsByTagName("select"); 1281 for (var y = 0; y < col.length; y++) 1282 ret[ret.length]=col[y]; 1283 col=obj.getElementsByTagName("textarea"); 1284 for (var y = 0; y < col.length; y++) 1285 ret[ret.length]=col[y]; 1286 return ret; 1287} 1288function JSVCSetDisabledList(list,chk,exc,disablehidden) 1289{ // List now accepts string, array or collection 1290 var obj2,listarr,abc,obj3; 1291 exc=(exc!=null&&exc.length>0?exc.split(","):null); 1292 disablehidden=(typeof(disablehidden)=='undefined' || disablehidden==null ? 0 : disablehidden); // default. disablehidden used to disable hidden fields (for not doing processing) 1293 1294 if(typeof(list)=="string") 1295 { 1296 listarr=list.split(","); 1297 list=new Array(); 1298 for (abc in listarr) 1299 { 1300 obj2 = document.getElementById(listarr[abc]); 1301 if(obj2!=null) 1302 JSVCAddUniqueObject(list, obj2); 1303 obj2 = document.getElementsByName(listarr[abc]); 1304 for (var y = 0; y < obj2.length; y++) 1305 JSVCAddUniqueObject(list, obj2[y]); 1306 } 1307 } 1308 for(var x=0;x<list.length;x++) { 1309 obj2=list[x]; 1310 if(obj2!=null) { 1311 //obj2.disabled=(chk?true:false); 1312 if(exc==null) { 1313 obj2.disabled=(parseInt(chk|(obj2.getAttribute('PDISABLED')||obj2.getAttribute('PDISABLED')==''?1:0))==1?true:false); 1314 DoReq(obj2); 1315 } 1316 if(obj2.type&&obj2.type.toLowerCase()=="radio") { 1317 var rd=document.getElementsByName(obj2.name); 1318 for(var r=0;r<rd.length;r++) 1319 if(rd[r]) rd[r].disabled=(parseInt(chk|(rd[r].getAttribute('PDISABLED')||rd[r].getAttribute('PDISABLED')==''?1:0))==1?true:false); 1320 } 1321 obj3=obj2.getElementsByTagName("INPUT"); 1322 for(var i=0;i<obj3.length;i++) { 1323 var j=obj3[i]; 1324 if (!(exc!=null&&exc.indexOf(j.name)>=0)) 1325 { 1326 if(j.type.toLowerCase()=="text" || j.type.toLowerCase()=="button") { // also disable textboxes 1327 j.disabled=(parseInt(chk|(j.getAttribute('PDISABLED')||j.getAttribute('PDISABLED')==''?1:0))==1?true:false); 1328 DoReq(j); 1329 } else if (disablehidden==1 && j.type.toLowerCase()=="hidden") { // disable hidden fields if applicable 1330 j.disabled=(parseInt(chk|(j.getAttribute('PDISABLED')||j.getAttribute('PDISABLED')==''?1:0))==1?true:false); 1331 } else if ((j.type.toLowerCase()=="radio" || j.type.toLowerCase()=="checkbox") && j.name!='') { 1332 var rd=document.getElementsByName(j.name); 1333 for(var r=0;r<rd.length;r++) 1334 if(rd[r]) rd[r].disabled=(parseInt(chk|(rd[r].getAttribute('PDISABLED')||rd[r].getAttribute('PDISABLED')==''?1:0))==1?true:false); 1335 DoReq(j); 1336 } 1337 } 1338 } 1339 obj3=obj2.getElementsByTagName("SELECT"); 1340 for(var i=0;i<obj3.length;i++) { 1341 var j=obj3[i]; 1342 if (!(exc!=null&&exc.indexOf(j.name)>=0)) 1343 { 1344 j.disabled=(parseInt(chk|(j.getAttribute('PDISABLED')||j.getAttribute('PDISABLED')==''?1:0))==1?true:false); 1345 DoReq(j); 1346 } 1347 } 1348 obj3=obj2.getElementsByTagName("TEXTAREA"); 1349 for(var i=0;i<obj3.length;i++) { 1350 var j=obj3[i]; 1351 if (!(exc!=null&&exc.indexOf(j.name)>=0)) 1352 { 1353 j.disabled=(parseInt(chk|(j.getAttribute('PDISABLED')||j.getAttribute('PDISABLED')==''?1:0))==1?true:false); 1354 DoReq(j); 1355 } 1356 } 1357 } 1358 } 1359} 1360function JSVCGetAllDOMObjStat() 1361{ 1362 var objAll = document.getElementsByTagName('*'); 1363 var objReturn=[]; 1364 1365 for (var i=0; i<objAll.length; i++) { 1366 if((objAll[i].id==null || objAll[i].id=='') && (objAll[i].name==undefined || objAll[i].name==null || objAll[i].name=='')) continue; 1367 objReturn[objReturn.length] = { 1368 obj: objAll[i], 1369 disabled: objAll[i].disabled, 1370 display: objAll[i].style.display, 1371 required: objAll[i].getAttribute('CHKREQUIRED') 1372 } 1373 } 1374 return objReturn; 1375} 1376function JSVCRestoreDOMObjStat(objArr) { 1377 if(objArr==null || objArr.length==0) return; 1378 for(var i=0; i<objArr.length; i++) { 1379 if(objArr[i].obj==null) continue; 1380 objArr[i].obj.disabled=objArr[i].disabled; 1381 objArr[i].obj.style.display=objArr[i].display; 1382 if(objArr[i].required!=null) objArr[i].obj.setAttribute("CHKREQUIRED", objArr[i].required); 1383 } 1384} 1385function MRMPreprocessFormItem(obj,doreqonly) 1386{ 1387 var str,sid,o; 1388 1389 // Preprocess 1: Check for required highlighting
1390 DoReq(obj,null,false); 1391 /*if(obj.type!="checkbox" && obj.type!="radio") 1392 { 1393 if(FormObjVerify(obj)!="" && obj.disabled!=true && !(obj.style.backgroundColor=='#f2cccc'||obj.style.backgroundColor=="rgb(242, 204, 204)")) 1394 { 1395 obj.setAttribute("BKGROUND",obj.style.backgroundColor); 1396 obj.style.backgroundColor='#f2cccc'; 1397 } 1398 }*/ 1399 if(doreqonly!=1) 1400 { 1401 str=obj.getAttribute("MRMOBJ"); 1402 if(str!=null && str!="") 1403 { // Preprocess 2: MRMOBJ=DATE or CALDATE 1404 if(str=="DATE" || str=="CALDATE" || str=="CALDATE_BUD") 1405 { if(obj.onblur==null){ 1406 obj.onblur=new Function("ObjDate(this);"); 1407 } 1408 if(obj.maxLength=="" || obj.maxLength==null || obj.maxLength>1000) 1409 obj.maxLength=10; 1410 if(str=="CALDATE"|| str=="CALDATE_BUD") 1411 { sid=obj.name; 1412 if(sid==null || sid=="") 1413 sid=obj.id; 1414 if(sid!=null && sid!="") 1415 { if(obj.onkeydown==null && obj.onkeyup==null) 1416 { obj.onkeydown = function(e){ 1417 CalScrollKey(e,obj); 1418 } 1419 obj.onkeyup = function(e){ 1420 CalScrollKey(e,obj); 1421 } 1422 } 1423 if(str=="CALDATE_BUD"){ 1424 isbud=1; 1425 } else { 1426 isbud=0; 1427 } 1428 o=document.createElement("span"); 1429 o.innerHTML=" "+CalGenScript(sid,1,isbud); 1430 obj.parentNode.insertBefore(o,obj.nextSibling); 1431 if(isbud==1){ 1432 oo=document.createElement("span"); 1433 oo.innerHTML=" "+CalGenBuddhistScript(sid); 1434 o.appendChild(oo); 1435 } 1436 if(str=="CALDATE_BUD") 1437 CalConvertBuddhist(obj,document.getElementById(obj.id+"_buddhist"),1); 1438 } 1439 } 1440 } 1441 else if(str=='CALDATETIME') // based on third party script jquery.datetimepicker.full.js 1442 { 1443 // input attrs: TIMESTEP, DTMIN, DTMAX 1444 var theformat=jSVCdtformat.toUpperCase() + ' HH:mm'; 1445 var onShowLogic=function ( val,obj ) { 1446 var oSel,val,thisobj; 1447 var getPreviousObj=function(arrObj,obj) { 1448 var idx=null; 1449 var obj=(obj!=null&&obj.length>0?obj[0]:null); 1450 if(obj!=null && arrObj!=null && arrObj.length>0) { 1451 for(var i = 0; i < arrObj.length; i += 1) { 1452 if(arrObj[i] === obj && i!=0) { 1453 idx=i-1; 1454 } 1455 } 1456 } 1457 return (idx==null?null: arrObj[idx]); 1458 } 1459 oSel=$(obj).prevAll("input[MRMOBJ='CALDATETIME']:first"); 1460 if(!(oSel!=null&&oSel.length>0)) oSel=$(obj).parent().prev().find("input[MRMOBJ='CALDATETIME']").last(); // look for previous object from previous sibling 1461 if(!(oSel!=null&&oSel.length>0)) oSel=$(obj).parent().prev().prev().find("input[MRMOBJ='CALDATETIME']").last(); // look for previous object from previous previous sibling 1462 oSel=(oSel!=null&&oSel.length>0?oSel[0]:null); // finalise allocating the recent object from the source 1463 thisobj=getPreviousObj($(document).find("input[MRMOBJ='CALDATETIME']"), $(obj)); 1464 /*** 1465 console.log('----source------------'); 1466 console.log($(thisobj)); 1467 console.log($(thisobj).val()); 1468 //console.log($(document).find("input[MRMOBJ='CALDATETIME']").get($(oSel))); 1469 console.log('--------/source--------'); 1470 ***/ 1471 if($(obj).val()=='') { 1472 // this.setOptions( {defaultDate: new Date('2021-01-03')}); 1473 // this.setOptions({defaultDate:(thisobj!=null?$(thisobj).val():new Date())}); 1474 if(thisobj!=null && $(thisobj)!=null && $(thisobj).val()!='') { 1475 val=CalParseDate($(thisobj).val()); 1476 this.setOptions({defaultDate: val , defaultTime: val }); // default calender picker as previous similar object value 1477 $(obj).datetimepicker('reset'); 1478 } 1479 } 1480 /* 1481 console.log('onShowLogic | current value='); 1482 console.log($(obj).val()); 1483 */ 1484 } 1485 $(obj).datetimepicker({ 1486 value: obj.value, 1487 format: theformat, //'DD/MM/YYYY H:i', 1488 step: (obj.getAttribute("TIMESTEP")!=null?obj.getAttribute("TIMESTEP"):60), // attr param: TIMESTEP ; step time, default = 60 (min) 1489 minDate: (obj.getAttribute("DTMIN")=='TODAY'?0:obj.getAttribute("DTMIN")!=null?obj.getAttribute("DTMIN"):false), //attr param: DTMIN ; min date , default = false 1490 defaultDate: 0, 1491 defaultTime: 0, 1492 /* e.g.: 1493 {minDate:0} // today 1494 {minDate:'2013/12/03'} 1495 {minDate:'-1970/01/02'} // yesterday 1496 */ 1497 todayButton: true, 1498 maxDate: (obj.getAttribute("DTMAX")=='TODAY'?0:obj.getAttribute("DTMAX")!=null?obj.getAttribute("DTMAX"):false), //attr param: DTMAX ; max date , default = false 1499 onChangeDateTime: function(val,obj /* returned as JSQ */) { 1500 DoReq($(obj)[0]); 1501 }//, 1502 // onShow: onShowLogic 1503 /* other param for class will be based on default : todayButton: true, defaultSelect:true, allowBlank:false, timepickerScrollbar:true, onSelectDate, onSelectTime, onChangeMonth, onChangeYear, onChangeDateTime, onShow, onClose, onGenerate, inverseButton,scrollMonth,scrollTime,scrollInput,hours12,yearStart,yearEnd,roundTime,dayOfWeekStart,weekends,disabledDates,allowDates,allowDateRe,disabledWeekDays */ 1504 // !!! take note that any handling with onchange (e.g.: onChangeDateTime) or onchange on input object will not working well if alert() was called. use console.log instead. 1505 }); 1506 } 1507 // Preprocess 3: MRMOBJ=TEXTAREA 1508 else if(str=="TEXTAREA") 1509 { if(obj.onblur==null) 1510 obj.onblur=new Function("ObjText(this);"); 1511 }
1512 //Preprocess 4: MRMOBJ=SRCDDL 1513 else if(str=="SRCDDL") 1514 { 1515 SVCAJAXDropDown(obj.id); 1516 } 1517 } 1518 } 1519 1520} 1521function MrmPreprocessFields(o) { 1522 var objf; 1523 o=(typeof(o)=='string'?document.getElementById(o):o); 1524 if(o!=null) { 1525 objf=o.getElementsByTagName('INPUT'); 1526 for (cnt=0; cnt<objf.length; cnt++) { 1527 MRMPreprocessFormItem(objf[cnt]); 1528 } 1529 objf=o.getElementsByTagName('SELECT'); 1530 for (cnt=0; cnt<objf.length; cnt++) { 1531 MRMPreprocessFormItem(objf[cnt]); 1532 } 1533 } 1534} 1535function MrmPreprocessFormInner(frm,doreqonly,asterisklist) 1536{ 1537 // Inner routine for preprocessing forms 1538 var col,len,t,astlist; 1539 if(frm.onreset==null) 1540 frm.onreset=new Function("event.returnValue=false;"); 1541 col=frm.elements; 1542 if(col==null) 1543 return; 1544 len=col.length; 1545 astlist=(asterisklist!=null?asterisklist.split(","):''); 1546 if(len!=null) 1547 for(t=0;t<len;t++){ 1548 MRMPreprocessFormItem(col[t],doreqonly); 1549 1550 if (astlist!='' && astlist.indexOf($("#"+col[t].id).attr('id')) !== -1) { 1551 if ( ($("#"+col[t].id).closest('td').prev('td').text()).slice(-1)!='*'){ 1552 $("#"+col[t].id).closest('td').prev('td').append(' *') 1553 } 1554 } 1555 } 1556} 1557function MrmPreprocessForm(frm,asterisklist) 1558{ 1559 // Outer routine for preprocessing forms. If form object passed in, then preprocess 1560 // only that form, otherwise, preprocess ALL forms attached to the document object 1561 var col,len,frm,t; 1562 if(frm==null) 1563 { 1564 col=document.forms; 1565 len=col.length; 1566 if(len!=null) 1567 { 1568 for(t=0;t<len;t++) 1569 MrmPreprocessFormInner(col[t],null,asterisklist); 1570 } 1571 } else 1572 MrmPreprocessFormInner(frm,null,asterisklist); 1573} 1574 1575/*-------------------- FORM STORE & FORM-to-URL function --------------------*/ 1576function FormStoreUpdate(obj,val,donotoverride) 1577{ 1578 var store,nm,str,pos,posend; 1579 if(typeof(obj)=="string") 1580 { 1581 if(val==null) 1582 return; 1583 nm = obj; 1584 } else 1585 { 1586 DoReq(obj); 1587 nm=obj.id; 1588 if(val==null) 1589 if(obj.tagName=="INPUT" && obj.type=="checkbox") 1590 val=(obj.checked?"1":"0") 1591 else 1592 val=escape(obj.value); 1593 } 1594 store=document.getElementById("FORMSTORE"); 1595 if(store==null) 1596 return; 1597 str=store.value; 1598 pos = str.indexOf("\\"+nm+":"); 1599 if(pos>=0) 1600 { 1601 if(!(donotoverride>0)) 1602 { 1603 // Update 1604 posend=str.indexOf("\\",pos+1); 1605 if(posend==-1) 1606 store.value=str.substring(0,pos+nm.length+2)+val; 1607 else 1608 store.value=str.substring(0,pos+nm.length+2)+val+str.slice(posend); 1609 } 1610 } else 1611 // Insert 1612 store.value=store.value+"\\"+nm+":"+val; 1613} 1614function JSVCall(nm) 1615{ 1616 var o=document.getElementById(nm); 1617 if(o!=null)return o; 1618 o=document.getElementsByName(nm); 1619 if(o.length>0) 1620 return o[0] 1621 else return null; 1622} 1623function JSVCallFromParent(nm) // call from parent's window 1624{ 1625 var o=window.opener.document.getElementById(nm); 1626 if(o!=null)return o; 1627 o=window.opener.document.getElementsByName(nm); 1628 if(o.length>0) 1629 return o[0] 1630 else return null; 1631} 1632function FormStoreApply() 1633{ 1634 var pos,nm,val,obj,formstore,list;
1635 formstore=document.getElementById('FORMSTORE'); 1636 if(formstore==null) 1637 return; 1638 list=formstore.value.split("\\"); 1639 for(str in list) 1640 { 1641 pos=list[str].indexOf(":"); 1642 if(pos > 0) 1643 { 1644 nm=list[str].substring(0,pos); 1645 val=unescape(list[str].slice(pos+1)); 1646 obj=JSVCall(nm); 1647 if(obj!=null) 1648 { 1649 if(obj.tagName=="INPUT" && obj.type=="checkbox") 1650 obj.checked=(val=="1"?true:false) 1651 else 1652 obj.value=val; 1653 if(obj.onchange!=null) 1654 obj.onchange() 1655 else if(obj.onblur!=null) 1656 obj.onblur(); 1657 } 1658 } 1659 } 1660} 1661function FormURLVAR(form,prefix) 1662{ 1663 var urlstr,obj,urlstrall,col,len,nm,spos; 1664 if(prefix==null) 1665 prefix=""; 1666 urlstrall=""; 1667 col=form.elements; 1668 if(col!=null) 1669 { 1670 len=col.length; 1671 if(len>0) 1672 for(var t=0;t<len;t++) 1673 { 1674 obj=col[t]; 1675 if(obj.disabled || IsDisplayed(obj)==false) 1676 continue; 1677 urlstr=obj.getAttribute("URLVAR"); 1678 if(urlstr!=null) 1679 { 1680 nm=prefix+(obj.name).toUpperCase(); 1681 if((obj.type!="checkbox" && obj.type!="radio") || obj.checked==true) 1682 { 1683 regexp=new RegExp("&"+nm+"="); 1684 spos=urlstrall.search(regexp); 1685 selvalue=obj.value; 1686 if(obj.type=="select-multiple") { 1687 selvalue=""; 1688 for(var i=0;i<obj.options.length;i++) { 1689 if(obj[i].selected) 1690 selvalue+=obj[i].value+"|"; 1691 } 1692 if(selvalue[selvalue.length-1]=="|") 1693 selvalue=selvalue.substring(0,selvalue.length-1); 1694 } 1695 if(spos>=0) 1696 urlstrall=urlstrall.substring(0,spos+nm.length+2)+encodeURIComponent(selvalue)+"%2C"+urlstrall.slice(spos+nm.length+2) 1697 else 1698 urlstrall=urlstrall+"&"+nm+"="+encodeURIComponent(selvalue); 1699 } 1700 } 1701 } 1702 } 1703 return urlstrall; 1704} 1705function FormDisable(frm) { // Disable all input elements in a form 1706 if(!frm) 1707 for(var i=0;i<document.forms.length;i++) { 1708 if(document.forms[i].name) { 1709 frm=document.forms[i]; 1710 break; 1711 } 1712 } 1713 if(!frm) return; 1714 for(var i=0;i<frm.elements.length;i++) { 1715 var e=frm.elements[i]; 1716 e.disabled=true; 1717 } 1718} 1719function JSVCFormGetElementsById(form,id) 1720{ // Get multiple items with the same ID in the form 1721 var form,col,t,arr; 1722 if(typeof(form)=="string") 1723 form=document.getElementById(form); 1724 if(form==null||typeof(form)!="object") 1725 return; 1726 col=form.elements; 1727 arr=new Array(); 1728 if(col!=null) 1729 { for(t=0;t<col.length;t++) 1730 { if(col[t].id==id) 1731 { //alert(col[t].id+"::"+id); 1732 arr[arr.length]=col[t]; 1733 } 1734 } } 1735 return arr; 1736} 1737/*-------------------- FORM/INPUT CHECKING --------------------*/ 1738function DoReq(obj,doprompt,cascade) 1739{ 1740 var tgname,col,len,obj2,objcolor,bkcolor,str,oid; 1741 if(cascade==null)cascade=true; 1742 if(obj==null)return; 1743 tgname=obj.tagName; 1744 if(typeof(obj)=="string") { // obj able to accept name list 1745 var lst=obj.split(","); 1746 if(lst.length==0) 1747 lst[0]=obj; 1748 for(var t=0,a=JSVCall(lst[t]);t<lst.length&&a!=null;t++) 1749 DoReq(a,doprompt,false); 1750 } 1751 else if(tgname=="FORM") 1752 { 1753 col=obj.elements; 1754 len=col.length; 1755 if(len!=null) 1756 { for(var t=0;t<len;t++) 1757 { DoReq(col[t],doprompt,false);/*obj2=col[t];objcolor=obj2; 1758 if(obj2.type=="checkbox" || obj2.type=="radio") 1759 { 1760 objcolor=obj2.nextSibling; 1761 if(objcolor==null || objcolor.tagName!="LABEL") 1762 objcolor=null; 1763 } 1764 if(objcolor!=null && obj2.disabled==false && !(objcolor.style.backgroundColor=='#f2cccc'||objcolor.style.backgroundColor=="rgb(242, 204, 204)")) 1765 { str=FormObjVerify(obj2); 1766 if(str!="") 1767 { if(doprompt)alert("Field "+str); 1768 objcolor.setAttribute("BKGROUND",objcolor.style.backgroundColor); 1769 objcolor.style.backgroundColor='#f2cccc'; 1770 } 1771 }*/ 1772 } 1773 } 1774 } else 1775 { 1776 bkcolor=obj.getAttribute("BKGROUND"); 1777 objcolor=obj; 1778 if(obj.type!="radio" && obj.type!="checkbox") 1779 cascade=false; 1780 if(obj.type=="checkbox" || obj.type=="radio") 1781 { 1782 if(obj.id!=null && obj.id.length>0) 1783 objcolor=(objcolor.parentNode!=null && objcolor.parentNode.tagName=='LABEL'?objcolor.parentNode:objcolor.nextSibling); 1784 else 1785 objcolor=null; 1786 if(objcolor!=null && objcolor.tagName!="LABEL") 1787 objcolor=objcolor.nextSibling; 1788 if(objcolor!=null && objcolor.tagName!="LABEL") 1789 objcolor=null; 1790 if(objcolor!=null && objcolor.htmlFor!=obj.id) 1791 objcolor=null; 1792 } 1793 str=FormObjVerify(obj); 1794 if(objcolor!=null && (str=="" || obj.disabled==true)) 1795 { 1796 bkcolor=objcolor.getAttribute("BKGROUND"); 1797 if(bkcolor!=null) 1798 { 1799 objcolor.style.backgroundColor=bkcolor; 1800 objcolor.removeAttribute("BKGROUND"); 1801 objcolor.style.border=""; 1802 if($(obj).attr("ui-type") == "select2") 1803 $("#"+obj.id).data('select2').$container.removeClass('select2-chkrequired'); 1804 else if($(obj).siblings('.ui-multiselect').length && $(obj).attr("ui-type") == "multiselect") 1805 $(obj).multiselect("getButton").removeClass('multiselect-chkrequired'); 1806 } 1807 } 1808 else 1809 { if(doprompt && str!="") 1810 alert("Field "+str); 1811 1812 if(objcolor!=null && !(objcolor.style.backgroundColor=='#f2cccc'||objcolor.style.backgroundColor=="rgb(242, 204, 204)")) 1813 { 1814 objcolor.setAttribute("BKGROUND",objcolor.style.backgroundColor); 1815 objcolor.style.backgroundColor='#f2cccc'; 1816 if($(obj).attr("ui-type") == "select2") 1817 { 1818 $("#"+obj.id).data('select2').$container.addClass('select2-chkrequired'); 1819 } 1820 else if($(obj).siblings('.ui-multiselect').length && $(obj).attr("ui-type") == "multiselect") 1821 { 1822 $(obj).multiselect("getButton").addClass('multiselect-chkrequired'); 1823 } 1824 } 1825 1826 // YN select2 cater for JSVCSetReq because 1827 // JSVCSetReq will DoReq, and DoReq will convert the obj background into red 1828 // Hence the above checking will not work for next DoReq cause already in red color 1829 if(objcolor!=null && $(obj).attr("ui-type-fix") == "select2-fix") 1830 { 1831 (objcolor.style.backgroundColor=="rgb(242, 204, 204)") ? $(obj).next().addClass('select2-chkrequired') : $(obj).next().removeClass('select2-chkrequired') 1832 } 1833 1834 } 1835 1836 1837 if(cascade && obj.name && obj.name.length>0 && obj.form && obj.form.elements) 1838 { // For radio cascade to all related elements to set req 1839 col=obj.form.elements; 1840 len=col.length; 1841 if(len!=null) 1842 { for(var t=0;t<len;t++) 1843 if( obj.name==col[t].name) 1844 DoReq(col[t],false,false); 1845 } 1846 } 1847 } 1848
1849 if(JSVCGetResp()) { 1850 if($.fn.JSVCMobShowOpt && $('#toggleOpt0').parent().hasClass('btn-primary')) { 1851 JSVCMobShowOpt(); 1852 JSVCMobHideOpt(); 1853 } 1854 } 1855} 1856function AddOnloadCode(strload,fpm) 1857{ 1858 if(window.onload == null) 1859 window.onload = new Function(strload) 1860 else 1861 { 1862 var fnexp = window.onload.toString(); 1863 var pos1 = fnexp.search("{"); 1864 if(pos1 > 0) 1865 if(fpm==1) 1866 window.onload = new Function(strload+fnexp.slice(pos1+1,-1)) 1867 else 1868 window.onload = new Function(fnexp.slice(pos1+1,-1)+strload) 1869 else 1870 window.onload = new Function(strload); 1871 } 1872} 1873function JSVCAppendEvtFunc(obj,strobjev,strfunc) 1874{ 1875 if(strfunc!=null) { 1876 if(typeof(obj)=='string') obj=JSVCall(obj); 1877 1878 if(obj!=null){ 1879 if(!typeof(obj.length)=='undefined') obj=obj[0]; 1880 1881 var fn=(eval('obj.'+strobjev)!=null?eval('obj.'+strobjev).toString():''); 1882 var pos1 = fn.search("{"); 1883 var strcur=''; 1884 if (pos1>0) strcur=fn.slice(pos1+1,-1); 1885 eval('obj.'+strobjev+'= new Function(strcur+strfunc)'); 1886 } 1887 } 1888} 1889function JSVCAppendEvtFuncOpt(obj,strobjev,strfunc) { // cater for set of objects esp for checkbox or radio 1890 var oChk=new Array(),objs=obj; 1891 if(typeof(obj)=='string') obj=document.getElementsByName(obj); 1892 if(obj!=null && typeof(obj.length)!='undefined' && obj.length>0) { 1893 oChk=obj; 1894 } else if(obj!=null && typeof(obj)!='string') { 1895 oChk.push(obj); 1896 } 1897 for(var i=0;i<oChk.length;i++) { 1898 if(oChk[i].type=='checkbox' || oChk[i].type=='radio') { 1899 JSVCAppendEvtFunc(oChk[i],strobjev,strfunc); 1900 } 1901 } 1902} 1903function JSVCReplaceEvtFunc(obj,strobjev,strfunc1,strfunc2) 1904{ 1905 if(strfunc1!=null && strfunc2!=null) { 1906 if(typeof(obj)=='string') obj=JSVCall(obj); 1907 if(!typeof(obj.length=='undefined')) obj=obj[0]; 1908 1909 var fn=(eval('obj.'+strobjev)!=null?eval('obj.'+strobjev).toString():''); 1910 var pos1 = fn.search("{"); 1911 var strcur=''; 1912 if (pos1>0) strcur=fn.slice(pos1+1,-1); 1913 if(strcur!=null&&strcur!='') 1914 eval('strcur.replace('+strfunc1+',strfunc2)'); 1915 eval('obj.'+strobjev+'= new Function(strcur)'); 1916 } 1917} 1918 1919function Trim(val) 1920{ 1921 if(val==null) 1922 return ""; 1923 val = val.toString(); 1924 while(val.charAt(0) == " ") 1925 val = val.slice(1); 1926 while(val.charAt(val.length - 1) == " ") 1927 val = val.substr(0,val.length - 1); 1928 return val; 1929} 1930function Despace(str) 1931{ 1932 if(typeof(str)=="string") 1933 return str.replace(/ /g,"") 1934 else 1935 { 1936 str.value=str.value.replace(/ /g,""); 1937 DoReq(str); 1938 } 1939} 1940function ObjUpperCase(obj) 1941{ 1942 obj.value=obj.value.toUpperCase(); 1943 DoReq(obj); 1944} 1945function ObjAlphaNum(obj, minlen, maxlen) 1946{ 1947 var msg=CheckAlphaNum(obj.value, minlen, maxlen); 1948 if (msg!="") 1949 { 1950 alert(msg); 1951 obj.value=""; 1952 obj.focus(); 1953 } 1954 DoReq(obj); 1955} 1956// returns "" only if val is alphanumeric (includes underscore character) and length falls within minlen and maxlength. 1957function CheckAlphaNum(val, minlen, maxlen) 1958{ 1959 var msg=""; 1960 var regex = /\W/gi; 1961 if (minlen==null) minlen=0; 1962 if (maxlen==null) maxlen=-1; // -1 means unlimited 1963 if (regex.test(val)) 1964 msg=msg+JSVClang("Only alphanumeric characters (A-Z, 0-9 or _) are allowed in this field. ",28686); 1965 if(val!="" && val.length<minlen) 1966 msg=msg+JSVClang("Minimum length for this field is "+"{0}"+" characters. ",1676,0,minlen); 1967 else if (val!="" && val.length>maxlen && maxlen!=-1) 1968 msg=msg+JSVClang("Maximum length for this field is "+"{0}"+" characters. ",1677,0,maxlen); 1969 return msg; 1970} 1971function JSVCMaxLength(obj, MaxLen) 1972{ 1973 if(MaxLen==null) 1974 { 1975 MaxLen=obj.getAttribute("maxlength"); 1976 } 1977 if(MaxLen>0) 1978 { 1979 obj.value=obj.value.substring(0,MaxLen); 1980 return (obj.value.length < MaxLen); 1981 } 1982} 1983 1984function ObjCheckLen(obj, minlen, maxlen) 1985{ 1986 var msg=CheckLen(obj.value, minlen, maxlen); 1987 if (msg!="") 1988 { 1989 SVCalert(msg); 1990 obj.value=""; 1991 obj.focus(); 1992 } 1993 DoReq(obj); 1994} 1995function CheckLen(val,minlen,maxlen){ 1996 var msg=""; 1997 if (minlen==null) minlen=0; 1998 if (maxlen==null) maxlen=-1; // -1 means unlimited 1999 if(val!="" && val.length<minlen) 2000 msg=msg+JSVClang("Minimum length for this field is "+"{0}"+" characters. ",1676,0,minlen); 2001 else if (val!="" && val.length>maxlen && maxlen!=-1) 2002 msg=msg+JSVClang("Maximum length for this field is "+"{0}"+" characters. ",1677,0,maxlen); 2003 return msg; 2004} 2005function JSVCOptionGetValue(obj,mode) { // mode 0 : value in listing, mode 1 : value in sum (figure only) 2006 var i,sumtot, tot=new Array(),existed=0; 2007 mode=(mode==null?0:mode); 2008 if(typeof(obj)=='string') 2009 obj=document.getElementsByName(obj); 2010 if(obj!=null&&obj.length>0) existed=1; 2011 for(i=0;i<obj.length;i++) { 2012 if( (obj[i].type=='text' || obj[i].type=='hidden' || obj[i].type=='select') && (obj[i].checked==true && obj[i].disabled==false) ) { 2013 tot.push(obj[i].value); 2014 }
2014 else if((obj[i].type=='radio' || obj[i].type=='checkbox') && (obj[i].checked==true && obj[i].disabled==false)) { 2015 tot.push(obj[i].value); 2016 } 2017 } 2018 if (existed==1) { 2019 if(tot.length>0 && mode==0) { 2020 sumtot=tot.join(","); 2021 } else if(tot.length==0 && mode==0) { 2022 sumtot=''; 2023 } else if (tot.length>0 && mode==1) { 2024 sumtot=0; 2025 for(i=0;i<tot.length;i++) 2026 if(!isNaN(tot[i]) && tot[i]>=0) 2027 sumtot=sumtot+parseFloat(tot[i]); 2028 } else if (tot.length==0 && mode==1) { 2029 sumtot=0; 2030 } 2031 } else 2032 sumtot=null; 2033 return sumtot; 2034 2035} 2036function JSVCRadioGetSelObj(obj,dis) 2037{ 2038 var o,i; 2039 if(typeof(obj)=="string") 2040 o=document.getElementsByName(obj) 2041 else if(obj.name!="") 2042 o=document.getElementsByName(obj.name); 2043 if(o==null)return null; 2044 for(i = 0; i < o.length; i++) 2045 if(o[i].checked && (dis==null || dis==o[i].disabled)) 2046 return o[i]; 2047 return null; 2048} 2049function JSVCRadioGetValue(obj,dis) 2050{ // dis: null:ignore disabled status,true:only if disabled 2051 var o=JSVCRadioGetSelObj(obj,dis); 2052 return (o==null?null:o.value); 2053} 2054function JSVCRadioSetValue(obj,val,dis,fn) 2055{ 2056 var selobj=null; 2057 if(typeof(obj)=="string") 2058 o=document.getElementsByName(obj) 2059 else 2060 o=document.getElementsByName(obj.name); 2061 if(o==null)return null; 2062 for(var i = 0; i < o.length; i++) 2063 { 2064 if(val!=null) 2065 if (o[i].value == val) { 2066 o[i].checked = true; 2067 selobj=o[i]; 2068 if(fn!=null){fn();} 2069 } else{ 2070 o[i].checked = false; 2071 if(fn!=null){fn();} 2072 } 2073 2074 2075 if(dis!=null) 2076 o[i].disabled=dis; 2077 } 2078 return selobj; 2079} 2080/*-------------------- URL/WINDOWS/NAVIGATION --------------------*/ 2081 2082///////////////////////////////////////////////////////////////////////////////////////// 2083// JSVCReloadParent 2084// Win - defaults to window.self 2085// 2086// Modified By Modified On Comments 2087// ----------- ----------- -------- 2088// Theng Hey 22 Mar 2003 Simplified, no need to take any arguments 2089// Theng Hey 25 mar 2003 Reloads all ancestors, via recursive call 2090//////////////////////////////////////////////////////////////////////////////////////// 2091function JSVCReloadParent(Win,doclose,doreload) 2092{ 2093 var ParWin,propagate; 2094 if(Win==null) 2095 Win=window.self; 2096 if(doreload==null) 2097 doreload=-1; 2098 if(Win!=null) 2099 { 2100 ParWin = Win.opener; 2101 if (ParWin != null) 2102 { 2103 if(ParWin.closed) 2104 { 2105 if((doclose>0 || doclose==-1) && !(Win.closed)) 2106 Win.close(); 2107 return; 2108 } 2109 if(doreload>0 || doreload==-1) 2110 { 2111 ParWin.location.href=ParWin.location.href; 2112 if(doreload>0) doreload--; 2113 propagate=1; 2114 } 2115 if(doclose>0 || doclose==-1) 2116 { 2117 if(!(Win.closed)) 2118 { 2119 Win.close(); 2120 ParWin.focus(); 2121 if(doclose>0) doclose--; 2122 } else 2123 doclose=0; 2124 propagate=1; 2125 } 2126 if(propagate>0) 2127 JSVCReloadParent(ParWin,doclose,doreload); 2128 } 2129 } 2130} 2131///////////////////////////////////////////////////////////////////////////////////////// 2132// NavigateParent 2133// Win - defaults to window.self 2134// 2135// Modified By Modified On Comments 2136// ----------- ----------- -------- 2137// 2138//////////////////////////////////////////////////////////////////////////////////////// 2139function NavigateParent(url, Win) 2140{ 2141 if (Win==null) Win=window.self; 2142 var ParWin = Win.opener; 2143 if (ParWin != null) 2144 { 2145 ParWin.location.href=url; 2146 //ParWin.navigate(url); 2147 ParWin.focus(); 2148 } 2149} 2150function URLBack(URL) 2151{ 2152 var rgexp,txt; 2153 if(URL == null || URL == "") 2154 URL = window.location.pathname + window.location.search; 2155 rgexp = /((linkfrom)|(module)|(loginmode)|(cfid)|(cftoken)|(jsessionid)|(userid)|(nolayout)|(rid)|(lastlogon)|(br)|(ct)|(mobile)|(usid))[=][^&]*[&]*/gi; 2156 URL=URL.replace(rgexp, ""); 2157 rgexp = /[&][&]+/gi; 2158 return URL.replace(rgexp, ""); 2159} 2160 2161/*-------------------- CONTEXT WINDOWS --------------------*/ 2162function JSVCCtxMenuFrame(parobj,id,menuname,width,bCollapse,bClose,scrollfn,cssclass,csstitle,height,bScroll) 2163{ 2164 if(parobj==null) 2165 parobj=document.body; 2166 2167 2168 2169 obj=document.createElement("div"); 2170 obj.id=id; 2171 obj.setAttribute("CURTOP",150); 2172 if (cssclass==null)
2173 obj.className="clsSVCCtxFrame"; 2174 else 2175 obj.className=cssclass; 2176 2177 if(width!=null&&width!=""&&scrollfn!=null) 2178 { 2179 if(window.attachEvent) 2180 window.attachEvent('onscroll',scrollfn) 2181 else 2182 window.addEventListener('scroll',scrollfn,false); 2183 } 2184 if(width!=null&&width!="") 2185 obj.style.width=width+"px"; 2186 2187 obj.innerHTML="<div class="+(csstitle==null?"clsSVCCtxTitle":csstitle)+" style=height:3ex>"+(bCollapse?"<input type=button class=clsButton style=\"float:left;font-weight:bold\" onclick=JSVCCtxMenuCollapseToggle(this) value=\"↑↑\">":"")+(bClose?"<input type=button class=clsButton style=float:right onclick=\"JSVCcloseCtxMenu(this.parentNode.parentNode)\" value=\" X \">":"")+" "+menuname+"</div><div "+(bScroll?(height!=null&&height!=""?"style=overflow:scroll;height:"+height+"px":"style=overflow:scroll"):"")+"> </div>"; 2188 parobj.appendChild(obj); 2189 JSVCDrag.init(obj); 2190 return obj; 2191} 2192function JSVCCtxMenuContent(obj,context) 2193{ 2194 obj.firstChild.nextSibling.innerHTML=context; 2195} 2196function JSVCCtxMenuCollapseToggle(obj) 2197{ 2198 var o=obj.parentNode.nextSibling; 2199 if(o.style.display=="none") 2200 { o.style.display=""; 2201 obj.value=String.fromCharCode(8593,8593); 2202 } 2203 else 2204 { o.style.display="none"; 2205 obj.value=String.fromCharCode(8595,8595); 2206 } 2207} 2208function JSVCshowCtxMenu(objname,ctxval,pos,nocap,posX,posY) 2209{ 2210 return JSVCshowCtxMenuEv(event,objname,ctxval,pos,nocap,posX,posY); 2211} 2212function JSVCshowCtxMenuEv(event,objname,ctxval,pos,nocap,posX,posY) 2213{ 2214 var pos,obj,postop,posleft; 2215 var e,eobj,eobjpos; 2216 // POS:1 - At Object, POS:2 - Center of screen, -1: Current location, else: - At Mouse 2217 if(typeof(objname)=="object")obj=objname 2218 else 2219 obj=document.getElementById(objname); 2220 if(obj==null) 2221 return; 2222 var closectx= function(e){ 2223 // If item clicked got HTML attribute CANCELCLOSE, then do not trigger close 2224 var e2=(e.target||e.srcElement); 2225 if(e2 && e2.getAttribute("CANCELCLOSE")!=null) 2226 return false; 2227 JSVCcloseCtxMenu(obj); 2228 window.removeEventListener("mouseup",closectx,true); 2229 } 2230 obj.setAttribute("ctxVal",ctxval); 2231 obj.removeAttribute("ctxSel"); 2232 obj.style.display="block"; 2233 2234 // POS 111 - Position of top left corner is posX, posY 2235 if(pos==111) 2236 { 2237 obj.style.left=document.body.scrollLeft + posX; 2238 obj.style.top=document.body.scrollTop + posY; 2239 if(posY+obj.clientHeight > document.body.clientHeight) 2240 { 2241 pos=document.body.clientHeight-obj.clientHeight+document.body.scrollTop-2; 2242 if(pos<0)pos=0; 2243 obj.style.top=pos; 2244 } 2245 if (posX+obj.clientWidth > document.body.clientWidth) 2246 { 2247 pos=document.body.clientWidth-obj.clientWidth-2; 2248 obj.style.left=pos; 2249 } 2250 } 2251 else if(pos==1) 2252 { 2253 // At source obj position 2254 postop=document.body.scrollTop+event.clientY-event.offsetY; 2255 obj.style.left=document.body.scrollLeft+event.clientX-event.offsetX; 2256 obj.style.top=postop; 2257 if(postop-document.body.scrollTop+obj.clientHeight > document.body.clientHeight) 2258 { 2259 pos=document.body.clientHeight-obj.clientHeight+document.body.scrollTop-2; 2260 if(pos<0)pos=0; 2261 obj.style.top=pos; 2262 } 2263 } else if (pos==2) 2264 { 2265 // Center of screen 2266 obj.style.left=document.body.scrollLeft+(document.body.clientWidth-obj.clientWidth)/2+'px'; 2267 postop=document.body.scrollTop+(document.body.clientHeight-obj.clientHeight)/2; 2268 obj.style.top=postop+'px'; 2269 if(postop-document.body.scrollTop+obj.clientHeight > document.body.clientHeight) 2270 { pos=document.body.clientHeight-obj.clientHeight+document.body.scrollTop-2; 2271 if(pos<0)pos=0; 2272 obj.style.top=pos+'px'; 2273 } 2274 } else if (pos==3) 2275 { 2276 // Below Object 2277 obj.style.left=event.target.offsetLeft; 2278 obj.style.top=event.target.offsetTop+event.target.offsetHeight+2; 2279 } else if(pos!=-1) 2280 { 2281 // At Mouse location 2282 obj.style.left=document.body.scrollLeft+event.clientX; 2283 if(event.clientX+obj.clientWidth > document.body.clientWidth) 2284 { 2285 pos=document.body.clientWidth-obj.clientWidth+document.body.scrollLeft-2; 2286 if(pos<0)pos=0; 2287 obj.style.left=pos; 2288 } 2289 obj.style.top=document.body.scrollTop+event.clientY; 2290 if(event.clientY+obj.clientHeight > document.body.clientHeight) 2291 { 2292 pos=document.body.clientHeight-obj.clientHeight+document.body.scrollTop-2; 2293 if(pos<0)pos=0; 2294 obj.style.top=pos; 2295 } 2296 } 2297 2298 if(nocap==2) { // 2:Disable window / disallow click exit 2299 JSVCPageDisable(obj,true); 2300 } 2301 else if(nocap==3) { // 3:Disable window / allow click exit 2302 JSVCPageDisable(obj,true); 2303 if(window.addEventListener) // all browsers except before IE9 2304 window.addEventListener("mouseup",closectx,true); 2305 else if(obj.setCapture) // before IE9 2306 obj.setCapture(false); 2307 } 2308 else if(nocap!=1) { // 0:Enable window / allow click exit, 1:Enable window / disallow click exit, 4:Enable window / click exit (bubbling model). 2309 if(window.addEventListener) // all browsers except before IE9 2310 { 2311 if(nocap==4) 2312 window.addEventListener("mouseup",closectx,false); 2313 else 2314 window.addEventListener("mouseup",closectx,true); 2315 } 2316 else if(obj.setCapture) // before IE9 2317 obj.setCapture(false); 2318 } 2319 2320 return false; 2321} 2322function JSVCcloseCtxMenuAll(event) { // event fired from mouseup 2323 var e=(event.target||event.srcElement); 2324 var o=document.getElementsByTagName("div"); 2325 for(var i in o) { 2326 if(o[i].className=="clsSVCCtxFrame"||o[i].className=="clsSVCCtxMenuBox") { 2327 JSVCcloseCtxMenu(o[i]); 2328 } 2329 } 2330} 2331function JSVCtoggleCtxMenu(obj,e) 2332{ 2333 //var e=event.srcElement; --- not supported by Fs 2334 //e=(e!=null?e.srcElement:window.event.srcElement); 2335 e=(e!=null?e.target || e.srcElement:event.target || event.srcElement); 2336 2337 while(e!=null) 2338 { 2339 switch(e.className) 2340 {
2341 case "clsSVCCtxMenuItem": e.className="clsSVCCtxMenuHlight"; obj.ctxSel=e; return; 2342 case "clsSVCCtxMenuItem2": e.className="clsSVCCtxMenuHlight2"; obj.ctxSel=e; return; 2343 case "clsSVCCtxMenuHlight": e.className="clsSVCCtxMenuItem"; if(obj.ctxSel==e) obj.ctxSel=null; return; 2344 case "clsSVCCtxMenuHlight2": e.className="clsSVCCtxMenuItem2"; if(obj.ctxSel==e) obj.ctxSel=null; return; 2345 default: 2346 e=e.parentElement; 2347 } 2348 } 2349} 2350function JSVCclickCtxMenu(obj,itm,event) 2351{ 2352 JSVCcloseCtxMenu(obj); 2353 if(itm==null) 2354 { 2355 itm=obj.ctxSel; 2356 if(itm==null) return; 2357 } 2358 var othis=itm; // Required: used in eval 2359 /* --- not supported by FF 2360 if(itm.doFunction != null) { 2361 eval(itm.doFunction); 2362 }*/ 2363 if(itm.getAttribute('doFunction')!=null) { 2364 eval(itm.getAttribute('doFunction')); 2365 } 2366} 2367function JSVCcloseCtxMenu(obj) 2368{ 2369 if(typeof(obj)=="string") 2370 obj=document.getElementById(obj); 2371 //avoid multiple closing 2372 if(obj.style.display!="none") { 2373 obj.style.display="none"; 2374 JSVCPageDisable(obj,false); 2375 /*if(window.removeEventListener) // all browsers except before IE9 2376 window.removeEventListener("mouseup",JSVCcloseCtxMenuAll,true); 2377 else*/ 2378 if(obj.releaseCapture) // before IE9 2379 obj.releaseCapture(); 2380 } 2381} 2382/*-------------------- CONTEXT-WINDOWS - MAKING IT DRAGGABLE --------------------*/ 2383var JSVCDrag = { 2384 2385 obj : null, 2386 2387 init : function(o, oRoot, minX, maxX, minY, maxY, bSwapHorzRef, bSwapVertRef, fXMapper, fYMapper) 2388 { 2389 o.onmousedown = JSVCDrag.start; 2390 2391 o.hmode = bSwapHorzRef ? false : true ; 2392 o.vmode = bSwapVertRef ? false : true ; 2393 2394 o.root = oRoot && oRoot != null ? oRoot : o ; 2395 2396 if (o.hmode && isNaN(parseInt(o.root.style.left ))) o.root.style.left = "0px"; 2397 if (o.vmode && isNaN(parseInt(o.root.style.top ))) o.root.style.top = "0px"; 2398 if (!o.hmode && isNaN(parseInt(o.root.style.right ))) o.root.style.right = "0px"; 2399 if (!o.vmode && isNaN(parseInt(o.root.style.bottom))) o.root.style.bottom = "0px"; 2400 2401 o.minX = typeof minX != 'undefined' ? minX : null; 2402 o.minY = typeof minY != 'undefined' ? minY : null; 2403 o.maxX = typeof maxX != 'undefined' ? maxX : null; 2404 o.maxY = typeof maxY != 'undefined' ? maxY : null; 2405 2406 o.xMapper = fXMapper ? fXMapper : null; 2407 o.yMapper = fYMapper ? fYMapper : null; 2408 2409 o.root.onDragStart = new Function(); 2410 o.root.onDragEnd = new Function(); 2411 o.root.onDrag = new Function(); 2412 }, 2413 2414 start : function(e) 2415 { var tn,to; 2416 var o = JSVCDrag.obj = this; 2417 e = JSVCDrag.fixE(e); 2418 if(e.srcElement)to=e.srcElement 2419 else if(e.target)to=e.target; 2420 tn=to.tagName; 2421 if(!(tn=="DIV"&&to.className=="clsSVCCtxTitle"))return true; 2422 //if(tn=="INPUT"||tn=="SELECT"||tn=="TEXTAREA")return true; 2423 var y = parseInt(o.vmode ? o.root.style.top : o.root.style.bottom); 2424 var x = parseInt(o.hmode ? o.root.style.left : o.root.style.right ); 2425 document.onmouseup = JSVCDrag.end; 2426 o.root.onDragStart(x, y); 2427 2428 o.lastMouseX = e.clientX; 2429 o.lastMouseY = e.clientY; 2430 2431 if (o.hmode) { 2432 if (o.minX != null) o.minMouseX = e.clientX - x + o.minX; 2433 if (o.maxX != null) o.maxMouseX = o.minMouseX + o.maxX - o.minX; 2434 } else { 2435 if (o.minX != null) o.maxMouseX = -o.minX + e.clientX + x; 2436 if (o.maxX != null) o.minMouseX = -o.maxX + e.clientX + x; 2437 } 2438 2439 if (o.vmode) { 2440 if (o.minY != null) o.minMouseY = e.clientY - y + o.minY; 2441 if (o.maxY != null) o.maxMouseY = o.minMouseY + o.maxY - o.minY; 2442 } else { 2443 if (o.minY != null) o.maxMouseY = -o.minY + e.clientY + y; 2444 if (o.maxY != null) o.minMouseY = -o.maxY + e.clientY + y; 2445 } 2446 2447 document.onmousemove = JSVCDrag.drag; 2448 2449 return false; 2450 }, 2451 2452 drag : function(e) 2453 { 2454 e = JSVCDrag.fixE(e); 2455 var o = JSVCDrag.obj; 2456 var ey = e.clientY; 2457 var ex = e.clientX; 2458 var y = parseInt(o.vmode ? o.root.style.top : o.root.style.bottom); 2459 var x = parseInt(o.hmode ? o.root.style.left : o.root.style.right ); 2460 var nx, ny; 2461 2462 if (o.minX != null) ex = o.hmode ? Math.max(ex, o.minMouseX) : Math.min(ex, o.maxMouseX); 2463 if (o.maxX != null) ex = o.hmode ? Math.min(ex, o.maxMouseX) : Math.max(ex, o.minMouseX); 2464 if (o.minY != null) ey = o.vmode ? Math.max(ey, o.minMouseY) : Math.min(ey, o.maxMouseY); 2465 if (o.maxY != null) ey = o.vmode ? Math.min(ey, o.maxMouseY) : Math.max(ey, o.minMouseY); 2466 2467 nx = x + ((ex - o.lastMouseX) * (o.hmode ? 1 : -1)); 2468 ny = y + ((ey - o.lastMouseY) * (o.vmode ? 1 : -1)); 2469 2470 if (o.xMapper) nx = o.xMapper(y)
2471 else if (o.yMapper) ny = o.yMapper(x) 2472 JSVCDrag.obj.root.CURTOP=ny; 2473 JSVCDrag.obj.root.style[o.hmode ? "left" : "right"] = nx + "px"; 2474 JSVCDrag.obj.root.style[o.vmode ? "top" : "bottom"] = ny + "px"; 2475 JSVCDrag.obj.lastMouseX = ex; 2476 JSVCDrag.obj.lastMouseY = ey; 2477 2478 JSVCDrag.obj.root.onDrag(nx, ny); 2479 return false; 2480 }, 2481 2482 end : function() 2483 { 2484 document.onmousemove = null; 2485 document.onmouseup = null; 2486 JSVCDrag.obj.root.onDragEnd( parseInt(JSVCDrag.obj.root.style[JSVCDrag.obj.hmode ? "left" : "right"]), 2487 parseInt(JSVCDrag.obj.root.style[JSVCDrag.obj.vmode ? "top" : "bottom"])); 2488 JSVCDrag.obj = null; 2489 }, 2490 2491 fixE : function(e) 2492 { 2493 if (typeof e == 'undefined') e = window.event; 2494 if (typeof e.layerX == 'undefined') e.layerX = e.offsetX; 2495 if (typeof e.layerY == 'undefined') e.layerY = e.offsetY; 2496 return e; 2497 } 2498}; 2499/*-------------------- USERDATA PERSISTENCE ON BROWSER (Use HTML5 localStorage if such a feature exist) --------------------*/ 2500function MrmSetPersistUserData(attr,val) 2501{ 2502 if(typeof(Storage) !== "undefined") 2503 { 2504 localStorage.setItem("MRMpersistUserData_" + attr.toString() , val.toString().replace(/</g, "<").replace(/>/g, ">") ); 2505 } 2506 else 2507 { 2508 var obj=document.getElementById("MRMUSERDATA"); 2509 if(obj==null) 2510 { 2511 // obj=document.createElement("<DIV ID=MRMUSERDATA class=persistUserData>"); 2512 // document.body.insertAdjacentElement("afterBegin",obj); 2513 2514 obj=document.createElement("div"); 2515 obj.id="MRMUSERDATA"; 2516 obj.className="persistUserData"; 2517 2518 document.body.insertBefore(obj,document.body.firstChild); 2519 2520 } 2521 obj.setAttribute(attr,val); 2522 // obj.save(attr); 2523 try { obj.save(attr); } catch(e) {}; 2524 } 2525} 2526function MrmGetPersistUserData(attr) 2527{ 2528 2529 if(typeof(Storage) !== "undefined") 2530 { 2531 var val = localStorage.getItem("MRMpersistUserData_" + attr.toString() ); 2532 } 2533 else 2534 { 2535 var obj,val; 2536 obj=document.getElementById("MRMUSERDATA"); 2537 if(obj==null) 2538 { 2539 //obj=document.createElement("<DIV ID=MRMUSERDATA class=persistUserData>"); 2540 //document.body.insertAdjacentElement("afterBegin",obj); 2541 obj=document.createElement("div"); 2542 obj.id="MRMUSERDATA"; 2543 obj.className="persistUserData"; 2544 document.body.insertBefore(obj,document.body.firstChild); 2545 } 2546 // obj.load(attr); 2547 try { obj.load(attr); } catch(e) { return null; }; 2548 val=obj.getAttribute(attr); 2549 if(val==null) 2550 val==""; 2551 } 2552 return val; 2553} 2554/*-------------------- NAME + ID input generation --------------------*/ 2555var jSVCidstr; 2556function JSVCSetIDDefStr(idstr) 2557{ 2558 jSVCidstr=idstr; 2559} 2560function JSVCNameClick(obj,req) 2561{ 2562 var nm,val,osel,o2,clrid,spclist,noprompt,oind,spcnm; 2563 if(typeof(obj)=="string") 2564 { 2565 obj=JSVCRadioGetSelObj(obj+"nmsel"); 2566// obj=document.getElementsByName(obj+"nmsel"); 2567 if(obj==null) 2568 return; 2569 noprompt=1; 2570 } 2571 if(obj!=null) 2572 spcnm=obj.getAttribute("SPCNM"); 2573 if(spcnm==null||spcnm=="") 2574 spclist=new Array() 2575 else 2576 spclist=spcnm.split("|"); 2577 val=JSVCRadioGetValue(obj); 2578 clrid=0; 2579 if(val!=null) 2580 { nm=obj.name.substring(0,obj.name.length-5); 2581 if((val==1||val==2)&&jSVClocid==1) //#37546 2582 { 2583 if (typeof Cleardata === 'function') { 2584 AddOnloadCode(Cleardata()); 2585 } 2586 2587 } 2588 2589 if(val=="1" || val==spclist[0]) 2590 { // Company selected 2591 osel=document.getElementsByName(nm+"ID1cel"); 2592 o2=document.getElementsByName(nm+"ID1"); 2593 if(o2!=null && o2.length>0) 2594 { 2595 if(osel==null) 2596 o2[0].disabled=true 2597 else 2598 o2[0].disabled=false; 2599 DoReq(o2[0]); 2600 } 2601 if(val==spclist[0] && noprompt!=1) 2602 { 2603 if(!confirm(JSVClang("Are you sure you want to register this Name as {0}?\nPlease check properly and confirm.\n\nClick OK to Confirm {1}, Click Cancel to revert back to Normal",1541,0,spclist[1],spclist[1]))) 2604 { 2605 val=JSVCRadioGetValue(nm+"ID1cel",false); 2606 if(val=="1")JSVCRadioSetValue(obj,"1") 2607 else JSVCRadioSetValue(obj,"2"); 2608 return; 2609 } 2610 } 2611 if(osel!=null&&osel.length>0) 2612 { osel[0].checked=true;osel[0].disabled=false; 2613 if (osel[0].tagName=='SELECT'){/*#21291 if select company type, set company IDtype DDL chkrequired based on req*/ 2614 if(req==1) 2615 osel[0].setAttribute('CHKREQUIRED',1); 2616 osel[0].style.display=""; 2617 DoReq(osel[0]); 2618 } 2619 } 2620 JSVCRadioSetValue(nm+"ID1sel",null,true); 2621 var oind=document.getElementsByName(nm+"ID1sel"); 2622 if(oind!=null&&oind.length>0&&oind[0].tagName=='SELECT')/*#21291 if select company type, hide individual IDtype DDL*/ 2623 { 2624 oind[0].disabled=true; 2625 oind[0].style.display="none"; 2626 oind[0].removeAttribute('CHKREQUIRED'); 2627 DoReq(oind[0]); 2628 } 2629 o2=document.getElementsByName(nm+"nm")[0]; 2630 if(val==spclist[0]) 2631 { o2.readOnly=true; 2632 o2.style.color="gray"; 2633 o2.value=spclist[2]; 2634 } else 2635 { if(o2.readOnly==true) 2636 { o2.value="";clrid=1; } 2637 o2.readOnly=false; 2638 o2.style.color=""; 2639 } 2640 DoReq(o2); 2641 o2=document.getElementsByName(nm+"ID1")[0]; 2642 if(o2!=null) 2643 { 2644 if(val==spclist[0]) 2645 { o2.readOnly=true; 2646 o2.style.color="gray"; 2647 o2.value=spclist[3]; 2648 } else 2649 { o2.readOnly=false; 2650 o2.style.color=""; 2651 if(clrid==1) 2652 o2.value=""; 2653 } 2654 JSVCIDChk(o2); 2655 } 2656 o2=document.getElementsByName(nm+"ID2")[0]; 2657 if(o2!=null) 2658 { 2659 JSVCRadioSetValue(nm+"ID2sel",null,true); 2660 o2.disabled=true; 2661 o2.style.backgroundColor="silver"; 2662 JSVCIDChk(o2); 2663 } 2664 } 2665 else if(val=="2") 2666 { osel=document.getElementsByName(nm+"ID1cel"); 2667 if(osel!=null&&osel.length>0) 2668 { 2669 JSVCRadioSetValue(nm+"ID1cel",null,true); 2670 if (osel[0].tagName=='SELECT'){/*#21291 if select individual type, hide company IDtype DDL*/ 2671 osel[0].removeAttribute('CHKREQUIRED'); 2672 osel[0].style.display="none"; 2673 DoReq(osel[0]); 2674 } 2675 else 2676 { 2677 osel[0].checked=false;osel[0].disabled=true; 2678 } 2679 }
2680 JSVCRadioSetValue(nm+"ID1sel",null,false); 2681 o2=JSVCRadioGetSelObj(nm+"ID1sel"); 2682 if(o2==null) 2683 { o2=document.getElementsByName(nm+"ID1sel"); 2684 if(o2!=null&&o2.length>0) 2685 o2[0].checked=true; 2686 } 2687 o2=document.getElementsByName(nm+"ID1sel"); 2688 if(o2!=null&&o2.length>0&&o2[0].tagName=='SELECT'){/*#21291 if select individual type, set individual IDtype DDL chkrequired based on req*/ 2689 if(req==1) 2690 o2[0].setAttribute('CHKREQUIRED',1); 2691 o2[0].style.display=""; 2692 DoReq(o2[0]); 2693 } 2694 o2=document.getElementsByName(nm+"nm")[0]; 2695 if(o2.readOnly==true) 2696 { o2.value="";clrid=1;o2.style.color="";o2.readOnly=false; } 2697 DoReq(o2); 2698 o2=document.getElementsByName(nm+"ID1")[0]; 2699 if(o2!=null) 2700 { 2701 o2.disabled=false; 2702 if(clrid==1) 2703 { o2.value="";o2.readOnly=false;o2.style.color=""; } 2704 JSVCIDChk(o2); 2705 } 2706 if(o2==null) 2707 { o2=document.getElementsByName(nm+"ID2sel"); 2708 if(o2!=null&&o2.length>0) 2709 o2[0].checked=true; 2710 } 2711 o2=document.getElementsByName(nm+"ID2")[0]; 2712 if(o2!=null) 2713 { 2714 JSVCRadioSetValue(nm+"ID2sel",null,false); 2715 o2.disabled=false; 2716 o2.style.backgroundColor=""; 2717 JSVCIDChk(o2); 2718 } 2719 } 2720 } 2721} 2722 2723function JSVCGenIDStr(idtyp,nm,dis,req,sel,val, hiderad,nmtype,id_fld_chk) 2724{ // idtyp: 1=Main ID, 2=Sec ID (cannot be both) 2725 var o,t,itm,musttyp,genstr,chkformat,maxl,chkreq,idval, strhide = '',found=0; 2726 o=jSVCidstr.split("|"); 2727 if(val==null)val=""; 2728 val=val.toString(); 2729 genstr=""; 2730 chkformat=""; 2731 chkreq=req; 2732 2733 var typ1length = jSVCidstr.split('|*').length-1 2734 var typ2length = jSVCidstr.split('|+').length-1 2735 var typ3length = jSVCidstr.split('|^').length-1 /*for company ID type not using default default Co Reg No.*/ 2736 var typ0length = o.length - typ1length - typ2length - typ3length 2737 2738 if(sel==null) 2739 sel=-1; 2740 if(chkreq==2) 2741 if(sel==null || sel<=0)chkreq=0; 2742 if(hiderad != null && hiderad == 1) 2743 strhide = " style=\"display: none;\"" 2744 if (idtyp != 2 && o[0].length > 0 && o[0].split("!")[0]==1) { /*for existing company ID type which has only option Co Reg No.*/ 2745 itm=o[0].split("!"); 2746 idval=itm[0]; 2747 if(itm[1].substring(0,3)=="FN:") 2748 itm[1]=eval(itm[1].substring(3,itm[1].length)); 2749 genstr += "<input URLVAR CHKNAME=\"ID type\" id=\"_" + nm + "0cel\" name=\"" + nm + "cel\"" + (sel == 1 ? " CHECKED" : "") + (dis == 1 || sel != 1 ? " PDISABLED DISABLED" : "") + " type=radio value=\""+SVChtm(idval)+"\" onclick=\"JSVCIDChk('" + nm + "')\"" + strhide + "><label for=\"_" + nm + "0cel\"" + strhide + "> " + SVChtm(itm[1]) + "</label>"; 2750 } 2751 else if (idtyp != 2 && o[0].length > 0) /*for company ID Type which is not using default Co Reg No.*/ 2752 { 2753 if(typ1length>10 || typ2length>10 || typ3length>10)//use ddl if more than 10 choices 2754 genstr+=" <select URLVAR CHKNAME=\"ID type\" id=\"_"+nm+"0cel\" name=\""+nm+"cel\" onchange=\"DoReq(this);JSVCIDChk('"+nm+"');DoReq(this);\" "+(chkreq>0?"CHKREQUIRED ":"")+(dis==1||nmtype!=2?" DISABLED":"")+(nmtype!=2?" style=display:none; ":"")+"><option value=\"\"></option>"; 2755 2756 for(t=0;t<o.length;t++) 2757 { itm=o[t]; 2758 if(o[t].length!="" && itm.substring(0,1)=="^") 2759 { itm=itm.slice(1); 2760 itm=itm.split("!"); 2761 idval=itm[0]; 2762 itm=itm[1].split("~"); 2763 if(itm[0].substring(0,3)=="FN:") 2764 itm[0]=eval(itm[0].substring(3,itm[0].length)); 2765 if(typ1length>10 || typ2length>10 || typ3length>10)//use ddl if more than 5 choices 2766 genstr+=" <option value=\""+SVChtm(idval)+"\"" +(itm.length>1&&itm[1].length>0?" DOCHKFORMAT=\""+itm[1]+"\"":"") + strhide +" "+(sel!=1&&dis!=1&&(sel==idval)?" selected":"")+">"+SVChtm(itm[0])+"</option>"; 2767 else 2768 genstr+=" <input URLVAR CHKNAME=\"ID type\" id=\"_"+nm+t+"cel\" name=\""+nm+"cel\" "+(chkreq>0?"CHKREQUIRED ":"")+(sel==1||dis==1?" DISABLED":"")+(sel!=1&&dis!=1&&(sel==idval||(sel==-1&&val==""&&found!=1))?" CHECKED":"")+" type=radio"+(itm.length>1&&itm[1].length>0?" DOCHKFORMAT=\""+itm[1]+"\"":"")+" value=\""+SVChtm(idval)+"\" onblur=DoReq(this) onclick=\"JSVCIDChk('"+nm+"');DoReq(this);\"" + strhide + "><label for=\"_"+nm+t+"cel\"" + strhide + "> "+SVChtm(itm[0])+"</label>"; 2769 2770 if(sel!=1&&dis!=1&&(sel==t+1)&&itm.length>1&&itm[1].length>0) 2771 chkformat=itm[1]; 2772 found=1; 2773 } 2774 } 2775 if(typ1length>10 || typ2length>10 ||typ3length>10)//use ddl if more than 10 choices 2776 genstr+=" </select>"; 2777 } 2778 2779 if((idtyp==1 && typ1length>10) || (idtyp==2 && typ2length>10))//use ddl if more than 10 choices 2780 genstr+=" <select URLVAR CHKNAME=\"ID type\" id=\"_"+nm+t+"sel\" name=\""+nm+"sel\" onchange=\"DoReq(this);JSVCIDChk('"+nm+"');DoReq(this);\" "+(chkreq>0?"CHKREQUIRED ":"")+"><option value=\"\"></option>"; 2781 2782 for(t=1;t<o.length;t++) 2783 { itm=o[t]; 2784 if(o[t].length!="" && itm.substring(0,1)!="^") 2785 { if(itm.substring(0,1)=="*")musttyp=1 2786 else if(itm.substring(0,1)=="+")musttyp=2 2787 else musttyp=0; 2788 if(musttyp>0)itm=itm.slice(1); 2789 itm=itm.split("!"); 2790 idval=itm[0]; 2791 itm=itm[1].split("~"); 2792 if(itm[0].substring(0,3)=="FN:") 2793 itm[0]=eval(itm[0].substring(3,itm[0].length)); 2794 if(musttyp==0 || musttyp==idtyp) 2795 { 2796 //if(sel==-1&&val=="")sel=t+1; 2797 if( (musttyp==0 && typ0length>10) || (musttyp==1 && typ1length>10) || (musttyp==2 && typ2length>10) )//use ddl if more than 10 choices 2798 genstr+=" <option value=\""+SVChtm(idval)+"\"" +(itm.length>1&&itm[1].length>
27980?" DOCHKFORMAT=\""+itm[1]+"\"":"") + strhide +" "+(sel!=1&&dis!=1&&(sel==idval||(sel==-1&&val==""&&found!=1))?" selected":"")+">"+SVChtm(itm[0])+"</option>"; 2799 else 2800 genstr+=" <input URLVAR CHKNAME=\"ID type\" id=\"_"+nm+t+"sel\" name=\""+nm+"sel\" "+(chkreq>0?"CHKREQUIRED ":"")+(sel==1||dis==1?" DISABLED":"")+(sel!=1&&dis!=1&&(sel==idval||(sel==-1&&val==""&&found!=1))?" CHECKED":"")+" type=radio"+(itm.length>1&&itm[1].length>0?" DOCHKFORMAT=\""+itm[1]+"\"":"")+" value=\""+SVChtm(idval)+"\" onblur=DoReq(this) onclick=\"JSVCIDChk('"+nm+"');DoReq(this);"+(!!id_fld_chk?id_fld_chk:"") + "\"" + strhide + "><label for=\"_"+nm+t+"sel\"" + strhide + "> "+SVChtm(itm[0])+"</label>"; 2801 2802 if(sel!=1&&dis!=1&&(sel==t+1)&&itm.length>1&&itm[1].length>0) 2803 chkformat=itm[1]; 2804 found=1; 2805 } 2806 } 2807 } 2808 2809 if((idtyp==1 && typ1length>10) || (idtyp==2 && typ2length>10))//use ddl if more than 10 choices 2810 genstr+=" </select>"; 2811 2812 /*if(typeof(val)=="string" && val.length>20)maxl=30 2813 //else maxl=16; EPolicy - ToBuild #13076_ [SG] Etiqa - FPS SIM - ID field needs to be 20 characters - Redmine 2814 else #28692*/ 2815 maxl=30; 2816 if(req==2 && val=="")req=0; 2817 if (genstr != "") 2818 { 2819 if(hiderad == null || hiderad == 0) 2820 genstr += "<br>"; 2821 genstr += "<input URLVAR " + (req > 0 ? "CHKREQUIRED " : "") + "name=\"" + nm + "\"" + " id=\"" + nm + "\"" + (chkformat == "" ? "" : " CHKFORMAT=\"" + chkformat + "\"") + " maxlength=" + maxl + " size=30 style=text-transform:uppercase VALUE=\"" + (val != null ? SVChtm(val) : "") + "\" onblur=\"JSVCIDChk(this);"+(!!id_fld_chk?id_fld_chk:"") + "\""+ (dis == 1 ? " DISABLED" : "") + ">"; 2822 } 2823 return genstr; 2824} 2825function JSVCIsDate(dateStr) { // dd/mm/yyyy 2826 var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/; 2827 var matchArray = dateStr.match(datePat); 2828 if (matchArray == null) return false; 2829 day = matchArray[1]; // parse date into variables 2830 month = matchArray[3]; 2831 year = matchArray[5]; 2832 if ( (month < 1 || month > 12) || (day < 1 || day > 31) || ((month==4 || month==6 || month==9 || month==11) && day==31)) 2833 return false; 2834 else if (month == 2) { 2835 var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)); 2836 if (day > 29 || (day==29 && !isleap)) return false; 2837 } 2838 return true; // date is valid 2839} 2840function JSVCCHKMyICDOB(str,ret) { // 0-return true/false 1-return date str. 2841 if (ret==null)ret=0; 2842 if (str.length == 6 /*&& str.search(/^[0-9]+$/) == 0*/) { 2843 var yyyy=str.substr(0,2); 2844 var mm=str.substr(2,2); 2845 var dd=str.substr(4,2); 2846 var dt=new Date(), century, curyear; 2847 curyear=dt.getFullYear(); 2848 century=dt.getFullYear().toString().substr(0,2); 2849 2850 if ( parseInt(century+yyyy) < parseInt(curyear) || ( parseInt(century+yyyy) == parseInt(curyear) && parseInt(mm) < parseInt(dt.getMonth()+1)) || ( parseInt(century+yyyy) == parseInt(curyear) && parseInt(mm) == parseInt(dt.getMonth()+1)) && parseInt(dd) < parseInt(dt.getDate()) ) /* check day and month if last 2digit of year is same (19' and 20') */ 2851 yyyy=century+''+yyyy; 2852 else 2853 yyyy=(parseInt(century-1).toString())+''+yyyy; 2854 2855 if (JSVCIsDate(dd+'/'+mm+'/'+yyyy)) 2856 return (ret?(dd+'/'+mm+'/'+yyyy):true); 2857 } 2858 return (ret?"":false); 2859} 2860function JSVCSetDOB(src,tgt,tgtfrm,idchk) { 2861 if(idchk==null)idchk=0; 2862 var dotrig = false; 2863 var sobj=(typeof(src)=="object"?src:document.getElementById(src)); 2864 var idtype=0; 2865 2866 if(idchk) 2867 { 2868 if( src.name && src.name.length>4 && src.name.substring(src.name.length-4) == "1sel" ) 2869 sobj = $(sobj).next("input[name$='ID1']").get(0); 2870 if( $(sobj).prev("select[name$='1sel']").length > 0 ) 2871 idtype=$(sobj).prev("select[name$='1sel']").val(); 2872 else if ($(sobj).siblings("[name$='ID1sel']:checked").length > 0 && $(sobj).siblings("[name$='ID1sel']:checked").val()==2) 2873 idtype=2; 2874 if(idtype != 2) return; 2875 } 2876 2877 if(tgt==null) 2878 { 2879 if(sobj!=null && sobj.getAttribute("nameidobj")!=null) //automagically resolve DOB using JSVCNameIDObject 2880 { 2881 tgt = eval(sobj.getAttribute("nameidobj")).nmStr + "DOB"; 2882 if( tgt == "" ) 2883 return ""; 2884 dotrig = true; 2885 } 2886 } 2887 if (tgtfrm!=null) 2888 var tobj=document.getElementById(tgtfrm).elements[tgt]; 2889 else
2890 var tobj=document.getElementById(tgt); 2891 if(sobj!=null&&tobj!=null) { 2892 var tmp=JSVCCHKMyICDOB(sobj.value.substring(0,6),1); 2893 if(tmp!="") tobj.value=tmp; 2894 DoReq(tobj); ObjDate(tobj); 2895 } 2896 if(dotrig) $('#'+tgt).trigger('blur'); 2897 return ""; 2898} 2899 2900function JSVCSetGenMyIC(src,tgt,tgtfrm,male1,idchk) /* sets the gender. male1 flag because in claims,1=female,2=male whereas in epl:1=male,2=female*/ 2901{ 2902 if(idchk==null)idchk=0; 2903 var dotrig = false; 2904 var sobj=(typeof(src)=="object"?src:document.getElementById(src)); 2905 var idtype=0; 2906 2907 if(idchk) 2908 { 2909 if( src.name && src.name.length>4 && src.name.substring(src.name.length-4) == "1sel" ) 2910 sobj = $(sobj).next("input[name$='ID1']").get(0); 2911 if( $(sobj).prev("select[name$='1sel']").length > 0 ) 2912 idtype=$(sobj).prev("select[name$='1sel']").val(); 2913 else if ($(sobj).siblings("[name$='ID1sel']:checked").length > 0 && $(sobj).siblings("[name$='ID1sel']:checked").val()==2) 2914 idtype=2; 2915 if(idtype != 2) return; 2916 } 2917 2918 if(tgt==null) 2919 { 2920 if(sobj!=null && sobj.getAttribute("nameidobj")!=null) //automagically resolve DOB using JSVCNameIDObject 2921 { 2922 tgt = eval(sobj.getAttribute("nameidobj")).nmStr + "Gender"; 2923 if( tgt == "" ) 2924 return ""; 2925 dotrig = true; 2926 } 2927 } 2928 if (tgtfrm!=null) 2929 var tobj=document.getElementById(tgtfrm).elements[tgt]; 2930 else 2931 var tobj=document.getElementById(tgt); 2932 if(male1==null)male1=true; 2933 if (sobj!=null){ 2934 if(tobj!=null){//gender ddl (def) 2935 if (sobj.value.substring(10,14)!="") 2936 { 2937 if (sobj.value.substring(10,14)%2) 2938 tobj.value=(male1?1:2); 2939 else 2940 tobj.value=(male1?2:1); 2941 } 2942 DoReq(tobj); 2943 }else if(document.getElementsByName(tgt)&&JSVCall(tgt)!=null){//gender radio 2944 if (sobj.value.substring(10,14)!="") 2945 { 2946 if (sobj.value.substring(10,14)%2) 2947 tgt=tgt+(male1?'1':'2'); 2948 else 2949 tgt=tgt+(male1?'2':'1'); 2950 document.getElementById(tgt).checked=true; 2951 } 2952 DoReq(tgt); 2953 } 2954 } 2955 if(dotrig) $('#'+tgt).trigger('change'); 2956 return ""; 2957} 2958function JSVCSetGenMySalutation() //#30152 2959{ 2960 var sobj=document.getElementById("sleDGender"); 2961 var iobj=document.getElementById("sleIGender"); 2962 var tobj=document.getElementById("_sleDSalutation1sel"); 2963 var sameinsured=document.getElementById("COPYINSURED"); 2964 if (sobj!=null && sameinsured!=null && iobj!=null && tobj!=null && sameinsured.checked == false){ 2965 if(tobj!=null){ 2966 if (sobj.value==2) 2967 { 2968 tobj.value="Mr"; 2969 }else{ 2970 tobj.value="Ms"; 2971 } 2972 DoReq(tobj); 2973 } 2974 }else{ 2975 if(tobj!=null){ 2976 if (iobj.value==2) 2977 { 2978 tobj.value="Mr"; 2979 }else{ 2980 tobj.value="Ms"; 2981 } 2982 DoReq(tobj); 2983 } 2984 } 2985} 2986 2987function JSVCGenDOBTrig(src,dobid,genid,male1) 2988{ 2989 if(dobid!=null) 2990 { 2991 var dobobj = document.getElementById(dobid); 2992 if(dobobj != null && dobobj.value == "") 2993 { 2994 JSVCSetDOB(src, dobid, null, 1); 2995 } 2996 } 2997 if(genid!=null) 2998 { 2999 var genobj = document.getElementById(genid); 3000 if( genobj != null && genobj.value == "" ) 3001 { 3002 JSVCSetGenMyIC(src,genid,null,male1,1); 3003 } 3004 } 3005} 3006 3007function JSVCIDChkMyIC(obj,chkdob) 3008{ 3009 if(obj==null)return ""; 3010 if(chkdob==null)chkdob=0; // 1=make sure yymmdd is valid 3011 str=obj.value.replace(/[^0-9]/g,""); 3012 if(str.length==12 && (chkdob==0 || (chkdob==1 && JSVCCHKMyICDOB(str.substring(0,6),0)==true ))) 3013 { obj.value=str.substring(0,6)+"-"+str.substring(6,8)+"-"+str.substring(8,12); 3014 return ""; 3015 } 3016 return (JSVClang("should be Malaysian NRIC format",12455)+ " [yymmdd-xx-xxxx]."); 3017} 3018 3019/* 3020 EPolicy - Customization #16380_ [TH] Sompo - ID number checking - Redmine 3021 3022 Thailand IC number Check 3023 3024 IC formate: A BBBB CCCCC DD E 3025 3026 A - Signifies type of citizenship 3027 BBBB - Office where the number was issued 3028 CCCCC DD - Group and sequence numbers 3029 E - Check digit 3030*/ 3031function JSVCIDChkThIC(obj,company){ 3032 if(company==null) company = 0; 3033 var THid = $(obj).val().replace(/[^0-9]/g,""); 3034 var 3035 chk_val, 3036 val_01 = THid.charAt(0), 3037 val_02 = THid.charAt(1), 3038 val_03 = THid.charAt(2), 3039 val_04 = THid.charAt(3), 3040 val_05 = THid.charAt(4), 3041 val_06 = THid.charAt(5), 3042 val_07 = THid.charAt(6), 3043 val_08 = THid.charAt(7), 3044 val_09 = THid.charAt(8), 3045 val_10 = THid.charAt(9), 3046 val_11 = THid.charAt(10), 3047 val_12 = THid.charAt(11), 3048 val_13 = THid.charAt(12); 3049 3050 // Replace the id number that without "-" 3051 $(obj).val(THid); 3052 if (THid.length == 13){ 3053 // Checksum 3054 // 3055 chk_val = 11 - (((val_01*13)+(val_02*12)+(val_03*11)+(val_04*10)+(val_05*9)+(val_06*8)+(val_07*7)+(val_08*6)+(val_09*5)+(val_10*4)+(val_11*3)+(val_12*2))%11); 3056 3057 if (chk_val == 10){ 3058 chk_val = 0; 3059 } else if (chk_val == 11) { 3060 chk_val = 1; 3061 } 3062 3063 if (val_13 != chk_val || (company==1 && val_01!= 0)){ 3064 return JSVClang("should be Thailand NRIC format",25734)+ " 13 integer."; 3065 } 3066 return ""; 3067 } 3068 return JSVClang("should be Thailand NRIC format",25734)+ " [x-xxxx-xxxxx-xx-x]."; 3069} 3070 3071function JSVCIDChkSgIC(obj) 3072{ var chksum,chk; 3073 if(obj==null)return ""; 3074 str=obj.value.toUpperCase().replace(/[^A-Z0-9]/g,""); 3075 if(str.search(/^[SFTG][0-9]{7}[A-Z]$/)==0) 3076 { // Checksum 3077 obj.value=str; 3078 chksum=(((str.charAt(0)=="T"||str.charAt(0)=="G")?4:0)+parseInt(str.charAt(1))*2+parseInt(str.charAt(2))*7+parseInt(str.charAt(3))*6+parseInt(str.charAt(4))*5+parseInt(str.charAt(5))*4 3079 +parseInt(str.charAt(6))*3+parseInt(str.charAt(7))*2)%11; 3080 if(str.charAt(0)=="S"||str.charAt(0)=="T")chk="JZIHGFEDCBA" 3081 else chk="XWUTRQPNMLK"; 3082 if(str.charAt(8)==chk.charAt(chksum)) 3083 return ""; 3084 return JSVClang("fails validation for a valid Singapore NRIC.\nPlease check you typed it in correctly.",12456); 3085 } 3086 return JSVClang("should be Singapore NRIC format",12457)+ " [X9999999X]."; 3087} 3088function JSVCIDChkAeIC(obj)//UAE ID check 3089{ 3090 if(obj==null) return ""; 3091 3092 str=obj.value.replace(/[^0-9]/g,""); 3093 3094 if( (str.length==15) && obj.value.match(/^\d+$/)) return ""; 3095 3096 return JSVClang("format: 15 digits. Currently, the system just allows 15 digits.",0)+ ""; 3097} 3098function JSVCIDChkVnIC(obj)//Vietnam ID check 3099{ 3100 if(obj==null) return ""; 3101 3102 str=obj.value.replace(/[^0-9]/g,""); 3103 3104 if( (str.length==9 || str.length==12) && obj.value.match(/^\d+$/)) return ""; 3105 3106 return JSVClang("format: 9 digits or 12 digits. Currently, the system just allows 12 digits.",28875)+ ""; 3107} 3108function JSVCIDChkCnIC(obj,idtypechk)//China ID check - param2 not mandatory 3109{ 3110 //checking if there is id type need to be selected - for EPLTMCN 3111 if((document.getElementById(idtypechk))&& $("#"+idtypechk+" option:selected").text().toUpperCase()!= 'ID CARD'){ 3112 return ""; 3113 } 3114 var ID = obj.value; 3115 if(ID=="")return; 3116 ID = ('' + ID).replace(/(^\s*)|(\s*$)/g, ""); 3117 3118 if (/^[1-9]{1}[0-9]{16}([0-9]|[xX])$/.test(ID)) { 3119 if (checkDate(ID)) { 3120 var arrID = ID.split(''); 3121 var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1]; 3122 var checkCode = [1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2]; 3123 3124 var sum = 0; 3125 if (arrID[17].toUpperCase() == 'X') arrID[17] = 10; 3126 for (var i = 16; i >= 0; sum+=arrID[i]*factor[i],i--); 3127 if(arrID[17] == checkCode[sum % 11]){ 3128 return ""; 3129 } 3130 else{ 3131 3132 return JSVClang("invalid ",32125)+ ""; 3133 } 3134 } else { 3135 return JSVClang("invalid ",32125)+ ""; 3136 3137 }; 3138 } 3139 else { 3140 return JSVClang("invalid ",32125)+ ""; 3141 }; 3142 3143 function checkDate(ID) { 3144 if (ID.length == 18) { 3145 var year = ID.substring(6, 10);
3146 var month = ID.substring(10, 12); 3147 var day = ID.substring(12, 14); 3148 var tempDate = new Date(parseInt(year), parseInt(month)-1, parseInt(day)); 3149 return (tempDate.getFullYear() != parseInt(year) || tempDate.getMonth() != parseInt(month)-1 || tempDate.getDate() != parseInt(day)) 3150 ? false 3151 : true; 3152 } else { 3153 return false; 3154 }; 3155 }; 3156} 3157 3158function JSVCIDChkTIN(obj,IDtype){ 3159 var NAEnabled=1; 3160 if(obj.getAttribute('naenabled')!=null){ 3161 NAEnabled=obj.getAttribute('naenabled'); 3162 } 3163 if (IDtype==2){ 3164 var reg = /^[a-zA-Z][\w]{8,12}[01]$/; 3165 var result = reg.test(obj.value); 3166 if(obj.value !== '' && result == false){ 3167 if (typeof _APP !== 'undefined' && _APP=='EPL') { 3168 return JSVClang("Invalid TIN format. TIN No. should have maximum of 14 characters. It must end with 0 for a husband, or end with 1 for a wife",0); 3169 } else { 3170 return JSVClang("Invalid TIN format, it should be between 10-14 characters, starting with alphabet and ending with 0 or 1 (inclusive)",0); 3171 } 3172 3173 } 3174 } 3175 else{ 3176 var reg = /^[a-zA-Z][\w]{8,12}[01]$/; 3177 var result = reg.test(obj.value); 3178 if(obj.value !== '' && result == false){ 3179 if (obj.value !== 'NA' || (NAEnabled!=1 && obj.value == 'NA')) { 3180 return JSVClang("Invalid TIN format, it should be between 10-14 characters, starting with alphabet and ending with 0 (inclusive)",0); 3181 } else { 3182 return 0; 3183 } 3184 } 3185 } 3186 return ""; 3187} 3188 3189function JSVCIDChk(obj,incdisabled) 3190{ // Customize per-locale ID checking here 3191 if(incdisabled==null) incdisabled = false; 3192 3193 var nm,obj2,ver; 3194 if(typeof(obj)=="string") 3195 { nm=obj;obj=document.getElementsByName(nm)[0]; } 3196 else 3197 nm=obj.name; 3198 // Get selected object 3199 if(obj==null)return; 3200 obj2=JSVCRadioGetSelObj(nm+"sel",(incdisabled?null:false)); 3201 if(obj2==null) 3202 obj2=JSVCRadioGetSelObj(nm+"cel",(incdisabled?null:false)); 3203 if(obj2==null) /*#21291 check if its select ddl*/ 3204 obj2=document.getElementsByName(nm+"cel")[0]; 3205 if(obj2==null || (obj2 && obj2.disabled)) 3206 obj2=document.getElementsByName(nm+"sel")[0]; 3207 if(obj2==null || (obj2 && obj2.disabled)) 3208 obj.disabled=true 3209 else 3210 obj.disabled=false; 3211 if(obj2!=null) 3212 if (obj2.tagName=='SELECT' && obj2.selectedIndex>-1) /*#21291 check if its select ddl*/ 3213 ver=obj2.options[obj2.selectedIndex].getAttribute("DOCHKFORMAT"); 3214 else 3215 ver=obj2.getAttribute("DOCHKFORMAT"); 3216 if(ver!=null && typeof(ver)=="string" && ver.length>0) 3217 obj.setAttribute("CHKFORMAT",ver) 3218 else 3219 obj.removeAttribute("CHKFORMAT"); 3220 DoReq(obj); 3221} 3222//Kian Yee : Generate ID string return as string instead 3223function JSVCchkSvcTaxMY(obj){ 3224 var reg = /^[A-Z][0-9]{2}-[0-9]{2}(0[1-9]|1[0-2])-[0-9]{8}$/; 3225 var result = reg.test(obj.value); 3226 3227 if(obj.value !== '' && result == false){ 3228 if (typeof _APP !== 'undefined' && _APP=='EPL') { 3229 return JSVClang("Invalid Service Tax No. Format<br>âªExample: ANN-YYMM-NNNNNNNN (eg:A12-9912-12345678)<br>âªConsist of alphanumeric characters including dash",0); 3230 } 3231 else { 3232 return JSVClang( 3233 "Invalid SST No. format. SST No. should be in this format: ANN-YYMM-NNNNNNNN<br>" + 3234 "a) Total 17 characters including dash '-'<br>" + 3235 "b) A = Alphabetical (A-Z)<br>" + 3236 "c) YY = Year (00-99)<br>" + 3237 "d) MM = Month (01-12)<br>" + 3238 "e) N = Number (0-9)<br>" + 3239 "f) Position 4 and 9 must be a dash '-'", 3240 0 3241 ); 3242 } 3243 } 3244 return ""; 3245} 3246function JSVCGenNameIDStr(text,nmtyp,iddisp,nm,dis,nmreq,nmsel,nmval,req1,sel1,val1,req2,sel2,val2,spcnm,nmselchgExec,appendHTML,hiderad1,hiderad2,id_fld_chk,mic,readonly,ciidtype,forcetblfmt,bluenote,id1_maxlength,nm_fld_chk,nationalityinput,nationalitycurval,nationalityreq,nationalitydisabled,NameIDObject) 3247{ // text: String or String Array of text (e.g. Claimant,Insured,Driver) 3248 // nmtyp: Name type - 1 - Individual only, 2 - Individual and company 3249 // iddisp: Bit 1: Show Main ID, Bit 2: Show Sec ID 3250 // nm: Name of object 3251 // dis: Disabled or not 3252 // req/sel/val: Required(2=only if existing)/Type-Sel-Value/Value 3253 // spcnm: Special claimant like SPANCO (format: COID|ShortName|Name|CoRegNo) 3254 // appendHTML: HTML to append to Name column 3255 // id_fld_chk : additional onblur 3256 // forcetblfmt : force hardcode tablefmt 3257 // nm_fld_chk : additional onblur (name field) 3258 3259 //nationalityinput : 1 = show nationality input between the Primary ID and Secondary ID 3260 //nationalitycurval : current nationality value 3261 //nationalityreq : nationality required field status 3262 //nationalitydisabled : nationality disabled field status 3263 //NameIDObject : object for the NameID 3264 var spclist,genstr,fnlstr,tablefmt=true; 3265 var readonlytext=""; 3266 if(hiderad1 == null) hiderad1 = 0; 3267 if(hiderad2 == null) hiderad2 = 0; 3268 3269 fnlstr="";
3270 if(typeof(text)=="string") 3271 { var tmp=text; 3272 text=new Array(); 3273 text[0]=tmp+" "+JSVClang("Name",1173); 3274 text[1]=tmp+" "+JSVClang("ID",2122); 3275 text[2]=tmp+" "+JSVClang("Second ID",6030); 3276 } 3277 if(nmselchgExec==null)nmselchgExec=""; 3278 if(nmreq==null)nmreq=0; 3279 if(nmtyp==null)nmtyp=2; 3280 if(request.mobile!=null)tablefmt = false; 3281 if(mic==null)mic=0; 3282 if(bluenote==null)bluenote='';//#37546 3283 if(readonly){ 3284 readonlytext="readonly"; 3285 } 3286 if(mic==1) 3287 fnlstr+="<div><div valign=baseline>"+text[0]+"</div><div>"; 3288 else if(tablefmt) 3289 fnlstr+="<tr id=TRINSUREDDTL1><td valign=baseline>"+text[0]+"</td><td>"; 3290 else 3291 fnlstr+="<div class='row form-group' id=TRINSUREDDTL1><div class='"+request.mobile_col1+"'>"+text[0]+"</div><div class='"+request.mobile_col2+"'>"; 3292 3293 if(nmtyp==2) 3294 { fnlstr+="<input URLVAR ID=\"_"+nm+"nmselIND\" name=\""+nm+"nmsel\" CHKREQUIRED "+(nmsel==2?"CHECKED ":"")+"type=radio "+(dis==1?"DISABLED ":"")+" value=2 onclick=\"JSVCNameClick(this,"+req1+");"+nmselchgExec+"\"><label for=\"_"+nm+"nmselIND\"> "+JSVClang("Individual",6031)+"</label> "; 3295 fnlstr+="<input URLVAR ID=\"_"+nm+"nmselCOM\" name=\""+nm+"nmsel\" CHKREQUIRED "+(nmsel==1?"CHECKED ":"")+" type=radio value=1 "+(dis==1?" DISABLED ":"")+" onclick=\"JSVCNameClick(this,"+req1+");"+nmselchgExec+"\"><label for=\"_"+nm+"nmselCOM\"> "+JSVClang("Company",2033)+"</label> "; 3296 if(spcnm!=null && spcnm.length>0) 3297 { spclist=spcnm.split("|"); 3298 fnlstr+="<input URLVAR ID=\"_"+nm+"nmselSPC\" SPCNM=\""+spcnm+"\" name=\""+nm+"nmsel\" value="+spclist[0]+" CHKREQUIRED "+(nmsel==spclist[0]?"CHECKED ":"")+(dis==1?"DISABLED ":"")+" type=radio onclick=\"JSVCNameClick(this);"+nmselchgExec+"\"><label for=\"_"+nm+"nmselSPC\"> "+spclist[1]+"</label>"; 3299 } 3300 fnlstr+="<br>"; 3301 } 3302 //fnlstr+="<input URLVAR "+(nmreq>0?"CHKREQUIRED ":"")+" name=\""+nm+"nm\" id=\""+nm+"nm\" maxlength=100 size=50 VALUE=\""+nmval+"\" "+(dis==1?"DISABLED ":"")+" onblur=DoReq(this)>"; 3303 fnlstr+="<input URLVAR "+(!isNaN(nmreq)&&nmreq>0?"CHKREQUIRED ":(nmreq!=''?"CHKREQUIRED=\""+nmreq+"\" ":""))+" name=\""+nm+"nm\" id=\""+nm+"nm\" maxlength=200 size=50 VALUE=\""+SVChtm(nmval)+"\" "+(dis==1?"DISABLED ":"")+" onblur=DoReq(this) "+readonlytext+">"; 3304 3305 if(mic==1) 3306 fnlstr+=(nmtyp!=2?"<br><input type=radio style=visibility:hidden>":"")+(appendHTML!=null?"<br>"+appendHTML:"")+"</div>"; 3307 else if(tablefmt) 3308 fnlstr+=(nmtyp!=2?"<br><input type=radio style=visibility:hidden>":"")+(appendHTML!=null?"<br>"+appendHTML:"")+"<label style='color: blue; font-style:italic; font-weight: bold;'>"+(bluenote!=null?"<br>"+bluenote:"")+"</label>"+"</td></tr>";//#37546 3309 else 3310 fnlstr+=(nmtyp!=2?"<br><input type=radio style=visibility:hidden>":"")+(appendHTML!=null?"<br>"+appendHTML:"")+"</div></div>"; 3311 3312 if((iddisp&1)==1) 3313 { genstr=JSVCGenIDStr(1,nm+"ID1",dis,req1,sel1,val1, hiderad1,nmtyp,id_fld_chk); 3314 if(genstr!="" && genstr!=null) 3315 { 3316 if(mic==1) 3317 fnlstr+="<div valign=baseline>"+text[1]+"</div><div>"+genstr+"</div></div>"; 3318 else if(tablefmt) 3319 fnlstr+="<tr id=TRINSUREDDTL2><td valign=baseline>"+text[1]+"</td><td>"+genstr+"</td></tr>"; 3320 else 3321 fnlstr+="<div class=\"row form-group\" id=TRINSUREDDTL2><div class='"+request.mobile_col1+"'>"+text[1]+"</div><div class='"+request.mobile_col2+"'>"+genstr+"</div></div>"; 3322 } 3323 } 3324 3325 if(nationalityinput==1 && NameIDObject!=null){ 3326 fnlstr+=NameIDObject.genNationality(nationalitycurval,nationalityreq,nationalitydisabled); 3327 } 3328 3329 if((iddisp&2)==2) 3330 { 3331 genstr=JSVCGenIDStr(2,nm+"ID2",dis,req2,sel2,val2, hiderad2,nmtyp,id_fld_chk); 3332 if(genstr!="" && genstr!=null) 3333 { 3334 if(mic==1) 3335 fnlstr+=((iddisp&1)==1?"<div>":"")+"<div valign=baseline>"+text[2]+"</div><div>"+genstr+"</div>"+((iddisp&1)==0?"</div>":""); 3336 else if(tablefmt) 3337 fnlstr+="<tr id=TRINSUREDDTL3><td valign=baseline>"+text[2]+"</td><td>"+genstr+"</td></tr>"; 3338 else 3339 fnlstr+="<div class='row form-group' id=TRINSUREDDTL3><div class='"+request.mobile_col1+"' valign=baseline>"+text[2]+"</div><div class='"+request.mobile_col2+"'>"+genstr+"</div></div>"; 3340 } 3341 } 3342 if(dis!=1) 3343 { 3344 AddOnloadCode("JSVCNameClick('"+nm+"');"); 3345 } 3346 return fnlstr; 3347} 3348function JSVCDoIC(obj,oldic){ 3349 if(jSVClocid==1){ 3350 if(oldic==1){ 3351 if(CheckAlphaNum(obj.value)!='') SVCalert(CheckAlphaNum(obj.value)); 3352 }else{ 3353 if(JSVCIDChkMyIC(obj)!= '') SVCalert(JSVCIDChkMyIC(obj)); } 3354 }else if(jSVClocid==2){ 3355 if(JSVCIDChkSgIC(obj)!= '') SVCalert(JSVCIDChkSgIC(obj)); 3356 }else{ 3357 if(JSVCIDChkMyIC(obj)!= '') SVCalert(JSVCIDChkMyIC(obj)); 3358 } 3359 3360 3361} 3362function JSVCDoMobile(obj,re,allowNoPhone,showalert) /* changed alert to showalert. alert is a js reserved word */ 3363{ 3364 var r; 3365 Despace(obj); 3366 r=obj.value.toUpperCase(); 3367 if(allowNoPhone==null) 3368 allowNoPhone=1; 3369 if(showalert==null) showalert=1; 3370 if(r.length>0) 3371 { if(r=="NOPHONE" && allowNoPhone==1) 3372 obj.value=r 3373 else 3374 { if(re==null) 3375 re=obj.getAttribute("MRMREFORMAT"); 3376 if(re!="") 3377 { 3378 re=new RegExp(re); 3379 if(r.search(re)<0 || (r==(("000000000000000000").substring(0,r.length)))) 3380 { 3381 if(showalert==1) { 3382 alert(JSVClang("Invalid mobile number.",3337),-1,"ALERT"); 3383 } 3384 3385 obj.value=""; 3386 obj.select(); 3387 }} 3388 } 3389 } 3390 if(obj.getAttribute("prefix") && obj.getAttribute("prefix")==1) 3391 DoReq(obj.previousSibling); 3392 else 3393 DoReq(obj); 3394} 3395function JSVCDoPhone(obj,rx,allowNoPhone,showalert) 3396{ 3397 var val,re,val2,chkreq,msg=''; 3398 val=obj.value; 3399 val2=obj.getAttribute("CURVALUE"); 3400 chkreq=obj.getAttribute("CHKREQUIRED"); 3401 if(allowNoPhone==null) 3402 allowNoPhone=1; 3403 if(showalert==null) showalert=1; 3404 if(val2 && val2!="" && val==val2) 3405 return; 3406 if(rx!=null && rx!="") { 3407 re=new RegExp(rx); 3408 } else { 3409 if(jSVClocid==2) 3410 re=/^[3689][0-9]{7}$/; 3411 else if(jSVClocid==15) 3412 re=/^[0][0-9]{7,10}$/; 3413 else if(jSVClocid==14) 3414 re=/^[0-9]{8,10}(\/[0-9]+)*$/; 3415 else 3416 re=/^\+?[0-9]{2,}\-[0-9]{6,8}(\/[0-9]+)*$/; 3417 } 3418 if(val.search(re)<0 && val!="") 3419 { 3420 if(chkreq!=null && val.toUpperCase().search("NOPHONE")>=0 && allowNoPhone==1) 3421 val="NOPHONE"; 3422 else { 3423 if(rx) 3424 msg=JSVClang("Invalid phone format.",25736); 3425 else 3426 if(jSVClocid==2) 3427 msg=JSVClang("Invalid phone format. Use 3xxxxxxx/6xxxxxxx/8xxxxxxx/9xxxxxxx format.",12458); 3428 else if(jSVClocid==15) 3429 msg=JSVClang("Invalid phone format. Use ",25737)+"0xxxxxxx/0xxxxxxxx/0xxxxxxxxx/0xxxxxxxxxx format."; 3430 else if(jSVClocid==14) 3431 msg=JSVClang("Invalid phone format. Use ",25737)+'xxxxxxxx or xxx-xxxxxxx/xx/xx (for extensions) format.'; 3432 else 3433 msg=JSVClang("Invalid phone format. Use xxx-xxxxxxx or xxx-xxxxxxx/xx/xx format.",5693); 3434 val=""; 3435 3436 if(msg!='' && showalert==1) alert(msg); 3437 } 3438 } 3439 obj.value=val; 3440 3441 DoReq(obj); 3442 3443 if(msg!='' && showalert==0) return msg; 3444} 3445function JSVCDoEmail(obj,type,allownoemail,showalert) { 3446 var r,rx,objset,c;
3447 Despace(obj); 3448 r=obj.value; 3449 if(obj.name) objset=document.getElementsByName(obj.name); 3450 if(type==null) type=0; 3451 if(allownoemail==null) allownoemail=1; 3452 if(showalert==null) showalert=1; 3453 if(r.length>0) { 3454 if(allownoemail==1 && r.toUpperCase()=='NOEMAIL') { 3455 if(objset.length>1) // multi 3456 { 3457 for(c=0;c<objset.length;c++) { 3458 objset[c].value=(c==0?'NOEMAIL':''); 3459 DoReq(objset[c]); 3460 } 3461 } else 3462 document.getElementById(obj.id).removeAttribute('chkreformat'); 3463 obj.value=r.toUpperCase(); 3464 } else { 3465 if(type==1) 3466 rx=/^[\w&\-']+(?:\.[\w&\-']+)*@(?:[\w-]+\.)+[a-zA-Z]{2,15}$|^([0-9a-zA-Z_]{3,20})$/; 3467 else 3468 rx=/^[\w&\-']+(?:\.[\w&\-']+)*@(?:[\w-]+\.)+[a-zA-Z]{2,15}$/; 3469 if(!rx.test(r)) { 3470 document.getElementById(obj.id).setAttribute('chkreformat',rx.toString().slice(1,-1)); 3471 if(showalert==1) 3472 SVCalert(JSVClang("Invalid Email.",12459),null,null,"JSVCDoFocus(JSVCall('"+obj.id+"'))"); 3473 } 3474 } 3475 } 3476 DoReq(obj); 3477} 3478function JSVCGetMobile(nm) 3479{ var o,ret; 3480 o=document.getElementsByName(nm); 3481 if(o!=null && o.length>0) 3482 { o=o[0]; 3483 o2=o.previousSibling; 3484 if(o.value!="NOPHONE"&&o.value!=""&&o2!=null&&o2.tagName=="SELECT"&&o2.value!="") 3485 return o2.value+o.value; 3486 } 3487 return ""; 3488} 3489 3490//KY: To set value for mobile phone field from javascript populate 3491function JSVCSetMobile(objname,val){ 3492 var phoneobj,prefixobj,t,preflen; 3493 phoneobj=document.getElementById(objname); 3494 prefixobj=document.getElementById(objname+'pref'); 3495 if(phoneobj&&prefixobj){ 3496 preflen=0; 3497 prefixobj.value = ''; 3498 if(val==null)val=''; 3499 if(val.length > 0){ 3500 for (t = 0; t < prefixobj.options.length; t++) { 3501 if (val.substring(0, prefixobj.options[t].value.length) == prefixobj.options[t].value) { 3502 prefixobj.value = prefixobj.options[t].value; 3503 preflen = prefixobj.options[t].value.length; 3504 } 3505 } 3506 } 3507 document.getElementById(objname).value=val.substring(preflen, val.length); 3508 document.getElementById(objname).onblur(); 3509 } 3510} 3511 3512function JSVCGenMobile(name,prefixes,postfixRE,value,req,disabled,allowNoPhone,fld_chk) 3513{ 3514 var aprefixes,t,sel,out; 3515 out=""; 3516 if(prefixes==null) 3517 prefixes=""; 3518 if(req==null) 3519 req=1; 3520 if(allowNoPhone==null) 3521 allowNoPhone=1; 3522 if(prefixes!="") 3523 { 3524 sel=0; 3525 br=0; //#44174 3526 splitprefix=prefixes.split(","); //#44281 Khai 3527 aprefixes = splitprefix.sort((a,b) => b.length - a.length); //#44281 Khai sorted prefix from longest to shortest to solve 4 digits prefix split issues 3528 if (aprefixes.length > 1) // If more than one Prefixes 3529 { 3530 out += "<select CHKREQUIRED=\"obj.nextSibling.value!='NOPHONE'" + (req == 1 ? "" : "&&obj.nextSibling.value!=''") + "\" id=\"" + name + "pref\" name=\"" + name + "pref\" onblur=DoReq(this);DoReq(this.nextSibling); " + (disabled ? "DISABLED" : "") + ">" + (aprefixes.length > 1 ? "<OPTION VALUE=''></OPTION>" : ""); 3531 for (t = 0; t < aprefixes.length; t++) { 3532 if (br == 0 && sel == 0 && value != null && value.length > 0 && value.substring(0, aprefixes[t].length) == aprefixes[t]) { 3533 sel = 1; 3534 value = value.slice(aprefixes[t].length); 3535 br = 1; 3536 } 3537 else 3538 sel = 0; 3539 out += "<OPTION value=\"" + aprefixes[t] + "\"" + (sel == 1 ? " SELECTED" : "") + ">" + aprefixes[t] + "</OPTION>"; 3540 } 3541 out += "</select>"; 3542 } 3543 else // IF only one Prefix (Added By Oliver 11May2010) 3544 { 3545 var prefvalue = aprefixes[0]; 3546 var preflen = prefvalue.length; 3547 3548 if(value.length>=preflen && value.substring(0,preflen)==prefvalue) 3549 value=value.slice(preflen); 3550 3551 out += "<input CHKREQUIRED=\"obj.nextSibling.value!='NOPHONE'" + (req == 1 ? "" : "&&obj.nextSibling.value!=''") + 3552 "\" id=\"" + name + "pref\"" + 3553 "name=\"" + name + "pref\"" + 3554 "value=\"" + prefvalue + "\"" + 3555 "Size=\"" + preflen + "\"" + 3556 "Maxlength=\"" + preflen + "\"" + 3557 "onblur=\"DoReq(this);DoReq(this.nextSibling);" + (!!fld_chk?fld_chk:'') + "\"" + 3558 " READONLY>"; // To Display 3559 //"DISABLED>"; 3560 /* 3561 out += "<input TYPE=Hidden CHKREQUIRED=\"obj.nextSibling.value!='NOPHONE'" + (req == 1 ? "" : "&&obj.nextSibling.value!=''") +
3562 "\" id=\"" + name + "pref\"" + 3563 "name=\"" + name + "pref\"" + 3564 "value=\"" + prefvalue + "\"" + 3565 "Size=\"" + preflen + "\"" + 3566 "Maxlength=\"" + preflen + "\"" + 3567 "onblur=DoReq(this);DoReq(this.nextSibling); " + 3568 ">"; // To Pass Over Act File 3569 */ 3570 } 3571 } 3572 // Mike 3573 // Commented out by Andrew - wrong way to do thing should make it non required rather than force NOPHONE! 3574// if(locid!=null&&value.length==0&&(locid==2||locid==4||locid==6)) 3575// value="NOPHONE"; 3576 var hidobj=document.getElementById("hid"+name);// sue add this as a hack to copy the value over from insured to driver or driver to insured in mclm.js>> CopyInsured(), as it failed to capture the value. #27227 3577 out+="<input "+(req==1?"CHKNAME=\""+JSVClang("Mobile No",6032)+"\" CHKREQUIRED ":"")+"name=\""+name+"\" id=\""+name+"\" VALUE=\""+value+"\" MRMREFORMAT=\""+postfixRE+"\" "+(prefixes!=""?" prefix=1 ":" prefix=0 ")+" onblur='JSVCDoMobile(this,null,"+(allowNoPhone==1?1:0)+");DoReq(this);"+(hidobj?"document.getElementById(\"hid"+name+"\").value=this.value;":"")+(!!fld_chk?fld_chk:"")+"' "+(disabled?"DISABLED":"")+">"; 3578 return out; 3579} 3580 3581/* 3582function JSVCGenMobile(name,prefixes,postfixRE,value,req,disabled,allowNoPhone) 3583{ 3584 var aprefixes,t,sel,out; 3585 out=""; 3586 if(prefixes==null) 3587 prefixes=""; 3588 if(req==null) 3589 req=1; 3590 if(allowNoPhone==null) 3591 allowNoPhone=1; 3592 if(prefixes!="") 3593 { 3594 sel=0; 3595 aprefixes=prefixes.split(","); 3596 out+="<select CHKREQUIRED=\"obj.nextSibling.value!='NOPHONE'"+(req==1?"":"&&obj.nextSibling.value!=''")+"\" id=\""+name+"pref\" name=\""+name+"pref\" onblur=DoReq(this);DoReq(this.nextSibling); "+(disabled?"DISABLED":"")+">"+(aprefixes.length>1?"<OPTION/>":""); 3597 for(t=0;t<aprefixes.length;t++) 3598 { 3599 if(sel==0 && value!=null && value.length>0 && value.substring(0,aprefixes[t].length)==aprefixes[t]) 3600 { sel=1;value=value.slice(aprefixes[t].length); } 3601 else 3602 sel=0; 3603 out+="<OPTION value=\""+aprefixes[t]+"\""+(sel==1?" SELECTED":"")+">"+aprefixes[t]+"</OPTION>"; 3604 } 3605 } 3606 // Mike 3607 // Commented out by Andrew - wrong way to do thing should make it non required rather than force NOPHONE! 3608// if(locid!=null&&value.length==0&&(locid==2||locid==4||locid==6)) 3609// value="NOPHONE"; 3610 out+="<input "+(req==1?"CHKNAME=\""+JSVClang("Mobile No",6032)+"\" CHKREQUIRED ":"")+"name=\""+name+"\" id=\""+name+"\" VALUE=\""+value+"\" MRMREFORMAT=\""+postfixRE+"\" onblur=JSVCDoMobile(this,null,"+(allowNoPhone==1?1:0)+") "+(disabled?"DISABLED":"")+">"; 3611 return out; 3612} 3613*/ 3614 3615function SVChtm(txt,typ,relist,reresult) 3616{ if(typeof(txt)!="string")return null; 3617 txt=txt.replace(/&/g,"&").replace(/\"/g,""").replace(/</g,"<").replace(/>/g,">"); 3618 if(typ==2){ 3619 if(txt.substring(txt.length-2,txt.length)=="\n ") 3620 txt=txt.substring(0,txt.length-2)+"<br> "; 3621 txt=txt.replace(/\n/g,"<br>"); 3622 if(relist!=null&&reresult!=null) 3623 for(var t in relist) 3624 txt=txt.replace(relist[t],reresult[t]); 3625 } 3626 return txt; 3627} 3628function JSVCremoveURL(url,str) 3629{ 3630 // Sync: JSVCremoveURL() and FN.SVCremoveURL() 3631 rgexp=new RegExp("([&\?])("+str+")[=][^&]*","gi"); 3632 result=url.replace(rgexp,"$1"); 3633 result=result.replace(/([&\?])&*/gi,"$1"); 3634 result=result.replace(/&*$/,""); // remove at ending 3635 return result; 3636} 3637function JSVCSetStructForm(o,oF) { // to populate all fields into struct, deserialise and keep into a field, working together with "JSVCGetStructForm" 3638 var tmp,si; 3639 if(typeof(o)=='string') o=document.getElementById(o); 3640 if(typeof(oF)=='string') oF=document.getElementById(oF); 3641 if(o!=null&&oF!=null) { 3642 tmp=JSVCGetStructForm(o); 3643 if(tmp!=null) { 3644 si=JSON.stringify(tmp); 3645 oF.value=(si!=null?si:''); 3646 } 3647 } 3648} 3649function JSVCGetStructForm(o) { // to return struct of all form variable name (by name) with its value , return as struct 3650 var structval={},os; 3651 if(typeof(o)=='string') o=document.getElementById(o); 3652 if(o!=null ) { 3653 os=o.getElementsByTagName('INPUT'); 3654 if(os!=null&&os.length>0) { 3655 for(var cnt=0;cnt<os.length;cnt++) { 3656 if(os[cnt].getAttribute('name')!=null) 3657 structval[os[cnt].name]=Trim(os[cnt].value); 3658 } 3659 } 3660 os=o.getElementsByTagName('SELECT'); 3661 if(os!=null&&os.length>0) { 3662 for(var cnt=0;cnt<os.length;cnt++) { 3663 if(os[cnt].getAttribute('name')!=null) 3664 structval[os[cnt].name]=Trim(os[cnt].value); 3665 } 3666 } 3667 } 3668 return structval; 3669} 3670function JSVCArraySum(obj) { 3671 var ret=null,cnt,sum=0; 3672 if(obj!=null && JSVCisArray(obj) && obj.length>0) { 3673 for(cnt=0;cnt<obj.length;cnt++) { 3674 sum+=parseFloat(obj[cnt]); 3675 } 3676 ret=sum; 3677 } 3678 return ret; 3679} 3680function JSVCListSum(obj,delim) { // obj as str list of numeric values 3681 var ret=null,cnt,sum=0; 3682 delim=(delim!=null&&typeof(delim)!='undefined' ? delim : ','); 3683 if(obj!=null && obj!='') { 3684 return JSVCArraySum(obj.split(delim)); 3685 } else 3686 return null; 3687} 3688function JSVCListFindNoCase(list,findvval){ 3689 list=list.toUpperCase(); 3690 findvval=findvval.toUpperCase(); 3691 return JSVCListFind(list,findvval); 3692} 3693function JSVCListFind(list,findvval) { 3694 var found=-1,cnt=0; 3695 list=(list!=null?list.split(','):null); 3696 if(list!=null) { 3697 //return list.indexOf(findvval); : not supported by IE8 and below 3698 found=jQuery.inArray( findvval, list ); 3699 if(isNaN(findvval)==false && (found==null || found==-1)) { 3700 for(cnt=0;cnt<list.length;cnt++) { 3701 if(isNaN(list[cnt])==false && parseFloat(findvval)==parseFloat(list[cnt]) ) { 3702 found=cnt; 3703 break; 3704 } 3705 } 3706 } 3707 } 3708 return found; 3709} 3710function JSVCListGetAt(list,index,delim,includeEmpty) { 3711 delim = (delim? delim: ','); 3712 var a = list.split(delim); 3713 var target; 3714 for(var i=0;i<list.length;i++){ 3715 if(i==index) { 3716 target == list[i]; 3717 break; 3718 } 3719 } 3720 return target; 3721} 3722function JSVCListToArray(list,delim) { 3723 var ret; 3724 var delims=(typeof(delim)=='undefined'||delim==null?',':delim); 3725 ret=list.split(delims); 3726 return ret; 3727} 3728function JSVCgenOptions(str,sep,sel,rettext,sort,type,nm){ 3729 if(typeof(type)=='undefined'||type==null||type=='')type=1; 3730 var lst, t, ret; 3731 if (sep == null || sep == "") 3732 sep = ","; 3733 //if (sel == null || sel == "") 3734 // sel = ""; 3735 ret = ""; 3736 var srt={ 3737 load:function(str,sep) { 3738 var lst=str.split(sep); 3739 this.sep=sep; 3740 this.list=[]; 3741 for(t=0;t<lst.length-1;t+=2) { 3742 this.list[t/2]=[lst[t],lst[t+1]]; 3743 } 3744 }, 3745 sf:function(a,b) { 3746 var a1=a[1];var b1=b[1];var c=0; 3747 if(a1>b1) c=1; 3748 else if(a1<b1) c=-1; 3749 else c=0; 3750 return c; 3751 }, 3752 result:function() { 3753 var ar=this.list.sort(this.sf); 3754 for(var i in ar) 3755 ar[i]=ar[i].join(this.sep); 3756 ar=ar.join(this.sep); 3757 return ar; 3758 } 3759 } 3760 if(sort==1) { 3761 srt.load(str,sep); 3762 lst=srt.result().split(sep); 3763 } 3764 else 3765 lst=str.split(sep); 3766 if(type==1){ 3767 for (t = 0; t < lst.length-1; t += 2) { 3768 idxsel=0; // default 3769 3770 if(lst[t+1]=="")lst[t+1]=lst[t]; 3771 if(sel==lst[t] && rettext!=null)rettext.txt=lst[t + 1]; 3772 if(sel!=null && JSVCisArray(sel)==true) /* selected value in array */ 3773 if(isNaN(lst[t])) 3774 idxsel=(JSVCArrayIndexOf(sel,lst[t])>=0?1:0); 3775 else 3776 idxsel=(JSVCArrayIndexOf(sel,parseFloat(lst[t]) )>=0?1:0); 3777 else 3778 idxsel=(sel == lst[t] || ( !isNaN(sel) && !isNaN(lst[t]) && parseFloat(sel) == parseFloat(lst[t]) ) ? 1:0); 3779 ret += "<OPTION VALUE=\"" + lst[t] + "\"" + (idxsel==1 ? " SELECTED" : "") + ">" + SVChtm(lst[t + 1]) + "</OPTION>"; 3780 //if(sel.indexOf(lst[t]) > -1 && rettext!=null)rettext.txt=lst[t + 1]; 3781 //ret += "<OPTION VALUE=\"" + lst[t] + "\"" + (sel.indexOf(lst[t]) > -1 || ( !isNaN(sel) && !isNaN(lst[t]) && parseFloat(sel) == parseFloat(lst[t]) ) ? " SELECTED" : "") + ">" + SVChtm(lst[t + 1]) + "</OPTION>"; 3782 } 3783 } else if(type==2){ 3784 3785 for(var cnt=0;cnt<lst.length-1; cnt=cnt+2) { 3786 selval=lst[cnt]; 3787 seltxt=lst[cnt+1]; 3788 ret+='<label><input type="radio" name="'+nm+'" value='+(isNaN(selval)?'"'+selval+'"':selval)+(onclick!=null?" onclick="+this.id+".objCallback(this,'RADIO','"+col[2]+"')":"")+(selval==sel?" checked":"")+' > '+seltxt+' </label>'; 3789 } 3790 } 3791 return ret; 3792} 3793function JSVCbodyResize(obj) 3794{ 3795 if(parent!=null) 3796 if(parent.bodyResizeHook!=null) 3797 parent.bodyResizeHook(obj); 3798} 3799function JSVCoptionsAdd(obj,text,value,pos) { 3800 if(!(obj!=null && obj.tagName=="SELECT")) return; 3801 3802 var chkdupe=function(options,value) { 3803 for(var i=0;i<options.length;i++) { 3804 if(options[i].value==value) 3805 return true; 3806 } 3807 return false; 3808 } 3809 3810 if(text!=null && text.constructor.toString().indexOf("Array")>=0) { 3811 if(!chkdupe(obj.options,text[1])) 3812 obj.options[pos!=null?pos:obj.options.length]=new Option(text[0],text[1]); 3813 } 3814 else if(value!=null && value.constructor.toString().indexOf("Array")>=0) { 3815 if(!chkdupe(obj.options,value[0])) 3816 obj.options[pos!=null?pos:obj.options.length]=new Option(value[1],value[0]); 3817 } 3818 else { 3819 if(!chkdupe(obj.options,value)) 3820 obj.options[pos!=null?pos:obj.options.length]=new Option(text,value); 3821 } 3822} 3823function JSVCoptionsRemove(obj,value) { 3824 if(!(obj!=null && obj.tagName=="SELECT")) return; 3825 3826 for(var i=0;i<obj.options.length;i++) { 3827 if(obj.options[i].value==value) { 3828 obj.remove(i); 3829 break; 3830 } 3831 } 3832} 3833function JSVCoptionsReplace(obj,valueO,textN,valueN,pos) { 3834 if(!(obj!=null && obj.tagName=="SELECT")) return; 3835 3836 for(var i=0;i<obj.options.length;i++) { 3837 if(obj.options[i].value==valueO) { 3838 obj.remove(i); 3839 JSVCoptionsAdd(obj,textN,valueN,pos); 3840 break; 3841 } 3842 } 3843} 3844///////////////////////////////////////////////////////////////////////////////////////// 3845// To open a new window 3846// src = URL to point to in the new window 3847// cascade = offset from the parent window in pixel 3848// menubar = to turn on menu bar ('yes' or 'no') 3849// awidth = width of the window 3850// aheight = height of the window
3851// returnwin = true: returns a reference to the new window; false: no return 3852// wintype = window type - window: opens a new window; modeless: opens a modeless dialog box; modal: opens a modal dialog box 3853// NOTE : wintype=="modal" - window.showModalDialog method is removed, ref : https://developer.mozilla.org/en-US/docs/Web/API/Window/showModalDialog 3854//////////////////////////////////////////////////////////////////////////////////////// 3855function JSVCopenWin(src, cascade, menubar, awidth, aheight, returnwin, wintype, winname ) 3856{ 3857 if (cascade == null) cascade = 0; 3858 if (menubar == null) menubar = "no"; 3859 if (returnwin==null) returnwin = false; 3860 if (wintype==null) wintype = "window"; 3861 3862 var aWin = window.self; 3863 var x_offset, y_offset, win_width, win_height, aStr, newwin; 3864 3865 if (awidth == null) 3866 { 3867 x_offset = 50; 3868 } 3869 else 3870 { 3871 x_offset = (aWin.screen.availWidth - awidth )/ 2; 3872 } 3873 if (aheight == null) 3874 { 3875 y_offset = 50; 3876 } 3877 else 3878 { 3879 y_offset = (aWin.screen.availHeight - aheight ) / 2; 3880 } 3881 win_width = aWin.screen.availWidth - (2 * x_offset); 3882 win_height = aWin.screen.availHeight -(2 * y_offset); 3883 if (menubar="yes") win_height -= 50; // roughly the size of the menubar 3884 y_offset = y_offset + cascade; 3885 x_offset = x_offset + cascade; 3886 if(winname==null) 3887 winname=""; 3888 switch (wintype) 3889 { 3890 case "window": 3891 { 3892 aStr = "left=" + x_offset + ",height=" + win_height + ",top=" + y_offset + ",width=" + win_width + ",scrollbars=yes,resizable=yes,status=yes,menubar="+menubar; 3893 newwin=window.open(src, winname, aStr ); 3894 break; 3895 } 3896 case "modeless": 3897 { 3898 aStr = "dialogLeft:" + x_offset + "px; dialogHeight:" + win_height + "px; dialogTop:" + y_offset + "px; dialogWidth:" + win_width + "px; resizable:'yes'; status:'yes'"; 3899 newwin=window.showModelessDialog(src, winname, aStr); 3900 break; 3901 } 3902 case "modal": 3903 { 3904 aStr = "dialogLeft:" + x_offset + "px; dialogHeight:" + win_height + "px; dialogTop:" + y_offset + "px; dialogWidth:" + win_width + "px; resizable:'yes'; status:'no'"; 3905 newwin=window.showModalDialog(src, winname, aStr); 3906 break; 3907 } 3908 } 3909 if (returnwin) return newwin; 3910} 3911function JSVCDoBackWarning() 3912{ 3913 document.write("<form autocomplete='off'><blockquote class=clsColorNote style=display:none><input type=hidden id=MMPARSEONCE>"+JSVClang("You are returning to a previous page. This page may be outdated.<br>Please click 'Refresh' to refresh the page.",1378)+"</blockquote></form>"); 3914 AddOnloadCode("var obj=document.getElementById('MMPARSEONCE');if(obj.value=='1') { obj.parentNode.style.display=''; } else { obj.value='1'; };"); 3915} 3916function JSVCshow(obj,show) 3917{ 3918 if(show==null) 3919 show=1; 3920 var o,listarr; 3921 if(typeof(obj)=="string") { 3922 listarr=obj.split(","); 3923 for(abc in listarr) { 3924 o=JSVCall(listarr[abc]); 3925 if(o!=null) 3926 o.style.display=(show==1?"":"none"); 3927 } 3928 return; 3929 } 3930 else if(obj!=null) 3931 o=obj; 3932 if(o!=null) 3933 o.style.display=(show==1?"":"none"); 3934} 3935function JSVChide(obj) 3936{ 3937 JSVCshow(obj,0); 3938} 3939 3940/*------------------------Kian Yee:Popup a Window ------------------*/ 3941//1 - for maximize ,2 - for fullscreen,3 - clean params 3942function JSVCgenPopWin(url, winname, w, h,full,exstring) 3943{ // Returns object 3944 var params,PopupWin; 3945 if (winname==null||winname==""){ 3946 winname = 'PopupWin'; 3947 } 3948 if (w==null||w==""){ 3949 w = 600; 3950 } 3951 if (h==null||h==""){ 3952 h = 600; 3953 } 3954 if (exstring==null){ 3955 exstring=""; 3956 } 3957 if (full!=null&&full==1){ 3958 params = 'scrollbars=yes,resizable=yes,width='+screen.width+', height='+screen.height+', top=0, left=0'+', fullscreen=yes'+exstring; 3959 } 3960 if (full==3){ 3961 params = 'width='+w+',height='+h+exstring; 3962 } 3963 else{ 3964 params = 'scrollbars=yes,resizable=yes,width='+w+',height='+h+exstring; 3965 } 3966 PopupWin = window.open(url,winname,params); 3967 PopupWin.focus(); 3968 // causing pages to become blank due to <a href=javscript:JSVCgenPopLink()> 3969 return PopupWin; 3970} 3971 3972function JSVCgenPopLink(url, winname, w, h,full,exstring) 3973{ // Does not return anything (suitable for a href link for IE which cannot return object) 3974 JSVCgenPopWin(url, winname, w, h,full,exstring); 3975} 3976 3977/*----------------------Kian Yee:Check Leap Year ----------------*/ 3978function JSVCCheckLeapYear(chkyear) 3979{ 3980 if (chkyear%4 == 0&&(chkyear%100 != 0||chkyear%400 == 0)) 3981 { 3982 return true; 3983 } 3984 else 3985 { 3986 return false; 3987 } 3988} 3989/*---------------------Kian Yee: Date Functions --------------*/ 3990/* 3991 DateAdd: 3992 type - year,month,day (will add on later) 3993 num - num to be added 3994refdate - date to be added from 3995 3996 return new date value 3997 *REMARKS: This is to handle the leap year problem in javascript and also the month rounded to next month problem; date will follow sql style 3998 */ 3999function JSVCDateAdd(type,num,refdate) 4000{ 4001 if(num==""||num==null) num=0; 4002 if(refdate==null||refdate=="")return refdate; 4003 if(typeof refdate=='string') refdate = CalParseDate(refdate); 4004 var newdate = new Date(refdate); 4005 if(type.toUpperCase() == 'Y' || type.toUpperCase() == 'YEAR' || type.toUpperCase() == 'YY' || type.toUpperCase() == 'YYYY') 4006 { 4007 newdate.setYear(refdate.getFullYear()+num); 4008 if (refdate.getDate()!= newdate.getDate()) newdate.setDate(newdate.getDate() - 1); 4009 return newdate; 4010 } 4011 else if(type == 'M' || type.toUpperCase() == 'MONTH' || type == 'MM') 4012 { 4013 newdate.setMonth(refdate.getMonth()+num); 4014 while ((refdate.getMonth()+num)%12 < newdate.getMonth()) 4015 { 4016 newdate.setDate(newdate.getDate() - 1); 4017 } 4018 return newdate; 4019 } 4020 else if (type.toUpperCase()=='D' || type.toUpperCase()=='DAY' || type.toUpperCase()== 'DD') 4021 { 4022 newdate.setDate(refdate.getDate()+num); 4023 return newdate; 4024 } 4025}
4026function JSVCdaydiffWorkingDays(startDate,endDate,workdayofweek,locid,vars,mode,calctype) { //vars : may refer to js var REQUEST.DS.HOLIDAY, 4027 /* 4028 [mode] : 0 - default date difference based on number of working days 4029 [workdayofweek] : 4030 5 = 5 working days; sat + sun are full rest days 4031 5.5 = 5.5 working days; sat as half rest day + sun is full rest day 4032 6 = 6 working days; sun is full rest day 4033 [mode] : 1 - date difference with custom weekends 4034 [workdayofweek] : the bit of days that is weekends 4035 bit 1 : monday 4036 bit 2 : tuesday 4037 bit 4 : wednesday .. and so on 4038 4039 [calctype] : to evaluate the end date as additional 1 working day, 4040 0 : (default) the end date's time would be '23.59.59:999', which is considered 1 working day for end date if the date is not fall within holiday. 4041 for e.g.: from 2014-04-08 (work day) to 2014-04-08 (work day), will be considered as 1 working day. 4042 1 : the end date's time would be '00.00.00:000', where the end date doesn't count as 1 day 4043 4044 to exclude the public holiday as defined in data 4045 - define [locid] as val and [vars] as struct/array (refer to REQUEST.DS.HOLIDAY) 4046 to discard verification on public holiday 4047 - define [locid] and [vars] as NULL 4048 4049 4050 to evaluate the end date as 1 working day, 4051 [] 4052 4053 for e.g. from 2014-04-08 (work day) to 2014-04-08 (work day), will be considered as 1 working day 4054 */ 4055 // workdayofweek : 5 ( 5 working days), 5.5 (5.5 working days), 6 (6 working days), 7 (working days) 4056 var totwdays,totphwdays,rangehol,i,tmp,start,end,check=0,tmp; 4057 mode=(mode==null?0:mode); 4058 calctype=(calctype==null?0:calctype); 4059 4060 if(!(startDate instanceof Date)) { 4061 startDate = CalParseDate(startDate); 4062 } 4063 if(!(endDate instanceof Date)) { 4064 endDate = CalParseDate(endDate); 4065 } 4066 if(startDate==null || endDate==null || startDate=='' || startDate==null) 4067 return null; 4068 if(locid>0 && vars!=null) { 4069 totphwdays=0; 4070 totwdays=JSVCdaydiffWorkingDays(startDate,endDate,workdayofweek,null,null,mode,calctype); // number of working day except public holiday 4071 rangehol=vars[locid]; //locid followed by the year of the starting date ... 4072 //alert('verifying ...'+startDate+ ' vs '+endDate); 4073 if(typeof(rangehol)!='undefined') { 4074 for(i=0;i<rangehol.length;i++) { 4075 tmp=rangehol[i].split('|'); 4076 start=tmp[0];end=tmp[1]; 4077 if(!(start instanceof Date)) start = CalParseDate(start); 4078 if(!(end instanceof Date)) end = CalParseDate(end); 4079 4080 if(startDate.getTime()>endDate.getTime()) { tmp=startDate;startDate=endDate;endDate=tmp; } 4081 //if(end=='02/01/2012') check=1; 4082 4083 try{ 4084 // get number of working day with date range given 4085 if (startDate.getTime()<=start.getTime()&&end.getTime()<=endDate.getTime() ) { // { [ ] } 4086 totphwdays+=JSVCdaydiffWorkingDays(start,end,workdayofweek,null,null,mode,calctype); 4087 //alert('total='+totwdays+' ... '+ start + ' vs1 ' + end + ' = ' + totphwdays); 4088 } else if (start.getTime()<=startDate.getTime()&&endDate.getTime()<=end.getTime() ) { // [ { } ] 4089 totphwdays+=JSVCdaydiffWorkingDays(startDate,endDate,workdayofweek,null,null,mode,calctype); 4090 //alert('total='+totwdays+' ... '+startDate + ' vs2 ' + endDate + ' = ' + totphwdays); 4091 } else if (startDate.getTime()<=start.getTime()&& endDate.getTime()<=end.getTime() && start.getTime()<=endDate.getTime() ) { // { [ } ] 4092 totphwdays+=JSVCdaydiffWorkingDays(start,endDate,workdayofweek,null,null,mode,calctype); 4093 //alert('total='+totwdays+' ... '+start + ' vs3 ' + endDate + ' = ' + totphwdays); 4094 } else if (start.getTime()<=endDate.getTime()&&end.getTime()<=endDate.getTime() && startDate.getTime()<=end.getTime() ) { // [ { ] } 4095 totphwdays+=JSVCdaydiffWorkingDays(startDate,end,workdayofweek,null,null,mode,calctype); 4096 //alert('total='+totwdays+' ... '+startDate + ' vs4 ' + end + ' = ' + totphwdays); 4097 } 4098 }catch(e){ 4099 4100 } 4101 4102 } 4103 } 4104 //alert(totwdays + ' vs ' + totphwdays); 4105 if(totwdays<totphwdays) 4106 alert (JSVClang('MRM Error: Unable to calculate working days',17768)); 4107 else { 4108 return totwdays-totphwdays; 4109 } 4110 } 4111 else { 4112 if(mode==1) // custom weekends as bit 4113 return JSVCSelectedWorkingDaysBetweenDates(startDate, endDate, workdayofweek,calctype); 4114 else // default : number weekends per week 4115 return JSVCWorkingDaysBetweenDates(startDate, endDate, workdayofweek,calctype); 4116 } 4117} 4118function JSVCSelectedWorkingDaysBetweenDates(startval, endval, weekend_bit,calctype) { 4119 /* allan 23 april 2013 4120 param weekend_bit in value 4121 sunday = 2 power of getDay() as 0 = 1 4122 monday = 2 power of getDay() as 1 = 2 4123 tuesday = 2 power of getDay() as 2 = 4 4124 wednesday = 2 power of getDay() as 3 = 8 4125 thursday = 2 power of getDay() as 4 = 16 4126 friday = 2 power of getDay() as 5 = 32 4127 saturday = 2 power of getDay() as 6 = 64 4128 4129 [calctype] : to evaluate the end date as additional 1 working day, 4130 0 : (default) the end date's time would be '23.59.59:999', which is considered 1 working day for end date if the date is not fall within holiday. 4131 for e.g.: from 2014-04-08 (work day) to 2014-04-08 (work day), will be considered as 1 working day. 4132 1 : the end date's time would be '00.00.00:000', where the end date doesn't count as 1 day 4133 */ 4134 //alert(weekend_bit); 4135 var returnval,startDate=new Date(startval), endDate=new Date(endval); 4136 var tmp,reverse=(endDate<startDate?1:0); 4137 calctype=(calctype==null?0:calctype); 4138 if (reverse==1) { 4139 tmp=startDate;startDate=endDate;endDate=tmp; 4140 } 4141 if(weekend_bit!=null && weekend_bit>=0) { 4142 // Calculate days between dates 4143 var millisecondsPerDay = 86400 * 1000; // Day in milliseconds 4144 startDate.setHours(0,0,0,1); // Start just after midnight 4145 if(calctype==0) 4146 endDate.setHours(23,59,59,999); // End just before midnight 4147 else if(calctype==1) 4148 endDate.setHours(0,0,0,1); // End just after midnight 4149 else 4150 alert(JSVClang('Mrm Err : Error occured when evaluating the day difference',25738)); 4151 var diff = endDate - startDate; // Milliseconds between datetime objects 4152 var days = Math.ceil(diff / millisecondsPerDay); 4153 // Subtract two weekend days for every week in between 4154 4155 //alert('total days:'+days);
4156 var weeks = Math.floor(days / 7); 4157 var remaindays=days%7; 4158 var weekendinremaindays=0; 4159 // Handle special cases 4160 var startDay = startDate.getDay(); 4161 // alert('start day = ' + startDay); 4162 var endDay = endDate.getDay(); 4163//alert('end day = ' + endDay); 4164 var numWeekend=0,cnt=0,theweekends=new Array(); 4165 4166 for(cnt=0;cnt<7;cnt++) { 4167 if((weekend_bit&(Math.pow(2,cnt)))==(Math.pow(2,cnt))) { 4168 //alert('weekend on '+ cnt); 4169 numWeekend++; 4170 } 4171 } 4172 4173 //condition 4174 //alert('start day = '+startDay+'\nend day = '+endDay+'\nweeks = ' + weeks +'\nremaining days = ' + remaindays); 4175 if(remaindays==0) { 4176 returnval= days - (weeks * numWeekend); 4177 } else if (weeks==0 && startDay==endDay) { 4178 //alert('this 1'); 4179 //alert(weekend_bit); 4180 for(cnt=startDay;cnt<=endDay;cnt++) { 4181 if((weekend_bit&(Math.pow(2,cnt)))==(Math.pow(2,cnt))) { 4182 weekendinremaindays++; 4183 } 4184 } 4185 returnval=days-weekendinremaindays; 4186 } else if(startDay==0 && endDay!=6) { 4187 //alert('this 2'); 4188 for(cnt=endDay;cnt>=0;cnt--) { 4189 if((weekend_bit&(Math.pow(2,cnt)))==(Math.pow(2,cnt))) { 4190 weekendinremaindays++; 4191 } 4192 } 4193 returnval= days - (weeks * numWeekend) - weekendinremaindays; 4194 } else if(startDay-endDay>1) { 4195 //alert('this 3'); 4196 for(cnt=startDay;cnt<7;cnt++) { 4197 if((weekend_bit&(Math.pow(2,cnt)))==(Math.pow(2,cnt))) { 4198 weekendinremaindays++; 4199 } 4200 } 4201 for(cnt=endDay;cnt>=0;cnt--) { 4202 if((weekend_bit&(Math.pow(2,cnt)))==(Math.pow(2,cnt))) { 4203 weekendinremaindays++; 4204 } 4205 } 4206 returnval= days - (weeks * numWeekend) - weekendinremaindays; 4207 } else if (endDay>=startDay) { 4208 //alert('this 4'); 4209 for(cnt=startDay;cnt<7;cnt++) { 4210 if((weekend_bit&(Math.pow(2,cnt)))==(Math.pow(2,cnt))) { 4211 weekendinremaindays++; 4212 } 4213 } 4214 for(cnt=endDay;cnt>=0;cnt--) { 4215 if((weekend_bit&(Math.pow(2,cnt)))==(Math.pow(2,cnt))) { 4216 weekendinremaindays++; 4217 } 4218 } 4219 returnval= days - ((weeks-1) * numWeekend) - weekendinremaindays; 4220 } else { 4221 alert(JSVClang('Error occured (Error code : 100). Call Administrator for assistance.',17769));
4222 return 0; 4223 } 4224 } 4225 else 4226 returnval=JSVCWorkingDaysBetweenDates(startval,endval,null); // follow default date diff 4227 return returnval; 4228} 4229 4230 4231function JSVCWorkingDaysBetweenDates(startval, endval, workdayofweek) { // available for workdayofweek = 5 , 5.5, 6 ; default as 5 workingdays 4232 var startDate=new Date(startval), endDate=new Date(endval); 4233 var tmp,reverse=(endDate<startDate?1:0); 4234 if (reverse==1) { 4235 tmp=startDate;startDate=endDate;endDate=tmp; 4236 } 4237 if (!(workdayofweek!=null && (workdayofweek==5 || workdayofweek==5.5 || workdayofweek==6))) { 4238 workdayofweek=5; // by default 4239 } 4240 4241 // Calculate days between dates 4242 var millisecondsPerDay = 86400 * 1000; // Day in milliseconds 4243 startDate.setHours(0,0,0,1); // Start just after midnight 4244 endDate.setHours(23,59,59,999); // End just before midnight 4245 var diff = endDate - startDate; // Milliseconds between datetime objects 4246 var days = Math.ceil(diff / millisecondsPerDay); 4247 // Subtract two weekend days for every week in between 4248 4249 //alert('total days:'+days); 4250 var weeks = Math.floor(days / 7); 4251 // previously : var days = days - (weeks * 2); 4252 var days = days - (weeks * (workdayofweek==5?2:(workdayofweek==5.5?1.5:(workdayofweek==6?1:0)))); 4253 4254 //alert('weeks:'+weeks+' ; weekdays:'+days); 4255 4256 // Handle special cases 4257 var startDay = startDate.getDay(); 4258 var endDay = endDate.getDay(); 4259 // Remove weekend not previously removed. 4260 if (startDay - endDay > 1) 4261 { 4262 //alert('a : days - 2 ; before='+days); 4263 //previously : days = days-2; 4264 days=days-(workdayofweek==5?2:(workdayofweek==5.5?1.5:(workdayofweek==6?1:0))); 4265 } 4266 // Remove start day if span starts on Sunday but ends before Saturday 4267 if (startDay == 0 && endDay != 6) 4268 { 4269 // alert('b : days - 1 ; before='+days); 4270 // previously : days = days - 1; 4271 days=days-(workdayofweek==5?1:(workdayofweek==5.5?1:(workdayofweek==6?1:0))); 4272 } 4273 // Remove end day if span ends on Saturday but starts after Sunday 4274 if (endDay == 6 && startDay != 0) 4275 { 4276 // alert('c : days - 1 ; before='+days); 4277 //previously : days = days - 1; 4278 days=days-(workdayofweek==5?1:(workdayofweek==5.5?0.5:(workdayofweek==6?0:0))); 4279 } 4280 4281 // alert('total '+days+'*'+(reverse==1?-1:1)+' : ' + days*(reverse==1?-1:1)); 4282 return days /* days*(reverse==1?-1:1) */; 4283} 4284 4285/* Andrew 02Nov2010 */ 4286function JSVCFullDateDiff(firstdate,seconddate) 4287 { 4288 var a=new Object(); 4289 a.Year=0; 4290 a.Month=0; 4291 a.Day=0; 4292 while(JSVCDateAdd("Y",a.Year+1,firstdate) <= seconddate) 4293 { 4294 a.Year++; 4295 } 4296 firstdate=JSVCDateAdd("Y",a.Year,firstdate); 4297 4298 while(JSVCDateAdd("M",a.Month+1,firstdate) <= seconddate) 4299 { 4300 a.Month++; 4301 } 4302 4303 firstdate=JSVCDateAdd("M",a.Month,firstdate); 4304 4305 while(JSVCDateAdd("D",a.Day+1,firstdate) <= seconddate) 4306 { 4307 a.Day++; 4308 } 4309 return a; 4310 } 4311 4312/*PC Comment*/ 4313function JSVCDateDiff(type,firstdate,seconddate) 4314{ 4315 if (firstdate==null || firstdate=='' || seconddate==null || seconddate=='') return null; 4316 if(firstdate.constructor!=Date) 4317 firstdate = CalParseDate(firstdate); 4318 if(seconddate.constructor!=Date) 4319 seconddate = CalParseDate(seconddate); 4320 if (firstdate==null || firstdate=='' || seconddate==null || seconddate=='') return null; 4321 4322 var diffval=0; 4323 if (type.toUpperCase()=='D' || type.toUpperCase()=='DAY' || type.toUpperCase()== 'DD') 4324 { 4325 var difference = seconddate.getTime() - firstdate.getTime(); 4326 var daysDifference = Math.floor(difference/1000/60/60/24); 4327 /* 4328 difference -= daysDifference*1000*60*60*24; 4329 var hoursDifference = Math.floor(difference/1000/60/60); 4330 difference -= hoursDifference*1000*60*60; 4331 var minutesDifference = Math.floor(difference/1000/60); 4332 difference -= minutesDifference*1000*60; 4333 var secondsDifference = Math.floor(difference/1000); 4334 document.write('difference = ' + daysDifference + ' day/s ' + hoursDifference + ' hour/s ' + 4335 minutesDifference + ' minute/s ' + secondsDifference + ' second/s ');*/ 4336 diffval=daysDifference; 4337 } 4338 else if(type.toUpperCase()=='DAYONLY') //formula above (D/DAY/DD) will take time into consideration (>=24hr only consider 1 day) but this one will not 4339 { 4340 seconddate.setHours(0,0,0); 4341 firstdate.setHours(0,0,0); 4342 var diffval=JSVCDateDiff('D',firstdate,seconddate); 4343 } 4344 else if(type == 'M' || type.toUpperCase() == 'MONTH' || type == 'MM') 4345 { 4346 diffval = ((seconddate.getFullYear() - firstdate.getFullYear()) * 12) + seconddate.getMonth() - firstdate.getMonth(); 4347 } 4348 else if(type.toUpperCase() == 'Y' || type.toUpperCase() == 'YEAR' || type.toUpperCase() == 'YY' || type.toUpperCase() == 'YYYY') 4349 { 4350 diffval = seconddate.getFullYear() - firstdate.getFullYear(); 4351 } 4352 else if(type.toUpperCase() == 'H' || type.toUpperCase() == 'HOUR' || type.toUpperCase() == 'HH') 4353 { 4354 diffval = Math.floor((seconddate.getTime() - firstdate.getTime()) / (1000 * 60 * 60)); 4355 } 4356 else if(type == 'm' || type.toUpperCase() == 'MIN' || type == 'mm' || type.toUpperCase() == 'MINUTE') 4357 { 4358 diffval = Math.floor((seconddate.getTime() - firstdate.getTime()) / (1000 * 60)); 4359 } 4360 else if(type.toUpperCase() == 'S' || type.toUpperCase() == 'SECOND' || type.toUpperCase() == 'SS' || type.toUpperCase() == 'SEC') 4361 { 4362 diffval = Math.floor((seconddate.getTime() - firstdate.getTime()) / 1000); 4363 } 4364 else if(type == 'hm' || type.toUpperCase() == 'HOURMIN' || type == 'hhmm' || type.toUpperCase() == 'HOURMINUTE') 4365 { 4366 var diffhour=0; 4367 var diffmin=0; 4368 diffmin = Math.floor((seconddate.getTime() - firstdate.getTime()) / (1000 * 60)); 4369 diffhour = (Math.floor((seconddate.getTime() - firstdate.getTime()) / (1000 * 60 * 60))); 4370 diffval = diffmin +'(' + diffhour +'.'+ (diffmin)%60 +')'; 4371 } 4372 else if(type.toUpperCase() == 'WW' || type.toUpperCase() == 'WEEK' || type.toUpperCase() == 'WK') 4373 { 4374 // calculate differnece in weeks (1000ms * 60sec * 60min * 24hrs * 7 days = 604800000) 4375 // diffval = Math.floor((seconddate.getTime() - firstdate.getTime()) / 604800000); 4376 // The above does not work. Need to simulate the SQL DateDiff function 4377 while(firstdate<seconddate) { 4378 firstdate=JSVCDateAdd("d",1,firstdate); 4379 if(firstdate<=seconddate && firstdate.getDay()==0) // if passes Sunday, consider 1 week 4380 diffval+=1; 4381 } 4382 } 4383 4384 return diffval; 4385} 4386 4387/* 4388 CompareDate: 4389 firstdate - first date input to compare (from date) 4390 seconddate - second date input to compare (to date) 4391 type - 1:year , 2:month , 3:day 4392 num - maximum range (ex: type 1 - maximum years allowed for the date range) 4393 range - 0:any range 1:must be in round number year 2:must be in round number month 4394 firstdatename - name for firstdate 4395 seconddatename - name for seconddate 4396 4397 return true - valid;
4397 false - not valid 4398 *REMARKS: Currently, it will add 1 min to end date for every check, need to find a better solution 4399 *Took off null checking, empty is treated as null by default 4400 */ 4401function JSVCCompareDate(firstdate,seconddate,firstdatename,seconddatename,type,num,range) 4402{ 4403 if(range==null||range=='')range = 0; 4404 if (firstdate != null && seconddate != null) { 4405 if (firstdatename == '' || firstdatename == null) 4406 firstdatename = 'Start Date'; 4407 if (seconddatename == '' || seconddatename == null) 4408 seconddatename = 'End Date'; 4409 if(typeof firstdate=='string') firstdate = CalParseDate(firstdate); 4410 if(typeof seconddate=='string') seconddate = CalParseDate(seconddate); 4411 if (seconddate != null && firstdate >= seconddate) { 4412 alert( JSVClang("{0} is greater than {1}. Please make sure that the date range specified is valid.",8661,0,firstdatename,seconddatename) ); 4413 return false; 4414 } 4415 if (range==1) 4416 { 4417 if (firstdate.getMonth()!=seconddate.getMonth()||firstdate.getDate()!=seconddate.getDate()) 4418 { 4419 alert(JSVClang("The range of {0} and {1} is not in rounded years. Please make sure that the date range specified is valid.",35940,0,firstdatename,seconddatename)); 4420 return false; 4421 } 4422 } 4423 else if (range==2) 4424 { 4425 if (firstdate.getDate()!=seconddate.getDate()) 4426 { 4427 alert(JSVClang("The range of {0} and {1} is not in rounded months. Please make sure that the date range specified is valid.",12460,0,firstdatename,seconddatename)); 4428 return false; 4429 } 4430 } 4431 if ((type != null && type != '') && (num != null && num != '')) { 4432 if (type == 1) { 4433 var validdate = new Date(firstdate.setFullYear(firstdate.getFullYear() + num)); 4434 if (seconddate > validdate) { 4435 alert(JSVClang("The range of {0} and {1} is out of the permitted date range which is {3} year/s. Please make sure that the date range specified is valid.",36233,0,firstdatename,seconddatename,num)); 4436 return false; 4437 } 4438 } 4439 else 4440 if (type == 2) { 4441 var validdate = new Date(firstdate.setMonth(firstdate.getMonth() + num)); 4442 if (seconddate > validdate) { 4443 alert(JSVClang("The range of {0} and {1} is out of the permitted date range which is {3} month/s. Please make sure that the date range specified is valid.",36234,0,firstdatename,seconddatename,num)); 4444 return false; 4445 } 4446 } 4447 else 4448 if (type == 3) { 4449 var validdate = new Date(firstdate.setDate(firstdate.getDate() + num)); 4450 if (seconddate > validdate) { 4451 alert(JSVClang("The range of {0} and {1} is out of the permitted date range which is {2} day/s. Please make sure that the date range specified is valid.",8669,0,firstdatename,seconddatename,num)); 4452 return false; 4453 } 4454 } 4455 } 4456 } 4457 return true; 4458} 4459Math.sign=function(i) { 4460 var j=parseInt(i); 4461 if(j<0) 4462 return -1; 4463 else if(j==0) 4464 return 0; 4465 else if(j>0) 4466 return 1; 4467} 4468/* Converted from SVCdaydiff in SVCcffunctions.cfm, code should be synchronized between these two */ 4469/* workingDays 4470 1 - 5 working days a week 4471 2 - 6 working days a week 4472 3 - 5 working days a week (exclude public holidays) 4473 4 - 6 working days a week (exclude public holidays) 4474*/ 4475function JSVCdaydiff(date1,date2,workingDays) { 4476 if(workingDays==null) 4477 workingDays=1; 4478 if(typeof(date1)=="string") 4479 date1=CalParseDate(date1); 4480 if(typeof(date2)=="string") 4481 date2=CalParseDate(date2); 4482 if(workingDays==1) 4483 return JSVCDateDiff("d",date1,date2) - JSVCDateDiff("ww",date1,date2)*2 + Math.sign(date1.getDay()) - Math.sign(date2.getDay()); 4484 else if(workingDays==2) 4485 return JSVCDateDiff("d",date1,date2) - JSVCDateDiff("ww",date1,date2) + Math.sign(date1.getDay()) - Math.sign(date2.getDay()); 4486 else if((workingDays==3||workingDays==4) && request.DS && request.DS.HOLIDAYSQ) { // NOTE: DS.HOLIDAYSQ must be defined else return normal working days 4487 var wktype=(workingDays==3?1:2); 4488 var d=JSVCcountHolidays(date1,date2,wktype); 4489 return JSVCdaydiff(date1,date2,wktype) - d; 4490 } 4491 else 4492 return JSVCDateDiff("d",date1,date2); 4493} 4494/* workingDays 4495 1 - 5 working days a week 4496 2 - 6 working days a week 4497*/ 4498function JSVCcountHolidays(date1,date2,workingDays) { 4499 var d=0; 4500 if(request.DS.HOLIDAYSQ==null) 4501 return d; 4502 if(typeof(date1)=="string") 4503 date1=CalParseDate(date1); 4504 if(typeof(date2)=="string") 4505 date2=CalParseDate(date2); 4506 // 1) Assume holiday is stored as full single day 4507 // 2) Strip off time from date1/date2 as we only need to compare "day" 4508 var d1=new Date(date1.getFullYear(),date1.getMonth(),date1.getDate()); // strip off time 4509 var d2=new Date(date2.getFullYear(),date2.getMonth(),date2.getDate()); // strip off time 4510 for(var i=0;i<request.DS.HOLIDAYSQ.DATA.length;i++) { 4511 var a=request.DS.HOLIDAYSQ.DATA[i]; 4512 var h1=a[3]; 4513 var h2=a[4]; 4514 if(h1.constructor==String) 4515 h1=CalParseDate(h1);
4516 if(h2.constructor==String) 4517 h2=CalParseDate(h2); 4518 if(a[0]==jSVClocid) { 4519 // Get the sum of holiday span in the specified period, exclude if holiday falls on weekends 4520 /* Illustration for the logic: H = holiday span, D = date1 & date2 span 4521 HHH 4522 DDDDDD -- cond 1 4523 HHH 4524 DDDDDD -- cond 2 4525 HHH 4526 DDDDDD -- cond 2 4527 HHH 4528 DDDDDD -- cond 2 4529 HHH 4530 DDDDDD -- cond 3 4531 HHHHHHHH 4532 DDDDDD -- cond 4 4533 */ 4534 if(h1<d1 && h2<=d2 && h2>d1) 4535 d+=JSVCdaydiff(d1,h2,workingDays); 4536 else if(h1>=d1 && h2<=d2 && h2>=h1 && d2>d1) 4537 d+=JSVCdaydiff(h1,h2,workingDays)+1; 4538 else if(h1>=d1 && h2>d2 && d2>h1) 4539 d+=JSVCdaydiff(h1,d2,workingDays); 4540 else if(h1<d1 && h2>d2 && d2>d1) 4541 d+=JSVCdaydiff(d1,d2,workingDays); 4542 } 4543 } 4544 return d; 4545} 4546/* workingDays 4547 1 - 5 working days a week 4548 2 - 6 working days a week 4549*/ 4550function JSVCcountWeekends(date1,date2,workingDays) { 4551 var c=0; 4552 if(typeof(date1)=="string") 4553 date1=CalParseDate(date1); 4554 if(typeof(date2)=="string") 4555 date2=CalParseDate(date2); 4556 date1=new Date(date1.getFullYear(),date1.getMonth(),date1.getDate()); // strip off time 4557 date2=new Date(date2.getFullYear(),date2.getMonth(),date2.getDate()); // strip off time 4558 while(date1 <= date2) { 4559 if(date1.getDay()==0 || (workingDays==1 && date1.getDay()==6)) 4560 c++; 4561 date1.setDate(date1.getDate()+1); 4562 } 4563 return c; 4564} 4565/*--------------------------------End of Date functions ----------------------------------------------*/ 4566function JSVCHourDiff(firstdate,seconddate,caltype){ 4567 if (firstdate==null || firstdate=='' || seconddate==null || seconddate=='') return null; 4568 if(firstdate.constructor!=Date) 4569 firstdate = CalParseDate(firstdate); 4570 if(seconddate.constructor!=Date) 4571 seconddate = CalParseDate(seconddate); 4572 if (firstdate==null || firstdate=='' || seconddate==null || seconddate=='') return null; 4573 var hourval=0; 4574 if(caltype==null){ 4575 hourval=JSVCDateDiff('HOUR',firstdate,seconddate); 4576 }else if (caltype==1){ //min>=30 add 1 hour eg. day 1 00:00 - day 2 00:30 = 25 hours 4577 hourval = Math.round((seconddate.getTime() - firstdate.getTime()) / (1000 * 60 * 60)); 4578 }else if (caltype==2){ //show decimal places for hh.mm 4579 var hrmin = (seconddate.getTime() - firstdate.getTime()) / (1000 * 60 * 60); 4580 var hr = JSVCDateDiff('HOUR',firstdate,seconddate); 4581 var mm = hrmin - hr; 4582 mm = Math.round(mm * 60); 4583 if(mm<10){ 4584 mm='0'+mm.toString(); 4585 } 4586 hourval = hr+'.'+mm; 4587 } 4588 return hourval; 4589} 4590 4591function JSVCLabelStr(lblname,colorbgrnd,colortxt) 4592{ 4593 var lbrem=''; 4594 if(colortxt.indexOf("|")>-1){ 4595 larr=colortxt.split('|'); 4596 colortxt=larr[0]; 4597 lbrem=larr[1]; 4598 } 4599 return "<span "+(lbrem!=''?"title=\""+lbrem+"\" ":"")+" style=\"background-color:"+colorbgrnd+";color:"+colortxt+"\" class=clsSVCLabelFont>"+lblname+"</span>"; 4600} 4601function JSVCLabelEditClick(event,obj) 4602{ var grpid,pobj,olist,postfix=""; 4603 grpid=obj.getAttribute("GRPID"); 4604 if(typeof(grpid)=="string" && grpid!=null && grpid!="") 4605 { 4606 pobj=obj.parentNode.parentNode; 4607 if(pobj==null)return; 4608 if(arguments.length == 3) postfix = '-' + arguments[2]; 4609 olist=pobj.getElementsByTagName("input"); 4610 for(var t=0;t<olist.length;t++) 4611 { if(olist[t]!=obj && olist[t].name=="chklbl" + postfix && olist[t].type=="checkbox" && olist[t].checked && olist[t].checked==true && olist[t].getAttribute("GRPID")==grpid)
4612 olist[t].checked=false; 4613 } 4614 } 4615} 4616function JSVCLabelList(lst) // Accept triples of lblname,colorbgrnd,colortxt 4617{ var s,i; 4618 s=""; 4619 for(i=0;i+3<=lst.length;i+=3) 4620 s+=JSVCLabelStr(lst[i],lst[i+1],lst[i+2]); 4621 return s; 4622} 4623 4624/*--------Kian Yee: Firefox Adaption Functions----*/ 4625 function JSVCCleanWhitespace(node) 4626 { 4627 var notWhitespace = /\S/; 4628 for (var i=0; i < node.childNodes.length; i++) { 4629 var childNode = node.childNodes[i]; 4630 if ((childNode.nodeType == 3)&&(!notWhitespace.test(childNode.nodeValue))) { 4631 // that is, if it's a whitespace text node 4632 node.removeChild(node.childNodes[i]); 4633 i--; 4634 } 4635 if ( childNode.nodeType == 1) { 4636 // elements can have text child nodes of their own 4637 JSVCCleanWhitespace(childNode); 4638 } 4639 } 4640 } 4641 4642JSVCinsertAdjacentElement = function (obj,where,parsedNode) 4643{ 4644 switch (where){ 4645 case 'beforeBegin': 4646 obj.parentNode.insertBefore(parsedNode,obj) 4647 break; 4648 case 'afterBegin': 4649 obj.insertBefore(parsedNode,obj.firstChild); 4650 break; 4651 case 'beforeEnd': 4652 obj.appendChild(parsedNode); 4653 break; 4654 case 'afterEnd': 4655 if (obj.nextSibling) 4656 obj.parentNode.insertBefore(parsedNode,obj.nextSibling); 4657 else obj.parentNode.appendChild(parsedNode); 4658 break; 4659 } 4660} 4661 4662JSVCinsertAdjacentHTML = function (obj,where,htmlStr) 4663{ 4664if (document.all){obj.insertAdjacentHTML(where,htmlStr);} 4665else 4666 { 4667 var r = obj.ownerDocument.createRange(); 4668 r.setStartBefore(obj); 4669 var parsedHTML = r.createContextualFragment(htmlStr); 4670 JSVCinsertAdjacentElement(obj,where,parsedHTML) 4671 } 4672} 4673function JSVCGetPosXY(obj,type){ 4674 if(type==null||type=='')type=1; //type 1: absolute position ; type 2: relative to window displayed 4675 var x=0,y=0; 4676 while (obj!=null&&obj.nodeName!="BODY"){ 4677 x+=obj.offsetLeft;//-obj.scrollLeft; 4678 y+=obj.offsetTop;//-obj.scrollTop; 4679 obj=(obj.offsetParent?obj.offsetParent:obj.parentNode); 4680 } 4681 if (type==2){ 4682 x= x-document.body.scrollLeft; 4683 y= y-document.body.scrollTop; 4684 } 4685 return {x:x,y:y}; 4686} 4687 4688// NOTE: IE10 is not fully supported (still giving error) 4689function JSVCSelectSingleNode(obj,path) 4690{ 4691 if (document.implementation && document.implementation.createDocument) // non-IE 4692 { 4693 var nodes=document.evaluate(path, obj, null, XPathResult.ANY_TYPE, null); 4694 var results=nodes.iterateNext(); 4695 return results; 4696 } 4697 else // for IE7-9 only. IE10 removed this function! 4698 { 4699 return obj.selectSingleNode(path); 4700 } 4701} 4702 4703function JSVChtmUnescape(sXml) { 4704 return sXml.replace(/'/g,"'") 4705 .replace(/"/g,"\"") 4706 .replace(/>/g,">") 4707 .replace(/</g,"<") 4708 .replace(/&/g,"&"); 4709} 4710/*----End of Firefox Adaption function---*/ 4711function JSVCArrayIndexOf(arr,elt/*,from*/) 4712{ 4713 var len = arr.length; 4714 var from = Number(arguments[2]) || 0; 4715 from = (from < 0)? Math.ceil(from) : Math.floor(from); 4716 if (from < 0) 4717 from += len; 4718 for (; from < len; from++) 4719 { 4720 if (from in arr && arr[from] == elt) 4721 return from; 4722 } 4723 return -1; 4724} 4725function JSVCArrayRemove(arr,val) { 4726 for(var i=0;i<arr.length;i++) { 4727 if(arr[i]==val) 4728 arr.splice(i--,1); 4729 } 4730} 4731/* Generates a TBODY DOM object from HTML (gets around DOM limitation, can use for TR too) */ 4732function JSVCcreateTBODY(html) 4733{ var otmp,t2; 4734 var otmp=document.createElement("DIV"); 4735 otmp.style.display="none"; 4736 otmp.style.position="absolute"; 4737 otmp.style.zIndex=-1000; 4738 document.body.appendChild(otmp); 4739 if(otmp==null) 4740 return null; 4741 otmp.innerHTML="<table>"+html+"</table>"; 4742 t2=otmp.firstChild.tBodies[0]; 4743 if(t2!=null) 4744 t2=t2.cloneNode(true); 4745 document.body.removeChild(otmp); 4746 return t2; 4747} 4748function JSVCqueryGetColNo(query,column) { 4749 column=column.toLowerCase(); 4750 if(!query.COLUMNS||!query.DATA) { // returned from serialiseJSON() 4751 return null; 4752 } 4753 for(var x in query.COLUMNS) 4754 if(query.COLUMNS[x].toLowerCase()==column) { 4755 return x; 4756 } 4757 return -1; 4758} 4759function JSVCqueryFindRow(query,colno,value,rowstart) { 4760 if(!query.COLUMNS||!query.DATA) { // returned from serialiseJSON() 4761 return null; 4762 } 4763 if(rowstart==null) 4764 rowstart=0; 4765 for(var t=rowstart;t<query.DATA.length;t++) 4766 { 4767 if(query.DATA[t][colno]==value) 4768 return query.DATA[t]; 4769 } 4770 return null; 4771} 4772function JSVCqueryFindRows(query,colno,clause) { 4773 if(!query.COLUMNS||!query.DATA) { // returned from serialiseJSON() 4774 return null; 4775 } 4776 var rs={}; 4777 rs.COLUMNS=query.COLUMNS; 4778 rs.DATA=[]; 4779 for(var t=0;t<query.DATA.length;t++) 4780 { 4781 if(typeof(clause)=="function") { // a clause which returns boolean 4782 if(clause(query.DATA[t][colno])) 4783 rs.DATA.push(query.DATA[t]); 4784 } else { 4785 if(query.DATA[t][colno]==clause) 4786 rs.DATA.push(query.DATA[t]); 4787 } 4788 } 4789 return rs; 4790} 4791function JSVCqueryGetValue(query,column,rowIndex) { 4792 var i,x; 4793 if(query==null||!query.COLUMNS||!query.DATA) { // returned from serialiseJSON() 4794 return null; 4795 } 4796 i=JSVCqueryGetColNo(query,column); 4797 if(i>=0&&query.DATA[rowIndex]) { 4798 return query.DATA[rowIndex][i]; 4799 } 4800 return null; 4801} 4802function JSVCqueryGetValues(query,column) { 4803 var i,x; 4804 4805 if(query==null||!query.COLUMNS||!query.DATA) { // returned from serialiseJSON() 4806 return null; 4807 } 4808 4809 i=JSVCqueryGetColNo(query,column);
4810 x = 0; 4811 4812 var rs = {}; 4813 rs.COLUMNS=[]; 4814 rs.COLUMNS.push(column); 4815 rs.DATA=[]; 4816 4817 for(i>=0&&query.DATA[x];x<query.DATA.length;x++) { 4818 rs.DATA.push(query.DATA[x][i]); 4819 } 4820 4821 return rs; 4822} 4823function JSVCjsonCreateSelOptions(selobj,query,valueID,nameID,resetlen,attrArr,iLid) { 4824 var nameColNo=JSVCqueryGetColNo(query,nameID), 4825 valueColNo=JSVCqueryGetColNo(query,valueID), 4826 attrColNo=[]; 4827 4828 for(k in attrArr) 4829 { 4830 if( parseInt(JSVCqueryGetColNo(query,attrArr[k])) >= 0 ) 4831 { 4832 attrColNo.push(JSVCqueryGetColNo(query,attrArr[k])); 4833 } 4834 } 4835 4836 if(resetlen==null) resetlen=1; 4837 selobj.options.length = resetlen; 4838 for (var i=0;i<query.DATA.length;i++) 4839 { 4840 if (typeof(iLid) !== 'undefined'){ 4841 var ilidColNo=JSVCqueryGetColNo(query,iLid); 4842 var Desc = JSVClang(query.DATA[i][nameColNo],query.DATA[i][ilidColNo]); 4843 } else { 4844 var Desc = query.DATA[i][nameColNo] 4845 } 4846 selobj.options[i + 1] = new Option(Desc,query.DATA[i][valueColNo]); 4847 for(var k in attrColNo) { 4848 selobj.options[i + 1].setAttribute(attrArr[k],query.DATA[i][attrColNo[k]]); 4849 } 4850 } 4851} 4852/* -------------------------- 4853 System Prototype 4854-----------------------------*/ 4855String.prototype.padLeft=function(char,maxLength) { 4856 var result=this.valueOf(); 4857 for(var i=this.length;i<maxLength;i++) 4858 result=char+result; 4859 return result; 4860} 4861Date.prototype.add=function(interval,num) { 4862 var dt=this; 4863 if (num==0) 4864 return dt; 4865 switch(interval.toLowerCase()) { 4866 case "ms": 4867 dt.setMilliseconds(dt.getMilliseconds()+num); 4868 break; 4869 case "s": 4870 dt.setSeconds(dt.getSeconds()+num); 4871 break; 4872 case "mi": 4873 dt.setMinutes(dt.getMinutes()+num); 4874 break; 4875 case "h": 4876 dt.setHours(dt.getHours()+num); 4877 break; 4878 case "d": 4879 dt.setDate(dt.getDate()+num); 4880 break; 4881 case "mo": 4882 dt.setMonth(dt.getMonth()+num); 4883 break; 4884 case "y": 4885 dt.setFullYear(dt.getFullYear()+num); 4886 break; 4887 } 4888 return dt; 4889} 4890Date.prototype.DateFormat=function(format) { 4891 var smth=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]; 4892 var lmth=["January","February","March","April","May","June","July","August","September","October","November","December"]; 4893 var sday=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]; 4894 var lday=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]; 4895 var list=[ 4896 ["yyyy",function(dt){return dt.getFullYear()}], 4897 ["mm",function(dt){return ((dt.getMonth()+1)<10?"0":"")+(dt.getMonth()+1)}], 4898 ["dd",function(dt){return (dt.getDate()<10?"0":"")+dt.getDate()}], 4899 ["mmm",function(dt){return smth[dt.getMonth()]}] 4900 ]; 4901 var rs=format; 4902 for(var i=0;i<list.length;i++) { 4903 var itm=list[i]; 4904 if(format.indexOf(itm[0])>=0) { 4905 rs=rs.replace(itm[0],itm[1](this)); 4906 } 4907 } 4908 return rs; 4909} 4910Date.prototype.TimeFormat=function(format) { 4911 var s=""; 4912 var list=[ 4913 ["HH",function(dt){return (dt.getHours()<10?"0":"")+dt.getHours()}], 4914 ["mm",function(dt){return (dt.getMinutes()<10?"0":"")+dt.getMinutes()}], 4915 ["ss",function(dt){return (dt.getSeconds()<10?"0":"")+dt.getSeconds()}], 4916 //12 hour format 4917 ["h",function(dt){return (dt.getHours()>=12?(dt.getHours()==12?12:dt.getHours()-12):(dt.getHours()==0?12:dt.getHours()))}], 4918 ["TT",function(dt){return (dt.getHours()>=12?"PM":"AM")}] 4919 ]; 4920 var rs=format; 4921 for(var i=0;i<list.length;i++) { 4922 var itm=list[i]; 4923 if(format.indexOf(itm[0])>=0) { 4924 rs=rs.replace(itm[0],itm[1](this)); 4925 } 4926 } 4927 return rs; 4928} 4929/* http://delete.me.uk/2005/03/iso8601.html */ 4930/* KY : fixing for DB string, output without the T, no offset*/ 4931Date.prototype.setISO8601 = function (string) { 4932 var regexp = "([0-9]{4})(-([0-9]{2})(-([0-9]{2})" + 4933 "((T| )([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?" + 4934 "(Z|(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?"; 4935 var d = string.match(new RegExp(regexp)); 4936 var offset = 0; 4937 var date = new Date(d[1], 0, 1); 4938 4939 if (d[3]) { date.setMonth(d[3] - 1); } 4940 if (d[5]) { date.setDate(d[5]); } 4941 if (d[8]) { date.setHours(d[8]); } 4942 if (d[9]) { date.setMinutes(d[9]); } 4943 if (d[11]) { date.setSeconds(d[11]); } 4944 if (d[13]) { date.setMilliseconds(Number("0." + d[13]) * 1000); } 4945 /*if (d[15]) { 4946 offset = (Number(d[17]) * 60) + Number(d[18]); 4947 offset *= ((d[16] == '-') ? 1 : -1); 4948 } 4949 4950 offset -= date.getTimezoneOffset();*/ 4951 time = (Number(date) /*+ (offset * 60 * 1000)*/); 4952 this.setTime(Number(time)); 4953} 4954/* -------------------------- 4955 JSVCform Class 4956-----------------------------*/ 4957function JSVCform(id,type,title,columns,order,repeat,queryPK,query,showinit,allowdel,nopreprocessform,titlestyle,appendIDToFieldName,readonly,columnStyle,duplicateMode,readonlyFields,skiphdrrpt,rowcounter) { 4958 this.id=id; // varname 4959 this.type=type; 4960 this.title=title; 4961 this.columns=columns; 4962 this.order=order; 4963 this.repeat=repeat; 4964 if(this.repeat>1) 4965 this.type="TABLE"; 4966 this.queryPK=queryPK; // for repeat>1 4967 this.query=query; // for repeat>1 4968 this.showinit=(showinit==null?1:showinit); 4969 this.allowdel=(allowdel==null?0:allowdel); 4970 this.nopreprocessform=nopreprocessform; 4971 this.titlestyle=(titlestyle==null?0:titlestyle); // 1: Numbering style with hash (#) prefix 4972 this.appendIDToFieldName=(appendIDToFieldName==null?false:appendIDToFieldName); 4973 this.readonly = readonly || false; 4974 this.columnStyle=(columnStyle==null?0:columnStyle); // 0 (default): Display field name/title in column based, 1: Dis
4974play field name/title in row based 4975 this.duplicateMode=(duplicateMode==null?0:duplicateMode); 4976 this.readonlyFields = readonlyFields || 0; // Make Fields readonly empty/0|not readonly, 1|all fields readonly, value passed|will be excluded from readonly 4977 this.skiphdrrpt=(skiphdrrpt==null?0:skiphdrrpt); 4978 this.rowcnt=(rowcounter==null?0:rowcounter); 4979} 4980JSVCform.prototype.gen=function(cols) { 4981 if(cols!=null) { 4982 JSVCArrayRemove(cols,null); 4983 this.cols=cols; 4984 } 4985 if(this.repeat>1) { 4986 this.show=this.query.DATA.length; 4987 if(this.show>this.repeat) 4988 this.repeat=this.show; 4989 if(this.show==0) 4990 this.show=this.showinit; 4991 } 4992 else 4993 this.show=1; 4994 var isRegen=true; 4995 var o=document.getElementById(this.id); 4996 if(o==null) { 4997 isRegen=false; 4998 document.write("<div id="+this.id+"></div>"); 4999 o=document.getElementById(this.id); 5000 } 5001 var s=""; 5002 s+="<input type=hidden name="+this.id+"_ROWCNT value="+this.show+">"; 5003 s+="<input type=hidden name="+this.id+"_REPEATROWS value="+this.repeat+">"; 5004 s+="<input type=hidden name="+this.id+"_APPENDIDTOFIELDNAME value="+(this.appendIDToFieldName?1:0)+">"; 5005 if(this.repeat>1) 5006 for(var i=0;i<this.repeat;i++) 5007 s+=this.gen2(this.cols,i); 5008 else 5009 s+=this.gen2(this.cols,null); 5010 if(this.repeat>1 && this.show<this.repeat && !this.readonly) 5011 s+="<div style=margin-top:6px align=left><input type=button class=clsSVCButton value='"+(this.show>0?JSVClang("Add More",7645):JSVClang("Add",2210))+" >>' onclick='var result="+this.id+".addMore(this);if(result){JSVChide(this.parentNode)}'></div>"; 5012 o.innerHTML=s; 5013 5014 if(!this.nopreprocessform&&!/MrmPreprocessForm/gi.test(window.onload)) 5015 AddOnloadCode("MrmPreprocessForm();"); 5016 // Preprocess & trigger onblur for all INPUT elements 5017 var elem=o.getElementsByTagName("INPUT"); 5018 for(var i=0;i<elem.length;i++) { 5019 var o2=elem[i]; 5020 if(isRegen) 5021 MRMPreprocessFormItem(o2); 5022 if(o2.onblur&&typeof(o2.onblur)=="function") 5023 o2.onblur(); 5024 } 5025 elem=o.getElementsByTagName("SELECT"); 5026 for(var i=0;i<elem.length;i++) { 5027 var o2=elem[i]; 5028 if(isRegen) 5029 MRMPreprocessFormItem(o2); 5030 if(o2.onblur&&typeof(o2.onblur)=="function") 5031 o2.onblur(); 5032 } 5033 elem=o.getElementsByTagName("TEXTAREA"); 5034 for(var i=0;i<elem.length;i++) { 5035 var o2=elem[i]; 5036 if(isRegen) 5037 MRMPreprocessFormItem(o2); 5038 if(o2.onblur&&typeof(o2.onblur)=="function") 5039 o2.onblur(); 5040 } 5041 this.ajaxStart(); 5042} 5043JSVCform.prototype.gen2=function(cols,index) { 5044 var str=""; 5045 if(index==null) 5046 index=0; 5047 var rowid=JSVCqueryGetValue(this.query,this.queryPK,index); 5048 if(this.duplicateMode) // When in Duplicate mode, always treat it as new row 5049 rowid=null; 5050 var disp_cols=[]; 5051 for(var i=0;i<cols.length;i++) { 5052 if(cols[i][0]!="HIDDEN") 5053 disp_cols.push(cols[i]); 5054 } 5055 if(this.type=="TABLE") { 5056 str+="<table class=clsClmTable width=100%"+(this.repeat>1?" id=TAB"+this.id+index:"")+" style=margin-top:5px;"+(this.repeat>1&&(index+1)>this.show?"display:none;":"")+">"; 5057 if(this.title) { 5058 var title=""; 5059 if(this.titlestyle==1) 5060 title=this.title+" #"+(index+1); 5061 else 5062 title=this.title+(index>0?" "+(index+1):""); 5063 str+="<tr><td class=header colspan="+(this.columnStyle==0?2:1)*this.columns+"><div style='float:left;margin-top:2px'>"+title+"</div>"; 5064 if(this.allowdel==1 && this.repeat>1 && this.title.length>0) 5065 str+="<div style=float:right><input type=checkbox value='"+index+"|"+(rowid==null?0:rowid)+"' name="+this.id+"_CHKDEL id="+this.id+index+"_CHKDEL onclick=JSVCSetDisabledList('TAB"+this.id+index+"BODY',this.checked) style='vertical-align:middle'><label for="+this.id+index+"_CHKDEL style='vertical-align:middle'>"+JSVClang("Mark as Delete",12461)+"</label></div>"; 5066 str+="</td></tr>"; 5067 } 5068 if(this.columnStyle==1) { 5069 for(var i=0;i<disp_cols.length;i++) { 5070 var addCnt=""; 5071 if(i>0 && (i%this.columns)==0 && (this.skiphdrrpt!=1&&index==1)) 5072 str+="</tr>"; 5073 5074 if(i<disp_cols.length && (i%this.columns)==0 && (this.skiphdrrpt!=1&&index==1)) 5075 str+="<tr>"; 5076 5077 //add no. col 5078 if(this.rowcnt==1&&i==0&&index==0){ 5079 addCnt="<td class=clsClmRefTone1 style='font-weight:normal;width:50px;'> </td>" 5080 } 5081 5082 //show header for first row 5083 if(this.skiphdrrpt==1&index>0){ 5084 str+=""; 5085 }else{ 5086 str+=(addCnt.length>0?addCnt:'')+"<td class=clsClmRefTone1 style='font-weight:normal;width:35ex'>"+(disp_cols[i]?disp_cols[i][1]:"")+"</td>" 5087 } 5088 5089 //type 2 delete style 5090 if(i==disp_cols.length-1&&index==0&&this.allowdel==2){ 5091 str+="<td class=clsClmRefTone1 style='font-weight:normal;width:2%'> </td>" 5092 } 5093 5094 } 5095 } 5096 if(this.skiphdrrpt!=1){ 5097 for(var i=0;i<this.columns;i++) { 5098 if(this.columnStyle==0)
5099 str+="<col class=clsClmRefTone1 style=font-weight:bold;width:35ex>"; 5100 str+="<col class=clsClmRefTone2 style='width:"+(this.columns>1?100/this.columns/2:"auto")+"%'>"; 5101 } 5102 } 5103 5104 } 5105 var tbodyid="TAB"+this.id+index+"BODY"; 5106 str+="<tbody id="+tbodyid+">"; 5107 for(var i=0;i<cols.length;i++) { 5108 if(cols[i][0]=="HIDDEN") 5109 str+=this.getCol(cols[i],index); // Generate HIDDEN fields at first 5110 } 5111 for(var i=0;i<disp_cols.length;i++) { 5112 if(i>0 && (i%this.columns)==0) 5113 str+="</tr>"; 5114 if(i<disp_cols.length && (i%this.columns)==0) 5115 str+="<tr>"; 5116 5117 if(this.rowcnt==1&&i==0){ 5118 str+="<td class=clsClmRefTone1 style='font-weight:normal;display:block' align=center width=25>"+(index+1)+"</td>" 5119 } 5120 5121 if(this.columnStyle==0) 5122 str+="<td valign=\"top\">"+(disp_cols[i]?disp_cols[i][1]:"")+"</td>" 5123 str+="<td "+(index>0&&this.skiphdrrpt==1?"style='width:35ex'":"")+" id=TAB"+this.id+index+"COL"+i+" valign=\"top\">"+this.getCol(disp_cols[i],index)+"</td>"; 5124 5125 if(i==disp_cols.length-1&&this.allowdel==2){ 5126 str+="<td "+(index>0&&this.skiphdrrpt==1?"style='width:2%'":"")+" ><input type=checkbox value='"+index+"|"+(rowid==null?0:rowid)+"' name="+this.id+"_CHKDEL id="+this.id+index+"_CHKDEL onclick=JSVCSetDisabledList('TAB"+this.id+index+"BODY',this.checked,this.name) style='vertical-align:middle'><label for="+this.id+index+"_CHKDEL style='vertical-align:middle'><b>"+JSVClang("Del",0)+"</b></label></td>" 5127 } 5128 } 5129 if(cols.length>0) 5130 str+="</tr>"; 5131 str+="</tbody>"; 5132 if(this.type=="TABLE") 5133 str+="</table>"; 5134 str+="<input type=hidden name="+this.id+"_"+this.queryPK+" value='"+(rowid==null?0:rowid)+"'>"; 5135 return str; 5136} 5137JSVCform.prototype.getCol=function(col,index) { 5138 // standard cols - 0:type,1:title,2:objname,3:req,4:qryvaluename 5139 if(col==null) 5140 return ""; 5141 var str=""; 5142 var multirows=(this.repeat>1 && index!=null && index>=0); 5143 var name=jGetObjName(this,col[2]); 5144 var value=jGetVal(this.query,col[4]); 5145 var readonlyField=this.readonlyFields; 5146 var genColEmail; 5147 var idPart = name.lastIndexOf('_'); 5148 if(typeof(idpart)=='undefined'){idpart=0;} 5149 var idPart2 = name.slice(idPart+1,name.length); 5150 if(typeof(idpart2)=='undefined'){idpart2=0;} 5151 5152 if(col[0]=="TEXT") { 5153 // 5:maxlength,6:size,7:uppercase,8:blurfunc,9:warnmsg 5154 str="<input type=text name="+name+(col[3]==1?" CHKREQUIRED":"")+" value=\""+SVChtm(value.toString())+"\""+(col[5]>0?" maxlength="+col[5]:"")+(col[6]>0?" size="+col[6]:"")+" onblur=DoReq(this);"+(col[8]!=null?col[8]+";":"")+(col[7]==1?"this.value=this.value.toUpperCase(); style=text-transform:uppercase":"")+">"; 5155 if(col[9]!=null) { 5156 var msg=""; 5157 eval(jTrParam(this.query,col[9])); 5158 if(msg!="") 5159 str+="<div class=clsSVCColorWarning>"+JSVChtmUnescape(msg)+"</div>"; 5160 } 5161 } 5162 else if(col[0]=="CALDATE") { 5163 // 5:dtmin,6:dtmax,7:warnmsg,8:onblur function 5164 str="<input MRMOBJ=CALDATE type=text name="+name+(col[3]==1?" CHKREQUIRED":"")+" value=\""+jFormat(0,value)+"\" maxlength=10"+(col[5]!=""?" DTMIN='"+col[5]+"'":"")+(col[6]!=""?" DTMAX='"+col[6]+"'":"")+" onblur=ObjDate(this);"+col[8]+">"; 5165 if(col[7]!=null) { 5166 var msg=""; 5167 eval(jTrParam(this.query,col[7])); 5168 if(msg!="") 5169 str+="<div class=clsSVCColorWarning>"+JSVChtmUnescape(msg)+"</div>"; 5170 } 5171 } 5172 else if(col[0]=="MONEY") { 5173 // 5:blurfunc,6:preset value 5174 if((value==''||value==0)&&col[6]!=null)value=jFormat(1,col[6]); 5175 str="<input type=text name="+name+(col[3]==1?" CHKREQUIRED":"")+" value=\""+jFormat(1,value)+"\" maxlength=12 size=20 onblur=JSVCCurr(this);"+(col[5]!=null?col[5]+";":"")+">"; 5176 } 5177 else if(col[0]=="CHECKBOX") { 5178 // 5:bitmask,6:clickfunc 5179 var bitmask=(isNaN(col[5])?0:col[5]); 5180 var onclick=col[6]; 5181 str="<input type=hidden name="+name+" value=0><input type=checkbox name="+name+(col[3]==1?" CHKREQUIRED":"")+" id="+name+"_"+bitmask+" value="+bitmask+((value&bitmask)==bitmask?" checked":"")+(onclick!=null?" onclick="+this.id+".objCallback(this,'CHECKBOX','"+col[2]+"')":"")+">"; 5182 } 5183 else if(col[0]=="RADIO") { 5184 // 5:selection list e.g.: 0,test1,1,test2 ... where odd position represents value, even represents text ; 6:clickfunc 5185 var sellist=(col[5]==null||col[5]==''?'':col[5]); 5186 var onclick=col[6]; 5187 var seltxt,selval; 5188 sellist=sellist.split(","); 5189 str=""; 5190 for(var cnt=0;cnt<sellist.length && cnt+1 < sellist.length ; cnt=cnt+2) { 5191 selval=sellist[cnt];seltxt=sellist[cnt+1]; 5192 str+='<label><input '+(readonlyField>
51920?(readonlyField!=idPart2?'DISABLED onclick="return false;" ':(readonlyField==1?' onclick="return false;" ':'')):'')+' type="radio" name="'+name+'" value='+(isNaN(selval)?'"'+selval+'"':selval)+(onclick!=null&&readonlyField!=1?" onclick="+this.id+".objCallback(this,'RADIO','"+col[2]+"')":"")+(selval==value?" checked":"")+' > '+seltxt+' </label>'; 5193 } 5194 } 5195 else if(col[0]=="TEXTAREA") { 5196 // 5:maxchar,6:rows,7:width 5197 var maxchar=(col[5]==null?1024:col[5]); 5198 var rows=(col[6]==null?5:col[6]); 5199 var colwidth=(col[7]==null?"100%":col[7]); 5200 str="<textarea "+(readonlyField>0?(readonlyField!=idPart2?" DISABLED READONLY ":(readonlyField==1?" DISABLED READONLY ":"")):"")+" WRAP=SOFT MRMOBJ=TEXTAREA MAXCHAR="+maxchar+" ROWS="+rows+" name="+name+(col[3]==1?" CHKREQUIRED":"")+" style=width:"+colwidth+" onblur=ObjText(this)>"+value+"</textarea>"; 5201 } 5202 else if(col[0]=="SELECT") { 5203 // 5:optionlist,6:seprator,7:blurfunc 5204 str="<select name="+name+(col[3]==1?" CHKREQUIRED":"")+" onchange=DoReq(this);"+(col[5]!=null?this.id+".objCallback(this,'SELECT','"+col[2]+"')":"")+"><option value=''></option>"; 5205 str+=JSVCgenOptions(col[5],col[6],value); 5206 str+="</select>"; 5207 } 5208 else if(col[0]=="SELECT_NOEMPTY") { 5209 // 5:optionlist,6:seprator,7:blurfunc 5210 str="<select name="+name+(col[3]==1?" CHKREQUIRED":"")+" onblur=DoReq(this);"+(col[5]!=null?this.id+".objCallback(this,'SELECT_NOEMPTY','"+col[2]+"')":"")+">"; 5211 str+=JSVCgenOptions(col[5],col[6],value); 5212 str+="</select>"; 5213 } 5214 else if(col[0]=="JS") { 5215 // 5:qryvaluename2,6:jsfunc 5216 var value2=jGetVal(this.query,col[5]); 5217 str=eval(col[6]); 5218 } 5219 else if(col[0]=="HTML") { 5220 // 5:html (now accepts function(this,col,index) as a HTML generator) 5221 if(typeof(col[5])=="function") 5222 str=col[5](this,col,index) 5223 else 5224 str=col[5]; 5225 } 5226 else if(col[0]=="AJAX") { 5227 // 5:url 5228 str="<div>"+JSVClang("Loading",9242)+"... <img style=vertical-align:middle src='"+request.approot+"services/images/loading-anim.gif'></div>"; 5229 } 5230 else if(col[0]=="EMAIL") { 5231 eval('svcmain_vars.genColEmail_'+this.id+'_'+name+'= new JSVCgenMultiRows(\"svcmain_vars.genColEmail_'+this.id+'_'+name+'\",null,\"'+name+'\",\"'+value+'\",\",\",\"JSVCDoEmail(this)\",null,'+(col[3]==1?1:0)+',/*maxrows*/null,/*disptype*/null,/*optvaluelist*/null,/*optvaluelistsep*/null,true);'); 5232 eval('str=svcmain_vars.genColEmail_'+this.id+'_'+name+'.gen(1)'); 5233 } 5234 else if(col[0]=="HIDDEN") { 5235 str="<input "+(readonlyField>0?(readonlyField!=idPart2?" DISABLED READONLY ":(readonlyField==1?" DISABLED READONLY ":"")):"")+" type=hidden id="+name+" name="+name+" value=\""+value+"\">"; 5236 } 5237 else if(col[0]=="SVCPOPSEL") { // SVCSELECTOR/SARISSA js need to be included, avoid arranging the object for this col as it may interrupting the existing function from the local's script 5238 // 5:url,6:xmldisplayfield,7:xmlvaluefield,8:hiddenvaluefield 5239 str="<input"+(col[3]==1?" CHKREQUIRED":"")+" READONLY tabindex=-1 style='background-color:silver' id="+name+" name="+name+" size=50 onblur=DoReq(this) value=\""+SVChtm(value.toString())+"\">"; 5240 str+="<input type=button class=clsSVCButton value='Lookup...' id=\"btnSVCpopsel_"+name+"\" onclick=\"SVCpopsel_"+name+".StartSearch('','&S=')\">"; 5241 var str2="<script>"; 5242 str2+="var SVCpopsel_"+name+"=new SVCPopSelector('SVCpopsel_"+name+"','"+col[5]+"','POPUP','"+col[6]+"','"+col[7]+"',0,1,1,'"+name+"','"+jGetObjName(this,col[8])+"',null,null);"; 5243 str2+="</script>"; 5244 document.write(str2); 5245 } 5246 else if(col[0]=="GROUP") { 5247 var tmpstr = ""; 5248 var tmpcol = col[5]; 5249 if(col[3]==1 || col[3]==2) { // 1: horizontal, no line break, 2: simple line break 5250 for(var i=0; i<tmpcol.length; i++) { 5251 if(tmpcol[i][0]!="HIDDEN") tmpstr+=tmpcol[i][1]+" "; 5252 tmpstr+=this.getCol(tmpcol[i],index)+(col[3]==1?" ":"<br />"); 5253 } 5254 } 5255 else if(col[3]==3) { // table layout 5256 tmpstr='<table border="0" width="0" margin="0" cellspacing="0" cellpadding="1" width="100%" style="border: 0px none;">'; 5257 for(var i=0; i<tmpcol.length; i++) { 5258 tmpstr+='<tr><td width="30%" valign="top" style="border: 0px none;" nowrap>'; 5259 if(tmpcol[i][0]!="HIDDEN") tmpstr+=tmpcol[i][1]; 5260 tmpstr+=' </td>'; 5261 tmpstr+='<td width="70%" valign="top" style="border: 0px none;">'; 5262 tmpstr+=this.getCol(tmpcol[i],index); 5263 tmpstr+=' </td></tr>'; 5264 } 5265 tmpstr+='</table>'; 5266 } 5267 5268 str=tmpstr; 5269 } 5270 return str; 5271 function jFormat(type,value) { 5272 var e=document.createElement("INPUT"); 5273 e.value=value; 5274 if(type==0) 5275 ObjDate(e); 5276 else if(type==1) 5277 JSVCCurr(e); 5278 return e.value; 5279 } 5280 function jGetVal(qry,colname) { 5281 var value=JSVCqueryGetValue(qry,colname,(multirows?index:0)); 5282 if(value==null) 5283 value=""; 5284 return value; 5285 } 5286 function jTrParam(qry,str) { 5287 var rx=new RegExp("\{([a-z0-9_]+)\}","i"); // translate params i.e. {CASEID} 5288 var m=rx.exec(str) 5289 while(m!=null) { 5290 str=str.replace(m[0],jGetVal(qry,m[1])); 5291 m=rx.exec(str); 5292 } 5293 return str; 5294 } 5295 function jGetObjName(o,objname) { 5296 var str=""; 5297 if(multirows) { // multiple rows 5298 var rowid=JSVCqueryGetValue(o.query,o.queryPK,index); 5299 if(o.duplicateMode) // When in Duplicate mode, always treat it as new row 5300 rowid=null; 5301 if(rowid!=null && rowid>0) { 5302 str=(o.appendIDToFieldName?o.id+"_":"")+objname+"_"+rowid; // existing row 5303 } else { 5304 str=(o.appendIDToFieldName?o.id+"_":"")+objname+index; // new row 5305 } 5306 } else { // one row 5307 str=(o.appendIDToFieldName?o.id+"_":"")+objname; 5308 } 5309 return str; 5310 } 5311} 5312JSVCform.prototype.addMore=function(obj) { 5313 var next=JSVCall("TAB"+this.id+this.show); 5314 if(next!=null) { 5315 JSVCshow(next); 5316 this.show++; 5317 next=JSVCall(this.id+"_ROWCNT"); 5318 next.value=this.show; 5319 } 5320 // button text 5321 obj.value=(this.show>0?JSVClang("Add More",7645):JSVClang("Add",2210))+" >>" 5322 if(this.show>=this.repeat) // last to show? 5323 return true; 5324 else
5325 return false; 5326} 5327JSVCform.prototype.objCallback=function(sender,type,objname) { 5328 var callbackCol; 5329 switch(type) { 5330 case "CHECKBOX": case "RADIO": 5331 callbackCol = 6; 5332 break; 5333 case "SELECT": case "SELECT_NOEMPTY": 5334 callbackCol = 7; 5335 break; 5336 default: 5337 return; 5338 } 5339 for(var i in this.cols) 5340 if(type==this.cols[i][0] && objname==this.cols[i][2]) { 5341 if(this.cols[i][callbackCol]!=null) { 5342 this.cols[i][callbackCol](sender,type,objname); 5343 } 5344 } 5345} 5346JSVCform.prototype.attachOnloadCode=function() { 5347 for(var i in this.cols) { 5348 var col=this.cols[i]; 5349 if(col[0]=="CHECKBOX" && col[6]!=null && typeof(col[6])=="function") { // has function 5350 var f=col[6].toString(); 5351 if(f.substr(0,8)=="function") { 5352 f=f.replace(/function[^\(]*\([^\)]*\)[^\{]*\{([\s\S]+)\}/,"$1"); 5353 } 5354 AddOnloadCode(f+";"); 5355 } 5356 } 5357} 5358JSVCform.prototype.ajaxStart=function() { 5359 for(var r=0;this.repeat>1 && r<this.repeat;r++) 5360 if((r+1)<=this.show) { 5361 for(var c=0;c<cols.length;c++) { 5362 var rowid=JSVCall("TAB"+this.id+r+"COL"+c); 5363 var col=this.cols[c]; 5364 if(rowid!=null && col[0]=="AJAX") { 5365 MRMHTTPRequest("GET",col[5],null,this.ajaxComplete,null,null,null,null,rowid); 5366 } 5367 } 5368 } 5369} 5370JSVCform.prototype.ajaxComplete=function(xmlhttp,readyparam) { 5371 if(xmlhttp!=null) { 5372 var obj=JSVCall(readyparam); 5373 if(obj!=null) { 5374 var txt=xmlhttp.responseText; 5375 if(txt.length==0) { 5376 obj.innerHTML="ERROR"; 5377 } 5378 else 5379 if(txt.length>0 && txt.match(/^[\s\t]*function/i)) 5380 obj.innerHTML=eval(txt); 5381 else 5382 obj.innerHTML=txt; 5383 } 5384 } 5385} 5386function JSVCgetElementByTagNameAndId(obj,tagname,id) 5387{ // Get the first matching element by tagname & ID 5388 var l=obj.getElementsByTagName(tagname); 5389 for(var t=0;t<l.length;t++) 5390 { if(l[t].id==id) 5391 return l[t]; 5392 } 5393 return null; 5394} 5395function JSVCgetAllElementsByTagNameAndId(obj,tagname,id) 5396{ // Get list of all elements matching tagname and ID 5397 var l,arr; 5398 l=obj.getElementsByTagName(tagname); 5399 arr=new Array(); 5400 for(var t=0;t<l.length;t++) 5401 { if(l[t].id==id) 5402 arr[arr.length]=l[t]; 5403 } 5404 return arr; 5405} 5406function JSVCRateInputChg(nm,maxdays) 5407{ var sel,o1,o2,o3,ovat,odisp,tmp,vatpc; 5408 o1=document.getElementsByName(nm+"DAYS")[0]; 5409 o2=document.getElementsByName(nm+"RATE")[0]; 5410 ovat=document.getElementsByName(nm+"VATPC")[0]; 5411 if(ovat) 5412 vatpc=JSVCNumLOCtoDB(ovat.value); 5413 if(vatpc==""||vatpc==null) 5414 vatpc=0; 5415 odisp=document.getElementById(nm+"TOTDISP_DEFAULT"); 5416 sel=JSVCRadioGetValue("rb"+nm); 5417 if(sel!=null) 5418 { 5419 o3=document.getElementsByName("sle"+nm)[0]; 5420 if(sel=="1") 5421 { o1.disabled=false;o2.disabled=false;o3.disabled=true;if(ovat)ovat.disabled=false; 5422 } else 5423 { o1.disabled=true;o2.disabled=true;o3.disabled=false;if(ovat)ovat.disabled=true; 5424 } 5425 JSVCCurr(o3); 5426 } 5427 if(parseInt(o1.value)>parseInt(maxdays)){ JSVCniceralert("The max days allowed is "+maxdays+" days",0,"Maximum days exceeded.");} 5428 JSVC2DP(o1,maxdays,0.01); 5429 //JSVC1DP(o1,9999,0.1); 5430 JSVCCurr(o2); 5431 // Check if got TOTDISPID --> update total there instead 5432 tmp=o2.getAttribute("TOTDISPID"); 5433 if(tmp!=null && tmp!="") 5434 { 5435 o3=document.getElementById(tmp); 5436 if(o3!=null&&o3.tagName=="INPUT") 5437 { 5438 o3.value=((o1.value==""||o2.value=="")?"":JSVCNumDBtoLOC(JSVCNumLOCtoDB(o1.value)*JSVCNumLOCtoDB(o2.value)*(100+vatpc)/100)); 5439 o3.onblur(); 5440 } 5441 } else if(odisp!=null) 5442 odisp.innerHTML=((o1.value==""||o2.value=="")?"?":JSVCNumDBtoLOC(JSVCNumLOCtoDB(o1.value)*JSVCNumLOCtoDB(o2.value)*(100+vatpc)/100)); 5443} 5444function JSVCRateInputGenStr(nm,curr,desc,req,allow_lumpsum,days,rate,lumpsum,totdisp_id,allow_vatpcname,vatpclist,vatpc,maxdays) 5445{ var str,chk; 5446 str=""; 5447 if(days==null)days="";if(rate==null)rate="";if(lumpsum==null)lumpsum=""; 5448 if(totdisp_id==null)totdisp_id=""; 5449 if(days==""&&allow_lumpsum>0&&lumpsum!="")chk=0 5450 else chk=1; 5451 str+= 5452 /* Generate radio-button, if allow_lumpsum */ 5453 (allow_lumpsum>0?"<input type=radio id=\"_rb"+nm+"1\" name=\"rb"+nm+"\" onclick=\"JSVCRateInputChg('"+nm+"')\" value=\"1\" "+(chk==0?"":" checked")+"><!--label for=\"_rb"+nm+"1\"--> ":"")+ 5454 /* Generate day/rate calc fields */ 5455 "<input CHKNAME=\""+desc+" ("+JSVClang("days",3642)+")\" "+(req?"CHKREQUIRED ":"CHKREQUIRED=\"obj.nextSibling.nextSibling.value!=''\" ")+" size=7 maxlength=6 name=\""+nm+"DAYS\" onblur
5455=\"JSVCRateInputChg('"+nm+"','"+maxdays+"')\" value=\""+days+"\"> "+" x <input CHKNAME=\""+desc+" ("+JSVClang("rate",7213)+")\" "+(req?"CHKREQUIRED ":"CHKREQUIRED=\"obj.previousSibling.previousSibling.value!=''\" ")+"size=10 maxlength=8 "+(totdisp_id!=""?"TOTDISPID=\""+totdisp_id+"\" ":"")+" name=\""+nm+"RATE\" onblur=\"JSVCRateInputChg('"+nm+"')\" value=\""+JSVCCurr(rate)+"\"> "+ 5456 curr+"("+JSVClang("rate",7213)+")"; 5457 if(allow_vatpcname!=null && allow_vatpcname!="") 5458 { 5459 str+=" + <span class='taxnamev'>"+allow_vatpcname+"</span>% "; 5460 if(vatpclist!=null && vatpclist!='') 5461 { 5462 str+="<SELECT CHKNAME=\""+desc+" ("+allow_vatpcname+")\" name=\""+nm+"VATPC\" onblur=\"JSVCRateInputChg('"+nm+"')\" onchange=\"JSVCRateInputChg('"+nm+"')\">"; 5463 var vatpclistarr=vatpclist.split("|"); 5464 for(var abc in vatpclistarr) 5465 str+="<OPTION VALUE=\""+vatpclistarr[abc]+"\""+(vatpclistarr[abc]==vatpc?" SELECTED":"")+">"+vatpclistarr[abc]+"</OPTION>"; 5466 str+="</SELECT>"; 5467 } 5468 else 5469 str+="<input CHKNAME=\""+desc+" ("+allow_vatpcname+")\" size=7 maxlength=6 name=\""+nm+"VATPC\" onblur=\"JSVCRateInputChg('"+nm+"')\" value=\""+vatpc+"\">"; 5470 } 5471 str+= 5472 (totdisp_id==""?" = <b>"+curr+"</b><b id=\""+nm+"TOTDISP_DEFAULT\"> </b>":"")+ 5473 (allow_lumpsum>0?"<!--/label--><br><input type=radio id=\"_rb"+nm+"0\" name=\"rb"+nm+"\" onclick=\"JSVCRateInputChg('"+nm+"')\" value=\"0\" "+(chk==0?" checked":"")+"><!--label for=\"_rb"+nm+"0\"--> "+JSVClang("Lump-Sum",7214)+" ("+curr+"): <input "+(req?"CHKREQUIRED ":"")+"name=\"sle"+nm+"\" value=\""+lumpsum+"\" maxlength=14 onblur=JSVCCurr(this)><!--/label-->" 5474 :""); 5475 return str; 5476} 5477 5478 5479// the checkboxes and exception links are disabled without this, this gives the "can see (grey) but can't touch" effect 5480// to remove the semi transparent div, just change the 100%'s to 0%'s or comment out the related lines 5481// KY (19/10/2012) Support multi layer disabling (if no oCapture passed in, wont do anything) 5482function JSVCPageDisable(oCapture,bActivate){ 5483 var extlayer;//check if disabling div existed 5484 var disable_div = document.getElementById('JSVCdivfullpage'); 5485 if((disable_div==null && bActivate==false)||oCapture==null) 5486 return; 5487 if (disable_div == null) { 5488 disable_div = document.createElement("DIV"); 5489 disable_div.className = "clsSVCdisablelayer"; 5490 disable_div.id = "JSVCdivfullpage"; 5491 //disable_div.style.zIndex=900; 5492 disable_div.style = "z-index: 900; display:block !important"; 5493 disable_div.setAttribute("HIDDEN", "1"); 5494 document.body.appendChild(disable_div); 5495 extlayer=0; 5496 } else { 5497 extlayer=1; 5498 } 5499 if(bActivate){ 5500// if(disable_div.width == 0 || disable_div.width == 0+'px' || gen_cntrl == "1"){ 5501 // Josh wrote: a trick to get real height and width of document 5502 // somehow setting dimensions in % does not work for opacity, so get height and set it back to pixel value 5503 if (extlayer==1) { 5504 disable_div.style.zIndex=parseInt(disable_div.style.zIndex)+10; 5505 oCapture.style.zIndex=parseInt(disable_div.style.zIndex)+1; 5506 } 5507 else { 5508 disable_div.style.width = '100%'; 5509 disable_div.style.height = '100%'; 5510 disable_div.style.width = document.body.scrollWidth + 'px'; 5511 disable_div.style.height = document.body.scrollHeight + 'px'; 5512 disable_div.setAttribute("HIDDEN", "0"); 5513 //disable_div.setAttribute("CAPTUREOBJ", oCapture);//not really in use 5514 } 5515 }else{ 5516 if(parseInt(disable_div.style.zIndex)>900){ 5517 disable_div.style.zIndex=parseInt(disable_div.style.zIndex)-10; 5518 }else{ 5519 disable_div.parentNode.removeChild(disable_div); 5520 } 5521 } 5522} 5523function JSVCsymbol(name,deftext,locid) { 5524 var result=Trim(deftext); 5525 if(locid==null) 5526 locid=jSVClocid; 5527 if(jSVCsymbol==null) 5528 return result; 5529 var test=eval("jSVCsymbol."+name); 5530 if(test!=null && test!="") 5531 result=Trim(test); 5532 result=result.replace(/(\/\*|<!---){[\/]*LID[0-9]*}(\*\/|--->)/gi); 5533 if(result.substring(0,14).toLowerCase()=="server.svclang" && (result.length-14)>0) { 5534 result=eval("JSVClang"+result.substr(14,result.length-14)); 5535 } 5536 return result; 5537} 5538 5539//Kian Yee : Regex checking for other form variable type 5540function JSVCRegex(val, regex, minlen, maxlen) 5541{ 5542 var str,obj;
5543 if(typeof(val)=="object"){obj=val;val=val.value;} 5544 if (minlen==null) minlen=0; 5545 if (maxlen==null) maxlen=-1; 5546 if(typeof(regex=="string")) 5547 regex=new RegExp(regex); 5548 if (!regex.test(val)||val.length<minlen||(val.length>maxlen && maxlen!=-1)) 5549 str=""; 5550 else 5551 str=val; 5552 if(obj!=null){obj.value=str;DoReq(obj);} 5553 return str; 5554} 5555 5556function JSVCAddSSL(str) { 5557 return str.replace(/^(http:\/\/)/i, "https://"); 5558} 5559 5560function JSVCRemSSL(str) { 5561 return str.replace(/^(https:\/\/)/i, "http://"); 5562} 5563function JSVCIsMobile() { 5564 return (('ontouchstart' in document.documentElement) 5565 || ('ontouchstart' in window) 5566 || (navigator.maxTouchPoints > 0) 5567 || (navigator.msMaxTouchPoints > 0)); 5568} 5569/* -------------------------- 5570 JSVCrpt Class 5571-----------------------------*/ 5572function JSVCrpt(varname,query,totLabel) { 5573 this.varname=varname; // varname 5574 this.query=query; // JSON 5575 this.grpBy=null; 5576 this.sumBy=null; 5577 this.totLabel=(totLabel==null?[JSVClang("Sub Total",1497),JSVClang("Grand Total",10164)]:totLabel); 5578 this.rowTitle=null; 5579} 5580JSVCrpt.prototype.gen=function(cols,retstr) { 5581 this.cols=cols; 5582 var htm=""; 5583 if(this.query.DATA.length==0) { 5584 htm="<p align=center>- "+ JSVClang("There is no record",12462) + " -</p>"; 5585 if(retstr) return htm; else document.write(htm); 5586 return; 5587 } 5588 htm+="<table border=1 align=center cellpadding=1 cellspacing=0 style=width:100%;font-size:85%;>"; 5589 for(var c in this.cols) { 5590 var col=this.cols[c]; 5591 htm+=this.getCol(col,0); 5592 } 5593 if(this.rowTitle!=null) { 5594 htm+="<tr class=header><td colspan="+this.cols.length+">"+this.rowTitle.toUpperCase()+"</td></tr>" 5595 } 5596 5597/* HTML rowspan example 5598<table width="100%" border="1"> 5599 <tr> 5600 <td rowspan=2>January</td><td colspan=3>ttt</td><td rowspan=2>col3</td><td>col4</td> 5601 </tr> 5602 <tr> 5603 <td>test2</td><td>test3</td><td>test4</td><td>test5</td> 5604 </tr> 5605</table> 5606*/ 5607 5608 // Generate columns, currently support 2 rowspan 5609 var colcfg={rowsplit:1,cols:[]}; 5610 var x=0; 5611 for(var c in this.cols) { 5612 var col=this.cols[c]; 5613 var rx=new RegExp("^(.+?)//(.+?)$"); 5614 var m=rx.exec(col[1],"gi"); 5615 colcfg.cols[c]={}; 5616 colcfg.cols[c].split=false; 5617 colcfg.cols[c].colspan=1; 5618 colcfg.cols[c].header=[]; 5619 colcfg.cols[c].header[0]=col[1]; 5620 if(m&&m.length>0) { 5621 colcfg.rowsplit=2; 5622 colcfg.cols[c].split=true; 5623 colcfg.cols[c].header[0]=m[1]; 5624 colcfg.cols[c].header[1]=m[2]; 5625 if(c>0&&(colcfg.cols[c].header[0]==colcfg.cols[c-1].header[0])) { 5626 colcfg.cols[x].colspan+=1; 5627 colcfg.cols[c].colspan=0; 5628 } else { 5629 x=c; 5630 } 5631 } else { 5632 colcfg.cols[c].colspan=0; 5633 } 5634 } 5635 if(colcfg.rowsplit>1) { 5636 for(var i=0;i<colcfg.rowsplit;i++) { 5637 htm+="<tr class=clsColumnHeader>"; 5638 for(var c in this.cols) { 5639 var col=this.cols[c]; 5640 if(i==0) { 5641 if(colcfg.cols[c].split==false) 5642 htm+="<td align=center rowspan="+colcfg.rowsplit+">"+colcfg.cols[c].header[i]+" </td>"; 5643 else if(colcfg.cols[c].colspan>0) 5644 htm+="<td align=center colspan="+colcfg.cols[c].colspan+">"+colcfg.cols[c].header[i]+" </td>"; 5645 } 5646 else if(i==1) { 5647 if(colcfg.cols[c].split==true) 5648 htm+="<td align=center>"+colcfg.cols[c].header[i]+" </td>"; 5649 } 5650 } 5651 htm+="</tr>"; 5652 } 5653 } else { 5654 htm+="<tr class=clsColumnHeader>"; 5655 for(var c in this.cols) { 5656 var col=this.cols[c]; 5657 htm+="<td align=center>"+col[1]+" </td>"; 5658 } 5659 htm+="</tr>"; 5660 } 5661 5662 // Generate data rows 5663 var prev=null; 5664 var subtot=[],subcnt=[]; 5665 var grdtot=[],grdcnt=[]; 5666 for(var i=0;i<this.query.DATA.length;i++) { 5667 // generate group by separator 5668 if(this.grpBy!=null && (prev==null || this.getData(this.grpBy,i)!=prev)) { 5669 // show subtotal row 5670 if(this.sumBy!=null && prev!=null) { 5671 htm+=trSubTotal(this,subtot,subcnt,this.totLabel[0],1); 5672 } 5673 // show grouping row 5674 htm+="<tr class=clsColumnSubHeader><td colspan="+this.cols.length+" align=left style=font-size:110%>"+this.getData(this.grpBy,i)+"</td></tr>"; 5675 prev=this.getData(this.grpBy,i); 5676 } 5677 htm+="<tr class=clsRptTone"+((i+1)%2==0?"2":"1")+">"; 5678 for(var c in this.cols) { 5679 var col=this.cols[c]; 5680 var value=this.getCol(col,1,i); 5681 htm+="<td>"+value+(value.toString().length==0?" ":"")+"</td>"; 5682 if(this.sumBy!=null && JSVCArrayIndexOf(this.sumBy,col[2])>=0 && (col[0]=="MONEY"||col[0]=="SMALLNO")) { 5683 if(subtot[c]==null) subtot[c]=0; 5684 if(subcnt[c]==null) subcnt[c]=0; 5685 if(grdtot[c]==null) grdtot[c]=0; 5686 if(grdcnt[c]==null) grdcnt[c]=0; 5687 var x=this.calcFormula(col[2],i); 5688 if(x.toString()!="") { 5689 subtot[c]+=x;subcnt[c]+=1; 5690 grdtot[c]+=x;grdcnt[c]+=1; 5691 } 5692 } 5693 } 5694 htm+="</tr>"; 5695 } 5696 // show subtotal row 5697 if(this.sumBy!=null && prev!=null) { 5698 htm+=trSubTotal(this,subtot,subcnt,this.totLabel[0],1); 5699 } 5700 // show grandtotal row 5701 htm+=trSubTotal(this,grdtot,grdcnt,this.totLabel[1],0); 5702 htm+="</table>"; 5703 if(retstr) return htm; else document.write(htm); 5704 5705 function trSubTotal(o,ar,cnt,title,separator) { 5706 var htm=""; 5707 if(!ar.length>0) 5708 return htm; 5709 htm+="<tr class=clsRptTotal>"+tdSubTotal(o,ar,cnt,title)+"</tr>"; 5710 if(separator==1) 5711 htm+="<tr><td colspan="+o.cols.length+"> </td></tr>"; 5712 for(var i in ar) // zerorize subtotal 5713 if(ar[i]!=null) ar[i]=0; 5714 for(var i in cnt) // zerorize subcount 5715 if(cnt[i]!=null) cnt[i]=0; 5716 return htm; 5717 } 5718 function tdSubTotal(o,ar,cnt,title) { 5719 var cs=0,i; 5720 var str=""; 5721 for(i=0;i<ar.length && ar[i]==null;i++) 5722 cs+=1; 5723 if(cs>0) 5724 str+="<td colspan="+cs+" align=right>"+(title==null?"":title)+" </td>"; 5725 for(;i<ar.length || i<o.cols.length;i++) { 5726 if(ar[i]==null) 5727 str+="<td> </td>"; 5728 else { 5729 var x="";v=ar[i]; 5730 var type=o.cols[i][0]; 5731 var aggType=o.cols[i][3]; 5732 var decplace=o.cols[i][4]; 5733 if(aggType==1) // avg 5734 v=v/cnt[i]; 5735 if(type=="MONEY") 5736 x=JSVCCurr(v); 5737 else if(type=="SMALLNO") 5738 x=JSVCNum(v,decplace); 5739 str+="<td>"+x+(x.toString().length==0?" ":"")+"</td>"; 5740 } 5741 } 5742 return str; 5743 } 5744} 5745JSVCrpt.prototype.getCol=function(col,type/*0:colClass,1:getValue*/,index) { 5746 if(col[0]=="REGNO") { // [0:type,1:label,2:queryCol,3:showLink,4:CaseIDcol] 5747 if(col[1]==null) 5748 col[1]="Reg. No."; 5749 if(type==0) 5750 return "<col class=clsSVCColRegNo>"; 5751 else if(type==1) { 5752 if(col[3]==1) 5753 return "<a href=javascript:openClm("+this.getData(col[4],index)+")>"+this.getData(col[2],index)+"</a>"; 5754 else 5755 return this.getData(col[2],index); 5756 } 5757 } 5758 else if(col[0]=="RFQNO") { // [0:type,1:label,2:queryCol,3:showLink,4:CaseIDcol,5:RfqIDCol] 5759 if(col[1]==null) 5760 col[1]="RFQ No."; 5761 if(type==0) 5762 return "<col class=clsSVCColRegNo>"; 5763 else if(type==1) { 5764 if(col[3]==1) 5765 return "<a href=javascript:openRFQ("+this.getData(col[4],index)+","+this.getData(col[5],index)+")>"+this.getData(col[2],index)+"</a>"; 5766 else 5767 return this.getData(col[2],index); 5768 } 5769 } 5770 else if(col[0]=="LINK") { // [0:type,1:label,2:queryCol,3:url,4:itemLabel] 5771 if(col[1]==null) 5772 col[1]=""; 5773 if(type==0) 5774 return "<col class=clsSVCColID>"; 5775 else if(type==1) { 5776 if(col[3]!=null) 5777 return "<a href=\"javascript:JSVCopenWin('"+this.transData(col[3],index)+"')\">"+(col[4]!=null?this.transData(col[4],index):this.getData(col[2],index))+"</a>"; 5778 else 5779 return this.getData(col[2],index); 5780 } 5781 } 5782 else if(col[0]=="SMALLNO") { // [0:type,1:label,2:queryCol,3:aggregateBy(0=sum,1=avg),4:DecimalPlace,5:FormatFunc] 5783 if(type==0) 5784 return "<col class=clsSVCColSmallNo>"; 5785 else if(type==1) { 5786 var x; 5787 x=this.calcFormula(col[2],index); 5788 x=JSVCNum(x,col[4]); 5789 if(typeof(col[5])=="function") 5790 x=col[5](x,index); 5791 return x; 5792 } 5793 } 5794 else if(col[0]=="TEXT") { // [0:type,1:label,2:queryCol] 5795 if(type==0) 5796 return "<col class=clsSVCColText>"; 5797 else if(type==1) { 5798 var value=this.getData(col[2],index); 5799 if(value==null) value=""; 5800 value=value.toString().replace(/\r/g,"<br>").replace(/\n/g,""); 5801 return value; 5802 } 5803 } 5804 else if(col[0]=="SMALLTEXT") { // [0:type,1:label,2:queryCol] 5805 if(type==0) 5806 return "<col class=clsSVCColName>"; 5807 else if(type==1) 5808 return this.getData(col[2],index); 5809 } 5810 else if(col[0]=="DATE") { // [0:type,1:label,2:queryCol,3:timeFormat,4:DateFormat] 5811 if(type==0) 5812 return "<col class=clsSVCColDate>"; 5813 else if(type==1) { 5814 var tmformat=null; 5815 if(col[3]!=null) 5816 tmformat=col[3]; 5817 var dtformat=null; 5818 if(col[4]!=null) 5819 dtformat=col[4]; 5820 return JSVCdtDBtoLOC(this.getData(col[2],index),null,dtformat,tmformat); 5821 } 5822 } 5823 else if(col[0]=="DATETIME") { // [0:type,1:label,2:queryCol,3:timeFormat,4:DateFormat] 5824 if(type==0) 5825 return "<col class=clsSVCColDate>"; 5826 else if(type==1) { 5827 var tmformat="HH:mm:ss"; 5828 if(col[3]!=null && col[3]!="STD") 5829 tmformat=col[3]; 5830 var dtformat=null; 5831 if(col[4]!=null) 5832 dtformat=col[4]; 5833 return JSVCdtDBtoLOC(this.getData(col[2],index),null,dtformat,tmformat); 5834 } 5835 } 5836 else if(col[0]=="MONEY") { // [0:type,1:label,2:queryCol,3:aggregateBy(0=sum,1=avg),4:DecimalPlace] 5837 if(type==0) 5838 return "<col class=clsSVCColMoney>"; 5839 else if(type==1) { 5840 var x; 5841 x=this.calcFormula(col[2],index); 5842 return JSVCCurr(x,9999999999,-9999999999); 5843 } 5844 } 5845 else if(col[0]=="CNT") { // [0:type,1:label] 5846 if(type==0) 5847 return "<col class=clsSVCColNo>"; 5848 else if(type==1) 5849 return (index+1); 5850 } 5851 else if(col[0]=="NO") { // [0:type,1:label,2:queryCol] 5852 if(type==0) 5853 return "<col class=clsSVCColNo>"; 5854 else if(type==1) { 5855 return this.getData(col[2],index); 5856 } 5857 } 5858 return ""; 5859} 5860JSVCrpt.prototype.calcFormula=function(q,index) { 5861 var x,s=q,rx=new RegExp("\{([a-z0-9\_]+)\}","gi"); // finding queryCol like {RTOT1}-{RTOT2} 5862 var m=rx.exec(q); 5863 if(m!=null) { 5864 while(m!=null) { 5865 var val=this.getData(m[1],index); 5866 if(val=="") val=0; 5867 s=s.replace(m[0],val); 5868 m=rx.exec(q); 5869 } 5870 x=eval(s); 5871 } else 5872 x=this.getData(q,index); 5873 return x; 5874} 5875JSVCrpt.prototype.transData=function(str,index) { 5876 var rx=new RegExp("\{([^\}]+)\}","i"); // translate params i.e. {CASEID} 5877 var m=rx.exec(str); 5878 while(m!=null) { 5879 str=str.replace(m[0],this.getData(m[1],index)); 5880 m=rx.exec(str); 5881 } 5882 return str; 5883} 5884JSVCrpt.prototype.getData=function(colname,index) {
5885 var value=JSVCqueryGetValue(this.query,colname,index); 5886 if(value==null) value=""; 5887 return value; 5888} 5889JSVCrpt.prototype.groupBy=function(param) { 5890 this.grpBy=param; 5891} 5892JSVCrpt.prototype.aggBy=function(param) { 5893 var ar=param.split(","); 5894 this.sumBy=ar; 5895} 5896JSVCrpt.prototype.genFootNote=function(list) { 5897 if(list==null || list=="") 5898 return; 5899 var htm=""; 5900 htm+="<br><table border=0 align=center cellpadding=1 cellspacing=0 style=width:100%>"; 5901 for(var i in list) { 5902 htm+="<tr class=clsRptNote><td>NOTE"+(parseInt(i)+1)+":"+list[i]+"</td></tr>"; 5903 } 5904 htm+="</table>"; 5905 document.write(htm); 5906} 5907JSVCrpt.prototype.setRowTitle=function(title) { 5908 this.rowTitle=title; 5909} 5910function JSVCstrEndWith(str,endwithstr) 5911{ var len; 5912 if(str==null)str=""; 5913 len=str.length; 5914 if(endwithstr.length>len||endwithstr.strlength==0)return false; 5915 if(str.substring(len-endwithstr.length,len).toUpperCase()==endwithstr.toUpperCase())return true; 5916 return false; 5917} 5918function JSVCisArray(obj) { 5919return obj && obj.constructor == Array; 5920} 5921 5922function JSVClang(TEXT,LID,LGID) { // LGID in 0 or +ve, or in struct form with key LGID2, DELIMS, SPANSTYLE eg:{"LGID2":1,"DELIMS":";"} 5923 /* LGID 5924 * -1 : force no translation 5925 * 0 : translate based on default LGID 5926 * +ve : traslate based on LGID 5927 * [struct] value : to include secondary translated text after the the main text, LGID will be based on the default LGID 5928 * LGID2 : secondary text will be traslated based on LGID2 5929 * DELIMS : both main text and secondary text will be separate by DELIMS provided. default as "/" 5930 * SPANSTYLE : include style for secondary text. eg: "SPANSTYLE":"font-style:italic" 5931 */ 5932 5933 /* Share the same logic in SVCmain.js -- JSVClang / SVCcffunctions.cfm -- SVClang */ 5934 var cur_lgid2=null, 5935 cur_delims="", 5936 cur_lgid=null, 5937 cur_text=null, 5938 cur_spanstyle=null, 5939 returnval="", 5940 cur_TXT1="", 5941 cur_TXT2="", 5942 cur_FLIP=0; 5943 var displid = 0; 5944 5945 if(typeof JSUserID != "undefined" && (JSUserID == 'VNTRANS' || JSUserID == 'VNADJTRANS' )) 5946 displid = 1; 5947 5948 if(LID==null) 5949 LID=0; 5950 if(LGID==null) 5951 LGID=0; 5952 5953 if(arguments.length==1 && displid) 5954 return "[" + 0 + "]" + TEXT; 5955 else if (arguments.length==1) 5956 return TEXT; 5957 5958 if(LID>0) { 5959 if(typeof(LGID)=='object') { 5960 /* primary language ID */ 5961 cur_lgid=0; 5962 /* 2nd language ID */ 5963 if(typeof(LGID['LGID2'])!='undefined') 5964 cur_lgid2=LGID['LGID2']; 5965 if(typeof(LGID['DELIMS'])!='undefined') 5966 cur_delims=LGID['DELIMS']; 5967 else 5968 cur_delims=' / '; 5969 if(typeof(LGID['SPANSTYLE'])!='undefined') 5970 cur_spanstyle=LGID['SPANSTYLE']; 5971 else 5972 cur_spanstyle=''; 5973 cur_text=TEXT; 5974 if(typeof(LGID['FLIP'])!='undefined') { 5975 cur_FLIP=LGID['FLIP']; 5976 } 5977 } else { 5978 cur_lgid=LGID; 5979 } 5980 5981 if(cur_lgid==0) { 5982 if(request.lgid>=0) 5983 cur_lgid=request.lgid; 5984 else if(jSVClgid>=0) 5985 cur_lgid=jSVClgid; 5986 } else if(cur_lgid==-1) { 5987 cur_lgid=0; /* forcing no translation */ 5988 } 5989 if(cur_lgid>0) { 5990 if(request.DS.LANG[cur_lgid]!=null && request.DS.LANG[cur_lgid][LID]!=null) 5991 { 5992 TEXT=request.DS.LANG[cur_lgid][LID];
5993 TEXT = TEXT.replace(/\\n/g,"\n"); 5994 } 5995 } 5996 } 5997 5998 if(arguments.length>3) { 5999 for(var P=3;P<arguments.length;P++) 6000 TEXT=TEXT.replace(new RegExp(RegExp.escape("{"+(P-3)+"}"),"gi"),arguments[P]); 6001 } 6002 6003 if(cur_lgid2!=null && cur_text!='' && cur_text!=null && cur_lgid2!=cur_lgid) { 6004 // Secondary language 6005 if(cur_lgid2==0) { 6006 // Do not translate (for English display) 6007 returnval=cur_text; 6008 } else { 6009 returnval=JSVClang(cur_text,LID,cur_lgid2); 6010 } 6011 if(cur_FLIP==1) { 6012 cur_TXT1=(returnval!=null?returnval:''); 6013 cur_TXT2=TEXT; 6014 } else { 6015 cur_TXT1=TEXT; 6016 cur_TXT2=(returnval!=null?returnval:''); 6017 } 6018 if(cur_spanstyle!=null && cur_spanstyle!='') 6019 TEXT=cur_TXT1+cur_delims+'<span style=\"'+cur_spanstyle+'\">'+cur_TXT2+'</span>'; 6020 else 6021 TEXT=cur_TXT1+cur_delims+cur_TXT2; 6022 } 6023 6024 if(displid) 6025 TEXT = "[" + LID + "]" + TEXT; 6026 6027 return TEXT; 6028} 6029 6030function JVSClangCode(lcode) { 6031 if(!(typeof(lcode)=="string" && request && request.DS && request.DS.LANGDEF)) 6032 return; 6033 var a=request.DS.LANGDEF; 6034 for(var i=0;a[i]!=null;i++) { 6035 if(a[i].LCODE.toLowerCase()==lcode.toLowerCase()) 6036 return a[i]; // .LCODE/.DESC/.LANGID 6037 } 6038 return; 6039} 6040RegExp.escape=function(str) 6041{ 6042 var specials=new RegExp("[.*+?|()\\[\\]{}\\\\]", "g"); // .*+?|()[]{}\ 6043 return str.replace(specials, "\\$&"); 6044} 6045function JSVCopenWinPost(url,winname,postdata/*array*/) { 6046 var frm=document.createElement("form"); 6047 frm.setAttribute("method","post"); 6048 frm.setAttribute("action",url); 6049 frm.setAttribute("target",winname); 6050 for(var i in postdata) { 6051 var f=document.createElement("input"); 6052 f.setAttribute("type","hidden"); 6053 f.setAttribute("name",postdata[i][0]); 6054 f.setAttribute("value",postdata[i][1]); 6055 frm.appendChild(f); 6056 } 6057 document.body.appendChild(frm); 6058 frm.submit(); 6059} 6060/* ======= JSVCgenMultiRows ================= 6061varname - name of this JS variable 6062parentid - container's object ID 6063formname - name of the input element 6064valuelist - value list 6065valuelistsep - value list delimiter 6066disptype - 0:textbox,1:dropdown,2:date with datepicker 6067============================================= */ 6068function JSVCgenMultiRows(varname,parentid,formname,valuelist,valuelistsep,onblur,capcontent,chkrequired,maxrows,disptype,optvaluelist,optvaluelistsep,allowremove,disable) { 6069 this.varname=varname; 6070 this.parentid=parentid; 6071 this.formname=formname; 6072 this.valuelist=valuelist.split(valuelistsep); 6073 this.onblur=onblur; 6074 this.capcontent=capcontent; 6075 this.chkrequired=chkrequired; 6076 this.maxrows=(maxrows>0?maxrows:10); // default 10 rows max 6077 this.currow=1; 6078 this.rowno = 1; 6079 this.disptype=disptype; 6080 this.optvaluelist=optvaluelist; 6081 this.optvaluelistsep=optvaluelistsep; 6082 this.allowremove=(allowremove!=null?allowremove:false); 6083 this.disable = disable; 6084} 6085JSVCgenMultiRows.prototype.updateValueList=function(valuelist,valuelistsep) { 6086 this.valuelist=valuelist.split(valuelistsep); 6087} 6088JSVCgenMultiRows.prototype.regen=function() { 6089 var o=JSVCall(this.parentid); 6090 this.currow=1; 6091 this.rowno=1; 6092 o.innerHTML=this.gen(true); 6093} 6094JSVCgenMultiRows.prototype.gen=function(returnstr) { 6095 var htm=""; 6096 htm+=this.elemT(this.formname,(this.valuelist!=null?this.valuelist[0]:"")); 6097 if(!this.disable) 6098 htm+=" <input type=button class=clsSVCbutton value=' + ' onclick="+this.varname+".addRow() style=margin-bottom:2px;width:35px;>"; 6099 if(this.valuelist!=null) 6100 for(var i=1;i<this.valuelist.length&&i<this.maxrows;i++) { 6101 this.rowno += 1; 6102 htm+="<br>"+this.elemT(this.formname,this.valuelist[i]); 6103 if(this.allowremove) { 6104 htm+="<span id=spn"+this.formname+"_"+this.rowno+"> </span><input type=button class=clsSVCbutton value=' - ' onclick='"+this.varname+".removeRow(this, "+ this.rowno +");' style=margin-bottom:2px;width:35px;>"; 6105 } 6106 this.currow+=1; 6107 } 6108 if(this.parentid==null && this.formname!=null) { 6109 this.parentid='MultiRows_'+this.formname; 6110 if(htm!=null && htm!='') htm='<div id="'+this.parentid+'">'+htm+'</div>'; 6111 } 6112 if(returnstr) 6113 return htm; 6114 else 6115 document.write(htm); 6116} 6117JSVCgenMultiRows.prototype.addRow=function() { 6118 var o=JSVCall(this.parentid); 6119 if(this.currow<this.maxrows) { 6120 this.currow+=1; 6121 this.rowno += 1; 6122 JSVCinsertAdjacentHTML(o,"beforeEnd","<br>"+this.elemT(this.formname,"")); 6123 MRMPreprocessFormItem(o.lastChild); 6124 if(this.allowremove) { 6125 JSVCinsertAdjacentHTML(o,"beforeEnd","<span id=spn"+this.formname+"_"+this.rowno+"> </span><input type=button class=clsSVCbutton value=' - ' onclick='"+this.varname+".removeRow(this, "+ this.rowno +");' style=margin-bottom:2px;width:35px;>"); 6126 } 6127 } 6128} 6129JSVCgenMultiRows.prototype.removeRow=function(btn, rowid) { 6130 var o = JSVCall(this.parentid); 6131 var r = document.getElementById(this.formname + "_" + rowid), br, spn; 6132 6133 if(this.currow > 1 && r != null) { 6134 br = r.previousSibling; 6135 spn = document.getElementById("spn"+this.formname+"_"+rowid); 6136 o.removeChild(r); 6137 o.removeChild(br); 6138 o.removeChild(btn); 6139 o.removeChild(spn); 6140 this.currow --; 6141 } 6142} 6143JSVCgenMultiRows.prototype.clear=function() { 6144 var o=JSVCall(this.parentid); 6145 this.currow=1; 6146 this.rowno=1; 6147 this.valuelist=null; 6148 o.innerHTML=this.gen(true); 6149} 6150JSVCgenMultiRows.prototype.elemT=function(name,value) { 6151 6152 if(this.disptype==1) { 6153 var str="<select"+(this.chkrequired?" CHKREQUIRED":"")+" name="+name+" id="+name+"_"+this.rowno+" onblur=DoReq(this);"+this.onblur+" style=margin-top:2px;margin-bottom:1px"+(this.disable==1?" DISABLED PDISABLED":"")+(this.disable==2?" READONLY":"")+">"; 6154 str+=JSVCgenOptions(this.optvaluelist,this.optvaluelistsep,value); 6155 str+="</select>"; 6156 return str; 6157 } 6158 else if (this.disptype==2) { 6159 /* 6160 <input MRMOBJ=CALDATE DTMAX="TODAY" name="sleFINALREMINDERDATE" VALUE="#FN.SVCdtdbtoloc(dtCLMFINALREMINDER)#" onblur
6160="ObjDate(this)"> 6161 */ 6162 6163 return "<input TESTINGROWRRRRR MRMOBJ=CALDATE name="+name+" value=\""+JSVCdtDBtoLOC(value)+"\" onblur=ObjDate(this);"+this.onblur+" "+(this.disable==1?" DISABLED PDISABLED":"")+(this.disable==2?" READONLY":"")+">"; 6164 } 6165 else 6166 return "<input"+(this.chkrequired?" CHKREQUIRED":"")+" name="+name+" id="+name+"_"+this.rowno+" maxlength=100 size=38 value=\""+value+"\" onblur=DoReq(this);"+this.onblur+" onchange="+(this.capcontent?"javascript:this.value=this.value.toString().toUpperCase(); style='text-transform:uppercase'":"''")+" "+(this.disable==1?" DISABLED PDISABLED":"")+(this.disable==2?" READONLY":"")+">"; 6167} 6168/* ======= JSVCrecordBrowser ================= 6169varname - name of this JS variable 6170parentid - container's object ID 6171xmlurl - URL request which returns XML data rows 6172============================================= */ 6173function JSVCrecordBrowser(varname,parentid,xmlfeedurl,title,locid,filter,sort) { 6174 this.varname=varname; 6175 this.parentid=JSVCall(parentid); 6176 this.xmlfeedurl=xmlfeedurl; 6177 this.title=(title==null?"":title); 6178 this.rcwin=this.varname+"_rcwin"; 6179 this.ctlwin=this.varname+"_ctlwin"; 6180 this.locid=locid; 6181 this.locale=request.DS.LOCALES[locid]; 6182 this.filter=filter; 6183 this.sort=sort; 6184 this.page=1; 6185 this.pagemax=1; 6186 this.recordpage=20; 6187 this.recordcount=0; 6188} 6189JSVCrecordBrowser.prototype.gen=function() { 6190 var htm=""; 6191 htm+="<div style=width:100% align=center>"; 6192 if(this.title!="") 6193 htm+="<div class=header style=padding:2px;text-align:left>"+this.title.toUpperCase()+"</div>"; 6194 htm+="<div id="+this.ctlwin+" align=center>"; 6195 htm+="<table cellspacing=0 cellpadding=1 width=100%>"; 6196 htm+="<tr>"; 6197 if(this.filter==1) 6198 htm+="<td><b>"+JSVClang("Keyword",12463)+":</b> <input id="+this.varname+"_filter type=text size=25 maxlength=25 value='' onkeydown=\"if(event.keyCode==13&&Trim(this.value)!=''){"+this.varname+".submit()}\"> <input type=button value="+JSVClang("Go",11203) + " class=clsSVCButton onclick=\"var o=JSVCall('"+this.varname+"_filter');if(Trim(o.value)!=''){"+this.varname+".submit()}\"> <input type=button value="+JSVClang("Clear",1623) + " class=clsSVCButton onclick=\"var o=JSVCall('"+this.varname+"_filter');o.value='';"+this.varname+".submit()\"></td>"; 6199 if(this.sort!=null) { 6200 htm+="<td align=right><b>"+ JSVClang("Sort By",12464)+":</b> <select id="+this.varname+"_sort>"+JSVCgenOptions(this.sort)+"</select></td>"; 6201 } 6202 htm+="<td align=right><input type=button class=clsSVCButton value='|<' onclick="+this.varname+".navig(1)> <input type=button class=clsSVCButton value='<<' onclick="+this.varname+".navig(2)> <span id="+this.varname+"_page style=font-weight:bold></span> <input type=button class=clsSVCButton value='>>' onclick="+this.varname+".navig(3)> <input type=button class=clsSVCButton value='>|' onclick="+this.varname+".navig(4)></td>"; 6203 htm+="</tr>"; 6204 htm+="</table>"; 6205 htm+="</div>"; 6206 htm+="<div id="+this.rcwin+" align=center></div>"; 6207 htm+="</div>"; 6208 this.parentid.innerHTML=htm; 6209 this.submit(); 6210} 6211JSVCrecordBrowser.prototype.submit=function(page,filter,sort,recordpage) { 6212 var url=this.xmlfeedurl,o; 6213 6214 if(page==null) // page 6215 page=this.page; 6216 url=JSVCremoveURL(url,"p"); 6217 url+="&p="+page; 6218 6219 if(filter==null) { // filter 6220 o=JSVCall(this.varname+"_filter"); 6221 if(o!=null) { 6222 filter=Trim(o.value); 6223 if(filter.length>0 && filter.length<3) { 6224 alert(JSVClang("Please specify at least 3 characters.",12465)) 6225 o.select(); 6226 return; 6227 } 6228 } 6229 } 6230 url=JSVCremoveURL(url,"f"); 6231 if(filter!=null && filter.length>=3) url+="&f="+filter; 6232 6233 if(sort==null) { // sort by 6234 o=JSVCall(this.varname+"_sort"); 6235 if(o!=null) 6236 sort=o.value; 6237 } 6238 url=JSVCremoveURL(url,"s"); 6239 if(sort>=0) url+="&s="+sort; 6240 6241 if(recordpage==null) { // records per page 6242 recordpage=this.recordpage; 6243 } 6244 url=JSVCremoveURL(url,"r"); 6245 if(recordpage>0) url+="&r="+recordpage; 6246 6247 var rcwin=JSVCall(this.rcwin),ctlwin=JSVCall(this.ctlwin); 6248 rcwin.innerHTML="<div style=width:90%;background-color:whitesmoke;border:2px solid brown><br><b>"+JSVClang("Loading, please wait...",7062)+"</b> <img style=vertical-align:middle src=\""+request.approot+"services/images/loading-anim.gif\"><br><br></div>"; 6249 ctlwin.disabled=true;
6250 MRMHTTPRequest("POST",url,null,this.load,null,null,null,null,this); 6251} 6252JSVCrecordBrowser.prototype.navig=function(mode) { 6253 var p=this.page,pm=this.pagemax; 6254 if(mode==1) // first page 6255 p=1; 6256 else if(mode==2 && p>1) // previous page 6257 p--; 6258 else if(mode==3 && p<pm) // next page 6259 p++; 6260 else if(mode==4 && p<pm) // last page 6261 p=pm; 6262 if(this.page!=p) { 6263 this.page=p; 6264 this.submit(this.page); 6265 } 6266} 6267JSVCrecordBrowser.prototype.resetPage=function(recordcount,recordpage) { 6268 this.recordcount=recordcount; 6269 if(recordpage!=null) 6270 this.recordpage=recordpage; 6271 this.page=(this.recordcount==0?0:1); 6272 this.pagemax=Math.ceil(this.recordcount/this.recordpage); 6273 if(isNaN(this.pagemax)) 6274 this.pagemax=1; 6275} 6276JSVCrecordBrowser.prototype.load=function(o,p/*JSVCrecordBrowser object*/) { 6277 var xml=o.responseXML; 6278 var rcwin=JSVCall(p.rcwin),ctlwin=JSVCall(p.ctlwin); 6279 var lst; 6280 lst=xml.selectSingleNode("dataset/summary/recordcount"); 6281 if(lst==null) { 6282 rcwin.innerHTML="Error 1";return; 6283 } 6284 var t=Number(lst.text); 6285 if (lst.text == undefined) t = Number(Trim(lst.innerHTML)); 6286 if (lst.innerHTML == undefined) t = Number(Trim(lst.textContent)); 6287 if(t!=p.recordcount) 6288 p.resetPage(t); 6289 var pgobj=JSVCall(p.varname+"_page"); 6290 pgobj.innerHTML=p.page+"/"+p.pagemax; 6291 // generating records 6292 lst=xml.selectNodes("dataset/summary/columns"); 6293 if(lst==null) { 6294 rcwin.innerHTML="Error 2";return; 6295 } 6296 lst=lst[0].childNodes; 6297 // Reusing JSVCrpt 6298 var coldef=[],query={"COLUMNS":[],"DATA":[]},colnm=[],rows=[]; 6299 for(var i=0;i<lst.length;i++) { 6300 if(lst[i].nodeType!=1) continue; 6301 if(lst[i].getAttribute("SHOW")!=0) { 6302 var x=coldef.length; 6303 var type=lst[i].getAttribute("COLTYPE"),label=lst[i].getAttribute("COLNAME"),queryCol=lst[i].nodeName; 6304 coldef[x]=[type,label,queryCol]; 6305 if(type=="LINK") { 6306 var url=lst[i].getAttribute("HREF"); 6307 coldef[x][3]=url; 6308 } 6309 } 6310 colnm[colnm.length]=lst[i].nodeName; 6311 } 6312 lst=xml.selectNodes("dataset/D"); 6313 if(lst==null) { 6314 rcwin.innerHTML="Error 3";return; 6315 } 6316 for(var i=0;i<lst.length;i++) { 6317 var row=[]; 6318 for(var j=0;j<colnm.length;j++) { 6319 var value=lst[i].getAttribute(colnm[j]); 6320 row[row.length]=(value!=null?value:null); 6321 } 6322 rows[rows.length]=row; 6323 } 6324 query.COLUMNS=colnm; 6325 query.DATA=rows; 6326 var rpt=new JSVCrpt(p.varname+"_rpt",query); 6327 JSVCSetLocale(p.locid,null,p.locale.DTFORMAT,p.locale.TMFORMAT,p.locale.TIMEZONE); 6328 rcwin.innerHTML=rpt.gen(coldef,true); 6329 ctlwin.disabled=false; 6330} 6331function JSVCpopup(varname,formname,ctxname) { 6332 this.varname=JSVCVarNameSet(varname,this,true);// Allocate unique 6333 this.formname=formname; 6334 this.formobj=JSVCall(formname); 6335 if(ctxname==null||ctxname=="") 6336 this.ctxname=this.varname+"_CTXFRAME"; 6337 else
6338 this.ctxname=ctxname; 6339 this.ctxframe=JSVCall(this.ctxname); 6340 this.msgheader=this.ctxname+"_msg"; // message container 6341 // Properties 6342 this.title="Popup"; // title of the popup window 6343 this.width=300; 6344 this.msg=null; 6345 this.fnOK=null; 6346 this.fnCancel=null; 6347 this.exfields=null; // array: [["title","html"],...] 6348 this.btnFlag=3; // 1:OK,2:Cancel 6349 this.btnNames=["OK","Cancel"]; 6350 this.ctxpos=2; 6351 this.ctxnocap=2; 6352} 6353JSVCpopup.prototype.clickButton=function(btnType) // OK,Cancel 6354{ btnType=btnType.toUpperCase(); 6355 if(btnType=='OK') 6356 { 6357 var rs; 6358 if(this.fnOK!=null && typeof(this.fnOK)=="function") 6359 rs=this.fnOK(); 6360 else if(this.fnOK!=null && typeof(this.fnOK)=="string" && this.fnOK!="") 6361 rs=eval("("+this.fnOK+")"); 6362 if(rs==null || rs==true) 6363 JSVCcloseCtxMenu(this.ctxname); 6364 } 6365 else if(btnType=='CANCEL') 6366 { 6367 if(this.fnCancel!=null && typeof(this.fnCancel)=="function") 6368 this.fnCancel(); 6369 else if(this.fnCancel!=null && typeof(this.fnCancel)=="string" && this.fnCancel!="") 6370 eval(this.fnCancel); 6371 JSVCcloseCtxMenu(this.ctxname); 6372 } 6373} 6374JSVCpopup.prototype.gen=function() { 6375 if(this.ctxframe==null) 6376 this.ctxframe=JSVCCtxMenuFrame(this.formobj,this.ctxname,this.title,this.width,false,false); 6377 var html="<table cellpadding=1 cellspacing=1 border=0 width=100%>"+ 6378 "<tr><td colspan=2"+((this.btnFlag&3)==1?" align=center":"")+"><span id="+this.msgheader+">"+(this.msg?this.msg:"")+"</span></td></tr>"; 6379 if(this.exfields) { 6380 for(var i in this.exfields) { 6381 var f=this.exfields[i]; 6382 html+="<tr>"+(f[0]?"<td width=25%><b>"+f[0]+"</b></td><td":"<td colspan=2")+" id="+this.ctxname+"_itm"+i+" valign=top>"+f[1]+"</td></tr>"; 6383 } 6384 } 6385 if((this.btnFlag&3)==1) 6386 html+="<tr><td colspan=2 align=center><input type=button class=clsSVCButton value=' "+this.btnNames[0]+" ' onclick=\"JSVCVarNameGet('"+this.varname+"').clickButton('OK')\"></td></tr>" 6387 else if ((this.btnFlag&3)==0) 6388 html+=""; 6389 else 6390 html+="<tr><td colspan=2 align=right><input type=button class=clsSVCButton value=' "+this.btnNames[0]+" ' onclick=\"JSVCVarNameGet('"+this.varname+"').clickButton('OK')\"> <input type=button class=clsSVCButton value='"+this.btnNames[1]+"' onclick=\"JSVCVarNameGet('"+this.varname+"').clickButton('CANCEL')\"></td></tr>" 6391 html+="</table>"; 6392 JSVCCtxMenuContent(this.ctxframe,html); 6393 for(var i in this.exfields) { 6394 MRMPreprocessFormItem(JSVCall(this.ctxname+"_itm"+i).firstChild); 6395 } 6396 DoReq(this.formobj); 6397} 6398JSVCpopup.prototype.show=function(event) { 6399 JSVCshowCtxMenuEv(event,this.ctxframe,null,this.ctxpos,this.ctxnocap); 6400} 6401JSVCpopup.prototype.hide=function(event) { 6402 JSVCcloseCtxMenu(this.ctxname); 6403} 6404JSVCpopup.prototype.showChk=function(event,fnChk) { 6405 if(fnChk(this)==true) 6406 this.show(event); 6407 else 6408 JSVCcloseCtxMenu(this.ctxname); 6409} 6410JSVCpopup.prototype.setMsg=function(msg) { 6411 var o=JSVCall(this.msgheader); 6412 o.innerHTML=msg; 6413} 6414function JSVCSgVRegChk(str) 6415{ 6416 if(typeof(str)!="string" && str.value!=null) 6417 str=str.value; 6418 6419 str=Trim(str).toUpperCase(); 6420 6421 var r=/^([A-Z]{0,3})([0-9]{1,4})([A-Z0-9]{0,2})$/; // 3 groups 6422 var m=r.exec(str); 6423 6424 if(m==null || m.length<3) // no matches or no capturing group 1 & 2 6425 return JSVClang("is invalid",7646); 6426 if(m[1]=="MID" && m[3]!="" && /^\d+$/.test(m[3])) 6427 return ""; 6428 else if(m[1]=="S") 6429 return ""; 6430 else if(/\d+/.test(m[3])) 6431 return JSVClang("is invalid",7646); 6432 if(m[1].length>0 && m[3]=="CD") 6433 return ""; 6434 if(m[1].length==0 && /^\d{4}$/.test(m[2]) && m[3]=="S") 6435 return ""; 6436 6437 if(m[1].length==1) 6438 m[1]=" S"+m[1]; 6439 else if(m[1].length==2) 6440 m[1]=" "+m[1]; 6441 6442 m[2]=m[2].toString().padLeft("0",4); 6443 6444 if(m[3].length==2 && !(m[3]=="CD" && m[3]=="CC")) 6445 return JSVClang("is invalid",7646); 6446 6447 // calculate checksum 6448 var c=(9*(m[1].charCodeAt(1)-65)+4*(m[1].charCodeAt(2)-65)+5*m[2].charAt(0)+4*m[2].charAt(1)+3*m[2].charAt(2)+2*m[2].charAt(3)+(m[1]=="CSS"?20:12))%19; 6449 var v=["A","B","C","D","E","G","H","J","K","L","M","P","R","S","T","U","X","Y","Z"]; 6450 6451 if(c>=0 && c<=18 && v[18-c]==m[3]) // 0 to 18 == Z to A (reversed) 6452 return ""; 6453 else
6454 return JSVClang("is invalid",7646); 6455 6456 return JSVClang("is invalid",7646); 6457} 6458 6459function JSVCDOBtoAge(o,tgtid){ // o=source object, tgtid=target obj id 6460 var tgtobj=document.getElementById(tgtid); 6461 var tmpage="",i=0,age=""; 6462 var thisyear=new Date().getFullYear(); 6463 if (tgtobj!=null && o!=null && o.value!="") { 6464 i=jSVCdtformat.indexOf("yyyy"); 6465 if (i>-1) { 6466 age=thisyear-parseInt(o.value.substring(i,i+4)); 6467 if (tgtobj.value || tgtobj.tagName.toUpperCase()=='INPUT') tgtobj.value=age; 6468 else tgtobj.innerHTML = age; 6469 } 6470 } 6471} 6472 6473/* ======= JSVCSplitCols ================= 6474Rearrange table columns to the number of columns specified 6475tableid - id of table to split 6476tbodyid - tbody id to split, null to split entire table 6477oric - original column length (default=2) 6478fnlc - new column length (default=4) 6479type - Arrangement type ... 1: vertical, 2: horizontal (default=1) 6480adjwidth - Adjust the column width specified in <col> ... 1:yes, 2:no (default=1) 6481============================================= */ 6482function JSVCSplitCols(tableid, tbodyid, oric, fnlc, type, adjwidth){ 6483 var c,clone,collen,reg,cwarr; 6484 var trowsobj,start,end; 6485 var tmprowobj = []; 6486 if (type==null) type=1; 6487 if (oric==null) oric=2; 6488 if (fnlc==null) fnlc=4; 6489 if (oric>=fnlc || fnlc%oric!=0) return; 6490 if (adjwidth==null) adjwidth=1; 6491 if (tbodyid!=null)tbodyobj=document.getElementById(tbodyid); 6492 else tbodyobj=document.getElementById(tableid); 6493 if (tbodyobj==null) return; 6494 6495 trowsobj = tbodyobj.rows; 6496 6497 colobj=tbodyobj.getElementsByTagName("col"); 6498 if (colobj.length) collen=oric; else collen=0; 6499 6500 for (c = 0;adjwidth==1&&c<collen; c++) { // colwidth 6501 var cw = colobj[c].style.width; 6502 if (cw) { 6503 reg = /(\d+) *([a-zA-Z%]+)/; 6504 cwarr = cw.match(reg); 6505 if (cwarr != null) { 6506 newwidth = Math.floor(parseInt(cwarr[1])/(fnlc/oric)); 6507 newwidth = newwidth + cwarr[2]; 6508 colobj[c].style.width = newwidth; 6509 } 6510 } 6511 } 6512 for(c=0;c<collen;c++){ 6513 for(c1=0;c1<(fnlc/oric)-1;c1++) { 6514 clone = colobj[collen-1].cloneNode(true);
6515 colobj[0].parentNode.insertBefore(clone,colobj[0]); 6516 } 6517 } 6518 6519 for (var h = tbodyobj.rows.length-1; h >= 0; h--) 6520 { 6521 if(trowsobj[h].style.display=='none' && trowsobj[h].cells.length==0) // placeholder hidden rows 6522 { 6523 tmprowobj.push(trowsobj[h]); 6524 trowsobj[h].parentNode.removeChild(trowsobj[h]); 6525 } 6526 } 6527 6528 if (type == 1) { 6529 start=0;end=-1; 6530 for (var h = 0; h < tbodyobj.rows.length; h++) { 6531 for (var k = 0; k < trowsobj[h].cells.length; k++) { 6532 if (SplitColsHeader(trowsobj[h].cells[k],oric,fnlc)) { 6533 if(h==0) start=0+1; 6534 else end=h; 6535 break; 6536 } 6537 else if (end==-1 && h==tbodyobj.rows.length-1) 6538 end=tbodyobj.rows.length; 6539 } 6540 if (end != -1) { 6541 rowlen = (end - start); 6542 cellcount = oric * (end - start); 6543 totcol = fnlc; 6544 totrow = Math.ceil(cellcount / fnlc); 6545 chkcol = totcol - ((totrow * totcol) - cellcount); 6546 count=0; 6547 for (var i = oric; i < fnlc ; i=i+oric) 6548 { 6549 currowlen = (totrow - (i < chkcol ? 0 : 1)); 6550 for (var j = start; j < start+currowlen; j++) { 6551 var tmprobj = trowsobj[totrow + j]; 6552 for (var k = 0; k < tmprobj.cells.length; k++) { // col 6553 var x = tmprobj.cells[k].cloneNode(true); 6554 var xsel = tmprobj.cells[k].getElementsByTagName("SELECT");/* MS bug 829907 */ 6555 if (xsel.length != 0) x.getElementsByTagName("SELECT")[0].options.selectedIndex = xsel[0].options.selectedIndex; 6556 trowsobj[j].appendChild(x); 6557 } 6558 } 6559 for (var j = start; j < start+currowlen; j++) { 6560 tbodyobj.rows[0].parentNode.removeChild(tbodyobj.rows[totrow + start]); 6561 count+=1; 6562 } 6563 } 6564 if (currowlen < totrow && start+totrow-1 != 0) { 6565 SplitColsAppendEmp(trowsobj[start+totrow-1], totcol); 6566 } 6567 start = end-count+1; 6568 h = start-1; 6569 rowlen = tbodyobj.rows.length; 6570 end = -1; 6571 } 6572 } 6573 } 6574 if (type == 2) { 6575 var headerflag = 0; 6576 var move = (fnlc - oric) / oric; 6577 for (var i = 0; i < tbodyobj.rows.length; i++) 6578 { 6579 for (var h = 0; h < oric; h++) { 6580 headerflag = SplitColsHeader(trowsobj[i].cells[h],oric,fnlc); 6581 if (headerflag == 1) break; 6582 } 6583 for (var j = 1; headerflag == 0 && j <= move; j++) { 6584 var tmprobj = trowsobj[i + 1]; // row 6585 if (tmprobj) { 6586 for (var k = 0; k < tmprobj.cells.length; k++) { // col 6587 headerflag = SplitColsHeader(tmprobj.cells[k],oric,fnlc); 6588 if (headerflag == 1) { 6589 SplitColsAppendEmp(trowsobj[i], fnlc); 6590 break; 6591 } 6592 var x = tmprobj.cells[k].cloneNode(true); 6593 var xsel = tmprobj.cells[k].getElementsByTagName("SELECT");/* MS bug 829907 */ 6594 if (xsel.length != 0) x.getElementsByTagName("SELECT")[0].options.selectedIndex = xsel[0].options.selectedIndex; 6595 trowsobj[i].appendChild(x); 6596 } 6597 if (headerflag == 0) tbodyobj.rows[i].parentNode.removeChild(tbodyobj.rows[i + 1]); 6598 } 6599 else { 6600 SplitColsAppendEmp(trowsobj[i], fnlc); 6601 } 6602 } 6603 } 6604 } 6605 6606 for (var h = 0; h < tmprowobj.length ; h++) 6607 tbodyobj.appendChild(tmprowobj[h]) 6608} 6609function SplitColsAppendEmp(rowobj,total) { 6610 for (var k = rowobj.cells.length; k < total; k++) { 6611 var newtd = document.createElement("td"); 6612 newtd.innerHTML = ' '; 6613 rowobj.appendChild(newtd); 6614 } 6615} 6616function SplitColsHeader(cell,oric,fnlc) { 6617 if (cell && / *fullrow */.test(cell.className) ) { 6618 cell.colSpan = fnlc-1; 6619 return 1; 6620 } 6621 else if (cell && / *header */.test(cell.className) || / *splithdr */.test(cell.className) || (oric > 1 && cell.colSpan == oric)) { 6622 cell.colSpan = fnlc; 6623 return 1; 6624 } 6625 return 0; 6626} 6627//Hide Rows with plus minus image 6628function JSVCShowHideRow(divname,imgname,byname,chkobj){ 6629 /*leave imgname blank to use only the display toggle*/ 6630 if (byname == null) byname = 1; 6631 var detdiv = (byname==1?document.getElementsByName(divname):document.getElementById(divname)); 6632 6633 if (typeof _APP !== 'undefined') { 6634 if (_APP=='EPL' && !($('#PARTIALSAVEMODE').val()==1)) { 6635 chkobj = true; 6636 } 6637 } 6638 6639 //do objverify/chkrequired before hide 6640 if((chkobj!=null||typeof(chkobj)!='undefined')&&chkobj==true){ 6641 var nm,ret,obj,col,t,noprompt=null,showobjname=null; 6642 col=$("#"+divname+" :input"); 6643 if (typeof _APP !== 'undefined') { 6644 if (_APP == 'EPL') { 6645 if (byname == 1) { 6646 $('[name="'+divname+'"]').find('input').each(function(){ 6647 col.push(this); 6648 }) 6649 } else { 6650 $('[id="'+divname+'"]').find('input').each(function(){ 6651 col.push(this); 6652 }) 6653 } 6654 } 6655 } 6656 6657 if(col!=null) 6658 { for(t=0;t<col.length;t++) 6659 { obj=col[t]; 6660 if(!ObjVerify(obj,noprompt,showobjname))return false; 6661 } 6662 } 6663 } 6664 6665 if (byname == 1) { 6666 if(detdiv[0]!=null){ 6667 if (detdiv[0].style.display == "none") { 6668 for (i = 0; i < detdiv.length; i++) {
6669 detdiv[i].style.display = ""; 6670 } 6671 if(imgname!=null) 6672 document.images[imgname].src = request.approot + "services/images/minus.gif"; 6673 } 6674 else { 6675 for (i = 0; i < detdiv.length; i++) { 6676 detdiv[i].style.display = "none"; 6677 } 6678 if(imgname!=null) 6679 document.images[imgname].src = request.approot + "services/images/plus.gif"; 6680 } 6681 } 6682 } else { 6683 if(detdiv!=null){ 6684 if (detdiv.style.display == "none") { 6685 detdiv.style.display = ""; 6686 if(imgname!=null) 6687 document.images[imgname].src = request.approot + "services/images/minus.gif"; 6688 } 6689 else { 6690 detdiv.style.display = "none"; 6691 if(imgname!=null) 6692 document.images[imgname].src = request.approot + "services/images/plus.gif"; 6693 } 6694 } 6695 } 6696} 6697 6698function JSVCShowHideChk(trigval,trigname,fieldname,tagname,req) 6699{ 6700 /* 6701 Notes 6702 ----- 6703 trigval - value/list to be checked against 6704 trigname - name/id of input triggering the show/hide 6705 fieldname - input field to be shown/hide , disabled/required 6706 tagname - div/span/tr/td name/id to be shown/hide, use existing JSVCshow/JSVChide 6707 req - set required attribute to fieldname 6708 */ 6709 6710 var opt=JSVCall(trigname); 6711 var optVal=opt.value; 6712 var optField=JSVCall(fieldname); 6713 if(optField==""){var optField=null}; 6714 6715 if(trigval.indexOf(optVal)>-1) 6716 { 6717 if(tagname!=null){ 6718 JSVCshow(tagname); 6719 if(optField!=null){ 6720 optField.removeAttribute("DISABLED"); 6721 if(req!=null && req==1){ 6722 optField.setAttribute("CHKREQUIRED","true"); 6723 } 6724 } 6725 } 6726 } 6727 else 6728 { 6729 if(tagname!=null){ 6730 JSVChide(tagname); 6731 if(optField!=null){ 6732 optField.setAttribute("DISABLED","true"); 6733 } 6734 } 6735 } 6736 if(optField!=null) 6737 DoReq(optField); 6738} 6739 6740//Return bit from checkbox 6741function JSVCChkToBit(chkboxname) 6742{ 6743 var slcitms = document.getElementsByName(chkboxname); 6744 var prevalue = 0; 6745 for (var i=0;i < slcitms.length;i++) 6746 { 6747 if(slcitms[i].checked==true) 6748 { 6749 prevalue += parseInt(slcitms[i].value); 6750 } 6751 } 6752 return prevalue; 6753 6754} 6755 6756// http://dean.edwards.name/weblog/2005/10/add-event/ 6757function JSVCaddEvent(element, type, handler) { 6758 if (element.addEventListener) { 6759 element.addEventListener(type, handler, false); 6760 } else { 6761 // assign each event handler a unique ID 6762 if (!handler.$$guid) handler.$$guid = JSVCaddEvent.guid++; 6763 // create a hash table of event types for the element 6764 if (!element.events) element.events = {}; 6765 // create a hash table of event handlers for each element/event pair 6766 var handlers = element.events[type]; 6767 if (!handlers) { 6768 handlers = element.events[type] = {}; 6769 // store the existing event handler (if there is one) 6770 if (element["on" + type]) { 6771 handlers[0] = element["on" + type]; 6772 } 6773 } 6774 // store the event handler in the hash table 6775 handlers[handler.$$guid] = handler; 6776 // assign a global event handler to do all the work 6777 element["on" + type] = handleEvent; 6778 } 6779}; 6780// a counter used to create unique IDs 6781JSVCaddEvent.guid = 1; 6782 6783function JSVCremoveEvent(element, type, handler) { 6784 if (element.removeEventListener) { 6785 element.removeEventListener(type, handler, false); 6786 } else { 6787 // delete the event handler from the hash table 6788 if (element.events && element.events[type]) { 6789 delete element.events[type][handler.$$guid]; 6790 } 6791 } 6792}; 6793 6794function handleEvent(event) { 6795 var returnValue = true; 6796 // grab the event object (IE uses a global event object) 6797 event = event || fixEvent(((this.ownerDocument || this.document || this).parentWindow || window).event); 6798 // get a reference to the hash table of event handlers 6799 var handlers = this.events[event.type]; 6800 // execute each event handler 6801 for (var i in handlers) { 6802 this.$$handleEvent = handlers[i]; 6803 if (this.$$handleEvent(event) === false) { 6804 returnValue = false; 6805 } 6806 } 6807 return returnValue; 6808}; 6809function JSVCDoStopPropagation(event) 6810{ 6811 if(event.stopPropagation) 6812 event.stopPropagation() 6813 else 6814 event.cancelBubble=true; 6815} 6816function fixEvent(event) { 6817 // add W3C standard event methods 6818 event.preventDefault = fixEvent.preventDefault; 6819 event.stopPropagation = fixEvent.stopPropagation; 6820 return event; 6821}; 6822fixEvent.preventDefault = function() { 6823 this.returnValue = false; 6824}; 6825fixEvent.stopPropagation = function() { 6826 this.cancelBubble = true; 6827}; 6828function JSVCNameIDObject(objname,nmStr) 6829{ 6830 var IDDefConfig={ 6831 DefCountryID:1, 6832 OvrIDStr:"", 6833 CtryShortlist:"", 6834// OvrIDStr:"1!Co Reg No|*2!NRIC~FN:JSVCIDChkMyIC(obj)|*3!Passport No|+4!Old IC|+5!Birth Cert No|*6!Army/Police ID", 6835// CtryShortlist:"7,1,2,3,11", 6836 NameType:2, /* 1: Individual only, 2: Individual & Company */ 6837 NameSize:50, 6838 NameRetainRadioSpace: 1, /* 1: retain Radio button space even if hidden; 0: remove the extra spaces*/ 6839 NationalityChangeID2:1, /* 1: Nationality change will update ID2 */ 6840 NationalityDefaultCountryID:1, /* If nationality is blank use default country ID */ 6841 ID1Size:30, 6842 Label_Postfix:"", 6843 Label_Individual:JSVClang("Individual",6031), 6844 Label_Company:JSVClang("Company",2033), 6845 Label_Name:JSVClang("Name",1173), 6846 Label_ID1:JSVClang("ID",2122), 6847 Label_ID2:JSVClang("Second ID",6030), 6848 Label_Nationality:JSVClang("Nationality",1178), 6849 Label_Salutation:JSVClang("Salutation",11972), 6850 UI:"D" /*D - Desktio, M - Mobile*/, 6851 Name_maxlength: 200, 6852 Label_Additional:"", 6853 Label_Additional2:"" 6854 } 6855 this.objname=objname; 6856 this.nmStr=nmStr; 6857 this.config=IDDefConfig; 6858} 6859JSVCNameIDObject.prototype.genName=function(nmval,id1type,chkrequired,disabled,spcnm,nmselchgExec,appendHTML,id_fld_chk,nmonchange,mic,readonly,nmval2,bluenote,NameSplit,FirstName,LastName,upperCase) 6860{ 6861 var fnlstr,str,nmsel,spclist; 6862 if(nmselchgExec==null)nmselchgExec=""; 6863 if(bluenote==null)bluenote='';//#37546 6864 if(mic==null)mic=0; 6865 6866 if(mic==1){ 6867 fnlstr="<div valign=baseline>"+this.config.Label_Name+(this.config.Label_Postfix!=""?" "+this.config.Label_Postfix:"")+(this.config.Label_Additional!=""?" "+this.config.Label_Additional:"")+"</div><div>"; 6868 } else if((this.config.UI=="M" || JSVCGetResp()) && mic!=2) { 6869 fnlstr="<div><div valign=baseline>"+this.config.Label_Name+(this.config.Label_Postfix!=""?" "+this.config.Label_Postfix:"")+(this.config.Label_Additional!=""?" "+this.config.Label_Additional:"")+"</div><div>"; 6870 } else { 6871 fnlstr="<tr><td valign=baseline>"+JSVChtmUnescape(this.config.Label_Name)+(this.config.Label_Postfix!=""?" "+this.config.Label_Postfix:"")+(this.config.Label_Additional!=""?" "+this.config.Label_Additional:"")+"</td><td>"; 6872 } 6873 this.isCom=0; 6874 if(this.config.NameType==2) 6875 { 6876 // determine if idtype is company or individual 6877 if(id1type!=null) 6878 { 6879 try{ 6880 if(IDtypes[id1type].IdType==1) 6881 this.isCom=1 6882 else 6883 this.isCom=0; 6884 } catch (e) {} 6885 } 6886 fnlstr+="<input URLVAR ID=\"_"+this.nmStr+"nmselIND\" name=\""+this.nmStr+"nmsel\" CHKREQUIRED "+(this.isCom==0?"CHECKED ":"")+"type=radio "+(disabled==1?"DISABLED PDISABLED ":"")+(readonly==1?"READONLY style=background-color:silver":"")+" value=2 onclick=\""+this.objname+".refresh(event);"+nmselchgExec+(!!id_fld_chk?id_fld_chk:"")+"\"><label for=\"_"+this.nmStr+"nmselIND\"> "+this.config.Label_Individual+"</label> "; 6887 fnlstr+="<input URLVAR ID=\"_"+this.nmStr+"nmselCOM\" name=\""+this.nmStr+"nmsel\" CHKREQUIRED "+(this.isCom==1?"CHECKED ":"")+" type=radio "+(disabled==1?" DISABLED PDISABLED ":"")+(readonly==1?"READONLY style=background-color:silver":"")+" value=1 onclick=\""+this.objname+".refresh(event);"+nmselchgExec+(!!id_fld_chk?id_fld_chk:"")+"\"><label for=\"_"+this.nmStr+"nmselCOM\"> "+this.config.Label_Company+"</label> "; 6888 if(spcnm!=null && typeof(spcnm)=="string" && spcnm.length>0) 6889 { spclist=spcnm.split("|"); 6890 fnlstr+="<input URLVAR ID=\"_"+this.nmStr+"nmselSPC\" SPCNM=\""+spcnm+"\" name=\""+this.nmStr+"nmsel\" value=\""+spclist[0]+"\" CHKREQUIRED "+(nmsel==spclist[0]?"CHECKED ":"")+(disabled==1?"DISABLED PDISABLED ":"")+(readonly==1?"READONLY style=background-color:silver":"")+" type=radio oncl
6890ick=\""+this.objname+".refresh(event);"+nmselchgExec+(!!id_fld_chk?id_fld_chk:"")+"\"><label for=\"_"+this.nmStr+"nmselSPC\"> "+spclist[1]+"</label>"; 6891 } 6892 fnlstr+="<br>"; 6893 } 6894 fnlstr+="<input URLVAR "+(chkrequired=="1"?"CHKREQUIRED ":(chkrequired!=''?"CHKREQUIRED=\""+chkrequired+"\" ":""))+" name=\""+this.nmStr+"nm\" id=\"_"+this.nmStr+"nm\" maxlength=\""+this.config.Name_maxlength+"\" size=\""+this.config.NameSize+"\" VALUE=\""+nmval+"\" "+(disabled==1?"DISABLED PDISABLED ":"")+(readonly==1?"READONLY style=background-color:silver":"")+" onblur=\""+(!!nmonchange?nmonchange:"")+(upperCase == 1?"this.value=(this.value).toUpperCase();":"")+"DoReq(this)\">"+"<label style='color: blue; font-style:italic; font-weight: bold;'>"+(bluenote!=null?"<br>"+bluenote:"")+"</label>";//#37546 6895 if(this.config.NameType!=2 && this.config.NameRetainRadioSpace == 1) 6896 fnlstr+="<br><input type=radio style=visibility:hidden>"; 6897 if(appendHTML!=null && appendHTML!="") 6898 fnlstr+="<br>"+appendHTML; 6899 6900 if (this.config.DefCountryID == 122){ 6901 fnlstr+="<tr><td valign=baseline>"+JSVChtmUnescape(this.config.Label_Name)+(this.config.Label_Postfix!=""?" "+this.config.Label_Postfix:"")+(this.config.Label_Additional2!=""?" "+this.config.Label_Additional2:"")+"</td><td>"; 6902 fnlstr+="<input URLVAR "+(chkrequired=="1"?"CHKREQUIRED ":(chkrequired!=''?"CHKREQUIRED=\""+chkrequired+"\" ":""))+" name=\""+this.nmStr+"nm2\" id=\"_"+this.nmStr+"nm2\" maxlength=\""+this.config.Name_maxlength+"\" size=\""+this.config.NameSize+"\" VALUE=\""+nmval2+"\" "+(disabled==1?"DISABLED PDISABLED ":"")+(readonly==1?"READONLY style=background-color:silver":"")+" onblur="+(!!nmonchange?nmonchange:"")+"DoReq(this)>"; 6903 } 6904 6905 if(mic==1){ 6906 fnlstr+="</div>"; 6907 } else if((this.config.UI=="M" || JSVCGetResp()) && mic!=2) { 6908 fnlstr+="</div></div>"; 6909 } else { 6910 fnlstr+="</td></tr>"; 6911 } 6912 return fnlstr; 6913} 6914JSVCNameIDObject.prototype.genSalutation=function(sal1,chkrequired,disabled,insgcoid,hidden) 6915{ var comStr,fnlstr,optStr,idchk,listStr; 6916 6917 if(hidden==1){ 6918 fnlstr="<tr style='display:none'><td valign=baseline>"+this.config.Label_Salutation+(this.config.Label_Postfix!=""?" "+this.config.Label_Postfix:"")+"</td><td>"; 6919 }else{ 6920 fnlstr="<tr><td valign=baseline>"+this.config.Label_Salutation+(this.config.Label_Postfix!=""?" "+this.config.Label_Postfix:"")+"</td><td>"; 6921 } 6922 var SaluteList = ["Mr","Ms","Mrs","En","Cik","Tuan","Puan","Dr","Datuk","Dato","Datuk Seri","Tan Sri","Tun","Datin","Datin Sri","Puan Sri","Toh Puan"]; 6923 var SaluteListCode = ["Mr","Ms","Mrs","En","Cik","Tuan","Puan","Dr","Datuk","Dato","Datuk Seri","Tan Sri","Tun","Datin","Datin Sri","Puan Sri","Toh Puan"]; 6924 if(insgcoid != null && insgcoid == 7651) { //#20841 6925 SaluteList = ["DATIN","DATO'","DATUK","DATUK SR","DR.","EN.","MISS","MR.","MRS.","MS.","PROFESSOR","PUAN","PUAN SRI","SIR","TAN SRI","TUN", 6926 "YANG AMAT BERHORMAT","YANG BERHORMAT","YANG MULIA","BRIDG. GEN (U)","CIK","CIK PUAN BESAR","DAME","DATIN PADUKA","DATO`(DR.)", 6927 "DATO`DR.","DATUK WIRA","DATUK PADUKA","DULI YANG MAHA MULIA","HAJI","HAJJAH","LADY","MADAM","MESSRS","MR.& MRS.","RT. HON.", 6928 "TOH PUAN SRI","TOH PUAN","TUAN","TUAN HJ","TUN DATU","TUN TAN SRI DATUK","YANG BERHOMAT DATUK","YANG DIPERTUAN BESAR","YANG AMAT BERHORMAT ENCIK", 6929 "YAB PUAN SRI DATIN","YAB PUAN SRI DATIN HAJJAH","YANG AMAT BERHORMAT TUN","YANG AMAT MULIA","YANG BERHORMAT CIK","YANG BERHORMAT DATO DR", 6930 "YANG BERHORMAT ENCIK","YANG BERHORMAT PUAN","YANG BERHORMAT TAN SRI","YANG BERHORMAT TAN SRI DATO`","YANG MULIA TAN SRI DATO", 6931 "YANG MULIA TUNKU TAN SRI DATO","YANG MULIA TUNKU","NOT APPLICABLE"]; 6932 SaluteListCode = ["DATIN","DATO","DATUK","DATUK","DR","EN","MISS","MR","MRS","MS","PROF","PUAN","PS","SIR","TS","TUN", 6933 "YAB","YB","YM","BRGEN","CIK","CIK PN","DAME","DATIN PA","DATO`(D)", 6934 "DATO`DR.","DATUK E","DATUK PA","DYMM","HAJI","HAJJAH","LADY","MADAM","MESSRS","MR & MRS","RT HON", 6935 "T P SRI","TOH PUAN","TUAN","TUAN HJ","TUN DA","TUN TSD","Y B D","Y D B","YAB EN.", 6936 "YAB PSD","YAB PSDH","YAB TUN","YAM","YB CIK","YB D D", 6937 "YB ENCIK","YB PUAN","YB T S","YB T S D","YM T S D", 6938 "YM TTSD","YM TUNKU","NA"]; 6939 } 6940 var SaluteListLength = SaluteList.length; 6941 6942 optStr+="<option value=''></option>" 6943 for (var i = 0; i < SaluteListLength; i++) { 6944 optStr+="<option value=\""+SaluteListCode[i]+"\" "+(SaluteListCode[i]==sal1?"SELECTED":"")+">"+SaluteList[i]+"</option>" 6945 } 6946 6947 if(SaluteListLength==0) 6948 disabled=1; 6949
6950fnlstr+="<select URLVAR id=\"_"+this.nmStr+"Salutation1sel\" name=\""+this.nmStr+"Salutation1sel\" "+(disabled==1?"DISABLED PDISABLED":"")+" "+(chkrequired==1?"CHKREQUIRED":"")+" style='width:160px' onchange='DoReq(this)' onblur='DoReq(this)'>"; fnlstr+=optStr; 6951 fnlstr+="</select> "; 6952 if(this.config.UI=="M") { 6953 fnlstr+="</div></div>"; 6954 } else { 6955 fnlstr+="</td></tr>"; 6956 } 6957 return fnlstr; 6958} 6959JSVCNameIDObject.prototype.genID1=function(id1,id1type,chkrequired,disabled,id_fld_chk,mic,readonly,idLid,upperCase) 6960{ var comStr,fnlstr,optStr,idchk,listStr; 6961 this.id1disabled=disabled; 6962 if(mic==null)mic=0; 6963 6964 if(mic==1){ 6965 fnlstr="<div valign=baseline>"+this.config.Label_ID1+(this.config.Label_Postfix!=""?" "+this.config.Label_Postfix:"")+"</div><div>"; 6966 } else if((this.config.UI=="M" || JSVCGetResp()) && mic!=2) { 6967 fnlstr="<div><div valign=baseline>"+this.config.Label_ID1+(this.config.Label_Postfix!=""?" "+this.config.Label_Postfix:"")+"</div><div>"; 6968 } else { 6969 fnlstr="<tr><td valign=baseline>"+this.config.Label_ID1+(this.config.Label_Postfix!=""?" "+this.config.Label_Postfix:"")+"</td><td>"; 6970 } 6971 6972 comStr=((this.isCom==1)?"C":"I"); 6973 idchk=null; 6974 this.ID1ListStr=comStr+":*"+this.config.DefCountryID; 6975 optStr=this.genOptionList(this.ID1ListStr,null,id1type); 6976 if(optStr=="") 6977 disabled=1; 6978 fnlstr+="<select URLVAR id=\"_"+this.nmStr+"ID1sel\" name=\""+this.nmStr+"ID1sel\" "+(disabled==1?"DISABLED PDISABLED":"")+" style='width=160px' onchange=\""+this.objname+".checkIDFormat(this.nextSibling.nextSibling,this);"+(!!id_fld_chk?id_fld_chk:"")+"\">"; 6979 fnlstr+=optStr; 6980 fnlstr+="</select> "; 6981 /*#28692*/fnlstr+="<input URLVAR "+(disabled==1?"DISABLED PDISABLED style='background-color:silver'":"")+(readonly==1?"READONLY style=background-color:silver":"")+" "+(chkrequired=="1"?"CHKREQUIRED ":(chkrequired!=''?"CHKREQUIRED=\""+chkrequired+"\" ":""))+" id=\"_"+this.nmStr+"ID1\" name=\""+this.nmStr+"ID1\" maxlength=30 size=\""+this.config.ID1Size+"\" VALUE=\""+id1+"\" "+(idchk!=null? "CHKFORMAT="+idchk+"":"" )+" nameidobj=\""+this.objname+"\" onblur=\""+this.objname+".checkIDFormat(this,this.previousSibling.previousSibling);"+(!!id_fld_chk?id_fld_chk:"")+(upperCase == 1?"this.value=(this.value).toUpperCase();":"")+"DoReq(this)\">"; 6982 6983 if(mic==1){ 6984 fnlstr+="</div>"; 6985 } else if((this.config.UI=="M" || JSVCGetResp()) && mic!=2) { 6986 fnlstr+="</div></div>"; 6987 } else { 6988 fnlstr+="</td></tr>"; 6989 } 6990 return fnlstr; 6991} 6992JSVCNameIDObject.prototype.genID2=function(id2,id2type,nationalityID,chkrequired,disabled,mic) 6993{ var comStr,fnlstr,optStr,idchk; 6994 this.id2disabled=disabled; 6995 if(mic==null)mic=0; 6996 6997 if(mic==1){ 6998 fnlstr="<div id=\"trID2\" valign=baseline>"+this.config.Label_ID2+(this.config.Label_Postfix!=""?" "+this.config.Label_Postfix:"")+"</div><div>"; 6999 } else if((this.config.UI=="M" || JSVCGetResp()) && mic!=2) { 7000 fnlstr="<div id=\"trID2\"><div valign=baseline>"+this.config.Label_ID2+(this.config.Label_Postfix!=""?" "+this.config.Label_Postfix:"")+"</div><div>"; 7001 } else { 7002 fnlstr="<tr id=\"trID2\"><td valign=baseline>"+this.config.Label_ID2+(this.config.Label_Postfix!=""?" "+this.config.Label_Postfix:"")+"</td><td>"; 7003 } 7004 idchk=null; 7005 comStr=(this.isCom==1?"C":"I"); 7006 if(nationalityID!=null && nationalityID!="" && nationalityID!=this.config.DefCountryID) 7007 this.ID2ListStr=comStr+":*"+nationalityID+","+this.config.DefCountryID 7008 else 7009 this.ID2ListStr=comStr+":"+this.config.DefCountryID; 7010 optStr=this.genOptionList(this.ID2ListStr,null,id2type); 7011 if(optStr=="") 7012 disabled=1; 7013 7014 fnlstr+="<select URLVAR name=\""+this.nmStr+"ID2sel\" id=\"_"+this.nmStr+"ID2sel\" "+(disabled==1?"DISABLED PDISABLED":"")+" style='width=160px' onchange=\""+this.objname+".checkIDFormat(this.nextSibling.nextSibling,this);\">"; 7015 fnlstr+=optStr; 7016 fnlstr+="</select> "; 7017 /*#28692*/fnlstr+="<input URLVAR "+(disabled==1?"DISABLED PDISABLED style='background-color:silver'":"")+" "+(chkrequired=="1"? "CHKREQUIRED ":(chkrequired!=''?"CHKREQUIRED=\""+chkrequired+"\" ":""))+" name=\""+this.nmStr+"ID2\" id=\"_"+this.nmStr+"ID2\" maxlength=30 size=30 VALUE=\""+id2+"\" "+(idchk!=null? "CHKFORMAT="+idchk+"":"" )+" onclick=\""+this.objname+".checkIDFormat(this,this.previousSibling.previousSibling);\" onblur=DoReq(this)>"; 7018 7019 if(mic==1){ 7020 fnlstr+="</div>"; 7021 } else if((this.config.UI=="M" || JSVCGetResp()) && mic!=2) { 7022 fnlstr+="</div></div>"; 7023 } else { 7024 fnlstr+="</td></tr>"; 7025 } 7026 return fnlstr; 7027} 7028JSVCNameIDObject.prototype.genNationality=function(nationalityID,chkrequired,disabled) 7029{ 7030 var shortlist; 7031 if(this.config.UI=="M" || JSVCGetResp()) { 7032 var fnlstr="<div><div valign=baseline>"+this.config.Label_Nationality+(this.config.Label_Postfix!=""?" "+this.config.Label_Postfix:"")+"</div><div>"; 7033 } else { 7034 var fnlstr="<tr><td valign=baseline>"+this.config.Label_Nationality+(this.config.Label_Postfix!=""?" "+this.config.Label_Postfix:"")+"</td><td>"; 7035 }
7036 fnlstr+="<select URLVAR id=\"_"+this.nmStr+"nationsel\" name=\""+this.nmStr+"nationsel\" "+(disabled==1?"DISABLED PDISABLED":"")+" "+(chkrequired==1?"CHKREQUIRED":"")+" "+(this.config.NationalityChangeID2==1? "onchange=\""+this.objname+".refresh(event);\" onblur=\""+this.objname+".refresh(event);\" ":" onchange=DoReq(this) onblur=DoReq(this)")+" ><option value=\"\"></option>"; 7037 if(nationalityID==null) 7038 nationalityID="" 7039 else 7040 nationalityID=nationalityID.toString(); 7041 if(nationalityID=="" && this.config.NationalityDefaultCountryID==1) 7042 nationalityID=this.config.DefCountryID; 7043 var ShortListCountryArray=new Array(); 7044 if(this.config.CtryShortlist==null||this.config.CtryShortlist=="") 7045 { // If NULL/missing then use default from CountrySettings 7046 if (CountrySettings[this.config.DefCountryID]!=null && CountrySettings[this.config.DefCountryID].CtryShortlist!=null) 7047 { 7048 if(CountrySettings[this.config.DefCountryID].CtryShortlist!="") 7049 ShortListCountryArray=CountrySettings[this.config.DefCountryID].CtryShortlist.split(","); 7050 } 7051 } else 7052 { 7053 if(this.config.CtryShortlist!="") 7054 ShortListCountryArray=this.config.CtryShortlist.split(","); 7055 } 7056 7057 if(ShortListCountryArray.length>0) 7058 { // If not provided, check from 7059 fnlstr+="<optgroup label=\""+JSVClang("ShortList",27424)+"\">"; 7060 for(var x=0;x<ShortListCountryArray.length;x++) 7061 { 7062 /*for(var i in countries) 7063 { 7064 if(countries[i].value==ShortListCountryArray[x]) 7065 { 7066 fnlstr+="<option value=\""+countries[i].value+"\" "+(countries[i].value==nationalityID?"SELECTED":"")+">"+countries[i].name+"</option>"; 7067 break; 7068 } 7069 }*/ 7070 if(countries[ShortListCountryArray[x]]!=undefined) 7071 fnlstr+="<option value=\""+ShortListCountryArray[x]+"\" "+(ShortListCountryArray[x]==nationalityID?"SELECTED":"")+">"+countries[ShortListCountryArray[x]].name+"</option>"; 7072 } 7073 fnlstr+="</optgroup>"; 7074 fnlstr+="<optgroup label=\""+JSVClang("Others",2637)+"\">"; 7075 } 7076 /*for (var j=1; j<countries.length; j++) 7077 { var found=0; 7078 for(var x=0;x<ShortListCountryArray.length;x++) 7079 if(countries[j].value==ShortListCountryArray[x]) 7080 { 7081 found=1;break; 7082 } 7083 if(found==0) 7084 fnlstr+="<option value=\""+countries[j].value+"\" "+(countries[j].value==nationalityID?"SELECTED":"")+">"+countries[j].name+"</option>"; 7085 }*/ 7086 $.each(sortedCountryArray(countries),function (index,o) { 7087 if($.inArray(o.key,ShortListCountryArray)==-1) 7088 fnlstr+="<option value=\""+o.key+"\" "+(o.key==nationalityID?"SELECTED":"")+">"+o.value.name+"</option>"; 7089 }); 7090 if(ShortListCountryArray.length>0) 7091 fnlstr+="</optgroup>"; 7092 fnlstr+="</select>"; 7093 if(this.config.UI=="M" || JSVCGetResp()) { 7094 fnlstr+="</div></div>"; 7095 } else { 7096 fnlstr+="</td></tr>"; 7097 } 7098 return fnlstr; 7099} 7100JSVCNameIDObject.prototype.genLibertyCustomNationality=function(nationalityID,chkrequired,disabled) //#35043 7101{ 7102 var shortlist; 7103 var fnlstr="<td align=center>"; 7104 7105 fnlstr+="<select URLVAR style=\"width:20ex;text-overflow: ellipsis;\" id=\""+this.nmStr+"_nationsel\" name=\""+this.nmStr+"_nationsel\" "+(disabled==1?"DISABLED PDISABLED":"")+" "+(chkrequired==1?"CHKREQUIRED":"")+" "+(this.config.NationalityChangeID2==1? "onchange=\""+this.objname+".refresh(event);\" onblur=\""+this.objname+".refresh(event);\" ":" onchange=DoReq(this) onblur=DoReq(this)")+" ><option value=\"\"></option>"; 7106 if(nationalityID==null) 7107 nationalityID="" 7108 else 7109 nationalityID=nationalityID.toString(); 7110 if(nationalityID=="" && this.config.NationalityDefaultCountryID==1) 7111 nationalityID=this.config.DefCountryID; 7112 var ShortListCountryArray=new Array(); 7113 if(this.config.CtryShortlist==null||this.config.CtryShortlist=="") 7114 { // If NULL/missing then use default from CountrySettings 7115 if (CountrySettings[this.config.DefCountryID]!=null && CountrySettings[this.config.DefCountryID].CtryShortlist!=null) 7116 { 7117 if(CountrySettings[this.config.DefCountryID].CtryShortlist!="") 7118 ShortListCountryArray=CountrySettings[this.config.DefCountryID].CtryShortlist.split(","); 7119 } 7120 } else 7121 { 7122 if(this.config.CtryShortlist!="")
7123 ShortListCountryArray=this.config.CtryShortlist.split(","); 7124 } 7125 7126 if(ShortListCountryArray.length>0) 7127 { // If not provided, check from 7128 fnlstr+="<optgroup label=\""+JSVClang("ShortList",27424)+"\">"; 7129 for(var x=0;x<ShortListCountryArray.length;x++) 7130 { 7131 /*for(var i in countries) 7132 { 7133 if(countries[i].value==ShortListCountryArray[x]) 7134 { 7135 fnlstr+="<option value=\""+countries[i].value+"\" "+(countries[i].value==nationalityID?"SELECTED":"")+">"+countries[i].name+"</option>"; 7136 break; 7137 } 7138 }*/ 7139 if(countries[ShortListCountryArray[x]]!=undefined) 7140 fnlstr+="<option value=\""+ShortListCountryArray[x]+"\" "+(ShortListCountryArray[x]==nationalityID?"SELECTED":"")+">"+countries[ShortListCountryArray[x]].name+"</option>"; 7141 } 7142 fnlstr+="</optgroup>"; 7143 fnlstr+="<optgroup label=\""+JSVClang("Others",2637)+"\">"; 7144 } 7145 /*for (var j=1; j<countries.length; j++) 7146 { var found=0; 7147 for(var x=0;x<ShortListCountryArray.length;x++) 7148 if(countries[j].value==ShortListCountryArray[x]) 7149 { 7150 found=1;break; 7151 } 7152 if(found==0) 7153 fnlstr+="<option value=\""+countries[j].value+"\" "+(countries[j].value==nationalityID?"SELECTED":"")+">"+countries[j].name+"</option>"; 7154 }*/ 7155 $.each(sortedCountryArray(countries),function (index,o) { 7156 if($.inArray(o.key,ShortListCountryArray)==-1) 7157 fnlstr+="<option value=\""+o.key+"\" "+(o.key==nationalityID?"SELECTED":"")+">"+o.value.name+"</option>"; 7158 }); 7159 if(ShortListCountryArray.length>0) 7160 fnlstr+="</optgroup>"; 7161 fnlstr+="</select>"; 7162 fnlstr+="</td>"; 7163 return fnlstr; 7164} 7165 7166JSVCNameIDObject.prototype.refresh=function(event) 7167{
7168 var o_com,IsCom,oNat,NatID,comStr,optListStr; 7169 // Check if company and reset isCom flag 7170 o_com=document.getElementById("_"+this.nmStr+"nmselCOM"); 7171 if(o_com!=null && o_com.checked) 7172 { this.isCom=1 7173 comStr="C"; 7174 } 7175 else 7176 { this.isCom=0; 7177 comStr="I"; 7178 } 7179 // Check if option list done correctly 7180 oid_input=document.getElementById("_"+this.nmStr+"ID1"); 7181 oid_select=document.getElementById("_"+this.nmStr+"ID1sel"); 7182 if(oid_input!=null && oid_select!=null) 7183 { 7184 optListStr=comStr+":*"+this.config.DefCountryID; 7185 if(optListStr!=this.ID1ListStr) 7186 { 7187 this.ID1ListStr=optListStr; 7188 this.genOptionList(optListStr,oid_select,oid_select.value); 7189 } 7190 this.checkIDFormat(oid_input,oid_select); 7191 if (oid_select.options.length==0 || this.id1disabled==true) 7192 { 7193 oid_select.disabled=true; 7194 oid_input.disabled=true; 7195 oid_input.style.backgroundColor="silver"; 7196 } 7197 else if(!(oid_input.getAttribute('PDISABLED')||oid_input.getAttribute('PDISABLED')=='')) 7198 { 7199 oid_select.disabled=false; 7200 oid_input.disabled=false; 7201 oid_input.style.backgroundColor=""; 7202 } 7203 DoReq(oid_input); 7204 DoReq(oid_select); 7205 } 7206 7207 oNat=document.getElementById("_"+this.nmStr+"nationsel"); 7208 if(oNat!=null) 7209 { 7210 NatID=oNat.value; 7211 DoReq(oNat); 7212 } 7213 7214 oid_input=document.getElementById("_"+this.nmStr+"ID2"); 7215 oid_select=document.getElementById("_"+this.nmStr+"ID2sel"); 7216 if(oid_input!=null && oid_select!=null) 7217 { 7218 optListStr=""; 7219 if(NatID!="" && NatID!=this.config.DefCountryID && this.config.NationalityChangeID2==1) 7220 optListStr=comStr+":*"+NatID+","+this.config.DefCountryID 7221 else 7222 optListStr=comStr+":"+this.config.DefCountryID; 7223 if(optListStr!=this.ID2ListStr) 7224 { 7225 this.ID2ListStr=optListStr; 7226 this.genOptionList(optListStr,oid_select,oid_select.value); 7227 } 7228 this.checkIDFormat(oid_input,oid_select); 7229 if (oid_select.options.length==0 || this.id2disabled==true) 7230 { 7231 oid_select.disabled=true; 7232 oid_input.disabled=true; 7233 oid_input.style.backgroundColor="silver"; 7234 } 7235 else 7236 { 7237 oid_select.disabled=false; 7238 oid_input.disabled=false; 7239 oid_input.style.backgroundColor=""; 7240 } 7241 DoReq(oid_input); 7242 DoReq(oid_select); 7243 } 7244} 7245JSVCNameIDObject.prototype.GenDOBTrig=function() 7246{ 7247 7248 var src = this.nmStr + "ID1"; 7249 var dobid = this.nmStr + 'DOB'; 7250 var genid = this.nmStr + 'Gender'; 7251 var srcobj = JSVCall(src); 7252 if(srcobj!=null) 7253 { 7254 if(document.getElementById(dobid)!=null) 7255 { 7256 var dobobj = document.getElementById(dobid); 7257 if(dobobj != null /*&& dobobj.value == ""*/) 7258 { 7259 JSVCSetDOB(srcobj, dobid, null, 1); 7260 } 7261 } 7262 if(document.getElementById(genid)!=null) 7263 { 7264 var genobj = document.getElementById(genid); 7265 if( genobj != null /*&& genobj.value == ""*/) 7266 { 7267 JSVCSetGenMyIC(srcobj,genid,null,false,1); 7268 } 7269 } 7270 } 7271} 7272 7273JSVCNameIDObject.prototype.genOptionList=function(genOptStr,objSel,selID) 7274{ // genOptStr: Option string in this format: C:1*,2* ==> (C/I):CountryID*,CountryID*,...*=Primary 7275 var arr,mark,ctryID,ctryIdx,str,grpCnt,idval,pGrp,opt,idListArray,idList,idName; 7276 if(objSel!=null) 7277 { 7278 while (objSel.firstChild) { 7279 objSel.removeChild(objSel.firstChild); 7280 } 7281 } 7282 if(genOptStr==null || genOptStr=="") 7283 { 7284 return ""; 7285 } 7286 str=""; 7287 arr=genOptStr.split(":"); 7288 if(arr[0]=="C") 7289 isCom=1 7290 else 7291 isCom=0; 7292 arr=arr[1].split(","); 7293 for(var x=0;x<arr.length;x++) 7294 { 7295 if(arr[x].substring(0,1)=="*") 7296 { 7297 mark=1; 7298 ctryID=arr[x].slice(1); 7299 } else 7300 { 7301 mark=0; 7302 ctryID=arr[x]; 7303 } 7304 idList=null; 7305 idListArray=new Array(); 7306 ctryIdx=CSGetCountryIndexPos(ctryID); 7307 if(this.config.OvrIDStr!=null && this.config.OvrIDStr!="" && ctryID==this.config.DefCountryID) 7308 { // Still using old IDStr format 7309 var idListTmp=this.config.OvrIDStr.split("|"); 7310 if(isCom==1) 7311 { // Old style: First element always company 7312 if(Trim(idListTmp[0])!="") 7313 { 7314 idListArray[0]=idListTmp[0]; 7315 if(idListArray[0].length>0 && idListArray[0].substring(0,1)!="*") 7316 idListArray[0]="*"+idListArray[0]; 7317 } 7318 } else 7319 { 7320 if(idListTmp.length>1) 7321 { 7322 idListTmp.shift(); 7323 idListArray=idListTmp; 7324 } 7325 } 7326 } else 7327 { 7328 if (CountrySettings[ctryID]!=null) 7329 { 7330 if(isCom==1) 7331 idList=CountrySettings[ctryID].ComID 7332 else 7333 idList=CountrySettings[ctryID].IndID; 7334 } 7335 if(idList!=null) 7336 idListArray=idList.split("|"); 7337 } 7338 if(idListArray.length>0) 7339 { grpCnt=0; 7340 for(var y=0;y<idListArray.length;y++) 7341 if(idListArray[y].length>0) 7342 { 7343 var idval=null; 7344 if (mark==1) //(mark=="*") 7345 { 7346 if (idListArray[y].substring(0,1)=="*") 7347 idval=idListArray[y].slice(1); 7348 } 7349 else 7350 { 7351 if (idListArray[y].substring(0,1)!="*") 7352 idval=idListArray[y]; 7353 } 7354 if (idval!=null) 7355 { 7356 // Interprete ID string 7357 var idcomp=idval.split("!"); 7358 if(idcomp.length>1) 7359 { 7360 idval=idcomp[0]; 7361 idcomp=idcomp[1].split("~"); 7362 idname=idcomp[0]; 7363 if(idcomp.length>1) 7364 idchk=idcomp[1] 7365 else 7366 idchk=null; 7367 } else 7368 { 7369 idval=idcomp[0]; 7370 idname=IDtypes[idval].Name; 7371 idchk=IDtypes[idval].IdChkStr; 7372 } 7373 7374 if(grpCnt==0) 7375 { 7376 //str+="<OPTGROUP LABEL=\""+countries[ctryIdx].name+"\">"; 7377 str+="<OPTGROUP LABEL=\""+countries[ctryID].name+"\">"; 7378 pGrp=document.createElement("optgroup"); 7379 //pGrp.label=countries[ctryIdx].name; 7380 pGrp.label=countries[ctryID].name; 7381 } 7382 grpCnt++; 7383 //idchk=IDtypes[idval].IdChkStr; 7384 str+="<OPTION "+((idchk!=null && typeof(idchk)=="string" && idchk.length>0)?" IDCHKSTR=\""+idchk+"\" ":"")+" VALUE=\""+idval+"\" "+(idval==selID?"SELECTED":"")+">"+idname+"</OPTION>"; 7385 opt=document.createElement("option"); 7386 opt.value=idval; 7387 opt.innerHTML=idname; 7388 if(idchk!=null && typeof(idchk)=="string" && idchk.length>0) 7389 opt.setAttribute("IDCHKSTR",idchk); 7390 if(idval==selID) 7391 opt.selected=true; 7392 pGrp.appendChild(opt); 7393 } 7394 } 7395 if(grpCnt>0) 7396 { 7397 str+="</OPTGROUP>"; 7398 if(objSel) 7399 objSel.appendChild(pGrp); 7400 } 7401 } 7402 } 7403 return str; 7404} 7405JSVCNameIDObject.prototype.checkIDFormat=function(obj,obj2) 7406{ //obj:id string obj2:idtype select 7407 var opt; 7408 if (obj2.selectedIndex>=0 && obj2.options.length>0)
7409 { var opt=obj2.options[obj2.selectedIndex]; 7410 idchk=opt.getAttribute("IDCHKSTR"); 7411 if (idchk!=null && typeof(idchk)=="string" && idchk.length>0) 7412 obj.setAttribute("CHKFORMAT",idchk) 7413 else 7414 obj.removeAttribute("CHKFORMAT"); 7415 } 7416 DoReq(obj); 7417} 7418JSVCNameIDObject.prototype.setConfigStruct=function(setup_config) 7419{ 7420 if(setup_config!=null && typeof(setup_config)=="object") 7421 { 7422 for (var name in setup_config) 7423 if (setup_config.hasOwnProperty(name) && this.config.hasOwnProperty(name)) 7424 this.config[name]=setup_config[name]; 7425 } 7426} 7427JSVCNameIDObject.prototype.getConfigStruct=function() 7428{ 7429 return this.config; 7430} 7431JSVCNameIDObject.prototype.setDefCountryID=function(ctryid) 7432{ 7433 this.config.DefCountryID=ctryid; 7434} 7435JSVCNameIDObject.prototype.setOvrIDStr=function(idstr) 7436{ 7437 this.config.OvrIDStr=idstr; 7438} 7439JSVCNameIDObject.prototype.setCtryShortlist=function(ctryshortlist) 7440{ 7441 this.config.CtryShortlist=ctryshortlist; 7442} 7443 7444JSVCNameIDObject.prototype.genTIN=function(curvalue,req,disabled,onblur,NaEnabled){ 7445 var fnlstr=''; 7446 7447 if(this.config.UI=="M" || JSVCGetResp()){ 7448 fnlstr+="<div id=\"TR"+this.nmStr+"TIN\"><div valign=baseline>Tax Identification Number (TIN)</div><div>"; 7449 } else { 7450 fnlstr+="<tr id=\"TR"+this.nmStr+"TIN\"><td valign=baseline>Tax Identification Number (TIN)</td><td>"; 7451 } 7452 7453 fnlstr+=`<input id=\"_`+this.nmStr+`TIN\" name=\"`+this.nmStr+`TIN\" VALUE=\"`+curvalue+`\" maxlength=14 minlength=10 size=20 `+(req==1?"CHKREQUIRED":'')+(disabled==1?" DISABLED PDISABLED":"")+(NaEnabled==1?" NAENABLED=1":" NAENABLED=0")+` onblur=\"`+onblur+`\">`; 7454 7455 if(NaEnabled==1){ 7456 fnlstr+=`<br><span id="`+this.nmStr+`tin-note" class=clsColorNote>Input âNAâ if TIN is not available/ not provided/ not TIN-registered</span>`; 7457 } 7458 7459 if(this.config.UI=="M" || JSVCGetResp()) { 7460 fnlstr+="</div></div>"; 7461 } else { 7462 fnlstr+="</td></tr>"; 7463 } 7464 7465 return fnlstr; 7466} 7467 7468//#57723: SST Registered? Radio Button Field (Available only Type=Company) 7469JSVCNameIDObject.prototype.genSSTRegOpt=function(curvalue,req,onclick){ 7470 var fnlstr = ''; 7471 7472 if (this.config.UI == "M" || JSVCGetResp()) { 7473 fnlstr += "<div id=\"TR" + this.nmStr + "SSTRegOpt\" style=\"display: none;\" ><div valign=baseline>SST Registered?</div><div>"; 7474 } else { 7475 fnlstr += "<tr id=\"TR" + this.nmStr + "SSTRegOpt\" style=\"display: none;\" ><td valign=baseline>SST Registered?</td><td>"; 7476 } 7477 7478 fnlstr += "<input type=radio id=\"_" + this.nmStr + "SSTRegOpt1\" name=\"" + this.nmStr + "SSTRegOpt\" VALUE=1 onclick=\""+onclick+"\" " + (curvalue == 1 ? " checked" : "") + (req == 1 ? " CHKREQUIRED" : '') + "><label for=\"_" + this.nmStr + "SSTRegOpt1\">Yes</label>"; 7479 7480 fnlstr += "<input type=radio id=\"_" + this.nmStr + "SSTRegOpt0\" name=\"" + this.nmStr + "SSTRegOpt\" VALUE=2 onclick=\""+onclick+"\" " + (curvalue == 2 ? " checked" : "") + (req == 1 ? " CHKREQUIRED" : '') + "><label for=\"_" + this.nmStr + "SSTRegOpt0\">No</label>"; 7481 7482 if (this.config.UI == "M" || JSVCGetResp()) { 7483 fnlstr += "</div></div>"; 7484 } else { 7485 fnlstr += "</td></tr>"; 7486 } 7487 7488 7489 return fnlstr; 7490} 7491 7492 7493JSVCNameIDObject.prototype.genSSTReg=function(curvalue,req,disabled,onblur,NaEnabled){ 7494 var fnlstr=''; 7495 7496 if(this.config.UI=="M" || JSVCGetResp()){ 7497 fnlstr+="<div id=\"TR"+this.nmStr+"SSTRegNo\"><div valign=baseline>SST Registration Number</div><div>"; 7498 } else { 7499 fnlstr+="<tr id=\"TR"+this.nmStr+"SSTRegNo\"><td valign=baseline>SST Registration Number</td><td>"; 7500 } 7501 7502 fnlstr+=`<input id=\"_`+this.nmStr+`SSTRegNo\" name=\"`+this.nmStr+`SSTRegNo\" VALUE=\"`+curvalue+`\" maxlength=17 size=20 `+(req==1?"CHKREQUIRED":'')+(disabled==1?" DISABLED PDISABLED":"")+(NaEnabled==1?" NAENABLED=1":" NAENABLED=0")+` onblur=\"`+onblur+`\">` 7503 7504 if(NaEnabled==1){ 7505 fnlstr+=`<br><span class=clsColorNote>Input âNAâ if SST registration number is not available/ not provided/ not SST-registered</span>`; 7506 } 7507 7508 if(this.config.UI=="M" || JSVCGetResp()) { 7509 fnlstr+="</div></div>"; 7510 } else { 7511 fnlstr+="</td></tr>"; 7512 } 7513 7514 return fnlstr; 7515} 7516 7517//make tables highlightable - type=0 is for tr highlighting, while type 1 for td 'deep' highlighting. 7518//usage : highlighter( tableobj,0 ); 7519 7520function checkIDFormatStandAlone(obj,obj2,optionTrig) 7521{ //obj:id string obj2:idtype select optionTrig:Trigger on index
7522 var opt=obj2.options[obj2.selectedIndex]; 7523 var idchk=opt.getAttribute("IDCHKSTR"); 7524 if (obj2.selectedIndex>=0 && obj2.options.length>0) 7525 { 7526 if(obj2.selectedIndex==optionTrig) { 7527 if (idchk!=null && typeof(idchk)=="string" && idchk.length>0) 7528 obj.setAttribute("CHKFORMAT",idchk) 7529 else 7530 obj.removeAttribute("CHKFORMAT"); 7531 } else 7532 obj.removeAttribute("CHKFORMAT"); 7533 /*var opt=obj2.options[obj2.selectedIndex]; 7534 idchk=opt.getAttribute("IDCHKSTR"); 7535 if (idchk!=null && typeof(idchk)=="string" && idchk.length>0) 7536 obj.setAttribute("CHKFORMAT",idchk) 7537 else 7538 obj.removeAttribute("CHKFORMAT");*/ 7539 } 7540 DoReq(obj); 7541} 7542 7543highlighter = function(o,type,onclass,offclass,oncolor,offcolor){ 7544 7545 var oldclass = new Array(); 7546 7547 if (type==null) type = 1; 7548 if (onclass==null) onclass='clsSVChlon'; 7549 if (offclass==null) offclass='clsSVChloff'; 7550 if (oncolor==null) oncolor='pink'; 7551 if (offcolor==null) offcolor=''; 7552 7553 this.hlon = function (e) { // highlight 7554 var obj = getTR(e); 7555 var j = 0; 7556 if (obj&& obj.tagName == 'TR' && obj.parentNode.tagName != "THEAD" && obj.parentNode.tagName != "TFOOT") { 7557 if (type == 1){ 7558 for (j=0;j<obj.cells.length;j++) { //cells 7559 if (document.all) { 7560 oldclass[j] = (obj.cells[j].style && obj.cells[j].style.backgroundColor != ''?obj.cells[j].style.backgroundColor:offcolor); 7561 obj.cells[j].style.backgroundColor = oncolor; 7562 } else 7563 obj.cells[j].className= onclass + ' ' + obj.cells[j].className; 7564 7565 } 7566 } 7567 if (document.all) { 7568 oldclass[j] = (obj.style&&obj.style.backgroundColor!=''?obj.style.backgroundColor:offcolor); 7569 obj.style.backgroundColor = oncolor; 7570 } else { 7571 obj.className = onclass + ' ' + obj.className; 7572 } 7573 7574 } 7575 } 7576 7577 this.hloff = function (e) { // highlight off 7578 var obj = getTR(e); 7579 var j = 0; 7580 var color; 7581 var c = obj.className || ""; 7582 if (obj&& obj.tagName == 'TR' && obj.parentNode.tagName != "THEAD" && obj.parentNode.tagName != "TFOOT") { 7583 if (type==1) { 7584 for (j=0;j<obj.cells.length;j++) { 7585 if (document.all) obj.cells[j].style.backgroundColor = oldclass[j]; 7586 else obj.cells[j].className = obj.cells[j].className.replace(new RegExp("(^|\\s)"+onclass+"(\\s|$)"),"$1"); 7587 } 7588 } 7589 if(document.all) obj.style.backgroundColor = oldclass[j]; 7590 else obj.className = obj.className.replace(new RegExp("(^|\\s)"+onclass+"(\\s|$)"),"$1"); 7591 } 7592 } 7593 7594 this.getTR = function(e) { // get the row from the triggered event element 7595 var obj; 7596 if (window.event) 7597 { 7598 e = window.event; 7599 obj = e.srcElement; 7600 } else { 7601 obj = e.target; 7602 } 7603 while ( obj.parentNode && obj.tagName != 'TR' && obj.tagName != 'TABLE') { 7604 obj = obj.parentNode; 7605 } 7606 return obj; 7607 } 7608 7609 this.addTableHighlight = function () { // adds onmouseover/out listening events 7610 if( !(o&&o.tagName== 'TABLE')) return; 7611 if (o.addEventListener){ 7612 o.addEventListener('mouseover', hlon, true); 7613 o.addEventListener('mouseout', hloff, true); 7614 } else if (o.attachEvent){ 7615 o.attachEvent('onmouseover', hlon); 7616 o.attachEvent('onmouseout', hloff); 7617 } 7618 } 7619 7620 this.addTableHighlight(); 7621} 7622var SVCStatSummary=function(cols,coltitles,order,lnk,totstr,usePaging) 7623{ 7624 this.cols=cols.split("|"); 7625 this.coltitles=coltitles.split("|"); 7626 if(order==null || order=="") 7627 this.order=null 7628 else 7629 this.order=order.split("|"); 7630 this.itms=new Array(); 7631 this.cnt=0; 7632 this.tot=0; 7633 this.lnk=lnk; 7634 this.totstr=totstr; 7635 if(usePaging==1) 7636 this.setPage=usePaging; 7637 else 7638 this.setPage=0; 7639} 7640SVCStatSummary.prototype.add=function(id,desc,cnt,supp) 7641{ 7642 var o=new Object(); 7643 o.desc=desc; 7644 o.cnt=cnt; 7645 o.supp=supp; 7646 this.itms[id]=o; 7647} 7648SVCStatSummary.prototype.genrow=function(stat,itm) 7649{ 7650 this.cnt++; 7651/* // Old style 7652 document.write("<b>"+itm.cnt+"</b> case"+(itm.cnt>
76520?"s":"")+" in <a style=font-weight:bold href=\""+request.webroot+this.lnk+stat+"&"+request.mtoken+"\">"+itm.desc+"</a>"+ 7653 (itm.supp>0?" / <b>"+itm.supp+"</b> suppl":"")+"</br>"); */ 7654 if(request.mobile == 2) { 7655 document.write("<a href=\""+request.webroot+this.lnk+stat+"&totalcase="+((isNaN(itm.cnt)?0:itm.cnt)+(isNaN(itm.supp)?0:itm.supp))+"&setpage="+this.setPage+"&"+request.mtoken+"\" class='list-group-item'>"+ 7656 "<div class='row'>" 7657 ); 7658 var colcount=0; 7659 for(x in this.cols) { 7660 if(isNaN(itm.cnt)) itm.cnt=0; 7661 if(isNaN(itm.supp)) itm.supp=0; 7662 coltype=this.cols[x]; 7663 if(coltype=="cnt") { 7664 document.write("<div class='col-md-1 col-xs-2'>"+ 7665 " <span "+(itm.cnt>0?"class='badge'":"")+">"+(itm.cnt>0?itm.cnt:" ")+"</span>"+ 7666 "</div>" 7667 ); 7668 } else if(coltype=="supp") { 7669 document.write("<div class='col-md-1 col-xs-2'>"+ 7670 " <span "+(itm.supp>0?"class='badge'":"")+">"+(itm.supp>0?itm.supp:" ")+"</span>"+ 7671 "</div>" 7672 ); 7673 } else if(coltype=="desc") { 7674 document.write("<div class='col-md-"+(12-colcount)+" col-xs-"+(12-colcount*2)+"'>"+itm.desc+"</div>"); 7675 } 7676 colcount++; 7677 } 7678 document.write("</div></a>"); 7679 } else { 7680 document.write("<tr class=\""+((this.cnt%2)==0?"clsDetail4":"clsDetail5")+"\">"); 7681 for(x in this.cols) 7682 { 7683 if(isNaN(itm.cnt)) itm.cnt=0; 7684 if(isNaN(itm.supp)) itm.supp=0; 7685 coltype=this.cols[x]; 7686 if(coltype=="cnt") 7687 document.write("<td style='text-align:center;width:6ex;' class=\"clsCaseCnt\" nowrap>"+(itm.cnt>0?itm.cnt:"")+"</td>") 7688 else if(coltype=="supp") 7689 document.write("<td style='text-align:center;width:6ex;' class=\"clsCaseCnt2\" nowrap>"+(itm.supp>0?itm.supp:"")+"</td>") 7690 else if(coltype=="desc") 7691 document.write("<td width=100% style=padding-left:3px><a style=font-weight:bold href=\""+request.webroot+this.lnk+stat+"&totalcase="+(itm.cnt+itm.supp)+"&setpage="+this.setPage+"&"+request.mtoken+"\">"+itm.desc+"</a></td>"); 7692 } 7693 document.write("</tr>"); 7694 } 7695 this.tot+=itm.cnt; 7696} 7697SVCStatSummary.prototype.gen=function(notitle) 7698{ 7699 var x,itm; 7700 if(notitle==null) 7701 if(this.itms.length==0) 7702 notitle=1 7703 else 7704 notitle=0; 7705 if(request.mobile == 2) { 7706 // Header 7707 document.write( 7708 "<div class='list-group'>"+ 7709 " <a class='list-group-item header'>"); 7710 7711 if(notitle==0) { 7712 document.write("<div class='row'>"); 7713 var coltitleslen = this.cols.length 7714 7715 for(x in this.coltitles){ 7716 if(x != coltitleslen-1) { 7717 document.write("<div class='col-md-1 col-xs-2'>"+ 7718 " <label>"+this.coltitles[x]+"</label>"+ 7719 "</div>" 7720 ); 7721 } else { 7722 document.write("<div class='col-md-"+(12-x)+" col-xs-"+(12-x*2)+"'>"+ 7723 " <label>"+this.coltitles[x]+"</label>"+ 7724 "</div>" 7725 ); 7726 } 7727 } 7728 document.write("</div>"); 7729 } 7730 document.write("</a>"); 7731 } else { 7732 // Header 7733 document.write("<table cellpadding=\"2\" cellspacing=\"0\" class=\"clsMainTable\" border=1 width=100%>"); 7734 7735 if(notitle==0) 7736 { 7737 document.write("<tr class=\"header\">"); 7738 for(x in this.coltitles) 7739 document.write("<td align=center>"+this.coltitles[x]+"</td>"); 7740 document.write("</tr>"); 7741 } 7742 } 7743 7744 if(this.order!=null) 7745 { 7746 for(x in this.order) 7747 { 7748 itm=this.itms[this.order[x]]; 7749 if(itm!=null) 7750 { 7751 this.genrow(this.order[x],itm); 7752 this.itms[this.order[x]]=null; 7753 } 7754 } 7755 } 7756 7757 for(x in this.itms) 7758 { 7759 if(this.itms[x]!=null) 7760 this.genrow(x,this.itms[x]); 7761 } 7762 7763 if(request.mobile == 2) { 7764 document.write( 7765 " <div class='label-total'>"+this.tot+" "+this.totstr+"</div>"+ 7766 "</div>"); 7767 } 7768 else { 7769 if(this.totstr!=null) 7770 document.write("<tr><td colspan="+this.cols.length+" style=font-weight:bold;font-size:140%>"+this.tot+" "+this.totstr+"</td></tr>"); 7771 document.write("</table>"); 7772 } 7773} 7774SVCconfirmPrompt=function(varname,event,action,confirmtext,callback,cancelCallback) { 7775 this.varname=varname; 7776 this.action=action; 7777 this.confirmtext=confirmtext; 7778 this.callback=callback; 7779 this.cancelCallback=cancelCallback; 7780 7781 this.pp=new JSVCpopup("pp",null,null); 7782 this.vf=this.pp.ctxname+"_verify"; 7783 7784 this.pp.width=300; 7785 this.pp.title=JSVClang("CONFIRMATION",1798); 7786 if(this.confirmtext==null) { 7787 this.pp.msg=action; 7788 this.pp.exfields=null; 7789 } else { 7790 this.pp.msg=JSVClang("Are you sure you want to {0}?\nType {1} to confirm.",5019,0,this.action,this.confirmtext); 7791 this.pp.exfields=[[null,"<input CHKREQUIRED CHKNAME='"+this.confirmtext+"' id="+this.vf+" onblur=DoReq(this) onkeypress=\"if(event.keyCode==13){"+this.varname+".f
7791nOK()}else if(event.keyCode==27){"+this.varname+".fnCancel()}\">"]]; 7792 } 7793 this.pp.fnOK=this.varname+".fnOK()"; 7794 this.pp.fnCancel=this.varname+".fnCancel()"; 7795 this.pp.gen(); 7796 this.pp.show(event); 7797 var o=document.getElementById(this.vf); 7798 if(o) o.focus(); 7799} 7800SVCconfirmPrompt.prototype.fnOK=function() { 7801 var cb=false; 7802 if(this.confirmtext==null) { 7803 cb=true; 7804 this.pp.hide(); 7805 } else { 7806 var txt=document.getElementById(this.vf).value; 7807 if(Trim(txt.toUpperCase())==this.confirmtext) { 7808 this.pp.hide(); 7809 cb=true; 7810 } else { 7811 this.pp.hide(); 7812 SVCalert(JSVClang("You didn't "+"{0}"+". "+"{1}"+" cancelled.",5020,0,this.confirmtext,this.action)); 7813 } 7814 } 7815 if(cb) { 7816 if(typeof(this.callback)=="function") 7817 this.callback(this.action); 7818 else 7819 eval(this.callback); 7820 } 7821} 7822SVCconfirmPrompt.prototype.fnCancel=function() { 7823 //this.pp.hide(); 7824 if(this.cancelCallback) 7825 { 7826 if(typeof(this.cancelCallback)=="function") 7827 this.cancelCallback(this.action); 7828 else 7829 eval(this.cancelCallback); 7830 } 7831} 7832SVCalert=function(msg, title, width,callback) { 7833 if(title==null) title=JSVClang("ALERT",27425) 7834 if(width==null) width=300; 7835 var o; 7836 var alert_popup=new JSVCpopup("alert_popup"); 7837 alert_popup.width=width; 7838 alert_popup.title=title; 7839 alert_popup.msg=msg; 7840 alert_popup.btnFlag=1; 7841 if(callback!=null) 7842 if(typeof(callback)=="function") 7843 alert_popup.fnOK=callback 7844 else 7845 alert_popup.fnOK=new Function(callback); 7846 alert_popup.gen(); 7847 alert_popup.show(window.event); 7848 o=JSVCGetFirstFormElement(document.getElementById(alert_popup.ctxname)); 7849 if(o)o.focus(); 7850} 7851SVCnote=function(msg,ctxid) { 7852 var o; 7853 var alert_note=new JSVCpopup("alert_note",null,ctxid); 7854 alert_note.width=300; 7855 alert_note.title="Note"; 7856 alert_note.msg=msg; 7857 alert_note.btnFlag=0; 7858 alert_note.gen(); 7859 alert_note.show(window.event); 7860 o=JSVCGetFirstFormElement(document.getElementById(ctxid)); 7861 if(o)o.focus(); 7862} 7863function JSVCniceralert(msg,status,title,load,oxhttp, custombtn, clsmenubtn) { 7864 var html,oframe,width=400;//document.body.clientWidth-(document.body.clientWidth*0.1); 7865 oframe=document.getElementById("UL_alert"); 7866 if(load == null) load = false; 7867 if(oframe) { oframe.parentNode.removeChild(oframe); oframe = null;} 7868 if (oframe==null) { 7869 html = "<div id=divcontainer style=overflow:visible;overflow-x:auto;overflow-y:auto;max-height:800px;>"; 7870 html += '<table border=0 cellspacing=0 cellpadding=3 width=100% style=margin-top:1px;background-color:white;>'; 7871 if(!load) { 7872 html += '<tr><td align=center>'+(status>=0?'<img src="'+request.approot+'services/images/info_32.png">':'<img src="'+request.approot+'services/images/alert_32.png">')+'</td></tr><tr>'; 7873 html += '<tr><td id=UL_alert_msg align='+(status===2?'left':'center')+ '; style=font-weight:' +(status===2?'normal':'bold')+';color:'+(status>0?'black':'red')+'>'+msg+'</td></tr>'; 7874 if(custombtn != null && custombtn != '') // custom button to display 7875 html += custombtn; 7876 else 7877 html += '<tr><td align=center><input type="button" class="clsButton" id="okBtn" value=" OK " onClick="JSVCcloseCtxMenu(document.getElementById(\'UL_alert\'));"></td></tr>'; 7878 } else { 7879 html += '<tr><td align=center style=font-weight:bold;>'+msg+' </td></tr><tr>'; 7880 if(oxhttp!=null) 7881 { 7882 html += '<tr><td align=center><img src="'+request.approot+'services/images/ajax-loaderblk.gif"></td></tr>'; 7883 html += '<tr><td align=center><input type="button" class="clsButton" id="cnclBtn" value=" Cancel " onClick="JSVCcloseCtxMenu(document.getElementById(\'UL_alert\'));oxhttp.abort();"></td></tr>'; 7884 } 7885 } 7886 html += '</table>'; 7887 html += '</div>'; 7888 if(clsmenubtn == null) clsmenubtn==false 7889 oframe=JSVCCtxMenuFrame(null,"UL_alert",title,width,false,clsmenubtn); 7890 JSVCCtxMenuContent(oframe,html); 7891 JSVCshowCtxMenuEv(null,oframe,1,2,2); 7892 } 7893 else { 7894 JSVCshowCtxMenuEv(null,oframe,1,2,2); 7895 } 7896 if(!load) 7897 document.getElementById('okBtn').focus(); 7898} 7899SVCconfirm=function(msg,callback,cancelCallback) { 7900 oSVCconfirm=new SVCconfirmPrompt("oSVCconfirm",window.event,msg,null,callback,cancelCallback); 7901} 7902SVCprompt=function(action,confirmtext,callback,cancelCallback) { 7903 oSVCprompt=new SVCconfirmPrompt("oSVCprompt",window.event,action,confirmtext,callback,cancelCallback); 7904} 7905function JSVCresizeTxtareaRow(id){ 7906 var obj,countrowsNew; 7907 if( typeof(id) == "string" ) 7908 obj = document.getElementById(id); 7909 else
7910 obj = id; 7911 var new_row; 7912 var min_row = 3; 7913 var max_row = 100; 7914 7915 if(obj) { 7916 if(obj.rows!=null) new_row = obj.rows; 7917 if(obj.getAttribute("minrows")!=null&&obj.getAttribute("minrows")!="") min_row = obj.getAttribute("minrows"); 7918 if(obj.getAttribute("maxrows")!=null&&obj.getAttribute("maxrows")!="") max_row = obj.getAttribute("maxrows"); 7919 7920 if(obj.value!="") { 7921 countrows = obj.value.toString().split('\n'); 7922 if(countrows!=null&&countrows.length+1>new_row ) { 7923 new_row = countrows.length+1; 7924 } 7925 } 7926 7927 if(new_row>max_row){ 7928 new_row = max_row; 7929 $(obj).attr('onkeypress','if(event.keyCode==13){return false}'); 7930 7931 //To cater for long press "Enter" or paste value 7932 countrowsNew = countrows.slice(0, new_row).join("\n"); 7933 if(countrowsNew != undefined) obj.value = countrowsNew; 7934 }else{ 7935 if(obj.hasAttribute('onkeypress')) $(obj).removeAttr('onkeypress'); 7936 } 7937 if(new_row>min_row) obj.rows = new_row; 7938 } 7939} 7940function JSVCautoExpandTextarea() { 7941 var obj = document.getElementsByTagName("TEXTAREA"); 7942 for(var i=0;i<obj.length;i++) { 7943 if( obj[i].getAttribute("autoexpand")!=null && obj[i].id) { 7944 JSVCresizeTxtareaRow(obj[i]); 7945 JSVCaddEvent(obj[i],'keyup',function(event){JSVCresizeTxtareaRow(this.id)}) 7946 } 7947 } 7948} 7949/* 7950 * JSVCVarNameRegister : Registration for global varnames to be used in page. 7951 * 7952 * Andrew: 05 Febuary 2013 7953 * There is this problem where we want to access an object/datastructure globally by name, 7954 * for example in document events like onclick=varname.clickfunction(). This causes problem because 7955 * variables must created global for the scripting and must be careful of name clashes 7956 * especially in library functions. 7957 * 7958 * Solution is to create a global registry (a Merimen Name register) that is active for a particular page. 7959 * This registry stores everything in a single global variable _MRMVarNameRegister object variable. Since 7960 * we are storing as Properties of Object look-up should be fast as an associative array. 7961 * 7962 * - Use allocated_varname=SVCVarNameSet(varname,value[,makeNewUnique]) to set a varname value (can be an object). 7963 * If makeNewUnique is true and varname already taken, it will append a postfix to make it a new unique. 7964 * - Use SVCVarNameGet(varname) get the value stored for varname 7965 * - Use SVCVarNameForget(varname) to deallocate a varname value for garbage collection (not strictly neccessary 7966 * as pages are short-lived and garbage collected upon navigating but nice to do anyway) 7967 * 7968 * Example: 7969 * var win=window.open("http://xx"); 7970 * var varname=JSVCVarNameSet("POPUPWIN",win,true); 7971 * document.write("<input type=button value='Close Popup' onclick=\"JSVCVarNameGet("+varname+").close()\">"); 7972 * 7973 */ 7974var _MRMVarNameRegister=new Object(); 7975function JSVCVarNameSet 7976 ( 7977 varname, 7978 value, 7979 makeNewUnique 7980 ) 7981{ 7982 var newVarName; 7983 if((typeof(varname))!="string") 7984 varname=""; 7985 newVarName=varname; 7986 if(makeNewUnique!=true) 7987 makeNewUnique=false; 7988 while(_MRMVarNameRegister.hasOwnProperty(newVarName) && makeNewUnique==true) 7989 { 7990 // Clash with makeNewUnique: allocate a random postfix 7991 newVarName=varname+"_"+Math.floor(Math.random()*100000000); 7992 } 7993 _MRMVarNameRegister[newVarName]=value; 7994 return newVarName; 7995} 7996function JSVCVarNameExists(varname) 7997{ 7998 if(_MRMVarNameRegister.hasOwnProperty(varname)) 7999 return true 8000 else 8001 return false; 8002} 8003function JSVCVarNameGet(varname) 8004{ 8005 if(_MRMVarNameRegister.hasOwnProperty(varname)) 8006 return _MRMVarNameRegister[varname] 8007 else 8008 return null; 8009} 8010function JSVCVarNameForget(varname) 8011{ 8012 if(_MRMVarNameRegister.hasOwnProperty(varname)) 8013 delete _MRMVarNameRegister[varname]; 8014} 8015function JSVCSetSelect(elname,elattrvalue,elattr){ 8016 var l_attr = elattr || 'value' 8017 $('select[name="'+elname+'"]').children().each(function(index,item){ 8018 if (item.getAttribute(l_attr) == elattrvalue){ 8019 item.setAttribute('selected','') 8020 return false 8021 } 8022 }) 8023} 8024function JSVCBaseCurrencyTypeChange(obj,objexcrate,localcurrid) { 8025 var currid,origval; 8026 obj=(typeof(obj)=='string'?document.getElementById(obj):obj); 8027 currid=(obj!=null&&obj.value!=null?obj.value:null); 8028 objexcrate=(typeof(objexcrate)=='string'?document.getElementById(objexcrate):objexcrate); 8029 if(objexcrate!=null) { 8030 origval=(objexcrate.getAttribute('ORIGVAL')!=null&&objexcrate.getAttribute('ORIGVAL')!=''?objexcrate.getAttribute('ORIGVAL'):null); 8031 objexcrate.readOnly=(parseInt(currid)==parseInt(localcurrid)?true:false); 8032 if(origval=='' || origval==null) objexcrate.value=(parseInt(currid)==parseInt(localcurrid)?1:''); 8033 objexcrate.onblur(); 8034 } 8035} 8036 8037/****** START : worksheet itemizer *******/ 8038 8039 8040var cFITMitms=function(varname,curr,locid,excratesrc,excratedt,currlist,config,domainid,objid) 8041{ 8042 var cnt,temp,temp2,cnty,fset; 8043 this.varname=varname; 8044 this.curr=curr; 8045 this.def_itmdtldef_items=eval('[{"COLNAME":"Description","ITMS":[["vaDESC","","CHKREQUIRED",""]]},{"COLNAME":"Part/Ref No","ITMS":[["vaPNO",""]]},{"COLNAME":"Qty","ITMS":[["NVAL2","","CHKREQUIRED",""]]},{"COLNAME":"Amount","ITMS":[["mnVAL1","","CHKREQUIRED",""]]}]'); 8046 this.def_itmdtldef_rate=eval('[{"COLNAME":"Description","ITMS":[["vaDESC",""]]},{"COLNAME":"Date From","ITMS":[["dtDATE1",""]]},{"COLNAME":"Date To","ITMS":[["dtDATE2",""]]},{"COLNAME":"Days","ITMS":[["NVAL2","","READ"]]}]'); 8047 //<!--- this var is used to define name of the input object --->
8047 8048 this.RulesFormItmDef={"VADESC":"DS","VADESC2":"DS2","VADESC3":"DS3","VADESC4":"DS4","VADESC5":"DS5","DTDATE1":"DT1","DTDATE2":"DT2","VAPNO":"PN","VAPNO2":"PN2","MNVAL3":"AM3","NVAL2":"QT","MNVAL1":"AM","MNVAL4":"AM4","MNVAL5":"AM5","MNVAL6":"AM6","MNVAL7":"AM7","MNVAL8":"AM8","MNVAL9":"AM9","DTDATE3":"DT3","NVAL3":"NV3","NVAL4":"NV4","DTDATE4":"DT4","NVAL5":"NV5"}; 8049 this.locid=locid; 8050 this.excratesrc=excratesrc; 8051 this.excratedt=excratedt; 8052 this.currlist=currlist; 8053 this._config = config?config:{} //flag coverage: hide coverage if true 8054 this.itmgrpid=null; 8055 this.rulesetid=null; 8056 this.rulesetcfg=null; 8057 this.rulesetvarname=null; 8058 this.rulesetformprefixname=null; 8059 this.domainid=domainid; 8060 this.objid=objid; 8061 this.itemisehtml=null; 8062 this.debug_itmdef=0; 8063 this.noxrate_maxday=9999; 8064 8065} 8066cFITMitms.prototype.setRules=function(jsRS,jsR) 8067{ this.RuleSets=jsRS; 8068 if (this.RuleSets!=null && this.RuleSets.DATA.length>0) { 8069 this.rulesetid=JSVCqueryGetValue(this.RuleSets,'IRULESETID',0); 8070 this.rulesetcfg=JSVCqueryGetValue(this.RuleSets,'IRULESETCFG',0); 8071 this.rulesetvarname=JSVCqueryGetValue(this.RuleSets,'VARULESETNAME',0); 8072 } 8073 this.Rules=jsR; 8074 this.RulesCol=new Array(); 8075 8076 for(var i=0;i<this.Rules.COLUMNS.length;i++) { 8077 this.RulesCol[this.Rules.COLUMNS[i]]=i; 8078 } 8079} 8080cFITMitms.prototype.setItms=function(jsIG,jsI,jsID,jsDEFSET,jsDEFIDTL) 8081{ this.ItmGrps=jsIG; 8082 if (this.ItmGrps!=null && this.ItmGrps.DATA.length>0) 8083 this.itmgrpid=JSVCqueryGetValue(this.ItmGrps,'IITMGRPID',0); 8084 this.Itms=jsI; 8085 this.ItmsCol=new Array(); 8086 this.ItmsDtls=jsID; 8087 this.ItmsDtlsCol=new Array(); 8088 for(var i=0;i<this.Itms.COLUMNS.length;i++) { 8089 this.ItmsCol[this.Itms.COLUMNS[i]]=i; 8090 } 8091 8092 for(var i=0;i<this.ItmsDtls.COLUMNS.length;i++) { 8093 this.ItmsDtlsCol[this.ItmsDtls.COLUMNS[i]]=i; 8094 } 8095 this.ItmsDEFSET=jsDEFSET; 8096 this.IdtlDEFSET=(!(this.itmgrpid>0)?jsDEFIDTL:null); 8097} 8098cFITMitms.prototype.clkGrpSel=function(ev,o,nmpref,idtag,rule_ord,rAmtType) 8099{ var html,oframe; 8100 oframe=document.getElementById(this.rulesetformprefixname+"ITMSEL"); 8101 html = ((rAmtType&1)==1?"<div class=clsSVCCtxMenuItem doFunction=\""+this.varname+".updItmState('"+nmpref+"','"+idtag+"',null,"+rule_ord+",1,'Lump-Sum')\">"+JSVClang("Lump-Sum",7214)+"</div>":"")+ 8102 ((rAmtType&2)==2?"<div class=clsSVCCtxMenuItem doFunction=\""+this.varname+".updItmState('"+nmpref+"','"+idtag+"',null,"+rule_ord+",2,'No x Rate')\">"+JSVClang("No x Rate",12063)+"</div>":"")+ 8103 ((rAmtType&8)==8?"<div class=clsSVCCtxMenuItem doFunction=\""+this.varname+".updItmState('"+nmpref+"','"+idtag+"',null,"+rule_ord+",8,'Itemized')\">"+JSVClang("Itemized",12064)+"</div>":""); 8104 oframe.innerHTML=html;//JSVCCtxMenuContent(oframe,html); 8105 JSVCshowCtxMenuEv(ev,oframe,1,0,0); 8106// this.updItmState(nmpref,idtag,o.previousSibling,rule_ord); 8107} 8108cFITMitms.prototype.genRuleSet=function(oDiv,nmpref) 8109{ var flg_optmthwages, flg_showmthwages,value,thisitmdef,valuelist,maxcvg,nmri,sitm,s,rs,ig,r,t,ir,idtl,idtlcnt,idtlnewcnt,idoldlist,idnewlist,oldlist,oldcnt,newlist,newcnt,idtag,sel,v,fs,qty,ratediv,showcvg,dt1,dt2,itmtotal='',ptr_grpname='',noxrate_rateval, noxrate_noval, noxrate_maxno,form_style,slbl,flag_monthcalc; 8110 var igID=(this.itmgrpid!=null?this.itmgrpid:0), rsID=(this.rulesetid!=null?this.rulesetid:0), nmrs=this.rulesetvarname, debug_showda=0; 8111 this.rulesetformprefixname=nmpref; 8112 if(typeof(oDiv)=="string") 8113 { oDiv=document.getElementById(oDiv); 8114 } 8115 s="";sitm=""; 8116 newlist="";newcnt=0; 8117 oldlist="";oldcnt=0; 8118 showcvg=(this.rulesetcfg!=null&this.rulesetcfg>=0 && (this.rulesetcfg&1)>0 ? 0:1); 8119 if(rsID==null || rsID<=0) { 8120 alert("ERR(IG):"+JSVClang("Item Ruleset not found",25739)); 8121 return; 8122 } 8123 s+="<div class=clsSVCCtxMenuBox id=\""+this.rulesetformprefixname+"ITMSEL\" ctxVal=0 onclick=JSVCclickCtxMenu(this) onmouseover=JSVCtoggleCtxMenu(this,event) onmouseout=JSVCtoggleCtxMenu(this,event) style=z-index:10000;width:17ex></div>"; 8124 s+="<table id=\""+nmpref+"ItmContainer\" style=\"border:2px solid silver;width:100%\">"; 8125 s+="<tr style=color:white;background-color:dimgray><td><div style=float:right>"+JSVClang("Selection",12065)+" </div>"+JSVClang("Item Description",12066)+"</td>{{coverage}}<td align=center style=width:25ex>"+JSVClang("Amount",1443)+" ("+this.curr+")</td></tr>"; 8126 s= s.replace(/{{coverage}}/g,this._config.killcoverage?'<td style="width:0px"></td>':"<td align=center style=width:25ex>"+JSVClang("Coverage",10838)+" ("+this.curr+")</td>") 8127 // Run through the rules of the ruleset 8128 for(t=0;t<this.Rules.DATA.length;t++) 8129 { 8130 itmtotal=''; 8131 r=this.Rules.DATA[t]; 8132 8133 thisitmdef=r[this.RulesCol['VAITMDEF']]; 8134 noxrate_maxno=r[this.RulesCol['VARSCVAL2']]; 8135 8136 thisitmdef=(thisitmdef!=null&&thisitmdef!=''?jQuery.parseJSON(thisitmdef):null); 8137 nmri=r[2]; // rule item code 8138 ir=null; 8139 8140 8141 if(igID>0){ 8142 ir=JSVCqueryFindRow(this.Itms,2,r[0]); 8143 } 8144 if(this.ItmsDEFSET!=null &&typeof(this.ItmsDEFSET[nmri.toUpperCase()]) !='undefined' && typeof(this.ItmsDEFSET[nmri.toUpperCase()].ITMAPPLC)!='undefined' && this.ItmsDEFSET[nmri.toUpperCase()].ITMAPPLC==0){
8145 continue; //not applicable, don't need to show item 8146 } 8147 if(ir==null) 8148 { newcnt++; 8149 idtag="N"+newcnt.toString(); 8150 newlist+=(newlist==""?"":",")+idtag; 8151 if(r[this.RulesCol['IDEFITMTYPE']]=='' || r[this.RulesCol['IDEFITMTYPE']]==null) { 8152 sel=0; 8153 } else { 8154 sel=r[this.RulesCol['IDEFITMTYPE']]; 8155 } 8156 } else 8157 { oldcnt++; 8158 idtag=ir[1]; 8159 oldlist+=(oldlist==""?"":",")+idtag; 8160 sel=ir[3]; 8161 if(sel=="")sel=0; 8162 } 8163 if(r[this.RulesCol['VARULEGRPNAME']]!=null&&ptr_grpname!=r[this.RulesCol['VARULEGRPNAME']]) { 8164 ptr_grpname=r[this.RulesCol['VARULEGRPNAME']]; 8165 s+="<tr style=\"background-color:#8080C0\"><td colspan=3 class=header style=font-weight:bold>"+ptr_grpname+"</td></tr>"; 8166 } 8167 s+="<tr class=\"ClsRptTone"+(t%2==0?2:1)+"\"><td>"; 8168 rAmtType=r[5]; 8169 if(rAmtType=="")rAmtType=1; 8170 if(sel==0) 8171 if((rAmtType&1)==1)sel=1 8172 else if((rAmtType&2)==2)sel=2 8173 else if((rAmtType&8)==8)sel=8; 8174 s+="<div style=float:right>"; 8175 s+="<span "+(sel==8?"":"style=display:none")+" ID=ITEMS><input class=clsButton2 value=\"Items...\" type=button onclick=\""+this.varname+".clkItmDtlWindow(event,this,'"+nmpref+"','"+idtag+"',"+t+");\"></span>"; 8176 8177 // noxrate for no 8178 if(ir==null /* new */ && this.ItmsDEFSET!=null && typeof(this.ItmsDEFSET[nmri.toUpperCase()]) !='undefined' && typeof(this.ItmsDEFSET[nmri.toUpperCase()].NVAL2)!='undefined') 8179 noxrate_noval=this.ItmsDEFSET[nmri.toUpperCase()].NVAL2; 8180 else if (ir!=null && !(sel==8&&(r[11]==2||r[11]==4)) && ir[6]!=null) 8181 noxrate_noval=ir[6]; 8182 else 8183 noxrate_noval=''; 8184 8185 //noxrate for max days 8186 if(noxrate_maxno>0) 8187 this.noxrate_maxday=noxrate_maxno; 8188 else if(this.ItmsDEFSET!=null &&typeof(this.ItmsDEFSET[nmri.toUpperCase()]) !='undefined' && typeof(this.ItmsDEFSET[nmri.toUpperCase()].ITMMAXDAY)!='undefined' && this.ItmsDEFSET[nmri.toUpperCase()].ITMMAXDAY>0) 8189 this.noxrate_maxday=this.ItmsDEFSET[nmri.toUpperCase()].ITMMAXDAY; 8190 else 8191 this.noxrate_maxday=9999; 8192 8193 // noxrate for rate 8194 if(ir==null /* new */ && this.ItmsDEFSET!=null && typeof(this.ItmsDEFSET[nmri.toUpperCase()]) !='undefined' && typeof(this.ItmsDEFSET[nmri.toUpperCase()].MNVAL2)!='undefined') 8195 noxrate_rateval=this.ItmsDEFSET[nmri.toUpperCase()].MNVAL2; 8196 else if (ir!=null && ir[8]!=null) 8197 noxrate_rateval=ir[8]; 8198 else 8199 noxrate_rateval=''; 8200 8201 ruleset_info=''; 8202 if(r[this.RulesCol['VARULESETINFO']]!=null&&r[this.RulesCol['VARULESETINFO']]!=''){ 8203 ruleset_info=r[this.RulesCol['VARULESETINFO']]; 8204 nobr=0; 8205 } else { 8206 nobr=1; 8207 } 8208 8209 if(this.ItmsDEFSET!=null && typeof(this.ItmsDEFSET[nmri.toUpperCase()])!='undefined' && typeof(this.ItmsDEFSET[nmri.toUpperCase()].RULESETINFO)!='undefined'){ 8210 rsinfoadd=nobr==0?"<br>"+this.ItmsDEFSET[nmri.toUpperCase()].RULESETINFO:""+this.ItmsDEFSET[nmri.toUpperCase()].RULESETINFO; 8211 ruleset_info=ruleset_info+rsinfoadd; 8212 } 8213 8214 s+="<span "+(sel==2?"":"style=display:none")+" ID=RATE>"+JSVCRateInputGenStr(nmpref+"RT"+idtag,this.curr,JSVClang("Rate Item",7375),0,0,noxrate_noval,noxrate_rateval,"",nmpref+"ITA"+idtag,null,null,null,this.noxrate_maxday)+"</span>"; 8215 s+=" <input type=hidden name=\""+nmpref+"IS"+idtag+"\" value=\""+sel+"\">"; 8216 if(sel>0) { s+="<input type=button class=clsButton "+(sel==rAmtType?"DISABLED style=cursor:none":"")+" onclick=\""+this.varname+".clkGrpSel(event,this,'"+nmpref+"','"+idtag+"',"+t+","+rAmtType+")"+"\" size=12 value=\""+(sel==8?JSVClang("Itemized",12064):(sel==2?JSVClang("No x Rate",12063):JSVClang("Lump-Sum",7214)))+(sel==rAmtType?"":" ▼")+"\"> "; } 8217 s+="</div><span style=font-weight:bold;vertical-align:middle;font-size:125%>"+SVChtm(JSVClang(r[9],r[19]))+(ruleset_info!=null&&ruleset_info!=''?"<br><span style=font-size:80%;font-weight:normal>" + ruleset_info + "</span>":"")+"</span>"; 8218 s+="<INPUT name=\""+nmpref+"RL"+idtag+"\" type=hidden value=\""+r[0]+"\"></td>"; // RuleID 8219 //itm-coverage 8220 if(igID==null||igID==0) { 8221 if (this.ItmsDEFSET!=null && typeof(this.ItmsDEFSET[nmri.toUpperCase()])!='undefined' && typeof(this.ItmsDEFSET[nmri.toUpperCase()].MNVAL3)!='undefined') { 8222 maxcvg=parseFloat(this.ItmsDEFSET[nmri.toUpperCase()].MNVAL3); 8223 maxcvg=(maxcvg>=0?JSVCNumDBtoLOC(maxcvg):""); 8224 } else { 8225 maxcvg=(r[this.RulesCol['MNMAXCVG']]!=null?JSVCNumDBtoLOC(r[this.RulesCol['MNMAXCVG']]):""); 8226 } 8227 } else { 8228 maxcvg=(ir!=null?JSVCNumDBtoLOC(ir[9]):""); 8229 } 8230 8231 if(!this._config.killcoverage) { 8232 s+="<td align=center style=width:25ex><INPUT "+(r[this.RulesCol['IITMCFG']]>0&&( ( r[this.RulesCol['IITMCFG']] & 1 ) == 1)?"READONLY":"")+" "+(showcvg==1?"":"DISABLED style=\"background-color:silver\" ")+"name=\""+nmpref+"CV"+idtag+"\" maxlength=14 value=\""+maxcvg+"\" onblur
8232=\"JSVCCurr(this,null,0);"+this.varname+".fitmItmLimitTot('"+nmpref+"','"+idtag+"');\"></td>"; 8233 } else { 8234 s+="<td align=center style=width:0px><INPUT type='hidden'"+(r[this.RulesCol['IITMCFG']]>0&&( ( r[this.RulesCol['IITMCFG']] & 1 ) == 1)?"READONLY":"")+" "+(showcvg==1?"":"DISABLED style=\"background-color:silver\" ")+"name=\""+nmpref+"CV"+idtag+"\" maxlength=14 value=\""+maxcvg+"\" onblur=\"JSVCCurr(this,null,0);"+this.varname+".fitmItmLimitTot('"+nmpref+"','"+idtag+"');\"></td>"; 8235 } 8236 8237 8238 //itm-total 8239 s+="<td align=center style=width:25ex>"; 8240 s+="<INPUT id=\""+nmpref+"IT"+idtag+"\" name=\""+nmpref+"IT"+idtag+"\" maxlength=14 value=\""+(ir==null?(r[this.RulesCol['MNVAL1']]!=null?JSVCNumDBtoLOC(r[this.RulesCol['MNVAL1']]):""):JSVCNumDBtoLOC(ir[5]))+"\" onblur=\"JSVCCurr(this,null,-9999999999);"+this.varname+".fitmItmLimitTot('"+nmpref+"','"+idtag+"');\" "+(sel==0 || sel==2||sel==8?" READONLY style=background-color:silver":"")+">"; 8241 s+="<INPUT TYPE=hidden id=\""+nmpref+"ITA"+idtag+"\" name=\""+nmpref+"ITA"+idtag+"\" maxlength=14 value=\""+(ir==null?"":JSVCNumDBtoLOC(ir[13]))+"\" onblur=\"JSVCCurr(this,null,-9999999999);"+this.varname+".fitmItmLimitTot('"+nmpref+"','"+idtag+"');\">"; 8242 s+="</td>"; 8243 s+="</tr>"; 8244 8245 if((rAmtType&8)==8) 8246 { 8247 // Itemization allowed 8248 if(r[10]==""||r[10]==null||r[10]=='null') /* Added String null checking for possible null saved as string in db */ 8249 fs=((r[11]==1||r[11]==2||r[11]==4)?this.def_itmdtldef_rate:this.def_itmdtldef_items); 8250 else 8251 fs=eval(r[10]); 8252 /* *** item detail table */ 8253 sitm+=(this.debug_itmdef==1?"OBJ:"+nmpref+"IT"+idtag+"DIV":"")+"<div id=\""+nmpref+"IT"+idtag+"DIV\" INTIDTLRULEORDER=\""+t+"\" INTIDTLPREFIX=\""+nmpref+"IT"+idtag+"\" INTIDTL_NMPREF=\""+nmpref+"\" INTIDTL_IDTAG=\""+idtag+"\" INTIDTLITMDEF=\""+nmri.toUpperCase()+"\" style=display:"+(debug_showda==1?"block":"none")+";width:100%><div style=width:100%>"; 8254 sitm+="<TABLE id=\"RS"+nmrs+"RI"+nmrs+"\" CELLSPACING=1 border=2 class=clsSVCClmTable style=\"WIDTH:100%;padding-left:5px\;text-align:center\"><col width=1px></col>"; 8255 sitm+="<tbody>"; 8256 if(r[11]==2||r[11]==4||r[11]==1||r[11]==8||r[11]==3||r[11]==5) 8257 { 8258 ratediv=null; // reset 8259 if(ir!=null&&r[11]==4&&ir[3]!=8 && this.ItmsDEFSET!=null && typeof(this.ItmsDEFSET[nmri.toUpperCase()])!='undefined' ) 8260 ratediv=this.ItmsDEFSET[nmri.toUpperCase()].NVAL2; 8261 else if(ir!=null) 8262 ratediv=(ir[6]==7?7:(ir[6]==0||ir[6]==-5||ir[6]==-5.5||ir[6]==-6?ir[6]:1)); 8263 else if(ir==null) { /* new */ 8264 if (this.ItmsDEFSET!=null && typeof(this.ItmsDEFSET[nmri.toUpperCase()])!='undefined') { // default 8265 ratediv=this.ItmsDEFSET[nmri.toUpperCase()].NVAL2; // day type **=ratediv 8266 } else { 8267 ratediv=1; // default as daily (per day) 8268 } 8269 } 8270 sitm+="<tr><td align=left colspan="+(fs.length+2)+">"; 8271 if(r[11]==4) { 8272 if(ir==null /* new */ && this.ItmsDEFSET!=null && typeof(this.ItmsDEFSET[nmri.toUpperCase()].IVAL2)!='undefined') 8273 value=this.ItmsDEFSET[nmri.toUpperCase()].IVAL2; 8274 else if (ir!=null && ir[21]!=null) 8275 value=ir[21]; 8276 else 8277 value=''; 8278 form_style=0; 8279 if(this.ItmsDEFSET!=null && typeof(this.ItmsDEFSET[nmri.toUpperCase()])!='undefined' && typeof(this.ItmsDEFSET[nmri.toUpperCase()].ITM_DAYBALCHG)!='undefined' && this.ItmsDEFSET[nmri.toUpperCase()].ITM_DAYBALCHG==1) 8280 form_style=1; // allow change 8281 sitm+="<div style=\"font-weight:bold;margin-bottom:10px\" for=\""+nmpref+"RT"+idtag+"ITMDTLFLAG_DAYBALCHG\"><input "+((value&4)==4?"CHECKED":"")+" type=checkbox id=\""+nmpref+"RT"+idtag+"ITMDTLFLAG_DAYBALCHG\" name=\""+nmpref+"RT"+idtag+"ITMDTLFLAG_DAYBALCHG\" CALCTYPE=\"DAYBALCHG\" value=4 onclick=\""+(form_style==0?"return false;":"")+this.varname+".dayClmBalAdjustmentUpdate(this)\" \"> Day Claim Balance Adjustment "+(form_style==0?"(Require Permission)":"")+"</div>"; 8282 } 8283 if(r[11]==1) { 8284 sitm+="<div class=clsColorNote style=font-size:10px;padding:5px>Note:<br>"; 8285 sitm+="- Half monthly wages = maximum wages RM165/- is used for MC calculation<br>"; 8286 sitm+="- For period of disability less than 14 days, no compensation is payable for the first 4 days of disability in accordance with Section 4(2)(a) of Workmen Compensation Act 1952.</div>"; 8287 } 8288 if(r[11]==8) { 8289 if(ir==null /* new */ && this.ItmsDEFSET!=null && typeof(this.ItmsDEFSET[nmri.toUpperCase()])!='undefined') 8290 value=this.ItmsDEFSET[nmri.toUpperCase()].DTVAL1; // coverage period from 8291 else 8292 value=(ir!=null?ir[this.ItmsCol['DTVAL1']]:''); 8293 sitm+="<b>
8293Coverage Period from</b> <input name=\""+nmpref+"RT"+idtag+"DTVAL1\" CHKNAME=\"Coverage Period From\" CHKREQUIRED READONLY onblur=\"ObjDate(this);\" size=15 value=\""+(value!=null?value:'')+"\"> "; 8294 if(ir==null /* new */ && this.ItmsDEFSET!=null && typeof(this.ItmsDEFSET[nmri.toUpperCase()])!='undefined') 8295 value=this.ItmsDEFSET[nmri.toUpperCase()].DTVAL2; // coverage period to 8296 else 8297 value=(ir!=null?ir[this.ItmsCol['DTVAL2']]:''); 8298 sitm+="<b>to</b> <input name=\""+nmpref+"RT"+idtag+"DTVAL2\" CHKNAME=\"Coverage Period To\" CHKREQUIRED READONLY onblur=\"ObjDate(this);\" size=15 value=\""+(value!=null?value:'')+"\">"; 8299 } 8300 if(r[11]==2||r[11]==4||r[11]==3) { 8301 sitm+="<div><select ORIGVAL="+ratediv+" "+(thisitmdef!=null && typeof(thisitmdef['NVAL2'].REQ)!='undefined' && parseInt(thisitmdef['NVAL2'].REQ)==1?"CHKREQUIRED":"")+" name=\""+nmpref+"RT"+idtag+"RATEDIV\" onchange=\""+ (r[11]==4?this.varname+".popDailyWages(this,this.parentNode.nextSibling.nextSibling.lastChild,this.parentNode.nextSibling.nextSibling.lastChild.childNodes[2].firstChild,this.nextSibling,this.parentNode.nextSibling.childNodes[0]);":"")+(r[11]==3?"this.nextSibling.nextSibling.innerHTML='Rate';":r[11]==4?"this.nextSibling.nextSibling.innerHTML=(this.value==7?'Weekly Rate':'Daily Rate');":"this.nextSibling.innerHTML=(this.value==7?'Weekly Rate: ':'Daily Rate:');")+"DoReq(this);\">"; 8302 if(r[11]==3) { 8303 if (thisitmdef!=null && thisitmdef!='' && typeof(thisitmdef['NVAL2']!='undefined') && typeof(thisitmdef['NVAL2'].OPTITEM)!='undefined' && thisitmdef['NVAL2'].OPTITEM!='') 8304 sitm+=JSVCgenOptions(thisitmdef['NVAL2'].OPTITEM,"|",ratediv); 8305 else 8306 sitm+=JSVCgenOptions("| ","|",ratediv); 8307 } 8308 else 8309 sitm+="<option value=1>Daily (7 Days)<option value=-5"+((ratediv==-5)?" SELECTED":"")+">Daily (5 Weekdays)<option value=-5.5"+((ratediv==-5.5)?" SELECTED":"")+">Daily (5.5 Weekdays)<option value=-6"+((ratediv==-6)?" SELECTED":"")+">Daily (6 Weekdays)<option value=7"+((ratediv==7)?" SELECTED":"")+">7-day Week"+(r[11]==4?"<option value=0"+((ratediv==0)?" SELECTED":"")+">Selected Day of Weekends":""); 8310 sitm+="</select>"; 8311 } 8312 if (r[11]==4) { 8313 weekendbit=(ir!=null && ir[this.ItmsCol['IVAL1']]!=null?parseInt(ir[this.ItmsCol['IVAL1']]):0); 8314 sitm+="<span style='margin-right:5px;"+(ratediv==0?"display:inline":"display:none")+"' id=\""+nmpref+"RT"+idtag+"CUSWKENDSET\"><input type=\"hidden\" name=\""+nmpref+"RT"+idtag+"CUSWKEND\" value=0><label><input type=\"checkbox\" name=\""+nmpref+"RT"+idtag+"CUSWKEND\" value=1 "+((weekendbit & 1) == 1?"CHECKED":"")+" onclick=\"this.parentNode.parentNode.previousSibling.onchange()\" > Sunday </label><label><input type=\"checkbox\" name=\""+nmpref+"RT"+idtag+"CUSWKEND\" value=2 "+((weekendbit & 2) == 2?"CHECKED":"")+" onclick=\"this.parentNode.parentNode.previousSibling.onchange()\" > Monday </label><label><input type=\"checkbox\" name=\""+nmpref+"RT"+idtag+"CUSWKEND\" value=4 "+((weekendbit & 4) == 4?"CHECKED":"")+" onclick=\"this.parentNode.parentNode.previousSibling.onchange()\" > Tuesday </label><label><input type=\"checkbox\" name=\""+nmpref+"RT"+idtag+"CUSWKEND\" value=8 "+((weekendbit & 8) == 8?"CHECKED":"")+" onclick=\"this.parentNode.parentNode.previousSibling.onchange()\" > Wednesday </label><label><input type=\"checkbox\" name=\""+nmpref+"RT"+idtag+"CUSWKEND\" value=16 "+((weekendbit & 16) == 16?"CHECKED":"")+" onclick=\"this.parentNode.parentNode.previousSibling.onchange()\" > Thursday </label><label><input type=\"checkbox\" name=\""+nmpref+"RT"+idtag+"CUSWKEND\" value=32 "+((weekendbit & 32) == 32?"CHECKED":"")+" onclick=\"this.parentNode.parentNode.previousSibling.onchange()\" > Friday </label><label><input type=\"checkbox\" name=\""+nmpref+"RT"+idtag+"CUSWKEND\" value=64 "+((weekendbit & 64) == 64?"CHECKED":"")+" onclick=\"this.parentNode.parentNode.previousSibling.onchange()\" > Saturday </label></span>"; 8315 } 8316 if(ir!=null&&r[11]==4&&ir[3]!=8&&this.ItmsDEFSET!=null && typeof(this.ItmsDEFSET[nmri.toUpperCase()])!='undefined' && typeof(this.ItmsDEFSET[nmri.toUpperCase()].MNVAL2)!='undefined') 8317 value=this.ItmsDEFSET[nmri.toUpperCase()].MNVAL2; 8318 else if(ir==null /* new */ && this.ItmsDEFSET!=null && typeof(this.ItmsDEFSET[nmri.toUpperCase()])!='undefined' && typeof(this.ItmsDEFSET[nmri.toUpperCase()].MNVAL2)!='undefined') 8319 value=this.ItmsDEFSET[nmri.toUpperCase()].MNVAL2; 8320 else if (ir!=null && ir[8]!=null) 8321 value=ir[8]; 8322 else 8323 value=''; 8324 8325 flg_optmthwages=(ratediv==7?0:1); 8326 if(ir!=null && typeof(ir[14])!='undefined' && ir[14]!=null && ir[14]!='' && typeof(ir[15])!='undefined' && ir[15]!=null && ir[15]!='') 8327 flg_showmthwages=1; 8328 else if (ir==null && this.ItmsDEFSET!=null && typeof(this.ItmsDEFSET[nmri.toUpperCase()])!='undefined' && typeof(this.ItmsDEFSET[nmri.toUpperCase()].NVAL6)!='undefined' && typeof(this.ItmsDEFSET[nmri.toUpperCase()].VAVAL1)!='undefined' && this.ItmsDEFSET[nmri.toUpperCase()].NVAL6!=null && this.ItmsDEFSET[nmri.toUpperCase()].VAVAL1!=null) 8329 flg_showmthwages=1; 8330 else 8331 flg_showmthwages=0; 8332 rate=value; // rate amt **=rate 8333 8334 if(thisitmdef==null || (thisitmdef!=null && typeof(thisitmdef['MNVAL2'])!='undefined')) {
8335 slbl=(r[11]==3?'Rate':(r[11]==2||r[11]==4)?(ratediv==7?'Weekly Rate':'Daily Rate'):(r[11]==5?"Weekly Rate":"Monthly Rate")); 8336 if(r[11]==2||r[11]==4||r[11]==1||r[11]==3||r[11]==5) 8337 sitm+="<b style=margin-left:8px>"+slbl+":</b> <input CHKREQUIRED ORIGVAL=\""+value+"\" "+(flg_showmthwages==1?"READONLY":"")+" CHKNAME=\""+slbl+"\" name=\""+nmpref+"RT"+idtag+"RATEVAL\" type=text onblur=\"JSVCCurr(this);"+ (r[11]==1?"if(this.nextSibling.nextSibling!=null) this.nextSibling.nextSibling.value=(this.value!=''?JSVCNumDBtoLOC("+this.varname+".fitmDtlGetHalfMthRate(JSVCNumLOCtoDB(this.value))):'');this.nextSibling.nextSibling.onblur();":"")+"\" maxlength=14 value=\""+(value!=''?JSVCNumDBtoLOC(value):'')+"\">"; 8338 } 8339 8340 if(r[11]==1) { 8341 if(ir==null /* new */ && this.ItmsDEFSET!=null && typeof(this.ItmsDEFSET[nmri.toUpperCase()].MNVAL4)!='undefined') 8342 value=this.ItmsDEFSET[nmri.toUpperCase()].MNVAL4; 8343 else if (ir!=null && ir[22]!=null) 8344 value=ir[22]; 8345 else 8346 value=''; 8347 value=(value!=''?JSVCNumDBtoLOC(value):''); 8348 sitm+="<label style=font-weight:bold> Half Monthly Rate: </label><input READONLY CHKREQUIRED CHKNAME=\"Half Monthly Rate\" name=\""+nmpref+"RT"+idtag+"ITMMNVAL4\" type=text onblur=JSVCCurr(this) maxlength=14 value=\""+value+"\">"; 8349 8350 /* new object : date started work */ 8351 if(ir==null /* new */ && this.ItmsDEFSET!=null && typeof(this.ItmsDEFSET[nmri.toUpperCase()])!='undefined') 8352 value=this.ItmsDEFSET[nmri.toUpperCase()].DTVAL1; // date started work 8353 else if (ir!=null && ir[this.ItmsCol['DTVAL1']]!=null) 8354 value=ir[this.ItmsCol['DTVAL1']]; 8355 else 8356 value=''; 8357 sitm+="<label style=font-weight:bold> Date Started Work: </label><input CHKREQUIRED CHKNAME=\"Date Started Work\" MRMOBJ=CALDATE name=\""+nmpref+"RT"+idtag+"DTVAL1\" type=text onblur=\"ObjDate(this);\" size=10 value=\""+(value!=null?value:'')+"\"> "; 8358 8359 8360 if(ir==null /* new */ && this.ItmsDEFSET!=null && typeof(this.ItmsDEFSET[nmri.toUpperCase()].NVAL12/*NVAL2*/)!='undefined') 8361 value=this.ItmsDEFSET[nmri.toUpperCase()].NVAL12; 8362 else if (ir!=null && ir[24]!=null) 8363 value=ir[24]; 8364 else 8365 value=''; 8366 value=(value!=''?JSVCNumDBtoLOC(value):''); 8367 sitm+="<br><label style=font-weight:bold> Total Day(s): </label><input READONLY CHKNAME=\"Total Day(s)\" name=\""+nmpref+"RT"+idtag+"ITMNVAL12\" type=text onblur=JSVCCurr(this) size=10 maxlength=5 value=\""+value+"\">"; 8368 8369 if(ir==null /* new */ && this.ItmsDEFSET!=null && typeof(this.ItmsDEFSET[nmri.toUpperCase()].NVAL11/*NVAL2*/)!='undefined') 8370 value=this.ItmsDEFSET[nmri.toUpperCase()].NVAL11; 8371 else if (ir!=null && ir[23]!=null) 8372 value=ir[23]; 8373 else 8374 value=''; 8375 value=(value!=''?JSVCNumDBtoLOC(value):''); 8376 sitm+="<label style=font-weight:bold> Claimable Day(s): </label><input READONLY CHKNAME=\"Claimable Day(s)\" name=\""+nmpref+"RT"+idtag+"ITMNVAL11\" type=text onblur=JSVCCurr(this) size=10 maxlength=5 value=\""+value+"\">"; 8377 } else if (r[11]==3) { 8378 if(ir==null /* new */ && this.ItmsDEFSET!=null && typeof(this.ItmsDEFSET[nmri.toUpperCase()].NVAL3)!='undefined') 8379 value=this.ItmsDEFSET[nmri.toUpperCase()].NVAL3; 8380 else if (ir!=null && ir[this.ItmsCol['NVAL3']]!=null) 8381 value=ir[this.ItmsCol['NVAL3']]; 8382 else 8383 value=''; 8384 value=(value!=''?JSVCNumDBtoLOC(value):''); 8385 sitm+="<label style=font-weight:bold> per </label>"; 8386 if (thisitmdef!=null && thisitmdef!='' && typeof(thisitmdef['NVAL3']!='undefined') && typeof(thisitmdef['NVAL3'].TYPE )!='OPT') { /* selection */ 8387 sitm+="<select "+(thisitmdef!=null && typeof(thisitmdef['NVAL3'].REQ)!='undefined' && parseInt(thisitmdef['NVAL3'].REQ)==1?"CHKREQUIRED":"")+" name=\""+nmpref+"RT"+idtag+"ITMNVAL3\" onchange=\"DoReq(this);\">"; 8388 if (thisitmdef!=null && thisitmdef!='' && typeof(thisitmdef['NVAL3']!='undefined') && typeof(thisitmdef['NVAL3'].OPTITEM)!='undefined' && thisitmdef['NVAL3'].OPTITEM!='') 8389 sitm+=JSVCgenOptions(thisitmdef['NVAL3'].OPTITEM,"|",value); 8390 else 8391 sitm+=JSVCgenOptions("| ","|",value); 8392 sitm+="</select>"; 8393 } else /* free text */ { 8394 sitm+="<input name=\""+nmpref+"RT"+idtag+"ITMNVAL3\" type=text onblur=JSVCCurr(this) size=10 maxlength=5 value=\""+value+"\">"; 8395 } 8396 } 8397 sitm+="</div>"; 8398 if(r[11]==4) { 8399 flag_monthcalc=0; 8400 if(ir==null /* new */ && this.ItmsDEFSET!=null && typeof(this.ItmsDEFSET[nmri.toUpperCase()].IVAL2)!='undefined') 8401 value=this.ItmsDEFSET[nmri.toUpperCase()].IVAL2; 8402 else if (ir!=null && ir[21]!=null) 8403 value=ir[21]; 8404 else 8405 value=''; 8406 if(parseInt(value)>0 && (parseInt(value)&2)==2) flag_monthcalc=1; /*bit2 from ival1 : calc based on month instead of year*/ 8407 //sitm+="<div style=\"font-weight:bold\" for=\""+nmpref+"RT"+idtag+"ITMDTLFLAG\">
8407<input "+(value==1?"CHECKED":"")+" type=checkbox id=\""+nmpref+"RT"+idtag+"ITMDTLFLAG_SPCARG\" name=\""+nmpref+"RT"+idtag+"ITMDTLFLAG\" CALCTYPE=\"SPCARG\" value=1 onclick=\""+this.varname+".disableQtyFields('"+nmpref+"IT"+idtag+"');\" "+(!(ratediv==1)?"DISABLED":"")+"> Special arrangement on Day Claim<input type=\"hidden\" name=\"sleITMDTLSETFLAG\" value=1></div>"; 8408 sitm+="<div style=\"font-weight:bold\" for=\""+nmpref+"RT"+idtag+"ITMDTLFLAG\"><input "+((value&1)==1?"CHECKED":"")+" type=checkbox id=\""+nmpref+"RT"+idtag+"ITMDTLFLAG_SPCARG\" name=\""+nmpref+"RT"+idtag+"ITMDTLFLAG\" CALCTYPE=\"SPCARG\" value=1 onclick=\""+this.varname+".disableQtyFields(this.parentNode.parentNode.parentNode.parentNode.parentNode);\"> Special arrangement on Day Claim<input type=\"hidden\" name=\"sleITMDTLSETFLAG\" value=1></div>"; 8409 sitm+='<div'+(flg_optmthwages==1?' style="display:block"':' style="display:none"')+'>'; 8410 /* v2 */ sitm+='<input '+(flg_showmthwages==1?'CHECKED':'')+' type="checkbox" name=\''+nmpref+'RT'+idtag+'MWCHK\' id="_showmthwgs" value=1 onclick="this.parentNode.previousSibling.previousSibling.firstChild.onchange();">'; // node 0 8411 sitm+='<span for="_showmthwgs" style="font-weight:bold"> Show Monthly Wages (uncheck it if there\'s special arrangement applied for the rate)</span>'; // node 1 8412 sitm+='<div id="CalcMonthlyWages" style="clear:both;margin-bottom:2px;margin-top:2px;display:'+(flg_showmthwages==1?'block':'none')+'">'; // node 2 8413 if(ir==null /* new */ && this.ItmsDEFSET!=null && typeof(this.ItmsDEFSET[nmri.toUpperCase()].NVAL6)!='undefined') 8414 value=this.ItmsDEFSET[nmri.toUpperCase()].NVAL6; 8415 else if (ir!=null && ir[14]!=null) 8416 value=ir[14]; 8417 else 8418 value=''; 8419 sitm+='<div style="font-weight:bold;margin-bottom:3px"><input '+(flag_monthcalc==1?'CHECKED':'')+' type="checkbox" name="'+nmpref+'RT'+idtag+'ITMDTLFLAG" CALCTYPE="MTHCALC" value=2 onclick="this.parentNode.parentNode.parentNode.previousSibling.previousSibling.firstChild.onchange();"> Average of Salary Rate will be calculated based on Monthly instead of Yearly</div>'; 8420 /* begin CalcMonthlyWages */ 8421 sitm+='<div style="float:left;width:12%;font-weight:bold">Days per. Month</div>'; // 1st ch 8422 if(ir!=null&&r[11]==4&&ir[3]!=8&& this.ItmsDEFSET!=null && typeof(this.ItmsDEFSET[nmri.toUpperCase()].NVAL6)!='undefined') { 8423 value=this.ItmsDEFSET[nmri.toUpperCase()].NVAL6; 8424 } 8425 else if(ir==null /* new */ && this.ItmsDEFSET!=null && typeof(this.ItmsDEFSET[nmri.toUpperCase()].NVAL6)!='undefined') 8426 value=this.ItmsDEFSET[nmri.toUpperCase()].NVAL6; 8427 else if (ir!=null && ir[14]!=null) 8428 value=ir[14]; 8429 else 8430 value=''; 8431 sitm+='<div style="float:left;width:88%"><input readonly '+(flg_showmthwages==0?'DISABLED':'')+' CHKNAME="Days Per Month" name="'+nmpref+'RT'+idtag+'DPM" CALCTYPE="DPM" type=text size="5" maxlength=3 value=\"'+(value!=null&&value!=''?JSVCNumDBtoLOC(value,0):'')+'\"></div>'; // 2nd ch 8432 8433 if(ir!=null&&r[11]==4&&ir[3]!=8&& this.ItmsDEFSET!=null && typeof(this.ItmsDEFSET[nmri.toUpperCase()].NVAL6)!='undefined') { 8434 value=this.ItmsDEFSET[nmri.toUpperCase()].VAVAL1; 8435 } 8436 else if(ir==null /* new */ && this.ItmsDEFSET!=null && typeof(this.ItmsDEFSET[nmri.toUpperCase()].VAVAL1)!='undefined') 8437 value=this.ItmsDEFSET[nmri.toUpperCase()].VAVAL1; 8438 else if (ir!=null && ir[15]!=null) 8439 value=ir[15]; 8440 else 8441 value=''; 8442 valuelist=value; 8443 eval("value=["+(value!=''&&value!=''?value:null)+"]"); 8444 sitm+='<div style="float:left;width:10%;font-weight:bold">1st Month</div>'; 8445 sitm+='<div style="float:left;width:15%"><input '+(flg_showmthwages==0?'DISABLED':'')+' CHKNAME="1st Monthly Wages" name="'+nmpref+'RT'+idtag+'MW" CALCTYPE="MW" type=text onblur="JSVCCurr(this);this.parentNode.parentNode.parentNode.previousSibling.previousSibling.firstChild.onchange();" maxlength=14 value=\"'+(typeof(value[0])!='undefined'?JSVCNumDBtoLOC(value[0]):'')+'\"></div>'; 8446 sitm+='<div style="float:left;width:10%;font-weight:bold">2nd Month</div>'; 8447 sitm+='<div style="float:left;width:15%"><input '+(flg_showmthwages==0?'DISABLED':'')+' CHKNAME="2nd Monthly Wages" name="'+nmpref+'RT'+idtag+'MW" CALCTYPE="MW" type=text onblur="JSVCCurr(this);this.parentNode.parentNode.parentNode.previousSibling.previousSibling.firstChild.onchange();" maxlength=14 value=\"'+(typeof(value[1])!='undefined'?JSVCNumDBtoLOC(value[1]):'')+'\"></div>'; 8448 sitm+='<div style="float:left;width:10%;font-weight:bold">3rd Month</div>'; 8449 sitm+='<div style="float:left;width:15%"><input '+(flg_showmthwages==0?'DISABLED':'')+' CHKNAME="3rd Monthly Wages" name="'+nmpref+'RT'+idtag+'MW" CALCTYPE="MW" type=text onblur="JSVCCurr(this);this.parentNode.parentNode.parentNode.previousSibling.previousSibling.firstChild.onchange();" maxlength=14 value=\"'+(typeof(value[2])!='undefined'?JSVCNumDBtoLOC(value[2]):'')+'\"></div>'; 8450 sitm+='<div style="float:left;width:10%;font-weight:bold">4th Month</div>'; 8451 sitm+='<div style="float:left;width:15%"><input '+(flg_showmthwages==0?'DISABLED':'')+' CHKNAME="4th Monthly Wages" name="'+nmpref+'RT'+idtag+'MW" CALCTYPE="MW" type=text onblur="JSVCCurr(this);this.parentNode.parentNode.parentNode.previousSibling.previousSibling.firstChild.onchange();" maxlength=14 value=\"'+(typeof(value[3])!='undefined'?JSVCNumDBtoLOC(value[3]):'')+'\"></div>'; 8452 8453 sitm+='<div style="float:left;width:10%;font-weight:bold">5th Month</div>' 8454 sitm+='<div style="float:left;width:15%"><input '+(flg_showmthwages==0?'DISABLED':'')+' CHKNAME="5th Monthly Wages" name="'+nmpref+'RT'+idtag+'MW" CALCTYPE="MW" type=text onblur="JSVCCurr(this);this.parentNode.parentNode.parentNode.previousSibling.previousSibling.firstChild.onchange();" maxlength=14 value=\"'+(typeof(value[4])!='undefined'?JSVCNumDBtoLOC(value[4]):'')+'\"></div>'; 8455 sitm+='<div style="float:left;width:10%;font-weight:bold">6th Month</div>'; 8456 sitm+='<div style="float:left;width:15%"><input '+(flg_showmthwages==0?'DISABLED':'')+' CHKNAME="6th Monthly Wages" name="'+nmpref+'RT'+idtag+'MW" CALCTYPE="MW" type=text onblur="JSVCCurr(this);this.parentNode.parentNode.parentNode.previousSibling.previousSibling.firstChild.onchange();" maxlength=14 value=\"'+(typeof(value[5])!='undefined'?JSVCNumDBtoLOC(value[5]):'')+'\"></div>'; 8457 sitm+='<div style="float:left;width:10%;font-weight:bold">7th Month</div>'; 8458 sitm+='<div style="float:left;width:15%"><input '+(flg_showmthwages==0?'DISABLED':'')+' CHKNAME="7th Monthly Wages" name="'+nmpref+'RT'+idtag+'MW" CALCTYPE="MW" type=text onblur="JSVCCurr(this);this.parentNode.parentNode.parentNode.previousSibling.previousSibling.firstChild.onchange();" maxlength=14 value=\"'+(typeof(value[6])!='undefined'?JSVCNumDBtoLOC(value[6]):'')+'\"></div>'; 8459 sitm+='<div style="float:left;width:10%;font-weight:bold">8th Month</div>'; 8460 sitm+='<div style="float:left;width:15%"><input '+(flg_showmthwages==0?'DISABLED':'')+' CHKNAME="8th Monthly Wages" name="'+nmpref+'RT'+idtag+'MW" CALCTYPE="MW" type=text onblur="JSVCCurr(this);this.parentNode.parentNode.parentNode.previousSibling.previousSibling.firstChild.onchange();" maxlength=14 value=\"'+(typeof(value[7])!='undefined'?JSVCNumDBtoLOC(value[7]):'')+'\"></div>'; 8461 8462 sitm+='<div style="float:left;width:10%;font-weight:bold">9th Month</div>' 8463 sitm+='<div style="float:left;width:15%"><input '+(flg_showmthwages==0?'DISABLED':'')+' CHKNAME="9th Monthly Wages" name="'+nmpref+'RT'+idtag+'MW" CALCTYPE="MW" type=text onblur="JSVCCurr(this);this.parentNode.parentNode.parentNode.previousSibling.previousSibling.firstChild.onchange();" maxlength=14 value=\"'+(typeof(value[8])!='undefined'?JSVCNumDBtoLOC(value[8]):'')+'\"></div>'; 8464 sitm+='<div style="float:left;width:10%;font-weight:bold">10th Month</div>'; 8465 sitm+='<div style="float:left;width:15%"><input '+(flg_showmthwages==0?'DISABLED':'')+' CHKNAME="10th Monthly Wages" name="'+nmpref+'RT'+idtag+'MW" CALCTYPE="MW" type=text onblur="JSVCCurr(this);this.parentNode.parentNode.parentNode.previousSibling.previousSibling.firstChild.onchange();" maxlength=14 value=\"'+(typeof(value[9])!='undefined'?JSVCNumDBtoLOC(value[9]):'')+'\"></div>'; 8466 sitm+='<div style="float:left;width:10%;font-weight:bold">11st Month</div>'; 8467 sitm+='<div style="float:left;width:15%"><input '+(flg_showmthwages==0?'DISABLED':'')+' CHKNAME="11st Monthly Wages" name="'+nmpref+'RT'+idtag+'MW" CALCTYPE="MW" type=text onblur="JSVCCurr(this);this.parentNode.parentNode.parentNode.previousSibling.previousSibling.firstChild.onchange();
8467" maxlength=14 value=\"'+(typeof(value[10])!='undefined'?JSVCNumDBtoLOC(value[10]):'')+'\"></div>'; 8468 sitm+='<div style="float:left;width:10%;font-weight:bold">12th Month</div>'; 8469 sitm+='<div style="float:left;width:15%"><input '+(flg_showmthwages==0?'DISABLED':'')+' CHKNAME="12th Monthly Wages" name="'+nmpref+'RT'+idtag+'MW" CALCTYPE="MW" type=text onblur="JSVCCurr(this);this.parentNode.parentNode.parentNode.previousSibling.previousSibling.firstChild.onchange();" maxlength=14 value=\"'+(typeof(value[11])!='undefined'?JSVCNumDBtoLOC(value[11]):'')+'\"></div>'; 8470 sitm+='<input type="hidden" size=100 name="'+nmpref+'RT'+idtag+'MWVAL" CALCTYPE="MWVAL" '+(valuelist!=null?'value="'+valuelist+'"':'')+'>'; 8471 /* end CalcMonthlyWages */ 8472 sitm+='</div></div>'; 8473 8474 if((ir==null /* new */ || (ir!=null && ir[3]!=8) ) && this.ItmsDEFSET!=null && typeof(this.ItmsDEFSET[nmri.toUpperCase()])!='undefined') 8475 value=this.ItmsDEFSET[nmri.toUpperCase()].NVAL4; // bal cf (hospitalisation) 8476 else 8477 value=(ir!=null?JSVCNumDBtoLOC(ir[11],2):''); 8478 8479 form_style=0 8480 if(this.ItmsDEFSET!=null && typeof(this.ItmsDEFSET[nmri.toUpperCase()])!='undefined' && typeof(this.ItmsDEFSET[nmri.toUpperCase()].ITM_RESETBALCF)!='undefined' && this.ItmsDEFSET[nmri.toUpperCase()].ITM_RESETBALCF==1) 8481 form_style=1; 8482 //balcf=value; // bal cf **=balcf 8483 sitm+="<table cellpadding=0 cellspacing=2 width=100% border=0><tr><td> </td><td><b>Hospitalisation</b></td><td><b>Outpatient</b></td></tr>"; 8484 sitm+="<tr><td><b>Balance c/f :</b></td><td><input CHKREQUIRED CHKNAME=\"Balance C/F (Hospitalisation)\" name=\""+nmpref+"RT"+idtag+"BALCF_H\" type=text "+(form_style==0?"READONLY":"")+" onblur=JSVC2DP(this) maxlength=4 size=5 value=\""+value+"\"></td>"; 8485 if((ir==null /* new */ || (ir!=null && ir[3]!=8) ) && this.ItmsDEFSET!=null && typeof(this.ItmsDEFSET[nmri.toUpperCase()])!='undefined') 8486 value=this.ItmsDEFSET[nmri.toUpperCase()].NVAL7; // bal cf (outpatient) 8487 else 8488 value=(ir!=null?JSVCNumDBtoLOC(ir[17],2):''); 8489 sitm+="<td><input CHKREQUIRED CHKNAME=\"Balance C/F (Outpatient)\" name=\""+nmpref+"RT"+idtag+"BALCF_O\" type=text "+(form_style==0?"READONLY":"")+" onblur=JSVC2DP(this) maxlength=4 size=5 value=\""+value+"\"></td></tr>"; 8490 8491 if((ir==null /* new */ || (ir!=null && ir[3]!=8) ) && this.ItmsDEFSET!=null && typeof(this.ItmsDEFSET[nmri.toUpperCase()])!='undefined') 8492 value=this.ItmsDEFSET[nmri.toUpperCase()].NVAL5; // bal full ent 8493 else 8494 value=(ir!=null?JSVCNumDBtoLOC(ir[12],2):''); 8495 //balfpent=value; // bal full ent **=balfpent 8496 sitm+="<tr><td><b>Full Pay Entitlement :</b></td><td><input "+(form_style==0?"READONLY":"")+" CHKREQUIRED CHKNAME=\"Full Pay Entitlement\" name=\""+nmpref+"RT"+idtag+"BALFPENT_H\" type=text onblur=JSVC2DP(this) maxlength=4 size=5 value=\""+value+"\"></td>"; 8497 8498 if((ir==null /* new */ || (ir!=null && ir[3]!=8) ) && this.ItmsDEFSET!=null && typeof(this.ItmsDEFSET[nmri.toUpperCase()])!='undefined') 8499 value=this.ItmsDEFSET[nmri.toUpperCase()].NVAL8; // bal full ent 8500 else 8501 value=(ir!=null?JSVCNumDBtoLOC(ir[18],2):''); 8502 sitm+="<td><input "+(form_style==0?"READONLY":"")+" CHKREQUIRED CHKNAME=\"Full Pay Entitlement\" name=\""+nmpref+"RT"+idtag+"BALFPENT_O\" type=text onblur=JSVC2DP(this) maxlength=4 size=5 value=\""+value+"\"></td></tr>"; 8503 // half pay entitle 8504 value=(ir!=null?ir[10]:""); 8505 sitm+="<tr><td><b>Half Pay Entitlement :</b></td><td colspan=2><select CHKREQUIRED CHKNAME=\"Half Pay Entitlement\" name=\""+nmpref+"RT"+idtag+"FACENTLEFT\"><option value=\"0.66667\" "+(value==0.66667?"SELECTED":"")+">2/3 Pay of Day left x Daily Rate</select></td></tr>"; 8506 8507 form_style=0; 8508 if(this.ItmsDEFSET!=null && typeof(this.ItmsDEFSET[nmri.toUpperCase()])!='undefined' && typeof(this.ItmsDEFSET[nmri.toUpperCase()].ITM_DAYBALCHG)!='undefined' && this.ItmsDEFSET[nmri.toUpperCase()].ITM_DAYBALCHG==1) 8509 form_style=1; // allow change 8510 value=(ir!=null && ir[23]!=null ?JSVCNumDBtoLOC(ir[23],2):""); 8511 sitm+="<tr id=\""+nmpref+"RT"+idtag+"ENTADJDATA\"><td><b>Day Claim Adjustment :</b></td><td><input "+(form_style==0?"READONLY":"")+" CHKREQUIRED CHKNAME=\"Day Claim Adjustment\" name=\""+nmpref+"RT"+idtag+"ITMNVAL11\" type=text onblur=JSVC2DP(this,-999,999) maxlength=4 size=5 value=\""+value+"\"></td>"; 8512 value=(ir!=null && ir[24]!=null ?JSVCNumDBtoLOC(ir[24],2):""); 8513 sitm+="<td><input "+(form_style==0?"READONLY":"")+" CHKREQUIRED CHKNAME=\"Day Claim Adjustment\" name=\""+nmpref+"RT"+idtag+"ITMNVAL12\" type=text onblur=JSVC2DP(this,-999,999) maxlength=3 size=5 value=\""+value+"\"></td></tr>"; 8514 8515 //Balance Left 8516 value=(ir!=null?JSVCNumDBtoLOC(ir[19],2):''); 8517 sitm+="<tr><td><b>Total Claim Days :</b></td><td><input READONLY CHKNAME=\"Total Claim Days\" name=\""+nmpref+"RT"+idtag+"ENTLEFT_H\" type=text onblur=JSVC2DP(this,0,999) maxlength=4 size=5 value=\""+value+"\"></td>"; 8518 value=(ir!=null?JSVCNumDBtoLOC(ir[20],2):''); 8519 sitm+="<td><input READONLY CHKNAME=\"Total Claim Days\" name=\""+nmpref+"RT"+idtag+"ENTLEFT_O\" type=text onblur=JSVC2DP(this,0,999) maxlength=4 size=5 value=\""+value+"\"></td></tr>"; 8520 8521 // remarks 8522 value=(ir!=null&&ir[7]!=null?ir[7]:''); 8523 sitm+="<tr><td><b>Remarks :</b></td><td colspan=2><input CHKNAME=\"Remarks\" name=\""+nmpref+"RT"+idtag+"VADESC\" type=text onblur=DoReq(this) maxlength=200 style=width:100% value=\""+value+"\"></td></tr>"; 8524 8525 sitm+="</table>"; 8526 } 8527 sitm+="</td></tr>"; 8528 } // endif : r[11]==2||r[11]==4||r[11]==1||r[11]==8||r[11]==3||r[11]==5 8529 sitm+="</tbody>"; 8530 sitm+="<tbody>"; // 2nd tbody for header 8531 // generate data listing for itemize item (showing header) 8532 sitm+="<tr class=clsDetailSmallTitle><td style=width:4ex>No</td>"; 8533 r["ITMDTLDEF"]=fs; 8534 for (v=0;v<fs.length;v++) { 8535 sitm+="<td style=text-align:center>"+SVChtm(fs[v].COLNAME)+"</td>"; 8536 } 8537 sitm+="<td>Del?</td></tr>"; 8538 sitm+="</tbody>"; 8539 sitm+="<tbody>"; // 3rd tbody for header 8540 idtlcnt=0;idtlnewcnt=0;idoldlist="";idnewlist=""; 8541 for(v=0;v<this.ItmsDtls.DATA.length;v++) 8542 { idtl=this.ItmsDtls.DATA[v]; 8543 if(ir==null /* new */) { 8544 if (idtl[27]==r[0]) // matching with ruleid 8545 { 8546 idtlcnt++; 8547 sitm+=this.genItmDtlStr(idtlcnt,idtl,nmpref+"IT"+idtag+"E"+idtl[1],t); 8548 } 8549 } else { // existing 8550 if(idtl[0]==ir[1]) // this.itmdtl[IITMID] vs this.items[IITMID] ; ir[2]=IRULEID ; itmdtl[0]=IITMID ; itmdtl[27]=iRULEID ; itmdtl[1]=IITMDTLID 8551 { 8552 idtlcnt++; 8553 sitm+=this.genItmDtlStr(idtlcnt,idtl,nmpref+"IT"+idtag+"E"+idtl[1],t); 8554 idoldlist+=(idoldlist==""?"":",")+idtl[1]; 8555 } else if(ir!=null && idtl[27]==ir[2]) { 8556 idtlcnt++; 8557 sitm+=this.genItmDtlStr(idtlcnt,idtl,nmpref+"IT"+idtag+"E"+idtl[1],t); 8558 } 8559 } 8560 } 8561 for(v=0;v<this.Itms.DATA.length;v++) // get item total 8562 { 8563 if(idtag==this.Itms.DATA[v][1] && this.Itms.DATA[v][3]==8) { 8564 itmtotal=this.Itms.DATA[v][13]; 8565 break; 8566 } 8567 } 8568 sitm+="</tbody>"; 8569 sitm+="</table>"; 8570 sitm+="<INPUT type=hidden name=\""+nmpref+"IT"+idtag+"OL\" value=\""+idoldlist+"\"><input type=hidden id=\""+nmpref+"IT"+idtag+"TOT\" value=\""+JSVCNumDBtoLOC(itmtotal)+"\"><INPUT type=hidden name=\""+nmpref+"IT"+idtag+"NL\" value=\""+idnewlist+"\"></div></div>"; 8571 8572 } // endif : (rAmtType&8)==8 8573 //console.log(nmri.toUpperCase()); 8574 } 8575 s+="</table>"+sitm; 8576 s+="<input type=hidden name=\""+nmpref+"rsID\" value=\""+rsID+"\">"; 8577 s+="<input type=hidden name=\""+nmpref+"igID\" value=\""+igID+"\">"; 8578 s+="<input type=hidden name=\""+nmpref+"newlist\" value=\""+newlist+"\">"; 8579 s+="<input type=hidden name=\""+nmpref+"oldlist\" value=\""+oldlist+"\">"; 8580 if(oDiv!=null) 8581 { 8582 oDiv.innerHTML=s; 8583 /*oDiv=oDiv.getElementsByTagName('INPUT'); 8584 for(idtlcnt=0;idtlcnt<oDiv.length;idtlcnt++) { 8585 MRMPreprocessFormItem(oDiv[idtlcnt],0); 8586 }*/ 8587 } 8588 8589 // predefine item details 8590 if(this.IdtlDEFSET!=null) { 8591 for(var itmdef in this.IdtlDEFSET) { 8592 //console.log(this.IdtlDEFSET[itmdef]); 8593 for(v=0;v<this.IdtlDEFSET[itmdef].length;v++) { 8594 //console.log(this.IdtlDEFSET[itmdef][v]); 8595 this.initItmDtlRow(itmdef,this.IdtlDEFSET[itmdef][v]); 8596 } 8597 } 8598 } 8599 8600 this.refreshItmDtl(oDiv); // refresh state of the itmdtl behaviour 8601 return s; 8602}
8603cFITMitms.prototype.refreshItmDtl=function(oDiv) { 8604 var obj=null, objs=null; 8605 /*if(itmdtltype==4)*/ 8606 this.disableQtyFields(oDiv); // refresh state of the itmdtl behaviour 8607 obj=oDiv.getElementsByTagName("INPUT"); 8608 for(var t2=0;t2<obj.length;t2++) // check every column of the row 8609 { 8610 if(JSVCstrEndWith(obj[t2].id,"ITMDTLFLAG_DAYBALCHG") && objs==null) objs=obj[t2]; 8611 } 8612 if(objs!=null) this.dayClmBalAdjustmentUpdate(objs); 8613} 8614cFITMitms.prototype.disableArea=function(obj,dis) { 8615 var obj2,i; 8616 obj.disabled=(dis==1?true:false); 8617 DoReq(obj); 8618 obj2=obj.getElementsByTagName("INPUT"); 8619 for(i=0;i<obj2.length;i++) { 8620 obj2[i].disabled=(dis==1?true:false); 8621 DoReq(obj2[i]); 8622 } 8623 obj2=obj.getElementsByTagName("SELECT"); 8624 for(i=0;i<obj2.length;i++) { 8625 obj2[i].disabled=(dis==1?true:false); 8626 DoReq(obj2[i]); 8627 } 8628 obj2=obj.getElementsByTagName("TEXTAREA"); 8629 for(i=0;i<obj2.length;i++) { 8630 obj2[i].disabled=(dis==1?true:false); 8631 DoReq(obj2[i]); 8632 } 8633} 8634 8635cFITMitms.prototype.dayClmBalAdjustmentUpdate=function(obj) { 8636 var chk=(obj!=null && obj.checked==true?1:0); 8637 var objcelladj;objcell=obj.parentNode, objitm_settings=obj.parentNode.parentNode, objitm_itmdtls=objitm_settings.parentNode.parentNode.parentNode.parentNode; 8638 var objitm_itmdtls_itmlisting=objitm_settings.parentNode.parentNode.parentNode.tBodies[2]; 8639 //alert(objitm_itmdtls_itmlisting.innerHTML); 8640 //objitm_itmdtls.style='border:2px solid red'; 8641 8642 var objcelladj=this.getObjEndWithId(objitm_settings,'TR','ENTADJDATA',0); 8643 var objratesel=this.getObjEndWithName(objitm_settings,'SELECT','RATEDIV',0); 8644 var objrateval=this.getObjEndWithName(objitm_settings,'INPUT','RATEVAL',0); 8645 var objrmk=this.getObjEndWithName(objitm_settings,'INPUT','VADESC',0); 8646 if(chk==1) { 8647 /*if( objitm_itmdtls_itmlisting.rows.length==0 || confirm(JSVClang("Adjustment on Day Claim Balance will remove the Medical leave items? Click OK to confirm.",29436)) ) 8648 {*/ 8649 if(objratesel!=null && objratesel.getAttribute('ORIGVAL')!=null && objratesel.getAttribute('ORIGVAL')!='') { 8650 objratesel.value=parseInt(objratesel.getAttribute('ORIGVAL')); 8651 objratesel.onchange(); 8652 } 8653 if(objrateval!=null && objrateval.getAttribute('ORIGVAL')!=null && objrateval.getAttribute('ORIGVAL')!='') { 8654 objrateval.value=objrateval.getAttribute('ORIGVAL'); 8655 objrateval.onblur(); 8656 } 8657 this.disableArea(objcell.nextSibling,1); 8658 this.disableArea(objcell.nextSibling.nextSibling,1); 8659 this.disableArea(objcell.nextSibling.nextSibling.nextSibling,1); 8660 this.disableArea(objcelladj,0); 8661 JSVCshow(objcelladj,1); 8662 JSVCshow(objitm_itmdtls_itmlisting,0); 8663 if(objrmk!=null) { 8664 objrmk.setAttribute('CHKREQUIRED',1); 8665 objrmk.onblur(); 8666 } 8667 8668/* while(objitm_itmdtls_itmlisting.rows.length>0) { 8669 objitm_itmdtls_itmlisting.deleteRow(0); 8670 } 8671 } 8672 else 8673 obj.checked=false; 8674*/ 8675 //obj.nextSibling.nextSibling.nextSibling.style="border:2px solid red"; 8676 //JSVCSetDisabledList(new Array(obj.nextSibling.nextSibling.nextSibling),1); 8677 //JSVCSetDisabledList(new Array(obj.nextSibling.nextSibling.nextSibling.nextSibling),1); 8678 } else { 8679 this.disableArea(objcell.nextSibling,0); 8680 this.disableArea(objcell.nextSibling.nextSibling,0); 8681 this.disableArea(objcell.nextSibling.nextSibling.nextSibling,0); 8682 this.disableArea(objcelladj,1); 8683 JSVCshow(objcelladj,0); 8684 JSVCshow(objitm_itmdtls_itmlisting,1); 8685 if(objrmk!=null && objrmk.getAttribute('CHKREQUIRED')!=null) { 8686 objrmk.removeAttribute('CHKREQUIRED'); 8687 objrmk.onblur(); 8688 } 8689 //JSVCSetDisabledList(new Array(obj.nextSibling.nextSibling.nextSibling),0); 8690 //JSVCSetDisabledList(new Array(obj.nextSibling.nextSibling.nextSibling.nextSibling),0); 8691 } 8692} 8693cFITMitms.prototype.calcCustomWkendBit=function(obj) { 8694 var thebit=0;count=0,i=0,arrret=new Array(); 8695 obj=obj.getElementsByTagName('INPUT'); 8696 if(obj!=null && obj.length>0) { 8697 for(i=0;i<obj.length;i++) { 8698 if(obj[i].type=='checkbox' && obj[i].disabled==false && obj[i].checked==true) 8699 count++; 8700 thebit=thebit+count; 8701 } 8702 } 8703//alert(count); 8704 arrret['bit']=thebit; 8705 arrret['count']=count; 8706 return arrret; 8707} 8708cFITMitms.prototype.popDailyWages=function(obj1,obj2,obj3,obj4,obj5) { // obj1 = selection of working days basis, obj2 = set of "monthly basis", obj3 = obj's days per month, obj4 = set of day of weekend selection (checkboxs) in span tag, obj5 = chkbox 8709 var orate=obj1.parentNode.lastChild,chk=obj2.parentNode.firstChild.checked,daypermth='',weekendbit,weekendtot,retarr,numworkday; 8710 //if(obj4!=null) obj4.style.display=(obj1.value==0?'inline':'none'); 8711 if(obj4!=null) { 8712 if(obj1.value==0) { // custom 8713 obj4.style.display='inline'; 8714 JSVCSetDisabledList([obj4],0); 8715 retarr=this.calcCustomWkendBit(obj4); 8716 weekendbit=retarr['bit']; 8717 weekendtot=retarr['count']; 8718 } else { 8719 obj4.style.display='none'; 8720 JSVCSetDisabledList([obj4],1); 8721 weekendbit=0;weekendtot=0; 8722 } 8723 } 8724 //alert(weekendbit + ' vs ' + weekendtot); 8725 if (chk==true) 8726 { 8727 switch (parseFloat(obj1.value)) 8728 { 8729 case 1: // 7 working days 8730 daypermth=31;numworkday=7; 8731 break; 8732 case -5: // 5 working days 8733 daypermth=22;numworkday=5; 8734 break; 8735 case -5.5: // 5.5 working days 8736 daypermth=24;numworkday=5.5; 8737 break; 8738 case -6: // 6 working days 8739 daypermth=26;numworkday=6; 8740 break; 8741 case 0: // custom 8742 switch (parseFloat(7-weekendtot)) 8743 {
8744 case 7: // 7 working days 8745 daypermth=31;numworkday=7;break; 8746 case 6: // 6 working days 8747 daypermth=26;numworkday=6;break; 8748 case 5: // 5 working days 8749 daypermth=22;numworkday=5;break; 8750 case 4: // 4 working days 8751 daypermth=16;numworkday=4;break; 8752 case 3: // 3 working days 8753 daypermth=12;numworkday=3;break; 8754 case 2: // 2 working days 8755 daypermth=8;numworkday=2;break; 8756 case 1: // 1 working days 8757 daypermth=4;numworkday=1;break; 8758 default: // 0 working days 8759 daypermth=0;numworkday=0;break; 8760 } 8761 break; 8762 default: 8763 daypermth='';numworkday=''; 8764 } 8765 obj3.value=daypermth; 8766 this.calcMonthlyWages(obj2,orate,numworkday,daypermth); 8767 } 8768 flgoptmth=(parseFloat(obj1.value)==7?0:1); 8769 flgshwmth=(flgoptmth==1&&chk==true?1:0); 8770 if(orate!=null) { 8771 orate.readOnly=(flgoptmth==1&&flgshwmth==1?true:false); 8772 } 8773 // enable/disable monthly basis entries 8774 JSVCSetDisabledList(JSVCGetFormElementsArray(obj2.parentNode),(flgoptmth==1?0:1)); 8775 JSVCSetDisabledList(JSVCGetFormElementsArray(obj2),(flgshwmth==1?0:1)); 8776 JSVCshow(obj2.parentNode,(flgoptmth==1?1:0)); 8777 JSVCshow(obj2,(flgshwmth==1?1:0)); 8778 /*if(obj5!=null) { 8779 JSVCSetDisabledList(obj5.id,(parseFloat(obj1.value)==1?0:1)); 8780 }*/ 8781} 8782cFITMitms.prototype.calcMonthlyWages=function(obj1,obj2,numworkday,daypermth) { // obj1 : area consists of monthly salary , obj2 : input value for rate, numworkday : number of working days 8783 var cnt,totmw=0,totcnt=0,totdpm=0,omaxmth,totelem=obj1.getElementsByTagName('INPUT'),arrmw=[],mwval,avgmw,flag_mthcalc=0; 8784 obj1=(totelem!=null?totelem:null); 8785 totelem=(totelem!=null?totelem.length:0); 8786 for(cnt=0;cnt<totelem;cnt++) { 8787 if(obj1[cnt].getAttribute('CALCTYPE')!=null) { 8788 if(obj1[cnt].getAttribute('CALCTYPE').toUpperCase()=='DPM') 8789 totdpm+=(obj1[cnt].value!=''?JSVCNumLOCtoDB(obj1[cnt].value):0); 8790 if(obj1[cnt].getAttribute('CALCTYPE').toUpperCase()=='MTHCALC') /* flag to indicate that the MC claimed based on month rate instead of annual) */ 8791 flag_mthcalc=(obj1[cnt].checked==true?1:0); 8792 if(obj1[cnt].getAttribute('CALCTYPE').toUpperCase()=='MW') { 8793 totmw+=(obj1[cnt].value!=''?JSVCNumLOCtoDB(obj1[cnt].value):0); 8794 if (obj1[cnt].value!='') omaxmth=obj1[cnt]; // mark it 8795 } 8796 if(obj1[cnt].getAttribute('CALCTYPE').toUpperCase()=='MWVAL') mwval=obj1[cnt]; // get the obj 8797 } 8798 } 8799 if(totelem>0 && omaxmth!=null) 8800 { 8801 cnt=totelem; 8802 for(cnt=0; cnt<totelem;cnt++) { 8803 if(obj1[cnt].getAttribute('CALCTYPE')!=null && obj1[cnt].getAttribute('CALCTYPE').toUpperCase()=='MW') { 8804 totcnt++; 8805 if (obj1[cnt].value=='') obj1[cnt].value='0.00'; 8806 arrmw.push(JSVCNumLOCtoDB(obj1[cnt].value)); 8807 if (omaxmth==obj1[cnt]) { 8808 break; 8809 } 8810 } 8811 } 8812 } 8813 if(mwval!=null) { 8814 mwval.value=(arrmw.length>0?arrmw.join(","):''); 8815 } else alert("MRM ERR(-200)"); 8816 /*v1 : obj2.value=parseFloat(totmw)/(parseFloat(totdpm)*parseFloat(totcnt));*/ 8817 avgmw=parseFloat(totmw)/parseFloat(totcnt); 8818 if(parseInt(flag_mthcalc)==1) /* by month */ 8819 obj2.value=parseFloat(avgmw/daypermth); 8820 else 8821 obj2.value=parseFloat(avgmw*/*parseFloat(totcnt)*/12)/(52*parseFloat(numworkday)); 8822 obj2.onblur(); 8823} 8824cFITMitms.prototype.calcItmDtlJS=function(obj,dataname,formula) { 8825 //alert('begin calcItmDtlJS with '+formula+'...'); 8826 /* begin evaluation */ 8827 try { 8828 //vaformula='[mnVAL1]=([mnVAL4]<[mnVAL3]?[mnVAL4]:mnVAL3)', 8829 oDEF=new Array(); 8830 opentagidx=formula.indexOf('[:'); 8831 cntvar=0;limitvar=999; 8832 while(opentagidx>=0 && cntvar<limitvar) { 8833 endtagidx=formula.indexOf(':]'); 8834 def=formula.substring(opentagidx+2,endtagidx); 8835 objptr=document.getElementsByName(def); /* objdef[0] as var */ 8836 // ... alert(objptr ) 8837 if(objptr!=null&&objptr.length>0) objptr=objptr[objptr.length-1]; 8838 //alert('replacing def:'+def + ' vs' + objptr + ' vs ' + objptr.name); 8839 oDEF.push(objptr);idx=oDEF.length-1; 8840 formula=formula.replace("[:"+def+":]","oDEF["+idx+"]"); 8841 // post loop 8842 //alert('post loop for formula:'+formula); 8843 opentagidx=formula.indexOf('[:'); 8844 cntvar++; 8845 console.log(oDEF); 8846 } 8847 //alert('evaluate in js='+formula + ' with oDEF:'+oDEF); 8848 //console.log(oDEF); 8849 //alert(oDEF[0].tagName); 8850 //oDEF[0].style.backgroundColor='yellow'; 8851 eval(formula); 8852 //alert(oDEF[0].value); 8853 } catch (e) { // error on evaluation 8854 //console.log(oDEF); 8855 alert('MRM608: System Error on '+formula+'\n\n'+ e.message); return false; 8856 } 8857} 8858cFITMitms.prototype.calcItmDtl=function(obj,dataname,formula) { 8859 var arreq,arrstm,objptr,idx,objeq,strtocalc,def,valuefirst,last,limit,cnt,hasinput,objdef; 8860 formula=unescape(formula); 8861 //alert('begin calcItmDtl with '+formula+'...'); 8862 if(formula!=null&&formula.substring(0,3)=='JS:') { 8863 //alert(formula.substring(3,formula.length)+'|'); 8864 this.calcItmDtlJS(obj,dataname,formula.substring(3,formula.length)); // calc using JS syntax 8865 return; 8866 } 8867 arrstm=formula.split(','); 8868 if (arrstm.length>1) { 8869 for (var i=0;i<arrstm.length;i++) { 8870 cFITMitms.prototype.calcItmDtl(obj,dataname,arrstm[i]); 8871 } 8872 } else { /* only one */ 8873 arrstm=formula.split('=');
8874 if(arrstm.length==2) /* must be two */ 8875 { 8876 // left object : it comes with bracket "[ ]" 8877 arrstm[0]=arrstm[0].substring(1,arrstm[0].length-1); 8878 objeq=document.getElementsByName(arrstm[0]); 8879 8880 //alert(arrstm[0]); 8881 //alert('formula : '+formula); 8882 if(objeq!=null&&objeq.length>0) { 8883 objeq=objeq[objeq.length-1]; // get the top stack of the obj 8884 } else { 8885 alert('MRM100: '+JSVClang("Error found! Please contact system administrator for assistance",25740)); 8886 } 8887 //right object 8888 strtocalc=arrstm[1]; 8889 // replace the formula variable 8890 first=strtocalc.indexOf('['); 8891 cnt=0;limit=99;hasinput=0; 8892 while(first>=0 && cnt<limit) { 8893 last=strtocalc.indexOf(']'); 8894 def=strtocalc.substring(first+1,last); 8895 objdef=def.split(';'); 8896 objptr=document.getElementsByName(objdef[0]); /* objdef[0] as var */ 8897 if(objptr!=null&&objptr.length>0) objptr=objptr[objptr.length-1]; 8898 if(objptr.value!='') hasinput=1; 8899//alert(objptr.value); 8900 if(objdef.indexOf('REQCAL')>0 && objptr.value=='') { 8901 hasinput=0; 8902 break;// reset as no input provided, that var require num for calc 8903 } 8904 value=(objptr.value!=''?JSVCNumLOCtoDB(objptr.value):0); 8905 strtocalc=eval("strtocalc.replace(\"["+def+"]\", value)"); 8906 first=strtocalc.indexOf('['); 8907 cnt++; 8908 } 8909 // execute the calculation ... 8910 objeq.value=(hasinput==1?JSVCNumDBtoLOC((eval(strtocalc)>=0?eval(strtocalc):0)):''); 8911 } else { 8912 //Something wrong with the formula. 8913 alert('MRM101: '+JSVClang("Error found! Please contact system administrator for assistance",25740)); 8914 } 8915 } 8916} 8917cFITMitms.prototype.getExcRate=function(curid,objexecrate) 8918{ // with this.excratesrc, this.excratedt 8919 if(curid>0) 8920 { 8921 var slcUrl; 8922 if(typeof(objexecrate)=='string') { 8923 objexecrate=document.getElementsByName(objexecrate); 8924 objexecrate=(objexecrate!=null&&objexecrate.length>0?objexecrate[objexecrate.length-1]:null); 8925 } 8926 slcUrl = request.webroot+"index.cfm?fusebox=SVCobj&fuseaction=xml_SVCGetExchangeRate&G=0&S="+(this.excratesrc!=''?this.excratesrc:'')+"&D="+encodeURIComponent((this.excratedt!=''?this.excratedt:''))+"&C="+(curid!=''?curid:'')+"&R=1&global=1&" + request.mtoken; 8927 oxmlhttp = MRMHTTPRequest("GET",slcUrl,null,this.getExcRateLoaded,null,null,null,null,objexecrate); 8928 } 8929} 8930cFITMitms.prototype.getExcRateLoaded=function(oxmlhttp,cvfield) 8931{ 8932 var x,verified=0; 8933 x = oxmlhttp.responseXML.getElementsByTagName("data"); 8934 if(x.length==1) 8935 { 8936 JSVCCleanWhitespace(x[0]); 8937 cvfield.value=x[0].childNodes[1].firstChild.nodeValue; 8938 cvfield.onblur(); 8939 verified = x[0].childNodes[2].firstChild.nodeValue; 8940 }else{ 8941 alert(JSVClang("No rate available for the selected date or currency.",8415)); 8942 cvfield.value=0; 8943 cvfield.onblur(); 8944 } 8945} 8946cFITMitms.prototype.genItmDtlStr=function(cnt,aID,nmpref,rule_ord) 8947{ var strhtml,strtmp,strpart,nmri,cnt,col,fs,strwidth,formtype,formchkreq,formdefaultval,formreadonly,formmrmdate,arropt,cntopt,frmitmnm,docalc,itmdtlfml,itmdtlfml_tmpl,cnty,cntmax,attr,cusdp,itmdtltype,objdce,formdtrangeddt1,tmp; 8948 strhtml=''; 8949 fs=this.Rules.DATA[rule_ord]["ITMDTLDEF"]; 8950 nmri=this.Rules.DATA[rule_ord][2]; 8951 itmdtltype=this.Rules.DATA[rule_ord][this.RulesCol["IITMDTLTYPE"]]; 8952 itmdtlfml_tmpl=this.Rules.DATA[rule_ord][this.RulesCol["VAFORMULA"]]; 8953 itmdtlfml_tmpl=(itmdtlfml_tmpl!=null&&itmdtlfml_tmpl.substring(0,3)!='JS:'?itmdtlfml_tmpl.toUpperCase():itmdtlfml_tmpl); 8954 strhtml += "<tr class=ClsRptTone"+(cnt%2?2:1)+"><td style=width:4ex><input type=input style='background-color:transparent;border:0px;width:20px;text-align:center' READONLY name='"+nmpref+"LINENO' value='"+cnt+"'></td>"; 8955 itmdtlfml=itmdtlfml_tmpl; 8956 8957 if(itmdtlfml!=null) { 8958 cnt=0; 8959 for(col=0;col<fs.length;col++) 8960 { 8961 if(fs[col].ITMS[cnt][0]!=''&& itmdtlfml.indexOf(fs[col].ITMS[cnt][0].toUpperCase())>=0) { 8962 frmitmnm=nmpref+this.RulesFormItmDef[fs[col].ITMS[cnt][0].toUpperCase()]; 8963 //alert('before:'+itmdtlfml + '; check with : '+fs[col].ITMS[cnt][0].toUpperCase()); 8964 itmdtlfml=itmdtlfml.replace(new RegExp(RegExp.escape("["+fs[col].ITMS[cnt][0].toUpperCase()+"]"),"g"), "["+frmitmnm+"]"); 8965 itmdtlfml=itmdtlfml.replace(new RegExp(RegExp.escape("[:"+fs[col].ITMS[cnt][0].toUpperCase()+":]"),"g"), "[:"+frmitmnm+":]"); 8966 itmdtlfml=itmdtlfml.replace(new RegExp(RegExp.escape("{"+fs[col].ITMS[cnt][0].toUpperCase()+"}"),"g"), frmitmnm); 8967 //alert('after:'+itmdtlfml); 8968 } 8969 } 8970 } 8971 formshowmins=0; 8972 //alert('itmdtlfml = ' +itmdtlfml); 8973 itmdtlfml=(itmdtlfml!=null?escape(itmdtlfml):itmdtlfml); 8974 for(col=0;col<fs.length;col++) 8975 { strtmp='';maxwidth=0; 8976 // replace the formula ... 8977 for(cnt=0;cnt<fs[col].ITMS.length;cnt++) 8978 { 8979 strpart='';strwidth=null,cusdp=null; 8980 formtype='TXT'; // default type 8981 frmitmnm=nmpref+this.RulesFormItmDef[fs[col].ITMS[cnt][0].toUpperCase()]; 8982 docalc=(itmdtlfml!=null && itmdtlfml.toUpperCase().indexOf(fs[col].ITMS[cnt][0].toUpperCase() >=0)?1:0); 8983 itmdtlidx=this.ItmsDtlsCol[fs[col].ITMS[cnt][0].toUpperCase()]; 8984 debug_shownm=0; 8985 /* [0] as database name, 8986 [1] value, 8987 [2][3] .. [4][5] .. idx from 2 , with pair, idx in even : definition; idx in odd : how does it behave */ 8988 // default setting... 8989 formchkreq=null; 8990 formmrmdate=1; 8991 formreadonly=0; 8992 formdtrangeddt1=0; 8993 formmoneyallownegative=0; 8994 formdefaultval=null; 8995 8996 8997 if (this.ItmsDEFSET!=null && typeof(this.ItmsDEFSET[nmri.toUpperCase()])!='undefined' && typeof(this.ItmsDEFSET[nmri.toUpperCase()].ITMDTL_MONEY_ALLOW
8997NEGATIVE)!='undefined' && this.ItmsDEFSET[nmri.toUpperCase()].ITMDTL_MONEY_ALLOWNEGATIVE==1) { 8998 formmoneyallownegative=1; 8999 } 9000 if(typeof(fs[col].ITMS[cnt][2])=='string' ) // OPT as select option, CHK as checkbox, TXT as textbox (default) 9001 { 9002 cntmax=fs[col].ITMS[cnt].length; 9003 for(cnty=2;cnty<cntmax;cnty+=2) { 9004 attr=fs[col].ITMS[cnt][cnty]; 9005 //alert(attr + ' = ' + fs[col].ITMS[cnt][cnty+1]); 9006 if(['OPT','OPT2'].indexOf(attr) > -1 && cnty+1<cntmax && fs[col].ITMS[cnt][cnty+1]!=null) { 9007 formtype=attr; 9008 arropt=fs[col].ITMS[cnt][cnty+1].split('||'); // return 999|xxxxx -> 999 as value, xxxxx as text 9009 9010 //#26508: [SG] Sompo - Non-Motor - Wica - Change "Hospital / Clinic Name" to ddl 9011 var topt=arropt[0]; 9012 if(topt.substring(0,1)=='*')//value define in query in dsp_estitms 9013 { 9014 if (this.ItmsDEFSET!=null && typeof(this.ItmsDEFSET[nmri.toUpperCase()]!='undefined')) { 9015 if (typeof(eval('this.ItmsDEFSET[nmri.toUpperCase()].'+topt.substring(1,topt.length)))!='undefined') 9016 topt=eval('this.ItmsDEFSET[nmri.toUpperCase()].'+topt.substring(1,topt.length)); 9017 arropt=topt.split('||'); 9018 } 9019 } 9020 strwidth=fs[col].ITMS[cnt][1]; //obtain width from second param in struct 9021 } 9022 else if(attr=='EXCRATE' && cnty+1<cntmax && fs[col].ITMS[cnt][cnty+1]!=null) 9023 { 9024 //arropt[0]: list of value / select options, 9025 //arropt[1]: obj which show the curreny rate 9026 formtype=attr;arropt=new Array();arropt[0]=this.currlist; 9027 arropt[1]=fs[col].ITMS[cnt][cnty+1];arropt[1]=nmpref+this.RulesFormItmDef[arropt[1].toUpperCase()]; 9028 // special object.. 9029 strpart="<select name=\""+frmitmnm+"\" style=width:100% onchange=\""+this.varname+".getExcRate(this.value,'"+arropt[1]+"')\" >"; 9030 strpart+=JSVCgenOptions("||"+arropt[0],"|",(aID==null?"":(aID[itmdtlidx]!=null?parseInt(aID[itmdtlidx]):'')))+"</select>"; 9031 } 9032 else if (attr.substring(0,9)=='DATERANGE' && cnty+1<cntmax && fs[col].ITMS[cnt][cnty+1]!=null) { 9033 //arropt [0]: min range of the date; [1]: max range of the date; [2]: default if onfocus 9034 formtype=attr.substring(0,9); 9035 formdtrangeddt1=(attr=='DATERANGEDDT1'?1:formdtrangeddt1); // range of date deduct 1 9036 arropt=fs[col].ITMS[cnt][cnty+1].split('|'); 9037 for(cntopt=0;cntopt<arropt.length;cntopt++) { 9038 if(arropt[cntopt]!=null&&arropt[cntopt].substring(0,1)=='*') { 9039 if (this.ItmsDEFSET!=null && typeof(this.ItmsDEFSET[nmri.toUpperCase()]!='undefined')) { 9040 if (typeof(eval('this.ItmsDEFSET[nmri.toUpperCase()].'+arropt[cntopt].substring(1,arropt[cntopt].length)))!='undefined') 9041 arropt[cntopt]=eval('this.ItmsDEFSET[nmri.toUpperCase()].'+arropt[cntopt].substring(1,arropt[cntopt].length)); 9042 } 9043 } 9044 } 9045 } 9046 else if(attr=='SHOWMINS' && cnty+1<cntmax && fs[col].ITMS[cnt][cnty+1]!=null) { 9047 formshowmins=fs[col].ITMS[cnt][cnty+1]; 9048 } 9049 else if (attr=='MRMDATE' && cnty+1<cntmax && fs[col].ITMS[cnt][cnty+1]!=null) { 9050 formmrmdate=fs[col].ITMS[cnt][cnty+1]; 9051 } 9052 else if (attr=='CHKREQUIRED' && cnty+1<cntmax && fs[col].ITMS[cnt][cnty+1]!=null) { 9053 formchkreq=''; 9054 } 9055 else if (attr=='READ') { 9056 formreadonly=1;//formtype=attr; 9057 } 9058 else if (attr=='SIZE' && cnty+1<cntmax && fs[col].ITMS[cnt][cnty+1]!=null && fs[col].ITMS[cnt][cnty+1]!='') { 9059 strwidth=fs[col].ITMS[cnt][cnty+1]; 9060 } 9061 else if (attr=='DP') { // customize numeric DP 9062 cusdp=fs[col].ITMS[cnt][cnty+1]; 9063 } 9064 else if (attr=='FIXEDTEXT') { // Fixed text display 9065 formtype=attr; 9066 } 9067 else if (attr=='PASSED_VAL') { // default value passed from dsp_estitms 9068 formtype=attr; 9069 } 9070 else if (attr=='PASSED_VAL_READ') { // default value passed read onlyfrom dsp_estitms 9071 formtype=attr; 9072 } 9073 else if (attr=='DEFAULTVAL') { // default value 9074 formdefaultval=fs[col].ITMS[cnt][cnty+1]; 9075 } 9076 } 9077 } 9078 switch(fs[col].ITMS[cnt][0].toUpperCase()) 9079 { 9080 case 'VADESC': 9081 case 'VADESC2': 9082 if(formtype=='OPT') 9083 { 9084 strpart = "<select "+(formchkreq==null?"":formchkreq!=''?"CHKNAME=\"Highlighted field\" CHKREQUIRED=\""+formchkreq+"\"":"CHKNAME=\"Highlighted field\" CHKREQUIRED")+" name=\""+frmitmnm+"\" style=width:100% onblur=\"DoReq(this);this.setAttribute('value',this.value)\">"; 9085 for(cntopt=0;cntopt<arropt.length;cntopt++) { 9086 strpart+="<option value=\""+arropt[cntopt].split('|')[0]+"\" "+(arropt[cntopt].split('|')[0]==(aID==null?formdefaultval:""+(aID[itmdtlidx]!=null?aID[itmdtlidx]:''))?"SELECTED":"")+">"+arropt[cntopt].split('|')[1]; 9087 } 9088 strwidth=(strwidth==null?70:strwidth); 9089 } else if (formtype == 'OPT2'){ 9090 var control = function (){ 9091 var 9092 tmp_input = '<input {{txt_attr}}>' 9093 ,tmp_sel = '<select {{sel_attr}}>{{opts}}</select>' 9094 ,tmp_opt = '<option {{opt_attr}}>{{opt_label}}</option>' 9095 ,tmp_opts='' 9096 for (curropt=0;curropt<arropt.length;curropt++){ 9097 var opt_partials = arropt[curropt].split('|') 9098 ,opt_attr = opt_partials[0]==""? '':'value="{{val}}"'.replace(/{{val}}/,opt_partials[0]) 9099 tmp_opts += tmp_opt 9100 .replace(/{{opt_label}}/g,opt_partials[1]) 9101 .replace(/{{opt_attr}}/g,opt_attr) 9102 } 9103 return tmp_input 9104 .replace(/{{txt_attr}}/g, 9105 ['name=',frmitmnm 9106 ,'value="{{val}}"'.replace(/{{val}}/,aID!=null&&aID[itmdtlidx]!=null?aID[itmdtlidx]:'') 9107 ,'style="width:80%"' 9108 ,'onblur="DoReq(this);this.setAttribute(\'value\',this.value)"' 9109 ].join(" ")) 9110 + tmp_input 9111 .replace(/{{txt_attr}}/g, 9112 ['class=clsButton style="width:20%" value="Show" type=button onclick="var el=$(this); if(el.val()==\'Show\'){el.next().show();el.next().next().show();el.val(\'Hide\')}else{el.next().hide();el.next().next().hide();el.val(\'Show\')}"' ] 9113 ) 9114 +tmp_sel 9115 .replace(/{{opts}}/g,tmp_opts) 9116 .replace(/{{sel_attr}}/g, 9117 ['name=',frmitmnm+'sel' 9118 ,'style="width:80%;display:none" onclick="var self=$(this), textbox = self.prev().prev(); textbox.val(self.val())"' 9119 ].join(' ')) 9120 } 9121 strpart = control() 9122 strwidth=(strwidth==null?70:strwidth); 9123 } else if (formtype=='FIXEDTEXT'){ 9124 strpart = SVChtm(fs[col].ITMS[cnt][1]) + "<input name=\""+frmitmnm+"\" type=hidden value=\"" +SVChtm(fs[col].ITMS[cnt][1]) +"\" onblur
9124=\"this.setAttribute('value',this.value)\" >"; 9125 } else { 9126 strpart = "<input "+(formchkreq==null?"":formchkreq!=''?"CHKNAME=\"Highlighted field\" CHKREQUIRED=\""+formchkreq+"\"":"CHKNAME=\"Highlighted field\" CHKREQUIRED")+" name=\""+frmitmnm+"\" style=width:100% maxlength=200 value=\""+(aID==null?"":SVChtm(""+(aID[itmdtlidx]!=null?aID[itmdtlidx]:'')))+"\" onblur=\"DoReq(this);this.setAttribute('value',this.value)\" >"; 9127 strwidth =(strwidth==null?9999:strwidth); 9128 } 9129 break; 9130 case 'VADESC3': 9131 strpart = "<input "+(formchkreq==null?"":formchkreq!=''?"CHKNAME=\"Highlighted field\" CHKREQUIRED=\""+formchkreq+"\"":"CHKNAME=\"Highlighted field\" CHKREQUIRED")+(formreadonly==1?" READONLY ORIGREADONLY ":" ")+" name=\""+frmitmnm+"\" style=width:95% maxlength=100 value=\""+(aID==null?"":SVChtm(""+(aID[itmdtlidx]!=null?aID[itmdtlidx]:'')))+"\" onblur=\"DoReq(this);this.setAttribute('value',this.value)\">"; 9132 strwidth = (strwidth==null?9999:strwidth); 9133 break; 9134 case 'VADESC4': 9135 strpart = "<input "+(formchkreq==null?"":formchkreq!=''?"CHKNAME=\"Highlighted field\" CHKREQUIRED=\""+formchkreq+"\"":"CHKNAME=\"Highlighted field\" CHKREQUIRED")+(formreadonly==1?" READONLY ORIGREADONLY ":" ")+" name=\""+frmitmnm+"\" style=width:95% maxlength=100 value=\""+(aID==null?"":SVChtm(""+(aID[itmdtlidx]!=null?aID[itmdtlidx]:'')))+"\" onblur=\"DoReq(this);this.setAttribute('value',this.value)\">"; 9136 strwidth = (strwidth==null?9999:strwidth); 9137 break; 9138 case 'VADESC5': 9139 strpart = "<input "+(formchkreq==null?"":formchkreq!=''?"CHKNAME=\"Highlighted field\" CHKREQUIRED=\""+formchkreq+"\"":"CHKNAME=\"Highlighted field\" CHKREQUIRED")+(formreadonly==1?" READONLY ORIGREADONLY ":" ")+" name=\""+frmitmnm+"\" style=width:95% value=\""+(aID==null?"":SVChtm(""+(aID[itmdtlidx]!=null?aID[itmdtlidx]:'')))+"\" onblur=\"DoReq(this);this.setAttribute('value',this.value)\">"; 9140 strwidth = (strwidth==null?30:strwidth); 9141 break; 9142 case 'DTDATE1': 9143 tmp=null;tmp=(aID!=null&&aID[itmdtlidx]!=null&&aID[itmdtlidx]!=''?aID[itmdtlidx].split(" "):tmp); //[0]:date value , [1]: time value 9144 strpart = "<input "+(formchkreq==null?"":formchkreq!=''?"CHKNAME=\"Highlighted field\" CHKREQUIRED=\""+formchkreq+"\"":"CHKNAME=\"Highlighted field\" CHKREQUIRED")+(formmrmdate==1?" MRMOBJ=CALDATE ":" ")+(formreadonly==1?" READONLY ORIGREADONLY ":" ")+(formshowmins==1?" SHOWMINS=1 ":" ")+(formdtrangeddt1==1?" DATERANGEMODE=DDT1 ": " ")+(formtype=='DATERANGE'&&arropt[0]!=''?"DTMIN=\""+arropt[0]+"\" ":"")+" "+(formtype=='DATERANGE'&&arropt[1]!=''?"DTMAX=\""+arropt[1]+"\" ":"")+" name=\""+frmitmnm+"\" size=12 maxlength=50 value=\""+(aID==null?"":SVChtm(""+(aID[itmdtlidx]!=null?(tmp.length>=1?tmp[0]:''):'')))+"\" "+(formtype=='DATERANGE'&&typeof(arropt[2])!='undefined'&&arropt[2]!=''?"onfocus=\"if(this.value=='') {this.value='"+arropt[2]+"';this.select() }\"":"")+" onblur=ObjDate(this);this.setAttribute('value',this.value)>"; 9145 if(itmdtltype==3||itmdtltype==9) // with time 9146 strpart+= "<br><input "+(formchkreq==null?"":formchkreq!=''?"CHKNAME=\"Highlighted field\" CHKREQUIRED=\""+formchkreq+"\"":"CHKNAME=\"Highlighted field\" CHKREQUIRED")+(formreadonly==1?" READONLY ORIGREADONLY ":" ")+" name=\""+frmitmnm+"_TM\" size=12 maxlength=50 value=\""+(aID==null?"":SVChtm(""+(aID[itmdtlidx]!=null?(tmp.length>=2?tmp[1]:''):'')))+"\" onblur=ObjTime24(this);this.setAttribute('value',this.value)>"; 9147 strwidth = (strwidth==null?30:strwidth); 9148 break; 9149 case 'DTDATE2': 9150 tmp=null;tmp=(aID!=null&&aID[itmdtlidx]!=null&&aID[itmdtlidx]!=''?aID[itmdtlidx].split(" "):tmp); //[0]:date value , [1]: time value 9151 strpart = "<input "+(formchkreq==null?"":formchkreq!=''?"CHKNAME=\"Highlighted field\" CHKREQUIRED=\""+formchkreq+"\"":"CHKNAME=\"Highlighted field\" CHKREQUIRED")+(formmrmdate==1?" MRMOBJ=CALDATE ":" ")+(formreadonly==1?" READONLY ORIGREADONLY ":" ")+(formshowmins==1?" SHOWMINS=1 ":" ")+(formdtrangeddt1==1?" DATERANGEMODE=DDT1 ": " ")+(formtype=='DATERANGE'&&arropt[0]!=''?"DTMIN=\""+arropt[0]+"\" ":"")+" "+(formtype=='DATERANGE'&&arropt[1]!=''?"DTMAX=\""+arropt[1]+"\" ":"")+" name=\""+frmitmnm+"\" size=12 maxlength=50 value=\""+(aID==null?"":SVChtm(""+(aID[itmdtlidx]!=null?(tmp.length>=1?tmp[0]:''):'')))+"\" "+(formtype=='DATERANGE'&&typeof(arropt[2])!='undefined'&&arropt[2]!=''?"onfocus=\"if(this.value=='') {this.value='"+arropt[2]+"';this.select() }\"":"")+" onblur=ObjDate(this);this.setAttribute('value',this.value)>"; 9152 if(itmdtltype==3||itmdtltype==9) // with time 9153 strpart+= "<br><input "+(formchkreq==null?"":formchkreq!=''?"CHKNAME=\"Highlighted field\" CHKREQUIRED=\""+formchkreq+"\"":"CHKNAME=\"Highlighted field\" CHKREQUIRED")+(formreadonly==1?" READONLY ORIGREADONLY ":" ")+" name=\""+frmitmnm+"_TM\" size=12 maxlength=50 value=\""+(aID==null?"":SVChtm(""+(aID[itmdtlidx]!=null?(tmp.length>
9153=2?tmp[1]:''):'')))+"\" onblur=ObjTime24(this);this.setAttribute('value',this.value)>"; 9154 strwidth = (strwidth==null?30:strwidth); 9155 break; 9156 case 'DTDATE3': 9157 tmp=null;tmp=(aID!=null&&aID[itmdtlidx]!=null&&aID[itmdtlidx]!=''?aID[itmdtlidx].split(" "):tmp); //[0]:date value , [1]: time value 9158 strpart = "<input "+(formchkreq==null?"":formchkreq!=''?"CHKNAME=\"Highlighted field\" CHKREQUIRED=\""+formchkreq+"\"":"CHKNAME=\"Highlighted field\" CHKREQUIRED")+(formmrmdate==1?" MRMOBJ=CALDATE ":" ")+(formreadonly==1?" READONLY ORIGREADONLY ":" ")+(formdtrangeddt1==1?" DATERANGEMODE=DDT1 ": " ")+(formtype=='DATERANGE'&&arropt[0]!=''?"DTMIN=\""+arropt[0]+"\" ":"")+" "+(formtype=='DATERANGE'&&arropt[1]!=''?"DTMAX=\""+arropt[1]+"\" ":"")+" name=\""+frmitmnm+"\" size=12 maxlength=50 value=\""+(aID==null?"":SVChtm(""+(aID[itmdtlidx]!=null?(tmp.length>=1?tmp[0]:''):'')))+"\" "+(formtype=='DATERANGE'&&typeof(arropt[2])!='undefined'&&arropt[2]!=''?"onfocus=\"if(this.value=='') {this.value='"+arropt[2]+"';this.select() }\"":"")+" onblur=ObjDate(this);this.setAttribute('value',this.value)>"; 9159 strwidth = (strwidth==null?30:strwidth); 9160 break; 9161 case 'DTDATE4': 9162 tmp=null;tmp=(aID!=null&&aID[itmdtlidx]!=null&&aID[itmdtlidx]!=''?aID[itmdtlidx].split(" "):tmp); //[0]:date value , [1]: time value 9163 strpart = "<input "+(formchkreq==null?"":formchkreq!=''?"CHKNAME=\"Highlighted field\" CHKREQUIRED=\""+formchkreq+"\"":"CHKNAME=\"Highlighted field\" CHKREQUIRED")+(formmrmdate==1?" MRMOBJ=CALDATE ":" ")+(formreadonly==1?" READONLY ORIGREADONLY ":" ")+(formdtrangeddt1==1?" DATERANGEMODE=DDT1 ": " ")+(formtype=='DATERANGE'&&arropt[0]!=''?"DTMIN=\""+arropt[0]+"\" ":"")+" "+(formtype=='DATERANGE'&&arropt[1]!=''?"DTMAX=\""+arropt[1]+"\" ":"")+" name=\""+frmitmnm+"\" size=12 maxlength=50 value=\""+(aID==null?"":SVChtm(""+(aID[itmdtlidx]!=null?(tmp.length>=1?tmp[0]:''):'')))+"\" "+(formtype=='DATERANGE'&&typeof(arropt[2])!='undefined'&&arropt[2]!=''?"onfocus=\"if(this.value=='') {this.value='"+arropt[2]+"';this.select() }\"":"")+" onblur=ObjDate(this);this.setAttribute('value',this.value)>"; 9164 strwidth = (strwidth==null?30:strwidth); 9165 break; 9166 case 'VAPNO': 9167 case 'VAPNO2': 9168 if(formtype=='OPT') 9169 { 9170 strpart = "<select "+(formchkreq==null?"":formchkreq!=''?"CHKNAME=\"Highlighted field\" CHKREQUIRED=\""+formchkreq+"\"":"CHKNAME=\"Highlighted field\" CHKREQUIRED")+" name=\""+frmitmnm+"\" style=width:100% onblur=\"DoReq(this);$(this).val(this.value);\">"; 9171 for(cntopt=0;cntopt<arropt.length;cntopt++) { 9172 strpart+="<option value=\""+arropt[cntopt].split('|')[0]+"\" "+(arropt[cntopt].split('|')[0]==(aID==null?formdefaultval:""+(aID[itmdtlidx]!=null?aID[itmdtlidx]:''))?"SELECTED":"")+">"+arropt[cntopt].split('|')[1]; 9173 } 9174 strwidth=(strwidth==null?30:strwidth); 9175 } else { 9176 strpart = "<input "+(formchkreq==null?"":formchkreq!=''?"CHKNAME=\"Highlighted field\" CHKREQUIRED=\""+formchkreq+"\"":"CHKNAME=\"Highlighted field\" CHKREQUIRED")+" name=\""+frmitmnm+"\" maxlength=50 value=\""+(aID==null?"":SVChtm(""+(aID[itmdtlidx]!=null?aID[itmdtlidx]:'')))+"\" onblur=\"DoReq(this);this.setAttribute('value',this.value)\">"; 9177 strwidth = (strwidth==null?30:strwidth); 9178 } 9179 break; 9180 /*case 'VAPNO2': 9181 strpart = "<input "+(formchkreq==null?"":formchkreq!=''?"CHKNAME=\"Highlighted field\" CHKREQUIRED=\""+formchkreq+"\"":"CHKNAME=\"Highlighted field\" CHKREQUIRED")+" name=\""+frmitmnm+"\" maxlength=50 value=\""+(aID==null?"":SVChtm(""+(aID[itmdtlidx]!=null?aID[itmdtlidx]:'')))+"\" onblur=\"DoReq(this);this.setAttribute('value',this.value)\">"; 9182 strwidth = (strwidth==null?30:strwidth); 9183 break;*/
9184 case 'MNVAL3': 9185 strpart = "<input "+(formchkreq==null?"":formchkreq!=''?"CHKNAME=\"Highlighted field\" CHKREQUIRED=\""+formchkreq+"\"":"CHKNAME=\"Highlighted field\" CHKREQUIRED")+" "+(formreadonly==1?"READONLY ORIGREADONLY":"")+" name=\""+frmitmnm+"\" style=width:100% onkeypress=\"return "+this.varname+".clkItmDtlEnter(event,this,'"+nmpref+"')\" maxlength=25 onblur=JSVCCurr(this,null,"+(formmoneyallownegative==1?-9999999999:0)+");this.setAttribute('value',this.value);"+(docalc==1?this.varname+".calcItmDtl(this,\""+fs[col].ITMS[cnt][0].toUpperCase()+"\",\""+itmdtlfml+"\")":"")+" value=\""+(aID==null?"":JSVCNumDBtoLOC(aID[itmdtlidx]))+"\">"; 9186 strwidth = (strwidth==null?30:strwidth); 9187 break; 9188 case 'NVAL2': 9189 strpart = "<input "+(formchkreq==null?"":formchkreq!=''?"CHKNAME=\"Highlighted field\" CHKREQUIRED=\""+formchkreq+"\"":"CHKNAME=\"Highlighted field\" CHKREQUIRED")+" "+(formreadonly==1?"READONLY ORIGREADONLY":"")+" name=\""+frmitmnm+"\" style=width:40px maxlength=6 value=\""+(aID==null?(formtype=="READ"?"":/*"1"*/""):JSVCNum(aID[itmdtlidx], /* show DP if necessary */ (aID[itmdtlidx]>=0&&Math.floor(aID[itmdtlidx])!=aID[itmdtlidx]?2:0) ))+"\" onblur=JSVCCurr(this);this.setAttribute('value',this.value);"+(docalc==1?this.varname+".calcItmDtl(this,\""+fs[col].ITMS[cnt][0].toUpperCase()+"\",\""+itmdtlfml+"\")":"")+">"; 9190 strwidth = (strwidth==null?5:strwidth); 9191 break; 9192 case 'NVAL3': 9193 if(formtype=='PASSED_VAL_READ'){ 9194 9195 if(this.ItmsDEFSET!=null && typeof(this.ItmsDEFSET[nmri.toUpperCase()])!='undefined' && typeof(this.ItmsDEFSET[nmri.toUpperCase()].NVAL3)!='undefined') 9196 {default_val = this.ItmsDEFSET[nmri.toUpperCase()].NVAL3; 9197 default_val=(default_val!=''?JSVCNumDBtoLOC(default_val):"");} 9198 else 9199 {default_val = JSVCNumDBtoLOC(null);} 9200 9201 formreadonly=1; 9202 9203 strpart = (strpart==""?"<input "+(formchkreq==null?"":formchkreq!=''?"CHKNAME=\"Highlighted field\" CHKREQUIRED=\""+formchkreq+"\"":"CHKNAME=\"Highlighted field\" CHKREQUIRED")+" "+(formreadonly==1?"READONLY ORIGREADONLY":"")+" name=\""+frmitmnm+"\" style=width:100% onkeypress=\"return "+this.varname+".clkItmDtlEnter(event,this,'"+nmpref+"')\" maxlength=25 onblur="+(cusdp!=null&&cusdp>=0?this.varname+".objToFixed(this,"+cusdp+")":"JSVCCurr(this)")+";this.setAttribute('value',this.value);"+(docalc==1?this.varname+".calcItmDtl(this,\""+fs[col].ITMS[cnt][0].toUpperCase()+"\",\""+itmdtlfml+"\")":"")+" value=\""+(aID==null?default_val:JSVCNumDBtoLOC(aID[itmdtlidx],(cusdp!=null&&cusdp>=0?cusdp:null)))+"\">":strpart); 9204 strwidth = (strwidth==null?30:strwidth); 9205 } 9206 else { 9207 strpart = (strpart==""?"<input "+(formchkreq==null?"":formchkreq!=''?"CHKNAME=\"Highlighted field\" CHKREQUIRED=\""+formchkreq+"\"":"CHKNAME=\"Highlighted field\" CHKREQUIRED")+" "+(formreadonly==1?"READONLY ORIGREADONLY":"")+" name=\""+frmitmnm+"\" style=width:100% onkeypress=\"return "+this.varname+".clkItmDtlEnter(event,this,'"+nmpref+"')\" maxlength=25 onblur="+(cusdp!=null&&cusdp>=0?this.varname+".objToFixed(this,"+cusdp+")":"JSVCCurr(this)")+";this.setAttribute('value',this.value);"+(docalc==1?this.varname+".calcItmDtl(this,\""+fs[col].ITMS[cnt][0].toUpperCase()+"\",\""+itmdtlfml+"\")":"")+" value=\""+(aID==null?"":JSVCNumDBtoLOC(aID[itmdtlidx],(cusdp!=null&&cusdp>=0?cusdp:null)))+"\">":strpart); 9208 strwidth = (strwidth==null?30:strwidth); 9209 } 9210 break; 9211 case 'NVAL4': 9212 strpart = (strpart==""?"<input "+(formchkreq==null?"":formchkreq!=''?"CHKNAME=\"Highlighted field\" CHKREQUIRED=\""+formchkreq+"\"":"CHKNAME=\"Highlighted field\" CHKREQUIRED")+" "+(formreadonly==1?"READONLY ORIGREADONLY":"")+" name=\""+frmitmnm+"\" style=width:100% onkeypress=\"return "+this.varname+".clkItmDtlEnter(event,this,'"+nmpref+"')\" maxlength=25 onblur=JSVCCurr(this);this.setAttribute('value',this.value);"+(docalc==1?this.varname+".calcItmDtl(this,\""+fs[col].ITMS[cnt][0].toUpperCase()+"\",\""+itmdtlfml+"\")":"")+" value=\""+(aID==null?"":JSVCNumDBtoLOC(aID[itmdtlidx]))+"\">":strpart); 9213 strwidth = (strwidth==null?30:strwidth); 9214 break; 9215 case 'NVAL5': 9216 strpart = (strpart==""?"<input "+(formchkreq==null?"":formchkreq!=''?"CHKNAME=\"Highlighted field\" CHKREQUIRED=\""+formchkreq+"\"":"CHKNAME=\"Highlighted field\" CHKREQUIRED")+" "+(formreadonly==1?"READONLY ORIGREADONLY":"")+" name=\""+frmitmnm+"\" style=width:100% onkeypress=\"return "+this.varname+".clkItmDtlEnter(event,this,'"+nmpref+"')\" maxlength=25 onblur=JSVCCurr(this);this.setAttribute('value',this.value);"+(docalc==1?this.varname+".calcItmDtl(this,\""+fs[col].ITMS[cnt][0].toUpperCase()+"\",\""+itmdtlfml+"\")":"")+" value=\""+(aID==null?"":JSVCNumDBtoLOC(aID[itmdtlidx]))+"\">":strpart); 9217 strwidth = (strwidth==null?30:strwidth); 9218 break;
9219 case 'MNVAL1': 9220 strpart = "<input "+(formchkreq==null?"":formchkreq!=''?"CHKNAME=\"Highlighted field\" CHKREQUIRED=\""+formchkreq+"\"":"CHKNAME=\"Highlighted field\" CHKREQUIRED")+" "+(formreadonly==1?"READONLY ORIGREADONLY":"")+" name=\""+frmitmnm+"\" style=width:100% onkeypress=\"return "+this.varname+".clkItmDtlEnter(event,this,'"+nmpref+"')\" maxlength=25 onblur=JSVCCurr(this,null,"+(formmoneyallownegative==1?-9999999999:0)+");this.setAttribute('value',this.value);"+(docalc==1?this.varname+".calcItmDtl(this,\""+fs[col].ITMS[cnt][0].toUpperCase()+"\",\""+itmdtlfml+"\")":"")+" value=\""+(aID==null?"":JSVCNumDBtoLOC(aID[itmdtlidx]))+"\">"; 9221 strwidth = (strwidth==null?30:strwidth); 9222 break; 9223 case 'MNVAL4': 9224 strpart = "<input "+(formchkreq==null?"":formchkreq!=''?"CHKNAME=\"Highlighted field\" CHKREQUIRED=\""+formchkreq+"\"":"CHKNAME=\"Highlighted field\" CHKREQUIRED")+" "+(formreadonly==1?"READONLY ORIGREADONLY":"")+" name=\""+frmitmnm+"\" style=width:100% onkeypress=\"return "+this.varname+".clkItmDtlEnter(event,this,'"+nmpref+"')\" maxlength=25 onblur=JSVCCurr(this,null,"+(formmoneyallownegative==1?-9999999999:0)+");this.setAttribute('value',this.value);"+(docalc==1?this.varname+".calcItmDtl(this,\""+fs[col].ITMS[cnt][0].toUpperCase()+"\",\""+itmdtlfml+"\")":"")+" value=\""+(aID==null?"":JSVCNumDBtoLOC(aID[itmdtlidx]))+"\">"; 9225 strwidth = (strwidth==null?30:strwidth); 9226 break;
9227 case 'MNVAL5': 9228 if(formtype=='PASSED_VAL'){ 9229 9230 if(this.ItmsDEFSET!=null && typeof(this.ItmsDEFSET[nmri.toUpperCase()])!='undefined' && typeof(this.ItmsDEFSET[nmri.toUpperCase()].MNVAL5)!='undefined') 9231 {default_val = this.ItmsDEFSET[nmri.toUpperCase()].MNVAL5; 9232 default_val=(default_val!=''?JSVCNumDBtoLOC(default_val):"");} 9233 else 9234 {default_val = JSVCNumDBtoLOC(null);} 9235 9236 strpart = "<input "+(formchkreq==null?"":formchkreq!=''?"CHKNAME=\"Highlighted field\" CHKREQUIRED=\""+formchkreq+"\"":"CHKNAME=\"Highlighted field\" CHKREQUIRED")+" "+(formreadonly==1?"READONLY ORIGREADONLY":"")+" name=\""+frmitmnm+"\" style=width:100% onkeypress=\"return "+this.varname+".clkItmDtlEnter(event,this,'"+nmpref+"')\" maxlength=25 onblur=JSVCCurr(this,null,"+(formmoneyallownegative==1?-9999999999:0)+");this.setAttribute('value',this.value);"+(docalc==1?this.varname+".calcItmDtl(this,\""+fs[col].ITMS[cnt][0].toUpperCase()+"\",\""+itmdtlfml+"\")":"")+" value=\""+(aID!=null?JSVCNumDBtoLOC(aID[itmdtlidx]):default_val)+"\">"; 9237 strwidth = (strwidth==null?30:strwidth); 9238 } 9239 else{ 9240 strpart = "<input "+(formchkreq==null?"":formchkreq!=''?"CHKNAME=\"Highlighted field\" CHKREQUIRED=\""+formchkreq+"\"":"CHKNAME=\"Highlighted field\" CHKREQUIRED")+" "+(formreadonly==1?"READONLY ORIGREADONLY":"")+" name=\""+frmitmnm+"\" style=width:100% onkeypress=\"return "+this.varname+".clkItmDtlEnter(event,this,'"+nmpref+"')\" maxlength=25 onblur=JSVCCurr(this,null,"+(formmoneyallownegative==1?-9999999999:0)+");this.setAttribute('value',this.value);"+(docalc==1?this.varname+".calcItmDtl(this,\""+fs[col].ITMS[cnt][0].toUpperCase()+"\",\""+itmdtlfml+"\")":"")+" value=\""+(aID==null?"":JSVCNumDBtoLOC(aID[itmdtlidx]))+"\">"; 9241 strwidth = (strwidth==null?30:strwidth); 9242 } 9243 break;
9244 case 'MNVAL6': 9245 strpart = "<input "+(formchkreq==null?"":formchkreq!=''?"CHKNAME=\"Highlighted field\" CHKREQUIRED=\""+formchkreq+"\"":"CHKNAME=\"Highlighted field\" CHKREQUIRED")+" "+(formreadonly==1?"READONLY ORIGREADONLY":"")+" name=\""+frmitmnm+"\" style=width:100% onkeypress=\"return "+this.varname+".clkItmDtlEnter(event,this,'"+nmpref+"')\" maxlength=25 onblur=JSVCCurr(this,null,"+(formmoneyallownegative==1?-9999999999:0)+");this.setAttribute('value',this.value);"+(docalc==1?this.varname+".calcItmDtl(this,\""+fs[col].ITMS[cnt][0].toUpperCase()+"\",\""+itmdtlfml+"\")":"")+" value=\""+(aID==null?"":JSVCNumDBtoLOC(aID[itmdtlidx]))+"\">"; 9246 strwidth = (strwidth==null?30:strwidth); 9247 break; 9248 case 'MNVAL7': 9249 strpart = "<input "+(formchkreq==null?"":formchkreq!=''?"CHKNAME=\"Highlighted field\" CHKREQUIRED=\""+formchkreq+"\"":"CHKNAME=\"Highlighted field\" CHKREQUIRED")+" "+(formreadonly==1?"READONLY ORIGREADONLY":"")+" name=\""+frmitmnm+"\" style=width:100% onkeypress=\"return "+this.varname+".clkItmDtlEnter(event,this,'"+nmpref+"')\" maxlength=25 onblur=JSVCCurr(this,null,"+(formmoneyallownegative==1?-9999999999:0)+");this.setAttribute('value',this.value);"+(docalc==1?this.varname+".calcItmDtl(this,\""+fs[col].ITMS[cnt][0].toUpperCase()+"\",\""+itmdtlfml+"\")":"")+" value=\""+(aID==null?"":JSVCNumDBtoLOC(aID[itmdtlidx]))+"\">"; 9250 strwidth = (strwidth==null?30:strwidth); 9251 break;
9252 case 'MNVAL8': 9253 strpart = "<input "+(formchkreq==null?"":formchkreq!=''?"CHKNAME=\"Highlighted field\" CHKREQUIRED=\""+formchkreq+"\"":"CHKNAME=\"Highlighted field\" CHKREQUIRED")+" "+(formreadonly==1?"READONLY ORIGREADONLY":"")+" name=\""+frmitmnm+"\" style=width:100% onkeypress=\"return "+this.varname+".clkItmDtlEnter(event,this,'"+nmpref+"')\" maxlength=25 onblur=JSVCCurr(this,null,"+(formmoneyallownegative==1?-9999999999:0)+");this.setAttribute('value',this.value);"+(docalc==1?this.varname+".calcItmDtl(this,\""+fs[col].ITMS[cnt][0].toUpperCase()+"\",\""+itmdtlfml+"\")":"")+" value=\""+(aID==null?"":JSVCNumDBtoLOC(aID[itmdtlidx]))+"\">"; 9254 strwidth = (strwidth==null?30:strwidth); 9255 break; 9256 case 'MNVAL9': 9257 strpart = "<input "+(formchkreq==null?"":formchkreq!=''?"CHKNAME=\"Highlighted field\" CHKREQUIRED=\""+formchkreq+"\"":"CHKNAME=\"Highlighted field\" CHKREQUIRED")+" "+(formreadonly==1?"READONLY ORIGREADONLY":"")+" name=\""+frmitmnm+"\" style=width:100% onkeypress=\"return "+this.varname+".clkItmDtlEnter(event,this,'"+nmpref+"')\" maxlength=25 onblur=JSVCCurr(this,null,"+(formmoneyallownegative==1?-9999999999:0)+");this.setAttribute('value',this.value);"+(docalc==1?this.varname+".calcItmDtl(this,\""+fs[col].ITMS[cnt][0].toUpperCase()+"\",\""+itmdtlfml+"\")":"")+" value=\""+(aID==null?"":JSVCNumDBtoLOC(aID[itmdtlidx]))+"\">"; 9258 strwidth = (strwidth==null?30:strwidth); 9259 break; 9260 default: 9261 strpart=''; 9262 } 9263 if (strpart!='') 9264 if(fs[col].ITMS.length>1) 9265 strtmp+="<tr><td style=width:20ex>"+SVChtm(fs[col].ITMS[cnt][1])+"</td><td>"+strpart+"</td></tr>" 9266 else 9267 strtmp+=strpart; 9268 /* 9269 if(strwidth>maxwidth) 9270 maxwidth=strwidth; 9271 */ 9272 } 9273 strhtml+="<td style=text-align:center"+(strwidth!=null&&strwidth!=''&&(isNaN(strwidth) || (!isNaN(strwidth)&&strwidth>0&&strwidth<9999))?";width:"+strwidth+(!isNaN(strwidth)?"ex":""):"")+">"+(debug_shownm==1?"OBJ:"+frmitmnm:""); 9274 if(fs[col].ITMS.length>1) 9275 strhtml+="<table cellspacing=0 cellpadding=0 width=100%>"+strtmp+"</table>" 9276 else 9277 strhtml+=strtmp; 9278 strhtml+="</td>"; 9279 } 9280 strhtml+="<td style=width:3ex><input name=\""+nmpref+"DL\" value=1 type=checkbox "+(aID!=null&&aID[this.ItmsDtlsCol['ITMDTLSTATUS']]!=null&&parseInt(aID[this.ItmsDtlsCol['ITMDTLSTATUS']])==1?"CHECKED":"")+" onclick=\""+this.varname+".ItmDtlDel(this,this.parentNode.parentNode);\"></td></tr>"; 9281 9282 var rowarea=document.createElement("SPAN"); 9283 rowarea.innerHTML="<table>"+strhtml+"</table>"; 9284 rowarea=rowarea.childNodes[0]; 9285 var objdl=rowarea.tBodies[0].rows[rowarea.tBodies[0].rows.length-1].childNodes[rowarea.tBodies[0].rows[rowarea.tBodies[0].rows.length-1].childNodes.length-1].firstChild; 9286 if(objdl.checked==true) { 9287 this.ItmDtlDel(null,objdl.parentNode.parentNode,1); 9288 //objdl.parentNode.removeChild(objdl); 9289 if(!this._config.removeFlag){ 9290 objdl.disabled=true;objdl.style.visibility='hidden'; 9291 } 9292 strhtml=rowarea.tBodies[0].innerHTML; 9293 } 9294 return strhtml; 9295} 9296cFITMitms.prototype.ItmDtlDel=function(objchk,objrow,disb) { 9297 if(this._config.removeFlag){ 9298 var checked=objchk!=null ? objchk.checked : 1; 9299 var color=checked ? 'silver' : 'white'; 9300 9301 $(objrow).find('input[origreadonly!=""]').attr('readonly',checked); 9302 $(objrow).find('input:gt(0)').css('background-color',color); 9303 $(objrow).find('input[chkrequired]').attr('chkrequired',!checked).each(function(){ 9304 DoReq(this); 9305 }); 9306 }else{ 9307 if(objchk!=null) { 9308 if(objchk.checked==true) 9309 JSVCSetDisabledList(new Array(objrow),1,objchk.name); 9310 else 9311 JSVCSetDisabledList(new Array(objrow),0,objchk.name); 9312 } else if (disb>=0) { 9313 JSVCSetDisabledList(new Array(objrow),disb); 9314 } 9315 } 9316} 9317cFITMitms.prototype.clkItmDtlEnter=function(ev,o,nmpref) 9318{ var orow; 9319 if(ev.keyCode==13) 9320 { 9321 orow=o.parentNode.parentNode; 9322 if(orow.nextSibling!=null&&orow.nextSibling.tagName=="TR") 9323 { 9324 /*orow.nextSibling.cells[1].firstChild.select(); 9325 orow.nextSibling.cells[1].firstChild.focus();*/ 9326 orow=orow.nextSibling.cells[1].getElementsByTagName('INPUT')[0]; 9327 orow.select(); 9328 orow.focus(); 9329 } else 9330 { // Simulate a click on Add 9331 orow.parentNode.parentNode.parentNode.parentNode.nextSibling.firstChild.firstChild.click(); 9332 } 9333 } 9334 return true; 9335} 9336cFITMitms.prototype.clkItmDtlWindow=function(ev,o,nmpref,idtag,rule_ord) 9337{ var header,html,oframe,it_id; 9338 var itmdtltype=this.Rules.DATA[rule_ord][11]; 9339 var doc_onclick=document.getElementById('itemized_doc_onclick'); // from eclaims est/dsp)estitms 9340 doc_onclick=(doc_onclick!=null && doc_onclick.value!=''? doc_onclick.value : null); 9341 it_id=nmpref+"IT"+idtag; 9342 header = this.Rules.DATA[rule_ord][9]; 9343 this.itemisehtml=document.getElementById(it_id+"DIV").innerHTML; 9344 //document.getElementById(it_id+"DIV").innerHTML=''; 9345 html = "<div id=divcontainer style=overflow:visible;overflow-x:auto;overflow-y:auto>"+this.itemisehtml+"</div>"; 9346 html+="<div style=width:100%;text-align:center>"; 9347 html+="<div style=text-align:left;"+(this._config.disableAdd?"display:none":"")+"><input type=button value=\"+ Add\" onclick=\""+this.varname+".clkItmDtlAdd(event,this,'"+it_id+"',"+rule_ord+")\"></div>"; 9348 if(doc_onclick!=null) 9349 html+="<input type=button class=clsButton value=\"Documents\" id=\"dlgDoc\" style=width:18ex onclick=\""+doc_onclick+"\"> "; 9350 html+="<input type=button class=clsButton value=\"Calculate\" id=\"dlgCalc\" style=width:15ex onclick=\""+this.varname+".clkItmDtlCalc(event,this,"+rule_ord+")\"> <input type=button class=clsButton value=\"Ok\" id=\"dlgok\" style=width:10ex onclick=\""+this.varname+".clkItmDtlClose(event,this,'"+nmpref+"','"+idtag+"',1,"+rule_ord+")\"> <input type=button class=clsButton value=\"Cancel\" style=width:10ex onclick=\""+this.varname+".clkItmDtlClose(event,this,'"+nmpref+"','"+idtag+"',0,"+rule_ord+")\"></div>"; 9351 oframe=JSVCCtxMenuFrame(null,"FRid_"+it_id,header,"990",false,false); 9352 JSVCCtxMenuContent(oframe,html); 9353 JSVCshowCtxMenuEv(ev,oframe,null,2,2); 9354} 9355cFITMitms.prototype.getObjEndWithName=function(obj,tagName,str,idx) { // idx as null = all objects in arrays, idx as 0 or +ve : get object based on idx [+ve] 9356 var objs=obj.getElementsByTagName(tagName), retval=new Array(); 9357 if(objs.length>0) { 9358 for(var i=0; i<objs.length ; i++) { 9359 //alert('index '+i+':'+objs[i].id + ' to match with '+ str); 9360 if( JSVCstrEndWith(objs[i].name,str )) { 9361 //alert('push at '+ retval.length); 9362 retval.push(objs[i]); 9363 if(retval.length>=idx) 9364 break; 9365 } 9366 } 9367 } 9368 if (retval.length==0) 9369 return null 9370 else if (retval.length>0 && idx>=0) 9371 return retval[idx]; 9372 else
9373 return retval; 9374} 9375cFITMitms.prototype.getObjEndWithId=function(obj,tagName,str,idx) { // idx as null = all objects in arrays, idx as 0 or +ve : get object based on idx [+ve] 9376 var objs=obj.getElementsByTagName(tagName), retval=new Array(); 9377 if(objs.length>0) { 9378 for(var i=0; i<objs.length ; i++) { 9379 //alert('index '+i+':'+objs[i].id + ' to match with '+ str); 9380 if( JSVCstrEndWith(objs[i].id,str )) { 9381 //alert('push at '+ retval.length); 9382 retval.push(objs[i]); 9383 if(retval.length>=idx) 9384 break; 9385 } 9386 } 9387 } 9388 if (retval.length==0) 9389 return null 9390 else if (retval.length>0 && idx>=0) 9391 return retval[idx]; 9392 else 9393 return retval; 9394} 9395cFITMitms.prototype.initItmDtlRow=function(itmdef,oDefIDtl) 9396{ 9397 var oM=$("DIV[INTIDTLITMDEF='"+itmdef+"']"); 9398 var oC=$("DIV[INTIDTLITMDEF='"+itmdef+"']").children(); 9399 var oE=$("DIV[INTIDTLITMDEF='"+itmdef+"']").children().children(); 9400 9401 var IDTL_nmpref=$(oM).attr("INTIDTL_NMPREF"); 9402 var IDTL_idtag=$(oM).attr("INTIDTL_IDTAG"); 9403 9404 var prefixIDTL=$(oM).attr("INTIDTLPREFIX"); // it_id 9405 var rule_ord=$(oM).attr("INTIDTLRULEORDER"); 9406 var tot,obj; 9407 // oDefIDtl 9408 if(oC!=null && oC.length>0) { 9409 this.clkItmDtlAdd(null,oC[0],prefixIDTL,rule_ord,oDefIDtl); 9410 } 9411 if(oE!=null && oE.length>0) { 9412 9413 /* 9414 otbl=tbldiv.firstChild.firstChild; 9415 otbl.style='border:3px yellow solid'; 9416 tot=0.0; 9417 tot=this.fitmItmDtlCalc(ev,otbl,rule_ord); // rule_ord is the idx of the rule (table's row) 9418 9419 tbldiv.firstChild.lastChild.previousSibling.value=(tot!=null?JSVCNumDBtoLOC(tot):''); 9420 // Replace old DIV with edited copy from frame 9421 JSVCFormSetDOMValues(tbldiv); 9422 odiv=document.getElementById(nmpref+"IT"+idtag+"DIV"); 9423 odiv.innerHTML=tbldiv.innerHTML; 9424 tbldiv.innerHTML=""; 9425 alert(nmpref + ' vs ' + idtag); // MI5427WS vs 7889 9426 this.updItmState(nmpref,idtag,null,rule_ord); 9427 9428 9429 9430 tot=this.fitmItmDtlCalc(null,oE[0],rule_ord); 9431 oE[0].firstChild.lastChild.previousSibling.value=(tot!=null?JSVCNumDBtoLOC(tot):''); 9432 JSVCFormSetDOMValues(oE[0]); 9433 this.updItmState(nmpref,idtag,null,rule_ord); 9434 */ 9435 9436 9437 tot=this.fitmItmDtlCalc(null,oE[0],rule_ord); 9438 if(tot>=0) { 9439 $("input[name='"+IDTL_nmpref+'ITA'+IDTL_idtag+"']").val(JSVCNumDBtoLOC(tot)); 9440 JSVCFormSetDOMValues($("input[name='"+IDTL_nmpref+'ITA'+IDTL_idtag+"']")[0].parentNode); 9441 $("input[name='"+IDTL_nmpref+'IT'+IDTL_idtag+"']").val(JSVCNumDBtoLOC(tot)); 9442 JSVCFormSetDOMValues($("input[name='"+IDTL_nmpref+'IT'+IDTL_idtag+"']")[0].parentNode); 9443 $("input[name='"+IDTL_nmpref+'IT'+IDTL_idtag+"']").blur(); 9444 } 9445 } 9446 9447} 9448cFITMitms.prototype.clkItmDtlAdd=function(ev,o,it_id,rule_ord,oDefIDtl) 9449{ 9450 var odiv,otb,cnt,or,otmp,objf,objdadj; 9451 var itmdtltype=this.Rules.DATA[rule_ord][11]; 9452 // Deduce current count 9453 if(oDefIDtl!=null) 9454 odiv=o; // predefined data 9455 else if(o.tagName=="TR") 9456 odiv=o.parentNode.parentNode.parentNode 9457 else 9458 odiv=o.parentNode.parentNode.previousSibling.firstChild; 9459 //odiv.style='border:5px solid red'; 9460 if(itmdtltype==4) { 9461 objdadj=this.getObjEndWithId(odiv,'INPUT','DAYBALCHG',0); 9462 if(objdadj!=null && objdadj.checked==true) return 0; 9463 } 9464 9465 otb=odiv.firstChild.tBodies[2]; //3rd 9466 //otb.style='border:5px solid green'; 9467 //alert(otb.id + ' vs' + otb.name); 9468 cnt=parseInt(otb.rows.length>0?otb.rows[otb.rows.length-1].firstChild.firstChild.value:0); // get the no. at col 1 9469 cnt+=1; // new num. 9470 // Create new TR and append it 9471 //alert(it_id+"EN"+cnt,rule_ord); 9472 or=JSVCcreateTBODY(this.genItmDtlStr(cnt,null,it_id+"EN"+cnt,rule_ord)).firstChild; 9473 otb.appendChild(or); 9474 // Add new child to the list 9475 odiv.lastChild.value+=(odiv.lastChild.value==""?"":",")+"N"+cnt; 9476 // get the first element of the form object 9477 objf=or.cells[1].getElementsByTagName('INPUT')[0]; 9478 if(objf==null) { 9479 objf=or.cells[1].getElementsByTagName('SELECT')[0]; 9480 } 9481 if(objf!=null) { 9482 objf.focus();/*.firstChild.focus();*/ 9483 } 9484 objf=or.getElementsByTagName('INPUT'); 9485 for (cnt=0; cnt<objf.length; cnt++) { 9486 MRMPreprocessFormItem(objf[cnt],0); 9487 } 9488 objf=or.getElementsByTagName('SELECT'); 9489 for (cnt=0; cnt<objf.length; cnt++) { 9490 MRMPreprocessFormItem(objf[cnt],0); 9491 } 9492 odiv=document.getElementById('divcontainer'); 9493 if(odiv!=null) odiv.scrollTop = odiv.scrollHeight; 9494 if(itmdtltype==4) { 9495 this.disableQtyFields(odiv.firstChild); 9496 } 9497 9498 /* oDefIDtl */ 9499 //oDefIDtl={ "VADESC":"test 1", "NVAL2":"1", "MNVAL1":"220.00" }; 9500 if(oDefIDtl!=null) { 9501 for (key in oDefIDtl) { 9502 $(or).find("[name$='"+this.RulesFormItmDef[key]+"']").each(function() { 9503 $(this).val(oDefIDtl[key]); 9504 this.onblur(); 9505 }); 9506 } 9507 } 9508 9509} 9510cFITMitms.prototype.disableQtyFields=function(pf) { 9511 var objsel=pf,objidx=new Array(),objchk,i;
9512 if(objsel!=null) { 9513 objsel=objsel.getElementsByTagName('INPUT'); 9514 for(i=0;i<objsel.length;i++) { 9515 if(JSVCstrEndWith(objsel[i].name,"ITMDTLFLAG") && objsel[i].getAttribute('CALCTYPE')!=null && objsel[i].getAttribute('CALCTYPE')=='SPCARG') objchk=objsel[i]; 9516 if(JSVCstrEndWith(objsel[i].name,"QT")) objidx.push(objsel[i]); 9517 } 9518 if(objchk!=null && objidx!=null) { 9519 for(i=0;i<objidx.length;i++) { 9520 objidx[i].readOnly=(objchk.disabled==false&&objchk.checked==true?false:true); 9521 objidx[i].style.backgroundColor=(objidx[i].readOnly==true?'silver':''); 9522 } 9523 } 9524 } 9525} 9526 9527cFITMitms.prototype.updItmState=function(nmpref,idtag,osel,rule_ord,newval,newname) 9528{ 9529 var osel,sel,on,o_it,o_ita,o_ic,o_itmdiv,otot,tot,orate,rate; 9530 if(osel==null) 9531 { // If osel not passed in, lookup by name 9532 osel=document.getElementsByName(nmpref+"IS"+idtag); 9533 if(osel==null||osel.length==0)return; 9534 osel=osel[0]; 9535 } 9536 if(newval!=null) 9537 { osel.value=newval; 9538 osel.nextSibling.value=newname+" "+String.fromCharCode(9660); 9539 } 9540 sel=osel.value; 9541 on=osel.previousSibling.previousSibling; 9542 if(on!=null && on.tagName=="SPAN" && on.id=="RATE") 9543 { on.style.display=(sel=="2"?"inline":"none");on=on.previousSibling; } 9544 if(on!=null && on.tagName=="SPAN" && on.id=="ITEMS") 9545 { on.style.display=(sel=="8"?"inline":"none");on=on.previousSibling; } 9546 // get amount input obj and set enable/disable 9547 o_it=document.getElementsByName(nmpref+"IT"+idtag); 9548 o_ita=document.getElementsByName(nmpref+"ITA"+idtag); 9549 o_ic=document.getElementsByName(nmpref+"CV"+idtag); 9550 if(o_it==null||o_it.length==0)return; 9551 o_it=o_it[0];
9552 if(o_ita==null||o_ita.length==0)return; 9553 o_ita=o_ita[0]; 9554 if(o_ic==null||o_ic.length==0)return; 9555 o_ic=o_ic[0]; 9556 o_it.readOnly=(sel=="0"||sel=="2"||sel=="8"?true:false); 9557 o_it.style.backgroundColor=(sel=="0"||sel=="2"||sel=="8"?"silver":""); 9558 //o_ita.value=""; // set empty 9559 9560 if(sel=="2") 9561 { // rate type 9562 JSVCRateInputChg(nmpref+"RT"+idtag); 9563 } 9564 else if(sel=="8") 9565 { // itemize type - read off the totals 9566 o_itmdiv=document.getElementById(nmpref+"IT"+idtag+"DIV"); 9567 if(o_itmdiv!=null) 9568 { 9569 if(this.Rules.DATA[rule_ord][11]==2 || this.Rules.DATA[rule_ord][11]==4) /* replace the day rate amt */ 9570 { 9571 // Update rate 9572 rate=document.getElementsByName(nmpref+"RT"+idtag+"RATEVAL"); 9573 rate=(rate!=null&&rate.length>0?rate[0].value:null); 9574 orate=document.getElementsByName(nmpref+"RT"+idtag+"RATE")[0]; 9575 orate.value=rate; 9576 //JSVCRateInputChg(nmpref+"RT"+idtag); 9577 } 9578 otot=o_itmdiv.firstChild.lastChild.previousSibling; // totals object 9579 if(otot!=null) 9580 { 9581 //o_it.value=otot.value; 9582 o_ita.value=otot.value; 9583 //JSVCCurr(o_ita); 9584 } 9585 } 9586 } 9587 this.fitmItmLimitTot(nmpref,idtag); 9588} 9589 9590cFITMitms.prototype.fitmItmLimitTot=function(nmpref,idtag) { 9591 var o_it=document.getElementsByName(nmpref+"IT"+idtag); 9592 var o_ita=document.getElementsByName(nmpref+"ITA"+idtag); 9593 var o_ic=document.getElementsByName(nmpref+"CV"+idtag); 9594 var osel=document.getElementsByName(nmpref+"IS"+idtag),sel; 9595 if(o_it==null||o_it.length==0)return; 9596 o_it=o_it[0];
9597 if(o_ita==null||o_ita.length==0)return; 9598 o_ita=o_ita[0]; 9599 if(o_ic==null||o_ic.length==0)return; 9600 o_ic=o_ic[0]; 9601 if(osel==null||osel.length==0)return; 9602 osel=osel[0]; 9603 sel=osel.value; 9604 9605 if(sel=='1') { 9606 o_ita.value=o_it.value; 9607 } else if((sel=='2' || sel=='8')) { 9608 o_it.value=o_ita.value; 9609 if(o_ic.value!='') { 9610 if(JSVCNumLOCtoDB(o_ita.value)>JSVCNumLOCtoDB(o_ic.value)) { 9611 o_it.value=o_ic.value; 9612 //o_ita.value=o_it.value; 9613 //o_it.value=o_ic.value; 9614 } 9615 } 9616 } 9617} 9618 9619cFITMitms.prototype.listMoveUp=function(obj) { 9620// var objli=obj.parentNode.parentNode; // LI 9621 var objli=obj; 9622 var objul=objli.parentNode; // ul 9623 9624 if(objli!=objul.firstChild) { 9625 jQuery(obj).prev().before(jQuery(obj)); 9626 } 9627} 9628 9629cFITMitms.prototype.fitmItmDtlDateOverlap=function(otbl) { 9630 var t,cur_rowitms,chk_rowitms,t2,itmdtl_dt1,itmdtl_dt2,itmdtl_dt1_chk,itmdtl_dt2_chk,t3,itmdtl_lineno,count,y,ochk; 9631 var itmdtl_dt1_chk,itmdtl_dt2_chk,rechk=0,tmp; 9632 var itmdtl_dt3,itmdtl_dt4,itmdtl_dl, itmdtl_dl_chk; 9633 var itmdtl_pn2,itmdtl_pn2_chk,orow,singlehalfdaybit=0, singlehalfdaybit_chk=0; /* bit 1 : half day morning, bit 2: half day evening */; 9634 var itmdtl_mcno, itmdtl_mcno_chk, itmdtl_op; 9635 var op_period_from, op_period_to; 9636 otbl=(otbl!=null&&otbl.tBodies[2]!=null?otbl.tBodies[2]:null); 9637 if(!(otbl!=null && otbl.rows!=null && otbl.rows.length>0)) return; 9638 9639 for(y=0;y<otbl.rows.length;y++) { 9640 for(t=0;t<otbl.rows.length-1;t++) { 9641 orow=otbl.rows[t]; 9642 cur_rowitms=orow.getElementsByTagName("INPUT"); 9643 itmdtl_dt1=null;itmdtl_dt2=null;itmdtl_pn2=null;itmdtl_dl=null; 9644 for(t2=0;t2<cur_rowitms.length;t2++) // check every column of the row 9645 { 9646 if(JSVCstrEndWith(cur_rowitms[t2].name,"DT1") && itmdtl_dt1==null) itmdtl_dt1=cur_rowitms[t2]; 9647 if(JSVCstrEndWith(cur_rowitms[t2].name,"DT2") && itmdtl_dt2==null) itmdtl_dt2=cur_rowitms[t2]; 9648 if(JSVCstrEndWith(cur_rowitms[t2].name,"DL") && itmdtl_dl==null) itmdtl_dl=cur_rowitms[t2]; 9649 } 9650 cur_rowitms=orow.getElementsByTagName("SELECT"); 9651 for(t2=0;t2<cur_rowitms.length;t2++) // check every column of the row 9652 { 9653 if(JSVCstrEndWith(cur_rowitms[t2].name,"PN2") && itmdtl_pn2==null) itmdtl_pn2=cur_rowitms[t2]; 9654 } 9655 if(itmdtl_dl!=null && itmdtl_dl.disabled==false /* not valid for read only itm dtl */ && itmdtl_dt1!=null && itmdtl_dt2!=null && itmdtl_pn2!=null && itmdtl_dt1.value!='' && itmdtl_dt2.value!='' && itmdtl_pn2.value!='') { 9656 // swap between dates 9657 if(!(CalParseDate(itmdtl_dt1.value).getTime()<=CalParseDate(itmdtl_dt2.value).getTime())) { // swap value 9658 tmp=itmdtl_dt1.value; 9659 itmdtl_dt1.value=itmdtl_dt2.value; 9660 itmdtl_dt2.value=tmp; 9661 } 9662 ochk=orow.nextSibling; 9663 chk_rowitms=ochk.getElementsByTagName("INPUT"); 9664 itmdtl_dt1_chk=null;itmdtl_dt2_chk=null;itmdtl_pn2_chk=null; 9665 for(t2=0;t2<chk_rowitms.length;t2++) 9666 { 9667 if(JSVCstrEndWith(chk_rowitms[t2].name,"DT1") && itmdtl_dt1_chk==null) itmdtl_dt1_chk=chk_rowitms[t2]; 9668 if(JSVCstrEndWith(chk_rowitms[t2].name,"DT2") && itmdtl_dt2_chk==null) itmdtl_dt2_chk=chk_rowitms[t2]; 9669 } 9670 chk_rowitms=ochk.getElementsByTagName("SELECT"); 9671 for(t2=0;t2<chk_rowitms.length;t2++) 9672 { 9673 if(JSVCstrEndWith(chk_rowitms[t2].name,"PN2") && itmdtl_pn2_chk==null) itmdtl_pn2_chk=chk_rowitms[t2]; 9674 } 9675 9676 if(itmdtl_dt1_chk!=null && itmdtl_dt2_chk!=null && itmdtl_pn2_chk!=null && itmdtl_dt1_chk.value!='' && itmdtl_dt2_chk.value!='' && itmdtl_pn2_chk.value!='') { 9677 moveflag=0; 9678 //alert('check row at '+t3+':itmdtl_pn2 at value='+itmdtl_pn2.value+', itmdtl_pn2_chk at value='+itmdtl_pn2_chk.value ); 9679 curlvl=(itmdtl_pn2.value.toUpperCase()=='AM'?2:itmdtl_pn2.value.toUpperCase()=='PM'?3:1); 9680 curlvl_chk=(itmdtl_pn2_chk.value.toUpperCase()=='AM'?2:itmdtl_pn2_chk.value.toUpperCase()=='PM'?3:1); 9681 //alert('curlvl : ' +curlvl + ' vs ' + curlvl_chk); 9682 if( (curlvl==2 || curlvl==3) && curlvl_chk==1 && CalParseDate(itmdtl_dt1_chk.value).getTime()==CalParseDate(itmdtl_dt1.value).getTime() ) 9683 moveflag=1; 9684 else if(CalParseDate(itmdtl_dt1.value).getTime()>CalParseDate(itmdtl_dt1_chk.value).getTime()) 9685 moveflag=1; 9686 if(moveflag==1) { 9687 this.listMoveUp(ochk); 9688 } /*else { 9689 break; 9690 }*/ 9691 9692 } 9693 9694 9695 } // end if : itmdtl_dt1 9696 9697 } // end for t=0 9698 } // end for y=0 9699 9700 // rearrange order 9701 count=0; 9702 for(t=0;t<otbl.rows.length;t++) { 9703 cur_rowitms=otbl.rows[t]; 9704 cur_rowitms=cur_rowitms.getElementsByTagName("INPUT"); 9705 itmdtl_lineno=null; 9706 for(t2=0;t2<cur_rowitms.length;t2++) 9707 { 9708 if(JSVCstrEndWith(cur_rowitms[t2].name,"LINENO") && itmdtl_lineno==null) itmdtl_lineno=cur_rowitms[t2]; 9709 } 9710 if(itmdtl_lineno!=null) { 9711 count++; 9712 itmdtl_lineno.value=count; 9713 otbl.rows[t].className='ClsRptTone'+(count%2?2:1); 9714 } 9715 } 9716 9717 // define overlap period based on active listing 9718 for(y=0;y<otbl.rows.length;y++) { 9719 orow=otbl.rows[y]; 9720 cur_rowitms=orow.getElementsByTagName("INPUT"); 9721 itmdtl_dt1=null;itmdtl_dt2=null;itmdtl_dt3=null;itmdtl_dt4=null;itmdtl_pn2=null;itmdtl_dl=null;itmdtl_mcno=null;itmdtl_op=null; 9722 for(t2=0;t2<cur_rowitms.length;t2++) 9723 { 9724 // mc period 9725 if(JSVCstrEndWith(cur_rowitms[t2].name,"DT1") && itmdtl_dt1==null) itmdtl_dt1=cur_rowitms[t2]; 9726 if(JSVCstrEndWith(cur_rowitms[t2].name,"DT2") && itmdtl_dt2==null) itmdtl_dt2=cur_rowitms[t2]; 9727 // overlapping period 9728 if(JSVCstrEndWith(cur_rowitms[t2].name,"DT3") && itmdtl_dt3==null) itmdtl_dt3=cur_rowitms[t2]; 9729 if(JSVCstrEndWith(cur_rowitms[t2].name,"DT4") && itmdtl_dt4==null) itmdtl_dt4=cur_rowitms[t2]; 9730 if(JSVCstrEndWith(cur_rowitms[t2].name,"DS5") && itmdtl_op==null) itmdtl_op=cur_rowitms[t2]; 9731 // delete checkbox 9732 if(JSVCstrEndWith(cur_rowitms[t2].name,"DL") && itmdtl_dl==null) itmdtl_dl=cur_rowitms[t2]; 9733 if(JSVCstrEndWith(cur_rowitms[t2].name,"DS") && itmdtl_mcno==null) itmdtl_mcno=cur_rowitms[t2]; 9734 } 9735 cur_rowitms=orow.getElementsByTagName("SELECT"); 9736 for(t2=0;t2<cur_rowitms.length;t2++) 9737 { 9738 if(JSVCstrEndWith(cur_rowitms[t2].name,"PN2") && itmdtl_pn2==null) itmdtl_pn2=cur_rowitms[t2]; 9739 } 9740
9741 /** begin checking through list of the periods **/ 9742 //alert('checking on '+ itmdtl_mcno.value); 9743 9744 if(itmdtl_dl!=null && itmdtl_dl.disabled==false /* disabled is used for reference only */ && itmdtl_dt1!=null && itmdtl_dt2!=null && itmdtl_pn2!=null && itmdtl_dt1.value!='' && itmdtl_dt2.value!='' && itmdtl_pn2.value!='' && itmdtl_op!=null) 9745 { 9746 itmdtl_op.value=''; // reset 9747 9748 singlehalfdaybit=0;op_period_from='', op_period_to='';/*itmdtl_dt3.value='';itmdtl_dt4.value='';*/ // reset 9749 // checking overlapping for each editable row 9750 for (t3=0;t3<y;t3++) { 9751 orow=otbl.rows[t3]; 9752 chk_rowitms=orow.getElementsByTagName("INPUT"); 9753 itmdtl_dt1_chk=null;itmdtl_dt2_chk=null;itmdtl_pn2_chk=null;itmdtl_mcno_chk=null; singlehalfdaybit_chk=null; itmdtl_dl_chk=null; 9754 for(t2=0;t2<chk_rowitms.length;t2++) 9755 { 9756 if(JSVCstrEndWith(chk_rowitms[t2].name,"DT1") && itmdtl_dt1_chk==null) itmdtl_dt1_chk=chk_rowitms[t2]; 9757 if(JSVCstrEndWith(chk_rowitms[t2].name,"DT2") && itmdtl_dt2_chk==null) itmdtl_dt2_chk=chk_rowitms[t2]; 9758 if(JSVCstrEndWith(chk_rowitms[t2].name,"DS") && itmdtl_mcno_chk==null) itmdtl_mcno_chk=chk_rowitms[t2]; 9759 if(JSVCstrEndWith(chk_rowitms[t2].name,"DL") && itmdtl_dl_chk==null) itmdtl_dl_chk=chk_rowitms[t2]; 9760 } 9761 chk_rowitms=orow.getElementsByTagName("SELECT"); 9762 for(t2=0;t2<chk_rowitms.length;t2++) 9763 { 9764 if(JSVCstrEndWith(chk_rowitms[t2].name,"PN2") && itmdtl_pn2_chk==null) itmdtl_pn2_chk=chk_rowitms[t2]; 9765 } 9766 9767 //alert('checking overlapping:'+ itmdtl_dt1.value +' + '+ itmdtl_dt2.value + ' / '+ itmdtl_dt3.value+' + '+ itmdtl_dt4.value +' .. comparing with .. '+itmdtl_dt1_chk.value + ' vs '+itmdtl_dt2_chk.value ); 9768 //alert('checking overlapping:'+ itmdtl_mcno.value +' .. comparing .. '+ itmdtl_mcno_chk.value); 9769 // begin : verifying overlapping dates 9770 9771 if( itmdtl_dl_chk!=null && itmdtl_dl_chk.disabled==false && itmdtl_dt1_chk!=null && itmdtl_dt2_chk!=null && itmdtl_pn2_chk!=null && itmdtl_dt1_chk.value!='' && itmdtl_dt2_chk.value!='' && itmdtl_pn2_chk.value!='') { 9772 if( (itmdtl_pn2.value=='AM' || itmdtl_pn2.value=='PM') ) // row checking, whether it's half day claim, if overlapping period identified, skip checking and preceed for next row 9773 { 9774 if( op_period_from=='' && op_period_to=='' && CalParseDate(itmdtl_dt1.value).getTime()==CalParseDate(itmdtl_dt2.value).getTime() && CalParseDate(itmdtl_dt1_chk.value).getTime()<=CalParseDate(itmdtl_dt1.value).getTime() && CalParseDate(itmdtl_dt1.value).getTime()<=CalParseDate(itmdtl_dt2_chk.value).getTime() ) 9775 { 9776 singlehalfdaybit=(itmdtl_pn2.value.toUpperCase()=='AM'?1:itmdtl_pn2.value.toUpperCase()=='PM'?2:3); 9777 singlehalfdaybit_chk=(itmdtl_pn2_chk.value.toUpperCase()=='AM'?1:itmdtl_pn2_chk.value.toUpperCase()=='PM'?2:3); 9778 if((singlehalfdaybit&singlehalfdaybit_chk)>0) { // overlapping occured for half day. 9779 op_period_from=itmdtl_dt1.value;op_period_to=itmdtl_dt2.value; 9780 } 9781 } 9782 } 9783 else // full day 9784 { 9785 // left 9786 if(CalParseDate(itmdtl_dt1.value).getTime()<=CalParseDate(itmdtl_dt1_chk.value).getTime() && CalParseDate(itmdtl_dt1_chk.value).getTime()<=CalParseDate(itmdtl_dt2.value).getTime()) { 9787 // [C][R..] .. [C] 9788 if(op_period_from!=''&&op_period_to!='') { //overlapping? 9789 if(CalParseDate(itmdtl_dt1_chk.value).getTime()<=CalParseDate(op_period_from).getTime()) 9790 op_period_from=itmdtl_dt1_chk.value; 9791 } else { 9792 op_period_from=itmdtl_dt1_chk.value; 9793 } 9794 } else if (CalParseDate(itmdtl_dt1_chk.value).getTime()<=CalParseDate(itmdtl_dt1.value).getTime() && CalParseDate(itmdtl_dt1.value).getTime()<=CalParseDate(itmdtl_dt2_chk.value).getTime() ) { 9795 if(op_period_from!=''&&op_period_to!='') { //overlapping? 9796 if(CalParseDate(itmdtl_dt1.value).getTime()<=CalParseDate(op_period_from).getTime()) 9797 op_period_from=itmdtl_dt1.value; 9798 } else { 9799 op_period_from=itmdtl_dt1.value; 9800 } 9801 } 9802 // right 9803 if(CalParseDate(itmdtl_dt2_chk.value).getTime()<=CalParseDate(itmdtl_dt2.value).getTime() && CalParseDate(itmdtl_dt1.value).getTime()<=CalParseDate(itmdtl_dt2_chk.value).getTime()) { 9804 // [C][R..] .. [C] 9805 if(op_period_from!=''&&op_period_to!='') { //overlapping? 9806 if(CalParseDate(op_period_to).getTime()<=CalParseDate(itmdtl_dt2_chk.value).getTime()) 9807 op_period_to=itmdtl_dt2_chk.value; 9808 } else { 9809 op_period_to=itmdtl_dt2_chk.value; 9810 } 9811 } else if (CalParseDate(itmdtl_dt2.value).getTime()<=CalParseDate(itmdtl_dt2_chk.value).getTime() && CalParseDate(itmdtl_dt1_chk.value).getTime()<=CalParseDate(itmdtl_dt2.value).getTime() ) { 9812 if(op_period_from!=''&&op_period_to!='') { //overlapping? 9813 if(CalParseDate(op_period_to).getTime()<=CalParseDate(itmdtl_dt2.value).getTime()) 9814 op_period_to=itmdtl_dt2.value; 9815 } else { 9816 op_period_to=itmdtl_dt2.value; 9817 } 9818 } 9819 } 9820 } // end if : verifying overlapping dates ; endif : itmdtl_dt1_chk!=null && itmdtl_dt2_chk!=null ... */ 9821 9822 } // end for (t3=0;t3<y;t3++) 9823 if(op_period_from!='' && op_period_to!='' && itmdtl_op!=null) 9824 itmdtl_op.value=op_period_from+'-'+op_period_to+'='+itmdtl_pn2.value; 9825 // search through previous MC for matching the current MC, if there's overlapping period, a new overlapping period from evaluating from the previous MC will be included.
9826 this.fitmItmDtlOverlapEvaluatePeriod(otbl,itmdtl_dt1,itmdtl_dt2,itmdtl_pn2,itmdtl_op); 9827 } /** endif: checking through list of the periods **/ 9828 9829 } // end for(y=0;y<otbl.rows.length;y++) .. end .. 9830} 9831 9832cFITMitms.prototype.fitmItmDtlOverlapEvaluatePeriod=function(otbl,itmdtl_dt1, itmdtl_dt2, itmdtl_pn2, itmdtl_op) { 9833 var dt1=itmdtl_dt1.value, dt2=itmdtl_dt2.value, dttype=itmdtl_pn2.value, op_date=itmdtl_op.value,op_list=''; 9834 var orow, itmdtl_dt1_chk, itmdtl_dt2_chk, itmdtl_dl_chk, itmdtl_pn2_chk, arSet, arSetRec, itmdtl_mcno_chk; 9835 9836 //alert('op_date = ' + op_date); 9837 if(op_date!=null && op_date!='') { 9838 arSet=this.fitmItmDtlOverlapListToArray(op_date); 9839 } else { 9840 arSet=new Array(); 9841 } 9842 //alert( (Object.prototype.toString.call( arSet ) === '[object Array]' ) + ' vs ' + arSet.length); 9843 9844 for(y=0;y<otbl.rows.length;y++) 9845 { 9846 orow=otbl.rows[y]; 9847 itmdtl_dt1_chk=null;itmdtl_dt2_chk=null;itmdtl_dl_chk=null; itmdtl_pn2_chk=null; itmdtl_mcno_chk=null, op_period_from=''; op_period_to=''; op_period_type=''; 9848 chk_rowitms=orow.getElementsByTagName("INPUT"); 9849 for(t2=0;t2<chk_rowitms.length;t2++) 9850 { 9851 // mc period 9852 if(JSVCstrEndWith(chk_rowitms[t2].name,"DT1") && itmdtl_dt1_chk==null) itmdtl_dt1_chk=chk_rowitms[t2]; 9853 if(JSVCstrEndWith(chk_rowitms[t2].name,"DT2") && itmdtl_dt2_chk==null) itmdtl_dt2_chk=chk_rowitms[t2]; 9854 if(JSVCstrEndWith(chk_rowitms[t2].name,"DL") && itmdtl_dl_chk==null) itmdtl_dl_chk=chk_rowitms[t2]; 9855 if(JSVCstrEndWith(chk_rowitms[t2].name,"DS") && itmdtl_mcno_chk==null) itmdtl_mcno_chk=chk_rowitms[t2]; 9856 } 9857 chk_rowitms=orow.getElementsByTagName("SELECT"); 9858 for(t2=0;t2<chk_rowitms.length;t2++) 9859 { 9860 if(JSVCstrEndWith(chk_rowitms[t2].name,"PN2") && itmdtl_pn2_chk==null) itmdtl_pn2_chk=chk_rowitms[t2]; 9861 } 9862 9863 //alert('at line '+y+' with ' + itmdtl_mcno_chk.value + ' = '+dt1+' ~ ' + dt2 +' ~ ' + dttype + ' vs ' + itmdtl_dt1_chk.value +' ~ ' + itmdtl_dt2_chk.value +' ~ ' + itmdtl_pn2_chk.value ); 9864 if(itmdtl_dl_chk!=null && itmdtl_dl_chk.disabled==true && CalParseDate(dt1).getTime() <= CalParseDate(itmdtl_dt2_chk.value).getTime() && CalParseDate(itmdtl_dt1_chk.value).getTime() <= CalParseDate(dt2).getTime() ) 9865 { 9866 //alert('at line '+y+' BEGIN!'); 9867 // given value of dt1, dt2 and dttype : get overlap by matching the current MC period entry among the previous MC period 9868 if((dttype=='AM' || dttype=='PM') && itmdtl_pn2_chk.value=='FULL') // cur period = half day, checking is full day 9869 { 9870 op_period_from=dt1; op_period_to=dt2; op_period_type=dttype; 9871 } 9872 else if ((dttype=='AM' || dttype=='PM') && dttype==itmdtl_pn2_chk.value ) 9873 { 9874 op_period_from=dt1; op_period_to=dt2; op_period_type=dttype; 9875 } 9876 else if (dttype=='FULL' && (itmdtl_pn2_chk.value=='AM' || itmdtl_pn2_chk.value=='PM') ) 9877 { 9878 op_period_from=itmdtl_dt1_chk.value; op_period_to=itmdtl_dt2_chk.value; op_period_type=itmdtl_pn2_chk.value; 9879 } 9880 else if (dttype=='FULL' && itmdtl_pn2_chk.value=='FULL') 9881 { 9882 if(CalParseDate(dt1).getTime() <= CalParseDate(itmdtl_dt1_chk.value).getTime()) { 9883 op_period_from=itmdtl_dt1_chk.value; 9884 } else { 9885 op_period_from=dt1; 9886 } 9887 if(CalParseDate(itmdtl_dt2_chk.value).getTime() <= CalParseDate(dt2).getTime()) { 9888 op_period_to=itmdtl_dt2_chk.value; 9889 } else { 9890 op_period_to=dt2; 9891 } 9892 op_period_type='FULL'; 9893 } 9894 } 9895 if(op_period_from!='' && op_period_to!='') 9896 arSet=this.fitmItmDtlOverlapArrayPush(arSet,op_period_from,op_period_to,op_period_type) // ar,dtfrom,dtto,dtday 9897 9898 //alert('at line '+y+' DONE!'); 9899 9900 } 9901 9902 if(arSet.length>0) 9903 for(y=0;y<arSet.length;y++) 9904 op_list=JSVCListAppend(op_list,this.fitmItmDtlOverlapArrytoList(arSet[y])) 9905 itmdtl_op.value=op_list; 9906 9907 return 0; 9908} 9909 9910cFITMitms.prototype.fitmItmDtlOverlapArrayPush=function(ar,dtfrom,dtto,dtday) { // dtform - dtto to be merged into arr 9911 var arOPA=new Array(), value=dtfrom+'-'+dtto+'='+dtday,idx, arConflictIdx=new Array(),arTrial,j,chk; 9912 9913 //alert('current ar = '+ar + ' ; length ar = '+ ar.length); 9914 for(i=0;i<ar.length;i++) { 9915 if ( CalParseDate(dtfrom).getTime() <= CalParseDate(ar[i]['TO']).getTime() && CalParseDate(ar[i]['FROM']).getTime() <= CalParseDate(dtto).getTime() ) { 9916 //alert('conflict on ' + i); 9917 arConflictIdx.push(i); 9918 9919 } 9920 } 9921 //alert('arConflictIdx ='+ arConflictIdx); 9922 if(arConflictIdx.length==0) { 9923 idx=ar.length; 9924 ar[idx]=new Array(); 9925 ar[idx]["FROM"]=dtfrom; 9926 ar[idx]["TO"]=dtto; 9927 ar[idx]["TYPE"]=dtday; 9928 ar[idx]["VALUE"]=dtfrom+'-'+dtto+'='+dtday; 9929 } else if (arConflictIdx.length==1) 9930 { 9931 i=arConflictIdx[0]; 9932 if( dtday=='FULL' && ar[i]['TYPE']=='FULL' ) 9933 { 9934 if( CalParseDate(dtfrom).getTime() <= CalParseDate(ar[i]['FROM']).getTime() ) 9935 ar[i]['FROM']= dtfrom; 9936 if( CalParseDate(ar[i]['TO']).getTime() <= CalParseDate(dtto).getTime() ) 9937 ar[i]['TO']= dtto; 9938 ar[i]['VALUE']=ar[i]['FROM']+'-'+ar[i]['TO']+'='+ar[i]['TYPE']; 9939 } 9940 else if ( dtday=='FULL' && (ar[i]['TYPE']=='AM' || ar[i]['TYPE']=='PM') ) 9941 { 9942 ar[i]['FROM']= dtfrom; 9943 ar[i]['TO']= dtto; 9944 ar[i]['TYPE']= dtday; 9945 ar[i]['VALUE']=ar[i]['FROM']+'-'+ar[i]['TO']+'='+ar[i]['TYPE']; 9946 } 9947 else if ( (dtday=='AM' || dtday=='PM') && ar[i]['TYPE']=='FULL' ) // assuming dtday cover only one day, not range period, system can ignore merging this period. 9948 { 9949 // do nothing 9950 } 9951 else if ( (dtday=='AM' && ar[i]['TYPE']=='PM') || (dtday=='PM' && ar[i]['TYPE']=='AM') ) 9952 { 9953 ar[i]['TYPE']= 'FULL'; 9954 ar[i]['VALUE']=ar[i]['FROM']+'-'+ar[i]['TO']+'='+ar[i]['TYPE']; 9955 } 9956 } 9957 else if (arConflictIdx.length>1) 9958 { 9959 arTrial=this.fitmItmDtlOverlapArrayPush(new Array(),dtfrom,dtto,dtday) // creating array, the overlapping period might potentially splited into two range of period 9960 for(j=0;j<arTrial.length;j++) 9961 { 9962 dtfrom=arTrial[j]['FROM'];dtto=arTrial[j]['TO'];dtday=arTrial[j]['TYPE']; 9963 for(i=0;i<arConflictIdx.length;i++) { 9964 chk=ar[arConflictIdx[i]]; 9965 if( dtday=='FULL' && CalParseDate(dtfrom).getTime() <= CalParseDate(chk['FROM']).getTime() && CalParseDate(chk['TO']).getTime() <= CalParseDate(dtto).getTime() ) 9966 { 9967 chk['TYPE']=='DELETE'; // marked as deleted, as half day designed cater for one day period only. cater for half day as well. 9968 9969 } 9970 else if( dtday=='FULL' && chk['TYPE']=='FULL') 9971 { 9972 if(CalParseDate(chk['FROM']).getTime() <= CalParseDate(dtfrom).getTime() && CalParseDate(dtfrom).getTime() <= CalParseDate(chk['TO']).getTime() && CalParseDate(chk['TO']).getTime() <= CalParseDate(dtto).getTime()) 9973 { 9974 chk['TO']=JSVCDateAdd('D',-1,dtfrom); 9975 } 9976 else if(CalParseDate(dtfrom).getTime()<= CalParseDate(chk['FROM']).getTime() && CalParseDate(chk['FROM']).getTime() <= CalParseDate(dtto).getTime() && CalParseDate(dtto).getTime() <= CalParseDate(chk['TO']).getTime()) 9977 { 9978 chk['FROM']=JSVCDateAdd('D',1,dtto);
9979 } 9980 chk['VALUE']=chk['FROM']+'-'+chk['TO']+'='+chk['TYPE']; 9981 } 9982 else if ( (dtday=='AM' || dtday=='PM') && chk['TYPE']=='FULL' ) 9983 { 9984 // can be ignored, as dtday (half day) is designed for one day period. 9985 } 9986 else if ( (dtday=='AM' && chk['TYPE']=='PM') || (dtday=='PM' && chk['TYPE']=='AM') ) 9987 { 9988 chk['TYPE']= 'FULL'; 9989 chk['VALUE']=chk['FROM']+'-'+chk['TO']+'='+chk['TYPE']; 9990 } 9991 } 9992 for(i=0;i<arConflictIdx.length;i++) { 9993 chk=ar[arConflictIdx[i]]; 9994 if( dtday=='FULL' && CalParseDate(dtfrom).getTime() <= CalParseDate(chk['FROM']).getTime() && CalParseDate(chk['TO']).getTime() <= CalParseDate(dtto).getTime() ) 9995 { 9996 chk['TYPE']=='DELETE'; // marked as deleted, as half day designed cater for one day period only. cater for half day as well. 9997 9998 } 9999 else if( dtday=='FULL' && chk['TYPE']=='FULL') 10000 { 10001 if(CalParseDate(chk['FROM']).getTime() <= CalParseDate(dtfrom).getTime() && CalParseDate(dtfrom).getTime() <= CalParseDate(chk['TO']).getTime() && CalParseDate(chk['TO']).getTime() <= CalParseDate(dtto).getTime()) 10002 { 10003 chk['TO']=JSVCDateAdd('D',-1,dtfrom); 10004 } 10005 else if(CalParseDate(dtfrom).getTime()<= CalParseDate(chk['FROM']).getTime() && CalParseDate(chk['FROM']).getTime() <= CalParseDate(dtto).getTime() && CalParseDate(dtto).getTime() <= CalParseDate(chk['TO']).getTime()) 10006 { 10007 chk['FROM']=JSVCDateAdd('D',1,dtto); 10008 } 10009 chk['VALUE']=chk['FROM']+'-'+chk['TO']+'='+chk['TYPE']; 10010 } 10011 else if ( (dtday=='AM' || dtday=='PM') && chk['TYPE']=='FULL' ) 10012 { 10013 // can be ignored, as dtday (half day) is designed for one day period. 10014 } 10015 else if ( (dtday=='AM' && chk['TYPE']=='PM') || (dtday=='PM' && chk['TYPE']=='AM') ) 10016 { 10017 chk['TYPE']= 'FULL'; 10018 chk['VALUE']=chk['FROM']+'-'+chk['TO']+'='+chk['TYPE']; 10019 } 10020 } 10021 // remove overlap that's marked as deleted 10022 for(i=0;i<ar.length;i++) 10023 { 10024 if(ar[i]['TYPE']='DELETE') { 10025 ar.splice(i,1); // remove it 10026 --i; // in next loop, check the same index again after removed 10027 } 10028 } 10029 // add new one. 10030 idx=ar.length; 10031 ar[idx]=new Array(); 10032 ar[idx]["FROM"]=dtfrom; 10033 ar[idx]["TO"]=dtto; 10034 ar[idx]["TYPE"]=dtday; 10035 ar[idx]["VALUE"]=dtfrom+'-'+dtto+'='+dtday; 10036 } 10037 } 10038 return ar; 10039} 10040 10041cFITMitms.prototype.fitmItmDtlOverlapArrytoList=function(objtmp) { 10042 var list,arOPA=new Array(); 10043 list=objtmp['FROM']+'-'+objtmp['TO']+'='+objtmp['TYPE']; 10044 return list; 10045} 10046 10047cFITMitms.prototype.fitmItmDtlOverlapListToArray=function(str) { 10048 var arOP=new Array(); 10049 var objtmp; 10050 var idx; 10051 10052 objtmp=str.split(','); 10053 for(var i=0;i<objtmp.length;i++) { 10054 //alert('before length = '+arOP.length); 10055 if(objtmp[i]!='') { 10056 idx=arOP.length; 10057 arOP[idx]=new Array(); 10058 arOP[idx]['VALUE']=objtmp[i]; 10059 arOP[idx]['FROM']=objtmp[i].split('=')[0].split('-')[0]; 10060 arOP[idx]['TO']=objtmp[i].split('=')[0].split('-')[1]; 10061 arOP[idx]['TYPE']=objtmp[i].split('=')[1]; 10062 } 10063 //alert('after length = '+arOP.length); 10064 } 10065 return arOP; 10066} 10067 10068 10069 10070cFITMitms.prototype.fitmItmDtlCalc=function(ev,tblitmdtl,rule_ord) { // return the sum total of item details for current item, calculation ... 10071 var tot=new Array(),cntitmdtls,t2,otbl,otr,qty,amt,itmdtl_qty,itm_nval3,itmdtl_amt,objitmdtlflag, otot,itmdtltype,ch_input,t,rate,ratediv,orate,rowfrom,balfpent_h,balfpent_o,balcf_h,balcf_o,facentleft,len,tmp,nvar2,weekendbit=null,itmdtl_nv3,itmdtl_nv4,itmdtl_nv5,itmdtl_dt2_prev,itmdtl_pno,itmdtl_pno2,objentleft_h,objentleft_o,itm_mnval4,itm_nval11,itm_nval12,dtrangemode,objitm_dtval1,objitm_dtval2,itmdtl_ds5,arSet,entadj_h,entadj_o,objitm_daybalchg,dtobj_showmins; 10072 otbl=tblitmdtl; 10073 10074 itmdtltype=this.Rules.DATA[rule_ord][11]; 10075 rowfrom=1; 10076 if(itmdtltype==2 || itmdtltype==4 || itmdtltype==1 || itmdtltype==8|| itmdtltype==3 || itmdtltype==5||itmdtltype==9) 10077 { 10078 // Rate type: Grab rate from item-dtl window and populate rate in rule 10079 // replacement as below : rate=JSVCNumLOCtoDB(otbl.rows[0].lastChild.lastChild.value); 10080 otr=otbl.rows[0].getElementsByTagName("INPUT"); 10081 for(t2=0;t2<otr.length;t2++) 10082 { 10083 if(JSVCstrEndWith(otr[t2].name,"RATEVAL")) rate=otr[t2]; 10084 else if(JSVCstrEndWith(otr[t2].name,"ITMMNVAL4")) itm_mnval4=otr[t2]; 10085 else if(JSVCstrEndWith(otr[t2].name,"ITMNVAL11")) itm_nval11=otr[t2]; 10086 else if(JSVCstrEndWith(otr[t2].name,"ITMNVAL12")) itm_nval12=otr[t2]; 10087 else if(JSVCstrEndWith(otr[t2].name,"ITMNVAL3")) itm_nval3=otr[t2]; 10088 else if(JSVCstrEndWith(otr[t2].name,"BALFPENT_H")) balfpent_h=otr[t2]; 10089 else if(JSVCstrEndWith(otr[t2].name,"BALFPENT_O")) balfpent_o=otr[t2]; 10090 else if(JSVCstrEndWith(otr[t2].name,"BALCF_H")) balcf_h=otr[t2]; 10091 else if(JSVCstrEndWith(otr[t2].name,"BALCF_O")) balcf_o=otr[t2]; 10092 else if(JSVCstrEndWith(otr[t2].name,"ENTLEFT_H")) objentleft_h=otr[t2]; 10093 else if(JSVCstrEndWith(otr[t2].name,"ENTLEFT_O")) objentleft_o=otr[t2]; 10094 //else if(JSVCstrEndWith(otr[t2].name,"ITMDTLFLAG")) objitmdtlflag=otr[t2]; // appeared more than one field and objitmdtlflag is not in use. 10095 //else if(JSVCstrEndWith(otr[t2].name,"ENTADJ_H")) entadj_h=otr[t2]; 10096 //else if(JSVCstrEndWith(otr[t2].name,"ENTADJ_O")) entadj_o=otr[t2]; 10097 else if(JSVCstrEndWith(otr[t2].name,"DTVAL1")) objitm_dtval1=otr[t2]; 10098 else if(JSVCstrEndWith(otr[t2].name,"DTVAL2")) objitm_dtval2=otr[t2]; 10099 else if(JSVCstrEndWith(otr[t2].name,"ITMDTLFLAG_DAYBALCHG")) objitm_daybalchg=otr[t2]; 10100 else if(JSVCstrEndWith(otr[t2].name,"CUSWKEND") && otr[t2].checked) { 10101 weekendbit=(weekendbit==null?0:weekendbit); 10102 weekendbit+=parseInt(otr[t2].value); 10103 } 10104 } 10105 otr=otbl.rows[0].getElementsByTagName("SELECT"); 10106 for(t2=0;t2<otr.length;t2++) 10107 { 10108 if(JSVCstrEndWith(otr[t2].name,"FACENTLEFT")) facentleft=otr[t2]; 10109 if(JSVCstrEndWith(otr[t2].name,"ITMNVAL3")) itm_nval3=otr[t2]; 10110 if(JSVCstrEndWith(otr[t2].name,"RATEDIV")) ratediv=otr[t2]; 10111 } 10112 rate=(rate==null||rate.value==""?0.0:JSVCNumLOCtoDB(rate.value)); 10113 ratediv=(ratediv==null||ratediv.value==""?1:ratediv.value); 10114 10115 if(itmdtltype==9)rowfrom=1; else rowfrom=2; 10116 10117 10118 // itmdtltype=4 10119 balfpent_h=(balfpent_h==null||balfpent_h.value==""?0.0:JSVCNumLOCtoDB(balfpent_h.value)); 10120 balfpent_o=(balfpent_o==null||balfpent_o.value==""?0.0:JSVCNumLOCtoDB(balfpent_o.value)); 10121 balcf_h=(balcf_h==null||balcf_h.value==""?0.0:JSVCNumLOCtoDB(balcf_h.value)); 10122 balcf_o=(balcf_o==null||balcf_o.value==""?0.0:JSVCNumLOCtoDB(balcf_o.value)); 10123 facentleft=(facentleft==null||facentleft.value==""?0.0:JSVCNumLOCtoDB(facentleft.value)); 10124 } 10125 cntitmdtls=0;itmdtl_dt2_prev=null; 10126 10127 if(itmdtltype==8 && objitm_dtval1!=null && objitm_dtval1.value!='' && objitm_dtval2!=null && objitm_dtval2.value!='' && CalParseDate(objitm_dtval1.value).getTime()>CalParseDate(objitm_dtval2.value).getTime()) { 10128 tmp=objitm_dtval1.value;objitm_dtval1.value=objitm_dtval2.value;objitm_dtval2.value=tmp; 10129 } 10130 if(itmdtltype==4 && otbl!=null) { 10131 this.fitmItmDtlDateOverlap(otbl); 10132 } 10133 for(var t=rowfrom;t<otbl.rows.length;t++) 10134 { 10135 otr=otbl.rows[t]; 10136 //alert(t + ' row = ' + (itmdtl_dt2_prev!=null?itmdtl_dt2_prev.value:null)); 10137 if(!(otr.lastChild.firstChild.checked)) // if del is not checked ... 10138 { 10139 if(itmdtltype==""||itmdtltype==null)itmdtltype=0; 10140 itmdtl_qty=null;itmdtl_amt=null;itmdtl_pno=null;itmdtl_pno2=null;itmdtl_dt1=null;itmdtl_dt2=null;itmdtl_dt1_time=null;itmdtl_dt2_time=null;itmdtl_dt3=null;itmdtl_dt4=null;itmdtl_nv3=null;itmdtl_nv4=null;itmdtl_nv5=null;itmdtl_ds5=null;nvar2=null; // reset
10141 ch_input=otr.getElementsByTagName("INPUT"); 10142 for(t2=0;t2<ch_input.length;t2++) 10143 { 10144 if(JSVCstrEndWith(ch_input[t2].name,"DT1") && itmdtl_dt1==null) itmdtl_dt1=ch_input[t2]; 10145 if(JSVCstrEndWith(ch_input[t2].name,"DT2") && itmdtl_dt2==null) itmdtl_dt2=ch_input[t2]; 10146 if(JSVCstrEndWith(ch_input[t2].name,"DT1_TM") && itmdtl_dt1_time==null) itmdtl_dt1_time=ch_input[t2]; 10147 if(JSVCstrEndWith(ch_input[t2].name,"DT2_TM") && itmdtl_dt2_time==null) itmdtl_dt2_time=ch_input[t2]; 10148 if(JSVCstrEndWith(ch_input[t2].name,"DT3") && itmdtl_dt3==null) itmdtl_dt3=ch_input[t2]; 10149 if(JSVCstrEndWith(ch_input[t2].name,"DT4") && itmdtl_dt4==null) itmdtl_dt4=ch_input[t2]; 10150 if(JSVCstrEndWith(ch_input[t2].name,"QT") && nvar2==null) nvar2=ch_input[t2]; 10151 if(JSVCstrEndWith(ch_input[t2].name,"NV3") && itmdtl_nv3==null) itmdtl_nv3=ch_input[t2]; 10152 if(JSVCstrEndWith(ch_input[t2].name,"NV4") && itmdtl_nv4==null) itmdtl_nv4=ch_input[t2]; 10153 if(JSVCstrEndWith(ch_input[t2].name,"NV5") && itmdtl_nv5==null) itmdtl_nv5=ch_input[t2]; // actual qty 10154 if(JSVCstrEndWith(ch_input[t2].name,"PN") && itmdtl_pno==null) itmdtl_pno=ch_input[t2]; 10155 if(JSVCstrEndWith(ch_input[t2].name,"PN2") && itmdtl_pno2==null) itmdtl_pno2=ch_input[t2]; 10156 if(JSVCstrEndWith(ch_input[t2].name,"QT") && itmdtl_qty==null) itmdtl_qty=ch_input[t2]; 10157 if(JSVCstrEndWith(ch_input[t2].name,"AM") && itmdtl_amt==null) itmdtl_amt=ch_input[t2]; 10158 if(JSVCstrEndWith(ch_input[t2].name,"DS5") && itmdtl_ds5==null) itmdtl_ds5=ch_input[t2]; 10159 } 10160 ch_input=otr.getElementsByTagName("SELECT"); 10161 for(t2=0;t2<ch_input.length;t2++) 10162 { 10163 if(JSVCstrEndWith(ch_input[t2].name,"DT1") && itmdtl_dt1==null) itmdtl_dt1=ch_input[t2]; 10164 if(JSVCstrEndWith(ch_input[t2].name,"DT2") && itmdtl_dt2==null) itmdtl_dt2=ch_input[t2]; 10165 if(JSVCstrEndWith(ch_input[t2].name,"DT1_TM") && itmdtl_dt1_time==null) itmdtl_dt1_time=ch_input[t2]; 10166 if(JSVCstrEndWith(ch_input[t2].name,"DT2_TM") && itmdtl_dt2_time==null) itmdtl_dt2_time=ch_input[t2]; 10167 if(JSVCstrEndWith(ch_input[t2].name,"DT3") && itmdtl_dt3==null) itmdtl_dt3=ch_input[t2]; 10168 if(JSVCstrEndWith(ch_input[t2].name,"DT4") && itmdtl_dt4==null) itmdtl_dt4=ch_input[t2]; 10169 if(JSVCstrEndWith(ch_input[t2].name,"QT") && nvar2==null) nvar2=ch_input[t2]; 10170 if(JSVCstrEndWith(ch_input[t2].name,"NV3") && itmdtl_nv3==null) itmdtl_nv3=ch_input[t2]; 10171 if(JSVCstrEndWith(ch_input[t2].name,"NV4") && itmdtl_nv4==null) itmdtl_nv4=ch_input[t2]; 10172 if(JSVCstrEndWith(ch_input[t2].name,"NV5") && itmdtl_nv5==null) itmdtl_nv5=ch_input[t2]; // actual qty 10173 if(JSVCstrEndWith(ch_input[t2].name,"PN") && itmdtl_pno==null) itmdtl_pno=ch_input[t2]; 10174 if(JSVCstrEndWith(ch_input[t2].name,"PN2") && itmdtl_pno2==null) itmdtl_pno2=ch_input[t2]; 10175 if(JSVCstrEndWith(ch_input[t2].name,"QT") && itmdtl_qty==null) itmdtl_qty=ch_input[t2]; 10176 if(JSVCstrEndWith(ch_input[t2].name,"AM") && itmdtl_amt==null) itmdtl_amt=ch_input[t2]; 10177 if(JSVCstrEndWith(ch_input[t2].name,"DS5") && itmdtl_ds5==null) itmdtl_ds5=ch_input[t2]; 10178 } 10179 if(itmdtltype==8) /* billing based on coverage */ 10180 { 10181 if(itmdtl_dt3!=null && itmdtl_dt3.value!='') { 10182 if(objitm_dtval1!=null && objitm_dtval1.value!='' && objitm_dtval2!=null && objitm_dtval2.value!='') { 10183 //Checks if dtDATE3 is within dtVAL1 and dtVAL2 10184 if(CalParseDate(objitm_dtval1.value).getTime()<=CalParseDate(itmdtl_dt3.value).getTime() && CalParseDate(itmdtl_dt3.value).getTime()<=CalParseDate(objitm_dtval2.value).getTime()) 10185 itmdtl_qty.value=1; 10186 else 10187 itmdtl_qty.value=0; 10188 } else 10189 itmdtl_qty.value=0; 10190 } else { 10191 itmdtl_qty.value=0; 10192 } 10193 } 10194 if(itmdtltype==1 || itmdtltype==2 || itmdtltype==4 || itmdtltype==3 || itmdtltype==5 || itmdtltype==9) /* day rate */ 10195 { //dt1="";dt2="";dt3="";dt4=""; 10196 // get num of itm dtls 10197 if((itmdtl_dt1!=null&&itmdtl_dt1.value!="")||(itmdtl_dt2!=null&&itmdtl_dt2.value!="")) cntitmdtls++; 10198 qty=0;dtrangemode=null; 10199 if((itmdtl_dt1!=null&&itmdtl_dt1.value!='')||(itmdtl_dt2!=null&&itmdtl_dt2.value!='')) { 10200 // pop empty date either "from" or "to", 10201 if (itmdtl_dt1!=null&&itmdtl_dt1.value==''&&itmdtl_dt2!=null&&itmdtl_dt2.value!='') itmdtl_dt1.value=itmdtl_dt2.value; 10202 if (itmdtl_dt2!=null&&itmdtl_dt2.value==''&&itmdtl_dt1!=null&&itmdtl_dt1.value!='') itmdtl_dt2.value=itmdtl_dt1.value; 10203 // or switch place between "from" and "to" 10204 if (itmdtl_dt1_time!=null && itmdtl_dt2_time!=null) 10205 if (CalParseDateTime(itmdtl_dt1.value,itmdtl_dt1_time.value).getTime()>CalParseDateTime(itmdtl_dt2.value,itmdtl_dt2_time.value).getTime()) { 10206 tmp=itmdtl_dt1.value;itmdtl_dt1.value=itmdtl_dt2.value;itmdtl_dt2.value=tmp; 10207 tmp=itmdtl_dt1_time.value;itmdtl_dt1_time.value=itmdtl_dt2_time.value;itmdtl_dt2_time.value=tmp; 10208 } 10209 else { 10210 if (CalParseDate(itmdtl_dt1.value).getTime()>CalParseDate(itmdtl_dt2.value).getTime()) { 10211 tmp=itmdtl_dt1.value;itmdtl_dt1.value=itmdtl_dt2.value;itmdtl_dt2.value=tmp; 10212 } 10213 } 10214 // populate number of days 10215 if(itmdtltype==1) { 10216 dtrangemode=null; 10217 if(itmdtl_dt1.getAttribute('DATERANGEMODE')!=null && itmdtl_dt1.getAttribute('DATERANGEMODE')!='') dtrangemode=itmdtl_dt1.getAttribute('DATERANGEMODE'); 10218 if(itmdtl_dt2.getAttribute('DATERANGEMODE')!=null && itmdtl_dt2.getAttribute('DATERANGEMODE')!='') dtrangemode=itmdtl_dt2.getAttribute('DATERANGEMODE');
10219 qty=this.fitmDateDiff(CalParseDate(itmdtl_dt1.value),CalParseDate(itmdtl_dt2.value),1 /* each cal days*/,this.locid,weekendbit,dtrangemode); 10220 } else if (itmdtltype==5) { 10221 dtrangemode=null; 10222 if(itmdtl_dt1.getAttribute('DATERANGEMODE')!=null && itmdtl_dt1.getAttribute('DATERANGEMODE')!='') dtrangemode=itmdtl_dt1.getAttribute('DATERANGEMODE'); 10223 if(itmdtl_dt2.getAttribute('DATERANGEMODE')!=null && itmdtl_dt2.getAttribute('DATERANGEMODE')!='') dtrangemode=itmdtl_dt2.getAttribute('DATERANGEMODE'); 10224 qty=this.fitmDateDiff(CalParseDate(itmdtl_dt1.value),CalParseDate(itmdtl_dt2.value),1 /* each cal days*/,this.locid,weekendbit,dtrangemode); 10225 qty=(qty>0?Math.floor(qty/7):0); // grab block of week 10226 } else if(itmdtltype==3|| itmdtltype==9) { 10227 dtrangemode=null; 10228 if(itmdtl_dt1.getAttribute('DATERANGEMODE')!=null && itmdtl_dt1.getAttribute('DATERANGEMODE')!='') dtrangemode=itmdtl_dt1.getAttribute('DATERANGEMODE'); 10229 if(itmdtl_dt2.getAttribute('DATERANGEMODE')!=null && itmdtl_dt2.getAttribute('DATERANGEMODE')!='') dtrangemode=itmdtl_dt2.getAttribute('DATERANGEMODE'); 10230 if(itmdtl_dt1.getAttribute('SHOWMINS')!=null && itmdtl_dt1.getAttribute('SHOWMINS')!='') dtobj_showmins=itmdtl_dt1.getAttribute('SHOWMINS'); 10231 if(itmdtl_dt2.getAttribute('SHOWMINS')!=null && itmdtl_dt2.getAttribute('SHOWMINS')!='') dtobj_showmins=itmdtl_dt2.getAttribute('SHOWMINS'); 10232 10233 if(itmdtl_dt1_time!=null && itmdtl_dt2_time!=null && dtobj_showmins!=null && dtobj_showmins==1){ 10234 var minutes=this.fitmDateDiff(CalParseDateTime(itmdtl_dt1.value,itmdtl_dt1_time.value),CalParseDateTime(itmdtl_dt2.value,itmdtl_dt2_time.value),ratediv,this.locid,weekendbit,dtrangemode,'mm' /* minutes */); 10235 qty = (Math.floor(minutes /60) + ((minutes - (60* Math.floor(minutes /60)))/100)); 10236 } else if(itmdtl_dt1_time!=null && itmdtl_dt2_time!=null) 10237 qty=this.fitmDateDiff(CalParseDateTime(itmdtl_dt1.value,itmdtl_dt1_time.value),CalParseDateTime(itmdtl_dt2.value,itmdtl_dt2_time.value),ratediv,this.locid,weekendbit,dtrangemode,'H' /* hour */); 10238 else 10239 qty=this.fitmDateDiff(CalParseDate(itmdtl_dt1.value),CalParseDateTime(itmdtl_dt2.value),ratediv,this.locid,weekendbit,dtrangemode,'H' /* hour */); 10240 } else if(itmdtltype==4) { 10241 if(itmdtl_ds5!=null) // using itmdtl_ds5 10242 arSet=(itmdtl_ds5.value!=''?this.fitmItmDtlOverlapListToArray(itmdtl_ds5.value):new Array()); 10243 else 10244 arSet=(itmdtl_dt3.value!='' && itmdtl_dt4.value!=''?this.fitmItmDtlOverlapArrayPush(new Array(),itmdtl_dt3.value,itmdtl_dt4.value,itmdtl_pno2.value) : new Array()); 10245 //alert('overlapping value='+itmdtl_ds5.value+ ' ; length='+arSet.length); 10246 dtrangemode=null; 10247 if(itmdtl_dt1.getAttribute('DATERANGEMODE')!=null && itmdtl_dt1.getAttribute('DATERANGEMODE')!='') dtrangemode=itmdtl_dt1.getAttribute('DATERANGEMODE'); 10248 if(itmdtl_dt2.getAttribute('DATERANGEMODE')!=null && itmdtl_dt2.getAttribute('DATERANGEMODE')!='') dtrangemode=itmdtl_dt2.getAttribute('DATERANGEMODE'); 10249 // .. populate number of days for day from - to & overlapping day 10250 if(itmdtl_pno2.value.toUpperCase()=='AM' || itmdtl_pno2.value.toUpperCase()=='PM') // half day 10251 itmdtl_nv3.value=(this.fitmDateDiff(CalParseDate(itmdtl_dt1.value),CalParseDate(itmdtl_dt2.value),ratediv,this.locid,weekendbit,dtrangemode)>0?0.5:0); 10252 else // full day 10253 itmdtl_nv3.value=this.fitmDateDiff(CalParseDate(itmdtl_dt1.value),CalParseDate(itmdtl_dt2.value),ratediv,this.locid,weekendbit,dtrangemode); 10254 //alert('overlapping lists : '+arSet+ '~'+itmdtl_ds5.value); 10255 dtrangemode=null; 10256 if(itmdtl_dt3!=null && itmdtl_dt3.getAttribute('DATERANGEMODE')!=null && itmdtl_dt3.getAttribute('DATERANGEMODE')!='') dtrangemode=itmdtl_dt3.getAttribute('DATERANGEMODE'); 10257 if(itmdtl_dt4!=null && itmdtl_dt4.getAttribute('DATERANGEMODE')!=null && itmdtl_dt4.getAttribute('DATERANGEMODE')!='') dtrangemode=itmdtl_dt4.getAttribute('DATERANGEMODE'); 10258 // populate the number of day for overlapping period 10259 sum_overlapday=0; 10260 for(t2=0;t2<arSet.length;t2++) { //dt3 = overlap from, dt4 = overlap to 10261 if(arSet[t2]['TYPE'].toUpperCase()=='AM' || arSet[t2]['TYPE'].toUpperCase()=='PM') // half day 10262 sum_overlapday+=( this.fitmDateDiff(CalParseDate(arSet[t2]['FROM']),CalParseDate(arSet[t2]['TO']),ratediv,this.locid,weekendbit,dtrangemode) > 0?0.5:0); 10263 else 10264 sum_overlapday+=this.fitmDateDiff(CalParseDate(arSet[t2]['FROM']),CalParseDate(arSet[t2]['TO']),ratediv,this.locid,weekendbit,dtrangemode); 10265 } 10266 itmdtl_nv4.value=sum_overlapday; 10267 qty=parseFloat(itmdtl_nv3.value)-sum_overlapday; 10268 } else { 10269 dtrangemode=null; 10270 if(itmdtl_dt1.getAttribute('DATERANGEMODE')!=null && itmdtl_dt1.getAttribute('DATERANGEMODE')!='') dtrangemode=itmdtl_dt1.getAttribute('DATERANGEMODE'); 10271 if(itmdtl_dt2.getAttribute('DATERANGEMODE')!=null && itmdtl_dt2.getAttribute('DATERANGEMODE')!='') dtrangemode=itmdtl_dt2.getAttribute('DATERANGEMODE');
10272 qty=this.fitmDateDiff(CalParseDate(itmdtl_dt1.value),CalParseDate(itmdtl_dt2.value),ratediv,this.locid,weekendbit,dtrangemode); 10273 } 10274 } 10275 if(itmdtl_nv5/*nvar2*/!=null) { // set number of times 10276 itmdtl_nv5.value=qty; 10277 } 10278 if(nvar2/*nvar2*/!=null) { // set number of times 10279 if(itmdtltype==4||itmdtltype==9) { 10280 //alert(objitmdtlflag+'='+objitmdtlflag + ' vs objitmdtlflag.disabled = '+ objitmdtlflag.disabled+ ' vs objitmdtlflag.checked=' + objitmdtlflag.checked); 10281 if(nvar2.readOnly==false/*objitmdtlflag!=null && objitmdtlflag.disabled==false && objitmdtlflag.checked==true*/) // change amount 10282 { 10283 nvar2.value=(nvar2.value==''?qty:nvar2.value); 10284 qty=nvar2.value; // override the number of qty for special arrangement 10285 } 10286 else 10287 nvar2.value=qty; 10288 } else 10289 nvar2.value=qty; 10290 } 10291 if(itmdtltype==4) { // tot['H'] and tot['O'] 10292 if(itmdtl_pno!=null && itmdtl_pno.value!='') { 10293 tot[itmdtl_pno.value+'']=(typeof(tot[itmdtl_pno.value+''])=='undefined'?0:p
10293arseFloat(tot[itmdtl_pno.value+'']))+parseFloat(qty); 10294 } 10295 } 10296 else if(itmdtltype==9){ 10297 amt=(itmdtl_amt!=null?itmdtl_amt.value:0); 10298 10299 if(typeof(tot['sum'])=='undefined' || tot['sum']==null) tot['sum']=0; 10300 tot['sum']+=JSVCNumLOCtoDB(amt); 10301 10302 }else { // itmdtltype = 2? 10303 if(typeof(tot['sum'])=='undefined' || tot['sum']==null) tot['sum']=0; 10304 tot['sum']+=qty; 10305 } 10306 } 10307 else 10308 { 10309 qty=(itmdtl_qty!=null?itmdtl_qty.value:1); 10310 amt=(itmdtl_amt!=null?itmdtl_amt.value:0); 10311 if(amt!=null&&amt!='') cntitmdtls++; 10312 if(typeof(tot['sum'])=='undefined' || tot['sum']==null) tot['sum']=0; 10313 tot['sum']+=(JSVCNumLOCtoDB(qty)*JSVCNumLOCtoDB(amt)); 10314 } 10315 // keep track the previous row of itmdtl.dt2 for the next loop 10316 if(itmdtltype==4 && itmdtl_dt2!=null&&itmdtl_dt2.disabled==false) { 10317 itmdtl_dt2_prev=itmdtl_dt2; 10318 } 10319 } 10320 } // end of looping the rows of the itmdtls ... ( for(var t=rowfrom;t<otbl.rows.length;t++) ) 10321//alert('rate='+rate + ' vs ' + 'ratediv='+ratediv); 10322 if(itmdtltype==1) { 10323 if(typeof(tot['sum'])=='undefined' || tot['sum']==null) tot['sum']=0; 10324 var halfmthrate=rate/3; 10325 if(itm_nval12!=null) itm_nval12.value=(tot['sum']>=0?JSVCNumDBtoLOC(tot['sum']):''); // sum 10326 /*alert('before:'+tot['sum']); 10327 tot['sum']=(tot['sum']>0&&tot['sum']-1>0?tot['sum']-1:0); 10328 alert('after:'+tot['sum']);*/ 10329 if(tot['sum']<14 && tot['sum']>=4) tot['sum']-=4; 10330 else if (tot['sum']<4) tot['sum']=0; 10331 tot['sum']=(tot['sum']>0?tot['sum']-1:tot['sum']); // deducted with 1 because the first date will not counted 10332 if(itm_nval11!=null) itm_nval11.value=(tot['sum']>=0?JSVCNumDBtoLOC(tot['sum']):''); // nett 10333 if(halfmthrate>165) halfmthrate=165; 10334 if(itm_mnval4!=null) itm_mnval4.value=(halfmthrate>=0?JSVCNumDBtoLOC(halfmthrate):''); // half mth rate 10335 /*tot=halfmthrate*tot['sum']/15;*/ 10336 /*old : tot=halfmthrate*(tot['sum']>0&&tot['sum']-1>0?tot['sum']-1:0)/15;*/ 10337 tot=halfmthrate*(tot['sum']>0?tot['sum']:0)/15; 10338 } else if(itmdtltype==3) { 10339 if(typeof(tot['sum'])=='undefined' || tot['sum']==null) tot['sum']=0; 10340 tot=rate*Math.floor(tot['sum']/parseInt(itm_nval3.value)); 10341 } else if(itmdtltype==5) { 10342 if(typeof(tot['sum'])=='undefined' || tot['sum']==null) tot['sum']=0; 10343 tot=rate*tot['sum']; 10344 } else if(itmdtltype==2) { 10345 if(typeof(tot['sum'])=='undefined' || tot['sum']==null) tot['sum']=0; 10346 tot=tot['sum']*rate/(ratediv>0?Math.abs(ratediv):1); 10347 } else if (itmdtltype==4) { 10348 // if day claim adjustment happened? 10349 /* 10350 if( objentadj_h!=null && objentadj_o!=null && objentadj_h.disabled==false && objentadj_o.disabled==false ) 10351 { 10352 objentadj_h.value=(objentadj_h.value==''?0:objentadj_h.value); 10353 objentadj_h.onblur(); 10354 tot['H']=(objentadj_h.value==''?0 : parseFloat(objentadj_h.value) ); 10355 10356 objentadj_o.value=(objentadj_o.value==''?0:objentadj_o.value); 10357 objentadj_o.onblur(); 10358 tot['O']=(objentadj_o.value==''?0 : parseFloat(objentadj_o.value) ); 10359 } 10360 10361 * */ 10362 // tot as the number of current day claimed... 10363 if(typeof(tot['H'])=='undefined' || tot['H']==null) tot['H']=0; 10364 if(typeof(tot['O'])=='undefined' || tot['O']==null) tot['O']=0; 10365 10366 if(objitm_daybalchg!=null && objitm_daybalchg.checked==true) { 10367 // day balance adjustment 10368 entadj_h=itm_nval11;entadj_o=itm_nval12; 10369 tot['H']=0;tot['O']=0; 10370 if(entadj_h!=null && entadj_h.disabled==false && entadj_h.value!='' && entadj_o!=null && entadj_o.disabled==false && entadj_o.value!='') { 10371 tot['H']=parseFloat(entadj_h.value); 10372 tot['O']=parseFloat(entadj_o.value); 10373 10374 10375 //entadj_h=parseFloat(entadj_h.value); entadj_o=parseFloat(entadj_o.value); 10376 //objentleft_h.value=balcf_h+entadj_h; objentleft_o.value=balcf_o+entadj_o; 10377 /* 10378 // get refund 10379 var balextra_h=( balcf_h >= balfpent_h ? balcf_h - balfpent_h : 0); 10380 var balextra_o=( balcf_o >= balfpent_o ? balcf_o - balfpent_o : 0); 10381 var balless_h=( balcf_h < balfpent_h ? balfpent_h - balcf_h : 0); 10382 var balless_o=( balcf_o < balfpent_o ? balfpent_o - balcf_o : 0); 10383 10384 */ 10385 10386 } 10387 } // end if : objitm_daybalchg!=null && objitm_daybalchg.checked==true 10388 10389 // hospitailisation 10390 objentleft_h.value=balcf_h+tot['H']; 10391 otot=0; 10392 if(tot['H']>0) {
10393 // hospitalisation : full pay 10394 if( balcf_h < balfpent_h ) 10395 otot += (balfpent_h-balcf_h >= tot['H']? tot['H']: balfpent_h-balcf_h) * rate/(ratediv>0?Math.abs(ratediv):1); /* full pay */ 10396 //alert(otot); 10397 // hospitalisation : half pay 10398 if( balcf_h != parseFloat(objentleft_h.value) && parseFloat(objentleft_h.value) > balfpent_h) 10399 otot += (balcf_h>=balfpent_h ? parseFloat(objentleft_h.value)-balcf_h : parseFloat(objentleft_h.value) - balfpent_h) * rate/(ratediv>0?Math.abs(ratediv):1) * facentleft; /* partial pay */ 10400 //alert( (balcf_h>=balfpent_h ? parseFloat(objentleft_h.value)-balcf_h : parseFloat(objentleft_h.value) - balfpent_h) + ' = ' + otot); 10401 } else if (tot['H']<0) { 10402 // hospitalisation : full pay 10403 if( parseFloat(objentleft_h.value) < balfpent_h ) { 10404 otot -= ( balcf_h <= balfpent_h ? balcf_h - parseFloat(objentleft_h.value) : balfpent_h - parseFloat(objentleft_h.value) ) * rate/(ratediv>0?Math.abs(ratediv):1); /* full pay */ 10405 } 10406 // hospitalisation : half pay 10407 if( balfpent_h < balcf_h) { 10408 otot -= (balfpent_h <= parseFloat(objentleft_h.value) ? balcf_h - parseFloat(objentleft_h.value) : balcf_h - balfpent_h) * rate/(ratediv>0?Math.abs(ratediv):1) * facentleft; /* partial pay */ 10409 } 10410 } 10411 //alert ('Hospitalisation = ' + otot); 10412 tot['H']=otot; 10413 10414 //outpatient 10415 objentleft_o.value=balcf_o+tot['O']; 10416 otot=0; 10417 if(tot['O']>0) { 10418 // outpatient : full pay 10419 if( balcf_o < balfpent_o ) 10420 otot += (balfpent_o-balcf_o >= tot['O']? tot['O']: balfpent_o-balcf_o) * rate/(ratediv>0?Math.abs(ratediv):1); /* full pay */ 10421 // outpatient : half pay 10422 if( balcf_o != parseFloat(objentleft_o.value) && parseFloat(objentleft_o.value) > balfpent_o) 10423 otot += (balcf_o>=balfpent_o ? parseFloat(objentleft_o.value)-balcf_o : parseFloat(objentleft_o.value) - balfpent_o) * rate/(ratediv>0?Math.abs(ratediv):1) * facentleft; /* partial pay */ 10424 } else if (tot['O']<0) { 10425 // outpatient : full pay 10426 if( parseFloat(objentleft_o.value) < balfpent_o ) { 10427 otot -= ( balcf_o <= balfpent_o ? balcf_o - parseFloat(objentleft_o.value) : balfpent_o - parseFloat(objentleft_o.value) ) * rate/(ratediv>0?Math.abs(ratediv):1); /* full pay */ 10428 } 10429 // outpatient : half pay 10430 if( balfpent_o < balcf_o) { 10431 otot -= (balfpent_o <= parseFloat(objentleft_o.value) ? balcf_o - parseFloat(objentleft_o.value) : balcf_o - balfpent_o) * rate/(ratediv>0?Math.abs(ratediv):1) * facentleft; /* partial pay */ 10432 } 10433 } 10434 //alert ('outpatient = ' + otot); 10435 tot['O']=otot; 10436 //alert(tot['H'] + ' vs ' + tot['O']); 10437 tot=tot['O']+tot['H']; 10438 cntitmdtls=1; // flag as valid itmdtls and return value 10439 } 10440 else { 10441 if(typeof(tot['sum'])=='undefined' || tot['sum']==null) tot['sum']=0; 10442 tot=tot['sum']; 10443 } 10444 return (cntitmdtls>0?tot:null); 10445} 10446cFITMitms.prototype.chkItemiseCustom=function(o,rule_ord) { 10447 var flag_billnodupchk=0; // default to dup chk 10448 var oItmDefSet=(this.ItmsDEFSET!=null && typeof( this.ItmsDEFSET[ this.Rules.DATA[rule_ord][this.RulesCol["VARULEVARNAME"]] ] ) ? this.ItmsDEFSET[ this.Rules.DATA[rule_ord][this.RulesCol["VARULEVARNAME"]] ] : null); 10449 var otbl=o.firstChild.firstChild; 10450 var otblset=otbl.tBodies[0]; // 3rd part 10451 var otbllist=otbl.tBodies[2]; // 3rd part 10452 var itmdtltype=this.Rules.DATA[rule_ord][this.RulesCol["IITMDTLTYPE"]]; 10453 var wsitmdef=this.Rules.DATA[rule_ord][this.RulesCol["VARULEVARNAME"]]; 10454 var itm_dt1=null,itmdtl_dl=null,itmdtl_am=null, itmdtl_am3=null, itmdtl_ds5=null,itmdtl_dt1=null,itmdtl_dt2=null,itmdtl_pn2=null,t,t2,itmfound=0;chkfound=0; 10455 var ITMBALCF_H, ITMBALCF_O, ITMNVAL11, ITMNVAL12, itmval, itmchk, itmlist; 10456 var iswica=(this.rulesetvarname=='SGTOKIO-WCV3' || this.rulesetvarname=='SGSOMPOWICA' || this.rulesetvarname=='SGAVIVAWICA' || this.rulesetvarname=='SGWICAGEN' ? 1 : 0); 10457 10458 if(itmdtltype==1) { 10459 cur_rowitms=otblset.getElementsByTagName("INPUT"); 10460 for(t2=0;t2<cur_rowitms.length;t2++) // get date started work 10461 { 10462 if(JSVCstrEndWith(cur_rowitms[t2].name,"DTVAL1") && itm_dt1==null) itm_dt1=cur_rowitms[t2]; 10463 } 10464 10465 for(t=0;t<otbllist.rows.length;t++) { 10466 orow=otbllist.rows[t]; 10467 itmdtl_dt1=null;itmdtl_dt2=null;itmdtl_dl=null; 10468 cur_rowitms=orow.getElementsByTagName("INPUT"); 10469 for(t2=0;t2<cur_rowitms.length;t2++) // get the MC period from and to 10470 { 10471 if(JSVCstrEndWith(cur_rowitms[t2].name,"DT1") && itmdtl_dt1==null) itmdtl_dt1=cur_rowitms[t2]; // date from 10472 if(JSVCstrEndWith(cur_rowitms[t2].name,"DT2") && itmdtl_dt2==null) itmdtl_dt2=cur_rowitms[t2]; // date to 10473 if(JSVCstrEndWith(cur_rowitms[t2].name,"DL") && itmdtl_dl==null) itmdtl_dl=cur_rowitms[t2]; 10474 } 10475 itmdtl_dt1.style.border='';itmdtl_dt2.style.border=''; 10476 10477 if(itmdtl_dl!=null && itmdtl_dl.checked==false && itm_dt1!=null && itmdtl_dt1!=null && itmdtl_dt1!=null && itmdtl_dt2!=null) { 10478 if(itmdtl_dt1.value=='') { 10479 chkfound=1; 10480 itmdtl_dt1.style.border='2px solid red'; 10481 } else if(itmdtl_dt2.value=='') { 10482 chkfound=1; 10483 itmdtl_dt2.style.border='2px solid red'; 10484 } else if(!(CalParseDate(itmdtl_dt1.value).getTime()<=CalParseDate(itmdtl_dt2.value).getTime())) { 10485 chkfound=1; 10486 itmdtl_dt1.style.border='2px solid red'; 10487 itmdtl_dt2.style.border='2px solid red'; 10488 } else if(!(CalParseDate(itmdtl_dt2.value).getTime()<CalParseDate(itm_dt1.value).getTime())) { 10489 chkfound=1; 10490 itmdtl_dt2.style.border='2px solid red'; 10491 } 10492 } 10493 } 10494 if(chkfound==1) { 10495 alert(JSVClang('System cannot process the MC period due to:\n(1) Highlighted field has to be specified\n(2) MC period has to be placed in order\n(3)or end date of MC period has to be earlier than date started work. ',32344)); 10496 return false; 10497 } 10498 } 10499 else if(iswica==1 && wsitmdef=='WCML' && itmdtltype==4) 10500 { 10501 for(t=0;t<otbllist.rows.length;t++) { 10502 orow=otbllist.rows[t]; 10503 itmdtl_dt1=null;itmdtl_dt2=null;itmdtl_pn2=null; 10504 cur_rowitms=orow.getElementsByTagName("INPUT"); 10505 for(t2=0;t2<cur_rowitms.length;t2++) // check every column of the row 10506 { 10507 if(JSVCstrEndWith(cur_rowitms[t2].name,"DT1") && itmdtl_dt1==null) itmdtl_dt1=cur_rowitms[t2]; 10508 if(JSVCstrEndWith(cur_rowitms[t2].name,"DT2") && itmdtl_dt2==null) itmdtl_dt2=cur_rowitms[t2]; 10509 } 10510 cur_rowitms=orow.getElementsByTagName("SELECT"); 10511 for(t2=0;t2<cur_rowitms.length;t2++) // check every column of the row 10512 { 10513 if(JSVCstrEndWith(cur_rowitms[t2].name,"PN2") && itmdtl_pn2==null) itmdtl_pn2=cur_rowitms[t2]; 10514 } 10515 if(itmdtl_dt1!=null && itmdtl_dt2!=null && itmdtl_pn2!=null) { 10516 if( (itmdtl_pn2.value.toUpperCase()=='AM' || itmdtl_pn2.value.toUpperCase()=='PM') && CalParseDate(itmdtl_dt1.value).getTime()!=CalParseDate(itmdtl_dt2.value).getTime() ) { 10517 itmdtl_dt1.style.border='2px solid red';itmdtl_dt2.style.border='2px solid red';itmdtl_pn2.style.border='2px solid red'; 10518 chkfound=1; 10519 } else { 10520 itmdtl_dt1.style.border='';itmdtl_dt2.style.border='';itmdtl_pn2.style.border=''; 10521 } 10522 } 10523 } 10524 if(chkfound==1) { 10525 alert(JSVClang('Half day claim can be only specified for a day claim.',25741)); 10526 return false; 10527 } 10528 10529 10530 cur_rowitms=otblset.getElementsByTagName("INPUT"); 10531 for(t2=0;t2<cur_rowitms.length;t2++) // check every column of the row 10532 { 10533 if(JSVCstrEndWith(cur_rowitms[t2].name,"BALCF_H") && ITMBALCF_H==null) ITMBALCF_H=cur_rowitms[t2]; 10534 if(JSVCstrEndWith(cur_rowitms[t2].name,"BALCF_O") && ITMBALCF_O==null) ITMBALCF_O=cur_rowitms[t2]; 10535 if(JSVCstrEndWith(cur_rowitms[t2].name,"ITMNVAL11") && ITMNVAL11==null) ITMNVAL11=cur_rowitms[t2]; 10536 if(JSVCstrEndWith(cur_rowitms[t2].name,"ITMNVAL12") && ITMNVAL12==null) ITMNVAL12=cur_rowitms[t2]; 10537 } 10538
10539 if(ITMNVAL11!=null && ITMNVAL11.disabled==false && ITMNVAL12!=null && ITMNVAL12.disabled==false && (parseFloat(ITMBALCF_H.value)+parseFloat(ITMNVAL11.value)<0 || parseFloat(ITMBALCF_O.value)+parseFloat(ITMNVAL12.value)<0 ) ) 10540 { 10541 chkfound=1; 10542 alert(JSVClang('Day Claim Adjustment has to be readjusted to ensure absolute days calculated for total claim days',29437)); 10543 return false; 10544 } 10545 10546 } 10547 else if(iswica==1 && wsitmdef=='WCME') 10548 { 10549 if(oItmDefSet!=null && typeof(oItmDefSet.ITMDTL_WCME_NODUPCHK)!='undefined') flag_billnodupchk=oItmDefSet.ITMDTL_WCME_NODUPCHK; 10550 // validate required fields 10551 for(t=0;t<otbllist.rows.length;t++) { 10552 orow=otbllist.rows[t]; 10553 itmdtl_dt1=null;itmdtl_pn2=null;itmdtl_ds5=null;itmdtl_am3=null;itmdtl_am=null;itmdtl_dl=null; 10554 cur_rowitms=orow.getElementsByTagName("INPUT"); 10555 for(t2=0;t2<cur_rowitms.length;t2++) // check every column of the row 10556 { 10557 if(JSVCstrEndWith(cur_rowitms[t2].name,"DT1") && itmdtl_dt1==null) itmdtl_dt1=cur_rowitms[t2]; // date 10558 if(JSVCstrEndWith(cur_rowitms[t2].name,"PN") && itmdtl_pn2==null) itmdtl_pn2=cur_rowitms[t2]; // bill 10559 if(JSVCstrEndWith(cur_rowitms[t2].name,"DS5") && itmdtl_ds5==null) itmdtl_ds5=cur_rowitms[t2]; // Remarks 10560 if(JSVCstrEndWith(cur_rowitms[t2].name,"AM3") && itmdtl_am3==null) itmdtl_am3=cur_rowitms[t2]; 10561 if(JSVCstrEndWith(cur_rowitms[t2].name,"AM") && itmdtl_am==null) itmdtl_am=cur_rowitms[t2]; 10562 if(JSVCstrEndWith(cur_rowitms[t2].name,"DL") && itmdtl_dl==null) itmdtl_dl=cur_rowitms[t2]; 10563 } 10564 itmdtl_dt1.style.border='';itmdtl_pn2.style.border='';itmdtl_ds5.style.border=''; 10565 if(itmdtl_dl!=null && itmdtl_dl.checked==false && (itmdtl_am.value!='' || itmdtl_am3.value!='') ) { 10566 if(itmdtl_dt1.value=='' && itmdtl_pn2.value=='' && itmdtl_ds5.value=='') { 10567 chkfound=1; 10568 itmdtl_ds5.style.border='2px solid red'; 10569 } else if(itmdtl_dt1.value!='' && itmdtl_pn2.value=='') { 10570 chkfound=1; 10571 itmdtl_pn2.style.border='2px solid red'; 10572 } else if(itmdtl_dt1.value=='' && itmdtl_pn2.value!='') { 10573 chkfound=1; 10574 itmdtl_dt1.style.border='2px solid red'; 10575 } 10576 } 10577 } 10578 if(chkfound==1) { 10579 alert(JSVClang('Highlighted field has to be specified.',29438)); 10580 return false; 10581 } 10582 10583 10584 chkfound=0; // reset 10585 // check duplicated bill no. 10586 if(flag_billnodupchk==0) 10587 { 10588 itmchk=new Array();itmlist=new Array(); 10589 for(t=0;t<otbllist.rows.length;t++) { 10590 orow=otbllist.rows[t]; 10591 itmdtl_pn2=null;itmdtl_dl=null; 10592 cur_rowitms=orow.getElementsByTagName("INPUT"); 10593 for(t2=0;t2<cur_rowitms.length;t2++) // check every column of the row 10594 { 10595 if(JSVCstrEndWith(cur_rowitms[t2].name,"PN") && itmdtl_pn2==null) itmdtl_pn2=cur_rowitms[t2]; // bill 10596 if(JSVCstrEndWith(cur_rowitms[t2].name,"DL") && itmdtl_dl==null) itmdtl_dl=cur_rowitms[t2]; 10597 } 10598 if(itmdtl_pn2!=null ) itmdtl_pn2.style.border=''; 10599 if (itmdtl_pn2!=null && itmdtl_dl.disabled==false && itmdtl_dl.checked==false) { 10600 itmchk.push(itmdtl_pn2); 10601 itmlist.push(itmdtl_pn2); 10602 } else if (itmdtl_pn2!=null && itmdtl_dl.disabled==true) { 10603 itmlist.push(itmdtl_pn2); 10604 } 10605 } 10606 if(itmchk.length>0 && itmlist.length>0) { 10607 for(t=0;t<itmchk.length;t++) { 10608 itmfound=0; 10609 for(t2=0;t2<itmlist.length;t2++) { 10610 if(itmchk[t].value!='' && itmlist[t2].value!='' && itmchk[t].value.toUpperCase()==itmlist[t2].value.toUpperCase() ) 10611 itmfound++; 10612 } 10613 if (itmfound>1) { 10614 chkfound=1; 10615 itmchk[t].style.border='2px solid red'; 10616 } 10617 } 10618 } 10619 if(chkfound==1) { 10620 alert(JSVClang('Duplicated bill no. identified in highlighted fields. Kindly verify and ammend the bill no.',29439)); 10621 return false; 10622 } 10623 } 10624 } 10625 return true; 10626} 10627cFITMitms.prototype.clkItmDtlCalc=function(ev,o,rule_ord) { 10628 var otbl,tbldiv=o.parentNode.previousSibling; 10629 if (!(SectionVerify(tbldiv) && this.chkItemiseCustom(tbldiv,rule_ord)) ) return; 10630 tot=0.0; 10631 otbl=tbldiv.firstChild.firstChild; 10632 /*if(otbl.rows.length>1) {*/ 10633 tot=this.fitmItmDtlCalc(ev,otbl,rule_ord); // rule_ord is the idx of the rule (table's row) 10634 /*}*/ 10635 alert('Total sum of item = '+(tot==null?JSVCNumDBtoLOC(0):JSVCNumDBtoLOC(tot))); 10636} 10637cFITMitms.prototype.clkItmDtlClose=function(ev,o,nmpref,idtag,save,rule_ord) 10638{ var cntitmdtls,t2,tbldiv,odiv,fr,otbl,otr,tot,qty,amt,otot,itmdtltype,ch_input,t,rate,orate,rowfrom,balfpent,balcf,facentleft,len,tmp,nvar2,weekendbit=null; 10639 tbldiv=o.parentNode.previousSibling; 10640 fr=tbldiv.parentNode.parentNode; 10641 if(save==1) 10642 { 10643 if (!(SectionVerify(tbldiv) && this.chkItemiseCustom(tbldiv,rule_ord)) ) return; 10644 // Get new totals 10645 otbl=tbldiv.firstChild.firstChild; 10646 //otbl.style='border:3px yellow solid'; 10647 /*if(otbl.rows.length>1) 10648 {*/ 10649 tot=0.0; 10650 tot=this.fitmItmDtlCalc(ev,otbl,rule_ord); // rule_ord is the idx of the rule (table's row) 10651 /*}*/ 10652 tbldiv.firstChild.lastChild.previousSibling.value=(tot!=null?JSVCNumDBtoLOC(tot):''); 10653 // Replace old DIV with edited copy from frame 10654 JSVCFormSetDOMValues(tbldiv); 10655 odiv=document.getElementById(nmpref+"IT"+idtag+"DIV"); 10656 odiv.innerHTML=tbldiv.innerHTML; 10657 tbldiv.innerHTML=""; 10658 //alert(nmpref + ' vs ' + idtag); // MI5427WS vs 7889 10659 this.updItmState(nmpref,idtag,null,rule_ord); 10660 } else { // close only 10661 /*odiv=document.getElementById(nmpref+"IT"+idtag+"DIV"); 10662 odiv.innerHTML=this.itemisehtml;*/ 10663 } 10664 JSVCcloseCtxMenu(fr); 10665} 10666 10667cFITMitms.prototype.fitmDtlGetHalfMthRate=function(value) { /* for itmtype=8 and itmdtltype=1 */ 10668 var halfmthrate=''; 10669 if(value>=0) { 10670 halfmthrate=parseFloat(value/3); 10671 halfmthrate=(halfmthrate>165?165:halfmthrate); 10672 } 10673 return halfmthrate; 10674} 10675cFITMitms.prototype.fitmDateDiff=function(dt1,dt2,thisworkday,thislocid,weekendbit,daterangemode,difftype) { 10676 var dtrangeddt1; 10677 difftype=(difftype==null?"D":difftype); 10678 dtrangeddt1=(daterangemode=='DDT1'||difftype!='D'?1:0); // day should not +1 itself 10679 if(thisworkday==null) { 10680 alert('MRM500: '+JSVClang("Error found! Please contact system administrator for assistance",25740)); 10681 return 0; 10682 } 10683 thisworkday=parseFloat(thisworkday); 10684 if(dt1==null || dt1==null) 10685 qty=0; 10686 else if((thisworkday==0 || thisworkday==null) && weekendbit>=0) // custom days for weekend ; thisworkday as bit of the day as weekend 10687 { 10688 qty=JSVCdaydiffWorkingDays(dt1,dt2,weekendbit,thislocid,request.DS.HOLIDAYS,1); 10689 qty=(dtrangeddt1==1&&qty>0?qty-1:qty); 10690 } 10691 else if (thisworkday==1 || thisworkday==7) // daily / 7 days week 10692 { 10693 qty=JSVCDateDiff(difftype,dt1,dt2)+1; 10694 qty=(dtrangeddt1==1&&qty>0?qty-1:qty); 10695 } 10696 else if (thisworkday==-5 || thisworkday==-5.5 || thisworkday==-6) // 5, 5.5 , 6 working days 10697 { 10698 qty=JSVCdaydiffWorkingDays(dt1,dt2,Math.abs(thisworkday),thislocid,request.DS.HOLIDAYS,0); 10699 qty=(dtrangeddt1==1&&qty>0?qty-1:qty); 10700 } 10701 else { 10702 alert('MRM501: '+JSVClang("Error found! Please contact system administrator for assistance",25740)); 10703 return 0; 10704 } 10705 return qty; 10706} 10707cFITMitms.prototype.objToFixed=function(obj,dp) { 10708 if (!isNaN(parseFloat(obj.value)))obj.value = parseFloat(obj.value).toFixed(dp); else obj.value='';DoReq(obj); 10709} 10710 10711/****** END : worksheet itemizer *******/ 10712 10713// Simple Check box check required check 10714// ONLY work for EPL Property details Module 10715function JSVCchkBoxValidate (){ 10716 var chkboclen, msgttl, dismsg = "", chkboclenName = "", idlen=0 , chkboxflg=1, counter=-1 /* Array Counter start from 0 */; 10717 var arrchcek = []; 10718 var arrmsg = []; 10719 10720 var idStr = $("#divFldContainer :checkbox" ).map(function() { 10721 var idattr = document.getElementById(this.id).getAttribute("chkrequired"); 10722 if (idattr != null){ 10723 return this.id; 10724 } 10725 }).get().join(); 10726 10727 var idArray = idStr.split(','); 10728 idlen=idArray.len; 10729 10730 var nameStr = $("#divFldContainer :checkbox" ).map(function() { 10731 var idattr = document.getElementById(this.id).getAttribute("chkrequired"); 10732 if (idattr != null){ 10733 return this.name; 10734 } 10735 }).get().join(); 10736 10737 var nameArray = nameStr.split(','); 10738 10739 //console.log('idStr: '+idStr) 10740 //console.log('nameStr: '+nameStr) 10741 if(nameStr!="" || idStr!=""){ 10742 for (a in idArray){ 10743 if (chkboclenName == nameArray[a]) {
10744 chkboclen += $("[id=" + idArray[a] + "][type=checkbox]:checked").length; 10745 arrchcek[counter]=chkboclen; 10746 } else { 10747 chkboclen = $("[id=" + idArray[a] + "][type=checkbox]:checked").length; 10748 arrchcek.push(chkboclen); 10749 msgttl = $("[id=lbl_" + nameArray[a] + "]").text(); 10750 arrmsg.push(msgttl) 10751 counter+=1; 10752 } 10753 chkboclenName = nameArray[a]; 10754 } 10755 for (b in arrchcek){ 10756 if (arrchcek[b] == 0){ 10757 chkboxflg = 0; 10758 dismsg = arrmsg[b]; 10759 } 10760 } 10761 } 10762 10763 if(chkboxflg==0) { 10764 if (dismsg != ""){ 10765 alert("You must check " + dismsg); 10766 } else { 10767 alert(JSVClang("You must check at least one the compulsory checkbox.",25742)); 10768 } 10769 return false; 10770 } else { 10771 return true; 10772 } 10773} 10774 10775function JSVCSetEnableOne(list,enableTheOne) { 10776 var arr = list.split(",") 10777 var i = 0 10778 for(i=0;i<list.length;i++){ 10779 if(arr[i]==enableTheOne) break; 10780 } 10781 arr.splice(i,1) 10782 JSVCSetDisabledList(arr.join(),true) 10783 JSVCSetDisabledList(enableTheOne,false) 10784} 10785 10786var JSVCTemplater = JSVCTemplater || {}; 10787JSVCTemplater.getPlaceholders = function (template,config) { 10788 var config = config||{}; 10789 config.escaped = config.escaped||["{{{","}}}"]; 10790 config.interpolation = config.interpolation||["{{","}}"]; 10791 10792 var sumLength = config.interpolation.join("").length; 10793 var placeholders = []; 10794 var expressions = []; 10795 var stopper1 = 0, stopper2 = 0; 10796 var escaped1 = 0, escaped2 = 0; 10797 10798 while(template.length>0) { 10799 stopper1 = template.search(config.interpolation[0]); 10800 stopper2 = template.search(config.interpolation[1]); 10801 escaped1 = template.search(config.escaped[0]); 10802 escaped2 = template.search(config.escaped[1]); 10803 10804 if(stopper1>stopper2) throw "JSVCTemplater.getPlaceholders: Imbalanced interpolation signs"; 10805 if(stopper1==-1 || stopper2==-1) break; 10806 10807 if( !(stopper1==escaped1 && stopper2==escaped2) ){ 10808 placeholders.push(template.slice( 10809 stopper1 10810 ,stopper2+config.interpolation[1].length 10811 )); 10812 expressions.push(template.slice( 10813 stopper1+config.interpolation[0].length 10814 ,stopper2 10815 )); 10816 } 10817 template = template.slice(stopper2+config.interpolation[1].length); 10818 } 10819 return { brac:placeholders,expr:expressions }; 10820} 10821JSVCTemplater.compileTemplate = function (template,$data,$index,$parent,$root,$config){ 10822 var i=0,j=0; 10823 var hldr,frag=""; 10824 var expr,expr0,expr1,expr1curr,expr1fn,expr1param1,expr1param2,expr1param3,expr1param4,expr1param5; 10825 var $config = $config || {}; 10826 10827 //if(_.isArray($data)) { 10828 if(Object.prototype.toString.call( $data ) === '[object Array]') { 10829 for(j=0;j<$data.length;j++){ 10830 if($root === undefined) $root = $data; 10831 frag = frag + JSVCTemplater.compileTemplate(template,$data[j],j,$parent,$root,$config); 10832 } 10833 }else{ 10834 hldr = JSVCTemplater.getPlaceholders(template,$config) 10835 frag = template.slice(0) 10836 $root = $root||$data 10837 for(i=0;i<hldr.brac.length;i++){ 10838 expr = hldr.expr[i].split("|"); 10839 expr0 = expr[0]; 10840 expr1 = expr[1]; 10841 10842// evaluate expression 10843 val = (new Function( 10844 "$data" 10845 ,"$index" 10846 ,"$parent" 10847 ,"$root" 10848 ,'var result={{expr}};if(result===undefined || result===null) {result=""}; return result'.replace("{{expr}}",expr0) 10849 ))( $data,$index,$parent,$root ); 10850 10851// evaluate fn on expression 10852 if(expr1) { 10853 expr1 = expr1.split(",") 10854 for(m=0;m<expr1.length;m++){ 10855 expr1fn = expr1[m]; 10856 expr1param1 = val; 10857 expr1param2 = $data; 10858 expr1param3 = $index; 10859 expr1param4 = $parent; 10860 expr1param5 = $root; 10861 val = (new Function ( 10862 "$val" 10863 ,"$data" 10864 ,"$index" 10865 ,"$parent" 10866 ,"$root" 10867 ,'var result=window.{{expr}}($val,$data,$index,$parent,$root);if(result===undefined || result===null) {result=""}; return result'.replace("{{expr}}",expr1fn) 10868 ))( expr1param1,expr1param2,expr1param3,expr1param4,expr1param5 ); 10869 } 10870 } 10871 frag = frag.replace(hldr.brac[i],val); 10872 } 10873 } 10874 return frag; 10875} 10876JSVCTemplater.compileEach = function (arr){ 10877 var i, total = ""; 10878 if(Validate.isArray(arr).passed) { 10879 for(i=0; i<arr.length; i++){ 10880 total = total + JSVCTemplater.compileTemplate(arr[i].TEMPLATE, arr[i].DATA); 10881 } 10882 } 10883 return total; 10884} 10885JSVCTemplater.compileRow = function (config) { 10886 if( !config.hasOwnProperty("row") ) return ""; 10887 10888 var nuKeys=[],temp,max,ttemp,tdata 10889 for(var key in config) { 10890 temp = key.replace(/cell(\d+)t/,"$1"); 10891 if( !isNaN(temp) ){ 10892 max = temp>max? temp: max; 10893 nuKeys.push(temp); 10894 } 10895 } 10896 nuKeys.sort(); 10897 10898 temp = ""; 10899 for(var i=0;i<nuKeys.length;i++) { 10900 ttemp = "cell"+nuKeys[i]+"t" 10901 tdata = "cell"+nuKeys[i]+"d" 10902 config[tdata] = ( !config.hasOwnProperty(tdata) || typeof config[tdata] == "object")? config[tdata]: {}; 10903 temp = temp + this.compileTemplate(config[ttemp],config[tdata]); 10904 } 10905 return config.row.replace("{{$data.cells}}",temp); 10906} 10907function JSVCCanvasSupported(){ 10908 var elem = document.createElement('canvas'); 10909 return !!(elem.getContext && elem.getContext('2d')); 10910} 10911function JSVCScreenshotMenu(){ 10912 return [JSVClang("Take Screenshot",28903) + ' (Ctrl+Shift+S)', 'javascript:JSVCshowCtxMenuEv(this.event,\'fb_instruction\',0,2,2);void(null);' ]; 10913} 10914 10915/* Login Page placeholder disappered in IE */ 10916/* HTML5 Placeholder jQuery Plugin - v2.3.1 - Copyright (c)2015 Mathias Bynens 2015-12-16*/ 10917try{!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof module&&module.exports?require("jquery"):jQuery)}(function(a){function b(b){var c={},d=/^jQuery\d+$/;return a.each(b.attributes,function(a,b){b.specified&&!d.test(b.name)&&(c[b.name]=b.value)}),c}function c(b,c){var d=this,f=a(this);if(d.value===f.attr(h?"placeholder-x":"placeholder")&&f.hasClass(n.customClass))if(d.value="",f.removeClass(n.customClass),f.data("placeholder-password")){if(f=f.hide().nextAll('input[type="password"]:first').show().attr("id",f.removeAttr("id").data("placeholder-id")),b===!0)return f[0].value=c,c;f.focus()}else d==e()&&d.select()}function d(d){var e,f=this,g=a(this),i=f.id;if(!d||"blur"!==d.type||!g.hasClass(n.customClass))if(""===f.value){if("password"===f.type){if(!g.data("placeholder-textinput")){try{e=g.clone().prop({type:"text"})}catch(j){e=a("<input>").attr(a.extend(b(this),{type:"text"}))}e.removeAttr("name").data({"placeholder-enabled":!0,"placeholder-password":g,"placeholder-id":i}).bind("focus.placeholder",c),g.data({"placeholder-textinput":e,"placeholder-id":i}).before(e)}f.value="",g=g.removeAttr("id").hide().prevAll('input[type="text"]:first').attr("id",g.data("placeholder-id")).show()}else{var k=g.data("placeholder-password");k&&(k[0].value="",g.attr("id",g.data("placeholder-id")).show().nextAll('input[type="password"]:last').hide().removeAttr("id"))}g.addClass(n.customClass),g[0].value=g.attr(h?"placeholder-x":"placeholder")}else g.removeClass(n.customClass)}function e(){try{return document.activeElement}catch(a){}}var f,g,h=!1,i="[object OperaMini]"===Object.prototype.toString.call(window.operamini),j="placeholder"in document.createElement("input")&&!i&&!h,k="placeholder"in document.createElement("textarea")&&!i&&!h,l=a.valHooks,m=a.propHooks,n={};j&&k?(g=a.fn.placeholder=function(){return this},g.input=!0,g.textarea=!0):(g=a.fn.placeholder=function(b){var e={customClass:"placeholder"};return n=a.extend({},e,b),this.filter((j?"textarea":":input")+"["+(h?"placeholder-x":"placeholder")+"]").not("."+n.customClass).not(":radio, :checkbox, [type=hidden]").bind({"focus.placeholder":c,"blur.placeholder":d}).data("placeholder-enabled",!0).trigger("blur.placeholder")},g.input=j,g.textarea=k,f={get:function(b){var c=a(b),d=c.data("placeholder-password");return d?d[0].value:c.data("placeholder-enabled")&&c.hasClass(n.customClass)?"":b.value},set:function(b,f){var g,h,i=a(b);return""!==f&&(g=i.data("placeholder-textinput"),h=i.data("placeholder-password"),g?(c.call(g[0],!0,f)||(b.value=f),g[0].value=f):h&&(c.call(b,!0,f)||(h[0].value=f),b.value=f)),i.data("placeholder-enabled")?(""===f?(b.value=f,b!=e()&&d.call(b)):(i.hasClass(n.customClass)&&c.c
10917all(b),b.value=f),i):(b.value=f,i)}},j||(l.input=f,m.value=f),k||(l.textarea=f,m.value=f),a(function(){a(document).delegate("form","submit.placeholder",function(){var b=a("."+n.customClass,this).each(function(){c.call(this,!0,"")});setTimeout(function(){b.each(d)},10)})}),a(window).bind("beforeunload.placeholder",function(){var b=!0;try{"javascript:void(0)"===document.activeElement.toString()&&(b=!1)}catch(c){}b&&a("."+n.customClass).each(function(){this.value=""})}))});} catch (e) {} 10918 10919function JSVCGetResp() 10920{ 10921 if( request.mobile != "undefined" && (request.mobile == 2 || request.mobile == 1)) 10922 return true; 10923 else 10924 return false; 10925} 10926 10927 10928// No polyfill for indexOf for IE, as it causes error. 10929// default array proto chain already contain this function starting IE9 10930if (!Array.prototype.indexOf && !/MSIE/.test(navigator.userAgent)) 10931{ 10932 Array.prototype.indexOf = function(elt) 10933 { 10934 var len = this.length; 10935 10936 var from = Number(arguments[1]) || 0; 10937 from = (from < 0) 10938 ? Math.ceil(from) 10939 : Math.floor(from); 10940 if (from < 0) 10941 from += len; 10942 10943 for (; from < len; from++) 10944 { 10945 if (from in this && 10946 this[from] === elt) 10947 return from; 10948 } 10949 return -1; 10950 }; 10951} 10952 10953function JSVCcreateLoadingImage(size) { 10954 var newImg = document.createElement("img"); 10955 newImg.setAttribute("src",request.approot+"services/images/loading-anim.gif"); 10956 newImg.setAttribute("id","loadingImg"); 10957 if (size!=null) newImg.setAttribute("width",size); 10958 newImg.setAttribute("style","vertical-align:middle;padding-left:2px;"); 10959 return newImg; 10960} 10961function JSVCcreateLoadingBlock(type,timeout,cssparam) { // type=0 = loading, type=1 = uploading 10962 if(cssparam==null) cssparam=""; 10963 if(timeout==null) timeout = 30000; 10964 setInterval(JSVCLoadingTimeout, timeout); 10965 if(document.getElementById('loadingBlock')) 10966 var newBlock = document.getElementById('loadingBlock'); 10967 else 10968 { 10969 var newBlock = document.createElement("div"); 10970 newBlock.setAttribute("id","loadingBlock"); 10971 newBlock.setAttribute("align","center"); 10972 newBlock.setAttribute("style","width:100%;font-weight:bold;" + cssparam); 10973 } 10974 if(type==1) 10975 newBlock.innerHTML = JSVClang("Uploading, please wait...",32345); 10976 else 10977 newBlock.innerHTML = JSVClang("Loading, please wait...",7062); 10978 newBlock.appendChild( JSVCcreateLoadingImage() ); 10979 return newBlock; 10980} 10981function JSVCremoveLoadingImage() { 10982 if(document.getElementById('loadingImg'))document.getElementById('loadingImg').parentNode.removeChild( document.getElementById('loadingImg') ); 10983} 10984function JSVCremoveLoadingBlock() { 10985 if(document.getElementById('loadingBlock'))document.getElementById('loadingBlock').parentNode.removeChild( document.getElementById('loadingBlock') ); 10986} 10987function JSVCLoadingTimeout() { 10988 JSVCremoveLoadingImage(); 10989 if(document.getElementById('loadingBlock')) 10990 { 10991 document.getElementById('loadingBlock').innerHTML=JSVClang("There was an error processing the request. Please try again.",32346); 10992 } 10993} 10994 10995String.prototype.replaceAll = function(search, replacement) { 10996 var target = this; 10997 return target.replace(new RegExp(search, 'g'), replacement); 10998} 10999 11000function JSVCRepeatStr(str, count) 11001{ 11002 var array = []; 11003 for(var i = 0; i < count;) 11004 array[i++] = str; 11005 return array.join(''); 11006} 11007 11008function doEqualHeight(cls) { 11009 var swidth=$(window).width(), maxh = 0, elem; 11010 if(cls != null) 11011 elem = $('.'+cls); 11012 else 11013 elem = $('.equal-height'); 11014 elem.each(function() { 11015 $(this).height('auto'); 11016 if($(this).height() > maxh) 11017 maxh=$(this).height(); 11018 }); 11019 if (swidth > 991) //bootstrap large size >= 992px 11020 elem.each(function() { 11021 $(this).height(maxh); 11022 }); 11023} 11024 11025function winResize() { 11026 var doEH = $('.equal-height'); 11027 $(window).resize(function() { 11028 if (doEH.length != 0) 11029 doEqualHeight(); 11030 }); 11031} 11032 11033function JSVCGetALLAttributeByTagNameARR(htmltype,attribute,maxAllow,excludeARR,reqARR){ 11034 var typeGET = document.getElementsByTagName(htmltype); 11035 var typeARR = []; 11036 var maxAllow = maxAllow || 5; 11037 var excludeARR = excludeARR || []; 11038 var reqARR = reqARR || []; 11039 excludeARR.push('SRCHTYPE'); 11040 for(var i = 0; i < typeGET.length; i++){ 11041 var obj = JSVCall(typeGET[i].getAttribute(attribute)); 11042 var attributeresult = typeGET[i].getAttribute(attribute); 11043 if(obj !=null && !(obj.style.display=='none') && !(obj.disabled)){ 11044 if(htmltype=='select' && parseInt(maxAllow)>0){ 11045 obj.length>maxAllow? typeARR.push(attributeresult):''; 11046 }else{ 11047 typeARR.push(attributeresult); 11048 } 11049 } 11050 } 11051 typeARR = typeARR.filter( function( el ) { 11052 return excludeARR.indexOf( el ) < 0; 11053 } ); 11054 typeARR = typeARR.concat(reqARR); 11055 return typeARR; 11056} 11057 11058 11059function JSVCScrollTopBtn(varname,body,element,heightShow){ 11060 this.varname = varname || 'scrollTopBtn'; 11061 this.body = body || 0; 11062 this.element = element || 0; 11063 this.heightShow = heightShow || 500; 11064} 11065 11066JSVCScrollTopBtn.prototype.gen=function(){ 11067 document.write("<button onclick="+this.varname+".scrollTop() class='clsSVCScrollTopBtn'>↑</button>"); 11068} 11069 11070JSVCScrollTopBtn.prototype.show=function() { 11071 (document.body.scrollTop > this.heightShow || document.documentElement.scrollTop > this.heightShow) ? document.getElementsByClassName("clsSVCScrollTopBtn")[0].style.display = "block" : document.getElementsByClassName("clsSVCScrollTopBtn")[0].style.display = "none"; 11072} 11073 11074JSVCScrollTopBtn.prototype.scrollTop=function() { 11075 document.body.scrollTop = this.body; 11076 document.documentElement.scrollTop = this.element; 11077} 11078 11079function JSVCShowHideCol(col, hideFlag) { 11080 var tableRearrange=false; 11081 if(hideFlag==null) hideFlag=false; 11082 if(col==null) return; 11083 if(arguments.length > 2) tableRearrange=arguments[2]; 11084 if(typeof col=="string") { 11085 if(JSVCall(col)==null) return; 11086 col=$(JSVCall(col)); 11087 } 11088 else if(!(col instanceof jQuery)) { 11089 col=$(col); 11090 } 11091 col.css('display', (hideFlag?'none':'')); 11092 if(tableRearrange) JSVCRearrangeTable(col.closest('table')[0]); 11093} 11094 11095function JSVCRearrangeTable(tb, skipHeader) { 11096 var colCnt=0, tmp, tmpCol=0, tmpRow=0; 11097 var cols=[];
11098 if(typeof tb=='string') { 11099 tb=JSVCall(tb); 11100 } 11101 if(tb==null || tb.rows.length==0) return; 11102 if(skipHeader==null) skipHeader=1; // Skip Header row 11103 // Get visible columns count 11104 for(var i=0; i<tb.rows[0].cells.length; i++) { 11105 if(tb.rows[0].cells[i].style.display!='none') 11106 colCnt+=tb.rows[0].cells[i].colSpan; 11107 } 11108 // Collect all cells into array, exclude filler columns. 11109 for(var x=0, y=((skipHeader==1)?1:0), i=0; y<tb.rows.length; y++) { 11110 for(x=0, tmp=tb.rows[y].cells.length; x<tmp; x++) { 11111 if(tb.rows[y].firstChild.hasAttribute('filler_column')) 11112 tb.rows[y].removeChild(tb.rows[y].firstChild); 11113 else 11114 cols[i++] = tb.rows[y].removeChild(tb.rows[y].firstChild); 11115 } 11116 } 11117 // Rearrange table 11118 if(skipHeader==1) tmpRow=1; 11119 for(i=0, tmp=0; i<cols.length; i++, tmpCol++) { 11120 if(tmp>=colCnt) { 11121 tmpCol=0; 11122 tmp=0; 11123 tmpRow++; 11124 } 11125 if(tmpRow>=tb.rows.length) tb.insertRow(-1); 11126 tb.rows[tmpRow].appendChild(cols[i]); 11127 if(tb.rows[tmpRow].cells[tmpCol].style.display!='none') tmp+=tb.rows[tmpRow].cells[tmpCol].colSpan; 11128 } 11129 // Remove extra rows if any 11130 for(i=tb.rows.length-1; i>0; i--) { 11131 if(tb.rows[i].cells.length>=colCnt) break; 11132 if(tb.rows[i].cells.length==0) tb.deleteRow(i); 11133 else { 11134 // Add filler columns if less than other. 11135 for(var j=0,tmp=0; j<tb.rows[i].cells.length; j++) { 11136 if(tb.rows[i].cells[j].style.display!='none') 11137 tmp+=tb.rows[i].cells[tmp].colSpan; 11138 } 11139 if(tmp<colCnt) { 11140 for(j=0; j<(colCnt-tmp); j++) { 11141 tmpCol = document.createElement('td'); 11142 tmpCol.setAttribute('filler_column', 1); 11143 tb.rows[i].appendChild(tmpCol); 11144 } 11145 } 11146 } 11147 } 11148} 11149 11150// shiu: SVC list functions 11151function JSVCListHas(str,val,delim) { 11152 delim = (delim? delim: ','); 11153 11154 var arr = (str !== null 11155 && str !== undefined 11156 && typeof str === "string" 11157 && str.length >0 11158 )? str.split(delim): []; 11159 11160 var flag = false; 11161 var vstring = val.toString(); 11162 for(var i=0; i<arr.length; i++) { 11163 flag = (arr[i]===vstring); 11164 if(flag) break; 11165 } 11166 return flag; 11167} 11168 11169function JSVCListRemove(str,val,delim) { 11170 var arrVal=JSVCListToArray(str,delim); 11171 //console.log(JSVCListToArray(str,delim)); 11172 for(var i=0; i<arrVal.length;i++) { 11173 if(arrVal[i]==val) { 11174 arrVal.splice(i, 1); 11175 } 11176 } 11177 val=''; 11178 for(var i=0; i<arrVal.length;i++) { 11179 val=JSVCListAppend(val,arrVal[i],delim); 11180 } 11181 return val; 11182} 11183 11184function JSVCListAppend(str,val,delim,appendFn) { 11185 delim = (delim? delim: ','); 11186 appendFn = ( 11187 appendFn !== null 11188 && appendFn !== undefined 11189 && typeof appendFn === "function" 11190 )? appendFn: function (arr,val) { arr.push(val); } 11191 11192 var arr = (str !== null 11193 && str !== undefined 11194 && typeof str === "string" 11195 && str.length >0 11196 )? str.split(delim): []; 11197 11198 appendFn(arr,val); 11199 return arr.join(delim); 11200} 11201function JSVCListAppendUnique(str,val,delim) { 11202 var uniq = function (arr,val) { 11203 var isUniq = true; 11204 var vstring = val.toString(); 11205 for(var i=0; i<arr.length; i++){ 11206 isUniq = (arr[i] !== vstring) 11207 if(!isUniq) break; 11208 } 11209 if(isUniq) { 11210 arr.push(val); 11211 } 11212 }; 11213 return JSVCListAppend(str,val,delim,uniq); 11214} 11215function JSVCListDelete(str,val,delim,removeFn) { 11216 delim = (delim? delim: ','); 11217 removeFn = ( 11218 removeFn !== null 11219 && removeFn !== undefined 11220 && typeof removeFn === "function" 11221 )? removeFn: function (arr,val) { 11222 var vstring = val.toString(); 11223 for(var i=0;i<arr.length;i++) { 11224 if(arr[i] === vstring) { 11225 arr.splice(i,1); 11226 break; 11227 } 11228 } 11229 }; 11230 var arr = (str !== null 11231 && str !== undefined 11232 && typeof str === "string" 11233 && str.length >0 11234 )? str.split(delim): []; 11235 removeFn(arr,val); 11236 return arr.join(delim); 11237} 11238function JSVCListDeleteAt(str,idx,delim) { 11239 var removeFn = function (arr,val) { 11240 for(var i=arr.length-1;i>-1;i--) { 11241 if(i === idx) { 11242 arr.splice(i,1); 11243 break; 11244 } 11245 } 11246 }; 11247 return JSVCListDelete(str,undefined,delim,removeFn) 11248} 11249function JSVCListDeleteAll(str,val,delim) { 11250 var removeFn = function (arr,val) { 11251 var vstring = val.toString(); 11252 for(var i=arr.length-1;i>-1;i--) { 11253 if(arr[i] == vstring) { 11254 arr.splice(i,1); 11255 } 11256 } 11257 }; 11258 return JSVCListDelete(str,val,delim,removeFn) 11259} 11260function JSVCListToggle(str,val,delim) { 11261 var str2 = str; 11262 if(JSVCListHas(str,val,delim)) { 11263 str2 = JSVCListDeleteAll(str,val,delim) 11264 } else { 11265 str2 = JSVCListAppendUnique(str,val,delim) 11266 } 11267 return str2; 11268} 11269function JSVCListFilter(str,fn,delim) { 11270 // todo: implement 11271} 11272 11273// shiu: elements manipulation fns 11274function elsEach (els,fn,fnContext) { 11275 var temp = []; 11276 for(var i=0;i<els.length;i++){ 11277 var el = els[i]; 11278 fn.call(fnContext,el,i,els); 11279 temp.push(el); 11280 } 11281 return temp; 11282} 11283function elsMap (els,fn,fnContext) { 11284 var temp = []; 11285 for(var i=0;i<els.length;i++){ 11286 var el = els[i]; 11287 temp.push( fn.call(fnContext,el,i,els) ); 11288 } 11289 return temp; 11290} 11291function elsMapExtractor (els,fn,result) { 11292 var result = result || []; 11293 for(var i=0; i<els.length; i++) { 11294 var el = els[i]; 11295 if( fn(el,result) ) break; 11296 } 11297 return result; 11298} 11299function elsFilter(els,fn) { 11300 var temp = []; 11301 for(var i=0;i<els.length;i++){ 11302 var el = els[i]; 11303 var passed = fn(el,i,els); 11304 if(passed) temp.push(el); 11305 } 11306 return temp; 11307} 11308function elsGroup(els,fn) { 11309 var temp = {}; 11310 for(var i=0;i<els.length;i++){ 11311 var el = els[i]; 11312 11313 var key = fn(el); 11314 if(!temp.hasOwnProperty(key)) temp[key] = []; 11315 temp[key].push(el); 11316 } 11317 return temp; 11318} 11319 11320// shiu: single element fns 11321function elIs(el,specs) { 11322 if(!el) return false; 11323 11324 var temp,flag = true; 11325 for(var k in specs) { 11326 var valElem = el[k]; 11327 var valExp = specs[k]; 11328 var valExpType = valExp.constructor; 11329 11330 if(valExpType == Function) { 11331 temp = valExp.apply(el,[valElem]); 11332 } else { 11333 temp = (valElem==valExp); 11334 } 11335 flag = flag && temp; 11336 if(!flag) break; 11337 } 11338 return flag; 11339} 11340function elParent(el,specs) { 11341 var temp = null; 11342 if(el) { 11343 while( el.parentElement!==null 11344 && el.parentElement!==document.body 11345 ){ 11346 if( elIs(el.parentElement,specs) ) { 11347 temp = el.parentElement; 11348 } 11349 el = el.parentElement; 11350 } 11351 } 11352 return temp; 11353} 11354function elChildren(el,specs) { 11355 var temp = []; 11356 for(var i=0;i<el.children.length;i++) { 11357 var curr = el.children[i]; 11358 if(elIs(curr,specs)) { 11359 temp.push(curr); 11360 } 11361 } 11362 return temp; 11363} 11364function elIndex(el,breakCondition) { 11365 breakCondition = breakCondition || function (el) { return false; } 11366 var count = 0; 11367 while(el = el.previousElementSibling) { 11368 if(breakCondition(el)) {break;} 11369 count++; 11370 } 11371 return count; 11372} 11373function elHasClassName(el,className) { 11374 return JSVCListHas(el.className,className," "); 11375} 11376function elAppendClassName(el,className) { 11377 var appended = false; 11378 if(!elHasClassName(el,className)) { 11379 el.className = JSVCListAppend(el.className,className," "); 11380 appended = true; 11381 } 11382 return appended 11383} 11384function elRemoveClassName(el,className) { 11385 var removed = false; 11386 if(elHasClassName(el,className)) { 11387 el.className = JSVCListRemove(el.className,className," "); 11388 removed = true; 11389 } 11390 return removed; 11391} 11392function elHide(el) { 11393 if(!el) return 11394 if(!JSVCListHas(el.className,"hide"," ")) { 11395 el.className = JSVCListAppend(el.className,"hide"," "); 11396 } 11397} 11398function elShow(el) { 11399 if(!el) return 11400 el.className = JSVCListRemove(el.className,"hide"," "); 11401} 11402function elToggle(el) { 11403 if(!el) return 11404 if(!JSVCListHas(el.className,"hide"," ")) { 11405 el.className = JSVCListAppend(el.className,"hide"," "); 11406 } else { 11407 el.className = JSVCListRemove(el.className,"hide"," "); 11408 } 11409} 11410function elRemoveChildren (el,result) { 11411 result = result || []; 11412 while(el.firstElementChild) { 11413 result.unshift( 11414 el.removeChild(el.firstElementChild) 11415 ); 11416 } 11417 return result; 11418} 11419function elFilterInputs (formEl) { 11420 formEl = formEl || document; 11421 var selector = [ 11422 'textarea' 11423 ,'select'
11424 ,'input[type=text]' 11425 ,'input[type=hidden]' 11426 ,'input[type=password]' 11427 ,'input[type=radio]' 11428 ,'input[type=checkbox]' 11429 ] 11430 var nodelist = formEl.querySelectorAll(selector.join(",")); 11431 return nodelist; 11432} 11433 11434// form value getter + setter 11435function writeKey (el) { 11436 var tag = el.tagName.toLowerCase(); 11437 var type = (tag === "input"? el.type: ""); 11438 var multiple = (tag === "select" && el.multiple? "multiple": ""); 11439 11440 var k = [tag]; 11441 if(type.length>0) k.push(type); 11442 if(multiple.length>0) k.push(multiple); 11443 return k.join("."); 11444} 11445function writeName (el) { 11446 var name = el.name || "base"; 11447 return name; 11448} 11449function writeNameKey (el) { 11450 return writeName(el)+"."+writeKey(el); 11451} 11452// grouped interface 11453function getValueByGroup (groups,fnFilter) { 11454 var getters = function (type) { 11455 var fn = fnFilter || function(el) { return true; }; 11456 var target; 11457 switch(type) { 11458 case "textarea" : target = function (el,vals) { if(fn(el)) vals.push(el.value); }; break; 11459 case "input.text" : target = function (el,vals) { if(fn(el)) vals.push(el.value); }; break; 11460 case "input.hidden" : target = function (el,vals) { if(fn(el)) vals.push(el.value); }; break; 11461 case "input.password" : target = function (el,vals) { if(fn(el)) vals.push(el.value); }; break; 11462 case "input.radio" : target = function (el,vals) { if(fn(el) && el.checked) vals.push(el.value); return vals.length>0;}; break; 11463 case "input.checkbox" : target = function (el,vals) { if(fn(el) && el.checked) vals.push(el.value); }; break; 11464 case "select" : target = function (el,vals) { if(fn(el) && el.selected) vals.push(el.value); return vals.length>0;}; break; 11465 case "select.multiple": target = function (el,vals) { if(fn(el) && el.selected) vals.push(el.value); }; break; 11466 case "input.reset" : target = function (el,vals) {}; break; 11467 case "input.submit" : target = function (el,vals) {}; break; 11468 case "input.button" : target = function (el,vals) {}; break; 11469 case "button" : target = function (el,vals) {}; break; 11470 } 11471 return target; 11472 }; 11473 var result = {}; 11474 var fnTemp,arrTemp; 11475 11476 for(var g in groups) { 11477 fnTemp = getters(g); 11478 if( fnTemp.constructor===Function ) { 11479 if(g==="select" || g==="select.multiple") { 11480 for(var i=0; i<groups[g].length; i++) { 11481 var target = groups[g][i]; 11482 arrTemp = elsMapExtractor(target.options, fnTemp); 11483 } 11484 } else { 11485 arrTemp = elsMapExtractor(groups[g], fnTemp); 11486 } 11487 result[g] = arrTemp; 11488 } 11489 } 11490 return result; 11491} 11492function setValueByGroup (values,groups,fnFilter) { 11493 var setters = function (type) { 11494 var fn = fnFilter || function(el) { return true; }; 11495 var target; 11496 switch(type) { 11497 case "textarea" : target = function (el,vals) { var val = vals.shift(); if(val && fn(el)) el.value = val; }; break; 11498 case "input.text" : target = function (el,vals) { var val = vals.shift(); if(val && fn(el)) el.value = val; }; break; 11499 case "input.hidden" : target = function (el,vals) { var val = vals.shift(); if(val && fn(el)) el.value = val; }; break; 11500 case "input.password" : target = function (el,vals) { var val = vals.shift(); if(val && fn(el)) el.value = val; }; break; 11501 case "input.radio" : target = function (el,vals) { var idx = $.inArray(el.value , vals); if(idx>-1){ vals.splice(idx,1); }; if(fn(el)) el.checked = idx>-1; return idx>-1;}; break; 11502 case "input.checkbox" : target = function (el,vals) { var idx = $.inArray(el.value , vals); if(idx>-1){ vals.splice(idx,1); }; if(fn(el)) el.checked = idx>-1;}; break; 11503 case "select" : target = function (el,vals) { var idx = $.inArray(el.value , vals); if(idx>-1){ vals.splice(idx,1); }; if(fn(el)) el.selected = idx>-1; return idx>-1;}; break; 11504 case "select.multiple": target = function (el,vals) { var idx = $.inArray(el.value , vals); if(idx>-1){ vals.splice(idx,1); }; if(fn(el)) el.selected = idx>-1;}; break; 11505 case "input.reset" : target = function (el,vals) {}; break; 11506 case "input.submit" : target = function (el,vals) {}; break; 11507 case "input.button" : target = function (el,vals) {}; break; 11508 case "button" : target = function (el,vals) {}; break; 11509 } 11510 return target; 11511 }; 11512 var result = true; 11513 var fnTemp,arrTemp; 11514 11515 for(var g in groups) { 11516 fnTemp = setters(g); 11517 if( fnTemp.constructor===Function && values.hasOwnProperty(g) ) { 11518 if(g==="select" || g==="select.multiple") { 11519 for(var i=0; i<groups[g].length; i++) { 11520 var target = groups[g][i]; 11521 arrTemp = elsMapExtractor(target.options, fnTemp, values[g].slice(0)); 11522 } 11523 } else { 11524 arrTemp = elsMapExtractor(groups[g], fnTemp, values[g].slice(0)); 11525 } 11526 } 11527 result = result 11528 && arrTemp.constructor === Array 11529 && arrTemp.length==0; 11530 } 11531 return result; 11532} 11533// nodelist interface 11534if (!Object.keys) { 11535 Object.keys = function(obj) { 11536 var keys = []; 11537 11538 for (var i in obj) { 11539 if (obj.hasOwnProperty(i)) { 11540 keys.push(i); 11541 } 11542 } 11543 11544 return keys; 11545 }; 11546} 11547 11548function simplifyObj(obj) { 11549 var olen = Object.keys(obj); 11550 return olen>1? obj: obj[olen[0]]; 11551} 11552function getValueByNodelist(nodelist,fnFilter,isSimplified) { 11553 var temp = nodelist.length>0? getValueByGroup( elsGroup(nodelist,writeKey), fnFilter ): null; 11554 isSimplified = isSimplified !== undefined? isSimplified: true; 11555 return isSimplified? simplifyObj(temp): temp; 11556} 11557 11558function setValueByNodelist(values,nodelist,fnFilter) { 11559 var group, gKey; 11560 var temp = {}; 11561 var result = null; 11562 11563 if(!values || !nodelist) return result; 11564 group = elsGroup(nodelist,writeKey); 11565 gKey = Object.keys(group); 11566 11567 // patching of alternate parameter 11568 if(values.constructor===String && gKey.length==1) { 11569 temp[ gKey[0] ] = values.split(","); 11570 11571 } else if(values.constructor===Array && gKey.length==1) { 11572 temp[ gKey[0] ] = values; 11573 11574 } else if(values.constructor===Object){ 11575 temp = values; 11576 11577 } else { 11578 // proper error handling 11579 //throw "Invalid parameter" 11580 } 11581 11582 result = setValueByGroup(temp,group,fnFilter); 11583 return result; 11584} 11585// name interface 11586function getValueByName(name,fnFilter,isSimplified) { 11587 // return getValueByNodelist(document.getElementsByName(name),fnFilter,isSimplified); 11588 return getValueByNodelist( $('[name="'+name+'"]') ,fnFilter,isSimplified); 11589} 11590function setValueByName(values,name,fnFilter,isSimplified) { 11591 // return setValueByNodelist(values,document.getElementsByName(name),fnFilter,isSimplified); 11592 return setValueByNodelist(values,$('[name="'+name+'"]'),fnFilter,isSimplified); 11593} 11594// form interface 11595function getValuesByForm(formEl,fnFilter,isSimplified) { 11596 var nodelistGroup = elsGroup( elFilterInputs(formEl),writeName ); 11597 var result = {}; 11598 for(var n in nodelistGroup) { 11599 result[n] = getValueByNodelist(nodelistGroup[n],fnFilter,isSimplified); 11600 } 11601 return result; 11602} 11603function setValuesByForm(values,formEl,fnFilter) { 11604 var nodelistGroup = elsGroup( elFilterInputs(formEl),writeName ); 11605 var temp = {}; 11606 for(var k in nodelistGroup) { 11607 temp[k] = setValueByNodelist(values[k],nodelistGroup[k],fnFilter); 11608 } 11609 return temp; 11610} 11611function JSVCGetCompatMode() { 11612 var str = ""; 11613 str = document.compatMode + '|'; 11614 if(document.documentMode) 11615 str += document.documentMode; 11616 return str; 11617} 11618 11619function JSVCGenCustomDDL(name,value,list,delim) { 11620 var lst='',arr=[]; 11621 var sSel='_'+name; 11622 var html; 11623 html="<select id='"+sSel+"' style=width:100%;display:none;z-index:9;overflow:visible onblur=Revert(this) onkeydown=RevertKey(this)>"; 11624 if(JSVCListFindNoCase(list,value,delim)>=0) list+=value+'|'+value;
11625 html+=JSVCgenOptions(list,delim,value); 11626 html+='</select>'; 11627 html+='<input name='+name+' id='+name+' maxlength=500 VALUE="'+value+'" style="width:100%" onfocus=this.select() ondblclick=Invert(this,document.getElementById(\''+sSel+'\')) onkeydown=InvertKey(this,document.getElementById(\''+sSel+'\')) TITLE="#Server.SVClang("Press Down,Up or Enter to Select from List",5110)#"> <span class=clsColorNote>* Double click to select from List</span>'; 11628 return html; 11629} 11630function AJAXCaller(surl,type,async,retType) { 11631/*retType : 0 - Return JSON*/ 11632 var httpReq = new XMLHttpRequest(); 11633 var url = surl 11634 var responseHolder; 11635 var isAsync=false; 11636 11637 if(typeof async!=="undefined") { 11638 isAsync=async; 11639 } 11640 11641 httpReq.onreadystatechange = function() { 11642 if(this.readyState==4 && this.status==200) { 11643 switch(retType) { 11644 case 0: 11645 responseHolder=JSON.parse(this.responseText); 11646 return responseHolder; 11647 break; 11648 } 11649 } 11650 } 11651 11652 httpReq.onerror = function(e) { 11653 console.error(httpReq.statusText); 11654 } 11655 11656 if(type=='POST') { 11657 httpReq.opne(type,url,isAsync) 11658 httpReq.send(); 11659 } 11660} 11661 11662function JSVCModalDialog(address,width,height,scrollable,stopBackGround,options) 11663{ 11664 var width = width || 600; 11665 var height = height || 400; 11666 var scrollable = scrollable || true; 11667 var stopBackGround = stopBackGround || false; 11668 11669 var $frame = $('<iframe id="svcModalDialog" />'); 11670 var dialogueOption = { 11671 url: address, 11672 dialogArguments: null, 11673 height: height, 11674 width: width, 11675 position: 'center', 11676 resizable: true, 11677 title: 'Reference', 11678 scrollable: scrollable, 11679 onClose: function() { }, 11680 returnValue: null, 11681 modal: stopBackGround, 11682 doPostBackAfterCloseCallback: false, 11683 postBackElementId: null 11684 }; 11685 11686 //If option not defined in dialogueOption, add from options, else append/overwrite default. 11687 if(typeof options!=='undefined') { 11688 dialogueOption=$.extend({},dialogueOption,options); 11689 } 11690 11691 var fns = { 11692 close: function() { 11693 dialogueOption.returnValue = $dialog.returnValue; 11694 $dialog = null; 11695 dialogueOption.onClose(); 11696 if (dialogueOption.doPostBackAfterCloseCallback) { 11697 postBackForm(opts.postBackElementId); 11698 } 11699 }, 11700 adjustWidth: function() { $frame.css("width", "100%"); } 11701 }; 11702 11703 if(dialogueOption.scrollable) { 11704 $frame.css('overflow', 'auto'); 11705 } 11706 11707 $frame.css({ 11708 'padding': 0, 11709 'margin': 0, 11710 'padding-bottom': 10 11711 }); 11712 11713 var $dialogWindow = $frame.dialog({ 11714 autoOpen: true, 11715 modal: dialogueOption.modal, 11716 width: dialogueOption.width, 11717 height: dialogueOption.height, 11718 resizable: dialogueOption.resizable, 11719 position: dialogueOption.position, 11720 overlay: { 11721 opacity: 0.5, 11722 background: "black" 11723 }, 11724 close: fns.close, 11725 resizeStop: fns.adjustWidth 11726 }); 11727 11728 $frame.attr('src', dialogueOption.url); 11729 fns.adjustWidth(); 11730 11731 $frame.load(function() { 11732 if ($dialogWindow) { 11733 var maxTitleLength = 50; 11734 var title = dialogueOption.title; 11735 if (title.length > maxTitleLength) { 11736 title = title.substring(0, maxTitleLength) + '...'; 11737 } 11738 $dialogWindow.dialog('option', 'title', title); 11739 } 11740 }); 11741 11742 $dialog = new Object(); 11743 $dialog.dialogArguments = dialogueOption.dialogArguments; 11744 $dialog.dialogWindow = $dialogWindow; 11745 $dialog.returnValue = null; 11746} 11747 11748 11749function JSVCFieldConfig(ins, ct) { 11750 11751 if(typeof _CONST_FIELDS !== "undefined" && typeof addReqConfig == "function" && $.inArray( $('#selScreen').val(), ["CREATE_NEW","CHANGE_REG"] ) > -1 ) 11752 { 11753 _CONST_FIELDS = []; 11754 ScrapeFields(2); 11755 addReqConfig(); 11756 } 11757 else if(typeof _CONST_FIELDS !== "undefined" && typeof addReqConfig == "function" && $.inArray( $('#selScreen').val(), ["CREATE_NEW","CHANGE_REG"] ) == -1 && typeof _field_config_ctsel !== "undefined") 11758 { 11759 if(typeof _FCONFIG_DONE !== "undefined" && _FCONFIG_DONE == 1) 11760 return; 11761 _CONST_FIELDS = []; 11762 ScrapeFields(2,_FIELDS_MAINHEADER,_field_config_ctsel ); 11763 addReqConfig() 11764 } 11765 11766 // FIELD_CONFIG_JS global, populated from customtags/configfieldloader.cfm contains the compulsory/optional settings 11767 if(typeof FIELD_CONFIG_JS == "undefined") return; 11768 var conf_iINSGCOID = $('#ddlbInsurer').val() || ins, conf_ct = $('#_CLMTYPECTRL').val() || ct; 11769 if(typeof conf_iINSGCOID == 'undefined' || conf_iINSGCOID == 0 || typeof conf_ct == 'undefined' || conf_ct == 0) return false; 11770 11771 if( typeof FIELD_CONFIG_JS[conf_iINSGCOID] != 'undefined' && 11772 typeof FIELD_CONFIG_JS[conf_iINSGCOID][conf_ct] != 'undefined' ) 11773 { 11774 if(FIELD_CONFIG_JS[conf_iINSGCOID][conf_ct].REQ != "") 11775 JSVCSetReqList(FIELD_CONFIG_JS[conf_iINSGCOID][conf_ct].REQ,true); 11776 11777 if(FIELD_CONFIG_JS[conf_iINSGCOID][conf_ct].OPT != "") 11778 JSVCSetReqList(FIELD_CONFIG_JS[conf_iINSGCOID][conf_ct].OPT,false); 11779 } 11780 if(typeof FieldConfigChk === 'function') { 11781 if (typeof _CONST_FIELDS !== "undefined") { 11782 _FCONFIG_DONE = 1;
11783 FieldConfigChk(conf_iINSGCOID,conf_ct); 11784 } 11785 else 11786 { 11787 FieldConfigChk(conf_iINSGCOID,conf_ct); 11788 } 11789 } 11790 11791} 11792 11793function JSVCFieldReset() { 11794 11795 if(typeof _CONST_FIELDS !== "undefined" && typeof resetReqConfig == "function" && $.inArray( $('#selScreen').val(), ["CREATE_NEW","CHANGE_REG"] ) > -1 ) 11796 { 11797 resetReqConfig(); 11798 $('.set_chklbl').remove(); 11799 } 11800 11801 if(typeof FIELD_CONFIG_JS == "undefined") return; 11802 var conf_iINSGCOID = $('#ddlbInsurer').val(), conf_ct = $('#_CLMTYPECTRL').val(); 11803 if(typeof conf_iINSGCOID == 'undefined' || conf_iINSGCOID == 0 || typeof conf_ct == 'undefined' || conf_ct == 0) return false; 11804 11805 if( _old_FIELD_CONFIG_CT && typeof FIELD_CONFIG_JS[conf_iINSGCOID] != 'undefined' && 11806 typeof FIELD_CONFIG_JS[conf_iINSGCOID][_old_FIELD_CONFIG_CT] != 'undefined' ) 11807 { 11808 if(FIELD_CONFIG_JS[conf_iINSGCOID][_old_FIELD_CONFIG_CT].REQ != "") 11809 JSVCSetReqList(FIELD_CONFIG_JS[conf_iINSGCOID][_old_FIELD_CONFIG_CT].REQ,false); 11810 11811 if(FIELD_CONFIG_JS[conf_iINSGCOID][_old_FIELD_CONFIG_CT].OPT != "") 11812 JSVCSetReqList(FIELD_CONFIG_JS[conf_iINSGCOID][_old_FIELD_CONFIG_CT].OPT,true); 11813 } 11814} 11815 11816function JSVCEscapeHTML(s, forAttribute) { 11817 var ESC_CHR = { '&':'&', '<':'<', '>':'>', '"':'"', "'":''', "/":'/' } 11818 11819 if(!forAttribute) forAttribute=true 11820 11821 return s.replace(forAttribute ? /[&<>'"]/g : /[&<>]/g, function(c) { 11822 return ESC_CHR[c]; 11823 }); 11824} 11825 11826/* credit to: https://stackoverflow.com/questions/9804777/how-to-test-if-a-string-is-json-or-not*/ 11827function JSVCIsJson(item) { 11828 item = typeof item !== "string" 11829 ? JSON.stringify(item) 11830 : item; 11831 try { 11832 item = JSON.parse(item); 11833 } catch (e) { 11834 return false; 11835 } 11836 11837 if (typeof item === "object" && item !== null) { 11838 return true; 11839 } 11840 11841 return false; 11842} 11843function chkLoginName(obj) { 11844 var regexp = /^[\w$]+$/; 11845 if(obj && obj.value.trim().length>0 && !regexp.test(obj.value)) { 11846 alert(JSVClang('Only Alphanumeric (a-z, 0-9) and underscore (_) are allowed for User ID.')); 11847 obj.value = ""; 11848 return false; 11849 } 11850 return true; 11851} 11852 11853function JSVCChkDomUrl(mode, url, redir){ 11854 if(mode == null || mode == '') 11855 mode = -1; 11856 11857 if(redir == null || redir == '') 11858 redir = 0; 11859 11860 if(mode > 0){ 11861 var url = request.webroot + "index.cfm?fusebox=SVCobj&fuseaction=json_SVCChkRedirURL&mode=" + mode + "&oriurl=" + url + "&redir=" + redir + "&" + request.mtoken, o; 11862 o = MRMHTTPRequest("GET", url, null, null, JSVCRedirErr, null, null, null, null); 11863 11864 if(o.responseText != '' && o.responseText != null){ 11865 var ErrResponseText = /Error ID:[^0-9]*([0-9]+)[^0-9]*/i.exec(o.responseText); 11866 if(ErrResponseText){ 11867 str = 'An error occured. The error ID is : ' + ErrResponseText[1]; 11868 alert(str); 11869 return; 11870 } 11871 11872 var resp = JSON.parse(o.responseText); 11873 durl = resp.DURL, 11874 mode = resp.MODE, 11875 oriurl = resp.ORIURL, 11876 redir = resp.REDIR, 11877 type = resp.TYPE, 11878 wl = resp.WL; 11879 11880 if(mode == 2 && redir == 1){ 11881 if(wl == 1) 11882 window.location.href = oriurl; 11883 else 11884 JSVCRedirBlock(); 11885 }else{ 11886 return resp; 11887 } 11888 } 11889 } 11890} 11891 11892function JSVCRedirBlock(){ 11893 var title = 'Security Warning!'; 11894 var msg = 'The system detected a malicious redirect attempt. You are required to re-login to the system in order to restart the session.<br><br>You may contact Merimen support for further assistance.'; 11895 var btnstr = '<tr><td align=center><input type="button" class="clsButton" id="okBtn" value=" OK " onClick="window.location.href = \'' + request.webroot + 'index.cfm?fusebox=SVCsec&fuseaction=act_logout&root=MIC&' + request.mtoken + '\'"></td></tr>'; 11896 JSVCniceralert(msg, 0 , title, null, null, btnstr); 11897 return; 11898} 11899 11900function JSVCRedirErr(){ 11901 JSVCniceralert("System encountered an unexpected error. Please close this window and try again.", 0 ,"Unexpected Error."); 11902 return; 11903} 11904 11905function JSVCEncodeForJS(string){ 11906 return DOMPurify.sanitize(string); 11907} 11908 11909function JSVCEncodeForJSTEXT(string) { 11910 return DOMPurify.sanitize(string, { 11911 ALLOWED_TAGS: ['a', 'b', 'i', 'strong', 'em', 'u', 'span', 'div', 'p', 'br', 'hr'], 11912 ALLOWED_ATTR: ['href', 'title'] // Restrict attributes to only those relevant to allowed tags 11913 }); 11914} 11915 11916function checkSSTFormat(obj){ 11917 var chkCOMP = JSVCchkSvcTaxMY(obj); //Checking for format from #57364 11918 if (chkCOMP !== "") { 11919 var formattedMessage = chkCOMP = chkCOMP.replace(/<br\s*\/?>/gi, '\n'); 11920 alert(formattedMessage); // Use alert to show message with line breaks 11921 obj.value = ''; 11922 obj.focus(); 11923 } 11924} 11925 11926function checkSSTRegFormat (obj, nm){ 11927 var SST = JSVCall(nm + 'SSTRegNo'); // SST registration number field 11928 var SSTRegOpt1 = JSVCall('_' + nm + 'SSTRegOpt1'); // SST Registered? 11929 var SSTRegOpt0 = JSVCall('_' + nm + 'SSTRegOpt0'); 11930 if (obj.value === '') { 11931 return; 11932 } 11933 if (SSTRegOpt1.checked) { //Company Type (SST Registered:Yes) 11934 checkSSTFormat(obj); //Checking for format from #57364 11935 } else if (SSTRegOpt0.checked) { //Company Type (SST Registered:No) 11936 // No checking for the field 11937 } else { 11938 // If neither option is checked - For individual 11939 var checkFormat = /^[0-9a-zA-Z\-]+$/; 11940 if (checkFormat.test(obj.value) == false) { 11941 alert("Invalid SST Registration No. No special character allowed except for (-)"); 11942 obj.value = ''; 11943 obj.focus(); 11944 } 11945 } 11946 DoReq(SST); 11947} 11948 11949function checkTINFormat(obj,selIND){ 11950 var str = JSVCIDChkTIN(obj,selIND); 11951 if (str!=""){ 11952 alert(str); 11953 obj.value = ''; 11954 obj.focus(); 11955 } 11956} 11957 11958function TINGSTFieldChk(obj,nm,nm2){ 11959 var TIN=JSVCall(nm2+'TIN'); 11960 var SST=JSVCall(nm2+'SSTRegNo'); 11961 11962 if(TIN!=null){ 11963 if($("#_"+nm+"IND").is(':checked')){ 11964 TIN.setAttribute('CHKREQUIRED',0); 11965 $('#'+nm2+'tin-note').hide(); 11966 11967 } 11968 else if($("#_"+nm+"COM").is(':checked')){ 11969 TIN.setAttribute('CHKREQUIRED',1); 11970 $('#'+nm2+'tin-note').show(); 11971 } 11972 DoReq(TIN);
11973 } 11974 11975 /* 11976 if(SST!=null){ 11977 if($("#_"+nm+"IND").is(':checked')){ 11978 SST.setAttribute('CHKREQUIRED',0); 11979 11980 } 11981 else if($("#_"+nm+"COM").is(':checked')){ 11982 SST.setAttribute('CHKREQUIRED',1); 11983 } 11984 DoReq(SST); 11985 } 11986 */ 11987} 11988//#55723: SST Registered? Field Visibility function 11989function SSTFieldOpt(obj, nm, nm2) { 11990 var row = $("#TR" + nm2 + "SSTRegOpt"); 11991 11992 if ($("#_" + nm + "IND").is(':checked')) { 11993 // Hide the SST Registered options when Individual is checked 11994 row.hide(); 11995 } else if ($("#_" + nm + "COM").is(':checked')) { 11996 // Show the SST Registered options when Company is checked 11997 row.show(); 11998 } 11999} 12000 12001 12002//#55723 12003function SSTFieldChk(obj, nm) { 12004 var SST = JSVCall('_' + nm + 'SSTRegNo'); // Get the SST registration number field 12005 12006 if ($("#_" + nm + "SSTRegOpt1").is(':checked')) { 12007 // Mandatory for SST registration number field if SST Registered?=Yes 12008 SST.setAttribute('CHKREQUIRED',1); 12009 } else if ($("#_" + nm + "SSTRegOpt0").is(':checked')) { 12010 // Optional for SST registration number field if SST Registered?=No 12011 SST.removeAttribute('CHKREQUIRED'); 12012 } 12013 DoReq(SST); 12014}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.