///////////////////////////////////////
// maxCustom
//	splices customizations into the objects defined in maxBase
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


///////////////////////////////////////
// top level functions

function setupStatic(where,interp,popups) {
	setupSite(where,interp,popups)
	addLoadEvent(fixupLinks)
	}

function fixupLinks() {MAX.SITE.fixupLinks()}

///////////////////////////////////////
// popup hooks

function i(d) {return MAX.INTERP.popIn(d)}
function i2(d,fun,t) {
alert('popHexagramByLine')
	return MAX.INTERP.popIn2(t,d,fun)}
function h(d) {return MAX.INTERP.popIn(d,MAX.INTERP.popHexagramText)}
function o() {return MAX.INTERP.popOut()}
	
///////////////////////////////////////
// initialize site

Site.prototype.addPopupLayer= function() {
	//alert('popups')
	MAX.SOL= new Sol()
	MAX.INTERP= new Interpretations()
	}

Site.prototype.init= function() {
	if (this.popups)
		{this.addPopupLayer()}
	//
	this.Title='Visualize the&nbsp;Zodiac'
	this.SubTitle='Illustrations for the 360 Degrees of the Zodiac.'
	this.Desc='Illustrations for the 360 Degrees of the Zodiac. Exploring the meaning of the signs of the Zodiac. Graphically experience Compatibility Issues between the Signs. Its a Visual Dictionary about the Meaning of Images you find in Dreams, Symbols and Life.'
	this.Tags='astrology,meaning,horoscope,dream,graphic,compatibility,love,face,decan,trine,square,quintile,relationships,degrees,separation,approach, aspect,zodiac,degree,sabian,symbol,match,characteristic,imagery,knot,tarot,name,energy'	
	this.URL='http://degrees.michaelax.com/'
	this.Made='ax@sonic.net'
	this.Copy='&copy; 2006, Visualizing the Zodiac, Michael Ax & Lyle van Loon.'

	//this.Title='<a href="http://zodiacdegrees.com/">Picture Your Stars</a>'
	//this.SubTitle='Symbolic Astrology for everyone.'

	//YACCS integration
	this.IdCommentsSite=90000044708 // Comments on the site (not syndicated)
	this.IdCommentsSiteTopic=10001 // 10001 = main site comments
	this.IdCommentsDegrees=90000044707 // Comments on individual degrees (syndicated)
	this.IdCommentsDegreesBaseID=100000 // numbers 100000+degree

	//image options
	this.showDate= true//false
	this.showWords=true

	this.signs=[
		"Aries",
		"Taurus",
		"Gemini",
		"Cancer",
		"Leo",
		"Virgo",
		"Libra",
		"Scorpio",
		"Sagittarius",
		"Capricorn",
		"Aquarius",
		"Pisces"]
	//
	//this.ichingdelta = 360/384 //deg per moving line= 0.9375
	this.iching330 = // starting at pisces0, here are the hexagrams:
		[55,37,63,22,36,25,17,21,51,42,3,27,24,2,23,8,
		20,16,35,45,12,15,52,39,53,62,56,31,33,7,4,29,
		59,40,64,47,6,46,18,48,57,32,50,28,44,1,43,14,
		34,9,5,26,11,10,58,38,54,61,60,41,19,13,49,30]
	//

	this.initiOrient()
	this.imgPaths=['deg/','deg/h/','deg/v/','deg/c/']
	this.imagePath(this.iorient.get())
	this.iext='.jpg'
	//
	var d= new Date()
	this.year= d.getFullYear()
	//
	this.elementColors=[
		'#cd7ab9', //0 fire
		'#7acd8e', //1 earth
		'#cdb77a', //2 air
		'#7a90cd'] //3 water
	//
	this.signColors=[
		'#cd7abe', //1 ari
		'#7acd8a', //2 tau
		'#7abdcd', //3 gem
		'#7a95cd', //4 can
		'#cd7a94', //5 leo
		'#7acdb3', //6 vir
		'#cdb37a', //7 lib 
		'#897acd', //8 sco
		'#cd897a', //9 sag
		'#94cd7a', //A cap
		'#bdcd7a', //B aqu
		'#b27acd'] //C pis
	//
	this.initBrowseSubMenu()
	}

