﻿//# <p>Web Publisher Core Functions</p> <p>Innehåller bla funktioner:<ul><li>för att posta formulär</li><li>Läsa/Skriva cookie-information</li><li>Formulär validering</li><li>Skriva ut flash-filmer</li><li>Querystring-bearbetning</li><li>XML-Debug visning</li><li>etc</li></ul></p>

var frmT = "";
var frmA = "";
var frm = null;

function SubmitToFrame(form, action, target)
//Tar bort viewstate och skickar specificerat form (som är runat=server) till en annan frame.
//Lägg till functionsanropet till ONSUBMIT, ange THIS som form.
{

	if (form == null)
		form = document.forms[0];

	frmT = form.target;
	frmA = form.action;
	frm = form;

	if (action != null)
		form.action = action;
	if (target != null)
		form.target = target;
	else
		form.target = "_self";
	if (form.__VIEWSTATE)
		form.__VIEWSTATE.disabled = true;

	form.submit();

	window.setTimeout(resetForm, 1)
	return false;
}
function redirectForm(form, url, target, addQS) {
	if (form == null)
		form = document.forms[0];

	var el = form.getElementsByTagName("INPUT");
	var qs = "";
	for (elind = 0; elind < el.length; elind++) {
		if (el[elind].name.substr(0, 2) != '__') {
			if (el[elind].type == 'radio' || el[elind].type == 'checkbox') {
				if (el[elind].checked) {
					if (el[elind].name.length > 0) {
						qs += el[elind].name;
						qs += "=";
						qs += el[elind].value;
						qs += "&";
					}
				}
			}
			else {
				if (el[elind].name.length > 0) {
					qs += el[elind].name;
					qs += "=";
					qs += el[elind].value;
					qs += "&";
				}
			}
		}
	}
	var el = form.getElementsByTagName("TEXTAREA");
	for (elind = 0; elind < el.length; elind++) {
		if (el[elind].name.length > 0) {
			qs += el[elind].name;
			qs += "=";
			qs += el[elind].value;
			qs += "&";
		}
	}
	var el = form.getElementsByTagName("SELECT");
	for (elind = 0; elind < el.length; elind++) {
		if (el[elind].name.length > 0) {
			qs += el[elind].name;
			qs += "=";
			qs += el[elind].selectedValue;
			qs += "&";
		}
	}
	if (target == '' || target == '_self') {
		document.location = url + '?' + qs + addQS;
	}
	else {
		var frame = eval('parent.' + target);
		frame.location.href = url + '?' + qs + addQS;
	}
}
function resetForm() {
	frm.target = frmT;
	frm.action = frmA;
	frm.__VIEWSTATE.disabled = false;
}
function getQueryString(id, frame) {
	try {
		var doc = null;
		if (frame != "undefined" && frame != null)
			doc = eval(frame);
		else
			doc = document;

		id = id.toLowerCase();

		var QS = doc.location.href.toLowerCase();
		var QS_from = QS.indexOf(id);
		if (QS_from > 0) {
			QS_from = QS.indexOf('=', QS_from) + 1;
			var QS_to = QS.indexOf('&', QS_from);
			if (QS_to < QS_from)
				return QS.substr(QS_from);
			else
				return QS.substr(QS_from, (QS_to - QS_from));
		}
		else
			return "";
	}
	catch (e) {
		alert(e.description)
		return "";
	}
}
function writeCookie(name, value, expires) {
	var cookie = name + "=" + value + ";";

	if (expires == null) {
		//4320000000 = 50 dygn i millisekunder
		var date = new Date();
		date.setTime(date.getTime() + (4320000000));
		expires = date.toGMTString();
	}
	else if (!isNaN(expires)) {
		var date = new Date();
		date.setTime(date.getTime() + (expires));
		expires = date.toGMTString();
	}
	cookie += " expires=" + expires + ";";

	cookie += " path=/";
	document.cookie = cookie;
}

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 "";
}


