var lastAnchor;var countDown;var xmlDoc;var ajaxParametersArray;window.addEvent('domready', function(){	var myModuleBookmarkedState = YAHOO.util.History.getBookmarkedState("myModule");  	var myModuleInitialState = myModuleBookmarkedState || $('SSN_PAGE_XML').value;	YAHOO.util.History.register("myModule", myModuleInitialState, drawPage); 	YAHOO.util.History.onReady(function () {   		var myModuleCurrentState = YAHOO.util.History.getCurrentState("myModule");   		drawPage(myModuleCurrentState);	});   	YAHOO.util.History.initialize("yui-history-field", "yui-history-iframe"); });  /*	window.addEvent('domready', function(){	if($defined(dsHistory.QueryElements['xmlPage'])) {//-- Questo caso si verifica a fronte di://		- Reload//		- Nuova sessione da URL con hash (bookmark)		xmlPage = dsHistory.QueryElements['xmlPage'].replace(/\u00A7/g, "=");	}	else {//-- Questo caso si verifica a fronte di://		- Nuova sessione da URL senza hash		xmlPage = $('SSN_PAGE_XML').value	}	drawPage(xmlPage);});  */function drawPage(xmlPage) {//-- La funzione riceve una stringa XML descrittiva dell'intera pagina//-- ed effettua la chiamata Ajax per il disegno delle operazioni richieste nella variabile globale ajaxParametersArray.//-- I links sono attivati direttamente dalle chiamate Ajax	if ($defined(ajaxParametersArray)) {//-- Questo \u00E8 il caso usato nella normale navigazione utente		ajaxParametersArray.each(function(ajaxParameters){			switch(ajaxParameters[0]) {				case 'call': 					handleAjaxCall(ajaxParameters[1], ajaxParameters[2], ajaxParameters[3], ajaxParameters[4], ajaxParameters[5])					break;				case 'form': 					handleAjaxForm(ajaxParameters[1], ajaxParameters[2], ajaxParameters[3], ajaxParameters[4], ajaxParameters[5])					break;				case 'noop': 					break;				default:					break;			}		});	}	else {//-- Questo \u00E8 il caso usato nel caricamento iniziale della pagina (con o senza bookmark) e nella navigazione back-forward		xmlDoc = initDomPage(xmlPage);		handleAjaxCall($('boxRoot'), 'DPG', handlePage, xmlDoc.getElementsByTagName("page")[0], false);	}	ajaxParametersArray = null;}function handlePage(nodePage){//-- La funzione riceve un nodo DOM descrittivo dell'intera pagina//-- si prende carico dell'attivazione dei link necessari  	handleHeader(nodePage.getElementsByTagName("header")[0])  	handleContent(nodePage.getElementsByTagName("content")[0])//  	handleFooter(xmlDoc.getElementsByTagName("footer")[0])}function handleHeader(nodeHeader){	switch(nodeHeader.attributes.getNamedItem("type").value) {		case 'standard': //-- Attiva il link per i 2 menu			break;		default:			break;	}}function handleContent(nodeContent){//-- Annulla il contatore per il disegno dei promobox (potrebbe non esserci pi\u00F9 un posto dove disegnarli	if ($defined(countDown)) {clearTimeout(countDown)}	switch(nodeContent.attributes.getNamedItem("type").value) {		case 'catalog': 			handleCatalog(nodeContent)			break;		case 'basket': 			handleBasket(nodeContent);			break;		case 'underconstruction': 			handleUnderConstruction(nodeContent);			break;		default:			break;	}}function handleCatalog(nodeContent){	handleCatalogLeftArea(nodeContent.getElementsByTagName("catalogleftarea")[0]);	handleCatalogCenterArea(nodeContent.getElementsByTagName("catalogcenterarea")[0]);	handleCatalogRightArea(nodeContent.getElementsByTagName("catalogrightarea")[0]);}function handleCatalogLeftArea(nodeCatalogLeftArea){	switch(nodeCatalogLeftArea.attributes.getNamedItem("type").value) {		case 'menu': 			lastAnchor = undefined;			$ES('#boxMainMenu a').each(function(a){				handleLevel(a);			});//-- Apri eventuali voci di menu			selectedMenuNode = nodeCatalogLeftArea.getElementsByTagName("selectedmenu")[0];			if ($defined(selectedMenuNode)) {				while ($defined(selectedMenuNode)) {					a = $('MAN' + selectedMenuNode.attributes.getNamedItem("menuunid").value);					a.getParent().addClass('active');					if (selectedMenuNode.attributes.getNamedItem("isopen").value == 'true') {						openMenu(a);					}					lastAnchor = a;					selectedMenuNode = selectedMenuNode.getElementsByTagName("selectedmenu")[0];				}				a.addClass('selected');			}			break;		default:			break;	}}function handleCatalogCenterArea(nodeCatalogCenterArea){	switch(nodeCatalogCenterArea.attributes.getNamedItem("type").value) {		case 'menutarget': 			$ES('#boxMainSubCenter a').each(function(a){				a.addEvent('click', function(e){					e = new Event(e).stop();/*					node=xmlDoc.createElement('catalogcenterarea');					node.setAttribute('type', 'productsheet');					node.setAttribute('elementunid', a.getProperty('id'));					handleAjaxCall($('boxMainSubCenter'), 'DPS', handleCatalogCenterArea, node, true)*/					node=xmlDoc.createElement('catalogcenterarea');					node.setAttribute('type', 'productsheet');					node.setAttribute('elementunid', a.getProperty('id'));					updateDOM(node);					ajaxParametersArray = new Array(['call', $('boxMainSubCenter'), 'DPS', handleCatalogCenterArea, node, true]);					xmlPage = serializeNode(xmlDoc.getElementsByTagName("page")[0])					YAHOO.util.History.navigate("myModule", xmlPage);				});			});					break;		case 'productsheet': 			handleProductSheet();			break;		default:			break;	}	}function handleCatalogRightArea(nodeCatalogRightArea){	switch(nodeCatalogRightArea.attributes.getNamedItem("type").value) {		case 'promoboxes': 			$ES('#boxMainSubRight a').each(function(a){				a.addEvent('click', function(e){					e = new Event(e).stop();/*					node=xmlDoc.createElement('catalogcenterarea');					node.setAttribute('type', 'productsheet');					node.setAttribute('elementunid', a.getProperty('id'));					handleAjaxCall($('boxMainSubCenter'), 'DPS', handleCatalogCenterArea, node, true)*/					node=xmlDoc.createElement('catalogcenterarea');					node.setAttribute('type', 'productsheet');					node.setAttribute('elementunid', a.getProperty('id'));					updateDOM(node);					ajaxParametersArray = new Array(['call', $('boxMainSubCenter'), 'DPS', handleCatalogCenterArea, node, true]);					xmlPage = serializeNode(xmlDoc.getElementsByTagName("page")[0])					YAHOO.util.History.navigate("myModule", xmlPage);				});			});		//-- Schedula la riesecuzione			nodeTimer=xmlDoc.createElement('catalogcenterarea');			nodeTimer.setAttribute('type', 'promoboxes');			countDown = setTimeout("handleAjaxCall($('boxMainSubRight'), 'DPB', handleCatalogRightArea, nodeTimer, false)", 1000 * $('SSN_TIME_REFRESH').value);			break;		default:			break;	}}function handleBasket(nodeContent){	$ES('#boxMainSubBasket #basketShopping').each(function(i){		i.addEvent('click', function(e){			e = new Event(e).stop();//-- Effettua solamente un back				history.back();		});	});			$ES('#boxMainSubBasket #basketBuy').each(function(i){		i.addEvent('click', function(e){			e = new Event(e).stop();//-- Gestisco la comunicazione con la banca//-- Effettua una chiamata Ajax per aggiornare il carrello (nel caso siano state modificate quantit\u00E0 e non salvate)			node=xmlDoc.createElement('content');			node.setAttribute('type', 'basket');//-- In questo caso non interessa aggiornare l'history. Di conseguenza chiamiamo direttamente l'ajax			handleAjaxForm($('formBasket'), $('boxWrap'), 'BSK', handleContent, node) //-- Effettua una chiamata Ajax per creare il form e ridirigere il browser			handleAjaxCall($('ajaxService'), 'MD5', function(){$('formBP').submit()}, xmlDoc.getElementsByTagName("page")[0], false);		});	});			$ES('#boxMainSubBasket #basketRecalc').each(function(i){		i.addEvent('click', function(e){			e = new Event(e).stop();			node=xmlDoc.createElement('content');			node.setAttribute('type', 'basket');//-- In questo caso non interessa aggiornare l'history. Di conseguenza chiamiamo direttamente l'ajax			handleAjaxForm($('formBasket'), $('boxWrap'), 'BSK', handleContent, node) 		});	});			$ES('#boxMainSubBasket input.removefrombasket').each(function(i){		i.addEvent('click', function(e){			e = new Event(e).stop();			node=xmlDoc.createElement('content');			node.setAttribute('type', 'basket');			node.setAttribute('basketitemunid', i.getProperty('id'));//-- In questo caso non interessa aggiornare l'history. Di conseguenza chiamiamo direttamente l'ajax			handleAjaxForm($('formBasket'), $('boxWrap'), 'RFB', handleContent, node) 		});	});			$ES('#boxMainSubBasket input.basketqty').each(function(i){		i.addEvent('keypress', function(e) {			if (!e) var e = window.event;			if (!IsNumeric(e.keyCode ? e.keyCode : e.which)) {				e = new Event(e).stop();				}		});		i.addEvent('focus', function(e) {			i.select();		});	});		}function handleUnderConstruction(nodeContent){	$ES('#boxUnderCostructionText #emailSubmit').each(function(i){		i.addEvent('click', function(e){			e = new Event(e).stop();			node=xmlDoc.createElement('content');			node.setAttribute('type', 'underconstruction');			node.setAttribute('emailinput', $('emailInput').value);//-- In questo caso non interessa aggiornare l'history. Di conseguenza chiamiamo direttamente l'ajax			handleAjaxCall($('boxWrap'), 'SML', handleContent, node, false) 		});	});	}function handleDisplayTarget(a) {//-- Chiama la funzione handleAjaxCall con i parametri opportunamente configurati a secondo del display type. Usata da HandleLevel	lastAnchor.removeClass('selected');	a.addClass('selected');	switch(a.getProperty('dt')) {		case '0': //-- Nessuna visualizzazione			ajaxParametersArray = new Array(['noop']);			xmlPage = serializeNode(xmlDoc.getElementsByTagName("page")[0])			YAHOO.util.History.navigate("myModule", xmlPage);			break;		case '1': //-- Elmenti come lista		case '2': //-- Elmenti comegriglia			node=xmlDoc.createElement('catalogcenterarea');			node.setAttribute('type', 'menutarget');			node.setAttribute('menuunid', a.getProperty('id').slice(3));			updateDOM(node);			ajaxParametersArray = new Array(['call', $('boxMainSubCenter'), 'DMT', handleCatalogCenterArea, node, true]);			xmlPage = serializeNode(xmlDoc.getElementsByTagName("page")[0])			YAHOO.util.History.navigate("myModule", xmlPage);			break;		case '3': //-- Pagina di Testo			break;		case '4': //-- Pagina Istituzionale			break;		case '5': //--Carrello			node=xmlDoc.createElement('content');			node.setAttribute('type', 'basket');			updateDOM(node);			ajaxParametersArray = new Array(['call', $('boxWrap'), 'DMT', handleContent, node, true]);			xmlPage = serializeNode(xmlDoc.getElementsByTagName("page")[0])			YAHOO.util.History.navigate("myModule", xmlPage);			break;		default:			break;	}	}function handleLevel(a){//-- Defnisce il comportamento di un anchor nel menu//-- Propriet\u00E0 degli anchors:// level: livello nel menu// dt: display target// hc: has children// io: is open	a.addEvent('click', function(e){		if($defined(e)) {e = new Event(e).stop()}		if(!$defined(lastAnchor)) {lastAnchor = a}		var curLevel = parseFloat(a.getProperty('level'));		var lastLevel = parseFloat(lastAnchor.getProperty('level'));//-- Se il livello richiesto \u00E8 maggiore di quello in essere		if(curLevel > lastLevel) {			if(a.getProperty('hc') == '1') {							openMenu(a);			}			updateSelectedMenu(a)			handleDisplayTarget(a)		}//-- Se il livello richiesto \u00E8 minore di quello in essere		else if(curLevel < lastLevel) {			if (isParent(lastAnchor, a)) {				closeMenu(a);//				a.getParent().removeClass('active');				updateSelectedMenu(a)				handleDisplayTarget(a)			}			else {				while(curLevel < lastLevel) {					lastAnchor = getParentAnchor(lastAnchor);					lastLevel = parseFloat(lastAnchor.getProperty('level'));				}				closeMenu(lastAnchor);					lastAnchor.getParent().removeClass('active');				a.getParent().addClass('active');				if(a.getProperty('hc') == '1') {								openMenu(a);				}				updateSelectedMenu(a)				handleDisplayTarget(a)			}		}//-- Se il livello richiesto \u00E8 uguale a quello in essere		else {			if(a == lastAnchor) {				if(a.getProperty('io') == '1') {								closeMenu(a);//					a.getParent().removeClass('active');				}				else {					a.getParent().addClass('active');					if(a.getProperty('hc') == '1') {										openMenu(a);						}//					handleDisplayTarget(a)				}//-- In questo caso non viene richiamata la handleDisplayTarget. Di conseguenza aggiorna la history direttamente				updateSelectedMenu(a)				ajaxParametersArray = new Array(['noop']);				xmlPage = serializeNode(xmlDoc.getElementsByTagName("page")[0])				YAHOO.util.History.navigate("myModule", xmlPage);			}			else {				if(lastAnchor.getProperty('io') == '1') {								closeMenu(lastAnchor);				}				lastAnchor.getParent().removeClass('active');				a.getParent().addClass('active');				if(a.getProperty('hc') == '1') {								openMenu(a);				}				updateSelectedMenu(a)				handleDisplayTarget(a)			}		}		lastAnchor = a;						});}function updateSelectedMenu(a) {//-- Aggiorna la descrizione della pagina riportando le variazioni sui menu//-- Elimina la descrizione corrente, se esiste	menuNode = xmlDoc.getElementsByTagName("selectedmenu")[0];	if($defined(menuNode)) { 		parentNode = menuNode.parentNode;		parentNode.removeChild(menuNode);	}	//-- Ricostruisci la definizione	curLevel = parseFloat(a.getProperty('level'));	levelAnchor = a;	for (level = curLevel; level >= 1; level = level - 1) {		menuNode=xmlDoc.createElement('selectedmenu');		menuNode.setAttribute('menuunid', levelAnchor.getProperty('id').slice(3));		menuNode.setAttribute('isopen', levelAnchor.getProperty('io') == '1' ? 'true' : 'false');		if (level != 1)	 {				levelAnchor = getParentAnchor(levelAnchor);		}		if (level < curLevel)	 {				menuNode.appendChild(lastMenuNode);		}		lastMenuNode = menuNode;	}	nodeCatalogLeftArea = xmlDoc.getElementsByTagName("catalogleftarea")[0];	nodeCatalogLeftArea.appendChild(menuNode);}function isParent(lastAnchor, a){	var curLevel = parseFloat(a.getProperty('level'));	var lastLevel = parseFloat(lastAnchor.getProperty('level'));	while(curLevel < lastLevel) {		lastAnchor = getParentAnchor(lastAnchor)		lastLevel = parseFloat(lastAnchor.getProperty('level'));		if(lastAnchor == a) return true;	}	return false;}function getParentAnchor(a) {	return a.getParent().getParent().getPrevious();}function openMenu(a){	id = a.getProperty('id').slice(3);	sul = $('SUL' + id);	ul = sul.clone();	ul.id = "MUL" + id;			ul.getChildren().each(function(li){		innu = $E('ul', li);		ina = $E('a', li);		if($defined(innu)) {			innu.remove();			ina.setProperty('hc',  '1');		}		else {			ina.setProperty('hc',  '0')		}		ina.setProperty('level',  1 + parseFloat(a.getProperty('level')));		ina.setProperty('id', 'MAN' + ina.id.slice(3));		handleLevel(ina);		});	ul.injectAfter(a);	a.setProperty('io', '1');}function closeMenu(a){	id = a.getProperty('id').slice(3);/*//-- Aggiona la definizione di pagina	menuNode = xmlDoc.getElementsByTagName("selectedmenu")[0];	if($defined(menuNode)) { 		while ($defined(menuNode)) {			if (menuNode.attributes.getNamedItem("menuunid").value == id) {				menuNode.attributes.getNamedItem("isopen").value = 'false'				childMenuNode = menuNode.getElementsByTagName("selectedmenu")[0];				if($defined(childMenuNode)) { 					menuNode.removeChild(childMenuNode);				}				menuNode= null;			}			else {				menuNode = menuNode.getElementsByTagName("selectedmenu")[0];			}		}	}*/	ul = $('MUL' + id);	ul.remove();	a.setProperty('io', '0');}function handleAjaxCall(containerElement, idOperation, onCompleteFunction, node, useLoader){	var url = $('SSN_BASE_URL').value + '/ajax?openagent';	if (useLoader) {		drawLoader(containerElement);	}	new Ajax(url, {		data: 'SSN_ID_OPERATION=' + idOperation + '&SSN_AJAX_XML=' + escape(serializeNode(node)),		method: 'post',		update: containerElement,		onComplete: function(){			onCompleteFunction(node);		}	}).request();}function handleAjaxForm(formElement, containerElement, idOperation, onCompleteFunction, node, historyObject){	var url = $('SSN_BASE_URL').value + '/ajax?openagent';//-- Crea nel form il campo per il controllo dell'operazione		var operationField = new Element('input', {		'type' : 'hidden',		'name' : 'SSN_ID_OPERATION',		'value': idOperation	});	$(operationField).injectInside(formElement);	//-- Crea nel form il campo per l'XML	var xmlField = new Element('input', {		'type' : 'hidden',		'name' : 'SSN_AJAX_XML',		'value': serializeNode(node)	});	$(xmlField).injectInside(formElement);	//-- Sottometti il form	formElement.send({		method: 'post',		update: containerElement,		onComplete: function(){			onCompleteFunction(node);		}	});}function handleProductSheet(){//-- Effettua il ridimensionamento in altezza delle celle contenente le immagini in tutte le visualizzazione a griglia	var maxPicHeight;	var maxNameHeight;	var maxColorHeight;	$ES('#boxMainSubCenter table.prodgrid tr.gridrow').each(function(gridRow){		maxPicHeight = 0;		maxNameHeight = 0;		maxColorHeight = 0;//-- Trova la massima altezza di immagine per questa riga		$ES('th.prodpiccell', gridRow).each(function(prodPicCell){			if(maxPicHeight < prodPicCell.clientHeight) {				maxPicHeight = prodPicCell.clientHeight;			}		});//-- Trova la massima altezza del nome articolo per questa riga		$ES('td.name', gridRow).each(function(nameCell){			if(maxNameHeight < nameCell.clientHeight) {				maxNameHeight = nameCell.clientHeight;			}		});//-- Trova la massima altezza del colore articolo per questa riga		$ES('td.proditemcolor', gridRow).each(function(colorCell){			if(maxColorHeight < colorCell.clientHeight) {				maxColorHeight = colorCell.clientHeight;			}		});//-- Setta tutte le celle contenenti immagini alla massima altezza di riga, +2 per il bordo		$ES('th.prodpiccell', gridRow).each(function(prodPicCell){			prodPicCell.setProperty('height', maxPicHeight + 2);		});//-- Setta tutte le celle contenenti nomi articolo alla massima altezza di riga +5 per un po' di respiro		$ES('td.name', gridRow).each(function(nameCell){			nameCell.setProperty('height', maxNameHeight + 5);		});//-- Setta tutte le celle contenenti colori articolo alla massima altezza di riga +5 per un po' di respiro		$ES('td.proditemcolor', gridRow).each(function(colorCell){			colorCell.setProperty('height', maxColorHeight + 5);		});	});//-- Setta il link per le immagini alternative	$ES('#boxMainSubCenter a.aalt').each(function(a){		a.addEvent('mouseover', function(e){//				a.addEvent('click', function(e){			e = new Event(e).stop();			$('mainPic').setProperty('src', ($E('img', a).getProperty('src')));		});	});//-- Setta il link per i prodotti collegati	$ES('#boxMainSubCenter a.ap5').each(function(a){		a.addEvent('click', function(e){			e = new Event(e).stop();			node=xmlDoc.createElement('catalogcenterarea');			node.setAttribute('type', 'productsheet');			node.setAttribute('elementunid', a.getProperty('id'));			updateDOM(node);			ajaxParametersArray = new Array(['call', $('boxMainSubCenter'), 'DPS', handleCatalogCenterArea, node, true]);			xmlPage = serializeNode(xmlDoc.getElementsByTagName("page")[0])			YAHOO.util.History.navigate("myModule", xmlPage);//			handleAjaxCall($('boxMainSubCenter'), 'DPS', handleCatalogCenterArea, node, true)		});	});		//-- Setta i link per le icone carrello	$ES('#boxMainSubCenter a.absk').each(function(a){		a.addEvent('click', function(e){			e = new Event(e).stop();//-- Recupera le informazioni a secondo del tipo scheda visualizzata			node=xmlDoc.createElement('content');			node.setAttribute('type', 'basket');			node.setAttribute('groupunid', $('SSN_UNID_GROUP').value);			switch(a.getProperty('dt')) {				case 'GRP0': //-- Visualizzazione gruppo con articoli singoli (DA FARE)//					alert('G0');					break;				case 'GRP1': //-- Visualizzazione gruppo con articoli per taglia					node.setAttribute('itemunid', $E('.basket select').value);					node.setAttribute('itemqty', $E('.basket input').value);					updateDOM(node);					ajaxParametersArray = new Array(['call', $('boxWrap'), 'PIB', handleContent, node, true]);					xmlPage = serializeNode(xmlDoc.getElementsByTagName("page")[0])					YAHOO.util.History.navigate("myModule", xmlPage);//					handleAjaxCall($('boxWrap'), 'PIB', handleContent, node, true);					break;				case 'GRP2': //-- Visualizzazione gruppo con articoli per colore					node.setAttribute('itemunid', a.getProperty('id'));					node.setAttribute('itemqty', $E('input', a.getParent()).value);					updateDOM(node);					ajaxParametersArray = new Array(['call', $('boxWrap'), 'PIB', handleContent, node, true]);					xmlPage = serializeNode(xmlDoc.getElementsByTagName("page")[0])					YAHOO.util.History.navigate("myModule", xmlPage);//					handleAjaxCall($('boxWrap'), 'PIB', handleContent, node, true);					break;				case 'GRP3': //-- Visualizzazione gruppo con articoli per taglia e colore											node.setAttribute('itemunid', $('SEL' + a.getProperty('id')).value);					node.setAttribute('itemqty', $E('input', a.getParent()).value);					updateDOM(node);					ajaxParametersArray = new Array(['call', $('boxWrap'), 'PIB', handleContent, node, true]);					xmlPage = serializeNode(xmlDoc.getElementsByTagName("page")[0])					YAHOO.util.History.navigate("myModule", xmlPage);//					handleAjaxCall($('boxWrap'), 'PIB', handleContent, node, true);					break;				case 'ITM0': //-- Visualizzazione articolo					node.setAttribute('itemunid', a.getProperty('id'));					node.setAttribute('itemqty', $E('.basket input').value);					updateDOM(node);					ajaxParametersArray = new Array(['call', $('boxWrap'), 'PIB', handleContent, node, true]);					xmlPage = serializeNode(xmlDoc.getElementsByTagName("page")[0])					YAHOO.util.History.navigate("myModule", xmlPage);//					handleAjaxCall($('boxWrap'), 'PIB', handleContent, node, true);					break;			}							});	});		} function IsNumeric(keyPressed) {   var ValidChars = "0123456789";   var IsNumber=true;   var Char;	Char = String.fromCharCode(keyPressed); 	if (ValidChars.indexOf(Char) == -1) {         IsNumber = false;	}	return IsNumber;}function drawLoader(el) {	el.empty();	var loaderPicture = new Element('img', {		'src': $('SSN_BASE_URL').value + '/ajax-loader.gif?OpenImageResource'	});	$(loaderPicture).setStyles({		'margin-left': 250,		'margin-top': 100,		width: 32,		height: 32	});	$(loaderPicture).injectInside(el);};	function initDomPage(xmlText) {	try { //-- Internet Explorer		newXmlDoc=new ActiveXObject("Microsoft.XMLDOM");		newXmlDoc.async="false";		newXmlDoc.loadXML(xmlText);	}	catch(e)  {		try { //-- Firefox, Mozilla, Opera, etc.			parser=new DOMParser();			newXmlDoc=parser.parseFromString(xmlText,"text/xml");		}		catch(e) {			alert(e.message)		}  	}  	return newXmlDoc;}function serializeNode(node) {	if (node.xml==undefined) {		 var xmlSerializer = new XMLSerializer();		  return xmlSerializer.serializeToString(node);	}	else {		return node.xml	}}function updateDOM(sourceNode) {	nodeToRemove = xmlDoc.getElementsByTagName(sourceNode.tagName)[0];	parentNode = nodeToRemove.parentNode;	parentNode.removeChild(nodeToRemove);	parentNode.appendChild(sourceNode);}