// -------------------------------------
// Nome: 	fwform.js
// Descrizione:	Codice JSCript di supporto a  pagine applicative (cFWForm)
// Versione JS:	1.3 (Supported by IE 5.0)
// Copyright:	Futuria Informatica Srl
// Ultima Mod:	21.12.2009
// -------------------------------------


// Application Page Variables
// -------------------------------------

// Flag per individuare pagine generate da CWD
//var m_bIsCWDForm = true;

// Nome/Frame della form (inizializzato da funzione OnLoadForm())
//var m_sFormName = '';
//var m_sFrameName = '';

// Flag submit della pagina in corso
var m_bPageSubmitPending = false;
//var m_bPageReloadPending = false;

// Buffer per richieste di submit in attesa
/*
var g_aWaitingMsgFormName = new Array();
var g_aWaitingMsgValue = new Array();
var g_aWaitingMsgName = new Array();
var g_aWaitingMsgTarget = new Array();
*/
var g_aForms = new Array();


// Funzione di caricamento dell'applicazione
// il nome del servizio coincide con il path relativo (uppercase)
/*
function LoadApplication(p_sServiceName)
{
	alert("LoadApplication "+p_sServiceName);
	if (p_sServiceName=='' || p_sServiceName==null) return false;
	
	//var sFrameName='MAIN';
	var sRnd = Math.round(Math.random()*1e11)+'';
	sRnd = sRnd.substr(0, 10);
	var sExtraParams = top.location.search + "&rnd="+sRnd;
	
	//g_sCWDService = p_sServiceName; 
	var sServiceName = p_sServiceName;
	var nChar = sServiceName.lastIndexOf('_');
	if (nChar>=0) sServiceName = sServiceName.substr(0, nChar);
	
	var sHost = location.protocol + '//' + location.hostname + (location.port?':'+location.port:'');
	var sRootUrl = sHost+'/'+sServiceName;
	var sServiceUrl = sHost+'/scripts/cwisapi.dll?service='+p_sServiceName;
	if (sExtraParams != '') sServiceUrl += '&' + sExtraParams.substr(1);

	DebugAlert("Frameset", "Loading service " + p_sServiceName);

//	var oFrame = GetFrameByName(sFrameName);
//	if (oFrame == null)
//	{
//		DebugAlert("Frameset:LoadApplication", "Frame [" + sFrameName + "] not FOUND.");
//		return false;
//	}

	//alert('loading application ' + sServiceUrl);
	window.document.location = sServiceUrl;
}
*/

// Crea il codice HTML per un link "Add To Bookmark"
function CreateLink_AddToBookmark(p_sSiteUrl, p_sSiteName)
{
	var sHtml='';
	var txt = "Bookmark This page";
	var ver = navigator.appName;
	var num = parseInt(navigator.appVersion);
	if ((ver == "Microsoft Internet Explorer")&&(num >= 4))
	{
	   sHtml += ('<A HREF="javascript:window.external.AddFavorite(\''+p_sSiteUrl+'\',\''+p_sSiteName+'\');" ');
	   sHtml += ('>'+ txt + '</a>');
	}
	else
	{
	   txt += "  (Ctrl+D)";
	   sHtml += (txt);
	}
	return sHtml;
} 


// Funzioni pubbliche (invocabili dalla Form)
// ----------------------------------------------

// Funzione che permette di aprire una Message Box
// p_sTitle:	Testo titolo
// p_sMessage:	Testo Messaggio
// p_sButtons:	opzionale, descrittore pulsanti da inserire in coda con il formato
//				PB1_Name|PB1_Text|PB1_OnClickEvt&PB2_Name|PB2_Text|PB2_OnClickEvt&.....
//				default: PB1|Close|window.close()
// per la gestione degli stili utilizza il file styles.css
function WebMsgBox(p_sTitle, p_sMessage, p_sButtons)
{
	// Costruisce contenuto html del Dialog
	if ((p_sTitle == null) || (p_sTitle=='')) p_sTitle = "Message Box";
	if ((p_sButtons == null) || (p_sButtons=='')) p_sButtons = 'PB1|Close|mdClose()';

	var sHtmlButtons = '<div style="padding-top:4px; padding-bottom:4px; text-align:center;"><nobr>'; //'<p><form method="POST" name="MD" action="aa'+p_sAction+'">';
	sPbList = p_sButtons.split('&');
	for (var i=0; i<sPbList.length; i++)
	{
		sPbItems = sPbList[i].split('|');
		// sPbItems[0] : Name
		// sPbItems[1] : Value
		// sPbItems[2] : OnClick Event handler
		if (sPbItems[2] == null) sPbItems[2] = 'onClick="mdClose()"';
		else sPbItems[2] = 'onClick="'+sPbItems[2]+'"';
		sHtmlButtons = sHtmlButtons + ' <button class="pb_std" type="button" '+ sPbItems[2] +' name="'+sPbItems[0]+'">'+sPbItems[1]+'</button>';
	}
	sHtmlButtons = sHtmlButtons + '</nobr></div>';
	
	var sMsg = p_sMessage + '<br>' + sHtmlButtons;
	
	mdShow(p_sTitle, sMsg);
	return true;
}