/*ser till att URL får Name=newValue i sig. om Name finns sedan tidigare tas den och dess värde bort ur strängen.*/
function QSTR_replaceValue(URL, Name, newValue) {
	var i = URL.lastIndexOf('?')
	var myURL = ''
	var myStr = '';
	if (i != -1) {
		myURL = URL.substr(0, i)
		myStr = URL.substr(i + 1)
		var myArr = new Array()
		myArr = myStr.split('&')
		var valueExists = false;
		for (var i = 0; i < myArr.length; i++) {
			myArr[i] = myArr[i].split('=')

			if (myArr[i][0].toLowerCase() == Name.toLowerCase()) {
				myArr[i][1] = newValue
				valueExists = true
			}
			if (myArr[i].length == 1)
				myArr[i][1] = '';
		}
		if (!valueExists) {
			myArr[myArr.length] = new Array(2);
			myArr[myArr.length - 1][0] = Name;
			myArr[myArr.length - 1][1] = newValue;
		}
		myStr = ''
		for (var i = 0; i < myArr.length; i++) {
			if (myArr[i][0].length > 0)
				myStr += myArr[i][0] + '=' + myArr[i][1] + '&'
		}
		if (myStr.length > 0)
			myStr = myStr.substr(0, myStr.length - 1)

	}
	else {
		myStr = Name + '=' + newValue;
		myURL = URL
	}
	return myURL + '?' + myStr;
}

/* BEGIN GENERIC FORMVALIDATION */
/*
kolla intranätet extranät/arkiv/generisk formulärkoll för beskrivning. gör du några ändringar kan det vara bra att uppdatera texten där också


var rootHref='/'
if(document.location.href.toLowerCase().indexOf('http://localhost/')!=-1)
rootHref='/localhost/'
*/

var stdErrMsgDivMinWidth = 100;
var currentGroup = false;

function displayErrorMessage(element, message) {
	var stdErrMsgDiv = getStdErrorDiv();
	stdErrMsgDiv.innerHTML = message

	var fieldPos = getElementPosition(element)
	stdErrMsgDiv.style.top = fieldPos[0] + element.offsetHeight;
	stdErrMsgDiv.style.left = fieldPos[1];


	if (element.offsetWidth < stdErrMsgDivMinWidth)
		stdErrMsgDiv.style.width = stdErrMsgDivMinWidth;
	else
		stdErrMsgDiv.style.width = element.offsetWidth;

	stdErrMsgDiv.style.display = 'block';
	window.setTimeout('hideStdErrMsgDiv()', 2000);
	if (element.focus)
		element.focus();
	if (element.select)
		element.select();
}
function checkForm(form) {
	if (form) {
		form.action = QSTR_replaceValue(form.action, 'currentgroup', currentGroup);

		var returnValue = true;
		try {
			if (!checkFormBeforeCheck(form, currentGroup)) {
				return false;
			}
		}
		catch (e) { }

		for (var i = 0; i < form.length; i++) {
			var standardErorrMsg = true;
			var tmpErrorMsg = checkField(form[i])
			if (tmpErrorMsg != true) {
				try {
					if (!checkFormOnFaliure(form, currentGroup, tmpReturnValue, form[i]))
						standardErorrMsg = false;
				}
				catch (e) { }

				if (standardErorrMsg) {
					//window.status=(tmpErrorMsg)
					//form[i].style.borderColor='red';
					//var stdErrMsgDiv=getStdErrorDiv();
					//stdErrMsgDiv.innerHTML = tmpErrorMsg
					//form[i].title=tmpErrorMsg;
					//form[i].style.cursor='help';

					//var fieldPos = getElementPosition(form[i])
					//stdErrMsgDiv.style.top = fieldPos[0]+form[i].offsetHeight;
					//stdErrMsgDiv.style.left = fieldPos[1];
					//stdErrMsgDiv.style.width = form[i].offsetWidth;
					//stdErrMsgDiv.style.display ='block';
					//window.setTimeout('hideStdErrMsgDiv()',2000);
					if (form[i].focus)
						form[i].focus();
					if (form[i].select)
						form[i].select();
					alert(tmpErrorMsg);
					return false;
				}
				else {
					form[i].style.borderColor = '';
					form[i].title = '';
					form[i].style.cursor = '';
				}
			}
			else
				form[i].style.borderColor = '';

		}
		try {
			if (!checkFormBeforeSubmit(form, currentGroup, returnValue))
				returnValue = false;
			else
				returnValue = true;
		}
		catch (e) { }


		return returnValue;
	}
	//no form
	return true;
}

