/////////////////////////////////////// 
// maxPages
// add code for oracle, grid and search
// extend interpretations with page code here

/////////////////////////////////////// 
// extend ZodiacNav
//ZODIAC ORACLE
//get or goto a random degree
//auto-adds the 2 properties it needs
//looks like the old, wrond, algo though

ZodiacNav.prototype.ToOracle= function() {
	this.ToDeg(this.Oracle())
	}

ZodiacNav.prototype.OracleSym= function() {
	return MAX.SITE.asym(this.Oracle())
	}

ZodiacNav.prototype.linkToRandomDegree= function() {
	return '<a title="Consult the Instant Oracle: Click to jump to a new degree" href="javascript:MAX.NAV.ToOracle()">ora</a>'
	}

ZodiacNav.prototype.Oracle= function() {
	//inquire of the oracle and get a degree
	//use this.deal=360 to enable caching of all degrees to deliver a unique randomsequence
	//reset this.dealt=[] to clear the oracle's cache
	if (!this.deal) {this.deal=0;this.dealt=[]}
	var i=0,n=0;m=this.dealt.length
	while (m>0) {
		//n=Math.floor(Math.random()*360)
		//oracle
		var n1=0,n2=0
		for (i=0;i<4;i++) {n1+=1+Math.floor(Math.random()*4)}
		for (i=0;i<4;i++) {n2+=1+Math.floor(Math.random()*4)}
		n= (n1*5) + (n2*5*5) - 120
		for (i=0;i<m;i++) {if (n==this.dealt[i]) {break}} //look up our number
		if (i>=m){break} //exit the loop if we've just found a new number
		}
	this.dealt[m]=n //store it at the end
	while (this.dealt.length>=this.deal & this.deal>=0 ) {this.dealt.shift()} //
	return n
	}


///////////////////////////////////////

///////////////////////////////////////

///////////////////////////////////////

///////////////////////////////////////

///////////////////////////////////////
// the SEARCH Object
//	a simple linear sort/count of all the words found in the degree interpretations

function Search(elem) {
	this.keys='deg'
	this.words= {}
	this.counts= {}
	this.sorted= []
	this.sortedsmall= []
	this.smallWords= ''
			+'as all and are at be but by do for from go has in into is its'
			+' of off on one out the to too up what with you your'
	//this.init()
	}

Search.prototype.init= function() {
	this.store()
	this.sort()
	}

Search.prototype.store= function() {
	for (var o in MAX.INTERP.txt) {
		if (this.keys!='' && this.keys.indexOf(o)<0) {continue}
		var key=MAX.INTERP.txt[o].prefix
		var n=key.indexOf(',')
		for (var d in MAX.INTERP.txt[o]) {
			//document.write(d+': '+TEXT.deg[d]+'<br>')
			if (n>0) {var b= (key.indexOf(d.substr(0,n))>0)} //look up the incoming in the list of prefixes (we had a ',')
			else {var b= (d.indexOf(key)==0)} //they match to the length of the key
			if (b) {this.storeWords(d,MAX.INTERP.txt[o][d])}
			}
		}
	}

