// EOS Specific addition to ufo.js

/*
Onderhoudstips:
- Houd dit script zo "unobtrusive" als mogelijk:
  - gebruik geen globale variabelen:
    * kan clashes opleveren met andere scripts
    * het werkt niet met meerdere banners op 1 pagina
*/
/*
CreateBanner maakt een banner object aan op basis van de meegegeven parameters.
Voor flash banners gebeurt dit op een manier die rekening houdt met browser
type en of de flash plugijng wel geinstalleerd is.

Parameters:
tpid = Fortis ASR tussenpersoon id.
returnurl = url waar naar toe genavigeerd wordt bij het afsluiten van de
  module, mag met of zonder http://. voor https sites moet er wel https://
  voorstaan.
placeholderId = id van het element waar de banner in geplaats moet worden.
  Bestaande content wordt overschreven. Eerst door een a tag met daarin een
  image van de juiste afmetingen, daarna, indien het een flash banner moet
  worden en flash geinstalleerd is, door het flash object.
bannerName = naam van het banner object zonder extensie.
  aannames: naam = asr<breedte>x<hoogte>[_(animated|statisch)]
  en er is een image van gelijke afmetingen en eindigend op _statisch.gif.
website = URL naar de root van de Fortis ASR dubbelklik webmodule (inclusief
  https://).
paramName = naam van een optionele extra parameter.
paramValue =  waarde van de optionele extra parameter.
*/
function CreateBanner(tpid, returnUrl, placeholderId, bannerName, website, paramName, paramValue)
{
	var completeReturnUrl;
	if (returnUrl.substr(0, 4).toLowerCase() == "http")
	{
		completeReturnUrl = returnUrl;
	}
	else
	{
		completeReturnUrl = "http://" + returnUrl;
	}
	var querystringReturnUrl = completeReturnUrl.replace(/:/, "%3a");
	var params;
	
	if (paramName == undefined || paramName == "")
	{
		params = "";
	}
	else
	{
		params = "&" + paramName + "=" + paramValue;
	}	

	var	aHref = website + "/StartWidget.aspx?returnurl=" + querystringReturnUrl + "&tpid=" + tpid + params;

	var posX = bannerName.indexOf("x");
	var posU = bannerName.indexOf("_");
	var isFlash = posU == -1;
	var imageName;
	if (isFlash)
	{
		posU = bannerName.length;
		imageName = bannerName + "_statisch.gif";
	}
	else
	{
		imageName = bannerName + ".gif";
	}
	var width = bannerName.substring(3, posX);
	var height = bannerName.substring(posX + 1, posU);

	var CfoIh = { aHref:"", imgSrc:"", imgAlt:"", imgWidth:"", imgHeight:"", placeholderId:"" };
	CfoIh["aHref"] = aHref;
	CfoIh["imgSrc"] = website + "/images/" + imageName;
	CfoIh["imgAlt"] = "Sluit uw schadeverzekeringen online";
	CfoIh["imgWidth"] = width;
	CfoIh["imgHeight"] = height;
	CfoIh["placeholderId"] = placeholderId;

	var FO = { id:"", movie:"", width:"", height:"",
			align:"middle", menu:"false",
			quality:"high", wmode:"transparent",
			allowScriptAccess:"sameDomain",
			majorversion:"6", build:"40" };
			
	if (isFlash)
	{
		// De gehele url dient als 1 parameter te worden doorgegeven aan het flash-object. Daarom worden querystring-tekens 'ge-escaped'
		if (paramName == undefined || paramName == "")
		{
			params = "";
		}
		else
		{
			params = "%26" + paramName + "%3d" + paramValue;
		}	

		var widgetUrl = website + "/StartWidget.aspx%3freturnurl%3d" + querystringReturnUrl + "%26tpid%3d" + tpid + params + "&wTarget=_top";
		var movie = website + "/images/" + bannerName + ".swf?widgetUrl=" + widgetUrl;
		FO["id"] = bannerName;
		FO["movie"] = movie;
		FO["width"] = width;
		FO["height"] = height;
	}
	UFO.create(FO, placeholderId, CfoIh);
}

