Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Chriss Miller on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Need help troubleshooting this ASAP Please

Status
Not open for further replies.

MrHelpMe

Technical User
May 1, 2001
203
CA
Hi everyone,
I have included the code for a script that I downloaded and now I need to customize it. What I need to do is in the time field at the bottom of this popup calendar, if the user types a single digit for the hour, it should populate my input box. Right now the user has to type a 02 for 2 o'clock(for example). I tried an lpad function but it didn;t work. Any ideas

Second question, how to I highlight just the current date or the selected day only. See what is happening when the user click the icon to activate the pop up the current date is highlighted in yellow, now if the user chooses any other day, the selection is highlighted in yellow also, but now that day selected remains highlighted for all months. So if today is Nov 8th and I scroll back to october, october 8th will be highlighted also and so forth I just want the date selected of whatever month chooses to be highlighted. Nothing else. Thanks everyone.




//Javascript name: My Date Time Picker
//Date created: 16-Nov-2003 23:19
//Scripter: TengYong Ng
//Website: //Copyright (c) 2003 TengYong Ng
//FileName: DateTimePicker.js
//Version: 0.8
//Contact: contact@rainforestnet.com
// Note: Permission given to use this script in ANY kind of applications if
// header lines are left unchanged.

//Global variables
var winCal;
var dtToday=new Date();
var Cal;
var docCal;
var MonthName=["January", "February", "March", "April", "May", "June","July",
"August", "September", "October", "November", "December"];
var WeekDayName=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];
var exDateTime;//Existing Date and Time

//Configurable parameters
var cnTop="200";//top coordinate of calendar window.
var cnLeft="500";//left coordinate of calendar window
var WindowTitle ="AIC DateTime Picker";//Date Time Picker title.
var WeekChar=2;//number of character for week day. if 2 then Mo,Tu,We. if 3 then Mon,Tue,Wed.
var CellWidth=20;//Width of day cell.
var DateSeparator="/";//Date Separator, you can change it to "/" if you want.
var TimeMode=12;//default TimeMode value. 12 or 24

var ShowLongMonth=true;//Show long month name in Calendar header. example: "January".
var ShowMonthYear=true;//Show Month and Year in Calendar header.
var MonthYearColor="black";//Font Color of Month and Year in Calendar header.
var WeekHeadColor="red";//Background Color in Week header.
var SundayColor="#6699FF";//Background color of Sunday.
var SaturdayColor="#6699FF";//Background color of Saturday.
var WeekDayColor="white";//Background color of weekdays.
var FontColor="black";//color of font in Calendar day cell.
//var TodayColor="#FFFF33";//Background color of today.
//var SelDateColor="white";//Backgrond color of selected date in textbox.
var YrSelColor="black";//color of font of Year selector.
var ThemeBg="";//Background image of Calendar window.
//end Configurable parameters
//end Global variable

