Dunque, il calendario che ho io è un misto tra php e js. phpperché è tramite quello che crei il calendario, e js perché è tramite quello che selezionando una data ti si chiude l'esploso con il calendario e ti riempie il campo di testo.
Dunque, ti posto addirittura tutto il codice che uso io, non devi far altro che incollarlo da qualche parte e salvarlo.
Questo è lo script completo del calendario [per come è strutturato lo script fai in modo che il solo calendario si apra in popup]
codice:
<link href="up.css" rel="stylesheet" type="text/css">
<script language="Javascript">
function Selezionato(data)
{
window.opener.document.form1.data.value = data;
window.close();
}
</script>
<?
//----------------- This function is to do the HTML header chore ---------------------
function print_HTML_header()
{
global $flag;
/* echo "Mese: ".$_GET['month'];
echo "
Anno: ".$_GET['year']; */
$flag = (isset($_GET['month']) && ($_GET['month'] <> date("n") || $_GET['year'] <> date("Y"))) ? 1 : 0;
echo "<HTML>\n<HEAD>\n<STYLE>\n".
"\n</STYLE>".
"<TITLE>Calendario\n</TITLE>\n</HEAD>\n<BODY BACKGROUND='images/bg.gif'>\n\n".
"<P ALIGN='center' CLASS='content'>Seleziona la data in cui pubblicare la news:</P>";
}
//----------------- Funzione per la chiusura dei tag HTML -----------------//
function print_HTML_footer()
{
echo "</BODY></HTML>";
}
//----------------- Funzione che stampa il calendario -----------------//
function print_calendar($mon,$year)
{
global $dates, $first_day, $start_day, $flag;
$first_day = mktime(0,0,0,$mon,1,$year);
$start_day = date("w",$first_day);
$res = getdate($first_day);
$month_name = $res["month"];
$no_days_in_month = date("t", $first_day); // t -> numero dei giorno del mese
//Controllo se il primo giorno del mese è una Domenica altrimenti riempio di spazi fino ad arrivare al primo giorno
for ($i = 1; $i <= $start_day;$i++)
$dates[1][$i] = " ";
$row = 1;
$col = $start_day + 1;
$num = 1; //contatore dei giorni del mese
while($num <= 31){
if ($num > $no_days_in_month) break; //se non ci sono più giorni nel mese esco da ciclo
else{
$dates[$row][$col] = $num;
if (($col + 1) > 7){ //se sono arrivato alla fine della settimana devo scendere di una riga
$row += 1;
$col = 1;
}else
$col += 1;
$num += 1;
}//fine if-else
}//fine while
$mon_num = date("n",$first_day); //calcolo del numero del mese -> n = senza eventuali 0
$temp_yr = $next_yr = $prev_yr = $year; //imposto l'anno di visualizzazione
$prev = $mon_num - 1;
$next = $mon_num + 1;
//Se Gennaio è il mese corrente imposto il mese precedente a Dicembre dell'anno precedente
if ($mon_num == 1){
$prev_yr = $year - 1;
$prev = 12;
}
//Se il dicembre è il mese corrente imposto il mese successivo a Gennaio dell'anno successivo
if ($mon_num == 12){
$next_yr = $year + 1;
$next = 1;
}
echo "<DIV ALIGN='center'><TABLE BORDER=0 WIDTH=350 CELLSPACING=0";
//trasformo i mesi dal formato standard a quello italiano
if (date("F", $first_day) == 'January') { $mese = 'Gennaio'; $n = '01'; }
elseif (date("F", $first_day) == 'February') { $mese = 'Febbraio'; $n = '02'; }
elseif (date("F", $first_day) == 'March') { $mese = 'Marzo'; $n = '03'; }
elseif (date("F", $first_day) == 'April') { $mese = 'Aprile'; $n = '04'; }
elseif (date("F", $first_day) == 'May') { $mese = 'Maggio'; $n = '05'; }
elseif (date("F", $first_day) == 'June') { $mese = 'Giugno'; $n = '06'; }
elseif (date("F", $first_day) == 'July') { $mese = 'Luglio'; $n = '07'; }
elseif (date("F", $first_day) == 'August') { $mese = 'Agosto'; $n = '08'; }
elseif (date("F", $first_day) == 'September') { $mese = 'Settembre'; $n = '09'; }
elseif (date("F", $first_day) == 'October') { $mese = 'Ottobre'; $n = '10'; }
elseif (date("F", $first_day) == 'November') { $mese = 'Novembre'; $n = '11'; }
elseif (date("F", $first_day) == 'December') { $mese = 'Dicembre'; $n = '12'; }
//imposto le variabili per navigare negli anni
$anno_dopo = $year + 1;
$anno_prima = $year - 1;
//ricevo da GET la variabile contenente il mese in visualizzazione
$month = $_GET['month'];
if ($month == ''){ $month = date("n"); }
echo "\n<TR ALIGN='center'><TD BGCOLOR='#4682B4' ALIGN='left' CLASS='titoli'> ".
"<img src=\"images/prev_month.gif\" border=0 title=\"Mese precedente\"> </TD>".
"<TD COLSPAN=5 BGCOLOR='#4682B4' ALIGN='center' CLASS='corrente'>".$mese." ".$temp_yr."</TD>".
"<TD BGCOLOR='#4682B4' ALIGN='right' CLASS='titoli'> ".
"<img src=\"images/next_month.gif\" border=0 title=\"Mese Successivo\"> </TD></TR>";
echo "\n<TR ALIGN='center' CLASS='content'><TD CLASS='content' BGCOLOR=\"#87CEFA\">Dom</TD><TD CLASS='content' BGCOLOR=\"#87CEFA\">Lun</TD><TD CLASS='content' BGCOLOR=\"#87CEFA\">Mar</TD>";
echo "<TD CLASS='content' BGCOLOR=\"#87CEFA\">Mer</TD><TD CLASS='content' BGCOLOR=\"#87CEFA\">Gio</TD><TD CLASS='content' BGCOLOR=\"#87CEFA\">Ven</TD><TD CLASS='content' BGCOLOR=\"#87CEFA\">Sab</TD></TR>";
echo "<TR><TD COLSPAN=7> </TR><TR ALIGN='center'>";
$end = ($start_day > 4)? 6:5;
//ciclo che mi scrive i giorni!!
for ($row = 1; $row <= $end; $row++){
for ($col = 1; $col <= 7; $col++){
if ($dates[$row][$col] == '') $dates[$row][$col] = ' ';
if (!strcmp($dates[$row][$col], ' ')) $count += 1;
$t = $dates[$row][$col];
$var = $t.'/'.$mon.'/'.$year;
//Controllo se la data è oggi la evidenzio
if (($t == date("j")) && ($mon == date("n")) && ($year == date("Y"))){
echo "\n<TD CLASS='corrente' BGCOLOR=\"#4682B4\">";
echo "<a href=\"javascript:Selezionato('$var')\" TITLE=\"$var\">";
echo $t."</a></TD>";
}else{ //Se il giorno non c'è metto uno spazio
echo "\n<TD CLASS='titoli' BGCOLOR=\"#87CEFA\">".(($t == " " )? "" :"<a href=\"javascript:Selezionato('$var')\" TITLE=\"$var\">".$t)."</a></TD>";
}
}//fine for -colonne
if (($row + 1) != ($end+1))
echo "</TR>\n<TR ALIGN='center'>";
else
echo "</TR>";
}//fine for - righe
echo "<TR><TD ALIGN=\"left\" BGCOLOR=\"#4682B4\"><a href=\"phpcalendar.php?month=$month&year=$anno_prima\" title=\"Anno precedente\"><img src=\"images/prev_year.gif\" border=0 title=\"Anno precedente\"></a></TD><TD COLSPAN=5 BGCOLOR=\"#4682B4\"></TD><TD ALIGN=\"right\" BGCOLOR=\"#4682B4\"><a href=\"phpcalendar.php?month=$month&year=$anno_dopo\" title=\"Anno Successivo\"><img src=\"images/next_year.gif\" border=0 title=\"Anno successivo\"></a></TD></TR>";
echo "\n</TABLE>
";
if ($flag == '1') echo "<A HREF=\"phpcalendar.php\" CLASS=\"content\">Visualizza il mese corrente</A></DIV>";
}
//----------Main Loop-----------
//Se il mese non è presente lo setto a quello corrente
$month = (empty($month)) ? date("n") : $month;
//Se l'anno non è presente lo setto a quello corrente
$year = (empty($year)) ? date("Y") : $year;
print_HTML_header();
print_calendar($month,$year);
print_HTML_footer();
?>
Ci sono delle cose che tu non vedrai nel tuo calendario, tipo le immagini e le formattazioni dei testi con i css come le ho io. Se non sbaglio però ti servono solo un paio di classi css:
codice:
.content {font-family: Verdana; font-size: 9pt; color: #000000; text-decoration: none;}
.content a {font-family: Verdana; font-size: 9pt; color: #0000CC; text-decoration: none;}
.content a:hover {font-family: Verdana; font-size: 9pt; color: #0000FF; text-decoration: none;}
.corrente {font-family: Verdana; font-size: 12pt; color: #FFFFFF; text-decoration: none;}
.corrente a {font-family: Verdana; font-size: 12pt; color: #FFFFFF; text-decoration: none;}
.corrente a:hover {font-family: Verdana; font-size: 12pt; color: #FFFFFF; text-decoration: none;}
Mettile al posto della mia prima riga racchiuse tra i tag <style></style>, e dagli le proprietà che preferisci.
Per le immagini, scarica quelle che vuoi, non sono importanti 
La funzione js che vedi è quella che ti permette di chiudere la popup con il calendario e di riempire il campo data. Te la riporto qui sotto e te la spiego:
codice:
function Selezionato(data)
{
window.opener.document.form1.data.value = data;
window.close();
}
</script>
Questa funzione ti setta il campo data presente nella form [che ha come nome form1] della opener [che è la pagina da cui hai aperto il tuo calendarietto] con la data selezionata. Io la riempio direttamente con la data in formato italiano, vedi tu se vuoi mantenerlo o cambiarlo, a tua discrezione 
Abbi l'accortezza di cambiare i nomi dei campi, form compreso, e di settarli come i tuoi, altrimenti non funziona.
Giusto per finire ti posto anche il link con cui dovrai aprire il calendario.
Nella pagina con la form metti, magari in parte al campo che conterrà la data, questo link:
La funzione openPop è un altro js e ti apre il calendario in una finestrella di dimensioni predefinite. Metti la funzione nella pagina in cui hai il form:
codice:
<script type="text/javascript">
function openPop(theURL,winName,features) { //1.0
window.open(theURL,winName,features);
}
</script>
Detto questo penso di averti detto e spiegato tutto. Se hai problemi posta pure.
Buon lavoro!