function CreateFlash(placeholderId, bannerName, width, height)
{
	var CfoIh = { aHref:"", imgSrc:"", imgAlt:"", imgWidth:"", imgHeight:"", placeholderId:"" };
	CfoIh["aHref"] = "";
	CfoIh["imgSrc"] = "";
	CfoIh["imgAlt"] = "Sluit uw schadeverzekeringen online";
	CfoIh["imgWidth"] = 0;
	CfoIh["imgHeight"] = 0;
	CfoIh["placeholderId"] = placeholderId;

	var FO = { id:"", movie:"", width:"", height:"",
			align:"middle", menu:"false",
			quality:"high", wmode:"transparent",
			allowScriptAccess:"sameDomain",
			majorversion:"6", build:"40" };

	var movie = "../../flash/" + bannerName + ".swf";
	
	FO["id"] = bannerName;
	FO["movie"] = movie;
	FO["width"] = width;
	FO["height"] = height;
		
	UFO.create(FO, placeholderId, CfoIh);
}

// End of EOS Specific addition to ufo.js

/*	Unobtrusive Flash Objects (UFO) v3.20 <http://www.bobbyvandersluis.com/ufo/>
	Copyright 2005, 2006 Bobby van der Sluis
	This software is licensed under the CC-GNU LGPL <http://creativecommons.org/licenses/LGPL/2.1/>
*/

