

		// default settings
		var fontFace="verdana";
		var fontSize=8;

		var titleWidth=25;
		var dayWidth=46;
		var dayDigits=3;

		var titleColor="#ffffff";
		var daysColor="Silver";
		var bodyColor="#ffffff";
		var dayColor="#ffffff";
		var currentDayColor="#333399";
		var footColor="Silver";
		var borderColor="#333333";

		var titleFontColor = "#000000";
		var daysFontColor = "#000000";
		var dayFontColor = "#000000";
		var currentDayFontColor = "#ffffff";
		var footFontColor = "#000000";
		var weekEndBGColor = "#F0F0F0";
		var otherMonthFontColor = "#999999";

		var calFormat = "mm/dd/yyyy";

		var weekDay = 0;
		// ------

		document.onmouseup = isCalendarClicked;

		// codes
		var calWidth=235, calHeight=165;
		var cal="cal";
		var cals=new Array();
		var currentCal=null;

		var yxMonths=new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
		var yxAbrMonths=new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
		var yxDays=new Array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun");
		var yxLinks=new Array("Today", "Close");

		var isOpera=(navigator.userAgent.indexOf("Opera")!=-1)?true:false;
		var isOpera5=(navigator.appVersion.indexOf("MSIE 5")!=-1 && navigator.userAgent.indexOf("Opera 5")!=-1)?true:false;
		var isOpera6=(navigator.appVersion.indexOf("MSIE 5")!=-1 && navigator.userAgent.indexOf("Opera 6")!=-1)?true:false;
		var isN6=(navigator.userAgent.indexOf("Gecko")!=-1);
		var isN4=(document.layers)?true:false;
		var isMac=(navigator.userAgent.indexOf("Mac")!=-1);
		var isIE=(document.all && !isOpera && (!isMac || navigator.appVersion.indexOf("MSIE 4")==-1))?true:false;

		var calTime;

		if (isN4) {
			fontSize+=2;
		}
		var style;
		style = "<style type='text/css'>\n"+spanx("title",titleFontColor);
		style += ".calheading { font-family: Verdana, Arial; font-size:10pt;}\n"
		style += ".calheading2 { font-family: Verdana, Arial; font-size:8pt;}\n"
		style += spanx("otherMonth",otherMonthFontColor);
		style += spanx("days",daysFontColor)+spanx("foot",footColor)+spanx("day",dayFontColor);
		style += spanx("currentDay",currentDayFontColor)+ax("titlea",titleFontColor);
		style += ax("daya",dayFontColor)+ax("currenta",currentDayFontColor)+ax("foota",footFontColor)+"</style>\n";

		document.write(style);
		 
		var span2="</span>";

		function span1(tag) {
			return "<span class='"+tag+"'>";
		}
		function spanx(tag, color) {
			return "."+tag+" { font-family:"+fontFace+"; font-size:"+fontSize+"pt; color:"+color+"; }\n";
		}

		function a1(tag) {
			return "<a class='"+tag+"' href=";
		}

		function ax(tag, color) {
			return "."+tag+" { text-decoration:none; color:"+color+"; }\n";
		}

		function calOBJ(name, title, form) {
			this.name = name;
			this.title = title;
			this.formName = form;
			this.form = null
		}

		function isCalendarClicked() 
		{
			var src
			if(document.getElementById("calDiv") && document.getElementById("calDiv").style && document.getElementById("calDiv").style.visibility == 'visible')
			{
				var calClicked = false;
				if(isIE)
				{
					src = window.event.srcElement;
					while (src.parentElement != null) 
					{
						if (src.id=="calDiv") 
						{
							calClicked = true;
							break;
						}
						src = src.parentElement;
					}
				}
				else
				{
					try
					{
						src = mouseUP;
						while (src.parentNode != null && src.parentNode != 'undefined') {
							if (src.parentNode.getAttribute("ID")== "calDiv")
							{
								calClicked = true;
								break;
							}
							src = src.parentNode;
						}
					}
					catch(e)
					{
						calClicked = false;
					}
				}
				if(!calClicked)
					hideCal();
			}
			
			if(confDeals())
			{
				var divClicked = false;
				if(isIE)
				{
					src = window.event.srcElement;
					while (src.parentElement != null) 
					{
						if (src.id=="divTab1" || src.id=="divTab2" || src.id=="divTab3") 
						{
							divClicked = true;
							break;
						}
						src = src.parentElement;
					}
				}
				else
				{
					try
					{
						src = mouseUP;
						var id;
						while (src.parentNode != null && src.parentNode != 'undefined') {
							id=src.parentNode.getAttribute("ID")
							if ( id == "divTab1" || id == "divTab2" || src.id=="divTab3")
							{
								divClicked = true;
								break;
							}
							src = src.parentNode;
						}
					}
					catch(e)
					{
						divClicked = false;
					}
				}
				if(!divClicked)
				{
					highlightDiv('none');
					window.setTimeout("highlightDiv('images/winTop1.jpg')",150);
					document.getElementById('hideDDLs1').focus();
				}
			}
		}
		
		function highlightDiv(img)
		{
			document.getElementById('divHead').background = img;
		}

		function setWidth(tWidth, dWidth, dDigits) {
			if (tWidth > 0) {
				titleWidth=tWidth;
			}
			if (dWidth > 0) {
				dayWidth=dWidth;
			}
			if (dDigits > 0) {
				dayDigits=dDigits;
			}
		}

		function addCalendar(name, title, form) {
			cals[cals.length] = new calOBJ(name, title, form);
		}

		function findCalendar(name) {
			for (var i = 0; i < cals.length; i++) {
				if (cals[i].name == name) {
					if (cals[i].form == null) {
						if (cals[i].formName == "") {
							if (document.forms[0]) {
								cals[i].form = document.forms[0];
							}
						}
						else if (document.forms[cals[i].formName]) {
							cals[i].form = document.forms[cals[i].formName];
						}
					}
					return cals[i];
				}
			}
			return null;
		}

		function getDayName(y,m,d) {
			var wd=new Date(y,m,d);
			return yxDays[wd.getDay()].substring(0,3);
		}

		function getFormat() {
			return /\d{2}\/\d{2}\/\d{4}/;
		}

		function getDateNumbers(date) {
			var y, m, d;

			var yIdx = calFormat.search(/yyyy/i);
			var mIdx = calFormat.search(/mm/i);
			var dIdx = calFormat.search(/dd/i);

			y=date.substring(yIdx,yIdx+4);
			m=date.substring(mIdx,mIdx+2)-1;
			d=date.substring(dIdx,dIdx+2);
		  
			return new Array(y,m,d);
		}

		function hideCal() {
			document.getElementById("calDiv").style.display = "none";
			document.getElementById("calDiv").style.visibility = "hidden";
			document.getElementById("hideDDLs").style.visibility = "hidden";
			document.getElementById("hideDDLs").style.display = "none";
		}

		function lastDay(d) {
			var yy=d.getFullYear(), mm=d.getMonth();
			for (var i=31; i>=28; i--) {
				var nd=new Date(yy,mm,i);
				if (mm == nd.getMonth()) {
					return i;
				}
			}
		}

		function firstDay(d) {
			var yy=d.getFullYear(), mm=d.getMonth();
			var fd=new Date(yy,mm,1);
			return fd.getDay();
		}

		function dayDisplay(i) {
			if (dayDigits == 0) {
				return yxDays[i];
			}
			else {
				return yxDays[i].substring(0,dayDigits);
			}
		}

		function calTitle(d) {
			var yy=d.getFullYear(), mm=yxMonths[d.getMonth()];
			var i=d.getMonth()-1;
			if(i < 0)
				i = 11;
			var j=d.getMonth()+1;
			if(j > 11)
				j = 0;
				
			var pm = yxAbrMonths[i], nm = yxAbrMonths[j];
			var s;
			
			s="<tr align='center' bgcolor='"+titleColor+"'><td colspan='7' height='25px' valign='middle' style='border-bottom:black 3px solid'>\n"
			s += "<table cellpadding='0' cellspacing='0' width='100%' border='0'><tr align='center' valign='middle'><td width='17%' align='left'>"
			s += span1("title")+"<b>"
			s += a1("calheading2") + "'javascript: moveYear(-1)' title='"+ (yy-1) +"'><</a>&nbsp;"
			s += a1("calheading2")+"'javascript:prevMonth("+d.getMonth()+")'>"+ pm +"</a></b>"
			s += span2+"</td><td width='66%'><nobr><b>"+span1("calheading")+mm+" "+yy+span2+"</b></nobr></td><td width='12%' align='left'>"+span1("title")+"<b>"+a1("calheading2")
			s += "'javascript:nextMonth("+d.getMonth()+")'>"+ nm +"</a></b></td><td width='5%' align='right'><b>"
			s += a1("calheading2")+"'javascript:moveYear(1)'  title='"+ (yy+1) +"'>></a></b>"+span2
			s += "</td></tr></table>\n</td></tr><tr align='center' bgcolor='"+daysColor+"'>";
		  
			for (var i=weekDay; i<weekDay+7; i++) {
				s+="<td width='14.286%' align='center'>"+span1("calheading2")+"<b>"+dayDisplay(i)+"</b>"+span2+"</td>";
			}

			s+="</tr>";

			return s;
		}

		function calHeader() {
			var head;
			head = "<table align='center' border='0' style='border:dimgray 1px solid' cellspacing='1' cellpadding='0' width=230><tr><td>\n<table cellspacing='0' width=230 cellpadding='2' border='0'>";
			return head;
		}

		function calFooter() {
			var foot;
			foot= "<tr bgcolor='"+footColor+"'><td colspan='7' align='center'>"+span1("foot")+a1("foota")+"'javascript:pickToday()'>"+yxLinks[0]+"</a>&nbsp;&nbsp;"+a1("foota")+"'javascript:hideCal();'>"+yxLinks[1]+"</a></span></td></tr>";
			foot += "</table>\n</td></tr></table>";
			return foot;
		}

		function getPreviousMonthLastDay(d) {
			var pm = d.getMonth() - 1;
			if(pm < 0)
				pm = 11;
			var yy=d.getFullYear();
			for (var i=31; i>=28; i--) {
				var nd=new Date(yy,pm,i);
				if (pm == nd.getMonth()) {
					return i;
				}
			}
		}

		function calBody(d,day) {
			var s="", dayCount=1, fd=firstDay(d), ld=lastDay(d);
			var pmld = getPreviousMonthLastDay(d); // get previous month's last day
			var nmDayCounter = 1;
			
			var prvMonthDaysCounter;
							
			if (weekDay > 0 && fd == 0) {
				fd = 7;
			}

			for (var i=0; i<6; i++) {
				s+="<tr align='center' bgcolor='"+bodyColor+"'>";
				var bgColor;
		    
				for (var j=weekDay; j<weekDay+7; j++) {
    			if(dayCount > ld && j==weekDay){break;}
    			if(j==weekDay || j==weekDay+6)
						bgColor = weekEndBGColor;
					else
						bgColor = dayColor;
				
					if (i*7+j < fd || dayCount>ld) {
						if(i*7+j < fd)
						{
							prvMonthDaysCounter = pmld+(i*7+j)-fd+1;
							s += "<td bgcolor='"+bgColor+"' onmouseout=\"javascript:this.style.backgroundColor='"+bgColor+"';\" onmouseover=\"javascript:this.style.backgroundColor='lightblue';\" onclick='javascript: pickDate("+ prvMonthDaysCounter +","+ parseInt(parseInt(d.getMonth())-1) +")' style='cursor: pointer'>"+ span1("otherMonth") + prvMonthDaysCounter +span2+"</td>";
						}
						if(dayCount > ld)
						{
							s += "<td bgcolor='"+bgColor+"' onmouseout=\"javascript:this.style.backgroundColor='"+bgColor+"';\" onmouseover=\"javascript:this.style.backgroundColor='lightblue';\" onclick='javascript: pickDate("+ nmDayCounter +","+ parseInt(parseInt(d.getMonth())+1) +")' style='cursor: pointer'>"+ span1("otherMonth") + nmDayCounter++ +span2+"</td>";
						}
					}
					else {
						bgColor=dayColor;
						var fgTag="day";
						var fgTagA="daya";
						if (dayCount==day) { 
							bgColor=currentDayColor; 
							fgTag="currentDay";
							fgTagA="currenta";
						}
    				else if(j==weekDay || j==weekDay+6)
							bgColor = weekEndBGColor;
		    
						s+="<td bgcolor='"+bgColor+"' onmouseout=\"javascript:this.style.backgroundColor='"+bgColor+"';\" onmouseover=\"javascript:this.style.backgroundColor='lightblue';\" onclick='javascript: pickDate("+ dayCount +","+ d.getMonth() +")' style='cursor: pointer'>"+ span1(fgTag) + dayCount++ +span2+"</td>";
					}
				}
				s+="</tr>";
			}

			return s;
		}

		function moveYear(dy) {
			cY+=dy;
			var nd=new Date(cY,cM,1);
			changeCal(nd);
		}

		function prevMonth(m) {
			cM=m-1;
			if (cM<0) { cM=11; cY--; }
			var nd=new Date(cY,cM,1);
			changeCal(nd);
		}

		function nextMonth(m) {
			cM=m+1;
			if (cM>11) { cM=0; cY++;}
			var nd=new Date(cY,cM,1);
			changeCal(nd);
		}

		function changeCal(d) {
			var dd = 0;
			if (currentCal != null) {
				var calRE = getFormat();
				if (currentCal.form[currentCal.field].value!="" && calRE.test(currentCal.form[currentCal.field].value)) {
					var cd = getDateNumbers(currentCal.form[currentCal.field].value);
					if (cd[0] == d.getFullYear() && cd[1] == d.getMonth()) {
						dd=cd[2];
					}
				}
				else {
					var cd = new Date();
					if (cd.getFullYear() == d.getFullYear() && cd.getMonth() == d.getMonth()) {
						dd=cd.getDate();
					}
				}
			}

			var calendar=calHeader()+calTitle(d)+calBody(d,dd)+calFooter();
			var div = document.getElementById("calDiv")
			div.innerHTML = calendar;
			var ifrm = document.getElementById("hideDDLs")
			ifrm.style.width = div.offsetWidth;
			ifrm.style.height = div.offsetHeight;
			
			clearTimeout(calTime); //clear the timeout of the calendar
			calTime = setTimeout(hideCal,10000); //reset the timeout to 10 seconds
		}
		
		// find absolute position of an object
		function findPos(obj) {
			var curleft = curtop = 0;
			if (obj.offsetParent) {
				curleft = obj.offsetLeft;
				curtop = obj.offsetTop
				while (obj = obj.offsetParent) {
					if(obj==document.getElementsByTagName('body')[0]){break}
					curleft += obj.offsetLeft;
					curtop += obj.offsetTop;
				}
			}
			return [curleft,curtop];
		}

		function showCal(name,fldName) {
			if(confDeals())
				return false;
			var d=new Date(), hasCal=false;
			currentCal = findCalendar(name);
			currentCal.field = fldName;
		  
			if (currentCal != null && currentCal.form != null && currentCal.form[currentCal.field]) {
				var calRE = getFormat();
				if (currentCal.form[currentCal.field].value.length > 0 && isValidDate(currentCal.form[currentCal.field]) && calRE.test(currentCal.form[currentCal.field].value)) {
					var cd = getDateNumbers(currentCal.form[currentCal.field].value);
					d=new Date(cd[0],cd[1],cd[2]);

					cY=parseInt(cd[0],10);
					cM=parseInt(cd[1],10);
					dd=parseInt(cd[2],10);
				}
				else {
					cY=d.getFullYear();
					cM=d.getMonth();
					dd=d.getDate();
				}

				var calendar=calHeader() + calTitle(d) + calBody(d,dd) + calFooter();
				var sleft, stop;
				var pos = new Array();
				pos = findPos(currentCal.form[currentCal.field]);
				sleft = pos[0];
				stop = pos[1] + 20;

				var div = document.getElementById("calDiv")
				div.innerHTML = calendar;
				div.style.display = "block";
				div.style.visibility = "visible";
				
				calWidth = div.offsetWidth;
				calHeight = div.offsetHeight;

				if(sleft + calWidth > (document.body.clientWidth + document.body.scrollLeft))
					sleft = document.body.clientWidth + document.body.scrollLeft - calWidth;
				if(stop + calHeight > (document.body.clientHeight + document.body.scrollTop))
					stop = stop - calHeight - 20;
				div.style.top = stop;
				div.style.left = sleft;
				
				// set iframe to hide drop down lists in older IE browsers
				var ifrm = document.getElementById("hideDDLs")
				ifrm.style.top = stop;
				ifrm.style.left = sleft;
				ifrm.style.width = calWidth;
				ifrm.style.height = calHeight;
				ifrm.style.zIndex = div.style.zIndex - 1;
				ifrm.style.visibility= "visible";
				ifrm.style.display= "block";
				clearTimeout(calTime); //clear the timeout of the calendar
				calTime = setTimeout(hideCal,10000); //hide the calendar if inactive for 10 seconds
			}
		}

		function get2Digits(n) {
			return ((n.toString().length == 1)?"0":"")+n;
		}

		function pickDate(d,m) {
			hideCal();
			var y = cY;
			if(m < 0)
			{
				m = 11;
				y--;
			}
			
			if(m > 11)
			{
				m = 0;
				y++;
			}

			var date=calFormat;
			date = date.replace(/yyyy/i, y);
			date = date.replace(/mm/i, get2Digits(m+1));
			date = date.replace(/dd/i, get2Digits(d));
		  
			currentCal.form[currentCal.field].value=date;
			// IE5/Mac needs focus to show the value, weird.
			currentCal.form[currentCal.field].focus();
		}

		function pickToday()
		{
			var today = new Date();
			var m = today.getMonth();
			var d = today.getDate();
			cY = today.getFullYear();
			pickDate(d,m);
		}

		function getNumbers(date) {
			var calRE = getFormat();
			var y, m, d;

			if (calRE.test(date)) {
				var yIdx = calFormat.search(/yyyy/i);
				var mIdx = calFormat.search(/mm/i);
				var dIdx = calFormat.search(/dd/i);

				y=date.substring(yIdx,yIdx+4);
				m=date.substring(mIdx,mIdx+2);
				d=date.substring(dIdx,dIdx+2);

				return new Array(y,m,d);
			}
			else {
				return new Array("", "", "");
			}
		}
		// ------

		if (isN4 || isN6) {
			document.captureEvents(Event.CLICK);
		}

		function isValidDate(field)
		{
			var date = rtrim(field.value);
			if(date.length > 0)
			{
				if(date.indexOf('-') > 0)
					date = date.replace(/\-/g,'/');
				var dateParts, curYear, year, validYear, month, day, mm, dd, validDay, validMonth;
				dateParts = date.split("/");
				var len = dateParts.length;
				var cDate = new Date(currentDate);
				curYear = cDate.getFullYear();
				if(len == 1 && !isNaN(dateParts[0]))
				{
					var dt = new Date(currentDate);
					if(parseFloat(dateParts[0]) != 0)
						dt.setDate(dt.getDate() + (parseFloat(dateParts[0])));
					field.value = get2Digits((dt.getMonth() + 1)) +'/'+ get2Digits(dt.getDate()) +'/'+ dt.getFullYear();	
					return true;
				}
				else if(len == 2 || len == 3)
				{
					if(len == 2)
					{
						year = curYear;
						validYear = true;
					}
					else
					{
						year = trim(dateParts[2]);
						validYear = isValidYear(year);
					}
					mm = rtrim(dateParts[0]);
					dd = trim(dateParts[1]);
					month = parseInt(mm,10);
					day = parseInt(dd,10);
					validMonth = !notNumeric(mm) && month > 0 && month < 13;
					validDay = !notNumeric(dd) && day > 0 && day < 32;
					
					if(validYear && validMonth && validDay)
					{
						var days = new Array(29,31,28,31,30,31,30,31,31,30,31,30,31);
						var mDays = days[month];
						if(year.length < 4)
						{
							year = curYear.toString().substring(0,(4 - year.length)) + year;
							if(parseInt(year) > (parseInt(curYear) + 25))
								year = parseInt(year) - 100;
						}
						if( (month == 2) && ( (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0) ) )
							mDays = 29;
						if(day <= mDays)
						{
							month = get2Digits(month);
							day = get2Digits(day)
							if(len == 2 && new Date(month +'/'+ day +'/'+ year) < cDate)
								year = parseInt(year) + 1;
							field.value = month +'/'+ day +'/'+ year;
							return true;
						}
						else 
							return false;
					}
					else
						return false;
				}
				else
					return false;
			}
			else
				return false;
		}
		
		function confDeals()
		{
			return false;
		}
		function isValidYear(year)
		{
			return !notNumeric(year) && (year.length == 1 || year.length == 2 || year.length == 4)
		}

		//Define calendar(s): addCalendar ("Unique Calendar Name", "Window title", "Form name")
		addCalendar("Calendar1","KK - Date Selection","frm");
			
		setWidth(150, 20, 1);
