Wrox Home  
Search P2P Archive for: Go

  Return to Index  

javascript thread: FW: Javascript - Calender Control


Message #1 by danielw@w... on Mon, 17 Jul 2000 17:51:13
----Original Message-----
From: Subhas Chakraborty [mailto:chakrabortysubhas@h...]
Sent: 17 July 2000 10:32
To: charlottes@w...
Subject: Javascript - Calender Control

I have made a calender control using javascript with ASP and sending this
along with source code for use in your site as a help material. This 
control
is working fine with IE5 but not with Netscape 4. Please help me with a 
browser independent solution.
You may mail me also at subhasc@t...

Subhas Chakraborty.

TestDT.HTM:++++++++++++++++++++++++++++++++++++++++++
HTML>
<script language=javascript>
var myCalender = new Object;
	function getDate(target) {
	
	myCalender.date="";
    
	result=showModalDialog("calender.asp" , 
myCalender,"dialogheight:18em;dialogwidth:20em;statusbar:no;toolbar:no;menubar:no;location:no");
	date = myCalender.date;
	document.all(target).value=date;
   	}
</script>   	
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE></TITLE>
</HEAD>
<BODY>
<br>
<br>
<b>Insert Date:</b>
<input type="text" name="dt" readonly>
<input type="button" value="Show Calender" onclick="getDate('dt')">
</BODY>
</HTML>


Calendar.ASP:+++++++++++++++++++++++++++++++++++++++++++++++++

<%@ Language=VBScript %>
<HTML>
<script language=javascript>
function formatCal() {
var now =new Date();
var m = now.getMonth();
var y=now.getYear();
var d=getDays(m,y);
var firstDayOfMonth=new Date(y,m,1);
var firstDay=firstDayOfMonth.getDay()+1;
//alert(firstDay);
	calcDays(d,firstDay);
	document.frmcal.yr.value=y;
	document.frmcal.month.options[m].selected=true;
}

function isLeapyear(y) {
	if(y%100==0) {
		if(y%400==0)
		return true;
		}
	else if(y%4==0)
		return true;
	else
		return false;		 
}
function getDays(m,y) {
var ar = new Array();
    ar[0]=31;
    ar[1]=isLeapyear(y)?29:28;
    ar[2]=31;
    ar[3]=30;
    ar[4]=31;
    ar[5]=30;
    ar[6]=31;
    ar[7]=31;
    ar[8]=30;
    ar[9]=31;
    ar[10]=30;
    ar[11]=31;
    
return ar[m];
}
function changeCalender() {
var y=document.frmcal.yr.value;
var m=document.frmcal.month.value;
document.frmcal.up.disabled=false;
document.frmcal.down.disabled=false;
if(m==11)
		document.frmcal.up.disabled=true;
else if(m==0)
		document.frmcal.down.disabled=true;
var firstDayOfMonth=new Date(y,m,1);
var firstDay=firstDayOfMonth.getDay()+1;		
var d=getDays(m,y);
calcDays(d,firstDay);
}
function calcDays(d,firstday){
	var exday;
	exday=d+firstday-1;
	
	var nm;
	var j;
	var count;
	
	for(j=1;j<=35;j++)
	{
	
	nm="day" + j;
		document.frmcal(nm).disabled=false;
		
		document.frmcal(nm).value="";
	}	
	for(j=firstday;j<=35;j++)
	{
	
	nm="day" + j;
		//document.frmcal(nm).disabled=false;
		if(j%7==1)
			document.frmcal(nm).style.color="red"
			document.frmcal(nm).value=(j-firstday+1);
	}
	
	/*for(i=d+1;i<=35;i++){
		nm="day" + i;
		document.all(nm).value="";
		document.all(nm).disabled=true;
		
	}*/
	count=1;
	if(exday > 35) {
		//alert(j);
	for(k=j;k<=exday;k++) {
		nm="day" + count;
		//document.frmcal(nm).disabled=false;
		if(count%7==1)
			document.frmcal(nm).style.color="red";
		document.frmcal(nm).value=(k-firstday+1);
		count++;
	}
	}
		
	for(i=d+firstday;i<=35;i++){
		nm="day" + i;
		document.frmcal(nm).value=""; 
		document.frmcal(nm).disabled=true;
		}										
	for(i=1;i<=35;i++){
		nm="day" + i;
		if(document.frmcal(nm).value=="") {
			document.frmcal(nm).value="*"
			document.frmcal(nm).disabled=true;
			}
		
	}
}

function increaseMonth() {
if(checkYear()==false)
	return;
if(document.frmcal.down.disabled)
	document.frmcal.down.disabled=false;
document.frmcal.month.value++;
document.frmcal.month.options[document.frmcal.month.value].selected=true;
if(document.frmcal.month.value==11)
	document.frmcal.up.disabled=true;
	
	var d=getDays(document.frmcal.month.value,document.frmcal.yr.value);
	var firstDayOfMonth=new 
Date(document.frmcal.yr.value,document.frmcal.month.value,1);
	var firstDay=firstDayOfMonth.getDay()+1;
	calcDays(d,firstDay);
}

