screenPixelsRelativeToIE = 1
baseFont = 0.801
factor = 1
bF = .801
if (typeof writeParams == "undefined") writeParams = 0
if (typeof styleType == "undefined") styleType = "html"
if (typeof calcStartingFontSize == "undefined") calcStartingFontSize = false

//e.g.
//openWindow('filename','windowName','location=yes,menubar=yes','1000,20','top=50,left=2','','rtnObj')"
//openWindow('filename','windowName','','','','true|false','rtnObj')"
//openWindow('filename','windowName') for default setting, width:540, height:300; top:50, left:30, resizable,scrollbar, and window given focus and not returned as a object
//fcs must be null (not there), or '', or true to give the new window focus. Anything does not give focus,
// rtnObj, if it is rtnObj then the window object is returned

function openWindow(file, wName, params, sizes, position, fcs, Obj, sizeOverRide) {
	var file, wName, params, sizes, position, fcs, Obj, defW, defH, fcus, sOverRide
	var p=''
	if (sizeOverRide == null || sizeOverRide == '') sOverRide = false ; else sOverRide = true
	if (wName == null || wName == '') wName = 'adWIn'
	var f = readCookie("size_factor")
	if (f == null) f = 1
	if (params == null || params == '') {
		params = 'resizable=yes,scrollbars=yes'
	}
	p = p + params+','
	var winW = self.screen.width
	var winH = self.screen.height
	if (sizes == null || sizes == '') {
		defW = 540*f
		defH = 300*f
	}
	else {
		if (sOverRide) f = 1
		defW = sizes.substring(0,sizes.indexOf(","))*f
		defH = sizes.substring(sizes.indexOf(",")+1,sizes.length)*f
	}
	if (defW > 0.8*winW && !sOverRide) defW = 0.8*winW
	if (defH > 0.7*winH && !sOverRide) defH = 0.7*winH
	defW = parseInt(defW)
	defH = parseInt(defH)
	p = p+'width='+defW+","
	p = p+'height='+defH+","
	if (position == null || position == '') {
		p = p+'top=50,'
		p = p+'left=30'
	}
	else p = p + position
	if (fcs == null || fcs == '' || fcs == 'true') fcus = true; else fcus = false
//	alert(p+"\nFocus: "+fcus+"\n"+f)
	var popupWin = window.open(file, wName, p)
	// to account for popup blockers, null of for IE, FF, and for Opera object exists but has no properties
	if (popupWin == null || popupWin.name != wName) {
		popupWin = 'blocked'
		return ("undefined")
	}
	else {
		if (fcus == true) popupWin.focus()
		if (Obj == 'rtnObj') return (popupWin)
	}
}

function getDefFontSize(el,el2,styleProp, styleProp2) {
	if (document.getElementById && document.getElementById(el)) { 
		var x = document.getElementById(el);
		var w = document.getElementById(el2);
		var ua = navigator.userAgent.toLowerCase();
		var isOpera = (ua.indexOf('opera') > -1);
		if ((x.currentStyle) && !(isOpera)) {//IE gives em of fontSizeTest e.g. 3.2, IE 5.2 for Mac gives pixels, Opera truncates the font em value to integer
			var y = parseFloat(x.currentStyle[styleProp]); //
			fType = 'IE'
			if ( y >= 10 ) { // gets case where y gives pixels not em as in Mac IE 5.2
				u = y
				z = parseFloat(w.currentStyle[styleProp])
				y = parseInt( (parseFloat(u)/parseFloat(z))*10000)/10000
			}
			if (writeParams == 1) {
				document.write('w: '+parseFloat(w.currentStyle[styleProp])+'<br>')
				document.write('y: '+y+'<br>')
			}
		}
		//else if (window.getComputedStyle) {
		else if (document.defaultView && document.defaultView.getComputedStyle) {//FF etc give px
			var u = document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp2);
			var z = document.defaultView.getComputedStyle(w,null).getPropertyValue(styleProp2);
			y = parseInt( (parseFloat(u)/parseFloat(z))*10000)/10000
			fType = 'FF'
		}
		else {
			y = 4
			fType = 'Other'
		}
	}
	else {
		y = 4
		fType = 'backup'
	}
	return y/4;
}

