//********************************************************************************
//********************************************************************************
//ATTENZIONE: I file "default.html", "pagina_cortesia.txt" e "pagina_manutenzione.txt" 
//devono essere posizionati nella cartella ROOT del webserver.
//Il file "default.html" deve essere definito come Default Content Page per il web server.
//I file di imagine devono essere posizionati nella cartella "images" della ROOT del webserver
//Il file "wrapper.js" deve essere posizionato nella cartella "script" della ROOT del webserver
//********************************************************************************
//********************************************************************************

var xmlhttp;
var requestStatus=null;
var requestTxt=null;

function loadXMLDoc(url)
{
  //******************************************************
  //La funzione simula una chiamata alla pagina cercata per valutarne
  //lo stato di disponibilitā.
  //******************************************************
	xmlhttp=null;
	if (window.XMLHttpRequest)
	{// code for Firefox, Opera, IE7, etc.
		xmlhttp=new XMLHttpRequest();
		if (xmlhttp!=null){
			xmlhttp.onreadystatechange=state_Change;	
			xmlhttp.open("GET",url,false);
			xmlhttp.send(null);
			if (xmlhttp.onreadystatechange == null) state_Change();
		}
		else alert("Your browser does not support XMLHTTP.");
	}
	else if (window.ActiveXObject)
	{// code for IE6, IE5
		browserType = "IE";
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
		if (xmlhttp!=null)
		{
			xmlhttp.onreadystatechange=state_Change;	
			xmlhttp.open("GET",url,false);
			xmlhttp.send(null);
		}
		else alert("Your browser does not support XMLHTTP.");
	}
}


function state_Change()
{
  //******************************************************
  //La funzione valuta lo stato della chiamata e lo stato dell pagina chiamato.
  //imposta la variabile "requestStatus" con lo stato e la variabile
  //"requestTxt" col codice HTML della della pagina cercata
  //Queste variabili globali vengono valutate dalla funzione GotoUrl()
  //******************************************************
	if (xmlhttp.readyState==4)
	{// 4 = "loaded"
		requestStatus = xmlhttp.status;
		if (xmlhttp.status==200)
		{// 200 = "OK"
			requestTxt = xmlhttp.responseText;
		}
	}
}


function openWindow(URL)
{ 
  //******************************************************
  //La funzione apre una nuova finestra con l'url ricevuto in Input
  //******************************************************
	var availHeight = screen.availHeight; 
	var availWidth = screen.availWidth; 
	var x = 0, y = 0; 
	if (document.all)
	{ 
		x = window.screenTop; 
		y = window.screenLeft; 
	} 
	else if (document.layers)
	{ 
		x = window.screenX; 
		y = window.screenY; 
	} 

	var arguments = 'maximize=1, resizable=1,toolbar=no,location=1,directories=1,addressbar=1,scrollbars=1,status=1,menubar=1,top=0,left=0,screenX='+x+',screenY='+y+',width='+availWidth+',height='+availHeight; 
	newWindow = window.open(URL,'EdisonEnergia',arguments); 
} 