function decreaseMonth() {
if(checkYear()==false)
	return;
if(document.frmcal.up.disabled)
	document.frmcal.up.disabled=false;
document.frmcal.month.value--;
document.frmcal.month.options[document.frmcal.month.value].selected=true;
if(document.frmcal.month.value==0)
	document.frmcal.down.disabled=true;
	var d=getDays(document.frmcal.month.value,document.frmcal.yr.value);
	var firstDayOfMonth=new 
Date(document.frmcal.yr.value,document.frmcal.month.value,1);
	var firstDay=firstDayOfMonth.getDay()+1;
	calcDays(d,firstDay);
}
function yearCheck() {
    if(document.frmcal.yr.value.length==2 && document.frmcal.yr.value==0)
          document.frmcal.yr.value="20" + document.frmcal.yr.value;
    else if(document.frmcal.yr.value.length==2)
           document.frmcal.yr.value="19" + document.frmcal.yr.value;
	if (document.frmcal.yr.value<1900 || document.frmcal.yr.value>9999) {
		alert("Insert Proper Year!!");
		document.frmcal.yr.focus();
		document.frmcal.yr.select();
		return;
	}		
	if(document.frmcal.yr.value==1900)
		document.frmcal.downyr.disabled=true;
	if(document.frmcal.yr.value==9999)
		document.frmcal.upyr.disabled=true;
	var d=getDays(document.frmcal.month.value,document.frmcal.yr.value);
	var firstDayOfMonth=new 
Date(document.frmcal.yr.value,document.frmcal.month.value,1);
	var firstDay=firstDayOfMonth.getDay()+1;
	calcDays(d,firstDay);	
		
}
function checkYear() {
	
	if((document.frmcal.yr.value < 1900) || (document.frmcal.yr.value > 9999)) 
{
		alert("Insert proper year!");
		document.frmcal.yr.focus;
		return false;
		}
		return true;
}
function increaseYr() {
document.frmcal.yr.value++;
document.frmcal.downyr.disabled=false;
if(document.frmcal.yr.value==9999)
	document.frmcal.upyr.disabled=true;
	var d=getDays(document.frmcal.month.value,document.frmcal.yr.value);
	var firstDayOfMonth=new 
Date(document.frmcal.yr.value,document.frmcal.month.value,1);
	var firstDay=firstDayOfMonth.getDay()+1;
	calcDays(d,firstDay);
}

function decreaseYr() {
document.frmcal.yr.value--;
document.frmcal.upyr.disabled=false;
if(document.frmcal.yr.value==1900)
	document.frmcal.downyr.disabled=true;
	var d=getDays(document.frmcal.month.value,document.frmcal.yr.value);
	var firstDayOfMonth=new 
Date(document.frmcal.yr.value,document.frmcal.month.value,1);
	var firstDay=firstDayOfMonth.getDay()+1;
	calcDays(d,firstDay);
}


function getDate(dayOfMonth){
		var mon=document.frmcal.month.options[document.frmcal.month.value].text;
		var date = mon + "-" + document.frmcal("day" + dayOfMonth).value + "-" + 
document.frmcal.yr.value;
		window.returnValue = true;
		window.dialogArguments.date = date;
		window.close();
}

function doCancel() {
    window.returnValue = false;
    window.close();
}
</script>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>Calender</TITLE>
</HEAD>
<body onLoad="formatCal()">
<form name="frmcal">
<table style="width:220" align=center border=1 bgcolor=PapayaWhip>
<tr><td colspan=7 align=center bgcolor=SteelBlue><b>Year:</b><input 
type=text name="yr" style="width:60" onblur="yearCheck()">
<input type=button name="upyr" value="Up" style="width:50;height:22" 
onclick="increaseYr()">
<input type=button name="downyr" value="Down" style="width:50;height:22" 
onclick="decreaseYr()"></td></tr>
<tr><td colspan=7 align=center bgcolor=DarkTurquoise><input type=button 
name="down" value="<<" style="width:25" onclick="decreaseMonth()">
<b>Month:</b><select name="month" onchange="changeCalender()" 
style="width:80">
		<option value=0>Jan</option>
		<option value=1>Feb</option>
		<option value=2>Mar</option>
		<option value=3>Apr</option>
		<option value=4>May</option>
		<option value=5>Jun</option>
		<option value=6>Jul</option>
		<option value=7>Aug</option>
		<option value=8>Sep</option>
		<option value=9>Oct</option>
		<option value=10>Nov</option>
		<option value=11>Dec</option>
		</select>
		<input name="up" type=button  value=">>" style="width:25" 
onclick="increaseMonth()">
		</td>
		<tr>
		<td><font color=red>Sun</font></td>
		<td><font color=blue>Mon</font></td>
		<td><font color=blue>Tue</font></td>
		<td><font color=blue>Wed</font></td>
		<td><font color=blue>Thu</font></td>
		<td><font color=blue>Fri</font></td>
		<td><font color=green>Sat</font></td>
		</tr>
<% dim k
	k=1 
	for i=1 to 5%>
<tr>

	<%for j=1 to 7%>
		<td align=center><input type=button name="day<%=k%>"  
style="width:22;background-color:white" onclick='getDate("<%=k%>")'></td>
	<%k=k+1
	next
	%>	
	</tr>
	<%next%>			
</table>
</form>
</body>
</HTML>



  Return to Index