//  *****************************************************************************
//  * applicazione web : BUSSOLA
//  *           modulo :    
//  *        nome file : CREA_WINAUT.JS
//  * contenuto:
//  * elementi software per la predisposizione della pagina di autenticazione
//  * utente
//  *
//  * data ultimo aggiornamento : 12/09/2005 14.35
//  *****************************************************************************
//
  var myserWConfig = new Array();   // array degli attributi del servizio corrente
  var serWuniConfig = new Array();  // array delle sigle degli atenei idonei
//
//                             ::::::::::::::::::::::::
//
// ritrova (in array myConfig) la lista delle sigle degli Atenei idonei
// per il servizio specificato
// Parametri :
// - p_sig = sigla del servizio
//
 function cercaLisUni (p_sig)
 {
  var LisUni='';
  for (i=0; i < myConfig.length; i++) 
  {
    if ( myConfig[i][1]+myConfig[i][2] == p_sig )  
    {
     LisUni =  myConfig[i][9];
     return LisUni;
     exit;
    } 
  }
 }            
//                             ::::::::::::::::::::::::         
//
// popola l'array di configurazione del servizio (myserWConfig)
// selezionando ed elaborando 
// la riga dell' array di configurazione dei Servizi con finestra autenticazione utente (serWConfig)
// corrispondente alla sigla del servizio richiesta
// in base ai parametri "ateneo" e "lingua" forniti 
// l'array myserWConfig è un array monodimensionale 
//
 function selserW (p_sig,p_uni,p_lan)
 {
  for (i=0; i < serWConfig.length; i++) 
  {
    if ( serWConfig[i].substring(0,3) == p_sig )  
    {
     myserWConfig =  serWConfig[i].split("#");
     break;
    } 
  }
     myserWConfig[1]= pickLan(myserWConfig[1],p_lan);     // titolo del servizio              
     myserWConfig[3]= strReplace(myserWConfig[3],"$HOST",window.location.host);  // URL della action della form
//     myserWConfig[3]= strReplace(myserWConfig[3],"$HOST",$HOST);  // URL della action della form
     myserWConfig[4]= strReplace(myserWConfig[4]," ","");  // parametro aggiuntivo della form
     myserWConfig[5]= pickLan(etiWConfig[myserWConfig[5]],p_lan); // etichetta del campo utente
     if (p_uni != 'all')
     {    
       myserWConfig[3]= strReplace(myserWConfig[3],"$UNI",p_uni.toLowerCase());
       myserWConfig[7]= pickLan(unieConfig[p_uni.toUpperCase()],p_lan).toUpperCase();    
     }
     else // caso di p_uni=all
     { 
       myserWConfig[7]= cercaLisUni(p_sig);
       myserWConfig[7]= strReplace(myserWConfig[7],'   ;',''); 
       serWuniConfig = myserWConfig[7].split(";");
     }
  
/* 
     alert ('myserWConfig[0] = '+myserWConfig[0]
       +'\nmyserWConfig[1] = '+myserWConfig[1] 
       +'\nmyserWConfig[2] = '+myserWConfig[2]
       +'\nmyserWConfig[3] = '+myserWConfig[3]
       +'\nmyserWConfig[4] = '+myserWConfig[4] 
       +'\nmyserWConfig[5] = '+myserWConfig[5]
       +'\nmyserWConfig[6] = '+myserWConfig[6]
       +'\nmyserWConfig[7] = '+myserWConfig[7]       
         );
*/ 
 } 
