Click here to Skip to main content
15,888,527 members
Articles / Programming Languages / Visual Basic
Article

Web DatePicker Control

Rate me:
Please Sign up or sign in to vote.
4.56/5 (49 votes)
29 Mar 20043 min read 592.2K   5.1K   76   229
Article on how I built my Date Picker Control.

Updates

Thanks to Camilo Orozco for providing me with the translated uncompiled C# code. The .cs file had been added to the source code zip. Sorry it's taken so long to post.

Introduction

One of the most common causes of application failure, especially for new developers, is handling date input from the user. If it's in the wrong format and you try to write it to the database, then the database command fails. If the user switches the day and month then your date could be wrong, even if you're using a regular expression validator (i.e. 01/02/2004 could be 2 January 2004 or 1 February 2004).

To get around this, I used to wire a server side calendar control to the textbox onClick event, and launch it in a new window, forcing the user to select a date, then return the date in the format of my choice to the textbox. But while this is all well and good for simple web apps, this week I needed the same functionality to be launched from inside a server component I was writing.

Background

I remember that in the old days of ASP, there was a lengthy JavaScript solution we used to use, that would be perfect for what I was trying to do now. I asked a few people, and a lot of guys sent me the same code back. Full credit must go to Tan Ling Wee for writing the original JavaScript code, even though I've never met him (or her - not quite sure), and to all the people who passed it on until it eventually arrived in my email box. Now here was a piece of code perfect for what I needed to do, but it's over 600 lines long, and there's no way in hell I was going to manually reformat it line by line so that I could render it to the client. So, as any really lazy developer does things, I wrote my own app to process the JavaScript and return a code block that I could simply copy and paste into Visual Studio (will write another article on this, and upload the app for use by all). After that, it was simply a matter of writing a new class that inherited from the control, added properties to make the control customizable, and compiled.

Using the code

If you're using Visual Studio, you can simply add the control to the Toolbox, and then drag and drop it into your apps. For everyone else, first copy the DLL to the bin directory of your project. Then, on your aspx page, you'll first need to register the component as follows:

ASP.NET
<%@ Register TagPrefix="cc1" 
Namespace="DatePicker.iX.Controls"
    Assembly="DatePicker" %>

Then place the control on the page like so:

ASP.NET
<cc1:DatePicker id="DatePicker1" runat="server"
  imgDirectory="/WebApplication6/img/" DateType="dd mmm yyyy">
</cc1:DatePicker>

You'll notice the properties imgDirectory and DateType. imgDirectory is the path to the directory where the control images needed can be found (images included in the download files). DateType is the format in which the date should be returned. "dd mmm yyyy" writes out the full date, e.g. "01 January 2003", but this can be changed to any format by changing this property (e.g. "dd/mm/yyyy" or "mm/dd/yyyy"). There is also a CssClass property, which sets the CssClass for the textbox, and a Text property, to set the start text to be displayed in the textbox.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
Web Developer
South Africa South Africa
Doug is an Applications Integrator for an online gaming company. He has been programming for 9 years, and has been working with the .NET framework since the beginning of 2003, in both VB.NET & C#.

Comments and Discussions

 
GeneralRe: Code Correction Pin
SikeMullivan4-Mar-06 10:17
SikeMullivan4-Mar-06 10:17 
GeneralRe: Code Correction Pin
mingssn22-Aug-06 10:37
mingssn22-Aug-06 10:37 
QuestionNot Working in .Net 2.0 using Master Pages Pin
cran2k7-Feb-06 20:54
cran2k7-Feb-06 20:54 
AnswerRe: Not Working in .Net 2.0 using Master Pages Pin
Doug Wilson8-Feb-06 0:17
Doug Wilson8-Feb-06 0:17 
GeneralRe: Not Working in .Net 2.0 using Master Pages Pin
cran2k8-Feb-06 2:53
cran2k8-Feb-06 2:53 
AnswerRe: Not Working in .Net 2.0 using Master Pages Pin
SikeMullivan18-Feb-06 19:34
SikeMullivan18-Feb-06 19:34 
AnswerRe: Not Working in .Net 2.0 using Master Pages Pin
IWantToDownload17-Mar-06 9:59
IWantToDownload17-Mar-06 9:59 
GeneralYet Another Fix - ASP.NET 2.0 - Rendered + String Builder Pin
Sketchy Steve3-Feb-06 3:51
Sketchy Steve3-Feb-06 3:51 
Hello,

I fixed this control before by using the findcontrol method rather than just an index position but it broke when I tried it in my new ASP.NET 2.0 app. I used this as an excuse to make some improvements and fix it.

I have changed the method from building up the javascript to use a string builder which should speed things up quite a bit and also used the render method rather than composition which should make things faster but also means it works fine in asp.net v2. I've posted my code below, if anyone spots a problem with it then let me know.

Hope this helps!

using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Collections.Specialized;
using System.Text;