function NewCal(pCtrl,pFormat,pShowTime,pTimeMode)
{
Cal=new Calendar(dtToday);
if ((pShowTime!=null) && (pShowTime))
{
Cal.ShowTime=true;
if ((pTimeMode!=null) &&((pTimeMode=='12')||(pTimeMode=='24')))
{
TimeMode=pTimeMode;
}
}
if (pCtrl!=null)
Cal.Ctrl=pCtrl;
if (pFormat!=null)
Cal.Format=pFormat.toUpperCase();

exDateTime=document.getElementById(pCtrl).value;
if (exDateTime!="")//Parse Date String
{
var Sp1;//Index of Date Separator 1
var Sp2;//Index of Date Separator 2
var tSp1;//Index of Time Separator 1
var tSp1;//Index of Time Separator 2
var strMonth;
var strDate;
var strYear;
var intMonth;
var YearPattern;
var strHour;
var strMinute;
var strSecond;
//parse month
Sp1=exDateTime.indexOf(DateSeparator,0)
Sp2=exDateTime.indexOf(DateSeparator,(parseInt(Sp1)+1));

if ((Cal.Format.toUpperCase()=="DDMMYYYY") || (Cal.Format.toUpperCase()=="DDMMMYYYY"))
{
strMonth=exDateTime.substring(Sp1+1,Sp2);
strDate=exDateTime.substring(0,Sp1);
}
else if ((Cal.Format.toUpperCase()=="MMDDYYYY") || (Cal.Format.toUpperCase()=="MMMDDYYYY"))
{
strMonth=exDateTime.substring(0,Sp1);
strDate=exDateTime.substring(Sp1+1,Sp2);
}
if (isNaN(strMonth))
intMonth=Cal.GetMonthIndex(strMonth);
else
intMonth=parseInt(strMonth,10)-1;
if ((parseInt(intMonth,10)>=0) && (parseInt(intMonth,10)<12))
Cal.Month=intMonth;
//end parse month
//parse Date
if ((parseInt(strDate,10)<=Cal.GetMonDays()) && (parseInt(strDate,10)>=1))
Cal.Date=strDate;
//end parse Date
//parse year
strYear=exDateTime.substring(Sp2+1,Sp2+5);
YearPattern=/^\d{4}$/;
if (YearPattern.test(strYear))
Cal.Year=parseInt(strYear,10);
//end parse year
//parse time
if (Cal.ShowTime==true)
{
tSp1=exDateTime.indexOf(":",0)
tSp2=exDateTime.indexOf(":",(parseInt(tSp1)+1));
strHour=exDateTime.substring(tSp1,(tSp1)-2);
Cal.SetHour(strHour);
strMinute=exDateTime.substring(tSp1+1,tSp2);
Cal.SetMinute(strMinute);
//strSecond=exDateTime.substring(tSp2+1,tSp2+3);
//Cal.SetSecond(strSecond);
}
}
winCal=window.open("","DateTimePicker","toolbar=0,status=0,menubar=0,fullscreen=no,width=285,height=265,resizable=0,top="+cnTop+",left="+cnLeft);
docCal=winCal.document;
RenderCal();
winCal.document.bgColor='#FFFFE9';

}

