/*
 * @progname       tools.li
 * @version        none
 * @author         anon
 * @category       
 * @output         string and event function values
 * @description    
 *
 * a library providing lifelines database tools, bapt() and get_picture().

NODE func bapt(INDI) - scans for both BAPL and BAPM (unlike baptism() builtin)
STRING func get_picture(INDI) - finds an image file name

*/


func bapt (indi) {
  fornodes(inode(indi), node) {
    if (eq(0, strcmp(tag(node), "BAPL"))) {
      return(node)
    }
    if (eq(0, strcmp(tag(node), "BAPM"))) {
      return(node)
    }
  }
  return(0)
}

func get_picture (indi) {
/* Note: this code assumes a tag structure I use to represent
   external files. It looks like:

1 EXTL
  2 FILE pics/scott.gif
  2 FORM GIF
  2 DATE Jul 1989
1 EXTL
  2 URL http://www.intele.net/~toddm/toddpic.gif
  2 FORM GIF

   where the first defines an external file stored on the same file
   system and gives the path in the FILE record and the type in the
   FORM record. The second defines an external file stored on another
   site and provides a URL for referencing it. I have proposed this as
   an extension to GEDCOM, but nobody said very much.
*/

  set(found, 0)
  set(path, "")
  fornodes(inode(indi), node) {
    if (not(strcmp("EXTL", tag(node)))) {
      set(m, child(node))
      if (not(strcmp("FILE", tag(m)))) {    /* files on local system */
        set(path, value(m))
        set(o, sibling(m))
        if (not(strcmp("FORM", tag(o)))) {
          if (not(strcmp("GIF", value(o)))) {
            set(found, 1)
          }
          elsif (not (strcmp("JPEG", value(o)))) {
            set(found, 1)
          }
        }
      }
      else{
       if(not(strcmp("URL", tag(m)))) {     /* files on remote system */
          set(path, value(m))
          set(o, sibling(m))
          if (not(strcmp("FORM", tag(o)))) {
            if (not(strcmp("GIF", value(o)))) {
              set(found, 1)
            }
            elsif (not (strcmp("JPEG", value(o)))) {
              set(found, 1)
            }
          }
        }
      }
    }
  }
  return(path)
}