function getFontSize() { 
var w, h, type ; 
	if ( document.getElementById && document.getElementById('testdpi') ) { 
		h = document.getElementById('testdpi').offsetHeight
		w = document.getElementById('testdpi2').offsetHeight
		type = 1
	}
	else if (document.layers) { 
		h = document.layers['testdpi'].clip.height
		w = document.layers['testdpi2'].clip.height
		type=2
	}
	else if (document.all) { 
		h = document.all['testdpi'].offsetHeight
		w = document.all['testdp2'].offsetHeight
		type=3
	} 
	else {
		h = 1
		w = 1
	}
	//h*6 is the screen dpi (h is the number of pixels for 12 pt which is 1/6 of an inch.
	//w is the dots (pixels) that 1em takes
	var dpiPerEm = parseInt((w + 0.5)*10/10)
	var scrP = w/h*16
	var screenPixels = parseInt(w/h*16*1000)/1000
	baseFont = getDefFontSize('tst','tst2','fontSize','font-size')
	var bFont = baseFont
	if (baseFont > 2 || baseFont < 0.5) baseFont = 0.804 //protect bad values
	screenPixelsRelativeToIE = parseInt((16/scrP)*baseFont*10000)/10000
	if (writeParams == 1) {
		document.write('Font get Type: '+fType+'&nbsp;&nbsp;Type: '+type+'<br>')
		document.write('scp: '+scrP+'&nbsp;&nbsp;w: '+w+'&nbsp;&nbsp;h: '+h+'<br>')
		document.write('baseFont: '+baseFont+'&nbsp;&nbsp;origbaseFont: '+bFont+'<br>')
		document.write('scPix*Relie: '+screenPixelsRelativeToIE*scrP+'<br>')
		document.write('Relie: '+screenPixelsRelativeToIE+'<br>')
	}
	//alert(h+"dpi per 12 pt \n"+parseInt((h/w)*1000)/1000+" em for 12pt\n"+screenPixels+" pixels/em * factor(1em = 16 pixels)\n"+screenPixelsRelativeToIE+"  relToIE"+"\n\n basefont: "+baseFont)
}

function setStyle() {
	factor = readCookie("size_factor");
	var allowedCookies = true
	if (factor == null || factor > 2.1 || factor < 0.7 ) {
		factor = 1
		createCookie("size_factor", 1 , 10);
		testCookie = readCookie("size_factor")
		if (testCookie == null) allowedCookies = false
	}
	if (calcStartingFontSize) {
		if (allowedCookies) getFontSize()
		else {
			screenPixelsRelativeToIE = 1.001
			baseFont = 0.803
		}
		if (screenPixelsRelativeToIE <= 0.5 || typeof screenPixelsRelativeToIE == 'string') {
			screenPixelsRelativeToIE = 1.002
		}
		createCookie("font_size",screenPixelsRelativeToIE+"$"+baseFont , 10)
	}
	else {
		var ps = readCookie("font_size");
		if (ps == null) {
			baseFont = 0.802
			screenPixelsRelativeToIE = 1.003
			createCookie("font_size",screenPixelsRelativeToIE+"$"+baseFont , 10)
		}
		else {
			screenPixelsRelativeToIE = ps.substring(0,ps.indexOf("$"))
			baseFont = ps.substring(ps.indexOf("$")+1,ps.length)
		}
	}
	if (styleType == "html") bF = 1; else bF = baseFont
	// don't really need this since this just duplicates writeStyle
	//changeS(factor, 0)
}
function changeS(x, set) {
	if (document.getElementById){
//		var nodeObj = document.getElementById("mainS")
		if (styleType == "html") var nodeObj = document.getElementsByTagName("html")[0];
		else var nodeObj = document.getElementsByTagName("body")[0];
		if (nodeObj != null) {
			var f = screenPixelsRelativeToIE*bF*x
			nodeObj.style.fontSize = f+'em';
			//nodeObj.style.fontStyle = 'italic';
			if (set == null) createCookie("size_factor", x , 10);
		}
		else {
			var xx = parseFloat(x) + .001
			createCookie("size_factor", xx , 10);
		}
	}
	else createCookie("size_factor", 1.002 , 10)
}

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = ";expires="+date.toGMTString();
	}
	else expires = "";
	document.cookie = name+"="+value+expires+";path=/;";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}
function writeSizeTest() {
	document.write("<div id='tst' class='fontSizeTest' style='visibility: hidden; position: absolute; top: 1px; left: 1px;'>_</div><div id='tst2' style=' visibility: hidden; position: absolute; top: 1px; left: 1px;'>_</div>")
	document.write("<div id='testdpi' style='font-size: 12pt;  line-height: 12pt; display:block; visibility: hidden; position: absolute; top: 1px; left: 1px;'>_</div>")
	document.write("<div id='testdpi2' style='font-size: 1em; line-height: 1em; display:block; visibility: hidden; position: absolute; top: 1px; left: 1px;'>_</div>")
}

function writeStyle() {
	var f
	f = factor
	document.write('<style type="text/css">')
	var a ='#mainS {font-size: '+f*screenPixelsRelativeToIE*bF+'em;}'
	document.write(a)
	document.write('</style>')
}

if (calcStartingFontSize) {
	writeSizeTest()
}

setStyle()

writeStyle()

if (writeParams == 1) {
	document.write('scrPixRelIE:'+screenPixelsRelativeToIE+'<br>')
	rr = readCookie("size_factor")
	dd = readCookie("font_size")
	document.write('size: '+rr)
	document.write('&nbsp;&nbsp; style '+dd+'<br>')
	document.write('Type: '+styleType+'<br>')
}