function GotoUrl()
{
  //******************************************************
  //La funzione valuta l'host presente nell'url.
  //Se non viene trovata alcuna corripondenza per l'host valutato
  //propone una pagine di cortesia che avvisa l'utente
  //che l'indirizzo inserito non č valido.
  //In caso contrario imposta la variabile "app" con il
  //nome della Virtual Directoty corrispondente sul Web Server.
  //Procede quindi con il controllo della disponibilitā delle pagine:
  // - se la pagina cercata risponde correttamente, viene visualizzata
  // - se si sta cercando di accedere ad un server Siebel
  //   momentaneamente non disponibile, propone una pagine di cortesia
  //   che avvisa l'utente (Sito in manutenzione)
  // - se la pagina non risponde, propone una pagine di cortesia
  //   che avvisa l'utente (Indirizzo non valido)
  //******************************************************
	var changeLoc="Y";
	var loc=unescape(this.location.host);
	loc=loc.toUpperCase();
	var isIE=navigator.userAgent.match("MSIE");
	var highInt="N";
	var openPopup="N";
	
	switch(loc)
	{
	case "WWW.EDISONENERGIA.IT":
		app="/it";
		break;
	case "VENDITE.EDISONENERGIA.IT":
		app="/vendite";
		highInt="Y";
		break;
	case "ANALYTICS.EDISONENERGIA.IT":
		app="/Analytics";
		break;
	case "ICM.EDISONENERGIA.IT":
		app="/Siebel";
		break;
	case "CRM.EDISONENERGIA.IT":
		app="/crm";
		highInt="Y";
		break;
	case "WWW.EDISONPERVOI.IT":
		app="/it";
		break;
	case "WWW.AREACLIENTI.EDISONENERGIA.IT":
		openPopup = "Y";
		app="/it_priv";
		break;
	case "MKTG.EDISONENERGIA.IT":
		app="/Marketing_ita";
		highInt="Y";
		break;
	case "HOME.EDISONENERGIA.IT":
		app="/Portal";
		break;
	case "VENDITE.FREE.EDISON.IT":
		app="/vendite";
		highInt="Y";
		break;
	case "CRM.FREE.EDISON.IT":
		app="/crm";
		highInt="Y";
		break;
	case "WWW.FREE.EDISON.IT":
		app="/it";
		break;
	case "ANALYTICS.FREE.EDISON.IT":
		app="/Analytics";
		break;
	case "ICM.FREE.EDISON.IT":
		app="/Siebel";
		break;
	case "WWW.AREACLIENTI.FREE.EDISON.IT":
		openPopup = "Y";
		app="/it_priv";
		break;
	case "MKTG.FREE.EDISON.IT":
		app="/marketing_ita";
		highInt="Y";
		break;
	case "HOME.FREE.EDISON.IT":
		app="/it";
		break;

	default:
		loadXMLDoc('pagina_cortesia.txt');
		document.write(requestTxt);
		changeLoc = "N";
	}
	if(changeLoc == "Y"){
		if((highInt == "Y" && isIE != null) || (highInt == "N")) {//Valuta se l'utente sta cercando di accedere ad un'applicazione che utilizza la Siebel High Interactivity utilizzando un browser diverso da IExplorer
			url2check = this.location.protocol +"//"+ this.location.host + app;
			loadXMLDoc(url2check); //Invoca la funzione "loadXMLDoc" per la verifica della disponibilitā della pagina cercata
			if (requestStatus!=200) { //Un codice di stato diverso da "200" indica che la pagina NON risponde correttamente
				loadXMLDoc('pagina_cortesia.txt'); //Invoca la funzione "loadXMLDoc" per il caricamento della pagina di cortesia, nella variabile "requestTxt" viene impostato il codice HTML che verrā sostituito nel BODY della pagina default.html
				document.write(requestTxt); //sostituisce il BODY corrente con quello ottenuto allo step precedente
			}
			else {
				occur = requestTxt.match("SWECmd=Start"); //Verifica che il codice della pagina corrisponda alla prima pagina Siebel
				occur1 = requestTxt.match("Siebel Analytics Log In"); //Verifica che il codice della pagina corrisponda alla pagina di LogIn di Siebel Analytics
				occur2 = requestTxt.match("No connection could be made because the target machine actively refused it"); //Verifica che il codice della pagina corrisponda alla pagina di Errore di Siebel Analytics
				if(occur != null) { //Condizione percui la pagina č una pagina Siebel
					url2check2 = this.location.protocol +"//"+ this.location.host + app + "/start.swe?SWECmd=Start&SWEHo=" + this.location.host;
					loadXMLDoc(url2check2);
					occur3 = requestTxt.match("Chiudere il browser Web"); //Verifica lo stato del Server Siebel a cui si ta cercando di accedere
					if (occur3 != null) { //Condizione per cui il serve Siebel non č disponibile, ridireziona alla pagina di cortesia
						loadXMLDoc('pagina_manutenzione.txt'); //Invoca la funzione "loadXMLDoc" per il caricamento della pagina di cortesia, nella variabile "requestTxt" viene impostato il codice HTML che verrā sostituito nel BODY della pagina default.html
						document.write(requestTxt); //sostituisce il BODY corrente con quello ottenuto allo step precedente
					}
					else { // Se il server Siebel č disponibile ridireziona alla pagina corretta
						if (openPopup == "Y")
							openWindow(this.location.protocol +"//"+ this.location.host + app);
						else
							this.location.href = this.location.protocol +"//"+ this.location.host + app;
					}
				}
				else if (occur1 != null) { //Condizione percui la pagina č una pagina Siebel Analytics disponibile, ridireziona alla pagina corretta
					this.location.href = this.location.protocol +"//"+ this.location.host + app;
				}
				else if (occur2 != null) { //Condizione percui la pagina č una pagina Siebel Analytics NON disponibile, ridireziona alla pagina di cortesia
					loadXMLDoc('pagina_manutenzione.txt'); //Invoca la funzione "loadXMLDoc" per il caricamento della pagina di cortesia, nella variabile "requestTxt" viene impostato il codice che verrā sostituito nel BODY della pagina default.html
					document.write(requestTxt); //sostituisce il BODY corrente con quello ottenuto allo step precedente
				}
				else { // Se la pagina cercata č disponibile ridireziona alla pagina corretta
						this.location.href = this.location.protocol +"//"+ this.location.host + app;
				}
			}
		}
		else {//Se l'utente sta cercando di accedere ad un'applicazione che utilizza la Siebel High Interactivity utilizzando un browser diverso da IExplorer
			loadXMLDoc('pagina_HighIntNotSupported.txt'); //Invoca la funzione "loadXMLDoc" per il caricamento della pagina di cortesia, nella variabile "requestTxt" viene impostato il codice che verrā sostituito nel BODY della pagina default.html
			document.write(requestTxt); //sostituisce il BODY corrente con quello ottenuto allo step precedente
		}
	}
}

GotoUrl(); // La funzione GotoUrl viene invocata ad ogni accesso alla pagina default.html