function getParentTR(obj)
 {
     while( obj && obj.tagName != 'TR' )
     obj = obj.parentNode;
     return obj;
 }

function checkRowDirty(obj) 
 {
     var row, controls;
     var currentObj;
     row=getParentTR(obj);
     controls=row.getElementsByTagName('input');
 
     for(i = 0; i < controls.length; i++) {
         currentObj=controls[i];
 
         if (currentObj.getAttribute('type')=='text') {
             if (currentObj.getAttribute('OriginalValue') != currentObj.value) {
                 row.className='changed'; 
                 return;
             }
         }
 
         if (currentObj.getAttribute('type')=='checkbox') {
             if (eval(currentObj.getAttribute('OriginalValue')) != currentObj.checked) {
                 row.className='changed'; 
                 return;
             }
         }
     }
 
     controls=row.getElementsByTagName('select');
     for(i = 0; i < controls.length; i++) {
 
         currentObj=controls[i];
             if (currentObj.getAttribute('OriginalValue') != currentObj.selectedIndex) {
                 row.className='changed'; 
                 return;
             }
     }
 
     row.className=row.getAttribute('OriginalCssClass');

 }
