// JavaScript routines for kunstbugt.dk

var webmaster__ = false; // sæt til true for at indsætte et webmaster e-mail link nederst

var MSIE = (!window.opera&&!!document.all&&!!document.namespaces&&!!document.scripts&&!!document.styleSheets);
	// a fairly safe way to detect Microsoft Internet Explorer
var msieErr = MSIE ? 2 : 0;
	// To be subtracted from or added to some offsets in MS Internet Explorer

var columnExtra = 0; // added to column length in function fillColumn()
	// normally 0, can be adjusted with PHP variable $columnExtra

var userN1=0, userN2=0, userN3=0, userN4=0, userN5=0;
var userS1='', userS2='', userS3='', userS4='', userS5='';
// Can be added without influencing values, unless their values are changed in the main program

function get(id) {return document.getElementById(id);}

// Funktionen "bottomNote__()" bliver kaldt fra et <td> element nederst på alle sider.
// Den kan bruges til at indsætte ekstra tekst med et document.write() kald.
// Funktionen er forprogrammeret til at indsætte et email-link til webmaster hvis variablen
// webmaster__ er sat til true.
// NB! Overhold JavaScript regler for " og ', og undgå / lige efter <, derfor <\/a> i eksemplet.
// Hvis funktionen er helt tomt, indsættes der naturligvis intet, kun et document.write() kald
// i funktionen (eller i en funktion kaldt fra funktionen) vil indsætte noget.
// Funktionen kan bruge de variable der er defineret på siderne som fx pageHeader__, og her i
// basic.js: activePage__, activePopup__ og activeFlags__.
function bottomNote__() {
	if (webmaster__) dwmt__(901);
} // function bottomNote__()

var activePage__, activePopup__, activeFlags__;

function init(evnt) {
	window.focus();
	fillColumn();
	if (typeof(localInit)=='function') localInit(evnt);
} // function init()

function Offsets(top,left) {
// creates an object with two elements initialized to top,left, defaults = 0,0
	this.offsetTop = typeof(top)=='number' ? top : 0;
	this.offsetLeft = typeof(left)=='number' ? left : 0;
} // function Offsets()

function findOffsets(obj) {
// returns an object with the total Top and Left offsets of obj
// obj is either an HTML element or the id of an HTML element
	var offsets = new Offsets(msieErr,msieErr);
	if (typeof(obj)=='string') obj = get(obj);
	while (obj) {
		offsets.offsetTop += obj.offsetTop;
		offsets.offsetLeft += obj.offsetLeft;
		obj = obj.offsetParent;
	} // while (obj)
	return offsets;
} // function findOffsets()

function placeOver(master,slave,topOffs,leftOffs) {
// places HTML absolute element slave over element master, default offsets are 0,0
	// alert('placeOver()\n'+master+'\n'+slave+'\n'+topOffs+'\n'+leftOffs);
	var offsets = findOffsets(master);
	if (typeof(slave)=='string') slave = get(slave);
	with (slave.style) {
		top = (offsets.offsetTop + (typeof(topOffs)=='number' ? topOffs : 0)) + 'px';
		left = (offsets.offsetLeft + (typeof(leftOffs)=='number' ? leftOffs : 0)) + 'px';
		// alert('placeOver() / with\ntop = '+top+'\nleft = '+left+'\nvisibility = '+visibility);
	} // with (slave.style)
} // function placeOver