///////////////////////////////////////
// post-load static file link-fix-up

Site.prototype.fixupLinks= function(x) {
	var out=''
	if (typeof(x)=='undefined') {x=window.document}

//var xx=0
	for (var lnk in x.links) {
		var link=x.links[lnk]
		var p=link.pathname
		if (typeof(p)=='undefined' || p=='') {continue}
		var n=p.length
		var a=p.substr(n-1,1)
		if (('\\/').indexOf(a)>-1) {
			p=p.substr(n-7,7)
			n-=7
			if (('0123456789').indexOf(p.substr(p.length-2,1))<0) {
				p=p.substr(p.length-4,4)
				n+=3
				}
			var sgn=p.substr(0,3)
			var isgn=this.nSign(sgn)
			var num=p.substr(4,2); num=parseInt(num,10)
			if (isNull(isgn) && !(num>0)) 
				{continue}
			//
			var to='?'
			var sym=''
			if (sgn=='deg') {to='gallery/'; sym='ari'+MAX.num2(num)}
			else { if (!isNull(isgn)) {
				if (num>0) {to='degree/'; sym=sgn+MAX.num2(num)}
				else {to='sign/'; sym=sgn+'01'}
				}
				else {to='sign/'; sym=sgn+'01'}
				}
			link.degree=this.nsym(sym)
			link.onmouseover= function () {i(this.degree)} //alert(this.degree); 
			link.onmouseout=o//'o()'
			//
			link.pathname= link.pathname.substr(0,n)+to
			link.search='?'+sym
//xx++; if (xx>20){break}
			}
		}
	return out
	}

///////////////////////////////////////
//define the menu

Site.prototype.siteMenu= function(where, extra) {
	var a= MAX.NAV.sym;	if (!a) {a=''} else {a='?'+a}
	var br='<br>\n'
	var out='<table bgcolor="whitesmoke" width=100% border><tr>'
		+'<td width=1% valign=bottom rowspan=2>\n'
		+this.siteLink(where,'index','/','Home') +br
		+this.siteLink(where,'gallery','gallery/'+a,'Gallery') +br
		+this.siteLink(where,'view','degree/'+a,(a=='')?'Degrees':'DEGREES') +br
		+this.siteLink(where,'browse','aspect/'+a,(a=='')?'Aspects':'ASPECTS') +br
		+this.siteLink(where,'calendar','calendar/','Calendar') +br
		+this.siteLink(where,'search','search/','Search') +br
		+this.siteLink(where,'chart','chart/','Charts') +br
		+this.siteLink(where,'about','about/','About') +br
		+'</td>\n'
		+'<td width=90% rowspan=1><center>\n'
		+this.siteHeader('')
		+'<p align=bottom>'+extra
		+'</center>'
		+'</td>'
		+'<td width=1% rowspan=2 valign=bottom id=xDegrees>&nbsp;</td></tr>'
		+'<tr>'
		+'<td width=1% id=xSize valign=bottom align=right></td>'
		+'</tr>'
		+'<tr><td colspan=4 id=xExtraRow></td></tr>'//&nbsp;
		+'</table>'
	return out
	}

///////////////////////////////////////
//DEFINE SUB-MENU

Site.prototype.initBrowseSubMenu= function() {
	var a='Browse'
	this.Menus[a]=[] //empty array. add objects in order
	//this.addMenuItem(a,'','','|')
	this.addMenuItem(a,'view','degree/?','Details')
	this.addMenuItem(a,'gallery','gallery/?','Gallery')
	//this.addMenuItem(a,'mirror','mirror/?','Mirrors')
	this.addMenuItem(a,'','','|')
	this.addMenuItem(a,'sign','sign/?','Signs')
	this.addMenuItem(a,'decan','aspect/decan/?','Decans')
	this.addMenuItem(a,'trine','aspect/trine/?','Trines')
	this.addMenuItem(a,'square','aspect/square/?','Squares')
	this.addMenuItem(a,'quintile','aspect/quintile/?','Quintiles')
	//this.addMenuItem(a,'moon','aspect/moons/?','ByMoons')
	//this.addMenuItem(a,'by9','aspect/by9/?','ByNine')
	this.addMenuItem(a,'','','|')
	this.addMenuItem(a,'browse','aspect/?','Aspects')
	this.addMenuItem(a,'calendar','calendar/?','Calendar')
	this.addMenuItem(a,'oracle','oracle/?','Oracle')
	this.addMenuItem(a,'iching','iching/?','iChing')
	this.addMenuItem(a,'lines','iching/lines/?','Lines')
	}