function getElementPosition(inElement) {

	if (!inElement)
		return new Array(0, 0)
	var posY = 0;
	var PosX = 0;
	while (inElement) {
		//alert(inElement.nodeName +'\nTop:' +inElement.offsetTop +'\nLeft:' +inElement.offsetLeft)
		posY += inElement.offsetTop;
		PosX += inElement.offsetLeft;
		inElement = inElement.offsetParent
	}
	return new Array(posY, PosX)

}
function getStdErrorDiv() {
	var standardErrorMsgDiv = document.getElementById("standardErrorMsgDiv")
	if (!standardErrorMsgDiv) {
		standardErrorMsgDiv = document.createElement("DIV")
		standardErrorMsgDiv.id = "standardErrorMsgDiv";
		standardErrorMsgDiv.className = "stdErrMsgDiv";
		standardErrorMsgDiv = document.body.appendChild(standardErrorMsgDiv)
	}
	return standardErrorMsgDiv
}
function hideStdErrMsgDiv() {
	var standardErrorMsgDiv = document.getElementById("standardErrorMsgDiv")
	if (standardErrorMsgDiv)
		standardErrorMsgDiv.style.display = 'none';
}

function checkSingleField(field) {
	if (checkField(field) == true)
		field.style.borderColor = '';
	else
		field.style.borderColor = 'red';
}
function checkField(field) {
	var altOptions = loadAltOptions(field)
	if (altOptions) {
		var group = getAltOption(altOptions, 'group')
		if (group == currentGroup || (!currentGroup)) //if currentGroup not set - don't bother with groups
		{
			var re;
			if (getAltOption(altOptions, 'required') == 'yes' || (getAltOption(altOptions, 'required') != 'yes' && field.value.length > 0)) {
				var type = getAltOption(altOptions, 'type')
				if (type)
					type = type.toLowerCase()

				if (field.value.length != 0) {
					switch (type) {
						case 'email':
							re = /^[a-z0-9]([a-z0-9_\-\.]*)@([a-z0-9_\-\.]*)(\.[a-z]{2,4}(\.[a-z]{2}){0,2})$/i
							if (field.value.search(re) != -1)
								return true;
							break;
						case 'string':
							re = /\w+/i
							if (field.value.search(re) != -1)
								return true;
							break;
						case 'notempty':
							if (field.value.length > 1)
								return true;
							break;
						case 'integer':
							re = /(^\d\d*$)/
							if (field.value.search(re) != -1)
								return true;
							//re = /(^-?\d\d*$)/ //tillåt negativa heltal
							break;
						case 'phone':
							re = /([0-9\(\)+ \-\/])$/
							if (field.value.search(re) != -1)
								return true;
							break;
						case 'numeric':
							re = /([0-9\.\,\-])$/
							if (field.value.search(re) != -1)
								return true;
							break;
						case 'socialid':
							var result = 0, s2 = 0, i = 0
							var text = field.value.replace(/\D/g, "");
							if (text.search(/\d{6}\d{4}/) == 0 && checkDate(text.substring(0, 6))) {
								if (text.search(/\d{6}0{4}/) == 0) //utländska människor som inte har de fyra sista siffrorna kan fylla i fyra nolor istället
								{
									field.value = text;
									return true;
								}
								for (i = 0; i < text.length - 1; i++)		//gör t o m näst sista siffran.
								{
									s = parseInt(text.substr(i, 1)); //ta siffra
									if (i % 2 == 0)								//jämnt delbar med 2
										(s >= 5) ? s2 = (((s - 5) * 2) + 1) : s2 = (s * 2); 			// 5 eller högre -> dra av 5, multiplicera med 2 och lägg till 1. // lägre -> multiplicera med 2
									else											//ej jämnt delbar med 2
										s2 = s;
									result = result + s2; 				//lägg siffra till resultat			
								}
								if (result % 10 != 0)
									result = 10 - (result % 10); 				//resultat modulus 10 = entalssiffra.  //10 minus resultat = avstånd till närmsta högre 10-tal
								else
									result = 0;
								s = parseInt(text.substr(i, 1));
								if (s == result) {
									field.value = text
									return true;
								}
							}
							break;
						case 'time':

							var testvalue = field.value.replace(/\D/g, '')
							while (testvalue.length < 4)
								testvalue += '0';
							if (testvalue.length == 4) {
								var hour = testvalue.substr(0, 2)
								var minute = testvalue.substr(2, 2)
								if (minute < 59 && hour < 23) {
									field.value = addZero(hour, 2) + ':' + addZero(minute, 2);
									return true;
								}
							}
							break;
						case 'date':
							var testvalue = checkDate(field.value.replace(/\D/g, ''))
							if (testvalue) {
								field.value = testvalue
								return true;
							}
							break;
						case 'select':
							if (field.selectedIndex > 0)
								return true;
							break;
						case 'radio':
						case 'checkbox':
							var rblist = eval('field.form.' + field.name)
							if (rblist) {
								for (var i = 0; i < rblist.length; i++) {
									if (rblist[i].checked)
										return true;
								}
							}
							else
								return true;
							break;
						default:
							//window.status = 'Validation of ' + type + ' is not implemented'
							return true;
					}
				}

				var errmsg = getAltOption(altOptions, 'errmsg')

				if (errmsg)
					return errmsg;
				else
					return 'The field must be a valid ' + type;

			}

		}

	}
	return true;
}

