	var waiterErrorHandler = 0;
	var showToolTip = false;
	var listeners = new Array();
	var currentLoadedGame = -1;
	var svsPopupAlertID = 0;
	var svsPopupQueue = [];
	var svsCurrentPopup = null;

	var transaktionCallback;
	var mWindow;
	var mfocus = true;	
	var missedCommunicatorEvents = new Array();
	var missedPopupEvents = new Array();
	var missedCardEvents = new Array();
	
	var pageIsLocked = false;
	var lockType = "game";
	var allObjects = new Array();

	function addObject(obj) {
		allObjects.push(obj);
	}
	function getObject(id) {
		var tRtn = null;
		for(var i=0; i<allObjects.length; i++) {
			if(allObjects[i].id == id) {
				tRtn = allObjects[i];
			}
		}
		return tRtn;
	}
	function removeObject(obj) {
		if (obj != null && obj != undefined) {
			removeObjectById(obj.id);
		}
	}
	function removeObjectById(id) {
		if (id != null && id != undefined) {
			for(var i = 0; i < allObjects.length; i++) {
				if(allObjects[i].id == id) {
					allObjects.splice(i, 1);
				}
			}
		}
	}	
	//==============================================================================
	/* EVENTHANTERARE FÖR RAMVERKET
	*/
	//==============================================================================
	
	// objekt som håller modulreferenser i arrayer indexerat med eventnamn
	var listenersObj = new Object();

	// historik för skickade event sedan sidan laddades
	var eventHistory = new Object();
	
	// lägger till en modul i listan med lyssnare
	function addFrameworkEventListener(moduleName, eventName) 
	{
		if (!listenersObj[eventName]) 
		{
			// om eventet inte finns i lyssnarlistan, skapa propertyn och dess array
			listenersObj[eventName] = new Array();
		}
		
		// kollar att modulen inte redan lyssnar på detta event
		var isAlreadyListening = false;
		for(var i=0; i<listenersObj[eventName].length; i++){
			if(listenersObj[eventName][i].id == moduleName){
				isAlreadyListening = true;
				break;
			}
		}

		if(!isAlreadyListening){
			// spara referens till modulen, i lyssnarlistan
			var module = makePath(moduleName);
			listenersObj[eventName].push(module);
		}

		// kolla om eventet finns i historiken, isåfall dispatcha till bara den här modulen
		var evt = getLatestEventFromHistory(eventName);
		if(evt){
			module.handleEvent(evt);
		}
	}
	
	// skickar ut ett event till alla moduler som lyssnar
	function dispatchEvent(evt) 
	{		
		var listenersArr = listenersObj[evt.type];
		var module;
		var i;
		if(listenersArr)
		{
			for (i = 0; i < listenersArr.length; i++) 
			{
				// dispatcha eventet till alla moduler i arrayen
				module = listenersArr[i];

				if (module && module.handleEvent) {
					// om modulen finns och har en handleEvent-funktion, skicka eventet
					module.handleEvent(evt);
				}else {
					//annars plocka bort modulen ur listan
					listenersArr.splice(i, 1);
					i--;
				}
			}
		}

		// lägg till eventet i historiken
		if(!eventHistory[evt.type]){
			eventHistory[evt.type] = new Array();
		}
		eventHistory[evt.type].push(evt);

		// för bakåtkompatibilitet _________________________
			oldDispatchEvent(evt);
		// för bakåtkompatibilitet _________________________

	}
	
	// tar bort en modul från lyssnarlistan
	function removeModuleListener(moduleId, eventName) {
		var listenersArr = listenersObj[eventName];
		var i;
		var module = makePath(moduleId);
		if(listenersArr){
			for (i = 0; i < listenersArr.length; i++) 
			{
				if(listenersArr[i] == module){
					listenersArr.splice(i, 1);
				}
				
				if (listenersArr.length == 0) {
					delete listenersObj[eventName];
				}
			}
		}
	}

	// returnerar det senaste eventet från eventhistoriken med hjälp av eventnamn (eller undefined om det inte finns)
	function getLatestEventFromHistory(eventName){
		var evt;
		var historyArr = eventHistory[eventName];
		if(historyArr){
			evt = historyArr[historyArr.length-1];
		}
		return evt;
	}

	// returnerar alla historiska event (Array med event eller undefined)
	function getFullEventHistory(eventName){
		return eventHistory[eventName];
	}

	// tömmer eventhistoriken (körs av PL vid sidladdning)
	function clearEventHistory(){
		eventHistory = new Object();
	}
	//============================================================================== utv3
	// lägger till en modul i listan med lyssnare
	function addModuleListener(moduleId){
		var isListener = false;
		for(var i=0; i<listeners.length; i++){
			if(listeners[i] == moduleId){
				isListener = true;
				break;
			}
		}
		if(!isListener){
			listeners.push(moduleId);
		}
	}
	
	// tar bort en modul från lyssnarlistan
	function removeModuleListener(moduleId){
		for(var i=0; i<listeners.length; i++){
			if(listeners[i] == moduleId){
				listeners.splice(i, 1);
			}
		}
	}
	// skickar ut ett event till alla moduler som lyssnar
	function oldDispatchEvent(evt){
		if(evt.type == "getUser"){
			if(user != undefined){
				// getUser skickar "userObject" till dispatcharen, inga andra.
				makePath(evt.moduleId).handleEvent(user);
			}
		}else if(evt.type == "requestWSDL"){
			var path = makePath("communicator");
			if(path.handleEvent) {
				path.handleEvent(evt);
			}else{
				missedCommunicatorEvents.push(evt);
			}
		}else if(evt.type == "showTransaction"){
			var eventFrom = evt.from ? true : false;
			loadTrans(eventFrom);
		}else if(evt.type == "showMessage" || evt.type == "cancelMessage"){
			var path = makePath("popUp");
			if(path.handleEvent) {
				path.handleEvent(evt);
			}else{
				missedPopupEvents.push(evt);
			}
		}else if(evt.type == "showCard"){
			var path = makePath("visit");
			if(path.handleEvent) {
				path.handleEvent(evt);
			}else{
				missedCardEvents.push(evt.id);
			}
		}else{
			for(var i=0; i<listeners.length; i++){
			    //var listenerObj = makePath(listeners[i]) != null ? makePath(listeners[i]) : null;

			    var listenerObj;
			    if (!listeners[i].handleEvent) {
			        listenerObj = makePath(listeners[i]);
			    }
			    else {
			        listenerObj = listeners[i];
			    }

				if(listenerObj){
					try{ //some modules crach hard
						if(listenerObj.handleEvent){	
							listenerObj.handleEvent(evt);
						}
					}catch(ex){
						listeners.splice(i, 1);
						i--;
					}
				}else{
					listeners.splice(i, 1);
					i--;
				}
			}
			this.handleEvent(evt);
		}
	}
	
	function getMissedCommunicatorEvents() {
		return missedCommunicatorEvents.splice(0);
	}
	
	function getMissedPopupEvents() {
		return missedPopupEvents.splice(0);
	}
	
	function getMissedCardEvents() {
		var returnId = "0";
		if(missedCardEvents.length > 0){
			returnId = missedCardEvents[missedCardEvents.length-1];
			missedCardEvents = new Array();
		}
		return returnId;
	}
	
	function nullify(object)
	{
		for(var i in object) {
			if(object[i] == "null")
				object[i] = null;
			else if(typeof(object[i]) == "object")
				object[i] = nullify(object[i]);
		}
		return object;
	}
	
	function openWindow(url, callbackID) {
		mWindow = window.open(url, "JavaWindow");
		
		if(mWindow) {
			transaktionCallback = callbackID;
			setTimeout("transTimerTick()", 1000);
			
			return true;
		} else {
			return false;
		}
	}
	
	function postDynamicForm(url, formName, popupName, tags, callbackID) {
		
		var dynamicDiv = document.createElement("div");
		dynamicDiv.style.display='none';
		dynamicDiv.innerHTML = '<form method="POST" action="' + url + '" id="' + formName + '" target="' + popupName + '">' + tags + '</form>';
		document.body.appendChild(dynamicDiv);
		
		mWindow = window.open("about:blank", popupName);
		
		if(mWindow) {
			setTimeout("submitDynamicForm('" + formName + "')", 500);
			
			transaktionCallback = callbackID;
			setTimeout("transTimerTick()", 1000);
			
			mWindow.focus();
			
			return true;
		} else {
			return false;
		}
	}

	function submitDynamicForm(form) {
		document.getElementById(form).submit();
	}
	
	function transTimerTick() {
		if(mWindow.closed)
		{
			makePath(transaktionCallback).ibTransComplete();
		}
		else
		{
			setTimeout("transTimerTick()", 1000);
		}
	}
	
	//Skickar ut ett event til alla lyssnar när skärmen ändrar storlek
	function onResizing() {
		var sizeObj = getVisibleSize();
		dispatchEvent({type:"browserResized", width:parseInt(sizeObj.width), height:parseInt(sizeObj.height)});
		//resized();
		onAlignChanged();
	}
	//Retunerar ett object med parametrarna X och Y för offset i lod- och vågrätt led av en embedtagg
	function getOffset(divId) {
		var obj = makePath(divId);
		var curleft = curtop = 0;
		if (obj.offsetParent) {
			curleft = obj.offsetLeft
			curtop = obj.offsetTop
			obj = obj.offsetParent;
			while (obj.offsetParent) {
				curleft += obj.offsetLeft;
				curtop += obj.offsetTop;
				obj = obj.offsetParent;
			}
		}
		var obj = {x:curleft, y:curtop};
		return obj;
	}
	//Retunerar ett object med parametrarna heigth och width för pixelstorleken av en embedtagg 
	function getSize(divId) {
		var obj = makePath(divId);
		var width = height = 0;
		if (obj.offsetParent) {
			width = obj.offsetWidth
			height = obj.offsetHeight
		}
		var obj = {width:width, height:height};
		return obj;
	}
	// kör en funktion i en modul
	function functionCall(evt){
		var module = makePath(evt.reciever);	

		if(module == undefined || typeof(module.callMethod) != "function"){
			var dispatcher = evt.dispatcher;
			evt.dispatcher = evt.reciever;
			evt.reciever = dispatcher;
			evt.status = false;
			evt.error = 1; //MODULE_NOT_LOADED
			returnCall(evt);
		}else{
			module.callMethod(evt);
		}

	}
	//Retunerar rätt pekning till ett objekt baserat på din browser
	function makePath(moduleName) {
		var path = getObject(moduleName);
		if(path == null) {
			if (navigator.appName.indexOf("Microsoft") != -1) {
				path = window[moduleName];
			}else{
				path = document[moduleName];
			}
			
			if(path == undefined) {
				path = document.getElementById(moduleName);
			}
		}
		return path;
	}

	function lockPage(lockBool, moduleType) {
		pageIsLocked = lockBool;
		lockType = moduleType;
		return true;
	}

	//Visar popupmeddelandet
	function showDialog(evt) {
		var alerterId = ShowMessage(evt);
		return alerterId;
	}

	function ShowMessage(evt) {
		++svsPopupAlertID;		
		if(evt.caption == null || evt.caption == undefined || evt.caption == "")
			evt.caption = "Information";
		if (evt.buttons == undefined || evt.buttons == null || evt.buttons.length == 0)
			evt.buttons = ["Stäng"];
		if (evt.msgtype == undefined || evt.msgtype == null || evt.msgtype.length == 0)
			evt.msgtype = 'info';
		evt.alerterId = svsPopupAlertID;
		
		svsPopupQueue.push(evt);		
		if (svsPopupQueue.length == 1){
			_svsShowPopup(evt);
		}		
		return svsPopupAlertID;
	}
	
	function _svsShowPopup(evt)
	{
		svsCurrentPopup = evt;
		var knappar = new Object();
		for (var i = evt.buttons.length - 1; i >= 0; i--){
			knappar[evt.buttons[i]] = function(button_evt){
					_svsPopupButtonPressed(evt.mID, $.inArray(button_evt.target.innerHTML, evt.buttons), evt.alerterId, evt.respond);
			};
		}
		$(document).ready(function(){
			var $dialog = $('#popUpDiv').dialog({
				bgiframe: true,
				resizable: false,
				closeOnEscape: false,
				zIndex: 3500000,
				modal: true,
				close: function(event) { 
					if (event.button != undefined) {	// Klick på krysset skapar en button-property
						_svsPopupButtonPressed(svsPopupQueue[0].mID, -1, svsPopupQueue[0].alerterId, svsPopupQueue[0].respond);
					}
				}
			});			
			$('#popUpDiv').html(newline2break(evt.msg));
			$('#popUpDiv').dialog('option', 'title', evt.caption);
			$('#popUpDiv').dialog('option', 'buttons', knappar);

			// Sätt style på dialogtiteln beroende på vad för slags dialogruta detta är.
			$('.ui-dialog-titlebar').removeClass('ui-dialog-type-info');
			if (evt.msgtype == 'info')
				$('.ui-dialog-titlebar').addClass('ui-dialog-type-info');
			//bredd på dialogrutan
			if (evt.msgtype == 'info')
                $('#popUpDiv').dialog('option', 'width', 430);
            else
                $('#popUpDiv').dialog('option', 'width', 300);

			$('#popUpDiv').removeClass('ui-dialog-leftalign');
			//if (evt.msg.length > 50)  // Centrera text om den är kort, annars så skall texten vara vänsterställd.
			$('#popUpDiv').addClass('ui-dialog-leftalign');
				
			// Hanterar fokus och tabbning av knappar i dialogrutan	
			var dialogButtonArray = $('.ui-dialog-buttonpane').find('button');
			$('.ui-dialog-titlebar-close').attr('tabindex',1001);
			dialogButtonArray.each(function(i) {
				$(this).attr('tabindex', 1000 - i);
				$(this).blur(function(target) { 
					if (svsCurrentPopup && document.activeElement) {
						setTimeout(function(){	// Krävs för att nästa knapp skall hinna få fokus.
							var dialogLostFocus = true;
							var nuvarandefocus = document.activeElement;
							$('.ui-dialog-buttonpane').find('button').each(function(){
								if (this == nuvarandefocus || nuvarandefocus.className.indexOf('ui-dialog-titlebar-close') > -1) {
									dialogLostFocus = false;
								}
							});
							if (dialogLostFocus) {										
								$('.ui-dialog-buttonpane').find('button:last').focus();		
							}
						}, 5);
					}
				});
			});			
			$('.ui-dialog-titlebar-close').blur(function(target) { 
					if (svsCurrentPopup && document.activeElement) {
						setTimeout(function(){
							var dialogLostFocus = true;
							var nuvarandefocus = document.activeElement;
						
							$('.ui-dialog-buttonpane').find('button').each(function(){
								if (this == nuvarandefocus) {
									dialogLostFocus = false;
								}
							});
							if (dialogLostFocus) {						
								$('.ui-dialog-buttonpane').find('button:last').focus();
							}
						}, 5);
					}
				});
				
			document.getElementById("popUpDiv").style.minHeight = "10px"; 
			$('#popUpDiv').dialog('open');
			$('.ui-dialog-buttonpane').find('button:last').focus();	// Sätt focus på defaultknappen.
		});
	}
	
	function _svsPopupButtonPressed(moduleID, response, alerterId, shouldRespond)
	{
		$('#popUpDiv').dialog("close");	
		svsPopupQueue.shift();
		svsCurrentPopup = null;
		if (moduleID != null && moduleID != undefined && shouldRespond){
			returnDialog(moduleID, response, alerterId);
		}				
		if(svsPopupQueue.length > 0){
			_svsShowPopup(svsPopupQueue[0]);
		}
	}
	//avbryter popupmeddelandet
	function cancelDialog(id) {
		for (var i = 0; i < svsPopupQueue.length; i++) {
			if (svsPopupQueue[i].alerterId == id) {
				var t = svsPopupQueue.splice(i, 1);
				break;
			}
		}
		if (svsCurrentPopup.alerterId == id){
			$('#popUpDiv').dialog("close");	
			svsCurrentPopup = null;
			if(svsPopupQueue.length > 0){
				_svsShowPopup(svsPopupQueue[0]);
			}
		}
	}
	
	// svaret från en dialogruta
	function returnDialog(moduleID, response, alerterID){
		dispatchEvent({type:'handleDialog', value:response, id:alerterID});
		var mID = makePath(moduleID) != null ? makePath(moduleID) : eval(moduleID);
		mID.handleDialog(response, alerterID);
	}
	
	var hideWaiterCalled = false;

	function showWaiter() {
		hideWaiterCalled = false;
		var a = document.getElementById("wait_mask");
		a.style.display = 'block';
		setTimeout('showRealWaiter()',500);
		waiterErrorHandler = setTimeout('hideMaskWaiter()',10000)
	}

	function hideWaiter(delayed) {
		hideWaiterCalled = true;
		if (delayed==null||delayed==true)
			setTimeout('hideMaskWaiter()',1000);
		else
			hideMaskWaiter();
	}

	function showRealWaiter(){
		if (hideWaiterCalled==false) {
			var b = makePath("waiterdiv");
			b.style.top = '300px';
			b.style.display = 'block';
		}
	}

	function hideMaskWaiter(){
		clearTimeout(waiterErrorHandler);
		var b = makePath("waiterdiv");
		b.style.display = 'none';
		var a = makePath("wait_mask");
		a.style.display = "none";
	}

	function showGuide(id) {
		// öppnar fönstret med guidetext
		var url = "/common/infopopup/flikframes.asp?product=" + id + "&info=guide";
		var tools = "toolbar=no,status=no,scrollbars=no,location=no,menubar=no,resizable=yes,directories=no,width=615,height=418";
		var winObj = window.open(url, "guide", tools);
		winObj.focus();
	}

	function showHelp(id, under) {		
		var url = "/common/infopopup/hjalp_main.asp?main=" + id + "&under=" + under; 
		var tools = 'menubar=no,toolbar=no,location=no,directories=no,status=no,scrollbars=no,resizable=yes,copyhistory=no,width=400,height=530';
		var winObj = window.open(url, "help", tools);
		winObj.focus();
	}
	
	//Ändrar storlek på popupen. Om big == true blir den stor, annars 1,1
	function resizeAndMove(namn, div, big){
		var tag = makePath(namn);
		if (tag == null)return;
		var sizeObj = getVisibleSize();

		if(big==true) {
			tag.width = sizeObj.width;
			tag.height = sizeObj.height;
		}else{
			tag.width = 1;
			tag.height = 1;
		}
		
		var thePath = makePath(div);
		thePath.style.left = sizeObj.scrollLeft+"px";
		thePath.style.top = sizeObj.scrollTop+"px";
	}

	/*
	*  Funktioner nedan flyttar och resizar popupen när användaren gör något
	*/
	window.onscroll = function() {
		dispatchEvent({type:'onPageScroll', pageYOffset:document.documentElement.scrollTop});
	}
	
	window.onfocus = function(){

		if(!mfocus){
			dispatchEvent({type:"onWindowFocus"});
		}
		mfocus = true;
	}

	window.onblur = function() { mfocus = false; }
	document.onblur = window.onblur;
	document.focus = window.focus;
	
	//Retunerar storlek på skärmen som ett objekt med width, height, scrollLeft, scrollTop
	function getVisibleSize() {
		var returnObj = {width:0, height:0, scrollLeft:0, scrollTop:0};
		if( typeof( window.innerWidth ) == 'number' ) {
			//Non-IE (FIREFOX)
			//17 = the width of the scrollbar. Firefox includes it in the width.
			returnObj.width = window.innerWidth-17; //it is not always shown
			returnObj.height = window.innerHeight;
			returnObj.scrollLeft = window.pageXOffset;
			returnObj.scrollTop = window.pageYOffset;
		} else if(document.documentElement && document.documentElement.clientWidth) {
			//IE 6+
			returnObj.width = document.documentElement.clientWidth;
			returnObj.height = document.documentElement.clientHeight;
			returnObj.scrollLeft = document.documentElement.scrollLeft;
			returnObj.scrollTop = document.documentElement.scrollTop;
		} else {
			//OTHER
			returnObj.width = document.body.clientWidth;
			returnObj.height = document.body.clientHeight;
			returnObj.scrollLeft = document.body.scrollLeft;
			returnObj.scrollTop = document.body.scrollTop;
		}
		return returnObj;
	}
	//*
	function alert_props(obj, objName) {
		var result = "";
		var linesShown = 30;
		  
		for (var i in obj) {result += objName + '.' + i + ' = ' + obj[i] + '\n';};
		var view = result.split('\n');result = '';
		for (var j = 1; j < view.length; j++) { 
			result += view[j] + '\n';
			if(j % linesShown == 0){
				alert('Page ' + (j/linesShown) + ' of ' + Math.ceil(view.length/linesShown) + ' (' +  view.length + ')\n' + result);result='';
			}
		 }
		if(result.length > 0){
			alert('Page ' + Math.ceil(j/linesShown) + ' of ' +  Math.ceil(view.length/linesShown) + ' (' + view.length + ')\n' +  result);result='';
		 }
		  return true;
	 }
	//*/

	// kör en metod i en annan modul och returnerar // OBSOLETE?
	function getFromModule(evt)
	{
		var module = makePath(evt.toModuleId);
		return module[evt.method].apply(module, evt.args);
	}

	// skickar ett eventobjekt som svar på ett call //OBSOLETE?
	function returnCall(evt){
		makePath(evt.reciever).handleCall(evt);
	}
	
	//FUL FIX för att fixa problemet med att man inte kan klicka på OK knappen
	//PÅ en popup
	function hideScrolls(action) {
		var lengd = document.getElementsByTagName("div").length;
		for (i=0; i<lengd; i++){
			//Om man döljer alla
			if(action != "show")
			{
				var elem = document.getElementsByTagName("div")[i];
				var previousValue = getStyle(elem,overflowY);
				if(!previousValue)
					previousValue = getStyle(elem,overflow);
				
				if(previousValue)
					document.getElementsByTagName("div")[i].prevOverflow = previousValue;
				document.getElementsByTagName("div")[i].style.overflowY = "visible";
			}
			else
			{
				if(document.getElementsByTagName("div")[i].prevOverflow)
					document.getElementsByTagName("div")[i].style.overflowY = document.getElementsByTagName("div")[i].prevOverflow;
			}
		}
	}