//                            ::::::::::::::::::::::::  
//
// genera la pagina HTML che contiene la richiesta di autenticazione utente
// nella versione della lingua corrente
// per il servizio corrente e l'ateneo corrente 
// Parametri :
// - p_sig = sigla del servizio
// - p_uni = sigla dell'ateneo
// - p_lan = sigla della lingua
// - p_fu = indicatore dell'esito autenticazione
// 
 function crea_winaut(p_sig,p_uni,p_lan,p_fu)
 {
  var apg = '';	    	
  var msg = '';	
  var pos = 0;
/*    	
  alert("sono in crea_winaut" 
       +"\np_sig="+p_sig
       +"\np_uni="+p_uni
       +"\np_lan="+p_lan
       ); 
*/ 
  selserW(p_sig,p_uni,p_lan); 
  with (winaut.document)
  {
   open();
   apg =  '<HTML>\n';
   apg += '<HEAD>\n' ;
   apg += '<TITLE>'+myserWConfig[2]+'</TITLE>\n';
   apg += '<link rel="stylesheet" href="'+$CSSDIR+'stywinaut.css" type="text/css">\n';   
   write (apg);  
    
   apg  = '<script language="Javascript">\n'; 
   apg += '//\n';  
   apg += '// effettua il controllo formale di validazione campi \n';  
   apg += '//\n';  
   apg += ' function checkFields ()\n';
   apg += ' {\n'; 
   apg += '  var numform = document.forms.length;\n';
   apg += '  var validFlag = true;\n';
   apg += '  var continueLooping = true;\n';
   apg += '  var diag = "";\n'; // diag sta per diagnostica
   apg += '  for (var p_form=0; p_form <numform; p_form++)\n';
   apg += '  {\n'; // inizio ciclo for esterno sulle form della pagina
   apg += '    for(var i=0; i<document.forms[p_form].elements.length; i++)\n';
   apg += '    {\n';  // inizio ciclo for annidato sugli elementi presenti in ciascuna form della pagina
   apg += '     switch (document.forms[p_form].elements[i].type)\n';
   apg += '     {\n';          
   apg += '      case "text" :  \n';
   apg += '           if(document.forms[p_form].elements[i].value.length < 3)\n';   
   apg += '           {\n';   
   apg += '            validFlag = false;\n';
   apg += '            diag = "'+pickLan("Attenzione!! Digitare "+myserWConfig[5]+"&Attention, please!! Enter '+myserWConfig[5]+'",p_lan)+'";\n';
   apg += '           }\n'; //fine if
   apg += '           break;\n'; 
   apg += '      case "password" :  \n';
   apg += '           if(document.forms[p_form].elements[i].value.length < 3)\n';   
   apg += '           {\n';   
   apg += '            validFlag = false;\n';
   apg += '            diag = "'+pickLan("Attenzione!! Digitare Password&Attention, please!! Enter Password",p_lan)+'";\n';
   apg += '           }\n'; //fine if
   apg += '           break;\n'; 
   if (p_uni == 'all') 
   {          
   apg += '      case "select-one" :  \n';
   apg += '           if(document.forms[p_form].elements[i].options[document.forms[0].elements[i].selectedIndex].value ==\'\')\n';
   apg += '           {\n';
   apg += '            validFlag = false;\n';
   apg += '            diag = "'+pickLan("Attenzione!! Selezionare un Ateneo&Attention, please!! Select your University",p_lan)+'";\n'; 
   apg += '           }\n'; //fine if
   apg += '           break;\n';
   }
   apg += '      default:\n';
   apg += '     }\n';  // fine switch

   apg += '          if (!validFlag)\n'; 
   apg += '          {\n';
   apg += '            alert (diag);\n';
   apg += '            document.forms[p_form].elements[i].focus();\n';
   apg += '            continueLooping = false;\n';  
   apg += '            break;\n';
   apg += '          }\n'; 
   apg += '    }\n';  //fine ciclo for annidato
   apg += '  if  ( continueLooping == false ) break \n'; // artificio utilizzato per uscire da tutti i cicli loop innestati nel caso validflag = false
   apg += '  }\n';  //fine ciclo for esterno   
   apg += '  return validFlag;\n';   
   apg += ' }\n';  
   apg += '//                            ::::::::::::::::::::::::\n'; 
//
   apg += '//\n';   	
//   
   if (p_uni == 'all') 
   {     
   apg += '//\n';  
   apg += '// restituisce la sigla dell’Università selezionata nel menu a tendina \n';  
   apg += '// della finestra di autenticazione \n';
   apg += '//\n';  
   apg += ' function readSelUni()\n';
   apg += ' {\n';
   apg += '    var seluni=\'\';\n';
   apg += '    seluni = document.forms[0].uni.options[document.forms[0].uni.selectedIndex].value;\n';   
   apg += '    return seluni.toLowerCase();\n';
   apg += ' }\n';
   apg += '//                            ::::::::::::::::::::::::\n';  
   apg += '//\n';    
   apg += '//imposta l’URL del tag ACTION in base all’università selezionata \n';   
   apg += '//\n';  
   apg += ' function setAction()\n';
   apg += ' {\n';
   apg += '  document.forms[1].action = window.opener.strReplace(document.forms[1].action,"$UNI",readSelUni());\n';
// apg += '  alert("action="+document.forms[1].action);\n';
   apg += ' }\n';
   apg += '//                            ::::::::::::::::::::::::\n';
   }
   apg += '//\n';  
   apg += '//\n';   
   apg += '//\n';   
   apg += ' function preSubmit()\n';
   apg += ' {\n';
   apg += '  if ( checkFields () ) \n';
    apg += '  {\n'; 
     apg += 'document.getElementById("WSA").style.display =  "block" ;';
//     if (p_uni == 'pal') 
//   {  
//      apg += '  AttendiPal();\n';
//        }  
//    
//          
   if (p_uni == 'all') 
   {                 
   apg += '  setAction();\n';
     }  
   apg += '  return true;\n';
   apg += '  }\n';
   apg += '   else return false;\n';
   apg += ' }\n';
   apg += '//                            ::::::::::::::::::::::::\n'; 
     
   apg += '</script>\n';
   
   write (apg);
   
   apg = '</HEAD>\n';        
   apg += '<BODY BACKGROUND="'+$IMGDIR+'bg_griven.gif"\n';
   apg += ' onload="self.focus();self.document.forms[0].elements[0].focus();" >\n';
   write (apg);
//
// genera il codice HTML che mostra l'intestazione della form di richiesta autenticazione
//
   apg  = '<CENTER>\n';
   apg +=  '<TABLE class="TB_win" BORDER=0 CELLSPACING=2 >\n';
   apg += '<TR><TD COLSPAN=3 ALIGN="CENTER">\n';
   apg += '    <table BORDER=0 CELLPADDING=0 CELLSPACING=1>\n';// Inizio tab. del tit. window + logo AreaUte
   apg += '     <tr>\n';
   apg += '      <td VALIGN="TOP" ALIGN="CENTER"><IMG SRC="'+$IMGDIR+'au_LAU.gif" VALIGN="TOP" BORDER=0 >&nbsp;&nbsp;&nbsp;</td>\n';
   apg += '      <td VALIGN="MIDDLE" ALIGN="CENTER" NOWRAP ><font class="stytit">'+myserWConfig[1]+'</font></td>\n';
   apg += '      <td VALIGN="TOP" ALIGN="CENTER">&nbsp;&nbsp;&nbsp;<IMG SRC="'+$IMGDIR+'au_LAU.gif"  VALIGN="TOP" BORDER=0 ></td>\n'; 
   apg += '     </tr>\n';
//
// segue descrizione per esteso dell'Ateneo prescelto
//   
   if (p_uni != 'all') 
   { 
    apg +=  '    <tr>\n';
    apg += '      <td VALIGN=TOP ALIGN=center COLSPAN=3 width="100%"> <font class=\'styuni\'>'+myserWConfig[7]+'</font></td>\n'; 
    apg += '     </tr>\n'; 
   }
   write(apg);
//
// genera il codice HTML che mostra i campi della form di richiesta autenticazione
//
   var nfrm = 0;
   apg  = '    </table></TD>\n';// Fine tab. del tit. window + logo AreaUte   
   apg += '</TR>\n';
   apg += ' <TR bgcolor="#EEEEEE">\n';
   apg += ' <TD align="center" valign="middle" width=25%><IMG SRC="'+$IMGDIR+'keyu.gif" ALIGN="TOP" BORDER=0></TD>\n';  
   apg += ' <TD align="center" width=50% class="styeti">\n';
   write(apg);
   if (p_uni == 'all') 
   {
     writeln('<FORM NAME="form'+nfrm+'" METHOD="POST">');

     apg  = pickLan('Ateneo&University',p_lan)+'\n';
     apg += '  <BR>\n'; 
     apg += '  <SELECT NAME="uni">\n';
     apg += '  <option value="">&nbsp;-&nbsp;'+pickLan('Seleziona il tuo Ateneo&Select your University',p_lan)+'&nbsp;-&nbsp;</option>\n';
//   
// popola la lista di selezione dell'Ateneo con gli atenei idonei
// per il servizio corrente
//
     for (i=0; i < serWuniConfig.length-2; i++) 
     { 
     apg += '  <OPTION VALUE="'+serWuniConfig[i]+'">'+pickLan(uniConfig[serWuniConfig[i]],p_lan)+'</OPTION>\n';
     }
     apg += '  </SELECT>\n';
     apg += '  <BR>\n';
   apg += '</FORM>\n';
   write(apg);   
   nfrm ++; 
   }     
   writeln('<FORM NAME="form'+nfrm+'" METHOD="POST" ACTION="'+myserWConfig[3]+'" onSubmit="return preSubmit();">');   
   apg  = '    '+myserWConfig[5]+'\n';
   apg += '    <BR>\n';
   apg += '    <INPUT TYPE="text" NAME="user" size="'+myserWConfig[6]+'" maxlength="'+myserWConfig[6]+'">\n';
   apg +=  '   <BR><BR>\n';
   apg += '     Password \n';
   apg +=  '   <BR>\n';
   apg += '    <INPUT TYPE="password" NAME="pass" size="24" maxlength="20">\n';
//
      if ( myserWConfig[4].length > 0 ) 
     { 
       pos = myserWConfig[4].indexOf('=');           
       apg += '<INPUT TYPE="hidden" NAME="'+myserWConfig[4].substring(0,pos)+'" VALUE="'+myserWConfig[4].substring(pos+1)+'">\n';
     }
//
   if (navigator.appName=='Netscape') 
//      { callfrom ='BN'       } 
     { callfrom ='A'       }	   
   else {callfrom ='B'} ;
   apg += '<INPUT TYPE="hidden" NAME="p_callfrom" VALUE="'+callfrom+'">\n';   
   apg += '<CENTER>\n';
   apg += '<BR>\n';
   apg += '&nbsp;<INPUT class="btn1" TYPE="submit" VALUE="LOGIN">&nbsp;&nbsp;\n';
   apg += '<INPUT class="btn1" TYPE="reset" VALUE="'+pickLan('ANNULLA&RESET',p_lan)+'&nbsp;">\n';
   apg += '</CENTER>\n';
   apg += '<BR>\n';   
   apg += '</TD>\n';
   apg += '<TD align=center valign=middle width=25%><IMG SRC="'+$IMGDIR+'keyu.gif" ALIGN="TOP" BORDER=0 ></TD>\n';
   apg += '</TR>\n';
   apg += '</FORM>\n';
   write(apg);
//
// eventuale notifica all'utente di autenticazione fallita 
//
    switch (p_fu)   {         //inizio switch
    	 
     case "KO1" :
      msg = pickLan('Accesso negato: '+myserWConfig[5]+' e/o Password non valide!&Access denied: Invalid '+myserWConfig[5]+' and/or Password!',p_lan); 
      break;
      
     case "KO2" :
      msg = pickLan('Accesso negato: Utente non ancora abilitato!&Access denied: user not yet qualified!',p_lan);
      break; 
     default :
                }           //fine switch
   if (msg != '')
   {            
    apg = '<tr><td colspan=3 bgcolor="#f7f5ea" align=center>\n'; 
    apg += '<blink><font class=\'stymsg\'>'+msg+'</blink></b></td>\n';
    apg += '</tr>\n'; 
    write(apg);
   }

    apg = '<tr id=\'WSA\' style="display:none"> <td colspan=3 bgcolor="#f7f5ea" align=center>\n'; 
    apg += '<blink><font class=\'stymsg\'>ATTENDERE PREGO : Connecting ...</blink></b></td>\n';
    apg += '</tr>\n'; 
    write(apg);

   
   writeln('</TABLE>');
   writeln('</CENTER>');
   writeln('</BODY></HTML>'); 	  
   close();
  }
 }