// Apre una wait box durante l'esecuzione di una operazione lunga
function WebWaitBox(p_sTitle, p_sMessage)
{
	var sImg = '<img style="border:0; margin:12px;" src="'+parent.g_sRootUrl+'/img/library/progress_bar1.gif'+'">';
	var sMsg = '<div style="text-align:center;">' + p_sMessage + '<br>' + sImg + '</div>';

	mdShow(p_sTitle, sMsg);
	return true;
}


// Permette l'apertura di una risorsa su internet
function OpenUrl(p_sURL, p_sParams)
{
	//alert(sURL);
	if (p_sURL.substr(0,7) == 'mailto:')
	{
		if (p_sURL.substr(7)!='') window.location = p_sURL;
		return;
	}

	if (p_sURL.substr(0,7)=='http://')
	{
		if (p_sURL.substr(7)!='') window.open(p_sURL, "", "");
		return;
	}

	if (p_sURL.substr(0,8)=='https://')
	{
		if (p_sURL.substr(8)!='') window.open(p_sURL, "", "");
		return;
	}

	if (p_sURL != '')
	{
		p_sURL = top.location.protocol + '//' + top.location.hostname + (top.location.port?':'+top.location.port:'') + p_sURL;
		//alert(p_sURL);
		window.open(p_sURL, "", "");
	}
}


// Apre una finestra per un Url e ne restituisce l'handle
function OpenWindow(p_sUrl, p_nWidth, p_nHeight, p_bCenter, p_sParams)
{
	p_nWidth = (p_nWidth) ? p_nWidth : 400;
	p_nHeight = (p_nHeight) ? p_nHeight : 300;
	nPosLeft = (screen.width) ? (screen.width-p_nWidth)/2 : 0;
	nPosTop = (screen.height) ? (screen.height-p_nHeight)/2 : 0;
	sSettings ='height='+p_nHeight+',width='+p_nWidth+',top='+nPosTop+',left='+nPosLeft+',screenX=' + nPosLeft + ',screenY=' + nPosTop
	sSettings += ',' + p_sParams;

	if ((p_sUrl.substr(0,5)!='http:') && (p_sUrl.substr(0,6)!='https:'))
	{
		// se non trova http:// lo considera come indirizzo relativo e quindi
		// gli appende l'host base col protocollo dell'applicazione
		p_sUrl = parent.g_sHost + p_sUrl;
	}
	//alert(p_sUrl);
	return window.open(p_sUrl, '', sSettings );
}

// Sperimentale: Apre una finestra in un dialog
function OpenDialog(p_sPbName, p_sDlgName)
{
	//alert(p_sDlgName);

	nWidth = 400;
	nHeight = 300;
	sSettings ='height='+nHeight+',width='+nWidth+',top='+nPosTop+',left='+nPosLeft+',screenX=' + nPosLeft + ',screenY=' + nPosTop
	//sSettings += ',' + p_sParams;
	nPosLeft = (screen.width) ? (screen.width-nWidth)/2 : 0;
	nPosTop = (screen.height) ? (screen.height-nHeight)/2 : 0;

	sUrl = g_sDynReqUrl;
	sUrl = '/'+sUrl.substr(1, sUrl.length-13);
	alert(sUrl);
	sUrl += '&' + p_sPbName + '=submit';
	sHtml = '<html><head>';
	sHtml += '<title>Radici e-Plastics System</title>';
	sHtml += '<script language="JavaScript" src="'+parent.g_sRootUrl+'/jscripts/frameset.js"></script>';
	sHtml += '<script language="JavaScript" src="'+parent.g_sRootUrl+'/jscripts/trace.js"></script>';
	sHtml += '</head>';
	sHtml += '<frameset name="FSET_1" cols="*" framespacing="0" border="0" frameborder="0">';
	sHtml += '  <frame name="MAIN" scrolling="no" src="'+sUrl+'" marginwidth="3" marginheight="0">';
	sHtml += '</frameset></html>';
	alert (sHtml);
	hDlg = window.open('', 'Dialog', sSettings );
	
	hDlg.document.open("text/html");
	hDlg.document.write(sHtml);
	hDlg.document.close();	
}