function checkDate(inValue) //used by checkField for dates and socialid
{
	var inValue = inValue.replace(/\D/g, '')
	if (inValue.length == 6)
		inValue = '20' + inValue
	var year = inValue.substr(0, 4)
	var month = inValue.substr(4, 2) - 1
	var day = inValue.substr(6, 8)
	var inValue = new Date(year, month, day)

	if ((year == inValue.getFullYear() && month == inValue.getMonth() && day == inValue.getDate()))
		return year + '-' + addZero(month + 1, 2) + '-' + addZero(day, 2);
	else
		return false;

}

function loadAltOptions(field) {
	var alt
	if (field.getAttribute)
		alt = field.getAttribute('alt');
	else {
		alt = field.alt;
	}
	if (alt) {
		alt = alt.replace(/\s*;\s*/g, ';')
		alt = alt.replace(/\s*:\s*/g, ':')
		if (alt.length > 0 && alt.indexOf(':') > 0) {
			var altOptions = alt.split(/;/)
			for (var i = 0; i < altOptions.length; i++) {
				if (altOptions[i].indexOf(':') != -1)
					altOptions[i] = altOptions[i].split(':');
				else { //remove empty keys
					altOptions.splice(i, 1)
					i--;
				}
			}
			return altOptions
		}
	}
	return false;
}


function getAltOption(altOptions, name) {
	for (var i = 0; i < altOptions.length; i++) {
		if (altOptions[i][0] == name)
			return altOptions[i][1];
	}
	return false;
}

function addZero(number, digits) {
	number = '0000000000000000000000000000000000000000' + number
	return (number).substr((number).length - digits);
}
/* END GENERIC FORMVALIDATION */

//v1.7
// Flash Player Version Detection
// Detect Client Browser type
// Copyright 2005-2007 Adobe Systems Incorporated.  All rights reserved.
var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;

function ControlVersion() {
	var version;
	var axo;
	var e;

	// NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry

	try {
		// version will be set for 7.X or greater players
		axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
		version = axo.GetVariable("$version");
	} catch (e) {
	}

	if (!version) {
		try {
			// version will be set for 6.X players only
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");

			// installed player is some revision of 6.0
			// GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
			// so we have to be careful. 

			// default to the first public version
			version = "WIN 6,0,21,0";

			// throws if AllowScripAccess does not exist (introduced in 6.0r47)		
			axo.AllowScriptAccess = "always";

			// safe to call for 6.0r47 or greater
			version = axo.GetVariable("$version");

		} catch (e) {
		}
	}

	if (!version) {
		try {
			// version will be set for 4.X or 5.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = axo.GetVariable("$version");
		} catch (e) {
		}
	}

	if (!version) {
		try {
			// version will be set for 3.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = "WIN 3,0,18,0";
		} catch (e) {
		}
	}

	if (!version) {
		try {
			// version will be set for 2.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
			version = "WIN 2,0,0,11";
		} catch (e) {
			version = -1;
		}
	}

	return version;
}

