Ciao, ho un grosso problema con un programma in ASP del quale so, molto poco.
Per farla breve: il programma è stato creato all'epoca di windows XP, con il quale tutt'ora funziona "quasi perfettamente".
Il problema è nato con windows 7 per cui una funzione banale come il calendario risulta inutilizzabile.
Sto migrando tutto verso php, ma fino a che non è finito il lavoro, devo far funzionare questa versione.
e il richiamocodice:<%@LANGUAGE="JAVASCRIPT" CODEPAGE="1252"%> <% var Giorni="" var GS=new Array(); GS[1]="L"; GS[2]="M"; GS[3]="M"; GS[4]="G"; GS[5]="V"; GS[6]="S"; GS[7]="D"; var TopInit=80; var LeftInit=20; var AltezzaLayer=22; var LarghezzaLayer=30; var LarghezzaLayerMese=100; var TopMesiInit=20; var Oggi; var re = new RegExp('^((0?[1-9])|([12][0-9])|(3[01]))[/]((0?[1-9])|(1[012]))[/]((19)|(20))([0-9]{2})$'); if (re.test(Request.QueryString("Value"))){ var tmp=Request.QueryString("Value")+""; var i=tmp.indexOf("/"); var gg=tmp.substr(0,i); var j=tmp.indexOf("/",i+1); var mm=tmp.substr(i+1,j-i-1); var aa=tmp.substr(j+1); Oggi=new Date(aa,mm-1,gg); }else{ Oggi=new Date(); } var DataIniziale= (Oggi.getMonth()+1) + "," + Oggi.getFullYear() + "," + Oggi.getDate(); var AnnoIniziale=Oggi.getFullYear(); var tmp; var Fld2Fill=Request.QueryString("Fld"); var Mesi=new Array(); Mesi[1]="gennaio"; Mesi[2]="febbraio"; Mesi[3]="marzo"; Mesi[4]="aprile"; Mesi[5]="maggio"; Mesi[6]="giugno"; Mesi[7]="luglio"; Mesi[8]="agosto"; Mesi[9]="settembre"; Mesi[10]="ottobre"; Mesi[11]="novembre"; Mesi[12]="dicembre"; var LeftMesi=(LarghezzaLayer*7) + LeftInit + 20 var tmpTopMesi=TopMesiInit; for (var i=1; i<13;i++){ if (i==Oggi.getMonth()+1){ Giorni+="<div class=divNorm id=M" + i + " style='position:absolute; width:" + (LarghezzaLayer*7) + "px; " + "height:" + AltezzaLayer + "px; z-index:1; left: " + LeftInit + "px; top: " + TopInit + "px;'>" + "<a href='javascript:' onclick='CambiaMese(" + i + ")'>" + Mesi[i] + "</a></div>\n"; TopInit+=AltezzaLayer; }else{ Giorni+="<div class=divNorm id=M" + i + " style='position:absolute; width:" + LarghezzaLayerMese + "px; " + "height:" + AltezzaLayer + "px; z-index:1; left: " + LeftMesi + "px; top: " + tmpTopMesi + "px;'>" + "<a href='javascript:' onclick='CambiaMese(" + i + ")'>" + Mesi[i] + "</a></div>\n"; tmpTopMesi+=AltezzaLayer; } } for (var i=1; i<8;i++){ tmp=(LarghezzaLayer*(i-1)) + LeftInit; Giorni+="<div class=divIntest style='position:absolute; width:" + LarghezzaLayer + "px; " + "height:" + AltezzaLayer + "px; z-index:1; left: " + tmp + "px; top: " + TopInit + "px;'>" + GS[i] + "</div>\n"; } for (var i=1; i<32;i++){ Giorni+="<div class=divNorm id=G" + i + " style='position:absolute; width:" + LarghezzaLayer + "px; " + "height:" + AltezzaLayer + "px; z-index:1; visibility: hidden; left: 1px; top: 1px;'>" + "<a href='javascript:' onclick='SetData(" + i + ")'>" + i + "</a></div>\n"; } for (var i=1; i<15;i++){ Giorni+="<div class=divNorm id=B" + i + " style='position:absolute; width:" + LarghezzaLayer + "px; " + "height:" + AltezzaLayer + "px; z-index:1; visibility: hidden; left: 1px; top: 1px;'>" + " </div>\n"; } var scpt = "var TopInit=" + (TopInit+AltezzaLayer) + ";\n" + "var LeftInit=" + LeftInit + ";\n" + "var AltezzaLayer=" + AltezzaLayer + ";\n" + "var TopMeseInit=" + TopMesiInit + ";\n" + "var LeftMese=" + LeftMesi + ";\n" + "var Fld2Fill='" + Fld2Fill + "';\n" + "var LarghezzaLayerMese=" + LarghezzaLayerMese + ";\n" + "var LarghezzaLayer=" + LarghezzaLayer + ";\n"; %> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <link href="../CSS/calendario.css" rel="stylesheet" type="text/css"> </head> <script language="JavaScript"> <%=scpt%> var GiorniMese=new Array(); var Mese; var Anno; var Giorno; GiorniMese[1]=31; GiorniMese[2]=28; GiorniMese[3]=31; GiorniMese[4]=30; GiorniMese[5]=31; GiorniMese[6]=30; GiorniMese[7]=31; GiorniMese[8]=31; GiorniMese[9]=30; GiorniMese[10]=31; GiorniMese[11]=30; GiorniMese[12]=31; function ShowCal(mese,anno, giorno){ if (!((giorno+"")=="undefined")) Giorno=new Number(giorno); Mese=mese; Anno=anno; var CurTop=TopInit; var CurLeft; var Data=new Date(anno,mese-1,1); var CurDay; //ricerca bisestile if (mese==2){ var d1=new Date(anno,mese-1,29); if (d1.getDate()==29){ GiorniMese[2]=29; }else{ GiorniMese[2]=28; } } //nascondo i layer vuoti for (var i=1;i<15;i++){ document.getElementById('B' + i).style.visibility="hidden"; } CurDay=Data.getDay()-1; if (CurDay==-1)CurDay=6; //layer vuoti all'inizio var cont=1; for (var i=0;i<CurDay;i++){ CurLeft=i * LarghezzaLayer + LeftInit; document.getElementById('B' + cont).style.visibility="visible"; document.getElementById('B' + cont).style.top=CurTop; document.getElementById('B' + cont).style.left=CurLeft; cont++; } CurLeft=CurDay * LarghezzaLayer + LeftInit; //layer con i giorni giusti var colore; for (var i=1;i<=GiorniMese[mese];i++){ document.getElementById('G' + i).style.visibility="visible"; document.getElementById('G' + i).style.top=CurTop; document.getElementById('G' + i).style.left=CurLeft; if (CurDay==5 || CurDay==6) colore="gray" else colore="white" if (i==Giorno) colore="yellow"; document.getElementById('G' + i).style.backgroundColor=colore; CurDay++; if (CurDay==7){ CurDay=0; CurTop+=AltezzaLayer; } CurLeft=CurDay * LarghezzaLayer + LeftInit; } //layer vuoti alla fine if (CurDay>0){ for (var i=CurDay;i<7;i++){ CurLeft=i * LarghezzaLayer + LeftInit; document.getElementById('B' + cont).style.visibility="visible"; document.getElementById('B' + cont).style.top=CurTop; document.getElementById('B' + cont).style.left=CurLeft; cont++; } } //nascondo i layer degli altri giorni for (var i=GiorniMese[mese]+1;i<=31;i++){ document.getElementById('G' + i).style.visibility="hidden"; } } function CambiaAnno(){ var re = new RegExp('^[0-9]{4}$'); if ((re.test(document.all.txtAnno.value))) { ShowCal(Mese,document.all.txtAnno.value); } } function PiuMenoAnno(val){ var re = new RegExp('^[0-9]{4}$'); if ((re.test(document.all.txtAnno.value))) { var tmp=new Number(Anno); tmp=tmp.valueOf() + val; document.all.txtAnno.value=tmp; ShowCal(Mese,tmp); } } function CambiaMese(m){ var tmpTopMesi=TopMeseInit; for (var i=1;i<13;i++){ if (i==m){ document.getElementById('M' + i).style.top=TopInit-2*AltezzaLayer; document.getElementById('M' + i).style.left=LeftInit; document.getElementById('M' + i).style.width=LarghezzaLayer*7; }else{ document.getElementById('M' + i).style.top=tmpTopMesi; document.getElementById('M' + i).style.left=LeftMese; document.getElementById('M' + i).style.width=LarghezzaLayerMese; tmpTopMesi+=AltezzaLayer; } } ShowCal(m,Anno); } function SetData(giorno){ var g; var m; if (giorno<10) giorno ='0'+giorno; if (Mese<10) Mese='0' + Mese; var ret=giorno + "/" + Mese + "/" + Anno; window.opener.document.getElementById(Fld2Fill).value=ret; //window.opener.SetData(ret); window.close(); } </script> <body onLoad="ShowCal(<%=DataIniziale %>)"> <div align="center" id="Layer1" style="position:absolute; width: <%=LarghezzaLayer*7 %>px; height:26px; z-index:1; left: <%=LeftInit%>px; top: 35px;"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Anno</strong> </font> <input onKeyUp="CambiaAnno()" onChange="CambiaAnno()" type="text" name="txtAnno" maxlength="4" size="5" value=<%=AnnoIniziale%>> <a href="javascript:" onClick="PiuMenoAnno(-1)" ><img src="../img/frecciecalendariogiu.GIF" alt="diminuisci anno" ></a> <a href="javascript:" onClick="PiuMenoAnno(1)" ><img src="../img/frecciecalendariosu.GIF" alt="aumenta anno" ></a> </div> <%=Giorni%> </body> </html>
Ringrazio anticipatamente tutti quelli che vorranno dare il loro suggerimento.codice:<script language="JavaScript"> function ApriCalendario(fld){ var alt=280; var larg=375; var left=(screen.width - larg) / 2; var top=(screen.height - alt) / 2; var str="left=" + left + ",top=" + top + ",status=no, " + "menubar=no,scrollbars=no,resizable=no,width=" + larg + ",height=" + alt; var str2="include/calendario.asp?Fld=" + fld + "&Value=" + document.all.item(fld).value; window.open(str2,"", str); } function CheckFieldDate(fld, descrizione){ var re = new RegExp('^((0[1-9])|([12][0-9])|(3[01]))[/-]((0[1-9])|(1[012]))[/-]((19)|(20))([0-9]{2})$'); if (!(re.test(fld.value))){ alert('Campo ' + descrizione + ': formato data non corretta'); fld.focus(); return false; }else{ return true; } } </script>![]()



Rispondi quotando
ero convinto di averlo scritto...