//                             :::::::::::::::::::::::::
//
// apre la finestra di autenticazione utente e carica la corrispondente pagina 
// nella versione della lingua corrente
// per il servizio corrente e l'ateneo corrente 
// Parametri :
// - p_sig = sigla del servizio
// - p_uni = sigla dell'ateneo
// - p_lan = sigla della lingua
// - p_fu = indicatore dell'esito autenticazione
// 
// Parametri :
// - p_fu = indicatore dell'esito autenticazione
//
 function openWinaut(p_sig,p_uni,p_lan,p_fu) 
 {
  var theURL ='';
  var winname = 'winaut';
  var h = 320 ; // altezza della window da adattare alla presenza o assenza della tendina di selezione Ateneo
  var w = 422;  // larghezza della window
//  
// la "height" della nuova window viene adattata alla assenza della tendina di selezione Ateneo
//
  if (p_uni != 'all')
  {
   h = 255;	
  }
//
  var features = 'toolbar=no,status=no,width='+w+',height='+h+',top='+(screen.height-h)/2+',left='+(screen.width-w)/2+',resizable=yes,scrollbars=no';
  winaut = window.open('',winname,features); //apertura di una nuova finestra;                                               
/*   
  alert ('la width del mio schermo è:'+ screen.width
        +'\n la height invece è:'+ screen.height);
*/       
       
  crea_winaut(p_sig,p_uni,p_lan,p_fu); //chiamata alla funzione che genera la pagina HTML contenente richiesta di autenticazione utente 
 }
// 
//                             :::::::::::::::::::::::::