// JavaScript helper required to detect Flash Player PlugIn version information
function GetSwfVer() {
	// NS/Opera version >= 3 check for Flash plugin in plugin array
	var flashVer = -1;

	if (navigator.plugins != null && navigator.plugins.length > 0) {
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
			var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
			var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
			var descArray = flashDescription.split(" ");
			var tempArrayMajor = descArray[2].split(".");
			var versionMajor = tempArrayMajor[0];
			var versionMinor = tempArrayMajor[1];
			var versionRevision = descArray[3];
			if (versionRevision == "") {
				versionRevision = descArray[4];
			}
			if (versionRevision[0] == "d") {
				versionRevision = versionRevision.substring(1);
			} else if (versionRevision[0] == "r") {
				versionRevision = versionRevision.substring(1);
				if (versionRevision.indexOf("d") > 0) {
					versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
				}
			}
			var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
		}
	}
	// MSN/WebTV 2.6 supports Flash 4
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
	// WebTV 2.5 supports Flash 3
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
	// older WebTV supports Flash 2
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
	else if (isIE && isWin && !isOpera) {
		flashVer = ControlVersion();
	}
	return flashVer;
}

// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision) {
	versionStr = GetSwfVer();
	if (versionStr == -1) {
		return false;
	} else if (versionStr != 0) {
		if (isIE && isWin && !isOpera) {
			// Given "WIN 2,0,0,11"
			tempArray = versionStr.split(" "); 	// ["WIN", "2,0,0,11"]
			tempString = tempArray[1]; 		// "2,0,0,11"
			versionArray = tempString.split(","); // ['2', '0', '0', '11']
		} else {
			versionArray = versionStr.split(".");
		}
		var versionMajor = versionArray[0];
		var versionMinor = versionArray[1];
		var versionRevision = versionArray[2];

		// is the major.revision >= requested major.revision AND the minor version >= requested minor
		if (versionMajor > parseFloat(reqMajorVer)) {
			return true;
		} else if (versionMajor == parseFloat(reqMajorVer)) {
			if (versionMinor > parseFloat(reqMinorVer))
				return true;
			else if (versionMinor == parseFloat(reqMinorVer)) {
				if (versionRevision >= parseFloat(reqRevision))
					return true;
			}
		}
		return false;
	}
}

function AC_AddExtension(src, ext) {
	if (src.indexOf('?') != -1)
		return src.replace(/\?/, ext + '?');
	else
		return src + ext;
}

function AC_Generateobj(objAttrs, params, embedAttrs) {
	var str = '';
	if (isIE && isWin && !isOpera) {
		str += '<object ';
		for (var i in objAttrs) {
			str += i + '="' + objAttrs[i] + '" ';
		}
		str += '>';
		for (var i in params) {
			str += '<param name="' + i + '" value="' + params[i] + '" /> ';
		}
		str += '</object>';
	}
	else {
		str += '<embed ';
		for (var i in embedAttrs) {
			str += i + '="' + embedAttrs[i] + '" ';
		}
		str += '> </embed>';
	}
	if (AC_FL_ContentContainer == null)
		document.write(str);
	else {
		document.getElementById(AC_FL_ContentContainer).style.display = "";
		document.getElementById(AC_FL_ContentContainer).innerHTML = str;
	}
}
var AC_FL_ContentContainer = null;
function AC_FL_RunContent() {
	var ret =
	AC_GetArgs
	(arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
	 , "application/x-shockwave-flash"
	);
	AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_SW_RunContent() {
	var ret =
	AC_GetArgs
	(arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000"
	 , null
	);
	AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_GetArgs(args, ext, srcParamName, classid, mimeType) {
	var ret = new Object();
	ret.embedAttrs = new Object();
	ret.params = new Object();
	ret.objAttrs = new Object();
	for (var i = 0; i < args.length; i = i + 2) {
		var currArg = args[i].toLowerCase();

		switch (currArg) {
			case "classid":
				break;
			case "pluginspage":
				ret.embedAttrs[args[i]] = args[i + 1];
				break;
			case "src":
			case "movie":
				args[i + 1] = AC_AddExtension(args[i + 1], ext);
				ret.embedAttrs["src"] = args[i + 1];
				ret.params[srcParamName] = args[i + 1];
				break;
			case "onafterupdate":
			case "onbeforeupdate":
			case "onblur":
			case "oncellchange":
			case "onclick":
			case "ondblClick":
			case "ondrag":
			case "ondragend":
			case "ondragenter":
			case "ondragleave":
			case "ondragover":
			case "ondrop":
			case "onfinish":
			case "onfocus":
			case "onhelp":
			case "onmousedown":
			case "onmouseup":
			case "onmouseover":
			case "onmousemove":
			case "onmouseout":
			case "onkeypress":
			case "onkeydown":
			case "onkeyup":
			case "onload":
			case "onlosecapture":
			case "onpropertychange":
			case "onreadystatechange":
			case "onrowsdelete":
			case "onrowenter":
			case "onrowexit":
			case "onrowsinserted":
			case "onstart":
			case "onscroll":
			case "onbeforeeditfocus":
			case "onactivate":
			case "onbeforedeactivate":
			case "ondeactivate":
			case "type":
			case "codebase":
			case "id":
				ret.objAttrs[args[i]] = args[i + 1];
				break;
			case "width":
			case "height":
			case "align":
			case "vspace":
			case "hspace":
			case "class":
			case "title":
			case "accesskey":
			case "name":
			case "tabindex":
				ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i + 1];
				break;
			default:
				ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i + 1];
		}
	}
	ret.objAttrs["classid"] = classid;
	if (mimeType) ret.embedAttrs["type"] = mimeType;
	return ret;
}