function dwmt__(n,subj,body) {
// document write mail to
	var s1,s2,s3,s4,s5,s6,s7,s8,s9;
	var em = 'E\x2d\x6dail\x3a ', gm = 'gm\x61\x69l\x2ec\x6fm';
	var hm = 'ho\x74m\x61il\x2ec\x6f\x6d';
	var li = 'li\x76\x65\x2e\x64k';
	var kb = 'k\x75n\x73\x74bu\x67t\x2ed\x6b';
	s1 = s2 = s3 = s4 = s5 = s6 = s7 = s8 = s9 = '';
	if (typeof(subj)=='string') {
		s2 = '?subject=' + subj;
		if (typeof(body)=='string') s2 += '&amp;body=' + body;
	} // if (typeof(subj)...
	switch (n) {
		// s1: start kommentar
		// s2: query string (fx ?subject=emne&amp;body=brødtekst)
		//     Argumenter subj og body opdaterer automatisk s2
		// s3: andre properties og s3 
		// s4: slut kommentar
		// s6: protokol
		// s7: navn
		// s8: domæne
		// s9: link tekst
		default: return;
		case 101: case 501: break;
		case 102: case 502: s1 = em; break;
		case 512: s1 = em;
		case 511: s7='eh'; s8=kb; break;
		case 802:
			s1 = em;
		case 801:
			s7 = 'jy\x74tes\x63hou';
			s8 = gm;
			break;
		case 812:
			s1 = em;
		case 811:
			s7 = 'ne\x77\x7atra\x6eger';
			s8 = hm;
			break;
		case 824:
			s1 = em;
		case 823:
			s7 = 'ku\x6e\x73\x74\x3201\x32';
			s8 = li;
			break;
		case 822:
			s1 = em;
		case 821:
			s7 = 'in\x67\x65\x6bn';
			s8 = hm;
			break;
		case 901: // call from bottomNote__()
			s1 = '<p class="t0 b0">';
			if (typeof(localBN1__)=='string') s1 += localBN1__;
			if (typeof(localBN2__)=='string') s4 = localBN2__;
			s4 += '<\/p>';
			s7 = s9 = 'webmaster';
			break;
	} // switch (n)
	if (s6=='') s6 = 'm\x61il\x74o\x3a';
	if (s7=='') s7 = 'info';
	if (s8=='') s8 = kb;
	if (s9=='') s9 = s7 + '\x40' + s8;
	document.write(s1 + '\x3ca h\x72ef=\x22' + s6 + s7 +'\x40'
		+ s8 + s2 + '"' + s3 + '>' + s9 + '\x3c\x2fa>' + s4);
} // function dwmt__()

function findStyle(selector,property) {
// returns the specified property for the specified selector, or '' if not found
	var i, j, style, rule, cssRules, styles = document.styleSheets;
	if (!styles) return '';
	selector = selector.toLowerCase();
	for (i=0; i<styles.length; i++) {
		style = styles[i];
		cssRules = style.cssRules;
		if (!cssRules) cssRules = style.rules;
			// NB! In Google Chrome, both cssRules and rules are null (oct. 2010) 
		if (cssRules) {
			for (j=0; j<cssRules.length; j++) {
				rule = cssRules[j];
				if (rule.selectorText.toLowerCase()==selector && rule.style[property]>'')
					return rule.style[property];
			} // for (j=0; ...
		} // if (cssRules)
	} // for (i=0; ...
	return ''; // not found
} // function findStyle()

function fillColumn() {
// fills the narrow column to the right of the image in format "wide"
	var sitePicture = get('sitePicture'), columnFiller, spOffs, cfOffs, bm, below, fill;
	columnFiller = get('columnFiller');
	if (!sitePicture||!columnFiller) return;
	spOffs = findOffsets(sitePicture);
	cfOffs = findOffsets(columnFiller);
	bm = findStyle('img.sitePicture','marginBottom');
	bm = (bm>'' ? parseInt(bm) : 30) + msieErr;
	below = spOffs.offsetTop + sitePicture.clientHeight + bm;
	fill = below + columnExtra - cfOffs.offsetTop + 10; // 6 is not enough, 8 suffice, 10 is safer
	columnFiller.title = spOffs.offsetTop+','+sitePicture.clientHeight+','+bm+','+below
		+' - '+columnExtra+','+cfOffs.offsetTop+','+fill;
		// so they can be checked
	if (fill>0) columnFiller.style.height = fill + 'px';
} // function fillColumn()