///////////////////////////////////////
// page-footer

Site.prototype.siteFooter= function() {	
//Visualizers of the world unite!
//Standing up for the imagination.
//Straight to you
//Buy the t-shirt!
	return '<br>(C) Copyright 2006, <a href="'+this.URL+'">'+this.Title+'</a>'
	}


///////////////////////////////////////
// customize the site object

Site.prototype.degreeColor = function(deg) { //convert to element, return element color
	if (deg==0){deg=1} //alert('00000!')}
	return this.signColors[ MAX.Div((deg-1),30) ]
	}

Site.prototype.aSign= function(i) {
	return this.signs[i]
	}

Site.prototype.nSign= function(a) {
	a=a.substr(0,3).toUpperCase()
	for (var i = 0, sign; sign = this.signs[i]; i++) {
		if (a==sign.substr(0,3).toUpperCase())	
			{return i}}
	return null
	}

Site.prototype.asym= function(n) { // a symbol
	n= wrapdeg(n)
	var s= MAX.Div( n-1, 30 )
	n= n - s*30
	var a=this.signs[s]
	if (a) {a=a.substr(0,3)}
	return a+MAX.num2(n)
	}

Site.prototype.nsym= function (sym) { //number from symbol
	var sign	= sym.substr(0,1).toUpperCase()+sym.substr(1,2); 
	var isign	= this.nSign(sign)
	var sdeg	= parseInt(sym.substr(3,2),10)
	return isign*30+sdeg
	}

///////////////////////////////////////
// link to bookmarking

Site.prototype.siteSocial= function() {	
	//var url=encodeURIComponent(document.location.href)
	//var tag=encodeURIComponent(document.title)
	var out='<a href="http://www.socialize-it.com/?'
		+'url='+this.URL
		+'&tag='+this.Tags
		+'" target="_link">Bookmark us!'
		//+'<br><img src="http://www.socialize-it.com/socializeit.png">'
		+'</a>'
	return out
	}

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

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

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

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

///////////////////////////////////////
// customize the browser object

Browser.prototype.readLastPage= function(value) {
// convenience function to read the 'lastPage' cookie
	if (typeof(value)=='undefined') {value='/'}
	var link=this.readCookie('lastPage',value) // return us to the last list page we were on
	//var i=link.indexOf('?'); if (i>0) {link=link.substr(0,i+1)}
	return link
	}

Browser.prototype.setLastPage= function(value) 
	{this.createCookie('lastPage',value)}

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

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

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

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

///////////////////////////////////////
// the INTERP object

function Interpretations() {
	//var that=this
	this.txt={}
	if (typeof(degText)=='function')	{this.txt['deg']= degText()}  // load/prune interpretations
	if (typeof(Text30)=='function')	{this.txt['d30']= Text30()}
	if (typeof(Text90)=='function')	{this.txt['d90']= Text90()}
	if (typeof(Text120)=='function')	{this.txt['d120']= Text120()}
	if (typeof(Text180)=='function')	{this.txt['d180']= Text180()}
	//this.deleteBlanks()
	}

///////////////////////////////////////
// more popup hooks

Interpretations.prototype.popIn= function(degree,fun) { return this.popIn2('',degree,fun) }

Interpretations.prototype.popIn2= function(title,degree,fun) {
	if (timerh!=0)
		{clearTimeout(timerh); timerh=0} //; alert('cleared timer')} //; return}

	if (typeof(degree)=='number' && isNaN(degree)) {return}
	if (typeof(degree)=='number') {degree= wrapdeg(degree)}
	if (typeof(degree)=='string') {degree = MAX.SITE.asym(degree)}
	//
	switch (MAX.SITE.where) {
	case 'xdegree':
		break;
	default:
		if (typeof(fun)=='undefined')
			{	var out=this.popDegreeText(title,degree,180,0,2)}
		else {	var out = fun(title,degree,180,0,2)}
		}
	if (typeof(out)=='string'){ 
		return overlib(out, WRAP, CELLPAD, 15, HAUTO, VAUTO, 
			FGCOLOR, MAX.SITE.degreeColor(degree), 
			DELAY, 100, 
			SNAPX, 100, SNAPY, 100, 
			OFFSETY, 20, OFFSETX, 20)
		} else {return out}
	}