function writeFlashTag(Codebase, Width, Height, Align, Wmode, ID, BgColor, AllowScriptAccess, Movie, requiredMajorVersion, requiredMinorVersion, requiredRevision, alternateContentId, flashVars, writeToContainer) {
	var hasRightVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
	if (hasRightVersion) {  // if we've detected an acceptable version
		// embed the flash movie
		if (writeToContainer != null && writeToContainer != "" && writeToContainer != undefined)
			AC_FL_ContentContainer = writeToContainer;
		else
			AC_FL_ContentContainer = null;

		var protocol = ("https:" == document.location.protocol) ? "https://" : "http://";
		Codebase = Codebase.replace("http://", protocol);

		AC_FL_RunContent(
			'codebase', Codebase,
			'width', Width,
			'height', Height,
			'src', ID,
			'quality', 'high',
			'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
			'align', Align,
			'play', 'true',
			'loop', 'true',
			'scale', 'showall',
			'wmode', Wmode,
			'devicefont', 'false',
			'id', ID,
			'bgcolor', BgColor,
			'name', ID,
			'menu', 'true',
			'allowScriptAccess', AllowScriptAccess,
			'allowFullScreen', 'false',
			'movie', Movie,
			'salign', '',
			'flashVars', flashVars
			); //end AC code
	} else {  // flash is too old or we can't detect the plugin
		if (document.getElementById(alternateContentId))
			document.getElementById(alternateContentId).style.display = '';  // insert non-flash content
	}
}