// Funzione di caricamento di una pagina in un Frame
// sFormParams = ParName=ParValue|ParName=ParValue|... (old...)
// sFormParams = ParName=ParValue&ParName=ParValue&...
function LoadForm(sFormName, sTargetFrame, sFormParams)
{
   //alert("Loading Form [" + sFormName + "] to Frame [" + sTargetFrame + "]");
   //if (!parent.IsFrame(sTargetFrame))
   //   return false;
   sMsg = "?form="+sFormName+"&FRAME="+sTargetFrame;
   if (sFormParams) sMsg += "&"+sFormParams;
   NotifyFormMsg(m_sFormName, sMsg/*, sTargetFrame*/);
   
}


// Esegue un submit per l'oggetto indicato
// Può essere invocata come:
// - DoAction(ObjSender, FieldName, FieldValue)
// - DoAction(ObjSender, FieldName)
// - DoAction(FieldName)
// - DoAction( )
// Il Name deve essere passato esplicitamente perchè in Netscape non è accessibile come hField.name
function DoAction(p_oSender, p_sFieldName, p_sFieldValue)
{
	if (p_sFieldValue==null) p_sFieldValue = "submit";
	if ((p_sFieldName==null) && (p_oSender!=null)) {p_sFieldName=p_oSender; p_oSender=null;} // funzione invocata solo con FieldName
	else if (p_oSender==null) {p_sFieldName=''} // funzione invocata senza parametri (esegue un semplice submit)

	var hSenderForm = FindMyForm(p_oSender);
	if (!hSenderForm) {Alert('DoAction() - Sender form not found'); return;};

	SubmitRequest(hSenderForm, p_sFieldValue, p_sFieldName, true);
}


// Invia un messaggio alla pagina/[Frame] indicato
/*
function SendFormMsg(p_sFormTarget, p_sMsg, p_sMsgParamStr)
{
	// Se non è specificata la Form Target assume quella corrente
	var hFrame;
	if (p_sFormTarget == '') hFrame = window;
	else hFrame = parent.GetFrameByForm(p_sFormTarget);
	
	if (hFrame != null)
	{
		sMsgTarget = '';
		if (p_sMsg == 'LOGOUT') sMsgTarget = "_parent";
		hFrame.NotifyFormMsg(m_sFormName, p_sMsg, p_sMsgParamStr, sMsgTarget);
	}
}
*/
function SendFormMsg(p_oSender, /*p_sFormTarget, */p_sMsg/*, p_sMsgParamStr*/)
{
/*
	// Se non è specificata la Form Target assume quella corrente
	var hFrame;
	if (p_sFormTarget == '') hFrame = window;
	else hFrame = parent.GetFrameByForm(p_sFormTarget);
	
	if (hFrame != null)
	{
		sMsgTarget = '';
		if (p_sMsg == 'LOGOUT') sMsgTarget = "_parent";
		hFrame.NotifyFormMsg(m_sFormName, p_sMsg, p_sMsgParamStr, sMsgTarget);
	}
*/	
	// cerca sender form
	if (!p_oSender) {Alert('SendFormMsg() - Sender not specified'); return;}
	var hSenderForm = FindMyForm(p_oSender);
	if (!hSenderForm) {Alert('SendFormMsg() - Sender form not found'); return;};
	//alert(hSenderForm.id);
	
	//sMsgTarget = '';
	NotifyFormMsg(hSenderForm, p_sMsg/*, p_sMsgParamStr, sMsgTarget*/);
}


