add magic to fall back to the juvenile flag to determine juvenility (?) if no DOB...
authorerickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Tue, 9 Dec 2008 00:51:47 +0000 (00:51 +0000)
committererickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Tue, 9 Dec 2008 00:51:47 +0000 (00:51 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@11459 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/xul/staff_client/server/patron/ue_config.js

index ac8f7fe..836aa6f 100644 (file)
@@ -355,6 +355,8 @@ function uEditDefineData(patron) {
                        widget  : {
                                id                      : 'ue_juvenile',
                                type            : 'checkbox',
+                               onpostchange    : function(field) { uEditCheckDOB(uEditFindFieldByKey('dob')); },
+                               onblur  : function(field) { uEditCheckDOB(uEditFindFieldByKey('dob')); }
                        }
                },
                {
@@ -1038,44 +1040,57 @@ var __lastdob;
 function uEditCheckDOB(field) {
 
        var dob = uEditNodeVal(field);
+    var ident_field = uEditFindFieldByKey('ident_value2');
 
-       /* don't bother if the data isn't valid */
-       if(!dob || !dob.match(field.widget.regex)) 
-               return;
+    if(dob) {
 
-       if( dob == __lastdob ) return;
+        /* don't bother if the data isn't valid */
+        if(!dob.match(field.widget.regex)) 
+            return;
 
-       __lastdob = dob;
+        if( dob == __lastdob ) return;
 
-       var parts = dob.split(/-/);
-       parts[2] = parts[2].replace(/[T ].*/,'');
-       dob = buildDate( parts[0], parts[1], parts[2] );
+        __lastdob = dob;
 
-       var today = new Date();
+        var parts = dob.split(/-/);
+        parts[2] = parts[2].replace(/[T ].*/,'');
+        dob = buildDate( parts[0], parts[1], parts[2] );
 
-       if(!dob || dob > today) {
-               addCSSClass(field.widget.node, CSS_INVALID_DATA);
-               alertId('ue_bad_date');
-               return;
-       }
+        var today = new Date();
 
-       var base = new Date();
-    var age = orgSettings['global.juvenile_age_threshold'].value || DEFAULT_ADULT_AGE;
-    base.setTime(base.getTime() - Number(interval_to_seconds(age) + '000'));
+        if(!dob || dob > today) {
+            addCSSClass(field.widget.node, CSS_INVALID_DATA);
+            alertId('ue_bad_date');
+            return;
+        }
 
-       var f = uEditFindFieldByKey('ident_value2');
-       unHideMe(f.widget.node.parentNode.parentNode.parentNode);
+        var base = new Date();
+        var age = orgSettings['global.juvenile_age_threshold'].value || DEFAULT_ADULT_AGE;
+        base.setTime(base.getTime() - Number(interval_to_seconds(age) + '000'));
 
-       if( dob < base ) { /* patron is of age */
-               f.required = false;
-        if(!uEditNodeVal(f))
-                   hideMe(f.widget.node.parentNode.parentNode.parentNode);
-               return;
-       }
 
-       uEditFindFieldByKey('juvenile').widget.node.checked = true;
+        unHideMe(ident_field.widget.node.parentNode.parentNode.parentNode);
+        if( dob < base ) { /* patron is of age */
+            ident_field.required = false;
+               uEditFindFieldByKey('juvenile').widget.node.checked = false;
+            if(!uEditNodeVal(ident_field))
+                hideMe(ident_field.widget.node.parentNode.parentNode.parentNode);
+            return;
+        }
+
+    } else {
+        // no DOB and we are not flagged as a juvenile
+        if(uEditFindFieldByKey('juvenile').widget.node.checked == false) {
+            if(!uEditNodeVal(ident_field))
+                hideMe(ident_field.widget.node.parentNode.parentNode.parentNode);
+            return;
+        }
+    }
 
-       f.required = true;
+    unHideMe(ident_field.widget.node.parentNode.parentNode.parentNode);
+    if(!uEditFindFieldByKey('juvenile').widget.node.checked)
+           uEditFindFieldByKey('juvenile').widget.node.checked = true;
+       ident_field.required = true;
        uEditCheckErrors();
 }