var timerh=0

function popOutNow() {
	timerh=0
	return nd()
	}

Interpretations.prototype.popOut= function() {
	if (timerh!=0) {return}
	timerh= setTimeout('popOutNow()',300)
	return false
	}

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

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

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

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

Interpretations.prototype.deleteBlanks= function() {
	for (var o in this.txt) {
		for (var d in this.txt[o]) {
			if (this.txt[o][d]=='') {delete this.txt[o][d]}
			}
		}
	}

Interpretations.prototype.toWords= function(sym) {
	if (typeof(sym)=='number') {sym=MAX.SITE.asym(sym)}
	if (typeof(sym)!='string') {return ''}
	//
	var a=this.txt['deg']
	if (!a) {return ''}
	a=a[sym.toLowerCase()]
	if (typeof(a)=='undefined') {return ''}
	//
	if (a){a=' '+a.replace(/\n/gi, '<br>')} else {a=''}
	return a
	}

Interpretations.prototype.oneWord= function(sym) {
	//short description / first line
	if (typeof(sym)=='number') {sym=MAX.SITE.asym(sym)}
	//
	var a=this.txt['deg']
	if (!a) {return ''}
	a=a[sym.toLowerCase()]
	if (typeof(a)=='undefined') {return ''}
	//
	var n=a.indexOf('\n')
	if (n>-1) {a=a.substr(0,n)}
	var n=a.indexOf(',')
	if (n>-1) {a=a.substr(0,n)}
	return a
	}

Interpretations.prototype.otherWords= function(sym) {
	//rest of the short description / remaining lines.
	if (typeof(sym)=='number') {sym=MAX.SITE.asym(sym)}
	//
	var a=this.txt['deg']
	if (!a) {return ''}
	a=a[sym.toLowerCase()]
	if (typeof(a)=='undefined') {return ''}
	//
	var n=a.indexOf('\n')
	if (n<0) {return ''}
	a= (a.substr(n+1)).replace(/\n/gi, ', ')
	while ((', ').indexOf(a.substr(a.length-1,1))>-1)
		{a=a.substr(0,a.length-2)}
	return a
	}

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

Interpretations.prototype.delineate= function(deg) {
	var out=''
	var tmp=this.delineateReferences(deg)
	for (var i=0,n=tmp.length;i<n;i++) {
		out+=tmp[i]+'<br>'
		}
	return out
	}

Interpretations.prototype.delineateReferences= function(deg,foreachkey,all) {
//alert(typeof(foreachkey))
	var tmp=[]
	for (var o in this.txt) { //for all lists
		var list=this.txt[o]
		var delta=list.delta
		if (list.delta>1) { //unless we're delineating all the degrees (look at aspects only)
			var d=wrapdeg(deg,list.covers) //determine where in the list ddeg points to
			if (list.digits==3) {d=AX.num3(d)} else {d=AX.num2(d)} //format the list index
			//
			var key=list.prefix //start builing a lookup key
			var r=key.split(',') //break up what may be a list of keys into an array
			for (var i=0,n=r.length;i<n;i++){ //go through that array
				var b=true, offset=list[r[i]]
				if (typeof(offset)=='undefined') {offset=0} //else {alert(typeof(offset)+' -- '+offset)}
				else { 
					var ele=AX.Mod(AX.Div(deg,30),4)*90 // 0=fire 1-water 2-air 3-earth (the essential twist right here)
					b= (all || ele==offset)
					if (b) {
						if (typeof(foreachkey)=='function') {foreachkey(r[i],d,list)}
						else {
							key=r[i]+d //and this time build a key for real
							var val=list[key] //get the interpretation string
							if (val)	{tmp[tmp.length]='<b>'+key+':</b> '+val} //build up result array
							}
						}
					}
				}
			}
		}
	return tmp //empty when we're using the foreachkey callback
	}

///////////////////////////////////////
// POPUP-LAYOUT

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