// identifica la Form a cui appartiene l'item passato
function FindMyForm(p_oItem)
{
	var oParent = p_oItem.parentNode;
	while (oParent)
	{
		//alert(oParent.tagName);
		if (oParent.tagName == 'FORM') return oParent;
		oParent = oParent.parentNode;
	}
	return null;
}


// Abilita il reload automatico della pagina dopo il numero specificato di secondi
var m_nAutoReloadID;
function SetAutoReload(nDelay)
{
	if (nDelay > 0)
		m_nAutoReloadID = setTimeout('_HandleReloadPage()', nDelay*1000);
	else
		clearTimeout(m_nAutoReloadID);
}


function PrintPage()
{
	// Check versione browser
	bV = parseInt(navigator.appVersion)
	if (bV < 4) return;

	document.all.DivPrintContent.innerHTML = document.all.DivContent.innerHTML;
	ShowLayer('DivPrintCtrl', false);
	ShowLayer('DivContent', false);
	ShowLayer('DivPrintContent', true);

	window.print();

	ShowLayer('DivPrintContent', false);
	ShowLayer('DivPrintCtrl', true);
	ShowLayer('DivContent', true);
	
	// Dopo aver eseguito la stampa svuota la DIV DivPrintContent, altrimenti, 
	// se sulla pagina ci sono input items editabili questi vengono inseriti nella
	// POST HTTP duplicati e il valore originale 123 diventa 123|123  
	document.all.DivPrintContent.innerHTML = '';

	OnResizeWindow( );
}


// Funzioni private (o utilizzate dal sistema)
// ----------------------------------------------

// Output messaggi di debug/trace (Utilizza funzione in file trace.js)
//function Trace (sMsg) { parent.Trace(sMsg); }
//function DebugAlert (sTitle, sText) { parent.DebugAlert(sTitle, sText); }


// inizializzazioni da eseguire al caricamento della pagina
function InitPage()
{
	// Inizializza supporto per validazione dati (fwform_validation.js)
	FormValidation_OnPageLoad();
	// Esegue la registrazione della funzione di gestione delle Layout Rule
	DynLayout_OnPageLoad();
}

// Handler evento OnLoad della pagina
// Invocato da Form.OnLoad event
function OnLoadForm(p_sFormName)
{
	//alert('OnLoadForm:'+p_sFormName);
	var sSelector = '#'+p_sFormName+' #DivContent';
	var hDivContent = $(sSelector)[0];
	//alert(hDivContent.id);

/*	
	if (typeof(g_PSV_bQueryMode) != 'undefined')
	{
		var hDivContent = GetItemFromId('DivContent');
		if (g_PSV_bQueryMode)
			hDivContent.className = "content_query";
	}
*/	
	//var oForm = document.forms[0];
	var hForm = GetItemFromId(p_sFormName);
	
	var oForm = {};
	oForm.name = p_sFormName;
	oForm.form = hForm;
	oForm.frame = '';
	g_aForms.push(oForm);
	
	//m_sFormName = oForm.name;
	//var oFrame = parent.GetFrameByForm(m_sFormName);
	//m_sFrameName = oFrame ? oFrame.name : '';
	//alert("OnLoad: Form Name: " + m_sFormName + " - Frame Name: " + m_sFrameName);
	
	// da verificare
	//parent.NotifyFormLoad(p_sFormName, hForm);

	// Inizializza supporto per validazione dati (fwform_validation.js)
	//FormValidation_OnPageLoad();

	// Esegue la registrazione della funzione di gestione delle Layout Rule
	//DynLayout_OnPageLoad();

	//OnResizeWindow();


	// set content scroll-pos (in async mode)
	//var hDivContent = GetItemFromId('DivContent');
	if (hDivContent) setTimeout("$('"+sSelector+"')[0].scrollTop="+hForm.SCROLLPOS.value+";", 50);

	return true;
}

function OnPageLoad()
{
	// Set/refresh cookie di sessione se abilitato
	SetCookie('serviceUrl', g_PSV_sRootUrl);
	if (g_PSV_nCookieSessionLife)
	{
		//dExpire = new Date();
		//dExpire.setTime(dExpire.getTime() + (g_PSV_nCookieSessionLife*60*1000));
		SetCookie('sessionkey', g_PSV_sSessionKey, g_PSV_nCookieSessionLife);
	}
	
	g_aForms = new Array();	
}

