//---------------------------------------------------------------------------
//
//  dhtmlcal.js 
//  a component of ScriptCalendar 
//  (c)2000 Dan Shipe 
//  www.scriptcalendar.com
//  sales@scriptcalendar.com
//
//    Date     By   Ver   Description
// ----------  ---  ----  ---------------------------------------------------
// 09-01-2000  DS   1.00  Initial creation
// 04-10-2001  DS   1.01  Now supports Netscape 6, Gekko
// 05-30-2001  DS   1.02  Added cookies to track month & year if user "refreshs"
// 07-06-2001  DS   1.03  Fixed bug to set main table border color to mclrBorder
// 07-09-2001  DS   1.04  Added DHTMLCal_PopUp to support event pop-up windows
// 07-10-2001  DS   1.05  Added support to place text in dead cells
// 08-23-2001  DS   1.06  Added inidividual date cell custom colors
// 08-30-2001  DS   1.07  Added booleans to hide Month and Year drop-downs
// 09-04-2001  DS   1.08  Supports "every month" and "every year" dates
// 09-11-2001  DS   1.09  A week may now begin Sunday or Monday
// 11-16-2001  DS   1.10  Added independent active weekend color
// 01-03-2001  DS   1.11  Supports relatively positioned DHTML elements in NS 4.75
// 03-03-2002  DS   2.00  Object Oriented Design
// 04-10-2002  DS   2.01  Fix for floating year and null weekday
// 06-24-2002  DS   2.02  Fix for Monday weeks and first day is Sunday
// 11-09-2002  DS   2.03  Supports Netscape 7
// 12-01-2002  DS   2.04  modifications for slots & financial calendar
// 02-01-2003  DS   2.05  bug fixes 
// 03-04-2003  DS   2.06  bug fixes (trackSelectedDate and dead dates)
// 01-01-2004  DS   3.00  XML support for MSIE browsers
// 02-15-2004  DS   4.00  Calendar redesign for more browser compliance
// 03-22-2004  DS   4.04  Miscellanous bug fixes
// 04-28-2004  DS   4.05  Addition of style sheet and enforeCellHeight property
//
//---------------------------------------------------------------------------

