	// metodi statici
	var itSessionManagerSingleInstance =  null;
	function ITSessionManager_getInstance(loginpageurl,portletid) {
		if (itSessionManagerSingleInstance == null) 
			itSessionManagerSingleInstance = new ITSessionManager(loginpageurl,portletid);
		return itSessionManagerSingleInstance;
	}
	// classe
	function ITSessionManager(infotnloginpageurl,currentportletid) {
		// logica del costruttore
		this.infotnLoginPageUrl = infotnloginpageurl;
		this.infotnDynamicLoginInterval = null;
		this.currentPortletId = currentportletid;

		// inizializza, controlla, registra per eventi di focus e blur
		this.init = function(issessionactive) {
			if (window.ITCloseModal==null) {
				alert("E' necessario incudere itmodaldiv.js");
			}
			// inizializza session pref per vedere se perdo la sessione
			if (issessionactive) {
				sendAjaxRequest("/portal/server.pt?space=SessionPrefs&control=SessionPrefs&action=setprefs" + '&_issessionactive=true')
				if (window.parent.document.getElementById('infotndynamiclogincontainer')==null) {
					this.setLoginTimer(1201000);
				} else {
					window.parent.itSessionManagerSingleInstance.verifySession();
				}
			}
		}
		this.setLoginTimer = function (milliseconds) {
			if (this.infotnDynamicLoginInterval!=null) {
				clearInterval(this.infotnDynamicLoginInterval);
				this.infotnDynamicLoginInterval=null;
			}
			if (milliseconds>0) {
				this.verifySession(this.infotnLoginPageUrl,this.currentPortletId);
				this.infotnDynamicLoginInterval=window.setInterval("itSessionManagerSingleInstance.verifySession()",milliseconds);	
			}
		}
		this.verifySession = function () {
			verifySession(this.infotnLoginPageUrl,this.currentPortletId);
		}
		// metodi privati
		function verifySession(infotnLoginPageUrl,currentportletid) {
			// se la sessione è attiva tolgo login
			if (isSessionActive(currentportletid,infotnLoginPageUrl)) {
				removeDynamicLogin();		
			} else {
				// passo per la ITSSOLogin che verifica se si è passati da NAM
				createLogin("/portal/sso/ITSSOLogin.aspx?sessionITLoginType=sessionexpired&sessionITCurrentPage="+escape(infotnLoginPageUrl));
			}
		}
		function sendAjaxRequest(req) {
		      var AJAX=null;
			if (window.XMLHttpRequest) {              
			   AJAX=new XMLHttpRequest();              
			} else {                                  
			   AJAX=new ActiveXObject("Microsoft.XMLHTTP");
			}
			if (AJAX) {
			   AJAX.open("GET", req, false);
			   var ret;
			   try {
				   AJAX.send(null);	
				   ret = AJAX.responseText;
				   if (ret=="") ret = null;
			   } catch (ex) {
				   return null;
			   }
			   return ret;
			} else {
			   return null;
			}                                             			
		}
		function isSessionActive (currentportletid,infotnLoginPageUrl) {
		      var ret = sendAjaxRequest("/portal/server.pt?space=SessionPrefs&control=SessionPrefs&action=getprefs" + '&_issessionactive=1');
		      return (ret != null && ret=='<?xml version="1.0"?><preferences><field><name><![CDATA[issessionactive]]></name><value><![CDATA[true]]></value></field></preferences>');
		}
		function removeDynamicLogin () {
			// elimino l'iframe se è rimasto li
			var oldframe=document.getElementById('infotndynamiclogincontainer');
			if (oldframe!=null) {
				ITCloseModal('infotndynamiclogincontainer',false);
				document.body.removeChild(oldframe);
			}
		}
		function createLogin (infotnLoginPageUrl) {
			if (document.getElementById('infotndynamiclogincontainer')==null) {
				// altrimenti proseguo
				var tmpcontainer = document.createElement("DIV");
				tmpcontainer.id="infotndynamiclogincontainer";		
				var tmpframe = document.createElement("IFRAME");
				tmpframe.src=infotnLoginPageUrl;		
				tmpframe.id="infotndynamiclogincontaineriframe";
				tmpframe.height="100%";
				tmpframe.width="100%";
				tmpframe.style.border="none";
				tmpframe.frameborder="0";
				tmpframe.scrolling="no";
				tmpcontainer.appendChild(tmpframe);
				document.body.appendChild(tmpcontainer);
				ITOpenModal('infotndynamiclogincontainer',false);
			}
		}
	}
