que tal, @emprear!
no estoy seguro si he entendido tu duda. te respondo a lo que he entendido. fíjate bien en el código, específicamente la segunda línea de javascript.
if(!location.search) self.name = relation[next];. en este caso se le asigna el primer elemento del array relation,
Grand.
justamente lo que hace es asignarle un nombre a la ventana padre. pues al cargar el documento, éste no tiene parámetros por url, de modo que la condición es cierta y le asigna un name a la ventana principal. luego, en la ventana secundaria y subsiguientes, siempre se enlaza al padre/abuelo de forma fija...
var grand = self.open(null, "Grand"). fíjate que el segundo parámetro siempre será Grand. en todo caso, la ventana principal primero debe tener un nombre definido antes de un descendiente poder enlazar.
si aún tienes problema, tendrás que hablarme en código.