
/* Funzioni javascript per il template DSWebFormBase. Per la documentazione vedere l'help della DSLib. */


// Personalizzazione dell'errore
//if (_DSWebFormBase_CatchOnError)
//  window.onerror = _DSWebFormBase_CatchOnError;


// Registra il gestore dell'evento onerror della window
function _DSWebFormBase_CatchOnError(msg, url, linenumber) 
{
	// Funzioni solo se sono in debug
	if (_DSWebFormBase_IsDeveloping)
	{
		debug("");
		debug("***** ERRORE *****");
		debug("MSG: " + msg);
		debug("URL: " + url);
		debug("Linea: " + linenumber);
		debug("***** ERRORE *****");
		debug("");
	}

	// alert
	var ShowMsg = "Errore durante l'esecuzione della pagina.\n\n";
	ShowMsg += "Descrizione: " + msg + "\n";
	ShowMsg += "Pagina: " + url + "\n";
	ShowMsg += "Linea: " + linenumber + "\n";
	alert(ShowMsg);
	return true;
}


// Recupera un messaggio dal file degli errori dell'applicativo
function GetErrorMsg(MessageId, TsgID, BEModuleName)
{
	if (TsgID == null || TsgID == "")
		TsgID = _DSWebFormBase_TsgID;
	
	var XmlDocument = null;
	var ModDesc = "";
	var Extras = "";
	try
	{
		var Node = null;

		if (BEModuleName != null && BEModuleName != "")
		{
		    if ( BEModuleName.toUpperCase() == "DSLIB" )
		    {
		        //  cerca messaggio di dslib
                	ModDesc = "DSLIB";
		        XmlDocument = document.getElementById("DSLIB").XMLDocument;
		        Node =  XmlDocument.selectSingleNode("//ROW[ID='"+MessageId+"' and SO='']");
		    }
		    else
		    {
		        //  cerca prima sull'xml del FE (remapping), poi sul backend (dslib)
		        ModDesc = TsgID;
		        XmlDocument = document.getElementById(TsgID).XMLDocument;
    	        	Node = XmlDocument.selectSingleNode("//ROW[RC='"+MessageId+"' and SO='"+BEModuleName+"']");
		        
		        if ( Node == null )
		        {
		            //  non c'e' remapping => prendo default di quel BE
		            ModDesc = BEModuleName;
		            XmlDocument = document.getElementById("DSLIB").XMLDocument;
		            Node =  XmlDocument.selectSingleNode("//ROW[ID='"+MessageId+"' and SO='']");		                
		        }
		        else
					MessageId = Node.selectSingleNode("ID").text;
		    }
		}
		else
		{
		    //  messaggio del FE
		    ModDesc = TsgID;
		    XmlDocument = document.getElementById(TsgID).XMLDocument;
		    Node = XmlDocument.selectSingleNode("//ROW[ID='"+MessageId+"']");
		}

		if ( Node == null )
		{
		    //  default cerca dslib 9
		    ModDesc = "DSLIB";
		    XmlDocument = document.getElementById("DSLIB").XMLDocument;
		    Node =  XmlDocument.selectSingleNode("//ROW[ID='9' and SO='']");
		    Extras = " (" + MessageId + ", " + TsgID + ", " + BEModuleName + ")";
		}
				
		// Sostituisco \n
		var sMsg = Node.selectSingleNode("MSG").text;
		var sMsgD = sMsg;
		while (sMsg.indexOf("\\n") >= 0 ) 
		{
			sMsg = sMsg.replace("\\n", "\n");
			sMsgD = sMsgD.replace("\\n", "<br>");
		}

		// Assegno i Msg
		var Msg = new Object();
		Msg.ID = Node.selectSingleNode("ID").text;
		Msg.Level = Node.selectSingleNode("LEV").text;
		Msg.Msg = sMsg + Extras;
		Msg.Description = ModDesc + " " + Msg.ID + " - " + sMsg;
		Msg.HTMLDescription = ModDesc + " " + Msg.ID + " - " + sMsgD + Extras;
		return Msg;			 			
	}
	catch(ex) 
	{
		var Msg = new Object();
		Msg.ID = MessageId;
		Msg.Level = 0;
		Msg.Msg = "Non è stato trovata la descrizione per il messaggio <"+MessageId+", "+TsgID+", "+BEModuleName+">. Segnalare il codice al Supporto Dealer per la soluzione della problematica.";
		Msg.Description = Msg.Msg;
		Msg.HTMLDescription = Msg.Msg;
		return Msg;			 			
	}	
}