// Funzione di settaggio di un cookie per la pagina corrente
// Sintassi: SetCookie(name, value, ExpireTimeMin, path, domain, secure)
function SetCookie (name, value)
{ 
	var today = new Date();
	var expire = new Date();	
	var argv = SetCookie.arguments; 
	var argc = SetCookie.arguments.length; 
	if(argc > 2) expire.setTime(today.getTime() + argv[2]*60*1000);
	else expire = null;
	var path = (argc > 3) ? argv[3] : '/'; 
	var domain = (argc > 4) ? argv[4] : null; 
	var secure = (argc > 5) ? argv[5] : false; 

	document.cookie = name + "=" + escape(value) + 
		((expire == null) ? "" : ("; expires=" + expire.toGMTString())) + 
		((path == null) ? "" : ("; path=" + path)) + 
		((domain == null) ? "" : ("; domain=" + domain)) + 
		((secure == true) ? "; secure" : "");
}


// Funzione di verifica invocata prima del submit dal form processing standard 
// restituisce false per inibire questo tipo di submit
// Invocata da Form.OnSubmit event
function CheckOnFormSubmit( )
{
	return false;
}


// funzione principale di submit
// Ritorna 1 se il submit è stato eseguito
//         2 se il submit è stato bufferizzato
//         0 se è stato ignorato
function SubmitRequest(p_oSenderForm, sMsgValue, sMsgName, /*sMsgTarget,*/ bBufferIfBusy)
{
	if (!p_oSenderForm) {Alert('SubmitRequest() - Sender form not specified'); return;};
	//alert('submitting form: ' + p_oSenderForm.id);
	
	// Ignora submit se un'altro è in corso
	if (m_bPageSubmitPending) return;
	
	if ((sMsgValue!='') && (sMsgValue!=null))
	{
		/*
		// Determina eventuale SubForm Name
		var sSubmitFormName = '';	// Form di default...
		if ((typeof(p_oSender)!='undefined') && (p_oSender!=null))
		{
			// Ricerca in DOM-TREE la SubForm di appartenenza
			var oObj = p_oSender;
			while(oObj)
			{
				//alert(oObj.tagName);
				if ((oObj.tagName=='DIV') && (oObj.className=='SubForm')) {sSubmitFormName = oObj.name; break;}
				oObj = oObj.parentElement;
			}
		}
		*/

		// completa parametri
		if (sMsgName=='' || sMsgName==null) sMsgName = 'FRMMSG';
		//if (sMsgTarget=='' || sMsgTarget==null) sMsgTarget = '_self';
		
		//alert('SubmitRequest on form ['+sSubmitFormName+']: [' + sMsgValue + '-' + sMsgName + '-' + sMsgTarget +']');
		
		if (true/*!parent.IsSubmitPending()*/)
		{
			// Aggiorna stato submitting
			m_bPageSubmitPending = true;
			// m_bPageReloadPending se è in corso il reload della pagina stessa
			//m_bPageReloadPending = (sMsgTarget == '_self') || (sMsgTarget == m_sFrameName)

			//g_sWaitingMsgValue = '';
			
			//nCurrentActionId = document.forms[0].PAGESTAT_ACTIONID.value;
			//alert('saving current Action id ' + nCurrentActionId)
			//alert('sending time ' + parent.g_nFormSubmitUserTime + ' for action ' + parent.g_nFormActionId);
			//document.forms[0].PAGESTAT_ACTIONID.value = parent.g_nFormActionId;
			//oForm = document.forms[0];
			oForm = p_oSenderForm;
			// da verificare
			//oForm.STAT_USERTIMES.value = parent.QueryActionUserTimes();

			//parent.NotifyFormSubmit(m_sFormName, sMsgTarget);
/*			
			if (sSubmitFormName!='')
			{
				oForm.Form.value=sSubmitFormName;
				//alert("Submitting Subform ["+sSubmitFormName+"]");
			}
*/			
			//SaveDivPosition();

			// save content scroll-pos
			// Da valutare
			//var hDivContent = GetItemFromId('DivContent');
			//if (hDivContent!=null) oForm.SCROLLPOS.value = hDivContent.scrollTop;
			
			// esecuzione eventuali handler definiti sui children della form
			for(i=0; i<oForm.elements.length; i++)
			{
				oElem = oForm.elements[i];
				var sCode = oElem.getAttribute('fwonformsubmit');
				if (sCode!=null) eval(sCode);
			}
			
			// Esegue submit
			oForm.SCROLLPOS.value
			oForm.FRMMSG.value=sMsgValue;
			oForm.FRMMSG.name=sMsgName;  
			//oForm.target = sMsgTarget;			
			oForm.submit();

			//Trace(m_sFormName + " - Submitted command [" + sMsgValue + '/' + sMsgName + "]");		
			return 1;
		}
		/*
		else if ((!m_bPageReloadPending) && (bBufferIfBusy))
		{
			// Se il submit in corso non riguarda la pagina corrente salva la richiesta
			// per eseguirla automaticamente in un secondo tempo
			Trace(m_sFormName + " - Buffered MsgName[" + sMsgName + "], MsgValue[" + sMsgValue + "], MsgTarget["+ sMsgTarget + "]");
			
			n = g_aWaitingMsgName.length;
			g_aWaitingMsgFormName[n] = sSubmitFormName;
			g_aWaitingMsgValue[n] = sMsgValue;
			g_aWaitingMsgName[n] = sMsgName;
			g_aWaitingMsgTarget[n] = sMsgTarget;

			setTimeout("_HandleWaitingMsg()", 500);
			return 2;
		}
		*/
	
	}
	return 0;
}