function RenderCal()
{
var vCalHeader;
var vCalData;
var vCalTime;
var i;
var j;
var SelectStr;
var vDayCount=0;
var vFirstDay;

docCal.open();
docCal.writeln("<html><head><title>"+WindowTitle+"</title>");
docCal.writeln("<script>var winMain=window.opener</script>");
docCal.writeln("</head><body bgColor='#FFFFE9' background='"+ThemeBg+"' link="+FontColor+" vlink="+FontColor+"><form name='Calendar'>");

vCalHeader="<table border=1 bgcolor='#FFFFE9' cellpadding=1 cellspacing=1 width='100%' align=\"center\" valign=\"top\">\n";
//Month Selector
vCalHeader+="<tr>\n<td colspan='7'><table border=0 width='100%' cellpadding=0 cellspacing=0><tr><td align='left'>\n";
vCalHeader+="<select name=\"MonthSelector\" onChange=\"javascript:winMain.Cal.SwitchMth(this.selectedIndex);winMain.RenderCal();\">\n";
for (i=0;i<12;i++)
{
if (i==Cal.Month)
SelectStr="Selected";
else
SelectStr="";
vCalHeader+="<option "+SelectStr+" value >"+MonthName+"\n";
}
vCalHeader+="</select></td>";
//Year selector
vCalHeader+="\n<td align='right'><a href=\"javascript:winMain.Cal.DecYear();winMain.RenderCal()\"><b><font color=\""+YrSelColor+"\"><</font></b></a><font face=\"Verdana\" color=\""+YrSelColor+"\" size=2><b> "+Cal.Year+" </b></font><a href=\"javascript:winMain.Cal.IncYear();winMain.RenderCal()\"><b><font color=\""+YrSelColor+"\">></font></b></a></td></tr></table></td>\n";
vCalHeader+="</tr>";
//Calendar header shows Month and Year
if (ShowMonthYear)
vCalHeader+="<tr><td colspan='7'><font face='Verdana' size='2' align='center' color='"+MonthYearColor+"'><b>"+Cal.GetMonthName(ShowLongMonth)+" "+Cal.Year+"</b></font></td></tr>\n";
//Week day header
vCalHeader+="<tr bgcolor="+WeekHeadColor+">";
for (i=0;i<7;i++)
{
vCalHeader+="<td align='center'><font face='Verdana' size='2'>"+WeekDayName.substr(0,WeekChar)+"</font></td>";
}
vCalHeader+="</tr>";
docCal.write(vCalHeader);

//Calendar detail
CalDate=new Date(Cal.Year,Cal.Month);
CalDate.setDate(1);
vFirstDay=CalDate.getDay();
vCalData="<tr>";
for (i=0;i<vFirstDay;i++)
{
vCalData=vCalData+GenCell();
vDayCount=vDayCount+1;
}
for (j=1;j<=Cal.GetMonDays();j++)
{
var strCell;
vDayCount=vDayCount+1;
if ((j==dtToday.getDate())&&(j==Cal.Date)&&(Cal.Month==dtToday.getMonth())&&(Cal.Year==dtToday.getFullYear()))
{
strCell=GenCell(j,true,'yellow');
}
else
{
if (j==Cal.Date)
{
for(k=1;k<=12;k++)
{
if(k==Cal.Month)
{
strCell=GenCell(j,true,'yellow');
}
else
{
strCell=GenCell(j,true,'white');
}
}
}
else
{
if (vDayCount%7==0)
strCell=GenCell(j,false,SaturdayColor);
else if ((vDayCount+6)%7==0)
strCell=GenCell(j,false,SundayColor);
else
strCell=GenCell(j,null,WeekDayColor);
}
}
vCalData=vCalData+strCell;

if((vDayCount%7==0)&&(j<Cal.GetMonDays()))
{
vCalData=vCalData+"</tr>\n<tr>";
}
}
docCal.writeln(vCalData);
//Time picker
if (Cal.ShowTime)
{
var showHour;
showHour=Cal.getShowHour();
vCalTime="<tr>\n<td colspan='7' align='right' bgcolor='#FFFFE9'>";
vCalTime+="<B>Time</B> ";
vCalTime+="<input type='text' name='hour' maxlength=2 size=1 style=\"WIDTH: 22px\" value="+showHour+" onchange=\"javascript:winMain.Cal.SetHour(this.value)\">";
vCalTime+=" : ";
vCalTime+="<input type='text' name='minute' maxlength=2 size=1 style=\"WIDTH: 22px\" value="+Cal.Minutes+" onchange=\"javascript:winMain.Cal.SetMinute(this.value)\">";
//vCalTime+=" : ";
//vCalTime+="<input type='text' name='second' maxlength=2 size=1 style=\"WIDTH: 22px\" value="+Cal.Seconds+" onchange=\"javascript:winMain.Cal.SetSecond(this.value)\">";
if (TimeMode==12)
{
var SelectAm =(parseInt(Cal.Hours,10)<12)? "Selected":"";
var SelectPm =(parseInt(Cal.Hours,10)>=12)? "Selected":"";

vCalTime+="<select name=\"ampm\" onchange=\"javascript:winMain.Cal.SetAmPm(this.options[this.selectedIndex].value);\">";
vCalTime+="<option "+SelectAm+" value=\"AM\">AM</option>";
vCalTime+="<option "+SelectPm+" value=\"PM\">PM<option>";
vCalTime+="</select>";
}
vCalTime+="\n</td>\n</tr>";
docCal.write(vCalTime);
}
//end time picker
docCal.writeln("\n</table>");
docCal.writeln("</form></body></html>");
docCal.close();
}

function GenCell(pValue,pHighLight,pColor)//Generate table cell with value
{
var PValue;
var PCellStr;
var vColor;
var vHLstr1;//HighLight string
var vHlstr2;
var vTimeStr;

if (pValue==null)
PValue="";
else
PValue=pValue;

if (pColor!=null)
vColor="bgcolor=\""+pColor+"\"";
else
vColor="";
if ((pHighLight!=null)&&(pHighLight))
{vHLstr1="color='red'><b>";vHLstr2="</b>";}
else
{vHLstr1=">";vHLstr2="";}

if (Cal.ShowTime)
{
vTimeStr="winMain.document.getElementById('"+Cal.Ctrl+"').value+=' '+"+"winMain.Cal.getShowHour()"+"+':'+"+"winMain.Cal.Minutes";
if (TimeMode==12)
vTimeStr+="+' '+winMain.Cal.AMorPM";
}
else
vTimeStr="";
PCellStr="<td "+vColor+" width="+CellWidth+" align='center'><font face='verdana' size='2'"+vHLstr1+"<a href=\"javascript:winMain.document.getElementById('"+Cal.Ctrl+"').value='"+Cal.FormatDate(PValue)+"';"+vTimeStr+";window.close();\">"+PValue+"</a>"+vHLstr2+"</font></td>";
return PCellStr;
}