Interpretations.prototype.popHexagramText= function(title,degree,wi) {
	if (typeof(MAX.ICHING)=='undefined') {return MAX.SITE.getHexLink(degree)}
	var out=MAX.ICHING.hexInfo(degree)
	return overlib(out, WRAP, CELLPAD, 15, RIGHT, VAUTO, FGCOLOR, MAX.SITE.degreeColor(degree), DELAY, 400)
	}

Interpretations.prototype.popHexagramByLine= function(title,degree,wi) {
	if (typeof(MAX.ICHING)=='undefined') {return ''}
	var out=MAX.ICHING.hexInfo2(degree)
	var a2=(''+degree).split('.')
	var l=MAX.ICHING.startsAtLine(parseInt(a2,10))
	if (a2.count==1) {a2[1]=0}
	l+=parseInt(a2[1],10)-4
	var degCol= MAX.ICHING.lineToDeg(l) 
	return overlib(out, WRAP, CELLPAD, 15, RIGHT, VAUTO, FGCOLOR, MAX.SITE.degreeColor(degCol), DELAY, 50)
	}

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

Interpretations.prototype.popDegreeText= function(title,degree,wi,ori,mode,fs,verbose,width) {
	if (typeof(verbose)!='boolean') {verbose=true}
	if (typeof(width)!='number') {width=400}
	
	degree= wrapdeg(degree)
	var p= new Planet('point',degree)
	if (typeof(mode)!='number') {mode=0}
	if (typeof(fs)!='string') {fs='+1'}
	if (fs!='') {fs='size="'+fs+'"'}	

	if (typeof(title)!='string') {title=''}
	if (title!='') {title='<b>'+title+'</b><p>'}	
	//
//	mode=1
	if (mode==0) {var interp= this.toWords(p.sym)+'</center><hr>'+this.delineate(degree)}
	else {if (mode==1) {var interp= this.oneWord(p.sym)}//+'</center>'}
	else {if (mode==2) {
			var interp= this.oneWord(p.sym) //toWords
			//verbose=false
			}//+'</center>'}
	}}
	//
	if (typeof(wi)!='number') {alert(wi) ; wi=320}
	var out = '<table class=ttb cellpadding=6 width='+width+'>\n' //>\n' // 
		+'<tr><td align=center><center>\n'
		+'<span class=dark>'
		+'<img src='+MAX.SITE.imgName(p.sym,ori)+' border=0 width='+wi+'/>\n'
		+'<br>'
		+'<font color='+MAX.SITE.degreeColor(degree)+'>\n'
		+'<font '+fs+' face="Times, \"Times New Roman\", serif">\n<b>' + p.nice() +'</b>'
		//+'</font>\n'
		+'<br>'
		//+'<font size="'+fs+'">'
		+interp+'</font>' 
		+'</font>\n'
		+'</td>'
		+((verbose)?''
			+'<td>&nbsp;</td>'
			+'<td valign=top>'
			+title
			+this.interpleft(degree,this.longish)
			+'</td>'
			+'<td>&nbsp;</td>'
			:'')
		+'</tr></table>\n'
	return out
	}

	var taglines= [
		'am self-assertiveness',
		'have determination',
		'think versatility',
		'feel home',
		'will affection',
		'analyse discrimination',
		'balance partnership',
		'desire hidden power',
		'see aspiration',
		'use honor',
		'know altruism',
		'experience the super-physical'
		]

	var slogans= [
		'Cardinal Male NonLinear Spring Fire',
		'Fixed Female NonLinear Spring Earth',
		'Mutable Male Linear Spring Air',
		'Cardinal Female NonLinear Summer Water',
		'Fixed Male Linear Summer Fire',
		'Mutable Female Linear Summer Earth',
		'Cardinal Male Linear Fall Air',
		'Fixed Female Linear Fall Water',
		'Mutable Male NonLinear Fall Fire',
		'Cardinal Female Linear Winter Earth',
		'Fixed Male NonLinear Winter Air',
		'Mutable Female NonLinear Winter Water'
		]

	var rulers= [
		'Mars,Sol',
		'Venus,Luna',
		'Mercury',
		'Luna,Jupiter',
		'Sol',
		'Mercury',
		'Venus,Saturn',
		'Mars,Pluto',
		'Jupiter',
		'Saturn',
		'Saturn,Uranus',
		'Jupiter,Venus,Neptune'
		]

	var decans= [
		'activity',
		'exaltation',
		'propaganda',
		'determination',
		'struggle',
		'mastership',
		'intuition',
		'fidelity',
		'reason',
		'moods',
		'revelation',
		'research',
		'rulership',
		'reformation',
		'ambition',
		'achievement',
		'experience',
		'renunciation',
		'policy',
		'independence',
		'expiation',
		'resourcefulness',
		'responsibility',
		'attainment',
		'devotion',
		'exploration',
		'illumination',
		'organization',
		'martyrdom',
		'idealism',
		'originality',
		'inspiration',
		'repression',
		'verity',
		'sacrifice',
		'vicissitudes'
		]

	var spans= [
		'realization,desire',
		'examination,potency',
		'experience,substantiation',
		'enjoyment, confirmation',
		'zeal, discovery',
		'restlestness, exteriorization',
		'expansion, decision',
		'ingeniousness, consolidation',
		'assurance, combustion',
		'interpretation, release',
		'idealization, characterization',
		'experimentation, education',
		'expectation, transfiguration',
		'revelation, reconstruction',
		'retention, communion',
		'appreciation, faith',
		'receptiveness, abstraction',
		'detachment, transference',
		'illusiveness, crystallization',
		'dependence, group-performance',
		'defensiveness, contribution',
		'perspective, management',
		'innocence, federation',
		'protection, perpetuation'
		]

