function frmDepth(thisFrame, ofrm) {
   var retVal = '';
   for (var i=0; i<thisFrame.length; i++) {
     if (thisFrame[i].length > 0) { 
        retVal = frmDepth(thisFrame[i], ofrm);
        if (retVal == '') continue;
     }
     else if (thisFrame[i] != ofrm) continue;
     retVal = '['+i+']' + retVal;
     break;
   }
   return retVal;
}

function getFrmRef(srcFrm, tgetFrm) {
   var rtnVal = ''
   if (tgetFrm != srcFrm) {
         var tFrm = frmDepth(top.frames, tgetFrm)  // target frame reference
         var sFrm = frmDepth(top.frames, srcFrm)  // source frame reference
         if (sFrm.length == tFrm.length) {   // check if siblings of 
            l = tFrm.lastIndexOf('[')        // same parent
            if (l) {
               while(sFrm.substring(0,l) != tFrm.substring(0,l))
                   l = tFrm.lastIndexOf('[',l-1)
               tFrm = tFrm.substr(l)
               sFrm = sFrm.substr(l)
            }
         }
         var cnt = 0, p = '', str = tFrm
         while((k = str.lastIndexOf('[')) != -1) {  // check nesting
            cnt++                                   // level
            str = str.substring(0,k)
         }
         for (var i=0; i<cnt; i++) p = p + 'parent.'
         rtnVal = p + 'frames' + sFrm + '.'   // get reference location
   } 
   return rtnVal
}