var UFO = {
	req: ["movie", "width", "height", "majorversion", "build"],
	opt: ["play", "loop", "menu", "quality", "scale", "salign", "wmode", "bgcolor", "base", "flashvars", "devicefont", "allowscriptaccess", "seamlesstabbing"],
	optAtt: ["id", "name", "align"],
	optExc: ["swliveconnect"],
	ximovie: "ufo.swf",
	xiwidth: "215",
	xiheight: "138",
	ua: navigator.userAgent.toLowerCase(),
	pluginType: "",
	fv: [0,0],
	foList: [],
	// EOS Specific addition to ufo.js
	cfoIhList: [],
	// End of EOS Specific addition to ufo.js

	// EOS Specific addition to ufo.js: parameter CFO_IH added
	create: function(FO, id, CFO_IH) {
		if (!UFO.uaHas("w3cdom") || UFO.uaHas("ieMac")) return;
		UFO.getFlashVersion();
		UFO.foList[id] = UFO.updateFO(FO);
		// EOS Specific addition to ufo.js
		UFO.cfoIhList[id] = CFO_IH;
		// End of EOS Specific addition to ufo.js
		// EOS Specific addition, commented out:
		//UFO.createCSS("#" + id, "visibility:hidden;");
		UFO.domLoad(id);
	},

	updateFO: function(FO) {
		if (typeof FO.xi != "undefined" && FO.xi == "true") {
			if (typeof FO.ximovie == "undefined") FO.ximovie = UFO.ximovie;
			if (typeof FO.xiwidth == "undefined") FO.xiwidth = UFO.xiwidth;
			if (typeof FO.xiheight == "undefined") FO.xiheight = UFO.xiheight;
		}
		FO.mainCalled = false;
		return FO;
	},

	domLoad: function(id) {
		var _t = setInterval(function() {
			// EOS Specific addition, added to if condition: " && UFO.isImageLoaded(id)"
			if ((document.getElementsByTagName("body")[0] != null || document.body != null) && document.getElementById(id) != null && UFO.isImageLoaded(id)) {
				UFO.main(id);
				clearInterval(_t);
			}
		}, 250);
		if (typeof document.addEventListener != "undefined") {
			document.addEventListener("DOMContentLoaded", function() { UFO.main(id); clearInterval(_t); } , null); // Gecko, Opera 9+
		}
	},

	main: function(id) {
		var _fo = UFO.foList[id];
		if (_fo.mainCalled) return;
		UFO.foList[id].mainCalled = true;
		// EOS Specific addition to ufo.js
		if (!_fo["movie"] || _fo["movie"] == "")
		{
			// replace static image in placeholder by selected banner in an anchor
			UFO.createPlaceholderInnerHTML(UFO.cfoIhList[id]);
		}
		else //if (_fo["movie"] && _fo["movie"] != "")
		{
		// End of EOS Specific addition to ufo.js
		document.getElementById(id).style.visibility = "hidden";
		if (UFO.hasRequired(id)) {
			if (UFO.hasFlashVersion(parseInt(_fo.majorversion, 10), parseInt(_fo.build, 10))) {
				if (typeof _fo.setcontainercss != "undefined" && _fo.setcontainercss == "true") UFO.setContainerCSS(id);
				UFO.writeSWF(id);
			}
			else if (_fo.xi == "true" && UFO.hasFlashVersion(6, 65)) {
				UFO.createDialog(id);
			}
			// EOS Specific addition to ufo.js
			else {
				// if no flash and no dialog: replace static image in placeholder by selected banner in an anchor
				UFO.createPlaceholderInnerHTML(UFO.cfoIhList[id]);
			}
		}
		// End of EOS Specific addition to ufo.js
		}
		document.getElementById(id).style.visibility = "visible";
	},
	
	// EOS Specific addition to ufo.js
	// returns whether the image, if available, has been completely loaded
	isImageLoaded: function(placeholderId)
	{
		// IE only
		if (UFO.uaHas("ieWin"))
		{
			// if first child of placeholder is an image ...
			var placeholder = document.getElementById(placeholderId);
			if (placeholder)
			{
				if (placeholder.hasChildNodes())
				{
					var child = placeholder.firstChild;
					if (child.tagName.toLowerCase() == "img")
					{
						// ... then check if the image has been completely loaded or cannot be found
						return child.readyState == "complete" || child.readyState == "uninitialized";
					}
				}
			}
		}
		// all other cases: continue directly (as before)
		return true;
	},

	// Replaces the content of the placeholder by an image in an anchor as defined in the CfoIh object
	createPlaceholderInnerHTML: function(CfoIh)
	{
		var aHref = CfoIh["aHref"];
		var imgSrc = CfoIh["imgSrc"];
		var imgAlt = CfoIh["imgAlt"];
		var imgWidth = CfoIh["imgWidth"];
		var imgHeight = CfoIh["imgHeight"];
		var placeholderId = CfoIh["placeholderId"];
		var placeholder = document.getElementById(placeholderId);

		if (placeholder)
		{
			var img = UFO.createElement("img");
			img.src = imgSrc;
			img.alt = imgAlt;
			//img.width = imgWidth;
			//img.height = imgHeight;
			img.style.border = "none";
			
			var a = UFO.createElement("a");
			a.className = "banner";
			a.target = "_top";
			a.href = aHref;
			a.title = img.alt;
			a.appendChild(img);

			while (placeholder.hasChildNodes())
			{
				var child = placeholder.firstChild;
				placeholder.removeChild(child);
			}
			placeholder.appendChild(a);
		}
	},
	// End of EOS Specific addition to ufo.js

	createCSS: function(selector, declaration) {
		var _h = document.getElementsByTagName("head")[0]; 
		var _s = UFO.createElement("style");
		if (!UFO.uaHas("ieWin")) _s.appendChild(document.createTextNode(selector + " {" + declaration + "}")); // bugs in IE/Win
		_s.setAttribute("type", "text/css");
		_s.setAttribute("media", "screen"); 
		_h.appendChild(_s);
		if (UFO.uaHas("ieWin") && document.styleSheets && document.styleSheets.length > 0) {
			var _ls = document.styleSheets[document.styleSheets.length - 1];
			if (typeof _ls.addRule == "object") _ls.addRule(selector, declaration);
		}
	},
	
	setContainerCSS: function(id) {
		var _fo = UFO.foList[id];
		var _w = /%/.test(_fo.width) ? "" : "px";
		var _h = /%/.test(_fo.height) ? "" : "px";
		UFO.createCSS("#" + id, "width:" + _fo.width + _w +"; height:" + _fo.height + _h +";");
		if (_fo.width == "100%") {
			UFO.createCSS("body", "margin-left:0; margin-right:0; padding-left:0; padding-right:0;");
		}
		if (_fo.height == "100%") {
			UFO.createCSS("html", "height:100%; overflow:hidden;");
			UFO.createCSS("body", "margin-top:0; margin-bottom:0; padding-top:0; padding-bottom:0; height:100%;");
		}
	},

	createElement: function(el) {
		return (UFO.uaHas("xml") && typeof document.createElementNS != "undefined") ?  document.createElementNS("http://www.w3.org/1999/xhtml", el) : document.createElement(el);
	},

	createObjParam: function(el, aName, aValue) {
		var _p = UFO.createElement("param");
		_p.setAttribute("name", aName);	
		_p.setAttribute("value", aValue);
		el.appendChild(_p);
	},

	uaHas: function(ft) {
		var _u = UFO.ua;
		switch(ft) {
			case "w3cdom":
				return (typeof document.getElementById != "undefined" && typeof document.getElementsByTagName != "undefined" && (typeof document.createElement != "undefined" || typeof document.createElementNS != "undefined"));
			case "xml":
				var _m = document.getElementsByTagName("meta");
				var _l = _m.length;
				for (var i = 0; i < _l; i++) {
					if (/content-type/i.test(_m[i].getAttribute("http-equiv")) && /xml/i.test(_m[i].getAttribute("content"))) return true;
				}
				return false;
			case "ieMac":
				return /msie/.test(_u) && !/opera/.test(_u) && /mac/.test(_u);
			case "ieWin":
				return /msie/.test(_u) && !/opera/.test(_u) && /win/.test(_u);
			case "gecko":
				return /gecko/.test(_u) && !/applewebkit/.test(_u);
			case "opera":
				return /opera/.test(_u);
			case "safari":
				return /applewebkit/.test(_u);
			default:
				return false;
		}
	},
	
	getFlashVersion: function() {
		if (UFO.fv[0] != 0) return;  
		if (navigator.plugins && typeof navigator.plugins["Shockwave Flash"] == "object") {
			UFO.pluginType = "npapi";
			var _d = navigator.plugins["Shockwave Flash"].description;
			if (typeof _d != "undefined") {
				_d = _d.replace(/^.*\s+(\S+\s+\S+$)/, "$1");
				var _m = parseInt(_d.replace(/^(.*)\..*$/, "$1"), 10);
				var _r = /r/.test(_d) ? parseInt(_d.replace(/^.*r(.*)$/, "$1"), 10) : 0;
				UFO.fv = [_m, _r];
			}
		}
		else if (window.ActiveXObject) {
			UFO.pluginType = "ax";
			try { // avoid fp 6 crashes
				var _a = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
			}
			catch(e) {
				try { 
					var _a = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
					UFO.fv = [6, 0];
					_a.AllowScriptAccess = "always"; // throws if fp < 6.47 
				}
				catch(e) {
					if (UFO.fv[0] == 6) return;
				}
				try {
					var _a = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
				}
				catch(e) {}
			}
			if (typeof _a == "object") {
				var _d = _a.GetVariable("$version"); // bugs in fp 6.21/6.23
				if (typeof _d != "undefined") {
					_d = _d.replace(/^\S+\s+(.*)$/, "$1").split(",");
					UFO.fv = [parseInt(_d[0], 10), parseInt(_d[2], 10)];
				}
			}
		}
	},

	hasRequired: function(id) {
		var _l = UFO.req.length;
		for (var i = 0; i < _l; i++) {
			if (typeof UFO.foList[id][UFO.req[i]] == "undefined") return false;
		}
		return true;
	},
	
	hasFlashVersion: function(major, release) {
		return (UFO.fv[0] > major || (UFO.fv[0] == major && UFO.fv[1] >= release)) ? true : false;
	},

	writeSWF: function(id) {
		var _fo = UFO.foList[id];
		var _e = document.getElementById(id);
		if (UFO.pluginType == "npapi") {
			if (UFO.uaHas("gecko") || UFO.uaHas("xml")) {
				while(_e.hasChildNodes()) {
					_e.removeChild(_e.firstChild);
				}
				var _obj = UFO.createElement("object");
				_obj.setAttribute("type", "application/x-shockwave-flash");
				_obj.setAttribute("data", _fo.movie);
				_obj.setAttribute("width", _fo.width);
				_obj.setAttribute("height", _fo.height);
				var _l = UFO.optAtt.length;
				for (var i = 0; i < _l; i++) {
					if (typeof _fo[UFO.optAtt[i]] != "undefined") _obj.setAttribute(UFO.optAtt[i], _fo[UFO.optAtt[i]]);
				}
				var _o = UFO.opt.concat(UFO.optExc);
				var _l = _o.length;
				for (var i = 0; i < _l; i++) {
					if (typeof _fo[_o[i]] != "undefined") UFO.createObjParam(_obj, _o[i], _fo[_o[i]]);
				}
				_e.appendChild(_obj);
			}
			else {
				var _emb = "";
				var _o = UFO.opt.concat(UFO.optAtt).concat(UFO.optExc);
				var _l = _o.length;
				for (var i = 0; i < _l; i++) {
					if (typeof _fo[_o[i]] != "undefined") _emb += ' ' + _o[i] + '="' + _fo[_o[i]] + '"';
				}
				_e.innerHTML = '<embed type="application/x-shockwave-flash" src="' + _fo.movie + '" width="' + _fo.width + '" height="' + _fo.height + '" pluginspage="http://www.macromedia.com/go/getflashplayer"' + _emb + '></embed>';
			}
		}
		else if (UFO.pluginType == "ax") {
			var _objAtt = "";
			var _l = UFO.optAtt.length;
			for (var i = 0; i < _l; i++) {
				if (typeof _fo[UFO.optAtt[i]] != "undefined") _objAtt += ' ' + UFO.optAtt[i] + '="' + _fo[UFO.optAtt[i]] + '"';
			}
			var _objPar = "";
			var _l = UFO.opt.length;
			for (var i = 0; i < _l; i++) {
				if (typeof _fo[UFO.opt[i]] != "undefined") _objPar += '<param name="' + UFO.opt[i] + '" value="' + _fo[UFO.opt[i]] + '" />';
			}
			var _p = "http:";
			try
			{
				_p = window.location.protocol == "https:" ? "https:" : "http:";
			}
			catch (exc)
			{}
			_e.innerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' + _objAtt + ' width="' + _fo.width + '" height="' + _fo.height + '" codebase="' + _p + '//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=' + _fo.majorversion + ',0,' + _fo.build + ',0"><param name="movie" value="' + _fo.movie + '" />' + _objPar + '</object>';
		}
	},
		
	createDialog: function(id) {
		var _fo = UFO.foList[id];
		UFO.createCSS("html", "height:100%; overflow:hidden;");
		UFO.createCSS("body", "height:100%; overflow:hidden;");
		UFO.createCSS("#xi-con", "position:absolute; left:0; top:0; z-index:1000; width:100%; height:100%; background-color:#fff; filter:alpha(opacity:75); opacity:0.75;");
		UFO.createCSS("#xi-dia", "position:absolute; left:50%; top:50%; margin-left: -" + Math.round(parseInt(_fo.xiwidth, 10) / 2) + "px; margin-top: -" + Math.round(parseInt(_fo.xiheight, 10) / 2) + "px; width:" + _fo.xiwidth + "px; height:" + _fo.xiheight + "px;");
		var _b = document.getElementsByTagName("body")[0];
		var _c = UFO.createElement("div");
		_c.setAttribute("id", "xi-con");
		var _d = UFO.createElement("div");
		_d.setAttribute("id", "xi-dia");
		_c.appendChild(_d);
		_b.appendChild(_c);
		var _mmu;
		try
		{
			_mmu = window.location;
		}
		catch (exc)
		{
			_mmu = "";
		}
			
		if (UFO.uaHas("xml") && UFO.uaHas("safari")) {
			var _mmd = document.getElementsByTagName("title")[0].firstChild.nodeValue = document.getElementsByTagName("title")[0].firstChild.nodeValue.slice(0, 47) + " - Flash Player Installation";
		}
		else {
			var _mmd = document.title = document.title.slice(0, 47) + " - Flash Player Installation";
		}
		var _mmp = UFO.pluginType == "ax" ? "ActiveX" : "PlugIn";
		var _uc = typeof _fo.xiurlcancel != "undefined" ? "&xiUrlCancel=" + _fo.xiurlcancel : "";
		var _uf = typeof _fo.xiurlfailed != "undefined" ? "&xiUrlFailed=" + _fo.xiurlfailed : "";
		UFO.foList["xi-dia"] = { movie:_fo.ximovie, width:_fo.xiwidth, height:_fo.xiheight, majorversion:"6", build:"65", flashvars:"MMredirectURL=" + _mmu + "&MMplayerType=" + _mmp + "&MMdoctitle=" + _mmd + _uc + _uf };
		UFO.writeSWF("xi-dia");
	},

	expressInstallCallback: function() {
		var _b = document.getElementsByTagName("body")[0];
		var _c = document.getElementById("xi-con");
		_b.removeChild(_c);
		UFO.createCSS("body", "height:auto; overflow:auto;");
		UFO.createCSS("html", "height:auto; overflow:auto;");
	},

	cleanupIELeaks: function() {
		var _o = document.getElementsByTagName("object");
		var _l = _o.length
		for (var i = 0; i < _l; i++) {
			_o[i].style.display = "none";
			for (var x in _o[i]) {
				if (typeof _o[i][x] == "function") {
					_o[i][x] = null;
				}
			}
		}
	}

};

if (typeof window.attachEvent != "undefined" && UFO.uaHas("ieWin")) {
	window.attachEvent("onunload", UFO.cleanupIELeaks);
}