Interpretations.prototype.interpleft= function(ddeg,longish) {

function delinDeg(p) {
	var ispan= MAX.Div(p.deg,15)
	var idecan= MAX.Div(p.deg,10)
	//
	var ruler= rulers[p.isign]
	var span= spans[ispan]	
	var decan= decans[idecan]
	//
	span= span.replace( /\, /gi ,' &amp; ')
	//
	var out= 
		'decan of '+decan
		+', span of '+span
	return out
	}


	var a=''
	if (typeof(longish)=='undefined')
		{longish=this.longish}
	if (longish)
		{
		a=this.otherWords(ddeg)
		if (a.length>0) {a='&nbsp;<p><b>Notes:</b><br>\n'+a+'<br>\n'}
		}

	var p= new Planet('point',ddeg)

	var r=MAX.SITE.imageText(ddeg,'','+2')
	var tang=Math.abs(Math.floor(tand(ddeg-1)*100))

	var v=(p.deg/90)
	v=(v-Math.floor(v))*90
	v=Math.abs(v-45)/45
	//v=1

	a= '<table bgcolor='+MAX.SITE.degreeColor(ddeg)+'>'
		+'<tr>'
		+'<td colspan=2>'
		+((!longish)?'<center>':'')
		+'<a href="/sign/?'+p.sign+'">'
		+'<img src=sgn/'+p.signl+'.jpg '+((longish)?'align=right':'')+'>\n'+'</a>'
		+r[0]
		+((longish)?'<br>'
		+'<font size=-1>'
		+slogans[p.isign] //<br>
		+' reporting to '+rulers[p.isign].replace( /\,/gi ,' &amp; ')+':'
		+'</font>\n'
		+'<center>'
		+'<b>'+r[1]
		+'</center>'
		+'<p><font size=-1>'+delinDeg(p)+'</font>'
		+'</b>'
		:'</center>')
		+'</td><tr><td valign=top>'
		+r[2]
		+'<br><font size=-1>Hexagram '+MAX.SITE.getHexLink(ddeg)
		+'</font>\n'
		+'</td><td width=1% align=right>'
		+'<font size=-1>'
		+'<br>yin&nbsp;'+Math.abs(Math.floor(sind(ddeg-v)*100))
			+'%<br>yang&nbsp;'+Math.abs(Math.floor(cosd(ddeg-v)*100))
			+'%<br>tang&nbsp;'+((tang>50000)?'+/-&nbsp;inf':tang)
			+'%'
		+'</font>\n'
		+'</td></tr></table>'
		+((longish)?a
		+'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'
		+'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'
		+'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'
		+'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n'
		:'')
	return	a
	}

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

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

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

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