namespace EblocControls
{
/// <summary>
/// Summary description for WebCustomControl1.
/// </summary>
[DefaultProperty("Text"),
ToolboxData("<{0}:WebCustomControl1 runat=server></{0}:WebCustomControl1>")]
public class DatePicker : WebControl, INamingContainer,IPostBackDataHandler
{
#region Private Properties
private string m_closeGif = "close.gif";
private string m_dividerGif = "divider.gif";
private string m_drop1Gif = "drop1.gif";
private string m_drop2Gif = "drop2.gif";
private string m_left1Gif = "left1.gif";
private string m_left2Gif = "left2.gif";
private string m_right1Gif = "right1.gif";
private string m_right2Gif = "right2.gif";
private string m_imgDirectory = "/img/";
private string m_ControlCssClass = "";
private string m_text = "";
private string m_Css = "";
private string m_DateType = "dd mmm yyyy";
#endregion


protected override void OnInit(EventArgs e)
{
base.OnInit(e);
Page.RegisterRequiresPostBack(this);
}

#region Public Properties
public string Text
{
get
{
return m_text;
}
set
{
m_text = value;
}
}

public virtual bool LoadPostData(string postDataKey, NameValueCollection values)
{
Page.Response.Write("Load post data has been hit"+UniqueID + "_DatePicker");
try
{
m_text = values[UniqueID + "_DatePicker"].ToString();
}
catch (Exception)
{
m_text ="working";
}
return false;
}

public virtual void RaisePostDataChangedEvent()
{
}



public override string CssClass
{
get
{
return m_Css;
}
set
{
m_Css = value;
}
}

public string imgClose
{
get {return m_closeGif;}
set {m_closeGif = value;}
}
public string imgDivider
{
get {return m_dividerGif;}
set {m_dividerGif = value;}
}
public string imgDrop1
{
get {return m_drop1Gif;}
set {m_drop1Gif = value;}
}
public string imgDrop2
{
get {return m_drop2Gif;}
set {m_drop2Gif = value;}
}
public string imgLeft1
{
get {return m_left1Gif;}
set {m_left1Gif = value;}
}
public string imgLeft2
{
get {return m_left2Gif;}
set {m_left2Gif = value;}
}
public string imgRight1
{
get {return m_right1Gif;}
set {m_right1Gif = value;}
}
public string imgDirectory
{
get {return m_imgDirectory;}
set {m_imgDirectory = value;}
}
public string ControlCssClass
{
get {return m_ControlCssClass;}
set {m_ControlCssClass = value;}
}
public string DateType
{
get {return m_DateType;}
set {m_DateType = value;}
}
#endregion

#region Constructors
public DatePicker()
{
//
// TODO: Add constructor logic here
//
}
#endregion

#region Private Methods/Properties
private void placeJavascript()
{

StringBuilder sbJavascript = new StringBuilder();

sbJavascript.Append("<script type=\"text/javascript\">");
sbJavascript.Append("// written by Tan Ling Wee on 2 Dec 2001\n");
sbJavascript.Append("// last updated 23 June 2002\n");
sbJavascript.Append("// email : fuushikaden@yahoo.com\n\n");
sbJavascript.Append("var fixedX = -1 // x position (-1 if to appear below control)\n");
sbJavascript.Append("var fixedY = -1 // y position (-1 if to appear below control)\n");
sbJavascript.Append("var startAt = 1 // 0 - sunday ; 1 - monday\n");
sbJavascript.Append("var showWeekNumber = 1 // 0 - don't show; 1 - show\n");
sbJavascript.Append("var showToday = 1 // 0 - don't show; 1 - show\n");
sbJavascript.Append(@"var imgDir = """ + m_imgDirectory + @"""" + "\n");
sbJavascript.Append(@"var gotoString = ""Go To Current Month""" + "\n");
sbJavascript.Append(@"var todayString = ""Today is""" + "\n");
sbJavascript.Append(@"var weekString = ""Wk""" + "\n");
sbJavascript.Append(@"var scrollLeftMessage = ""Click to scroll to previous month. Hold mouse button to scroll automatically.""" + "\n");
sbJavascript.Append(@"var scrollRightMessage = ""Click to scroll to next month. Hold mouse button to scroll automatically.""" + "\n");
sbJavascript.Append(@"var selectMonthMessage = ""Click to select a month.""" + "\n");
sbJavascript.Append(@"var selectYearMessage = ""Click to select a year.""" + "\n");
sbJavascript.Append(@"var selectDateMessage = ""Select [date] as date."" // do not replace [date], it will be replaced by date." + "\n");
sbJavascript.Append("var crossobj, crossMonthObj, crossYearObj, monthSelected, yearSelected, dateSelected, omonthSelected, oyearSelected, odateSelected, monthConstructed, yearConstructed, intervalID1, intervalID2, timeoutID1, timeoutID2, ctlToPlaceValue, ctlNow, dateFormat, nStartingYear\n\n");
sbJavascript.Append("var bPageLoaded=false\n");
sbJavascript.Append("var ie=document.all\n");
sbJavascript.Append("var dom=document.getElementById\n\n");
sbJavascript.Append("var ns4=document.layers\n");
sbJavascript.Append("var today = new Date()\n");
sbJavascript.Append("var dateNow = today.getDate()\n");
sbJavascript.Append("var monthNow = today.getMonth()\n");
sbJavascript.Append("var yearNow = today.getYear()\n");
sbJavascript.Append(@"var imgsrc = new Array(""" + m_drop1Gif + @""",""" + m_drop2Gif + @""",""" + m_left1Gif + @""",""" + m_left2Gif + @""",""" + m_right1Gif + @""",""" + m_right2Gif + @""")" + "\n");
sbJavascript.Append("var img = new Array()\n\n");
sbJavascript.Append("var bShow = false;\n\n");
sbJavascript.Append("/* hides <select> and <applet> objects (for IE only) */\n");
sbJavascript.Append("function hideElement( elmID, overDiv )\n");
sbJavascript.Append("{\n");
sbJavascript.Append("if( ie )\n");
sbJavascript.Append("{\n");
sbJavascript.Append("for( i = 0; i < document.all.tags( elmID ).length; i++ )\n");
sbJavascript.Append("{\n");
sbJavascript.Append("obj = document.all.tags( elmID )[i];\n");
sbJavascript.Append("if( !obj || !obj.offsetParent )\n");
sbJavascript.Append("{\n");
sbJavascript.Append("continue;\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append("// Find the element's offsetTop and offsetLeft relative to the BODY tag.\n");
sbJavascript.Append("objLeft = obj.offsetLeft;\n");
sbJavascript.Append("objTop = obj.offsetTop;\n");
sbJavascript.Append("objParent = obj.offsetParent;\n\n");
sbJavascript.Append(@"while( objParent.tagName.toUpperCase() != ""BODY"" )" + "\n");
sbJavascript.Append("{\n");
sbJavascript.Append("objLeft += objParent.offsetLeft;\n");
sbJavascript.Append("objTop += objParent.offsetTop;\n");
sbJavascript.Append("objParent = objParent.offsetParent;\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append("objHeight = obj.offsetHeight;\n");
sbJavascript.Append("objWidth = obj.offsetWidth;\n\n");
sbJavascript.Append("if(( overDiv.offsetLeft + overDiv.offsetWidth ) <= objLeft );\n");
sbJavascript.Append("else if(( overDiv.offsetTop + overDiv.offsetHeight ) <= objTop );\n");
sbJavascript.Append("else if( overDiv.offsetTop >= ( objTop + objHeight ));\n");
sbJavascript.Append("else if( overDiv.offsetLeft >= ( objLeft + objWidth ));\n");
sbJavascript.Append("else\n");
sbJavascript.Append("{\n");
sbJavascript.Append(@"obj.style.visibility = ""hidden"";" + "\n");
sbJavascript.Append("}\n");
sbJavascript.Append("}\n");
sbJavascript.Append("}\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append("/*\n");
sbJavascript.Append("* unhides <select> and <applet> objects (for IE only)\n");
sbJavascript.Append("*/\n");
sbJavascript.Append("function showElement( elmID )\n");
sbJavascript.Append("{\n");
sbJavascript.Append("if( ie )\n");
sbJavascript.Append("{\n");
sbJavascript.Append("for( i = 0; i < document.all.tags( elmID ).length; i++ )\n");
sbJavascript.Append("{\n");
sbJavascript.Append("obj = document.all.tags( elmID )[i];\n\n");
sbJavascript.Append("if( !obj || !obj.offsetParent )\n");
sbJavascript.Append("{\n");
sbJavascript.Append("continue;\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append(@"obj.style.visibility = """";" + "\n");
sbJavascript.Append("}\n");
sbJavascript.Append("}\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append("function HolidayRec (d, m, y, desc)\n");
sbJavascript.Append("{\n");
sbJavascript.Append("this.d = d\n");
sbJavascript.Append("this.m = m\n");
sbJavascript.Append("this.y = y\n");
sbJavascript.Append("this.desc = desc\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append("var HolidaysCounter = 0\n");
sbJavascript.Append("var Holidays = new Array()\n\n");
sbJavascript.Append("function addHoliday (d, m, y, desc)\n");
sbJavascript.Append("{\n");
sbJavascript.Append("Holidays[HolidaysCounter++] = new HolidayRec ( d, m, y, desc )\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append("if (dom)\n");
sbJavascript.Append("{\n");
sbJavascript.Append("for (i=0;i<imgsrc.length;i++)\n");
sbJavascript.Append("{\n");
sbJavascript.Append("img[i] = new Image\n");
sbJavascript.Append("img[i].src = imgDir + imgsrc[i]\n");
sbJavascript.Append("}\n");
sbJavascript.Append(@"document.write (""<div onclick='bShow=true' id='calendar' style='z-index:+999;position:absolute;visibility:hidden;'><table width=""+((showWeekNumber==1)?250:220)+"" style='font-family:arial;font-size:11px;border-width:1;border-style:solid;border-color:#a0a0a0;font-family:arial; font-size:11px}' bgcolor='#ffffff'><tr bgcolor='#0000aa'><td><table width='""+((showWeekNumber==1)?248:218)+""'><tr><td style='padding:2px;font-family:arial; font-size:11px;'><font color='#ffffff'><B><span id='caption'></span></B></font></td><td align=right><a href='javascript:hideCalendar()'><IMG SRC='""+imgDir+""" + m_closeGif + @"' WIDTH='15' HEIGHT='13' BORDER='0' ALT='Close the Calendar'></a></td></tr></table></td></tr><tr><td style='padding:5px' bgcolor=#ffffff><span id='content'></span></td></tr>"")" + "\n\n");
sbJavascript.Append("if (showToday==1)\n");
sbJavascript.Append("{\n");
sbJavascript.Append(@"document.write (""<tr bgcolor=#f0f0f0><td style='padding:5px' align=center><span id='lblToday'></span></td></tr>"")" + "\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append(@"document.write (""</table></div><div id='selectMonth' style='z-index:+999;position:absolute;visibility:hidden;'></div><div id='selectYear' style='z-index:+999;position:absolute;visibility:hidden;'></div>"");" + "\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append(@"var monthName = new Array(""January"",""February"",""March"",""April"",""May"",""June"",""July"",""August"",""September"",""October"",""November"",""December"")" + "\n");
sbJavascript.Append("if (startAt==0)\n");
sbJavascript.Append("{\n");
sbJavascript.Append(@"dayName = new Array (""Sun"",""Mon"",""Tue"",""Wed"",""Thu"",""Fri"",""Sat"")" + "\n");
sbJavascript.Append("}\n");
sbJavascript.Append("else\n");
sbJavascript.Append("{\n");
sbJavascript.Append(@"dayName = new Array (""Mon"",""Tue"",""Wed"",""Thu"",""Fri"",""Sat"",""Sun"")" + "\n");
sbJavascript.Append("}\n");
sbJavascript.Append(@"var styleAnchor=""text-decoration:none;color:black;""" + "\n");
sbJavascript.Append(@"var styleLightBorder=""border-style:solid;border-width:1px;border-color:#a0a0a0;""" + "\n\n");
sbJavascript.Append("function swapImage(srcImg, destImg){\n");
sbJavascript.Append(@"if (ie) { document.getElementById(srcImg).setAttribute(""src"",imgDir + destImg) }" + "\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append("function init() {\n");
sbJavascript.Append("if (!ns4)\n");
sbJavascript.Append("{\n");
sbJavascript.Append("if (!ie) { yearNow += 1900 }\n\n");
sbJavascript.Append(@"crossobj=(dom)?document.getElementById(""calendar"").style : ie? document.all.calendar : document.calendar" + "\n");
sbJavascript.Append("hideCalendar()\n\n");
sbJavascript.Append(@"crossMonthObj=(dom)?document.getElementById(""selectMonth"").style : ie? document.all.selectMonth : document.selectMonth" + "\n\n");
sbJavascript.Append(@"crossYearObj=(dom)?document.getElementById(""selectYear"").style : ie? document.all.selectYear : document.selectYear" + "\n\n");
sbJavascript.Append("monthConstructed=false;\n");
sbJavascript.Append("yearConstructed=false;\n\n");
sbJavascript.Append("if (showToday==1)\n");
sbJavascript.Append("{\n");
sbJavascript.Append(@"document.getElementById(""lblToday"").innerHTML = todayString + "" <a onmousemove='window.status=\""""+gotoString+""\""' onmouseout='window.status=\""\""' title='""+gotoString+""' style='""+styleAnchor+""' href='javascript:monthSelected=monthNow;yearSelected=yearNow;constructCalendar();'>""+dayName[(today.getDay()-startAt==-1)?6:(today.getDay()-startAt)]+"", "" + dateNow + "" "" + monthName[monthNow].substring(0,3) + "" "" + yearNow + ""</a>""" + "\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append(@"sHTML1=""<span id='spanLeft' style='border-style:solid;border-width:1;border-color:#3366FF;cursor:pointer' onmouseover='swapImage(\""changeLeft\"",\""left2.gif\"");this.style.borderColor=\""#88AAFF\"";window.status=\""""+scrollLeftMessage+""\""' onclick='javascript:decMonth()' onmouseout='clearInterval(intervalID1);swapImage(\""changeLeft\"",\""left1.gif\"");this.style.borderColor=\""#3366FF\"";window.status=\""\""' onmousedown='clearTimeout(timeoutID1);timeoutID1=setTimeout(\""StartDecMonth()\"",500)' onmouseup='clearTimeout(timeoutID1);clearInterval(intervalID1)'>&nbsp<IMG id='changeLeft' SRC='""+imgDir+""left1.gif' width=10 height=11 BORDER=0>&nbsp</span>&nbsp;""" + "\n");
sbJavascript.Append(@"sHTML1+=""<span id='spanRight' style='border-style:solid;border-width:1;border-color:#3366FF;cursor:pointer' onmouseover='swapImage(\""changeRight\"",\""right2.gif\"");this.style.borderColor=\""#88AAFF\"";window.status=\""""+scrollRightMessage+""\""' onmouseout='clearInterval(intervalID1);swapImage(\""changeRight\"",\""right1.gif\"");this.style.borderColor=\""#3366FF\"";window.status=\""\""' onclick='incMonth()' onmousedown='clearTimeout(timeoutID1);timeoutID1=setTimeout(\""StartIncMonth()\"",500)' onmouseup='clearTimeout(timeoutID1);clearInterval(intervalID1)'>&nbsp<IMG id='changeRight' SRC='""+imgDir+""right1.gif' width=10 height=11 BORDER=0>&nbsp</span>&nbsp""" + "\n");
sbJavascript.Append(@"sHTML1+=""<span id='spanMonth' style='border-style:solid;border-width:1;border-color:#3366FF;cursor:pointer' onmouseover='swapImage(\""changeMonth\"",\""drop2.gif\"");this.style.borderColor=\""#88AAFF\"";window.status=\""""+selectMonthMessage+""\""' onmouseout='swapImage(\""changeMonth\"",\""drop1.gif\"");this.style.borderColor=\""#3366FF\"";window.status=\""\""' onclick='popUpMonth()'></span>&nbsp;""" + "\n");
sbJavascript.Append(@"sHTML1+=""<span id='spanYear' style='border-style:solid;border-width:1;border-color:#3366FF;cursor:pointer' onmouseover='swapImage(\""changeYear\"",\""drop2.gif\"");this.style.borderColor=\""#88AAFF\"";window.status=\""""+selectYearMessage+""\""' onmouseout='swapImage(\""changeYear\"",\""drop1.gif\"");this.style.borderColor=\""#3366FF\"";window.status=\""\""' onclick='popUpYear()'></span>&nbsp;""" + "\n\n");
sbJavascript.Append(@"document.getElementById(""caption"").innerHTML = sHTML1" + "\n\n");
sbJavascript.Append("bPageLoaded=true\n");
sbJavascript.Append("}\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append("function hideCalendar() {\n");
sbJavascript.Append(@"crossobj.visibility=""hidden""" + "\n");
sbJavascript.Append(@"if (crossMonthObj != null){crossMonthObj.visibility=""hidden""}" + "\n");
sbJavascript.Append(@"if (crossYearObj != null){crossYearObj.visibility=""hidden""}" + "\n\n");
sbJavascript.Append("showElement( 'SELECT' );\n");
sbJavascript.Append("showElement( 'APPLET' );\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append("function padZero(num) {\n");
sbJavascript.Append("return (num < 10)? '0' + num : num ;\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append("function constructDate(d,m,y)\n");
sbJavascript.Append("{\n");
sbJavascript.Append("sTmp = dateFormat\n");
sbJavascript.Append(@"sTmp = sTmp.replace (""dd"",""<e>"")" + "\n");
sbJavascript.Append(@"sTmp = sTmp.replace (""d"",""<d>"")" + "\n");
sbJavascript.Append(@"sTmp = sTmp.replace (""<e>"",padZero(d))" + "\n");
sbJavascript.Append(@"sTmp = sTmp.replace (""<d>"",d)" + "\n");
sbJavascript.Append(@"sTmp = sTmp.replace (""mmm"",""<o>"")" + "\n");
sbJavascript.Append(@"sTmp = sTmp.replace (""mm"",""<n>"")" + "\n");
sbJavascript.Append(@"sTmp = sTmp.replace (""m"",""<m>"")" + "\n");
sbJavascript.Append(@"sTmp = sTmp.replace (""<m>"",m+1)" + "\n");
sbJavascript.Append(@"sTmp = sTmp.replace (""<n>"",padZero(m+1))" + "\n");
sbJavascript.Append(@"sTmp = sTmp.replace (""<o>"",monthName[m])" + "\n");
sbJavascript.Append(@"return sTmp.replace (""yyyy"",y)" + "\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append("function closeCalendar() {\n");
sbJavascript.Append("var sTmp\n\n");
sbJavascript.Append("hideCalendar();\n");
sbJavascript.Append("ctlToPlaceValue.value = constructDate(dateSelected,monthSelected,yearSelected)\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append("/*** Month Pulldown ***/\n\n");
sbJavascript.Append("function StartDecMonth()\n");
sbJavascript.Append("{\n");
sbJavascript.Append(@"intervalID1=setInterval(""decMonth()"",80)" + "\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append("function StartIncMonth()\n");
sbJavascript.Append("{\n");
sbJavascript.Append(@"intervalID1=setInterval(""incMonth()"",80)" + "\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append("function incMonth () {\n");
sbJavascript.Append("monthSelected++\n");
sbJavascript.Append("if (monthSelected>11) {\n");
sbJavascript.Append("monthSelected=0\n");
sbJavascript.Append("yearSelected++\n");
sbJavascript.Append("}\n");
sbJavascript.Append("constructCalendar()\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append("function decMonth () {\n");
sbJavascript.Append("monthSelected--\n");
sbJavascript.Append("if (monthSelected<0) {\n");
sbJavascript.Append("monthSelected=11\n");
sbJavascript.Append("yearSelected--\n");
sbJavascript.Append("}\n");
sbJavascript.Append("constructCalendar()\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append("function constructMonth() {\n");
sbJavascript.Append("popDownYear()\n");
sbJavascript.Append("if (!monthConstructed) {\n");
sbJavascript.Append(@"sHTML = """"" + "\n");
sbJavascript.Append("for (i=0; i<12; i++) {\n");
sbJavascript.Append("sName = monthName[i];\n");
sbJavascript.Append("if (i==monthSelected){\n");
sbJavascript.Append(@"sName = ""<B>"" + sName + ""</B>""" + "\n");
sbJavascript.Append("}\n");
sbJavascript.Append(@"sHTML += ""<tr><td id='m"" + i + ""' onmouseover='this.style.backgroundColor=\""#353aff\""' onmouseout='this.style.backgroundColor=\""\""' style='cursor:pointer' onclick='monthConstructed=false;monthSelected="" + i + "";constructCalendar();popDownMonth();event.cancelBubble=true'>&nbsp;"" + sName + ""&nbsp;</td></tr>""" + "\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append(@"document.getElementById(""selectMonth"").innerHTML = ""<table width=70 style='font-family:arial; font-size:11px; border-width:1; border-style:solid; border-color:#a0a0a0;' bgcolor='#3366ff' cellspacing=0 onmouseover='clearTimeout(timeoutID1)' onmouseout='clearTimeout(timeoutID1);timeoutID1=setTimeout(\""popDownMonth()\"",100);event.cancelBubble=true'>"" + sHTML + ""</table>""" + "\n\n");
sbJavascript.Append("monthConstructed=true\n");
sbJavascript.Append("}\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append("function popUpMonth() {\n");
sbJavascript.Append("constructMonth()\n");
sbJavascript.Append(@"crossMonthObj.visibility = (dom||ie)? ""visible"" : ""show""" + "\n");
sbJavascript.Append("crossMonthObj.left = parseInt(crossobj.left) + 50\n");
sbJavascript.Append("crossMonthObj.top = parseInt(crossobj.top) + 26\n\n");
sbJavascript.Append(@"hideElement( 'SELECT', document.getElementById(""selectMonth"") );" + "\n");
sbJavascript.Append(@"hideElement( 'APPLET', document.getElementById(""selectMonth"") );" + "\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append("function popDownMonth() {\n");
sbJavascript.Append(@"crossMonthObj.visibility= ""hidden""" + "\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append("/*** Year Pulldown ***/\n\n");
sbJavascript.Append("function incYear() {\n");
sbJavascript.Append("for (i=0; i<7; i++){\n");
sbJavascript.Append("newYear = (i+nStartingYear)+1\n");
sbJavascript.Append("if (newYear==yearSelected)\n");
sbJavascript.Append(@"{ txtYear = ""&nbsp;<B>"" + newYear + ""</B>&nbsp;"" }" + "\n");
sbJavascript.Append("else\n");
sbJavascript.Append(@"{ txtYear = ""&nbsp;"" + newYear + ""&nbsp;"" }" + "\n");
sbJavascript.Append(@"document.getElementById(""y""+i).innerHTML = txtYear" + "\n");
sbJavascript.Append("}\n");
sbJavascript.Append("nStartingYear ++;\n");
sbJavascript.Append("bShow=true\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append("function decYear() {\n");
sbJavascript.Append("for (i=0; i<7; i++){\n");
sbJavascript.Append("newYear = (i+nStartingYear)-1\n");
sbJavascript.Append("if (newYear==yearSelected)\n");
sbJavascript.Append(@"{ txtYear = ""&nbsp;<B>"" + newYear + ""</B>&nbsp;"" }" + "\n");
sbJavascript.Append("else\n");
sbJavascript.Append(@"{ txtYear = ""&nbsp;"" + newYear + ""&nbsp;"" }" + "\n");
sbJavascript.Append(@"document.getElementById(""y""+i).innerHTML = txtYear" + "\n");
sbJavascript.Append("}\n");
sbJavascript.Append("nStartingYear --;\n");
sbJavascript.Append("bShow=true\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append("function selectYear(nYear) {\n");
sbJavascript.Append("yearSelected=parseInt(nYear+nStartingYear);\n");
sbJavascript.Append("yearConstructed=false;\n");
sbJavascript.Append("constructCalendar();\n");
sbJavascript.Append("popDownYear();\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append("function constructYear() {\n");
sbJavascript.Append("popDownMonth()\n");
sbJavascript.Append(@"sHTML = """"" + "\n");
sbJavascript.Append("if (!yearConstructed) {\n\n");
sbJavascript.Append(@"sHTML = ""<tr><td align='center' onmouseover='this.style.backgroundColor=\""#353aff\""' onmouseout='clearInterval(intervalID1);this.style.backgroundColor=\""\""' style='cursor:pointer' onmousedown='clearInterval(intervalID1);intervalID1=setInterval(\""decYear()\"",30)' onmouseup='clearInterval(intervalID1)'>-</td></tr>""" + "\n\n");
sbJavascript.Append("j = 0\n");
sbJavascript.Append("nStartingYear = yearSelected-3\n");
sbJavascript.Append("for (i=(yearSelected-3); i<=(yearSelected+3); i++) {\n");
sbJavascript.Append("sName = i;\n");
sbJavascript.Append("if (i==yearSelected){\n");
sbJavascript.Append(@"sName = ""<B>"" + sName + ""</B>""" + "\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append(@"sHTML += ""<tr><td id='y"" + j + ""' onmouseover='this.style.backgroundColor=\""#353aff\""' onmouseout='this.style.backgroundColor=\""\""' style='cursor:pointer' onclick='selectYear(""+j+"");event.cancelBubble=true'>&nbsp;"" + sName + ""&nbsp;</td></tr>""" + "\n");
sbJavascript.Append("j ++;\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append(@"sHTML += ""<tr><td align='center' onmouseover='this.style.backgroundColor=\""#353aff\""' onmouseout='clearInterval(intervalID2);this.style.backgroundColor=\""\""' style='cursor:pointer' onmousedown='clearInterval(intervalID2);intervalID2=setInterval(\""incYear()\"",30)' onmouseup='clearInterval(intervalID2)'>+</td></tr>""" + "\n\n");
sbJavascript.Append(@"document.getElementById(""selectYear"").innerHTML = ""<table width=44 style='font-family:arial; font-size:11px; border-width:1; border-style:solid; border-color:#a0a0a0;' bgcolor='#3366ff' onmouseover='clearTimeout(timeoutID2)' onmouseout='clearTimeout(timeoutID2);timeoutID2=setTimeout(\""popDownYear()\"",100)' cellspacing=0>"" + sHTML + ""</table>""" + "\n\n");
sbJavascript.Append("yearConstructed = true\n");
sbJavascript.Append("}\n");
sbJavascript.Append("}\n");
sbJavascript.Append("function popDownYear() {\n");
sbJavascript.Append("clearInterval(intervalID1)\n");
sbJavascript.Append("clearTimeout(timeoutID1)\n");
sbJavascript.Append("clearInterval(intervalID2)\n");
sbJavascript.Append("clearTimeout(timeoutID2)\n");
sbJavascript.Append(@"crossYearObj.visibility= ""hidden""" + "\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append("function popUpYear() {\n");
sbJavascript.Append("var leftOffset\n\n");
sbJavascript.Append("constructYear()\n");
sbJavascript.Append(@"crossYearObj.visibility = (dom||ie)? ""visible"" : ""show""" + "\n");
sbJavascript.Append(@"leftOffset = parseInt(crossobj.left) + document.getElementById(""spanYear"").offsetLeft" + "\n");
sbJavascript.Append("if (ie)\n");
sbJavascript.Append("{\n");
sbJavascript.Append("leftOffset += 6\n");
sbJavascript.Append("}\n");
sbJavascript.Append("crossYearObj.left = leftOffset\n");
sbJavascript.Append("crossYearObj.top = parseInt(crossobj.top) + 26\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append("/*** calendar ***/\n");
sbJavascript.Append("function WeekNbr(n) {\n");
sbJavascript.Append("// Algorithm used:\n");
sbJavascript.Append("// From Klaus Tondering's Calendar document (The Authority/Guru)\n");
sbJavascript.Append("// hhtp://www.tondering.dk/claus/calendar.html\n");
sbJavascript.Append("// a = (14-month) / 12\n");
sbJavascript.Append("// y = year + 4800 - a\n");
sbJavascript.Append("// m = month + 12a - 3\n");
sbJavascript.Append("// J = day + (153m + 2) / 5 + 365y + y / 4 - y / 100 + y / 400 - 32045\n");
sbJavascript.Append("// d4 = (J + 31741 - (J mod 7)) mod 146097 mod 36524 mod 1461\n");
sbJavascript.Append("// L = d4 / 1460\n");
sbJavascript.Append("// d1 = ((d4 - L) mod 365) + L\n");
sbJavascript.Append("// WeekNumber = d1 / 7 + 1\n\n");
sbJavascript.Append("year = n.getFullYear();\n");
sbJavascript.Append("month = n.getMonth() + 1;\n");
sbJavascript.Append("if (startAt == 0) {\n");
sbJavascript.Append("day = n.getDate() + 1;\n");
sbJavascript.Append("}\n");
sbJavascript.Append("else {\n");
sbJavascript.Append("day = n.getDate();\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append("a = Math.floor((14-month) / 12);\n");
sbJavascript.Append("y = year + 4800 - a;\n");
sbJavascript.Append("m = month + 12 * a - 3;\n");
sbJavascript.Append("b = Math.floor(y/4) - Math.floor(y/100) + Math.floor(y/400);\n");
sbJavascript.Append("J = day + Math.floor((153 * m + 2) / 5) + 365 * y + b - 32045;\n");
sbJavascript.Append("d4 = (((J + 31741 - (J % 7)) % 146097) % 36524) % 1461;\n");
sbJavascript.Append("L = Math.floor(d4 / 1460);\n");
sbJavascript.Append("d1 = ((d4 - L) % 365) + L;\n");
sbJavascript.Append("week = Math.floor(d1/7) + 1;\n\n");
sbJavascript.Append("return week;\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append("function constructCalendar () {\n");
sbJavascript.Append("var aNumDays = Array (31,0,31,30,31,30,31,31,30,31,30,31)\n\n");
sbJavascript.Append("var dateMessage\n");
sbJavascript.Append("var startDate = new Date (yearSelected,monthSelected,1)\n");
sbJavascript.Append("var endDate\n\n");
sbJavascript.Append("if (monthSelected==1)\n");
sbJavascript.Append("{\n");
sbJavascript.Append("endDate = new Date (yearSelected,monthSelected+1,1);\n");
sbJavascript.Append("endDate = new Date (endDate - (24*60*60*1000));\n");
sbJavascript.Append("numDaysInMonth = endDate.getDate()\n");
sbJavascript.Append("}\n");
sbJavascript.Append("else\n");
sbJavascript.Append("{\n");
sbJavascript.Append("numDaysInMonth = aNumDays[monthSelected];\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append("datePointer = 0\n");
sbJavascript.Append("dayPointer = startDate.getDay() - startAt\n\n");
sbJavascript.Append("if (dayPointer<0)\n");
sbJavascript.Append("{\n");
sbJavascript.Append("dayPointer = 6\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append(@"sHTML = ""<table border=0 style='font-family:verdana;font-size:10px;'><tr>""" + "\n\n");
sbJavascript.Append("if (showWeekNumber==1)\n");
sbJavascript.Append("{\n");
sbJavascript.Append(@"sHTML += ""<td width=27><b>"" + weekString + ""</b></td><td width=1 rowspan=7 bgcolor='#d0d0d0' style='padding:0px'><img src='""+imgDir+""" + m_dividerGif + @"' width=1></td>""" + "\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append("for (i=0; i<7; i++) {\n");
sbJavascript.Append(@"sHTML += ""<td width='27' align='right'><B>""+ dayName[i]+""</B></td>""" + "\n");
sbJavascript.Append("}\n");
sbJavascript.Append(@"sHTML +=""</tr><tr>""" + "\n\n");
sbJavascript.Append("if (showWeekNumber==1)\n");
sbJavascript.Append("{\n");
sbJavascript.Append(@"sHTML += ""<td align=right>"" + WeekNbr(startDate) + ""&nbsp;</td>""" + "\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append("for ( var i=1; i<=dayPointer;i++ )\n");
sbJavascript.Append("{\n");
sbJavascript.Append(@"sHTML += ""<td>&nbsp;</td>""" + "\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append("for ( datePointer=1; datePointer<=numDaysInMonth; datePointer++ )\n");
sbJavascript.Append("{\n");
sbJavascript.Append("dayPointer++;\n");
sbJavascript.Append(@"sHTML += ""<td align=right>""" + "\n");
sbJavascript.Append("sStyle=styleAnchor\n");
sbJavascript.Append("if ((datePointer==odateSelected) && (monthSelected==omonthSelected) && (yearSelected==oyearSelected))\n");
sbJavascript.Append("{ sStyle+=styleLightBorder }\n\n");
sbJavascript.Append(@"sHint = """"" + "\n");
sbJavascript.Append("for (k=0;k<HolidaysCounter;k++)\n");
sbJavascript.Append("{\n");
sbJavascript.Append("if ((parseInt(Holidays[k].d)==datePointer)&&(parseInt(Holidays[k].m)==(monthSelected+1)))\n");
sbJavascript.Append("{\n");
sbJavascript.Append("if ((parseInt(Holidays[k].y)==0)||((parseInt(Holidays[k].y)==yearSelected)&&(parseInt(Holidays[k].y)!=0)))\n");
sbJavascript.Append("{\n");
sbJavascript.Append(@"sStyle+=""background-color:#FFDDDD;""" + "\n");
sbJavascript.Append(@"sHint+=sHint==""""?Holidays[k].desc:""\n""+Holidays[k].desc" + "\n");
sbJavascript.Append("}\n");
sbJavascript.Append("}\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append(@"var regexp= /\""/g" + "\n");
sbJavascript.Append(@"sHint=sHint.replace(regexp,""&quot;"")" + "\n\n");
sbJavascript.Append(@"dateMessage = ""onmousemove='window.status=\""""+selectDateMessage.replace(""[date]"",constructDate(datePointer,monthSelected,yearSelected))+""\""' onmouseout='window.status=\""\""' """ + "\n\n");
sbJavascript.Append("if ((datePointer==dateNow)&&(monthSelected==monthNow)&&(yearSelected==yearNow))\n");
sbJavascript.Append(@"{ sHTML += ""<b><a ""+dateMessage+"" title=\"""" + sHint + ""\"" style='""+sStyle+""' href='javascript:dateSelected=""+datePointer+"";closeCalendar();'><font color=#ff0000>&nbsp;"" + datePointer + ""</font>&nbsp;</a></b>""}" + "\n");
sbJavascript.Append("else if (dayPointer % 7 == (startAt * -1)+1)\n");
sbJavascript.Append(@"{ sHTML += ""<a ""+dateMessage+"" title=\"""" + sHint + ""\"" style='""+sStyle+""' href='javascript:dateSelected=""+datePointer + "";closeCalendar();'>&nbsp;<font color=#909090>"" + datePointer + ""</font>&nbsp;</a>"" }" + "\n");
sbJavascript.Append("else\n");
sbJavascript.Append(@"{ sHTML += ""<a ""+dateMessage+"" title=\"""" + sHint + ""\"" style='""+sStyle+""' href='javascript:dateSelected=""+datePointer + "";closeCalendar();'>&nbsp;"" + datePointer + ""&nbsp;</a>"" }" + "\n\n");
sbJavascript.Append(@"sHTML += """"" + "\n");
sbJavascript.Append("if ((dayPointer+startAt) % 7 == startAt) {\n");
sbJavascript.Append(@"sHTML += ""</tr><tr>""" + "\n");
sbJavascript.Append("if ((showWeekNumber==1)&&(datePointer<numDaysInMonth))\n");
sbJavascript.Append("{\n");
sbJavascript.Append(@"sHTML += ""<td align=right>"" + (WeekNbr(new Date(yearSelected,monthSelected,datePointer+1))) + ""&nbsp;</td>""" + "\n");
sbJavascript.Append("}\n");
sbJavascript.Append("}\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append(@"document.getElementById(""content"").innerHTML = sHTML" + "\n");
sbJavascript.Append(@"document.getElementById(""spanMonth"").innerHTML = ""&nbsp;"" + monthName[monthSelected] + ""&nbsp;<IMG id='changeMonth' SRC='""+imgDir+""drop1.gif' WIDTH='12' HEIGHT='10' BORDER=0>""" + "\n");
sbJavascript.Append(@"document.getElementById(""spanYear"").innerHTML = ""&nbsp;"" + yearSelected + ""&nbsp;<IMG id='changeYear' SRC='""+imgDir+""drop1.gif' WIDTH='12' HEIGHT='10' BORDER=0>""" + "\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append("function popUpCalendar(ctl, ctl2, format) {\n");
sbJavascript.Append("var leftpos=0\n");
sbJavascript.Append("var toppos=0\n\n");
sbJavascript.Append("if (bPageLoaded)\n");
sbJavascript.Append("{\n");
sbJavascript.Append(@"if ( crossobj.visibility == ""hidden"" ) {" + "\n");
sbJavascript.Append("ctlToPlaceValue = ctl2\n");
sbJavascript.Append("dateFormat=format;\n\n");
sbJavascript.Append(@"formatChar = "" """ + "\n");
sbJavascript.Append("aFormat = dateFormat.split(formatChar)\n");
sbJavascript.Append("if (aFormat.length<3)\n");
sbJavascript.Append("{\n");
sbJavascript.Append(@"formatChar = ""/""" + "\n");
sbJavascript.Append("aFormat = dateFormat.split(formatChar)\n");
sbJavascript.Append("if (aFormat.length<3)\n");
sbJavascript.Append("{\n");
sbJavascript.Append(@"formatChar = "".""" + "\n");
sbJavascript.Append("aFormat = dateFormat.split(formatChar)\n");
sbJavascript.Append("if (aFormat.length<3)\n");
sbJavascript.Append("{\n");
sbJavascript.Append(@"formatChar = ""-""" + "\n");
sbJavascript.Append("aFormat = dateFormat.split(formatChar)\n");
sbJavascript.Append("if (aFormat.length<3)\n");
sbJavascript.Append("{\n");
sbJavascript.Append("// invalid date format\n");
sbJavascript.Append(@"formatChar=""""" + "\n");
sbJavascript.Append("}\n");
sbJavascript.Append("}\n");
sbJavascript.Append("}\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append("tokensChanged = 0\n");
sbJavascript.Append(@"if ( formatChar != """" )" + "\n");
sbJavascript.Append("{\n");
sbJavascript.Append("// use user's date\n");
sbJavascript.Append("aData = ctl2.value.split(formatChar)\n\n");
sbJavascript.Append("for (i=0;i<3;i++)\n");
sbJavascript.Append("{\n");
sbJavascript.Append(@"if ((aFormat[i]==""d"") || (aFormat[i]==""dd""))" + "\n");
sbJavascript.Append("{\n");
sbJavascript.Append("dateSelected = parseInt(aData[i], 10)\n");
sbJavascript.Append("tokensChanged ++\n");
sbJavascript.Append("}\n");
sbJavascript.Append(@"else if ((aFormat[i]==""m"") || (aFormat[i]==""mm""))" + "\n");
sbJavascript.Append("{\n");
sbJavascript.Append("monthSelected = parseInt(aData[i], 10) - 1\n");
sbJavascript.Append("tokensChanged ++\n");
sbJavascript.Append("}\n");
sbJavascript.Append(@"else if (aFormat[i]==""yyyy"")" + "\n");
sbJavascript.Append("{\n");
sbJavascript.Append("yearSelected = parseInt(aData[i], 10)\n");
sbJavascript.Append("tokensChanged ++\n");
sbJavascript.Append("}\n");
sbJavascript.Append(@"else if (aFormat[i]==""mmm"")" + "\n");
sbJavascript.Append("{\n");
sbJavascript.Append("for (j=0; j<12; j++)\n");
sbJavascript.Append("{\n");
sbJavascript.Append("if (aData[i]==monthName[j])\n");
sbJavascript.Append("{\n");
sbJavascript.Append("monthSelected=j\n");
sbJavascript.Append("tokensChanged ++\n");
sbJavascript.Append("}\n");
sbJavascript.Append("}\n");
sbJavascript.Append("}\n");
sbJavascript.Append("}\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append("if ((tokensChanged!=3)||isNaN(dateSelected)||isNaN(monthSelected)||isNaN(yearSelected))\n");
sbJavascript.Append("{\n");
sbJavascript.Append("dateSelected = dateNow\n");
sbJavascript.Append("monthSelected = monthNow\n");
sbJavascript.Append("yearSelected = yearNow\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append("odateSelected=dateSelected\n");
sbJavascript.Append("omonthSelected=monthSelected\n");
sbJavascript.Append("oyearSelected=yearSelected\n\n");
sbJavascript.Append("aTag = ctl\n");
sbJavascript.Append("do {\n");
sbJavascript.Append("aTag = aTag.offsetParent;\n");
sbJavascript.Append("leftpos += aTag.offsetLeft;\n");
sbJavascript.Append("toppos += aTag.offsetTop;\n");
sbJavascript.Append(@"} while(aTag.tagName!=""BODY"");" + "\n\n");
sbJavascript.Append("crossobj.left = fixedX==-1 ? ctl.offsetLeft + leftpos : fixedX\n");
sbJavascript.Append("crossobj.top = fixedY==-1 ? ctl.offsetTop + toppos + ctl.offsetHeight + 2 : fixedY\n");
sbJavascript.Append("constructCalendar (1, monthSelected, yearSelected);\n");
sbJavascript.Append(@"crossobj.visibility=(dom||ie)? ""visible"" : ""show""" + "\n\n");
sbJavascript.Append(@"hideElement( 'SELECT', document.getElementById(""calendar"") );" + "\n");
sbJavascript.Append(@"hideElement( 'APPLET', document.getElementById(""calendar"") );" + "\n\n");
sbJavascript.Append("bShow = true;\n");
sbJavascript.Append("}\n");
sbJavascript.Append("else\n");
sbJavascript.Append("{\n");
sbJavascript.Append("hideCalendar()\n");
sbJavascript.Append("if (ctlNow!=ctl) {popUpCalendar(ctl, ctl2, format)}\n");
sbJavascript.Append("}\n");
sbJavascript.Append("ctlNow = ctl\n");
sbJavascript.Append("}\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append("document.onkeypress = function hidecal1 () {\n");
sbJavascript.Append("if (event.keyCode==27)\n");
sbJavascript.Append("{\n");
sbJavascript.Append("hideCalendar()\n");
sbJavascript.Append("}\n");
sbJavascript.Append("}\n");
sbJavascript.Append("document.onclick = function hidecal2 () {\n");
sbJavascript.Append("if (!bShow)\n");
sbJavascript.Append("{\n");
sbJavascript.Append("hideCalendar()\n");
sbJavascript.Append("}\n");
sbJavascript.Append("bShow = false\n");
sbJavascript.Append("}\n\n");
sbJavascript.Append("if(ie)\n");
sbJavascript.Append("{\n");
sbJavascript.Append("init()\n");
sbJavascript.Append("}\n");
sbJavascript.Append("else\n");
sbJavascript.Append("{\n");
sbJavascript.Append("window.onload=init;\n");
sbJavascript.Append("}\n");
sbJavascript.Append("<");
sbJavascript.Append("/");
sbJavascript.Append("script>");
Page.Response.Write(sbJavascript.ToString());
}

protected override void Render(HtmlTextWriter writer)
{
placeJavascript();
writer.Write(@"<input type=""textbox"" name="""+this.ClientID+@"_DatePicker"" value="""+m_text+@""" id="""+this.ClientID+@"_DatePicker"" class="""+m_Css+@""" readonly=""readonly"" onclick=""popUpCalendar(document.all." + this.ClientID + "_DatePicker, document.all." + this.ClientID + "_DatePicker, '" + m_DateType + @"');"" />");
}


#endregion
}
}

GeneralRe: Yet Another Fix - ASP.NET 2.0 - Rendered + String Builder Pin
Sketchy Steve5-Feb-06 23:25
Sketchy Steve5-Feb-06 23:25 
QuestionSyntax Error Pin
cran2k7-Feb-06 20:56
cran2k7-Feb-06 20:56 
GeneralRe: Yet Another Fix - ASP.NET 2.0 - Rendered + String Builder Pin
Racgaba16-Aug-06 0:15
Racgaba16-Aug-06 0:15 
QuestionHas anyone fixed this yet? Pin
Williamgf27-Jan-06 5:23
Williamgf27-Jan-06 5:23 
AnswerRe: Has anyone fixed this yet? Pin
Williamgf27-Jan-06 8:05
Williamgf27-Jan-06 8:05 
GeneralRe: Has anyone fixed this yet? Pin
ultram2-Feb-06 10:08
ultram2-Feb-06 10:08 
GeneralRe: Has anyone fixed this yet? Pin
spider927-Jun-06 5:09
spider927-Jun-06 5:09 
AnswerRe: Has anyone fixed this yet? Pin
MightyAC21-Sep-07 4:48
MightyAC21-Sep-07 4:48 
GeneralDesign time problem Pin
jarkins25-Jan-06 4:24
jarkins25-Jan-06 4:24 
GeneralRe: Design time problem Pin
ultram2-Feb-06 9:29
ultram2-Feb-06 9:29 
GeneralJavascript Bug Pin
syao16817-Jan-06 16:55
syao16817-Jan-06 16:55 
GeneralBug Fix - Patch Code Posted Pin
Sketchy Steve17-Jan-06 2:02
Sketchy Steve17-Jan-06 2:02 
GeneralRe: Bug Fix - Patch Code Posted Pin
ce3020119-Jan-06 4:08
ce3020119-Jan-06 4:08 
GeneralChanging the icon and positioning and versioning Pin
skooij16-Dec-05 2:52
skooij16-Dec-05 2:52 
QuestionRe: Changing the icon and positioning and versioning Pin
Doug Wilson20-Dec-05 19:47
Doug Wilson20-Dec-05 19:47 
GeneralCssClass Pin
mr_ko12-Sep-05 0:36
mr_ko12-Sep-05 0:36 
QuestionHow to gain "2005-8-25",Not"2005 8 25" Pin
qiaokai52125-Aug-05 21:03
qiaokai52125-Aug-05 21:03 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.