function getStyle(el,styleProp){
	var x = document.getElementById(el);
	if (x.currentStyle)
		var y = x.currentStyle[styleProp];
	else if (window.getComputedStyle)
		var y = document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp);
	return y;
}

	// cookiehantering från base
	function  setCookies(a,b,c,d,e)
	{
		var cookiedomain = getCookieDomain();
		document.cookie = "SVSUID=" + a + ";Path=/;domain="+cookiedomain+";secure";
		document.cookie = "SVSCID=" + b + ";Path=/;domain="+cookiedomain+";secure";
		document.cookie = "SVSHANDLE=" + c + ";Path=/;domain="+cookiedomain+";secure";
		document.cookie = "SVSCAMPAIGN=" + d + ";Path=/;domain="+cookiedomain+";secure";
		document.cookie = "kinderSession=" + e + ";Path=/;domain="+cookiedomain+";secure";
	}

	function  killCookies()
	{
		var cookiedomain = getCookieDomain();
		var expireDate = "Thu, 01-Jan-1970 00:00:01 GMT";
		document.cookie = "SVSUID=;Path=/;expires="+expireDate+";domain="+cookiedomain+";secure";
		document.cookie = "SVSCID=;Path=/;expires="+expireDate+";domain="+cookiedomain+";secure";
		document.cookie = "SVSHANDLE=;Path=/;expires="+expireDate+";domain="+cookiedomain+";secure";
		document.cookie = "SVSCAMPAIGN=;Path=/;expires="+expireDate+";domain="+cookiedomain+";secure";
		document.cookie = "kinderSession=;Path=/;expires="+expireDate+";domain="+cookiedomain+";secure";
		document.cookie = "SVSCOMMUNITY_MODERATOR=;Path=/;expires="+expireDate+";domain="+cookiedomain+";secure"; // SvS Forum
	}
	
	function killSavedGameCardCookie()
	{
		var cookiedomain = getCookieDomain();
		var expireDate = "Thu, 01-Jan-1970 00:00:01 GMT";
		document.cookie = "SparatSpelkort=;Path=/;expires="+expireDate+";domain="+cookiedomain+";secure";
	}
	
	function  getCookies()
	{
		return document.cookie;
	}
	
	function getCookieDomain(){
		if (typeof(user)!='undefined') var url = getURLObject().publicUrl;
		if (typeof(url)=='undefined') var url = publicUrl;
		var cookiedomain = url.replace(new RegExp(/^https?\:\/\//i),"").replace(new RegExp(/^www\./i),"");
		return cookiedomain;
	}

	//Ändrar storleken på ett objekt
	function resizeEmbed(moduleName, w, h){
		var tag = makePath(moduleName);
		var xOffset = Math.floor(w - tag.width);
		var yOffset = Math.floor(h - tag.height);
		tag.width = w;
		tag.height = h;
		dispatchEvent({type:'embedResized', moduleId:moduleName, xOffset:xOffset, yOffset:yOffset});
		onAlignChanged();
	}
	
	// togglar visning av spelassistenten
	function showHideAssistant(){
		var div = makePath("assistantDiv");
		var showBool = div.style.visibility;

		if(showBool == "visible"){
			div.style.visibility = "hidden";
		}else{
			div.style.visibility = "visible";
		}
	}

	// togglar visning av tablån
	function showHideTableu(){
		var div = makePath("happeningsTableuDiv");
		var showBool = div.style.visibility;

		if(showBool == "visible"){
			div.style.visibility = "hidden";
		}else{
			//div.style.left = makePath("sessionDiv").style.left;
			div.style.visibility = "visible";
		}
	}

	//Funktion som gömmer eller visar selectboxar i Internet Explorer
	function hideSelects(action) { 
		//action = show visar selectboxar, allt annat gömmer dem
		action=action=='show'?'visible':'hidden';
		if (navigator.appName.indexOf("MSIE")){
			for (i=0;i<document.getElementsByTagName("select").length;i++){
				document.getElementsByTagName("select")[i].style.visibility = action;
			}
		}
	}

	// funktion som visar matchfakta i ett nytt lager eller fönster.
	function showMatchFacts(productId, matchId, matchVal, omg){
		/* Att fundera över...
		var sätts BASE_URL ? 
		varför finns bara den här på https?
		ska man kunna öppna fönstret utan inparametrar?
		*/
		var BASE_URL = getURLObject().secureUrl + "/common/infopopup/flikframes.asp?";
		var url = BASE_URL + "product=" + productId + "&info=matchfakta&match=" + matchId + "&matchval=" + matchVal + "&omg=" + omg;
		var tools = 'toolbar=no,status=no,scrollbars=yes,location=no,menubar=no,directories=no,resizable=yes,width=853,height=800';
		var winObj = window.open(url, 'info', tools);
		winObj.focus();
	}
	
	// funktion som hämtar fil med ospelade kombinationer
	function getUnplayedCombinations(productId, roundId){
		var BASE_URL = getURLObject().secureUrl + "/cas/getfile.aspx?";
		var url = BASE_URL + "file=playedcombinations&productid="+ productId +"&drawid=" + roundId;
		var tools = 'toolbar=no,status=no,scrollbars=yes,location=no,menubar=no,directories=no,resizable=yes,width=10,height=10';
		var winObj = window.open(url, 'info', tools);
		winObj.focus();
	}
	

	// funktion för att öppna nya fönster och ladda in sidor med hjälp av linkhandler.asp
	function  showPrintPage(data, mail)
	{
		// skapa formuläret.
		var submitForm = document.createElement("FORM");
		submitForm.method = "POST";
		
		var windowName = "printPage";
		submitForm.target = windowName;
		
		// url till linkhandler.asp dit frågan skall postas
		submitForm.action = getURLObject().secureUrl + "/common/printout/printbet.aspx";
		
		//skapa första input-taggen
		var newElement = document.createElement("input");
		newElement.type = "hidden";
		newElement.name= "index";
		newElement.value = "print";
		
		//lägg till i formuläret
		submitForm.appendChild(newElement);
		
		// skapa värdebehållaren (valfri sträng, array eller XML)
		var newElement = document.createElement("input");
		newElement.type = "hidden";
		newElement.name= "betxml";
		newElement.value = data;
		
		// och lägg till i formuläret
		submitForm.appendChild(newElement);

		// input - mail eller print
		var mailElement = document.createElement("input");
		mailElement.type = "hidden";
		mailElement.name= "mail";
		mailElement.value = mail;
		submitForm.appendChild(mailElement);
		
		var windowParams ="";
		if(mail == 1) {
			windowParams = "width=320,height=350,toolbar=no,location=no,directories=no,menubar=no,scrollbars=no,resizable=no,status=yes";
		}
		
		// öppna ett fönster med tom htmlsida i.
		var winObj = window.open('/common/blank.html', windowName, windowParams);
		
		// lägg till formuläret i sidan och submitta
		document.body.appendChild(submitForm);
		submitForm.submit();
		winObj.focus();
		
		// ta bort formuläret
		submitForm.removeNode(true);
		return false;
	}
	function loadWager(wagerId, gameId, syndicateId, drawId){
	    dispatchEvent({ type: "loadWager", wagerId: wagerId, gameId: gameId, syndicateId: syndicateId, drawId: drawId });
	}
	function loadBag(bagId){
		dispatchEvent({type:"loadBag", bagId:bagId});
	}
	function loadGame(id){
		if(isCrocodileReady()){
			dispatchEvent({type:"loadGame", id:id});
		}else{
			setTimeout("loadGame(" + id + ");",1000);
		}
	}

	//hjälpfunktion till loadGame
	function isCrocodileReady(){
		var isReady = false;
		var listenerObj = makePath("gameChooserId");
		if(listenerObj){
			if(listenerObj.handleEvent){
				isReady = true;
			}
		}
		return isReady;
	}
	function loadEvent(id, eventid, eventheader, gametypes, leagueID){
		var extraData = eventid;
		if(eventheader.length > 0 || gametypes.length > 0 || leagueID.length > 0) {
			extraData += "|" + eventheader + "|" + gametypes+ "|" + leagueID;
		}
		dispatchEvent({type:"loadGame", id:id, extraData:extraData});
	}

	function userFromSB(isLogon){
		if(isLogon==true){
			dispatchEvent({type:"userFromSB"});
		}else{
			dispatchEvent({type:"doLogout"});
		}
	}	
	
	function spelbutik(spel, wagerId, bagId, url, extra){
		if(spel == 999){spel = 'liveservice'}
		paramString = '';
		if(bagId != null && bagId > 0) {
			spel = '';
			paramString = '&bagid=' + bagId;
		} else if(wagerId != null && wagerId.length > 0) {
			paramString = '&wagertype=paid&wagerid=' + wagerId;
		}
		if(extra != null) {
			paramString = '&extra=' + extra + paramString;
		}
		if(url == null){
			url = getURLObject().secureUrl + '/spelbutik/spelbutiken.asp';
		}
		url += '?spel=' + spel + paramString;
		var width=743;
		var height=533;
		
		if (743 > screen.width){
			width = screen.width;
			height = 533 * width/743;
		}
		if (height > screen.height){
			height = screen.height;
			width = 743 * height/533;
		}
		
		var top=(screen.height-height)/2;
		var left=(screen.width-width)/2;
		var name=(spel=='liveservice'?'liveservice':'spelbutik');
		window.open(url, name, 'height=' + height + ',width=' + width + ',left=' + left + ',top=' + top + ',resizable=yes,status=no,menubar=no,scrollbars=no');
		if (!(location.protocol=='https:'?true:false)){
			location.href = location.href.replace('http://','https://');
		}
		return false;
	}
	
	var oldalert = window.alert;
	
	var alert = function (mess){
		showDialog({ msg:mess, mID: null, respond:false,buttons:['OK']});
	}
	
	/*===============================================================/
	skapar variabeln user som är det senaste userobjektet
	* ==============================================================*/
	//variabeln user innehåller userobjektet och sätts av cspl
	function getUserObject(){
		return user;
	}
	// lyssnar på uppdateringar av userobjektet
	function handleEvent(evt){
		if(evt.type == "userObject" || evt.type == "userLoggedOn" || evt.type == "userLoggedOff"){
			evt.type = "userObject";
			user = evt;
			if (evt.balance!=null) {
				if (document.getElementById('placeHolder')!=null)
					document.getElementById('placeHolder').innerHTML=svenskFormatering(evt.balance)+" kr";
			}

        }else if (evt.type == "plPageLoadedCompleted") {
			if (evt.siteId == 11 || evt.siteId == 14) //Om Svenska Spel och Förening
			{
				showGameChooser(false);
			}
			else {
				showGameChooser(true);
			}
		}
	}
	/*=============================================================*/
	function getURLObject(){
		return URLObject;
	}

	function getDefaultPageId(){
		return defaultPageId;
	}


	// funktion för att öppna nya fönster och ladda in sidor med hjälp av linkhandler.asp
	// skall enbart användas av ModuleWrapper
	function  legacyOpenWin( URL, namn, UID, CID, Handle, data)
	{
		// f är en referens till formuläret.
		var f = window.document.forms[0];
		// url till linkhandler.asp dit frågan skall postas
		f.action = URL;
		// namnet på fönstret som öppnas och index till aspfilen som ska hantera frågan
		f.target = namn;
		f.index.value = namn;
		// skicka med inloggningsuppgifter
		f.uid.value = UID;
		f.cid.value = CID;
		f.handle.value = Handle;
		// värdebehållare (valfri sträng, array eller XML)
		f.paramString.value = data;
		// defaultinställningar för fönstret som ska öppnas
		var tools = 'menubar=yes,toolbar=yes,location=yes,directories=yes,status=yes,scrollbars=yes,resizable=yes,copyhistory=yes';
		//--------------------------------------------------------------------------------------------------------
		// här kan man sätta fönsteregenskaper per index
		if(namn == 'help')
		{
			// hjälpfönstret
			tools = 'menubar=no,toolbar=no,location=no,directories=no,status=no,scrollbars=no,resizable=yes,copyhistory=no,width=400,height=530';
		}
		else if(namn == 'kvp')
		{
			// kenovinstplanfönstret
			tools = 'width=230,height=500,toolbar=no,location=no,directories=no,menubar=no,scrollbars=no,resizable=no,status=no';
		}
		else if(namn == 'kfvp')
		{
			// kenofestivalsvinstplanfönstret
			tools = 'width=510,height=720,toolbar=no,location=no,directories=no,menubar=no,scrollbars=no,resizable=no,status=no';
		}
		else if(namn == 'guide')
		{
			// Guide: Så spelar du på Internet
			tools = 'toolbar=no,status=no,scrollbars=no,location=no,menubar=no,directories=no,width=615,height=418';
		}
		else if(namn == 'info')
		{
			// Diverse
			tools = 'toolbar=no,status=no,scrollbars=yes,location=no,menubar=no,directories=no,resizable=yes,width=590,height=530';
		}
		else if (namn == 'registrering')
		{
			// registreringsformuläret. (sätter sin egen höjd och bredd)
			tools = 'toolbar=no,status=no,scrollbars=no,location=no,menubar=no,directories=no,resizable=yes,width=300,height=300';
		}
		//--------------------------------------------------------------------------------------------------------

		var winObj = window.open('blank.html', namn, tools);
		f.submit();
		winObj.focus();
		return false;
	}

function showMo(msg){
	var toolTipDiv = makePath('toolTipDiv');
	toolTipDiv.innerHTML = '<div style="padding:1px;"class="sbw">' + msg + '</div>';
	showToolTip = true;
	setTimeout("shoMoDelayed(" + arguments[1] + ")", 400);
}

function shoMoDelayed()
{
	var localMouse = {x:0, y:0};
	localMouse.x = Mouse.x;
	localMouse.y = Mouse.y;
	var pageinfo = getVisibleSize();
	var tooltipOffsetX = 10;
	var tooltipOffsetY = 10;
	
	if (showToolTip == false)
	{
		return;
	}
	if (arguments[0] == true)
	{
		localMouse.x -= 200;
	}
	var toolTipDiv = makePath('toolTipDiv');

	//Gör tooltip-diven synlig, men sätt left till -1000px
	//för att kunna mäta storleken på tooltip-diven.
	if (document.getElementById) {
		toolTipDiv.style.visibility = "hidden";
		toolTipDiv.style.left = "-1000px";
		toolTipDiv.style.display = "inline";
	} else {
		toolTipDiv.visibility = "hidden";
		toolTipDiv.left = "-1000px";
		toolTipDiv.display = "inline";
	}
	
	// Sätt avstånd vertikalt och horizontalt till muspekaren
	// Även för att slippa blappande när vi triggar en mouseout med ett lager som kommer mellan
	localMouse.y+=tooltipOffsetY;
	localMouse.x+=tooltipOffsetX;

	if (localMouse.y > (pageinfo.scrollTop + pageinfo.height - toolTipDiv.offsetHeight))
	{
		localMouse.y = localMouse.y - (2*tooltipOffsetY) - toolTipDiv.offsetHeight;
	}

	if (localMouse.x > (pageinfo.scrollLeft + pageinfo.width - toolTipDiv.offsetWidth))
	{
		localMouse.x = localMouse.x - (2*tooltipOffsetX) - toolTipDiv.offsetWidth;
	}

	if (document.getElementById)
	{
		toolTipDiv.style.left = localMouse.x + pageinfo.scrollLeft +"px";
		toolTipDiv.style.top = localMouse.y + pageinfo.scrollTop +"px";
		toolTipDiv.style.visibility = "visible";
	}
	else
	{
		toolTipDiv.left = (localMouse.x + pageinfo.scrollLeft + "px");
		toolTipDiv.top = (localMouse.y + pageinfo.scrollTop + "px");
		toolTipDiv.visibility = "visible";
	}
}

function showMoRightLeft(msg, left){
	showMo(msg,left);
}

function hideMo(){
	showToolTip = false;
	var toolTipdiv = makePath('toolTipDiv');
	if (document.getElementById){
		toolTipdiv.style.visibility="hidden"
		toolTipdiv.style.left="-1000px"
	} else {
		toolTipdiv.visibility="hidden"
		toolTipdiv.left="-1000px"
	}
}

function showGameChooser(show) {
    var gameChooser = document.getElementById("gameChooser");

    if (gameChooser) {
        if (show) {
            gameChooser.style.display = "block";
        }
        else {
            gameChooser.style.display = "none";
        }
    }
}