// Zero padding
function LeftPad(string, newlength) {
var pad = "";
var len = newlength-String(string).length;
var i;
for (i = 0; i<len; i++) {
pad += '0';
}
return pad+string;
}


function Calendar(pDate,pCtrl)
{
//Properties
this.Date=pDate.getDate();//selected date
this.Month=pDate.getMonth();//selected month number
this.Year=pDate.getFullYear();//selected year in 4 digits
this.Hours=pDate.getHours();

if (pDate.getMinutes()<10)
this.Minutes="0"+pDate.getMinutes();
else
this.Minutes=pDate.getMinutes();

//if (pDate.getSeconds()<10)
// this.Seconds="0"+pDate.getSeconds();
//else
// this.Seconds=pDate.getSeconds();

this.MyWindow=winCal;
this.Ctrl=pCtrl;
this.Format="ddMMyyyy";
this.Separator=DateSeparator;
this.ShowTime=false;
if (pDate.getHours()<12)
this.AMorPM="AM";
else
this.AMorPM="PM";
}

function GetMonthIndex(shortMonthName)
{
for (i=0;i<12;i++)
{
if (MonthName.substring(0,3).toUpperCase()==shortMonthName.toUpperCase())
{ return i;}
}
}
Calendar.prototype.GetMonthIndex=GetMonthIndex;

function IncYear()
{ Cal.Year++;}
Calendar.prototype.IncYear=IncYear;

function DecYear()
{ Cal.Year--;}
Calendar.prototype.DecYear=DecYear;

function SwitchMth(intMth)
{ Cal.Month=intMth;}
Calendar.prototype.SwitchMth=SwitchMth;

function SetHour(intHour)
{
var MaxHour;
var MinHour;
if (TimeMode==24)
{ MaxHour=23;MinHour=0}
else if (TimeMode==12)
{ MaxHour=12;MinHour=1}
else
alert("TimeMode can only be 12 or 24");
var HourExp=new RegExp("^\\d\\d$");
//alert(intHour);
if (HourExp.test(intHour) && (parseInt(intHour,10)<=MaxHour) && (parseInt(intHour,10)>=MinHour))
{
if ((TimeMode==12) && (Cal.AMorPM=="PM"))
{
if (parseInt(intHour,10)==12)
Cal.Hours=12;
else
Cal.Hours=parseInt(intHour,10)+12;
//alert(Cal.Hours);
}
else if ((TimeMode==12) && (Cal.AMorPM=="AM"))
{
if (intHour==12)
intHour-=12;
Cal.Hours=parseInt(intHour,10);
}
else if (TimeMode==24)
Cal.Hours=parseInt(intHour,10);
}
}
Calendar.prototype.SetHour=SetHour;

function SetMinute(intMin)
{
var MinExp=new RegExp("^\\d\\d$");
if (MinExp.test(intMin) && (intMin<60))
Cal.Minutes=intMin;
}
Calendar.prototype.SetMinute=SetMinute;

//function SetSecond(intSec)
//{
// var SecExp=new RegExp("^\\d\\d$");
// if (SecExp.test(intSec) && (intSec<60))
// Cal.Seconds=intSec;
//}
//Calendar.prototype.SetSecond=SetSecond;

function SetAmPm(pvalue)
{
this.AMorPM=pvalue;
if (pvalue=="PM")
{
this.Hours=(parseInt(this.Hours,10))+12;
if (this.Hours==24)
this.Hours=12;
}
else if (pvalue=="AM")
this.Hours-=12;
}
Calendar.prototype.SetAmPm=SetAmPm;

