2
// -----------------------------------------------------------------------------
3
// $Id: general.js 4486 2008-02-01 21:23:06Z larshelg $
4
// -----------------------------------------------------------------------------
6
// -----------------------------------------------------------------------------
8
function organisationUnitSelected( orgUnits )
10
window.location.href = 'select.action';
13
selection.setListenerFunction( organisationUnitSelected );
15
function changeOrder()
17
window.open( 'getDataElementOrder.action', '_blank', 'width=700,height=500,scrollbars=yes' );
20
// -----------------------------------------------------------------------------
22
// -----------------------------------------------------------------------------
24
function commentSelected( dataElementId )
26
var commentSelector = document.getElementById( 'value[' + dataElementId + '].comments' );
27
var commentField = document.getElementById( 'value[' + dataElementId + '].comment' );
29
var value = commentSelector.options[commentSelector.selectedIndex].value;
31
if ( value == 'custom' )
33
commentSelector.style.display = 'none';
34
commentField.style.display = 'inline';
36
commentField.select();
41
commentField.value = value;
43
saveComment( dataElementId, value );
47
function commentLeft( dataElementId )
49
var commentField = document.getElementById( 'value[' + dataElementId + '].comment' );
50
var commentSelector = document.getElementById( 'value[' + dataElementId + '].comments' );
52
saveComment( dataElementId, commentField.value );
54
var value = commentField.value;
58
commentField.style.display = 'none';
59
commentSelector.style.display = 'inline';
61
commentSelector.selectedIndex = 0;
65
// -----------------------------------------------------------------------------
67
// -----------------------------------------------------------------------------
69
function trim( stringToTrim )
71
return stringToTrim.replace(/^\s+|\s+$/g,"");
74
// -----------------------------------------------------------------------------
75
// Linelisting LiveBirth Related Methods for Validation
76
// -----------------------------------------------------------------------------
78
function isLLBNameFiledEntered( recordNo )
80
var dataElementId = 1020;
81
var field = document.getElementById( 'value[' + dataElementId + '].value:value[' + recordNo + '].value' );
82
var resVal = field.value;
84
if(resVal == null || resVal.replace(/^\s\s*/, '').replace(/\s\s*$/, '') == "" )
86
alert("Please enter NAME");
95
function isLLBVillageFiledEntered( recordNo )
97
var dataElementId = 1021;
98
var field = document.getElementById( 'value[' + dataElementId + '].value:value[' + recordNo + '].value' );
99
var resVal = field.value;
101
if(resVal == null || resVal.replace(/^\s\s*/, '').replace(/\s\s*$/, '') == "" )
103
alert("Please enter VILLAGE");
112
function isLLBSexFieldEntered( recordNo )
115
var dataElementId = 1022;
116
var field = document.getElementById( 'value[' + dataElementId + '].value:value[' + recordNo + '].value' );
117
var resVal = field.selectedIndex;
121
alert("Please enter SEX");
129
function isLLBDOBFiledEntered( recordNo )
131
var dataElementId = 1023;
132
var field = document.getElementById( 'value[' + dataElementId + '].value:value[' + recordNo + '].value' );
133
var resVal = field.value;
135
if(resVal == null || resVal.replace(/^\s\s*/, '').replace(/\s\s*$/, '') == "" )
137
alert("Please enter DOB");
146
function isLLBWeightFiledEntered( recordNo )
148
var dataElementId = 1024;
149
var field = document.getElementById( 'value[' + dataElementId + '].value:value[' + recordNo + '].value' );
150
var resVal = field.value;
152
if(resVal == null || resVal.replace(/^\s\s*/, '').replace(/\s\s*$/, '') == "" )
154
alert("Please enter Weight");
163
function isLLBBreastFedFiledEntered( )
165
if(lastRecordNo == -1) return true;
167
var dataElementId = 1025;
168
var field = document.getElementById( 'value[' + dataElementId + '].value:value[' + lastRecordNo + '].value' );
169
var resVal = field.selectedIndex;
173
alert("Please enter BreasFeeding Field in Previous Record");
182
function validateLLBNameField( dataElementId, recordNo )
184
var field = document.getElementById( 'value[' + dataElementId + '].value:value[' + recordNo + '].value' );
185
var resVal = field.value;
186
resVal = resVal.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
188
if(isLLBBreastFedFiledEntered( ))
190
if(resVal == null || resVal == "" )
192
alert("Please enter name");
198
saveLLbirthValue( dataElementId, recordNo );
199
saveLLBSexValue( 1022, recordNo );
209
function validateLLBVillageField( dataElementId, recordNo )
211
var field = document.getElementById( 'value[' + dataElementId + '].value:value[' + recordNo + '].value' );
212
var resVal = field.value;
213
resVal = resVal.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
215
if(isLLBNameFiledEntered( recordNo ))
217
if(resVal == null || resVal == "" )
219
alert("Please enter village");
225
saveLLbirthValue( dataElementId, recordNo );
235
function validateLLBSexField( dataElementId, recordNo )
237
var field = document.getElementById( 'value[' + dataElementId + '].value:value[' + recordNo + '].value' );
238
var resVal = field.selectedIndex;
240
if(isLLBVillageFiledEntered( recordNo ))
244
alert("Please Select Sex");
245
field.options[0].selected = true;
251
saveLLbirthValue( dataElementId, recordNo );
255
field.options[1].selected = true;
261
function validateLLBDOBField( dataElementId, recordNo )
263
var field = document.getElementById( 'value[' + dataElementId + '].value:value[' + recordNo + '].value' );
264
var resVal = field.value;
265
resVal = resVal.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
267
if( isLLBSexFieldEntered( recordNo ) )
271
saveLLbirthValue( dataElementId, recordNo );
287
function validateLLBWeightField( dataElementId, recordNo )
289
var field = document.getElementById( 'value[' + dataElementId + '].value:value[' + recordNo + '].value' );
290
var resVal = field.value;
291
resVal = resVal.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
293
if(isLLBDOBFiledEntered( recordNo ))
295
if(resVal == null || resVal == "" )
303
if( isInteger(resVal) || resVal.toUpperCase() == "NK" )
305
saveLLbirthValue( dataElementId, recordNo );
309
alert("Please enter weight in Grams");
324
function validateLLBBreastFedField( dataElementId, recordNo )
326
var field = document.getElementById( 'value[' + dataElementId + '].value:value[' + recordNo + '].value' );
327
var resVal = field.selectedIndex;
329
if(isLLBWeightFiledEntered( recordNo ))
333
alert("Please Select BreastFed Option");
334
field.options[0].selected = true;
340
//saveLLBValue( dataElementId, recordNo );
341
saveLLbirthValue( dataElementId, recordNo );
343
addLLBNewRow( resVal, 1020, recordNo )
347
field.options[0].selected = true;
353
function saveLLBSexValue( dataElementId, recordNo )
355
var field = document.getElementById( 'value[' + dataElementId + '].value:value[' + recordNo + '].value' );
358
field.style.backgroundColor = '#ffffcc';
360
field.options[1].selected = true;
361
resVal = field.options[field.selectedIndex].value;
362
if(resVal == "NONE") return;
366
var deIdRecordNo = dataElementId + ":" + recordNo;
367
var valueSaver = new ValueSaver( deIdRecordNo, resVal, '#ccffcc' );
372
function saveLLBValue( dataElementId, recordNo )
374
var llbDeIds = Array();
382
for(i = 0; i < llbDeIds.length; i++)
384
dataElementId = llbDeIds[i];
385
var field = document.getElementById( 'value[' + dataElementId + '].value:value[' + recordNo + '].value' );
388
field.style.backgroundColor = '#ffffcc';
390
if(dataElementId == 1022 || dataElementId == 1025 || dataElementId == 1029 || dataElementId == 1030 || dataElementId == 1031 || dataElementId == 1035 || dataElementId == 1036 || dataElementId == 1037 || dataElementId == 1038 || dataElementId == 1039 || dataElementId == 1040 || dataElementId == 1043 || dataElementId == 1046 || dataElementId == 1050 || dataElementId == 1051 || dataElementId == 1052 || dataElementId == 1054)
392
resVal = field.options[field.selectedIndex].value;
393
if(resVal == "NONE") return;
396
resVal = field.value;
400
var deIdRecordNo = dataElementId + ":" + recordNo;
401
var valueSaver = new ValueSaver( deIdRecordNo, resVal, '#ccffcc' );
407
// -----------------------------------------------------------------------------
408
// Linelisting LiveBirth Related Methods for Validation
409
// -----------------------------------------------------------------------------
411
function isLLDNameFiledEntered( recordNo )
413
var dataElementId = 1027;
414
var field = document.getElementById( 'value[' + dataElementId + '].value:value[' + recordNo + '].value' );
415
var resVal = field.value;
417
if(resVal == null || resVal.replace(/^\s\s*/, '').replace(/\s\s*$/, '') == "" )
419
alert("Please enter NAME");
428
function isLLDVillageFiledEntered( recordNo )
430
var dataElementId = 1028;
431
var field = document.getElementById( 'value[' + dataElementId + '].value:value[' + recordNo + '].value' );
432
var resVal = field.value;
434
if(resVal == null || resVal.replace(/^\s\s*/, '').replace(/\s\s*$/, '') == "" )
436
alert("Please enter VILLAGE");
445
function isLLDSexFieldEntered( recordNo )
447
var dataElementId = 1029;
448
var field = document.getElementById( 'value[' + dataElementId + '].value:value[' + recordNo + '].value' );
449
var resVal = field.selectedIndex;
453
alert("Please enter SEX");
461
function isLLDAgeCategoryFieldEntered( recordNo )
463
var dataElementId = 1030;
464
var field = document.getElementById( 'value[' + dataElementId + '].value:value[' + recordNo + '].value' );
465
var resVal = field.selectedIndex;
469
alert("Please enter AGE CATEGORY");
477
function isLLDPCDFieldEntered( )
479
if(lastRecordNo == -1) return true;
481
var dataElementId = 1031;
482
var field = document.getElementById( 'value[' + dataElementId + '].value:value[' + lastRecordNo + '].value' );
483
var resVal = field.selectedIndex;
487
alert("Please enter CAUSE OF DEATH");
495
function validateLLDNameField( dataElementId, recordNo )
497
var field = document.getElementById( 'value[' + dataElementId + '].value:value[' + recordNo + '].value' );
498
var resVal = field.value;
499
resVal = resVal.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
501
if(isLLDPCDFieldEntered( ))
503
if(resVal == null || resVal == "" )
505
alert("Please enter name");
511
saveLLbirthValue( dataElementId, recordNo );
512
saveLLBSexValue( 1029, recordNo )
523
function validateLLDVillageField( dataElementId, recordNo )
525
var field = document.getElementById( 'value[' + dataElementId + '].value:value[' + recordNo + '].value' );
526
var resVal = field.value;
527
resVal = resVal.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
529
if(isLLDNameFiledEntered( recordNo ))
531
if(resVal == null || resVal == "" )
533
alert("Please enter village");
539
saveLLbirthValue( dataElementId, recordNo );
549
function validateLLDSexField( dataElementId, recordNo )
551
var field = document.getElementById( 'value[' + dataElementId + '].value:value[' + recordNo + '].value' );
552
var resVal = field.selectedIndex;
554
if(isLLDVillageFiledEntered( recordNo ))
558
alert("Please Select Sex");
559
field.options[1].selected = true;
565
saveLLbirthValue( dataElementId, recordNo );
569
field.options[1].selected = true;
575
function validateLLDAgeCategoryField( dataElementId, recordNo )
577
var field = document.getElementById( 'value[' + dataElementId + '].value:value[' + recordNo + '].value' );
578
var resVal = field.selectedIndex;
580
if(isLLDSexFieldEntered( recordNo ))
584
alert("Please Select Age Category");
585
field.options[0].selected = true;
591
saveLLbirthValue( dataElementId, recordNo );
595
field.options[0].selected = true;
601
function validateLLDPCDField( dataElementId, recordNo )
603
var field = document.getElementById( 'value[' + dataElementId + '].value:value[' + recordNo + '].value' );
604
var resVal = field.selectedIndex;
606
if(isLLDAgeCategoryFieldEntered( recordNo ))
610
alert("Please enter Cause for Death");
611
field.options[0].selected = true;
617
saveLLbirthValue( dataElementId, recordNo );
619
addLLDNewRow( resVal, 1027, recordNo )
623
field.options[0].selected = true;
629
// -----------------------------------------------------------------------------
630
// Linelisting Maternal Death Related Methods for Validation
631
// -----------------------------------------------------------------------------
633
function isLLMDNameFiledEntered( recordNo )
635
var dataElementId = 1032;
636
var field = document.getElementById( 'value[' + dataElementId + '].value:value[' + recordNo + '].value' );
637
var resVal = field.value;
639
if(resVal == null || resVal.replace(/^\s\s*/, '').replace(/\s\s*$/, '') == "" )
641
alert("Please enter NAME");
650
function isLLMDVillageFiledEntered( recordNo )
652
var dataElementId = 1033;
653
var field = document.getElementById( 'value[' + dataElementId + '].value:value[' + recordNo + '].value' );
654
var resVal = field.value;
656
if(resVal == null || resVal.replace(/^\s\s*/, '').replace(/\s\s*$/, '') == "" )
658
alert("Please enter VILLAGE");
667
function isLLMDAgeFiledEntered( recordNo )
669
var dataElementId = 1034;
670
var field = document.getElementById( 'value[' + dataElementId + '].value:value[' + recordNo + '].value' );
671
var resVal = field.value;
673
if(resVal == null || resVal.replace(/^\s\s*/, '').replace(/\s\s*$/, '') == "" )
675
alert("Please enter AGE AT DEATH");
684
function isLLMDDuringFieldEntered( recordNo )
686
var dataElementId = 1035;
687
var field = document.getElementById( 'value[' + dataElementId + '].value:value[' + recordNo + '].value' );
688
var resVal = field.selectedIndex;
692
alert("Please enter DEATH DURING");
700
function isLLMDDeliveryAtFieldEntered( recordNo )
702
var dataElementId = 1036;
703
var field = document.getElementById( 'value[' + dataElementId + '].value:value[' + recordNo + '].value' );
704
var resVal = field.selectedIndex;
708
alert("Please select DELIVERY AT");
716
function isLLMDDeliveryByFieldEntered( recordNo )
718
var dataElementId = 1037;
719
var field = document.getElementById( 'value[' + dataElementId + '].value:value[' + recordNo + '].value' );
720
var resVal = field.selectedIndex;
724
alert("Please select DELIVERY BY");
732
function isLLMDCauseFieldEntered( recordNo )
734
var dataElementId = 1038;
735
var field = document.getElementById( 'value[' + dataElementId + '].value:value[' + recordNo + '].value' );
736
var resVal = field.selectedIndex;
740
alert("Please select CAUSE FOR DEATH");
748
function isLLMDAuditedFieldEntered( )
750
if(lastRecordNo == -1) return true;
752
var dataElementId = 1039;
753
var field = document.getElementById( 'value[' + dataElementId + '].value:value[' + lastRecordNo + '].value' );
754
var resVal = field.selectedIndex;
758
alert("Please enter IS AUDITED");
766
function validateLLMDNameField( dataElementId, recordNo )
768
var field = document.getElementById( 'value[' + dataElementId + '].value:value[' + recordNo + '].value' );
769
var resVal = field.value;
770
resVal = resVal.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
772
if(isLLMDAuditedFieldEntered( ))
774
if(resVal == null || resVal == "" )
776
alert("Please enter name");
782
saveLLbirthValue( dataElementId, recordNo );
792
function validateLLMDVillageField( dataElementId, recordNo )
794
var field = document.getElementById( 'value[' + dataElementId + '].value:value[' + recordNo + '].value' );
795
var resVal = field.value;
796
resVal = resVal.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
798
if(isLLMDNameFiledEntered( recordNo ))
800
if(resVal == null || resVal == "" )
802
alert("Please enter village");
808
saveLLbirthValue( dataElementId, recordNo );
818
function validateLLMDAgeAtDeathField( dataElementId, recordNo )
820
var field = document.getElementById( 'value[' + dataElementId + '].value:value[' + recordNo + '].value' );
821
var resVal = field.value;
822
var resVal = resVal.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
824
if(isLLMDVillageFiledEntered( recordNo ))
826
if(resVal == null || resVal == "" )
834
if( isInteger( resVal) && parseInt(resVal) >= 15 && parseInt(resVal) < 50 )
836
saveLLbirthValue( dataElementId, recordNo );
840
alert("Please enter valid AGE (between 15 - 50)");
855
function validateLLMDDuringField( dataElementId, recordNo )
857
var field = document.getElementById( 'value[' + dataElementId + '].value:value[' + recordNo + '].value' );
858
var resVal = field.selectedIndex;
860
if(isLLMDAgeFiledEntered( recordNo ))
864
alert("Please Enter Death During");
865
field.options[0].selected = true;
871
saveLLbirthValue( dataElementId, recordNo );
875
field.options[0].selected = true;
881
function validateLLMDDeliveryAtField( dataElementId, recordNo )
883
var field = document.getElementById( 'value[' + dataElementId + '].value:value[' + recordNo + '].value' );
884
var resVal = field.selectedIndex;
886
if(isLLMDDuringFieldEntered( recordNo ))
890
alert("Please Enter Delivery At");
891
field.options[0].selected = true;
897
saveLLbirthValue( dataElementId, recordNo );
901
field.options[0].selected = true;
907
function validateLLMDDeliveryByField( dataElementId, recordNo )
909
var field = document.getElementById( 'value[' + dataElementId + '].value:value[' + recordNo + '].value' );
910
var resVal = field.selectedIndex;
912
if(isLLMDDeliveryAtFieldEntered( recordNo ))
916
alert("Please Enter Delivery By");
917
field.options[0].selected = true;
923
saveLLbirthValue( dataElementId, recordNo );
927
field.options[0].selected = true;
933
function validateLLMDCauseField( dataElementId, recordNo )
935
var field = document.getElementById( 'value[' + dataElementId + '].value:value[' + recordNo + '].value' );
936
var resVal = field.selectedIndex;
938
if(isLLMDDeliveryByFieldEntered( recordNo ))
942
alert("Please Enter Cuase for Death");
943
field.options[0].selected = true;
949
saveLLbirthValue( dataElementId, recordNo );
953
field.options[0].selected = true;
959
function validateLLMDAuditedField( dataElementId, recordNo )
961
var field = document.getElementById( 'value[' + dataElementId + '].value:value[' + recordNo + '].value' );
962
var resVal = field.selectedIndex;
964
if(isLLMDCauseFieldEntered( recordNo ))
968
alert("Please enter Is Audited or not");
969
field.options[0].selected = true;
975
saveLLbirthValue( dataElementId, recordNo );
977
addLLMDNewRow( resVal, 1032, recordNo )
981
field.options[0].selected = true;
987
// -----------------------------------------------------------------------------
988
// Date Validation for Linelisting
989
// -----------------------------------------------------------------------------
991
// Declaring valid date character, minimum year and maximum year
996
function isInteger(s)
999
for (i = 0; i < s.length; i++)
1001
// Check that current character is number.
1002
var c = s.charAt(i);
1003
if (((c < "0") || (c > "9"))) return false;
1005
// All characters are numbers.
1009
function stripCharsInBag(s, bag)
1012
var returnString = "";
1014
// Search through string's characters one by one.
1015
// If character is not in bag, append to returnString.
1016
for (i = 0; i < s.length; i++)
1018
var c = s.charAt(i);
1019
if (bag.indexOf(c) == -1) returnString += c;
1022
return returnString;
1025
function daysInFebruary (year)
1027
// February has 29 days in any year evenly divisible by four,
1028
// EXCEPT for centurial years which are not also divisible by 400.
1030
return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
1033
function DaysArray(n)
1035
for (var i = 1; i <= n; i++)
1038
if (i==4 || i==6 || i==9 || i==11) {
1049
function isDate(dtStr)
1051
var daysInMonth = DaysArray(12)
1052
var pos1=dtStr.indexOf(dtCh)
1053
var pos2=dtStr.indexOf(dtCh,pos1+1)
1055
var strYear=dtStr.substring(0,pos1)
1056
var strMonth=dtStr.substring(pos1+1,pos2)
1057
var strDay=dtStr.substring(pos2+1)
1058
var strMonthWithZero = strMonth
1059
var strDayWithZero = strDay
1061
//var strMonth=dtStr.substring(0,pos1)
1062
//var strDay=dtStr.substring(pos1+1,pos2)
1063
//var strYear=dtStr.substring(pos2+1)
1064
var currentDate= new Date();
1065
var mm = currentDate.getMonth()+1;
1066
var dd = currentDate.getDate();
1067
ms = new String(mm);
1068
ds = new String(dd);
1069
if ( ms.length == 1 ) ms = "0" + ms;
1070
if ( ds.length == 1 ) ds = "0" + ds;
1071
var dateString = currentDate.getFullYear() + "-" + ms + "-" + ds;
1074
if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
1075
if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
1076
for (var i = 1; i <= 3; i++)
1078
if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
1080
month=parseInt(strMonth)
1081
day=parseInt(strDay)
1082
year=parseInt(strYr)
1083
if (pos1==-1 || pos2==-1 || strMonthWithZero.length<2 || strDayWithZero.length<2 )
1085
alert("The date format should be : yyyy-mm-dd")
1089
if (strMonth.length<1 || month<1 || month>12)
1091
alert("Please enter a valid month")
1094
if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month])
1096
alert("Please enter a valid day")
1099
if (strYear.length != 4 || year==0 || year<minYear || year>maxYear)
1101
alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear)
1104
if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false)
1106
alert("Please enter a valid date")
1109
if(dtStr > dateString)
1111
alert("The Date is greater than Today's Date");
1117
function isInteger(s)
1120
return n.length > 0 && !(/[^0-9]/).test(n);
1123
// -----------------------------------------------------------------------------
1125
// -----------------------------------------------------------------------------
1127
function saveLLbirthValue( dataElementId, recordNo )
1129
var field = document.getElementById( 'value[' + dataElementId + '].value:value[' + recordNo + '].value' );
1132
field.style.backgroundColor = '#ffffcc';
1134
if(dataElementId == 1022 || dataElementId == 1025 || dataElementId == 1029 || dataElementId == 1030 || dataElementId == 1031 || dataElementId == 1035 || dataElementId == 1036 || dataElementId == 1037 || dataElementId == 1038 || dataElementId == 1039 || dataElementId == 1040 || dataElementId == 1043 || dataElementId == 1046 || dataElementId == 1050 || dataElementId == 1051 || dataElementId == 1052 || dataElementId == 1054)
1136
resVal = field.options[field.selectedIndex].value;
1137
if(resVal == "NONE") return;
1140
resVal = field.value;
1144
var deIdRecordNo = dataElementId + ":" + recordNo;
1145
var valueSaver = new ValueSaver( deIdRecordNo, resVal, '#ccffcc' );
1155
function saveValue( dataElementId, dataElementName )
1157
var field = document.getElementById( 'value[' + dataElementId + '].value' );
1158
var type = document.getElementById( 'value[' + dataElementId + '].type' ).innerHTML;
1160
field.style.backgroundColor = '#ffffcc';
1162
if ( field.value != '' )
1164
if ( type == 'int' )
1166
if ( !isInt( field.value ))
1168
field.style.backgroundColor = '#ffcc00';
1170
window.alert( i18n_value_must_integer + '\n\n' + dataElementName );
1179
var minString = document.getElementById( 'value[' + dataElementId + '].min' ).innerHTML;
1180
var maxString = document.getElementById( 'value[' + dataElementId + '].max' ).innerHTML;
1182
if ( minString.length != 0 && maxString.length != 0 )
1184
var value = new Number( field.value );
1185
var min = new Number( minString );
1186
var max = new Number( maxString );
1190
var valueSaver = new ValueSaver( dataElementId, field.value, '#ffcccc' );
1193
window.alert( i18n_value_of_data_element_less + '\n\n' + dataElementName );
1200
var valueSaver = new ValueSaver( dataElementId, field.value, '#ffcccc' );
1203
window.alert( i18n_value_of_data_element_greater + '\n\n' + dataElementName);
1212
var valueSaver = new ValueSaver( dataElementId, field.value, '#ccffcc' );
1217
calculateCDE(dataElementId);
1222
function saveBoolean( dataElementId )
1224
var select = document.getElementById( 'value[' + dataElementId + '].boolean' );
1226
select.style.backgroundColor = '#ffffcc';
1228
var valueSaver = new ValueSaver( dataElementId, select.options[select.selectedIndex].value, '#ccffcc' );
1232
function saveComment( dataElementId, commentValue )
1234
var field = document.getElementById( 'value[' + dataElementId + '].comment' );
1235
var select = document.getElementById( 'value[' + dataElementId + '].comments' );
1237
field.style.backgroundColor = '#ffffcc';
1238
select.style.backgroundColor = '#ffffcc';
1240
var commentSaver = new CommentSaver( dataElementId, commentValue );
1241
commentSaver.save();
1244
function isInt( value )
1246
var number = new Number( value );
1248
if ( isNaN( number ))
1256
// -----------------------------------------------------------------------------
1258
// -----------------------------------------------------------------------------
1260
function ValueSaver( dataElementId_, value_, resultColor_ )
1262
var SUCCESS = '#ccffcc';
1263
var ERROR = '#ccccff';
1265
var dataElementId = dataElementId_;
1267
var resultColor = resultColor_;
1269
this.save = function()
1271
var request = new Request();
1272
request.setCallbackSuccess( handleResponse );
1273
request.setCallbackError( handleHttpError );
1274
request.setResponseTypeXML( 'status' );
1275
request.send( 'saveValue.action?dataElementId=' +
1276
dataElementId + '&value=' + value );
1279
function handleResponse( rootElement )
1281
var codeElement = rootElement.getElementsByTagName( 'code' )[0];
1282
var code = parseInt( codeElement.firstChild.nodeValue );
1288
markValue( resultColor );
1292
//var timestampElement = rootElement.getElementsByTagName( 'timestamp' )[0];
1293
//var timestampField = document.getElementById( 'value[' + dataElementId + '].timestamp' );
1294
//textNode = timestampElement.firstChild;
1296
//timestampField.innerHTML = ( textNode ? textNode.nodeValue : '' );
1298
//var storedByElement = rootElement.getElementsByTagName( 'storedBy' )[0];
1299
//var storedByField = document.getElementById( 'value[' + dataElementId + '].storedBy' );
1300
//textNode = storedByElement.firstChild;
1302
//storedByField.innerHTML = ( textNode ? textNode.nodeValue : '' );
1307
window.alert( i18n_saving_value_failed_status_code + '\n\n' + code );
1311
function handleHttpError( errorCode )
1314
window.alert( i18n_saving_value_failed_error_code + '\n\n' + errorCode );
1317
function markValue( color )
1319
//var type = document.getElementById( 'value[' + dataElementId + '].type' ).innerText;
1322
/* if ( type == 'bool' )
1324
element = document.getElementById( 'value[' + dataElementId + '].boolean' );
1328
element = document.getElementById( 'value[' + dataElementId + '].value' );
1331
var temp = new Array();
1332
temp = dataElementId.split(":");
1334
element = document.getElementById( 'value[' + temp[0] + '].value:value['+ temp[1] +'].value' );
1335
element.style.backgroundColor = color;
1339
function CommentSaver( dataElementId_, value_ )
1341
var SUCCESS = '#ccffcc';
1342
var ERROR = '#ccccff';
1344
var dataElementId = dataElementId_;
1347
this.save = function()
1349
var request = new Request();
1350
request.setCallbackSuccess( handleResponse );
1351
request.setCallbackError( handleHttpError );
1352
request.setResponseTypeXML( 'status' );
1353
request.send( 'saveComment.action?dataElementId=' +
1354
dataElementId + '&comment=' + value );
1357
function handleResponse( rootElement )
1359
var codeElement = rootElement.getElementsByTagName( 'code' )[0];
1360
var code = parseInt( codeElement.firstChild.nodeValue );
1364
markComment( SUCCESS );
1368
//var timestampElement = rootElement.getElementsByTagName( 'timestamp' )[0];
1369
//var timestampField = document.getElementById( 'value[' + dataElementId + '].timestamp' );
1370
//textNode = timestampElement.firstChild;
1372
//timestampField.innerHTML = ( textNode ? textNode.nodeValue : '' );
1374
//var storedByElement = rootElement.getElementsByTagName( 'storedBy' )[0];
1375
//var storedByField = document.getElementById( 'value[' + dataElementId + '].storedBy' );
1376
//textNode = storedByElement.firstChild;
1378
//storedByField.innerHTML = ( textNode ? textNode.nodeValue : '' );
1382
markComment( ERROR );
1383
window.alert( i18n_saving_comment_failed_status_code + '\n\n' + code );
1387
function handleHttpError( errorCode )
1389
markComment( ERROR );
1390
window.alert( i18n_saving_comment_failed_error_code + '\n\n' + errorCode );
1393
function markComment( color )
1395
var field = document.getElementById( 'value[' + dataElementId + '].comment' );
1396
var select = document.getElementById( 'value[' + dataElementId + '].comments' );
1398
field.style.backgroundColor = color;
1399
select.style.backgroundColor = color;
1403
// -----------------------------------------------------------------------------
1405
// -----------------------------------------------------------------------------
1407
function viewHistory( dataElementId )
1410
window.open( 'viewHistory.action?dataElementId=' + dataElementId, '_blank', 'width=560,height=550,scrollbars=yes' );
1413
// -----------------------------------------------------------------------------
1415
// -----------------------------------------------------------------------------
1419
window.open( 'validate.action', '_blank', 'width=800, height=400, scrollbars=yes, resizable=yes' );
1422
// -----------------------------------------------------------------------------
1423
// CalculatedDataElements
1424
// -----------------------------------------------------------------------------
1427
* Calculate and display the value of any CDE the given data element is a part of.
1428
* @param dataElementId id of the data element to calculate a CDE for
1430
function calculateCDE( dataElementId )
1432
var cdeId = getCalculatedDataElement(dataElementId);
1439
var factorMap = calculatedDataElementMap[cdeId];
1441
var dataElementValue;
1443
for ( dataElementId in factorMap )
1445
dataElementValue = document.getElementById( 'value[' + dataElementId + '].value' ).value;
1446
value += ( dataElementValue * factorMap[dataElementId] );
1449
document.getElementById( 'value[' + cdeId + '].value' ).value = value;
1453
* Returns the id of the CalculatedDataElement this DataElement id is a part of.
1454
* @param dataElementId id of the DataElement
1455
* @return id of the CalculatedDataElement this DataElement id is a part of,
1456
* or null if the DataElement id is not part of any CalculatedDataElement
1458
function getCalculatedDataElement( dataElementId )
1460
for ( cdeId in calculatedDataElementMap )
1462
var factorMap = calculatedDataElementMap[cdeId];
1464
if ( deId in factorMap )
1474
function calculateAndSaveCDEs()
1476
var request = new Request();
1477
request.setCallbackSuccess( dataValuesReceived );
1478
request.setResponseTypeXML( 'dataValues' );
1479
request.send( 'calculateCDEs.action' );
1482
function dataValuesReceived( node )
1484
var values = node.getElementsByTagName('dataValue');
1488
for ( var i = 0, value; value = values[i]; i++ )
1490
dataElementId = value.getAttribute('dataElementId');
1491
value = value.firstChild.nodeValue;
1492
document.getElementById( 'value[' + dataElementId + '].value' ).value = value;
1498
function saveLineListingAggData()
1500
var request = new Request();
1501
request.setCallbackSuccess( saveLineListingAggDataReceived );
1502
request.setResponseTypeXML( 'dataValues' );
1503
request.send( 'saveLineListingAggData.action' );
1506
function saveLineListingAggDataReceived( node )
1508
alert("Aggregated DataElements Saved");
1510
var values = node.getElementsByTagName('dataValue');
1514
for ( var i = 0, value; value = values[i]; i++ )
1516
dataElementId = value.getAttribute('dataElementId');
1517
optionComboId = value.getAttribute('optionComboId');
1519
value = value.firstChild.nodeValue;
1520
//document.getElementById( 'value[' + dataElementId + '].value' + ':' + 'value[' + optionComboId + '].value').value = value;
1521
document.getElementById( 'value[' + dataElementId + '].value' ).value = value;
1526
function removeLLRecord( nextRecordNo )
1528
var result = window.confirm( 'Do you want to delete this record' );
1532
window.location.href = 'delLLRecord.action?recordId=' + nextRecordNo;