function openImagePreview(url) {
	try {
		if (picturePreview!=undefined) {
			picturePreview(url);
			return false;
		}
	}
	catch (e) {
	}

	window.open(url, "Image", "top=100,left=100,width=750,height=750,status=0,toolbar=0,menubar=0,scrollbars=1,resizable=1", true);
	return false;
}
/************************************************************************************************************
Frame-resize
************************************************************************************************************/
var monitor_height = 0;
var monitor_width = 0;
var monitor_minheight = 0;
var monitor_minwidth = 0;
var monitor_interval = null;
var monitor_id = null;
function MonitorFrameContent(frameId, minHeight, minWidth) {
	if (monitor_id == null) {
		if (frameId != null) {
			monitor_minwidth = minWidth;
			monitor_minheight = minHeight;
			monitor_id = frameId;
		}
		else
			alert("Error in AutoResizeIFrame: no frameId are set!")
	}
	else if (frameId != null) {
		alert("VARNING!!\nAutoResizeIFrame can only handle one frame on the page!")
	}

	var iframeDoc = null;
	try {
		if (document.all)
			iframeDoc = document.getElementById(monitor_id).contentWindow.document;
		else
			iframeDoc = document.getElementById(monitor_id).contentDocument;
	}
	catch (e) {
		alert("Error occured in AutoResizeIFrame: " + e.message + "\nAutoResizeIFrame does not work on cross domains!");
		return false;
	}
	if (!iframeDoc) {
		setTimeout(MonitorFrameContent, 250);
	}
	else {
		monitor_interval = setInterval(MonitorCheckSize, 1000);
	}
}
function MonitorCheckSize() {
	try {
		var tW = 0;
		var tH = 0;
		var monIfrm = document.getElementById(monitor_id);

		if (document.all) {
			tW = monIfrm.contentWindow.document.body.scrollWidth;
			tH = monIfrm.contentWindow.document.body.scrollHeight;
		}
		else {
			tW = monIfrm.contentDocument.body.offsetWidth;
			tH = monIfrm.contentDocument.body.offsetHeight;
			//tW=monIfrm.contentDocument.body.scrollWidth;
			//tH=monIfrm.contentDocument.body.scrollHeight;
		}
		if (monitor_minwidth > tW)
			tW = monitor_minwidth;
		if (monitor_minheight > tH)
			tH = monitor_minheight;

		if (tW > 0 && tH > 0 && (monitor_height != tH || monitor_width != tW)) {
			monitor_height = tH;
			monitor_width = tW;
			//monIfrm.style.width=tW+'px';
			monIfrm.style.height = tH + 'px';
		}
	}
	catch (e) {
		//alert("Error occured: " + e.message + "\nCoreFunctions.js line:972");
	}
}
function loadStatisticSizes(prefix) {
	var sizeScreen = "";
	var sizeWindow = "";
	try {
		if (parseInt(navigator.appVersion) > 3) {
			sizeScreen = screen.width + "x" + screen.height;
		}
		else if (navigator.appName == "Netscape" && parseInt(navigator.appVersion) == 3 && navigator.javaEnabled()) {
			var jToolkit = java.awt.Toolkit.getDefaultToolkit();
			var jScreenSize = jToolkit.getScreenSize();
			sizeScreen = jScreenSize.width + "x" + jScreenSize.height;
		}
		else {
			sizeScreen = "unknown"
		}
	}
	catch (e) {
		sizeScreen = e.message;
	}

	try {
		if (typeof (window.innerWidth) == 'number') {
			//Non-IE
			sizeWindow = window.innerWidth + "x" + window.innerHeight;
		}
		else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
			//IE 6+ in 'standards compliant mode'
			sizeWindow = document.documentElement.clientWidth + "x" + document.documentElement.clientHeight;
		}
		else if (document.body && (document.body.clientWidth || document.body.clientHeight)) {
			//IE 4 compatible
			sizeWindow = document.body.clientWidth + "x" + document.body.clientHeight;
		}
	}
	catch (e) {
		sizeWindow = e.message;
	}
	document.getElementById(prefix+"_statistics_screen").value = sizeScreen;
	document.getElementById(prefix+"_statistics_window").value = sizeWindow;
}
function tN(element) //toggleNode
{
	while (element) {
		switch (element.nodeName) {
			case 'SPAN':
				if (element.innerHTML == '+')
					element.innerHTML = '-';
				else
					element.innerHTML = '+';
				break;
			case 'UL':
				if (element.style.display == '')
					element.style.display = 'none';
				else
					element.style.display = '';
				break;
		}
		element = element.nextSibling;
	}
}
function tA() {
	var ulObj = document.getElementById("debugXMLViewer").childNodes[1].childNodes[0];
	var spanList = ulObj.getElementsByTagName('SPAN');
	for (var x = 0; x != spanList.length; x++)
		tN(spanList[x]);
}
function tO(id) {
	if (!document.getElementById("debugXMLViewer")) {
		var nd = document.createElement("div");

		nd.style.position = "absolute";
		nd.style.top = "25px";
		nd.style.left = "25px";
		nd.id = "debugXMLViewer";

		document.body.appendChild(nd);
	}
	document.getElementById("debugXMLViewer").style.display = "";
	document.getElementById("debugXMLViewer").innerHTML = document.getElementById(id).innerHTML;
	document.getElementById("debugXMLViewer").focus();
}
function tC() {
	document.getElementById("debugXMLViewer").style.display = "none";
}