function getShowHour()
{
var finalHour;
if (TimeMode==12)
{
if (parseInt(this.Hours,10)==0)
{
this.AMorPM="AM";
finalHour=parseInt(this.Hours,10)+12;
}
else if (parseInt(this.Hours,10)==12)
{
this.AMorPM="PM";
finalHour=12;
}
else if (this.Hours>12)
{
this.AMorPM="PM";
if ((this.Hours-12)<10)
finalHour="0"+((parseInt(this.Hours,10))-12);
else
finalHour=parseInt(this.Hours,10)-12;
}
else
{
this.AMorPM="AM";
if (this.Hours<10)
finalHour="0"+parseInt(this.Hours,10);
else
finalHour=this.Hours;
}
}
else if (TimeMode==24)
{
if (this.Hours<10)
finalHour="0"+parseInt(this.Hours,10);
else
finalHour=this.Hours;
}
return finalHour;
}
Calendar.prototype.getShowHour=getShowHour;

function GetMonthName(IsLong)
{
var Month=MonthName[this.Month];
if (IsLong)
return Month;
else
return Month.substr(0,3);
}
Calendar.prototype.GetMonthName=GetMonthName;

function GetMonDays()//Get number of days in a month
{
var DaysInMonth=[31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
if (this.IsLeapYear())
{
DaysInMonth[1]=29;
}
return DaysInMonth[this.Month];
}
Calendar.prototype.GetMonDays=GetMonDays;

function IsLeapYear()
{
if ((this.Year%4)==0)
{
if ((this.Year%100==0) && (this.Year%400)!=0)
{
return false;
}
else
{
return true;
}
}
else
{
return false;
}
}
Calendar.prototype.IsLeapYear=IsLeapYear;

function FormatDate(pDate)
{
if (this.Format.toUpperCase()=="DDMMYYYY")
return (pDate+DateSeparator+(this.Month+1)+DateSeparator+this.Year);
else if (this.Format.toUpperCase()=="DDMMMYYYY")
return (pDate+DateSeparator+this.GetMonthName(false)+DateSeparator+this.Year);
else if (this.Format.toUpperCase()=="MMDDYYYY")
return ((this.Month+1)+DateSeparator+pDate+DateSeparator+this.Year);
else if (this.Format.toUpperCase()=="MMMDDYYYY")
return (this.GetMonthName(false)+DateSeparator+pDate+DateSeparator+this.Year);
}
Calendar.prototype.FormatDate=FormatDate;
 
1. Change this line in SetHour
Code:
    var HourExp=new RegExp("^\\d\\d$");
to
Code:
    var HourExp=new RegExp("^\\d[red]?[/red]\\d$");

--Chessbot

"See the TURTLE of enormous girth!"
-- Stephen King, The Dark Tower series
 
Chessbot,

Thanks man. I don;t know how the heck you guys can read all this code. I wish I was good at this like you guys.
One last thing though. This fixed the allowing of a single digit as oppsed to a 07 for the hour but the highlighting is still not correct. Even though it removed the yellow highlighting, it still bolds the day selected for all months. Maybe I wasn't clear. What I want to happen is the day I select is the only day that should be highlighted. No other day should be highlighted. Any idea how to fix this. The fix provided highlights the first day but bolds all the other day chosen. Thanks again Chessbot.
 
So you want no bold days, and you want the day in the box to be highlighted for that month only, similar to the highlight when the box is enpty?

--Chessbot

"See the TURTLE of enormous girth!"
-- Stephen King, The Dark Tower series
 
Thanks again chessbot,

Sorry again if I wasn't clear. When the user first clicks the icon to popup the calendar, the day highlighted should be the current day as the value in my input box is defaulted to the current day. So for example, today is nov 9. The 9th will be highlighted in yellow for the current month and no other month. Now if the user selects nov. 10th, the highlight will be removed from the 9th and will then change to the 10th.

So I do not want bold days, and I want the day highlighted when the user first clicks the calendar popup to highlight todays day, and then whatever day after that that the user selects should be highlighted then. Let me know if that is clear. Thanks so much again for all your help chessbot.
 
Not sure how I changed them, but here are the functions I changed:
Code:
function Calendar(pDate,pCtrl)
{
    //Properties
    this.Date=pDate.getDate();//selected date
    this.Month=pDate.getMonth();//selected month number
    this.Year=pDate.getFullYear();//selected year in 4 digits
    this.Hours=pDate.getHours();
    this.FirstDate = this.Date;
    this.FirstMonth = this.Month;
    this.FirstYear = this.Year;
    
    if (pDate.getMinutes()<10)
        this.Minutes="0"+pDate.getMinutes();
    else
        this.Minutes=pDate.getMinutes();
    
    //if (pDate.getSeconds()<10)
    //    this.Seconds="0"+pDate.getSeconds();
    //else        
    //    this.Seconds=pDate.getSeconds();
        
    this.MyWindow=winCal;
    this.Ctrl=pCtrl;
    this.Format="ddMMyyyy";
    this.Separator=DateSeparator;
    this.ShowTime=false;
    if (pDate.getHours()<12)
        this.AMorPM="AM";
    else
        this.AMorPM="PM";    
}
Code:
function GenCell(pValue,pHighLight,pColor)//Generate table cell with value
{
    var PValue;
    var PCellStr;
    var vColor;
    var vHLstr1;//HighLight string
    var vHlstr2;
    var vTimeStr;
    
    if (pValue==null)
        PValue="";
    else
        PValue=pValue;
    
    if (pColor!=null)
        vColor="bgcolor=\""+pColor+"\"";
    else
        vColor="";
    vHLstr1=">";vHLstr2="";  
    
    if (Cal.ShowTime)
    {
        vTimeStr="winMain.document.getElementById('"+Cal.Ctrl+"').value+=' '+"+"winMain.Cal.getShowHour()"+"+':'+"+"winMain.Cal.Minutes";
        if (TimeMode==12)
            vTimeStr+="+' '+winMain.Cal.AMorPM";
    }    
    else
        vTimeStr="";        
    PCellStr="<td "+vColor+" width="+CellWidth+" align='center'><font face='verdana' size='2'"+vHLstr1+"<a href=\"javascript:winMain.document.getElementById('"+Cal.Ctrl+"').value='"+Cal.FormatDate(PValue)+"';"+vTimeStr+";window.close();\">"+PValue+"</a>"+vHLstr2+"</font></td>";
    return PCellStr;
}
Code:
function RenderCal()
{
    var vCalHeader;
    var vCalData;
    var vCalTime;
    var i;
    var j;
    var SelectStr;
    var vDayCount=0;
    var vFirstDay;

    docCal.open();
    docCal.writeln("<html><head><title>"+WindowTitle+"</title>");
    docCal.writeln("<script>var winMain=window.opener</script>");
    docCal.writeln("</head><body bgColor='#FFFFE9' background='"+ThemeBg+"' link="+FontColor+" vlink="+FontColor+"><form name='Calendar'>");

    vCalHeader="<table border=1 bgcolor='#FFFFE9' cellpadding=1 cellspacing=1 width='100%' align=\"center\" valign=\"top\">\n";
    //Month Selector
    vCalHeader+="<tr>\n<td colspan='7'><table border=0 width='100%' cellpadding=0 cellspacing=0><tr><td align='left'>\n";
    vCalHeader+="<select name=\"MonthSelector\" onChange=\"javascript:winMain.Cal.SwitchMth(this.selectedIndex);winMain.RenderCal();\">\n";
    for (i=0;i<12;i++)
    {
        if (i==Cal.Month)
            SelectStr="Selected";
        else
            SelectStr="";    
        vCalHeader+="<option "+SelectStr+" value >"+MonthName[i]+"\n";
    }
    vCalHeader+="</select></td>";
    //Year selector
    vCalHeader+="\n<td align='right'><a href=\"javascript:winMain.Cal.DecYear();winMain.RenderCal()\"><b><font color=\""+YrSelColor+"\"><</font></b></a><font face=\"Verdana\" color=\""+YrSelColor+"\" size=2><b> "+Cal.Year+" </b></font><a href=\"javascript:winMain.Cal.IncYear();winMain.RenderCal()\"><b><font color=\""+YrSelColor+"\">></font></b></a></td></tr></table></td>\n";    
    vCalHeader+="</tr>";
    //Calendar header shows Month and Year
    if (ShowMonthYear)
        vCalHeader+="<tr><td colspan='7'><font face='Verdana' size='2' align='center' color='"+MonthYearColor+"'><b>"+Cal.GetMonthName(ShowLongMonth)+" "+Cal.Year+"</b></font></td></tr>\n";
    //Week day header
    vCalHeader+="<tr bgcolor="+WeekHeadColor+">";
    for (i=0;i<7;i++)
    {
        vCalHeader+="<td align='center' width='"+(100/7)+"%'><font face='Verdana' size='2'>"+WeekDayName[i].substr(0,WeekChar)+"</font></td>";
    }
    vCalHeader+="</tr>";    
    docCal.write(vCalHeader);
    
    //Calendar detail
    CalDate=new Date(Cal.Year,Cal.Month);
    CalDate.setDate(1);
    vFirstDay=CalDate.getDay();
    vCalData="<tr>";
    for (i=0;i<vFirstDay;i++)
    {
        vCalData=vCalData+GenCell();
        vDayCount=vDayCount+1;
    }
    for (j=1;j<=Cal.GetMonDays();j++)
    {
        var strCell;
        vDayCount=vDayCount+1;
        if ((j==Cal.FirstDate)&&(j==Cal.Date)&&(Cal.Month == Cal.FirstMonth)&&(Cal.Year==dtToday.getFullYear()))
        {            
            strCell=GenCell(j,true,'yellow');
        }
        else
        {
            if (j==Cal.Date && Cal.Month == Cal.FirstMonth)
            {
                for(k=1;k<=12;k++)
                {
                    if(k==Cal.Month)
                    {
                        strCell=GenCell(j,true,'yellow');
                    }
                    else
                    {
                        strCell=GenCell(j,true,'white');                        
                    }
                }
            }
            else
            {     
                if (vDayCount%7==0)
                    strCell=GenCell(j,false,SaturdayColor);
                else if ((vDayCount+6)%7==0)
                    strCell=GenCell(j,false,SundayColor);
                else
                    strCell=GenCell(j,null,WeekDayColor);
            }        
        }                        
        vCalData=vCalData+strCell;

        if((vDayCount%7==0)&&(j<Cal.GetMonDays()))
        {
            vCalData=vCalData+"</tr>\n<tr>";
        }
    }
    docCal.writeln(vCalData);    
    //Time picker
    if (Cal.ShowTime)
    {
        var showHour;
        showHour=Cal.getShowHour();        
        vCalTime="<tr>\n<td colspan='7' align='right' bgcolor='#FFFFE9'>";
        vCalTime+="<B>Time</B> ";
        vCalTime+="<input type='text' name='hour' maxlength=2 size=1 style=\"WIDTH: 22px\" value="+showHour+" onchange=\"javascript:winMain.Cal.SetHour(this.value)\">";
        vCalTime+=" : ";
        vCalTime+="<input type='text' name='minute' maxlength=2 size=1 style=\"WIDTH: 22px\" value="+Cal.Minutes+" onchange=\"javascript:winMain.Cal.SetMinute(this.value)\">";
        //vCalTime+=" : ";
        //vCalTime+="<input type='text' name='second' maxlength=2 size=1 style=\"WIDTH: 22px\" value="+Cal.Seconds+" onchange=\"javascript:winMain.Cal.SetSecond(this.value)\">";
        if (TimeMode==12)
        {
            var SelectAm =(parseInt(Cal.Hours,10)<12)? "Selected":"";
            var SelectPm =(parseInt(Cal.Hours,10)>=12)? "Selected":"";

            vCalTime+="<select name=\"ampm\" onchange=\"javascript:winMain.Cal.SetAmPm(this.options[this.selectedIndex].value);\">";
            vCalTime+="<option "+SelectAm+" value=\"AM\">AM</option>";
            vCalTime+="<option "+SelectPm+" value=\"PM\">PM<option>";
            vCalTime+="</select>";
        }    
        vCalTime+="\n</td>\n</tr>";
        docCal.write(vCalTime);
    }    
    //end time picker
    docCal.writeln("\n</table>");
    docCal.writeln("</form></body></html>");
    docCal.close();
}
Code:
function NewCal(pCtrl,pFormat,pShowTime,pTimeMode)
{
    Cal=new Calendar(dtToday);
    if ((pShowTime!=null) && (pShowTime))
    {
        Cal.ShowTime=true;
        if ((pTimeMode!=null) &&((pTimeMode=='12')||(pTimeMode=='24')))
        {
            TimeMode=pTimeMode;
        }        
    }    
    if (pCtrl!=null)
        Cal.Ctrl=pCtrl;
    if (pFormat!=null)
        Cal.Format=pFormat.toUpperCase();
    
    exDateTime=document.getElementById(pCtrl).value;
    if (exDateTime!="")//Parse Date String
    {
        var Sp1;//Index of Date Separator 1
        var Sp2;//Index of Date Separator 2 
        var tSp1;//Index of Time Separator 1
        var tSp1;//Index of Time Separator 2
        var strMonth;
        var strDate;
        var strYear;
        var intMonth;
        var YearPattern;
        var strHour;
        var strMinute;
        var strSecond;
        //parse month
        Sp1=exDateTime.indexOf(DateSeparator,0)
        Sp2=exDateTime.indexOf(DateSeparator,(parseInt(Sp1)+1));
        
        if ((Cal.Format.toUpperCase()=="DDMMYYYY") || (Cal.Format.toUpperCase()=="DDMMMYYYY"))
        {
            strMonth=exDateTime.substring(Sp1+1,Sp2);
            strDate=exDateTime.substring(0,Sp1);
        }
        else if ((Cal.Format.toUpperCase()=="MMDDYYYY") || (Cal.Format.toUpperCase()=="MMMDDYYYY"))
        {
            strMonth=exDateTime.substring(0,Sp1);
            strDate=exDateTime.substring(Sp1+1,Sp2);
        }
        if (isNaN(strMonth))
            intMonth=Cal.GetMonthIndex(strMonth);
        else
            intMonth=parseInt(strMonth,10)-1;    
        if ((parseInt(intMonth,10)>=0) && (parseInt(intMonth,10)<12))
	{
	    Cal.FirstMonth=intMonth
            Cal.Month=intMonth;
	}
        //end parse month
        //parse Date
        if ((parseInt(strDate,10)<=Cal.GetMonDays()) && (parseInt(strDate,10)>=1))
	{
	    Cal.FirstDate=strDate;
            Cal.Date=strDate;
	}
        //end parse Date
        //parse year
        strYear=exDateTime.substring(Sp2+1,Sp2+5);
        YearPattern=/^\d{4}$/;
        if (YearPattern.test(strYear))
	{
            Cal.Year=parseInt(strYear,10);
	    Cal.Firstyear=parseInt(strYear,10);
	}
        //end parse year
        //parse time
        if (Cal.ShowTime==true)
        {
            tSp1=exDateTime.indexOf(":",0)
            tSp2=exDateTime.indexOf(":",(parseInt(tSp1)+1));
            strHour=exDateTime.substring(tSp1,(tSp1)-2);
            Cal.SetHour(strHour);
            strMinute=exDateTime.substring(tSp1+1,tSp2);
            Cal.SetMinute(strMinute);
            //strSecond=exDateTime.substring(tSp2+1,tSp2+3);
            //Cal.SetSecond(strSecond);
        }    
    }
    winCal=window.open("","DateTimePicker","toolbar=0,status=0,menubar=0,fullscreen=no,width=285,height=265,resizable=0,top="+cnTop+",left="+cnLeft);
    docCal=winCal.document;
    RenderCal();
    winCal.document.bgColor='#FFFFE9';

}



--Chessbot

"See the TURTLE of enormous girth!"
-- Stephen King, The Dark Tower series
 
Man Chessbot,

This is sweet. Maybe one day'll I'll be as good as you Chessbot. I really appreciate this. My project is now completed. Thanks again.
 
No problem.

--Chessbot

"See the TURTLE of enormous girth!"
-- Stephen King, The Dark Tower series
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top