// Recupera un errore da Message.xml
function GetMessage(ModuleName, MessageId) 
{
	if (arguments.length == 1)
	{
		MessageId = ModuleName;
		ModuleName = "";
	}
	
	try 
	{
		var Msg = new Object();
		var xmlMessages = document.getElementById("Messages").XMLDocument;

		// Ricerco il messaggio x modulo...
		var Node = xmlMessages.documentElement.selectSingleNode('//ROW[ID="' + MessageId + '" and AO="' + ModuleName + '"]');

		// ... se non lo trovo ricerco quello generico...
		if (Node == null)
			Node = xmlMessages.documentElement.selectSingleNode('//ROW[ID="' + MessageId + '" and AO=""]');

		// ... se non lo trovo prendo il 9 - errore generico
		if (Node == null)
			Node = xmlMessages.documentElement.selectSingleNode('//ROW[ID="9"]');

		// Sostituisco \n
		var sMsg = Node.selectSingleNode("MSG").text;
		var sMsgD = sMsg;
		while (sMsg.indexOf("\\n") != -1) 
		{
			sMsg = sMsg.replace("\\n", "\n");
			sMsgD = sMsgD.replace("\\n", "<br>");
		}

		// Assegno i Msg
		Msg.ID = MessageId;
		Msg.Level = Node.selectSingleNode("LEV").text;
		Msg.Msg = sMsg;
		Msg.Description = ModuleName + " " + MessageId + " - " + sMsg;
		Msg.HTMLDescription = ModuleName + " " + MessageId + " - " + sMsgD;

		return Msg;
	}
	catch(ex) 
	{
		alert("Impossibile recuperare il file degli errori.\nErrore: " + ex.description);
		return null;
	}
}


// Recupera il valore di un tag
function _DSWebFormBase_InnerText(Xml, TagName)
{
	if (Xml == null || Xml == "" || TagName == null || TagName == "")
		return null;
		
	try
	{
		if ( typeof(Xml) != "object" )
		{
			var xml = new ActiveXObject("Microsoft.XMLDOM");
			xml.async = false;
			xml.loadXML(Xml);
			var rootElement = xml.documentElement;		
			var ret = rootElement.getElementsByTagName(TagName).item(0).text;
			xml = null;
			return ret;
		}
		else
		{
			var rootElement = Xml.documentElement;		
			var ret = rootElement.getElementsByTagName(TagName).item(0).text;
			return ret;
		}
	}
	catch(ex)
	{
		debug("");
		debug("### _DSWebFormBase_InnerText Exception = " + ex.description);
		debug("### TagName = " + TagName);  
		debug("### Xml.length = " + Xml.length);
		debug("");
		return "";
	}
}


// Recupera il valore di un tag
function _DSWebFormBase_OuterText(Xml, TagName)
{
	return "<" + TagName + ">" + _DSWebFormBase_InnerText(Xml, TagName) + "</" + TagName + ">";
}

// carica i dati da un xml
function ImportXML(pContainer, Xml)
{
	try
	{
		var xml;
		if ( typeof(Xml) != "object" )
		{
			xml = new ActiveXObject("Microsoft.XMLDOM");
			xml.async = false;
			xml.loadXML(Xml);
		}
		else xml = Xml;
			
		for( var k=0; k < pContainer.all.length; k++ )
		{
			var obj = pContainer.all(k);

			try
			{
				if ( obj.tagName.toLowerCase() == "input" || obj.tagName.toLowerCase() == "textarea" || obj.tagName.toLowerCase() == "select")
				{
					obj.ImportXML(Xml);
				}
			}
			catch(e){}
		}
	}
	catch(e)
	{
	}
}