// Funzione handler di invio ritardato di un messaggio in wait
/*
function _HandleWaitingMsg()
{
	var bRemove = false;
	var n = g_aWaitingMsgName.length;
	if (n>0)
	{
		// Tenta il submit del messaggio in wait, se fallisce programma retry
		if (SubmitRequest(g_aWaitingMsgFormName[0], g_aWaitingMsgValue[0], g_aWaitingMsgName[0], g_aWaitingMsgTarget[0], false))
		{
			Trace("Submitted Buffered MsgName[" + g_aWaitingMsgName[0] + "], MsgValue[" + g_aWaitingMsgValue[0] + "], MsgTarget["+ g_aWaitingMsgTarget[0] + "]");
			bRemove = true;
		}
		else
			setTimeout("_HandleWaitingMsg()", 500);
		
		if (bRemove)
		{
			g_aWaitingMsgFormName = g_aWaitingMsgFormName.slice(1); //equivale a g_aWaitingMsgValue.shift() in JS 1.4
			g_aWaitingMsgValue = g_aWaitingMsgValue.slice(1); //equivale a g_aWaitingMsgValue.shift() in JS 1.4
			g_aWaitingMsgName = g_aWaitingMsgName.slice(1);
			g_aWaitingMsgTarget = g_aWaitingMsgTarget.slice(1);
			if (n>1) setTimeout("_HandleWaitingMsg()", 500);
		}
	}

}
*/

// funzione di impaccamento di FormSenderName, Messaggio, Parametri
/*
function _BuildMsgValue(sMsg, sMsgParamStr)
{
	//return sFormSender+"~"+sMsg+"~"+sMsgParamStr;
	return sMsg + ((sMsgParamStr != '') ? "?"+sMsgParamStr : '');
}
*/

// Handler invocato da funzione SendFormMsg(...)
function NotifyFormMsg(p_oFormSender, p_sMsg/*, sMsgParamStr, sMsgTarget*/)
{
	if (!p_oFormSender) return;
	
	//Trace(m_sFormName + " - Notifying Message [" + sMsg + "("+sMsgParamStr+")] to Module [" + m_sFormName + "]");
	//sMsgValue = _BuildMsgValue(sMsg, sMsgParamStr);
	SubmitRequest(p_oFormSender, p_sMsg, '', /*sMsgTarget,*/ true);
}


// Funzione handler di reload pagina
function _HandleReloadPage()
{
	sMsgValue = _BuildMsgValue("REFRESH", '');
	// esegue submit senza bufferizzare
	// Se fallisce programma reload con ritardo di 1000 ms.
	if (!SubmitRequest(null, sMsgValue, '', /*'',*/ false))
		m_nAutoReloadID = setTimeout('_HandleReloadPage()', 1000);
}