var aaac = new Array();var aaaa;var aaab;var aaae;var aaaf;var aaaj;var aabh;var aaag;var aaah;var aaak;var ua=navigator.userAgent.toLowerCase();var MAC=ua.indexOf('mac')!=-1;var OP=!!self.opera;var KO3=ua.indexOf("konqueror")!=-1;var IE=ua.indexOf("msie")!=-1&&!OP&&ua.indexOf("webtv")==-1;var N=ua.indexOf("gecko")!=-1;function ScriptCalendar(szName) {var aaaw = new Date();this.name = szName;this.r = "";this.q = "\"";this.license = "";this.todayText = "";this.initialMonth = aaaw.getMonth();this.initialYear = aaaw.getFullYear();this.cellWidth  = 100;this.cellHeight = 100;this.padding = "3";this.spacing = "2";this.xmlFile = "";this.dateSelector = 1+2+4+8;this.dateRangeStart = 2002;this.dateRangeEnd = 2007;this.overwriteSpecialEvent = false;this.displayWeekNumber = false;this.debug = false;this.tableProperties = "border='0' cellpadding='0' cellspacing='" + this.spacing + "'";this.popupProperties = "width=600,height=400,scrollbars=yes,resizable=yes,titlebar=yes,toolbar=yes,menubar=yes,location=yes,status=yes";this.calendarStyle = "font:8pt verdana; background-color:transparent; color:#ffffff;";this.calendarHeaderStyle = "background-color:transparent; color:#000000; padding: 3px;";this.dateStyleOuter = "background-color:transparent;";this.dateStyleDead = "background-color:transparent; color:#000000;";this.dateStylePast = "background-color:#e0e0e0; color:#000000;";this.dateStyleCurrent = "background-color:#ffffc0; color:#666633;";this.dateStyleFuture = "background-color:#ffffff; color:#000000;";this.dateStyleNumber = "";this.enforceCellHeight= false;this.trackSelectedDate= true;this.beginMonday = false;this.displayDeadText = false;this.displayDeadNumber = false;this.bottomWeekdayHeader= false;this.aadaStartDate = new Array(1,1,1,1,1,1,1,1,1,1,1,1);this.longDays = new Array( "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" );this.longMonths   = new Array( "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" );this.initialize = dcInitialize;this.createCalendar = dcCreateCalendar;this.aadc = aaca;this.aadcStyle = aacaStyle;this.aadf = aacc;this.aadg = aace;this.aadh = aacf;this.aadi = aacg;this.aadj = aach;this.update = dcUpdate;this.aadk = dcDaysPerMonth;this.aadl = aacj;this.aadn = aack;this.aado = aacl;this.aadp = evChkForEvent;this.aadp2 = evChkForEvent2;this.matchDate = evMatchDate;this.aadr = aacp;this.aads = aacq;this.aadt = aacr;this.getDay = dcGetDay;this.isWeekday = dcIsWeekday;this.dateByWeekday = dcDateByWeekday;this.aada = aacs;this.aadb = aact;this.saveDate = dcSaveDate;this.readDate = dcReadDate;this.cookieSet = dcCookieSet;this.cookieGet = dcCookieGet;this.setInnerHTML = dcSetInnerHTML;this.setOuterHTML = dcSetOuterHTML;this.getDiv = dcGetDiv;this.getFormElement = dcGetFormElement;this.generateStyleTag = dcGenerateStyleTag;var link1 = '<a href="http://www.scriptcalendar.com">javascript calendar</a>';var link2 = '<a href="http://www.scriptcalendar.com">event calendar</a>';};function dcInitialize() {aaaf = 6+4;aaak = window.location.toString().toLowerCase();aaag = aadv();aabh = this.popupProperties;aaaj = aadu(this.license);if (this.debug) alert("debug .license \n"  + aaag + "\n" + this.license + "\n" + aaaj + "\n" + aaaj.substr(3) );this.tableProperties = "border='0' cellpadding='0' cellspacing='" + this.spacing + "'";};function dcCreateCalendar(m, y) {var obj;var aaao;var bRedraw = true;if (this.xmlFile.length>0) {this.aads();};if (m==null && y==null) {bRedraw = false;if (this.trackSelectedDate) {m = this.readDate("m");y = this.readDate("y");} else {m = this.initialMonth;y = this.initialYear;};};var cboMonth = this.getFormElement("frmCalendarDateSelect", "cboMonth");var cboYear = this.getFormElement("frmCalendarDateSelect", "cboYear");if (cboMonth!=null) cboMonth.selectedIndex = m;if (cboYear!=null) cboYear.value = y;dcSaveDate(m, y);aaao = this.aadf(m, y);if (bRedraw) {obj = this.getDiv("scriptcalendar");if( typeof( obj.innerHTML ) != 'undefined' ) {obj.innerHTML = aaao;} else {if( obj.document && obj.document != window.document ) {obj.document.open();obj.document.write(aaao);obj.document.close();} else {obj = window.frames['nameOfIframe'].window;obj.document.open();obj.document.write(aaao);obj.document.close();};};} else {document.write(aaao);};};function aaca( nRow, nCol, aaav, aaaw, m ) {var currD = aaav.getDate() ;var aaal = this.aada(aaav);var aaan = this.aadb(aaav);var szStyle;var aaawSansTime = new Date(aaaw.getFullYear(), aaaw.getMonth(), aaaw.getDate());if ( currD > nCol + (nRow * 7) + this.aadaStartDate[m] || aaal != m ) {return 1;};if (aaan < this.aadb(aaaw) ) return 2;if (aaan > this.aadb(aaaw) ) return 4;if (aaal < this.aada(aaaw) ) return 2;if (aaal > this.aada(aaaw) ) return 4;if (aaav < aaawSansTime) return 2;if (aaav > aaawSansTime) return 4;return 3;};function aacaStyle(nDateType) {if (nDateType==1) return this.dateStyleDead;if (nDateType==2) return this.dateStylePast;if (nDateType==3) return this.dateStyleCurrent;if (nDateType==4) return this.dateStyleFuture;};function aacc(m, y) {var aaau="";var szID;var nRow;var nCol;var nDeadDay;var aaao = "";var aaau = "";var aabf;var nRowHigh;var aabg;if (m<0) { m=11; y--; };if (m>11) { m=0; y++; };if (y<this.dateRangeStart) { m=0; y=this.dateRangeStart; };if (y>this.dateRangeEnd) { m=11; y=this.dateRangeEnd; };var aaav = new Date(y, m, 1);var dteMonth = new Date(y, m, 1);var aaax = this.cellWidth;var aaaz = this.cellHeight;var aaaw = new Date();aaaw = new Date( aaaw.getFullYear(), aaaw.getMonth(), aaaw.getDate());aaav.setDate( aaav.getDate() + this.aadaStartDate[m] -1 );nDeadDay = 1 - this.getDay(aaav);aaav.setDate( aaav.getDate() - this.getDay(aaav) );if ( aaav.getDate() == 2 ) aaav.setDate( aaav.getDate() - 7 );aaao = "<table border='0' cellpadding='0' cellspacing='0'><tr><td>";aaao += "<table " + this.tableProperties;aaao += this.generateStyleTag(this.calendarStyle);aaao += " >";aaau += aaao + this.r + this.r;aaau += this.aadl(m, y) + this.r + this.r;aaau += this.aadi() + this.r + this.r;for (nRow=0; nRow<6; nRow++) {aabf = "";nRowHigh = 0;aabg = new Date(aaav.getFullYear(), aaav.getMonth(), aaav.getDate());for (nCol=0; nCol<7; nCol++) {szID = dcGenerateUniqueID(aaav);var aabc = this.aadg(aaav, aaaw, m, y, nRow, nCol, nDeadDay);var aaba = "<td valign='top' align='left'";aaba += " id='cell" + szID + "'";aaba += " name='cell" + szID + "'";aaba += " width='" + aaax + "'";if (aaaa.indexOf(":")==-1) {aaba += this.generateStyleTag(aaaa);aaba += " style='position:relative;";aaba += "'";} else {aaba += " style='position:relative;";aaba += aaaa;aaba += "'";};aaba += " >" + this.r;aabb = "";aabb += "<div";aabb += " id='outer" + szID + "'";aabb += " name='outer" + szID + "'";aabb += " style='position:relative;";aabb += " width:100%;";if (this.enforceCellHeight) aabb += " height:100%;";if (this.enforceCellHeight || N) aabb += " overflow:hidden;";aabb += "'";aabb += ">" + this.r;var aabe = aaba + aabb + aabc;aabe += "</div>" + this.r;if (IE==false) aabe += "<img src='spacer.gif' height='1' width='" + aaax + "'/>";aabe += "</td>" + this.r;if (aaab > nRowHigh) nRowHigh = aaab;aabf += aabe;aaav.setDate( aaav.getDate() + 1 );nDeadDay++;};if (aabg.getMonth()==m || aaav.getMonth()==m) {aaau += "<tr>";if (this.displayWeekNumber) {aaau += "<td align='right'";aaau += this.generateStyleTag(this.calendarHeaderStyle);aaau += ">";aaau += dcWeekOfYear(aaav) + "&#160;</td>";};aabf = replaceSubstring(aabf, "<td ", "<td height='" + aaab + "' ");aaau += aabf;aaau += "</tr>" + this.r + this.r;};};if (this.bottomWeekdayHeader) aaau += this.aadi();aaau += "</table>";aaau += "</td></tr></table>";return aaau;};function dcGenerateStyleTag(szData) {var szResult;if (szData.indexOf(":")==-1) {szResult = " class='" + szData + "'";} else {szResult = " style='" + szData + "'";};return szResult;}function dcGenerateUniqueID(aaav) {var szYear = aaav.getFullYear().toString();var szMonth = aaav.getMonth().toString();if (szMonth.length!=2) szMonth = "0" + szMonth;var szDay = aaav.getDate().toString();if (szDay.length!=2) szDay = "0" + szDay;return szYear + szMonth + szDay;}function aacg() {var aaau="";var aaao="";var i;aaau += "<tr>";if (this.displayWeekNumber) aaau += "<td>&nbsp;</td>";for (i=0; i<7; i++) {aaao = "<td align='center' nowrap='true'>";aaao += " <div id='header' name='header' width='100%' height='100%'";aaao += this.generateStyleTag(this.calendarHeaderStyle);aaao += " >";aaao += this.longDays[i];aaao += "</div></td>";aaau += aaao;};aaau += "</tr>" + this.r;return aaau;};function aace(aaav, aaaw, m, y, nRow, nCol, nDeadDay) {var aaap;var aaaq;var aaas;var aaar;var aaat;var i;var ev;var nDateType;var aaau = "";var aaax = this.cellWidth;var aaaz = this.cellHeight;var aEvents = this.aadp2(aaav);aaap = aaav.getDate();nDateType = this.aadc( nRow, nCol, aaav, aaaw, m );if (nDateType==1) {if (this.displayDeadText==false) {if (this.displayDeadNumber==false) aaap="&nbsp;";aEvents = this.aadp(m, nDeadDay, parseInt(y));if (m != this.aada(aaav) ) {aEvents = this.aadp(m, nDeadDay, parseInt(y));};};};aaab = 0;if (aEvents.length) {for (i=0; i<aEvents.length; i++) {aaaq = "&nbsp;";aaas = this.aadcStyle(nDateType);aaar = "";aaat = "";if (dcDateCompare(aaav, aaaw) && this.todayText) {aaaq = this.todayText;};ev = aEvents[i];if (aaav.getDate()<=aaaf || MAC==true || (aaaj==aaag || aaaj.substr(3)==aaag || aaag=="1") ) {if (ev.text) aaaq = ev.text;if (ev.style) aaas = ev.style;if (ev.tooltip) aaar = ev.tooltip;if (ev.script) aaat = ev.script;};if (ev.popuplink) {var szURL = ev.popuplink;aaaq = this.aadj(aaav, m, y, szURL) + aaaq + "</a>";};aaau += this.aadh(aEvents.length, i, aaav, aaaw, aaap, aaaq, aaas, aaar, aaat);};} else {aaaq = "&nbsp;";aaas = this.aadcStyle(nDateType);aaar = "";aaat = "";if (dcDateCompare(aaav, aaaw) && this.todayText && aaav.getMonth()==m) {aaaq = this.todayText;};aaau += this.aadh(1, 0, aaav, aaaw, aaap, aaaq, aaas, aaar);};aaaa = aaas;return aaau;};function aacf(nNumEvents, nIndex, aaav, aaaw, aaap, aaaq, aaas, aaar, aaat) {var aaax = this.cellWidth;var aaaz = this.cellHeight;var nLastEvent = nNumEvents-1;var szNumber = "";if (nIndex==0) {szNumber += "<span";szNumber += this.generateStyleTag(this.dateStyleNumber);szNumber += "'>";szNumber += aaap + "</span><br/>";};var nDivHeight = (aaaz/nNumEvents);var szDivHeight = nDivHeight.toString() + "px";aaab += nDivHeight;var szTemp = aaav.getFullYear() + "," + aaav.getMonth() + "," + aaav.getDate();var szStyle = dcCutString(aaas, "border", ";");szStyle = dcCutString(szStyle, "background-image", ";");szID = dcGenerateUniqueID(aaav);var aaao = "";aaao += "<div id='inner" + szID + "' name='inner" + szID + "'";aaao += " title='" + aaar + "'";if (szStyle.indexOf(":")==-1) {aaao += this.generateStyleTag(szStyle);aaao += " style='position:relative;";aaao += " width:100%;";aaao += " padding:" + this.padding + "px;";aaao += "'" + this.r;} else {aaao += " style='position:relative;";aaao += " width:100%;";aaao += " padding:" + this.padding + "px;";aaao += szStyle;aaao += "'" + this.r;};aaao += " onMouseDown=\"dcCellOnMouseDown(this," + szTemp + ");" + aaat + "\"" + this.r;aaao += " onMouseOver='dcCellOnMouseOver(this," + szTemp + ");'" + this.r;aaao += " onMouseOut='dcCellOnMouseOut(this," + szTemp + ");'";aaao += " onMouseUp='dcCellOnMouseUp(this," + szTemp + ");'";aaao += ">";aaao += szNumber;aaao += aaaq + this.r;aaao += " </div>" + this.r;return aaao;};function dcCutString(szData, szStart, szEnd) {var szLeft;var szRight;var nStart = szData.indexOf(szStart);var nEnd = szData.indexOf(szEnd, nStart);if (nStart!=-1 && nEnd!=-1) {nEnd += szEnd.length;szLeft = szData.substring(0, nStart-1);szRight = szData.substring(nEnd);return szLeft + szRight;} else {return szData;};};function aach(aaav, m, y, szURL) {var szQueryString;var szURL;var szLeft;var szRight;var c;szQueryString = (m+1) + "/" + aaav.getDate() + "/" + y;szQueryString = URLEncode(szQueryString);szQueryString = "date=" + szQueryString;c = "&";if (szURL.indexOf("?")==-1) c = "?";szQueryString = c + szQueryString;i = szURL.indexOf("#");if (i==-1) {szURL = szURL + szQueryString;} else {szLeft = szURL.substr(0,i);szRight = szURL.substr(i, szURL.length - i);szURL = szLeft + szQueryString + szRight;};return "<a href='javascript:dcPopUp(&#34;" + szURL + "&#34;)'>";};function dcUpdate(obj, m, y) {obj.createCalendar(m, y);};function aacj(m, y) {var aaao;var aaau = "";var aaax = this.cellWidth;var aaaz = this.cellHeight;if (this.dateSelector==0) return "";aaao = "<tr>";if (this.displayWeekNumber) aaao += "<td>&#160;</td>";aaao += "<td colspan='7' width='100%'>";aaau += aaao;aaao = "<table width='100%' height='100%' border='0' cellpadding='0' cellspacing='0'";aaao += this.generateStyleTag(this.calendarHeaderStyle);aaao += " >";aaao += "<tr>";aaau += aaao;if (this.dateSelector&4) {szTemp =  this.name + ", " + (parseInt(m)-1).toString() + ", " + y.toString();aaao = "<td align='left' valign='top'>";aaao += "<div id='prev' name='prev'";aaao += " onClick='dcUpdate(" + szTemp + ");'";aaao += " onMouseOver=\"this.style.cursor='hand';\" ";aaao += this.generateStyleTag(this.calendarHeaderStyle);aaao += " >";aaao += "&#160;&laquo;";aaao += "</div></td>";aaau += aaao;} else {aaau += "<td>&#160;</td>";};aaao = "<td colspan='5' align='center' valign='top' width='100%'>";aaao += "<div id='dropdown' name='dropdown'";aaao += this.generateStyleTag(this.calendarHeaderStyle);aaao += " >";aaau += aaao;if (this.dateSelector&1) {aaao = "<select name='cboMonth' id='cboMonth'" + this.r;aaao += " onchange='dcUpdate(" + this.name + ", this.value, " + y + ");'";aaao += " >" + this.r;aaao += this.aadn(m);aaao += "</select>" + this.r + this.r;} else {aaao = this.longMonths[m];};aaau += aaao;aaau += "&#160;";if (this.dateSelector&2) {aaao = "<select name='cboYear' id='cboYear'" + this.r;aaao += " onchange='dcUpdate(" + this.name + ", " + m + ", this.value);'";aaao += " >" + this.r;aaao += this.aado(y);aaao += "</select>" + this.r + this.r;} else {aaao = y.toString();};aaau += aaao;aaao = "</div></td>" + this.r;aaau = aaau + aaao;if (this.dateSelector&8) {szTemp =  this.name + ", " + (parseInt(m)+1).toString() + ", " + y.toString();aaao = "<td align='right' valign='top'>";aaao += "<div id='next' name='next'";aaao += " onClick='dcUpdate(" + szTemp + ");'";aaao += " onMouseOver=\"this.style.cursor='hand';\" ";aaao += this.generateStyleTag(this.calendarHeaderStyle);aaao += " >";aaao += "&raquo;&#160;";aaao += "</div></td>";aaau += aaao;} else {aaau += "<td>&#160;</td>";};aaau += "</tr></table>" + this.r + this.r;aaau += "</td>";aaau += "</tr>" + this.r + this.r;return aaau;};function aack(m) {var szSelected;var aaao="";for ( i=0; i<=11; i++ ) {szSelected = "";if ( i==m ) szSelected = "selected='true'";aaao += "<option value='" + i + "' " + szSelected + " >" + this.longMonths[i] + "</option>" + this.r;};return aaao;};function aacl(y) {var szSelected;var aaao="";for ( i=this.dateRangeStart; i<=this.dateRangeEnd; i++ ) {szSelected = "";if ( i==y ) szSelected = "selected='true'";aaao += "<option value='" + i + "' " + szSelected + " >" + i + "</option>" + this.r;};return aaao;};function EventObj(m, d, y, szText, szPopuplink, szStyle, szTooltip, szScript) {if (m) this.aada = m;if (d) this.day = d;if (y) this.aadb = y;if (szText) this.text = szText;if (szPopuplink) this.popuplink = szPopuplink;if (szStyle) this.style = szStyle;if (szTooltip) this.tooltip = szTooltip;if (szScript) this.script = szScript;};function evChkForEvent2(dte) {var d = dte.getDate();var m = this.aada(dte);var y = this.aadb(dte);return this.aadp(m,d,y);};function evChkForEvent(m,d,y) {var ev;var aDailyEvents = new Array();var aSpecial;var bln;var result;for (i=0; i<aaac.length; i++) {ev = aaac[i];bln = evMatchDate(m,d,y, ev.aada,ev.day,ev.aadb);if (bln) {aDailyEvents[aDailyEvents.length] = ev;};};if (aDailyEvents.length==0 || this.overwriteSpecialEvent==false) {if (aacr(m,d,y)==true) {aSpecial = dcSpecialEvent(y, m, d);for (i=0; i<aSpecial.length; i++) {aDailyEvents[aDailyEvents.length] = aSpecial[i];};};};return aDailyEvents;};function evMatchDate(m,d,y, evm,evd,evy) {var dte=null;if ( aacr(m,d,y) ) dte = new Date(y,m,d);var bln=false;if ( ( y == evy || evy == null )&& (parseInt(m)+1 == evm || evm == null )&& ( d == evd ) ) bln=true;if (bln==true) return true;return false;};function dcEvent(m,d,y,szText,szPopuplink,szStyle,szTooltip,szScript) {var ev = new EventObj(m,d,y,szText,szPopuplink,szStyle,szTooltip,szScript);if (parseInt(d)<=10 || d==null || MAC==true || (aaaj==aaag || aaaj.substr(3)==aaag || aaag=="1" )) {aaac[aaac.length] = ev;};};function aacp(node, blnNumeric) {var result;result = node.text;if (result.length==0) return null;if (blnNumeric==true) result = parseInt(result);return result;};function aacq() {var objXml;var nodeEvents;var nodeEvent;var children;var ev;aaac = new Array();objXml = new ActiveXObject("Microsoft.XMLDOM");objXml.async = false;objXml.load(this.xmlFile);children = objXml.selectNodes("/events/event");for (i=0; i<children.length; i++) {if (children[i].nodeName=="event") {nodeEvent = children[i];ev = new EventObj(nodeEvent.childNodes[0].text,nodeEvent.childNodes[1].text, nodeEvent.childNodes[2].text, nodeEvent.childNodes[3].text, nodeEvent.childNodes[4].text, nodeEvent.childNodes[5].text, nodeEvent.childNodes[6].text, nodeEvent.childNodes[7].text);aaac[aaac.length] = ev;};};};function dcDaysPerMonth(m, y) {var days = new Array( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 );days[1]=y%4==0&&y%100!=0||y%400==0?29:28;};function aacr(m,d,y) {var dte = new Date(y,m,d);if ( (dte.getFullYear() == y)&& (dte.getMonth() == m)&& (dte.getDate() == d) ) return true;return false;};function dcGetDay(dte) {var d = dte.getDay();if (this.beginMonday) d--;if (d==-1) d=6;return d;};function dcIsWeekday(dte) {var m;var d;m = dte.getMonth();d = dte.getDay();if (d == 0 || d == 6) return false;return true;};function dcDateByWeekday(y,m,weekno,weekday) {var first = new Date(y, m-1, 1).getDay();var d = 7 * weekno - 6 + weekday - first;var days = dcDaysPerMonth[m];if (first>weekday) d+=7;if (d>days) d-=7;return d;};function dcWeekOfYear(dte) {var first = new Date(dte.getFullYear(), 0, 1);var start = new Date(dte.getFullYear(), 0, 1);var next = new Date(dte.getFullYear(), 0, 1);start.setDate( first.getDate() - first.getDay() );next.setDate( first.getDate() - first.getDay() + 7 );return dcWeekLoop(dte,start,next)-1;};function dcWeekOfMonth(dte) {var first = new Date(dte.getFullYear(), dte.getMonth(), 1);var start = new Date(dte.getFullYear(), dte.getMonth(), 1);var next = new Date(dte.getFullYear(), dte.getMonth(), 1);start.setDate( first.getDate() - first.getDay() );next.setDate( first.getDate() - first.getDay() + 7 );return dcWeekLoop(dte,start,next);};function dcWeekdayOfMonth(dte) {var first = new Date(dte.getFullYear(), dte.getMonth(), 1);var start = new Date(dte.getFullYear(), dte.getMonth(), 1);var next = new Date(dte.getFullYear(), dte.getMonth(), 1);start.setDate( first.getDate() );next.setDate( first.getDate() + 7 );return dcWeekLoop(dte,start,next);};function dcWeekLoop(dte, start, next) {for (var i=1; i<=55; i++) {if (dte>=start && dte<next) return i;start.setDate( start.getDate() + 7 );next.setDate( start.getDate() + 7 );};return 0;};function dcDayOfYear(dte) {var result = 0;var m = dte.getMonth();var d = dte.getDate();var y = dte.getFullYear();var arrDays = dcDaysPerMonth(m, y);for (var i=0; i<m; i++) {result += arrDays[i];};result += d;return result;};function aacs (dte, obj) {var nEnd;var d = dte.getDate();var m = dte.getMonth();var y = dte.getFullYear();nStart = this.aadaStartDate[m];if ( d<nStart ) {if ( m==0 ) return 11;return m-1;};return m;};function aact (dte, obj) {var nStart;var nEnd;var d = dte.getDate();var m = dte.getMonth();var y = dte.getFullYear();nStart = this.aadaStartDate[m];if ( d<nStart ) {if ( m==0 ) return y-1;};return y;};function dcDateCompare(dte1, dte2) {if ( dte1.getFullYear()==dte2.getFullYear()&& dte1.getMonth()==dte2.getMonth()&& dte1.getDate()==dte2.getDate() ) return true;return false;};function dcEaster(Y) {if (aacr(aaah)) {if (aaah.getFullYear==Y) return aaah;};var C = Math.floor(Y/100);var N = Y - 19*Math.floor(Y/19);var K = Math.floor((C - 17)/25);var I = C - Math.floor(C/4) - Math.floor((C - K)/3) + 19*N + 15;I = I - 30*Math.floor((I/30));I = I - Math.floor(I/28)*(1 - Math.floor(I/28)*Math.floor(29/(I + 1))*Math.floor((21 - N)/11));var J = Y + Math.floor(Y/4) + I + 2 - C + Math.floor(C/4);J = J - 7*Math.floor(J/7);var L = I - J;var M = 3 + Math.floor((L + 40)/44);var D = L + 28 - 31*Math.floor(M/4);var dte = new Date(Y,M-1,D);aaah = dte;return aaah;};function dcSaveDate (m, y) {var mm = parseInt(m) + 1;var szYear =  y.toString();var szMonth = mm.toString();if (szMonth.length==1) szMonth = "0" + szMonth;dcCookieSet("dhtmlcal", szYear + szMonth);};function dcReadDate (szOption) {var m;var y;var szMonth;var szYear;var szValue = dcCookieGet("dhtmlcal");if (szValue==false || this.trackSelectedDate==false) {m = this.initialMonth;y = this.initialYear;} else {szMonth = szValue.substring(4, 6);szYear = szValue.substring(0, 4);m = parseInt(szMonth);y = parseInt(szYear);if (szMonth != m.toString()) {szMonth = szMonth.substring(szMonth.lastIndexOf("0")+1,szMonth.lastIndexOf("0")+2);m = parseInt(szMonth);};m--;};if (szOption=="m") return m;if (szOption=="y") return y;return -1;};function dcCookieSet (szName, szValue, hours, szPath, szDomain, szSecure) {var numHours;if ( (typeof(hours) == 'string') && Date.parse(hours) ) {numHours = hours;} else if (typeof(hours) == 'number') {numHours = (new Date((new Date()).getTime() + hours*3600000)).toGMTString();};document.cookie = szName + "=" + escape(szValue) + ((numHours == null) ? "" : "; expires=" + numHours) + ((szPath == null) ? "" : "; path=" + szPath) + ((szDomain == null) ? "" : "; domain=" + szDomain) + ((szSecure == null) ? "" : "; secure");};function dcCookieGet (szName) {var szData;var nBegin;var nEnd;var MyCookie = document.cookie;if (MyCookie.length>0) {nBegin = MyCookie.indexOf(szName);if (nBegin != -1) {nBegin += szName.length;nEnd = MyCookie.indexOf(";", nBegin);if (nEnd==-1) nEnd = MyCookie.length;szData = unescape(MyCookie.substring(nBegin+1, nEnd));return szData;} else {return false;};} else {return false;};};function dcSetOuterHTML (obj, aaao) {var range = document.createRange();range.setStartBefore(obj);var df = range.createContextualFragment(aaao);obj.parentNode.replaceChild(df, this);};function dcSetInnerHTML (obj, aaao) {var range = document.createRange();range.selectNodeContents(obj);range.deleteContents();var df = range.createContextualFragment(aaao);obj.appendChild(df);};function dcGetDiv(szID) {if ( document.layers ) return document.layers[szID];if( document.getElementById ) return document.getElementById(szID);if( document.all ) return document.all[szID];if( document[szID] ) return document[szID];return false;};function dcGetFormElement(szFrm, szObj) {if (szFrm.name!=null) szFrm = szFrm.name;if ( document.layers ) return document.forms[szFrm].elements[szObj];if( document.getElementById ) return document.getElementById(szObj);if( document.all ) return document.all[szObj];if( document[szObj] ) return document[szObj];return false;};function dcPopUp(strHREF) {var winPopup = window.open(strHREF, "_blank", aabh);};function aadu(strCode) {var mstrEncAlpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmonpqrstuvwxyz1234567890";var mstrEncKey = "dateStylePast";var i;var j;var c;var nCode;var nKey;var strResult="";j = 0;for ( i=0; i<strCode.length; i++ ) {c = strCode.charAt(i);nCode = mstrEncAlpha.indexOf(c);c = mstrEncKey.charAt(j);nKey = mstrEncAlpha.indexOf(c);nCode = nCode - nKey;if ( nCode < 0 ) nCode = nCode + mstrEncAlpha.length;strResult = strResult + mstrEncAlpha.charAt(nCode);j++;if ( j >= mstrEncKey.length ) j=0;};return strResult;};function aadv() {var d;var i;var n;if (aaak.indexOf("c:")!=-1) return "1";if (aaak.indexOf("localhost")!=-1) return "1";d = aaak.substring(7, n);i = d.indexOf("/");d = d.substring(0,i);d = aadw(d);return d;};function aadw(strData) {var strBad = "!@#$%^&*()-_=+[{]}\|;:',<.>/?" + '"';var strResult = "";var c;for (var i=0; i<strData.length; i++) {c = strData.charAt(i);if (strBad.indexOf(c)==-1) strResult += c};return strResult;};function ShowProperties(obj) {var i;var strOutput;var strTerm;var strData;var strSpace;var lngCols;lngCols=4;if (document.layers) lngCols=3;strSpace = "                                        ";strOutput = obj.name + "\n\n";i=1;for (var prop in obj) {strTerm = "\t";if (i==lngCols) strTerm = "\n";i=i+1;if (i>lngCols) i=1;strData = "." + prop + " = " + obj[prop];if (strData.length<30) strData += strSpace.substring(0, 30-strData.length);if (strData.length>30) strData = strData.substring(0, 30);strOutput += strData + strTerm;};alert(strOutput);return strOutput;};function URLEncode(szData){var SAFECHARS = "0123456789";SAFECHARS += "ABCDEFGHIJKLMNOPQRSTUVWXYZ";SAFECHARS += "abcdefghijklmnopqrstuvwxyz";SAFECHARS += "-_.!~*'()";var HEX = "0123456789ABCDEF";var plaintext = szData;var encoded = "";for (var i = 0; i < plaintext.length; i++ ) {var ch = plaintext.charAt(i);    if (ch == " ") {    encoded += "+";} else if (SAFECHARS.indexOf(ch) != -1) {    encoded += ch;} else {    var charCode = ch.charCodeAt(0);if (charCode > 255) {    alert( "Unicode Character '" + ch + "' cannot be encoded using standard URL encoding.\n" +        "(URL encoding only supports 8-bit characters.)\n" +"A space (+) will be substituted." );encoded += "+";} else {encoded += "%";encoded += HEX.charAt((charCode >> 4) & 0xF);encoded += HEX.charAt(charCode & 0xF);}}}return encoded;};function URLDecode(szData){var HEXCHARS = "0123456789ABCDEFabcdef";var encoded = szData;var plaintext = "";var i = 0;while (i < encoded.length) {var ch = encoded.charAt(i);   if (ch == "+") {       plaintext += " ";   i++;   } else if (ch == "%") {if (i < (encoded.length-2)&& HEXCHARS.indexOf(encoded.charAt(i+1)) != -1&& HEXCHARS.indexOf(encoded.charAt(i+2)) != -1 ) {plaintext += unescape( encoded.substr(i,3) );i += 3;} else {alert( 'Bad escape combination near ...' + encoded.substr(i) );plaintext += "%[ERROR]";i++;}} else {   plaintext += ch;   i++;}}return plaintext;};function replaceSubstring(inputString, fromString, toString) {var temp = inputString;if (fromString == "") {return inputString;}if (toString.indexOf(fromString) == -1) {while (temp.indexOf(fromString) != -1) {var toTheLeft = temp.substring(0, temp.indexOf(fromString));var toTheRight = temp.substring(temp.indexOf(fromString)+fromString.length, temp.length);temp = toTheLeft + toString + toTheRight;}} else {var midStrings = new Array("~", "`", "_", "^", "#");var midStringLen = 1;var midString = "";while (midString == "") {for (var i=0; i < midStrings.length; i++) {var tempMidString = "";for (var j=0; j < midStringLen; j++) { tempMidString += midStrings[i]; };if (fromString.indexOf(tempMidString) == -1) {midString = tempMidString;i = midStrings.length + 1;}}}while (temp.indexOf(fromString) != -1) {var toTheLeft = temp.substring(0, temp.indexOf(fromString));var toTheRight = temp.substring(temp.indexOf(fromString)+fromString.length, temp.length);temp = toTheLeft + midString + toTheRight;}while (temp.indexOf(midString) != -1) {var toTheLeft = temp.substring(0, temp.indexOf(midString));var toTheRight = temp.substring(temp.indexOf(midString)+midString.length, temp.length);temp = toTheLeft + toString + toTheRight;}}return temp;}





































