Search.prototype.storeWords= function(sym,txt) {
	if (typeof(txt)!='string') {return}
	txt=txt.replace(/[\n,\'-]/gi,' ')
//	txt=txt.replace(/,/gi,' ')
//	txt=txt.replace(/\'/gi,' ')
//	txt=txt.replace(/-/gi,' ')
	var r=txt.split(' ')
	for (var i=0,n=r.length;i<n;i++) {
		var a=r[i].toLowerCase()
		if (a.length>1) {
			var b=this.words[a]
			if (b) {this.words[a]=b+','+sym}
			else {this.words[a]=sym}
			var b=this.counts[a]
			if (b) {this.counts[a]=b+1}
			else {this.counts[a]=1}
			}
		}
	}

Search.prototype.sort= function() {
	this.sorted= []
	for (var w in this.counts)	{
		var a=w.substr(0,1).toUpperCase()+w.substr(1)
		if (this.smallWords.indexOf(w)<0) {
			this.sorted[this.sorted.length]=a+'='+this.counts[w]}
		else {
			this.sortedsmall[this.sortedsmall.length]=a+'='+this.counts[w]}
		}		
	this.sorted.sort()
	this.sortedsmall.sort()
	}

Search.prototype.docu= function() {
	for (var w in this.words) 
		{out+= w+': '+this.counts[w]+': '+this.words[w]+'<br>'}
	}

Search.prototype.sortkey= function(index) {
	var a=this.sorted[index]
	a=a.substr(0,a.indexOf('='))
	return a
	}

Search.prototype.sortcount= function(index) {
	var a=this.sorted[index]
	a=a.substr(a.indexOf('=')+1)
	return a
	}

Search.prototype.list= function(min,max,varyFont) {
	var out=''
	varyFont= !!varyFont
	if (min>0) {} else {min=1}
	if (max>0) {} else {max=10000}
	for (var i=0,n=this.sorted.length;i<n;i++) {
		var c=this.sortcount(i)
		if (c>=min && c<=max) {
			var w=this.sortkey(i)
			if (varyFont && (c-2)!=0){var w2='<font size=+'+(c-2)+'>'+w+'</font>'} else {var w2=w}
			out+='<a href="'+MAX.NAV.imgTo(this.words[w.toLowerCase()])+'">'+w2+'</a>\n'
			}
		}
//	for (var w in this.words)	{
//		document.write(w+' ')
//		document.write(w+': '+this.counts[w]+': '+this.words[w]+'<br>')
//		}
	return out
	}

Search.prototype.listsmall= function() {
	var out=''
	for (var i=0,n=this.sortedsmall.length;i<n;i++) {
		var w=this.sortedsmall[i]
		w=w.substr(0,w.indexOf('='))
		out+='<a href="'+MAX.NAV.imgTo(this.words[w.toLowerCase()])+'">'+w+'</a>\n'
		}
	return out
	}

///////////////////////////////////////

///////////////////////////////////////

///////////////////////////////////////

///////////////////////////////////////

///////////////////////////////////////
// extend the ICHING Object
// (render the iching tables)

IChing.prototype.mappingtable= function() {

	function degr(line) {
		var i=332 //starting degree
		var c=2 //starting line 0..5.. 1..6
		//... ok my bad. it actually lines up at 332 on the 2nd line!
		var d=0
		line=wrapdeg(line,384)
		while (c!=line) {
			i= wrapdeg(i+0.9375) //ichingdelta
			c=wrapdeg(c+1,384)
			}
		return i
		}

		var n=384/4
		var out=''

	function addquad(start){

		function hexLink() {
			var h=MAX.SITE.iching330[MAX.Div(line,6)]
			var l=(1+line%6)
			var a=MAX.num2(h)//+'.'+l
			var a2=MAX.num2(a)
			return '<a '
				+' onMouseOver="return i2('+h+'.'+l+',MAX.INTERP.popHexagramByLine)")'
				+' onMouseOut="return o()" '
				+'href="iching/lines/?'+a+'.'+l+'#'+a2+'" title="Go to hexagram '+h+'.'+l+'">'+h+'.'+l+'</a>'
			}
		
		var out=''
		var ends=start+n
		for (var line=start;line<ends;line++){
			var deg= MAX.ICHING.lineToDeg(line)
			var ddeg= Math.ceil(deg)
			out+='<tr>'
				+'<td bgcolor="#282828">'
					+'&nbsp;'+MAX.NAV.oneDegree(ddeg,'<font color='+MAX.SITE.degreeColor(ddeg)+'><b>'+MAX.SITE.asym(ddeg)+'</b>&nbsp;</font>')
				+'</td>\n<td>'+hexLink()
				+'</td>\n<td><font size=-2>'+MAX.ICHING.fmtDegree(deg)+'</font>'
				+'</td></tr>\n'
			}
		return '<td valign=top><table>\n'
			+'<tr>'
			+'<td>deg</td>'
			+'<td>hex</td>'
			+'<td>starts</td>'
			+'</tr>'
			+out+'</table></td>\n'
		}
	
	out+=addquad(0*n)
	out+=addquad(1*n)
	out+=addquad(2*n)
	out+=addquad(3*n)
	return '<table><tr>\n'+out+'</tr></table>\n'
	}

IChing.prototype.showmap= function() {
	MAX.NAV.linkTo= 'degree/?'
	document.write('<font size=-1>'+this.mappingtable()+'</font><p>')
	}

///////////////////////////////////////

///////////////////////////////////////

///////////////////////////////////////

///////////////////////////////////////

///////////////////////////////////////
// page rendering

Interpretations.prototype.delineateDecans= function(ro,co,lt,de,sk,hi) {
	if (typeof(ro)=='undefined'){ro=12}
	if (typeof(co)=='undefined'){co=3}
	if (typeof(lt)=='undefined'){lt='aspect/decan/?'}
	if (typeof(de)=='undefined'){de=10}
	if (typeof(sk)=='undefined'){sk=1}
	if (typeof(hi)=='undefined'){hi=120}
	//
	MAX.NAV.grid= new ZodiacGrid('')
	MAX.NAV.grid.setRCM(ro,co,'')
	//
//	NAV.linkTo= lt
//	NAV.pnext= NAV.prevNext(sk,'')//#nav')
	MAX.NAV.linkTo='degree/?'
	//
	MAX.NAV.gridcellDecans= (function(deg) { 
		deg=wrapdeg(d+deg*de)
		if (cnt>0 && deg==d0) { // we wrapped. shift to the next degree
			deg++
			d0++
			d++
			}
		cnt++
		MAX.NAV.grid.optd= opt1+MAX.SITE.degreeColor(deg) //set the color option for the degree
		MAX.NAV.grid.optdc=opt+' bgcolor='+MAX.SITE.degreeColor(deg) //set the color option for the degree
		return MAX.SITE.formatImage(deg,hi)
		} )

	var opt1=MAX.NAV.grid.optd
	var opt=MAX.NAV.grid.optdc
	var d=wrapdeg(MAX.NAV.p.ddeg)
	var d0=d
	var cnt=0

	var out= ''
		+'<a name="nav"><font size=+1>'+MAX.NAV.pnext+'</font>\n'//+t1
		+MAX.NAV.grid.genGrid(MAX.NAV.gridcellDecans)
		+'<a name="nav"><font size=+1>'+MAX.NAV.pnext+'</font>\n'//+t1

	MAX.NAV.grid.optd=opt1
	MAX.NAV.grid.optdc=opt
	//
	MAX.NAV.linkTo= lt
	return out
	}

///////////////////////////////////////

Interpretations.prototype.delineateSign= function() {
	MAX.NAV.grid= new ZodiacGrid('')
//	NAV.grid.setRCM(10,3,'',true)
//	NAV.grid.setRCM(5,6,'',true)
	MAX.NAV.grid.setRCM(6,5,'')
	//
	MAX.NAV.linkTo= 'degree/?'
	MAX.NAV.skipSame=false
	MAX.NAV.startingDeg=1+MAX.Div(MAX.NAV.p.ddeg-1,30)*30
	MAX.NAV.grid.optd+=' bgcolor='+MAX.SITE.degreeColor(MAX.NAV.startingDeg)  //set the color options once for the entire sign
	//
	MAX.NAV.gridcellSign= (function(deg) {
		//deg++
		deg+=MAX.NAV.startingDeg
		var out= MAX.SITE.formatImage(deg,120,null,false)
		return out
		} )
	//
		function getDecans(isign) {
			var out=''
			for (var i=0;i<3;i++) {out+= decans[isign*3+i]+', '}
			return out.substr(0,out.length-2)
			}

		function getSpans(isign) {
			var out=''
			for (var i=0;i<2;i++) {out+= spans[isign*2+i]+', '}
			return out.substr(0,out.length-2)
			}

	var out= ''
		+'<h1>'
		+'<img src="sgn/'+MAX.NAV.p.signl+'.jpg">\n'
		+MAX.SITE.signs[MAX.NAV.p.isign]
		+'<br><font size=-1>'
		+'I '+taglines[MAX.NAV.p.isign]
		+'<br>'+slogans[MAX.NAV.p.isign]
		+'<br><font size=-2>reporting to '+rulers[MAX.NAV.p.isign]+'.'
		+'<br>the decans are '+getDecans(MAX.NAV.p.isign)+'.'
		+'<br>the spans are '+getSpans(MAX.NAV.p.isign)+'.'
		+'</font>'
		+'</font>'
		+'</h1>'
		+'<a name="nav"><font size=+1>'+MAX.NAV.pnext+'</font>\n'
		+MAX.NAV.grid.genGrid(MAX.NAV.gridcellSign)
		+'<a name="nav"><font size=+1>'+MAX.NAV.pnext+'</font>\n'
		+'<h1>'+MAX.SITE.signs[MAX.NAV.p.isign]+'</h1>'
	//
	//out= this.formatPage(out,'sign/?','gallery/?')
	return out
	}

///////////////////////////////////////

Interpretations.prototype.delineateGallery= function() {
	MAX.NAV.grid= new ZodiacGrid('')
//	NAV.grid.setRCM(4,3,'123456789ABC') //(3,4,'147A258B369C') (4,3,'15926A37B48C') (4,3,'15948C7B3A26')
//	NAV.grid.setRCM(3,4,'147A258B369C') //(4,3,'15926A37B48C') (4,3,'15948C7B3A26')
//	NAV.grid.setRCM(2,6,'13579BAC2468') //(4,3,'15926A37B48C') (4,3,'15948C7B3A26')
//	NAV.grid.setRCM(2,6,'135B976A284C') //(4,3,'15926A37B48C') (4,3,'15948C7B3A26')
	MAX.NAV.grid.setRCM(2,6,'315B79A628C4') //(4,3,'15926A37B48C') (4,3,'15948C7B3A26')
	//
	MAX.NAV.gridcellGallery= (function(deg) {		
		deg--
		deg=deg*30+d 
		MAX.NAV.grid.optdc=opt+' bgcolor='+MAX.SITE.degreeColor(deg)
		return MAX.SITE.formatImage(deg,120)
		} )

	var d=MAX.NAV.p.sdeg
	var opt=MAX.NAV.grid.optdc

	MAX.NAV.linkTo= 'gallery/?'
	var out= '<a name="nav"><font size=+1>'+MAX.NAV.pnext+'</font>\n'//+t1

	MAX.NAV.linkTo= 'degree/?'
	out= '<h1>The '+MAX.indexInEnglish(MAX.NAV.p.sdeg)+' Degree</h1>'// of the 12 Signs'
		+out
		+MAX.NAV.grid.genGrid(MAX.NAV.gridcellGallery)
		+out
		+'<h1>The '+MAX.indexInEnglish(MAX.NAV.p.sdeg)+' Degree</h1>'// of the 12 Signs'
	//
	MAX.NAV.linkTo= 'gallery/?'
	MAX.NAV.grid.optdc=opt
	//out=this.formatPage(out,'sign/?','gallery/?')
	return out
	}

//

///////////////////////////////////////

Interpretations.prototype.delineateDegree= function(ddeg,fontsize) {
	MAX.NAV.grid= new ZodiacGrid('')
	MAX.NAV.grid.setRCM(1,1,'')
	//
	MAX.NAV.gridcellDegree= (function(deg) {
		MAX.NAV.grid.optdc=opt+' bgcolor='+MAX.SITE.degreeColor(ddeg)
		return MAX.SITE.formatImage(ddeg,null,'oneimg',null,'-') //,120
		} )

	var d=MAX.NAV.p.sdeg
	var opt=MAX.NAV.grid.optdc

	MAX.NAV.linkTo= 'degree/?'
	if (typeof(lt1)=='undefined') {lt1=MAX.NAV.linkTo}
	if (typeof(lt2)=='undefined') {lt2=MAX.NAV.linkTo}

	MAX.SITE.iorient.select('cr1')
	MAX.SITE.showWords=true
	MAX.NAV.linkTo= MAX.BROWSER.readLastPage('degree/?')
	this.longish=true
	var out='&nbsp;<table border cellpadding=12 bgcolor='+MAX.SITE.degreeColor(ddeg)+'><tr><td>'
		+this.popDegreeText('',ddeg,320,0,1)
		+'</td></tr></table><br>'
	this.longish=false
	return out

	var out= ''
//		+'<h1>The '+AX.indexInEnglish(NAV.p.sdeg)+' Degree of '+NAV.signs[NAV.p.isign]+'</h1>'
		+'<a name="nav"><font size=+1>'+MAX.NAV.pnext+'</font>\n'//+t1
		+'<br><a href="degree/mirror/?'+MAX.NAV.p.sdeg+'">Ok, SHOW me more!</a>'
		+MAX.NAV.grid.genGrid(MAX.NAV.gridcellDegree)
		+'<a name="nav"><font size=+1>'+MAX.NAV.pnext+'</font>\n'//+t1
		+'<h1>The '+MAX.indexInEnglish(MAX.NAV.p.sdeg)+' Degree of '+MAX.NAV.signs[MAX.NAV.p.isign]+'</h1>'
	//
	MAX.NAV.grid.optdc=opt
	MAX.NAV.linkTo= 'degree/?'
	return out
	}

///////////////////////////////////////

Interpretations.prototype.delineateCycles= function(rows,cols) {
	MAX.NAV.grid= new ZodiacGrid('')
	MAX.NAV.grid.setRCM(rows,cols,'')
	//
	MAX.NAV.gridcellGallery= (function(deg) {
		var v=12//8
		var s=0, i=(deg%v)+1
		var n=MAX.Div(deg,v)
		if (cols==2){
			if (i==1){s=1} //ari-vir = fire-earth
			if (i==2){s=4} //can-sag = water-fire
			if (i==3){s=6} //
			if (i==4){s=9} //
			if (i==5){s=7} //lib-pis = air-water
			if (i==6){s=10} //cap-gem = earth-air
			if (i==7){s=12} //
			if (i==8){s=3} //
			}
		else {
			if (i==1){s=1} //ari-vir = fire-earth
			if (i==2){s=4} //can-sag = water-fire
			if (i==3){s=7} //lib-pis = air-water
			if (i==4){s=10} //cap-gem = earth-air
			if (i==5){s=6} //
			if (i==6){s=9} //
			if (i==7){s=12} //
			if (i==8){s=3} //
			if (i==9){s=5} //
			if (i==10){s=8} //
			if (i==11){s=11} //
			if (i==12){s=2} //
			}
		s--
		deg=d+s*30+n
		MAX.NAV.grid.optdc=opt+' bgcolor='+MAX.SITE.degreeColor(deg)
		return MAX.SITE.formatImage(deg,120)
		} )

	var d=MAX.NAV.p.sdeg
	var opt=MAX.NAV.grid.optdc

	MAX.NAV.linkTo= 'gallery/cycles/?'
	var out= '<a name="nav"><font size=+1>'+MAX.NAV.pnext+'</font>\n'//+t1

	MAX.NAV.linkTo= 'degree/?'
	out= ''//<h1>The '+AX.indexInEnglish(NAV.p.sdeg)+' Degree</h1>'// of the 12 Signs'
		+out
		+MAX.NAV.grid.genGrid(MAX.NAV.gridcellGallery)
		+out
		+'<h1>The '+MAX.indexInEnglish(MAX.NAV.p.sdeg)+' Degree</h1>'// of the 12 Signs'
	//
	MAX.NAV.linkTo= 'gallery/cycles/?'
	MAX.NAV.grid.optdc=opt
	return out
	}

///////////////////////////////////////

Interpretations.prototype.delineateTinyMirrors= function(ddeg,fontsize,getinterior,tMore) {
	// show ONE DEGREE with interpretative text
	var hw='';
	var d1='<div bgcolor=yellow>',d2='</div>'
	var t1='<table border=2 cellpadding=4>\n'
		+'<tr><td bgcolor='+MAX.SITE.degreeColor(ddeg)+' align=center>\n',t2='</td></tr>\n</table>\n'

	var sym= MAX.NAV.sym
	var i=sym.indexOf(',')
	if (i>0) {sym=sym.substr(0,i)}
	//
	MAX.NAV.linkTo= 'degree/?'

	if (typeof(fontsize)=='undefined') {fontsize='+1'}

	var imgbox= t1+MAX.NAV.oneDegree(MAX.NAV.p.ddeg, //n,
		"<img src=\"" + MAX.SITE.imgName(ddeg,0)+ "\""+hw+'border=3 id=oneimg><br>\n'
		+"<font size='"+fontsize+"' face='Times, \"Times New Roman\", serif'><b>" + MAX.NAV.p.nice() +"</b></font>"
		,'',true)
		+'\n<br>'
		+this.toWords(MAX.NAV.p.ddeg)
		+t2

	var out= ''
	var n=MAX.NAV.p.ddeg
	MAX.NAV.linkTo= 'degree/mirror/?'

	function wrap(l4){
		while (l4>=360) {l4-=360}
		while (l4<0) {l4+=360}
		return l4
		}

	function dist(l6){
		l6=wrap(l6)								// 2-358= -356 |wrap = -356+360= 4
		if (l6>180) {l6=360-l6}				// 358-2= 356 |wrap=356 |>180= 360-356= 4
		return l6
		}

	function _popInSign(degree,wi,ori,txt,m2x) {
//		if (typeof(fs)!='string') {fs='+1'}
		fs='+1'

		var w1=170,w2=w3=115

		var n=dist(degree-ddeg)
		var m=361-n
		var tda='<td align=center valign=top>'
		var out=atd
			+'\n<table cellpadding=8 border=3 width=260 bgcolor='+MAX.SITE.degreeColor(degree)+'>'//border
			+'<tr><td align=center valign=top rowspan=2>'
			+'<div style="background-color:'+MAX.SITE.degreeColor(ddeg)+'">\n'
			+MAX.SITE.formatImage(ddeg,60,'x align=left',false,'',false) 
			+MAX.SITE.imageText(ddeg,'')[0]+' '+txt
			+'</div>&nbsp;<p>'			
			+MAX.INTERP.popDegreeText('',degree,Math.floor(wi*2),ori,1,fs,false,w1)
			+MAX.NAV.oneDegree(degree,'','',true)+'<br>\n'
			+'</td>'

		fs=''

		out+=tda
			+MAX.INTERP.popDegreeText('',n,wi,ori,1,fs,false,w2)
			+MAX.NAV.oneDegree(n,n+' deg apart.','',true)	
			+'</td>'

	if (!m2x)
	{
			var s0=90
			if (n==0) {var n0=30} else {var n0=n}
			var m0=m //31-n0
			n0=wrapdeg(n0+s0)
			m0=wrapdeg(m0+s0)

			out+=tda
				+MAX.INTERP.popDegreeText('',n0,wi,ori,1,fs,false,w3)
				+MAX.NAV.oneDegree(n0,n0+' deg apart.','',false)
				+'</td>'
	}


		out+='</tr><tr>\n'+tda
			+MAX.INTERP.popDegreeText('',m,wi,ori,1,fs,false,w2)
			+MAX.NAV.oneDegree(m,m+' deg outside.','',true)	
			+'</td>'//</tr>\n'

	if (!m2x)
	{
			out+=tda
				+MAX.INTERP.popDegreeText('',m0,wi,ori,1,fs,false,w3)
				+MAX.NAV.oneDegree(m0,m0+' deg outside.','',false)
				+'</td>'
	}
		out+='</tr>\n'

		out+='</table>\n</td>'
		return out
		}

	MAX.NAV.linkTo= 'degree/mirror/?'
	//NAV.popup=false

	function interior()
		{
	n=30; var d1=(MAX.Div(m-1,n)*n); d1=d1+n-(m-d1)
	n=15; var d2=(MAX.Div(m-1,n)*n); d2=d2+n-(m-d2)
	n=10; var d3=(MAX.Div(m-1,n)*n); d3=d3+n-(m-d3)
	n=5;   var d4=(MAX.Div(m-1,n)*n); d4=d4+n-(m-d4)

	d1++;d2++;d3++;d4++;

	return '<table'+tMore+' cellpadding=4 width=260>'
		+'<tr>'
		+_popInSign(d1,wi,ori,'via the Sign',true)
		+'</tr>'

		+'<tr>'
		+_popInSign(d2,wi,ori,'via the Half-Sign',true)
		+'</tr>'

		+'<tr>'
		+_popInSign(d3,wi,ori,'via the Decan',true)
		+'</tr>'

		+'<tr>'
		+_popInSign(d4,wi,ori,'via the Face',true)
		+'</tr>'
		+'</table>'
	}

	function exterior()
		{
	//ari01..lib01; 1..180->360..181
	n=0; var d1=wrapdeg((360+n-m)) //ok

	//can01..cap01; 1..90->180..91, 181..270->360..271
	n=90; var d2=wrapdeg((360+n-m))
	n=180; if (m>n) {d2=360+n-m} else {d2=n-m }

	//tau15..sco15; 45..225->45..225; 46..224->44..226
	n=135; var d3=wrapdeg((360+n-m))
	n=135; if (wrapdeg(m-n)>180) {d3=360+180-m-n} else {d3=n+180-wrapdeg(m-n)}

	//leo15..aqu15; 135..315->135..315; 136..314->134..316
	n=45; var d4=wrapdeg((360+n-m))
	n=45; if (wrapdeg(m-n)>180) {d4=360+180-m-n} else {d4=n+180-wrapdeg(m-n)}

	d1++;d2++;d3++;d4++

	return '<table '+tMore+' cellpadding=4 width=260>'
		+'<tr>'
		+_popInSign(d1,wi,ori,'via Ari - Lib 01\n',false)
		+'</tr>'
		+'<tr>'
		+_popInSign(d2,wi,ori,'via Can - Cap 01\n',false)
		+'</tr>'
		+'<tr>'
		+_popInSign(d3,wi,ori,'via Tau - Sco 15\n',false)
		+'</tr>'
		+'<tr>'
		+_popInSign(d4,wi,ori,'via Leo - Aqu 15\n',false)
		+'</tr>'
		+'</table>'
		+'<p>'
	}

	var m=n
	var wi=70
	var atd='<td valign=top width=1%>'
//	var ath='<th valign=top colspan=4 bgcolor=white>'
	var ori

	if (!!getinterior) {return interior()} else {return exterior()}

	return ''
		+out
		+interior()
		+exterior()
		+out
	}

///////////////////////////////////////

///////////////////////////////////////

///////////////////////////////////////

///////////////////////////////////////

///////////////////////////////////////
//;#