function ShowLayer(sLayerName, bShow)
{
	if (bShow)	document.all[sLayerName].style.visibility="visible";
	else		document.all[sLayerName].style.visibility="hidden";	
}

/*
function OnResizeWindow()
{
	var hDivToolbar = GetItemFromId('DivToolbar');
	var hDivContent = GetItemFromId('DivContent');
	var hDivPrintCtrl = GetItemFromId('DivPrintCtrl');
	var nClientWidth = GetWndWidth();
	var nClientHeight = GetWndHeight();

	//alert('OnResizeWindow ' + m_sFormName + ' ' +nClientWidth + ' ' + nClientHeight);

	if ( (hDivToolbar) && (hDivContent) )
	{
		hDivToolbar.style.left=0;
		hDivToolbar.style.top=GetWndScrollY();
		//hDivToolbar.style.width=nClientWidth;
		
		hDivContent.style.left=0;
		hDivContent.style.top=GetWndScrollY() + GetItemHeight(hDivToolbar);
		//hDivContent.style.width=nClientWidth;
		hDivContent.style.height=nClientHeight - GetItemHeight(hDivToolbar);
	}

	else if ( (hDivPrintCtrl) && (hDivContent) )
	{
		hDivContent.style.left=0;
		hDivContent.style.top=0;
		//hDivContent.style.width=nClientWidth;
		hDivContent.style.height=nClientHeight - 90;

		hDivPrintCtrl.style.left=0;
		hDivPrintCtrl.style.top=nClientHeight - 90;
		hDivPrintCtrl.width=nClientWidth;
		hDivPrintCtrl.style.height=90;
	}

	else if (hDivContent)
	{
		hDivContent.style.left=0;
		hDivContent.style.top=GetWndScrollY();
		//hDivContent.style.width=nClientWidth;
		hDivContent.style.height=nClientHeight;
	}
}
*/

// Funzione per il controllo dinamico del Layout
function DynLayout_CheckLayoutRule(p_Item)
{
	if (p_Item==null) p_Item=this;
	
	sLayoutRule = p_Item.layout_rule;
	if (!sLayoutRule) return;

	// Determina Item Type
	sItemType = p_Item.type;
	
	// Determina Item Value
	if (sItemType=='select-one')
	{
		sItemValue = p_Item.options[p_Item.selectedIndex].value;
		if (!sItemValue)
			sItemValue = p_Item.options[p_Item.selectedIndex].text;
	}

	sItemValue = StrTrim(sItemValue);
	
	// Esegue tokenize layout_rule
	aTok = sLayoutRule.split(';');
	
	if (aTok[0] == 'show-if-value')
	{
		// sintassi: show-if-value; ID1,ID2:Value1,ValueN; ID3,IDn:Value1,ValueN; ....
		for(var n=1; n<aTok.length; n++)
		{
			aTok1 = aTok[n].split(':');
			aCtrledItemId = aTok1[0].split(',');
			aCtrlingValues = aTok1[1].split(',');
			for(var m=0; m<aCtrledItemId.length; m++)
			{
				sCtrledItemId = StrTrim(aCtrledItemId[m]);
				pCtrledItem = GetItemFromId(sCtrledItemId);
				
				if (pCtrledItem)
				{
					bShow = false;
					for(var i=0; i<aCtrlingValues.length; i++)
						if (aCtrlingValues[i]==sItemValue) {bShow=true; break;}
					SetItemVisible(sCtrledItemId, bShow);
					//alert('ItemId: '+sCtrledItemId+': '+bShow);
				}
			}
		}
	}
	else
		return;
}


// Al caricamento della pagina esegue settaggio iniziale layout e registra l'event handler
// Valutare che tale event handler non vada in conflitto con quello relativo alla validazione
function DynLayout_OnPageLoad()
{
	nFormItems = document.forms[0].elements.length;
	for(var i=0; i<nFormItems; i++)
	{
		if (document.forms[0].elements[i].layout_rule)
		{
			//alert(document.forms[0].elements[i].name);
			DynLayout_CheckLayoutRule(document.forms[0].elements[i]);
			document.forms[0].elements[i].onchange=DynLayout_CheckLayoutRule;
		}
	}

}

// Gestisce Reside dinamico content
//window.onresize=OnResizeWindow;
