Source Code Cross Referenced for TestJSGeneral.java in  » Portal » Open-Portal » com » sun » portal » rewriter » engines » js » test » Java Source Code / Java DocumentationJava Source Code and Java Documentation

Java Source Code / Java Documentation
1. 6.0 JDK Core
2. 6.0 JDK Modules
3. 6.0 JDK Modules com.sun
4. 6.0 JDK Modules com.sun.java
5. 6.0 JDK Modules sun
6. 6.0 JDK Platform
7. Ajax
8. Apache Harmony Java SE
9. Aspect oriented
10. Authentication Authorization
11. Blogger System
12. Build
13. Byte Code
14. Cache
15. Chart
16. Chat
17. Code Analyzer
18. Collaboration
19. Content Management System
20. Database Client
21. Database DBMS
22. Database JDBC Connection Pool
23. Database ORM
24. Development
25. EJB Server geronimo
26. EJB Server GlassFish
27. EJB Server JBoss 4.2.1
28. EJB Server resin 3.1.5
29. ERP CRM Financial
30. ESB
31. Forum
32. GIS
33. Graphic Library
34. Groupware
35. HTML Parser
36. IDE
37. IDE Eclipse
38. IDE Netbeans
39. Installer
40. Internationalization Localization
41. Inversion of Control
42. Issue Tracking
43. J2EE
44. JBoss
45. JMS
46. JMX
47. Library
48. Mail Clients
49. Net
50. Parser
51. PDF
52. Portal
53. Profiler
54. Project Management
55. Report
56. RSS RDF
57. Rule Engine
58. Science
59. Scripting
60. Search Engine
61. Security
62. Sevlet Container
63. Source Control
64. Swing Library
65. Template Engine
66. Test Coverage
67. Testing
68. UML
69. Web Crawler
70. Web Framework
71. Web Mail
72. Web Server
73. Web Services
74. Web Services apache cxf 2.0.1
75. Web Services AXIS2
76. Wiki Engine
77. Workflow Engines
78. XML
79. XML UI
Java
Java Tutorial
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
Photoshop Tutorials
Maya Tutorials
Flash Tutorials
3ds-Max Tutorials
Illustrator Tutorials
GIMP Tutorials
C# / C Sharp
C# / CSharp Tutorial
C# / CSharp Open Source
ASP.Net
ASP.NET Tutorial
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Ruby
PHP
Python
Python Tutorial
Python Open Source
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
XML
XML Tutorial
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
Java Source Code / Java Documentation » Portal » Open Portal » com.sun.portal.rewriter.engines.js.test 
Source Cross Referenced  Class Diagram Java Document (Java Doc) 


0001:        /*
0002:         * Copyright 2001 Sun Microsystems, Inc.  All rights reserved.
0003:         * PROPRIETARY/CONFIDENTIAL.  Use of this product is subject to license terms.
0004:         */
0005:        package com.sun.portal.rewriter.engines.js.test;
0006:
0007:        import com.sun.portal.rewriter.Rewriter;
0008:        import com.sun.portal.rewriter.RewriterPool;
0009:        import com.sun.portal.rewriter.engines.LanguageConstants;
0010:        import com.sun.portal.rewriter.rom.RuleSet;
0011:        import com.sun.portal.rewriter.test.util.BasicTestCase;
0012:        import com.sun.portal.rewriter.test.util.CreateRuleSet;
0013:        import com.sun.portal.rewriter.test.util.JSWrapperHelper;
0014:        import junit.framework.TestSuite;
0015:
0016:        public class TestJSGeneral extends BasicTestCase {
0017:            public TestJSGeneral(String aName) {
0018:                super (aName);
0019:            }//constuctor
0020:
0021:            public void testBug4730531NetletScript() throws Exception {
0022:                String lInput = "/*  \n"
0023:                        + " * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to license terms. \n"
0024:                        + " * Copyright 2002 Sun Microsystems, Inc. All rights reserved. \n"
0025:                        + " */\n"
0026:                        + " \n"
0027:                        + "\n"
0028:                        + "var danameEnabled = false;\n"
0029:                        + "var algoDefault = false;\n"
0030:                        + "\n"
0031:                        + "function initializeAll() {\n"
0032:                        + "	setSelectedAlgos(); // Select the algorithms for the current rule name\n"
0033:                        + "	setalgoState(); // set the algorithm state (Default/Other)\n"
0034:                        + "	setdanameState(); // set the state for download applet text field \n"
0035:                        + "	initPhplist(); // Select the first entry in the PHP list\n"
0036:                        + "}\n"
0037:                        + "\n"
0038:                        + "function setalgoState() {\n"
0039:                        + "	var algotype = document.forms[formName].algotype[0].checked;\n"
0040:                        + "	if(algotype == true){\n"
0041:                        + "		algoDefault = true;\n"
0042:                        + "		document.forms[formName].elements[algorithms].disabled = true;\n"
0043:                        + "		var algosize = document.forms[formName].elements[algorithms].options.length;\n"
0044:                        + "		for(var i=0; i < algosize; i++) {\n"
0045:                        + "			document.forms[formName].elements[algorithms].options[i].selected = false;\n"
0046:                        + "		}\n"
0047:                        + "	} else {\n"
0048:                        + "		algoDefault = false;\n"
0049:                        + "		document.forms[formName].elements[algorithms].disabled = false;\n"
0050:                        + "	}\n"
0051:                        + "}\n"
0052:                        + "		\n"
0053:                        + "function setdanameState() {\n"
0054:                        + "	var dacb = document.forms[formName].elements[downloadappletcb].checked;\n"
0055:                        + "	if(dacb == false) {\n"
0056:                        + "		danameEnabled = false;\n"
0057:                        + "		document.forms[formName].elements[downloadappletname].disabled = true;\n"
0058:                        + "	} else {\n"
0059:                        + "		danameEnabled = true;\n"
0060:                        + "		document.forms[formName].elements[downloadappletname].disabled = false;\n"
0061:                        + "	}\n"
0062:                        + "}\n"
0063:                        + "		\n"
0064:                        + "function setSelectedAlgos() {\n"
0065:                        + "	var nameandalgo = document.forms[formName].elements[selectedAlgos].value;\n"
0066:                        + "	var nameandalgos = nameandalgo.split(\"^\");\n"
0067:                        + "	if(nameandalgos.length == 1) {\n"
0068:                        + "		document.forms[formName].algotype[0].checked = true;\n"
0069:                        + "        } else if(nameandalgos.length == 2) {\n"
0070:                        + "		document.forms[formName].algotype[1].checked = true; 	\n"
0071:                        + "		for(var i = 0; i < document.forms[formName].elements[algorithms].options.length; i++)\n"
0072:                        + "		{\n"
0073:                        + "			var opt = document.forms[formName].elements[algorithms].options[i];\n"
0074:                        + "			if(opt.value == nameandalgos[1]) {\n"
0075:                        + "				document.forms[formName].elements[algorithms].options[i].selected = true;\n"
0076:                        + "				break;\n"
0077:                        + "			}\n"
0078:                        + "		}\n"
0079:                        + "	} else {\n"
0080:                        + "		document.forms[formName].algotype[1].checked = true; 	\n"
0081:                        + "		var algos = nameandalgos[2].split(\"+\");\n"
0082:                        + "		for(var j = 0; j < algos.length; j++) {\n"
0083:                        + "		  for(var i = 0; i < document.forms[formName].elements[algorithms].options.length; i++)\n"
0084:                        + "		  {\n"
0085:                        + "		  	  var opt = document.forms[formName].elements[algorithms].options[i];\n"
0086:                        + "			  if(opt.value == algos[j]) {\n"
0087:                        + "				document.forms[formName].elements[algorithms].options[i].selected = true;\n"
0088:                        + "				break;\n"
0089:                        + "			  }\n"
0090:                        + "		  }\n"
0091:                        + "		}\n"
0092:                        + "	}\n"
0093:                        + "}\n"
0094:                        + "\n"
0095:                        + "function selectListBoxes() {\n"
0096:                        + "	addToSelBeforeSubmitArray(formName,phplist);\n"
0097:                        + "	selBeforeSubmit();\n"
0098:                        + "}\n"
0099:                        + "\n"
0100:                        + "function _isDigit (c) {\n"
0101:                        + "        return ((c >= \"0\") && (c <= \"9\"));\n"
0102:                        + "}\n"
0103:                        + "\n"
0104:                        + "function _isLetter (c) {\n"
0105:                        + "        return ( ((c >= \"a\") && (c <= \"z\")) || ((c >= \"A\") && (c <= \"Z\")) )\n"
0106:                        + "}\n"
0107:                        + "\n"
0108:                        + "\n"
0109:                        + "function _isInteger(s) {\n"
0110:                        + "            for (i = 0; i < s.length; i++) {\n"
0111:                        + "                var c = s.charAt(i);\n"
0112:                        + "                if (!_isDigit(c))\n"
0113:                        + "                        return false;\n"
0114:                        + "            }\n"
0115:                        + "            return true;\n"
0116:                        + "}\n"
0117:                        + "\n"
0118:                        + "\n"
0119:                        + "function validatePhpvalues() {\n"
0120:                        + "        var sport = document.forms[formName].elements[sourceport].value;\n"
0121:                        + "        var thost = document.forms[formName].elements[targethost].value;\n"
0122:                        + "        var tport = document.forms[formName].elements[targetport].value;\n"
0123:                        + "        var numofthosts = 0; // Used only for static rules\n"
0124:                        + "\n"
0125:                        + "        if(sport.length == 0 || thost.length == 0 || tport.length == 0) {\n"
0126:                        + "		alert(errorMessages['emptyFields']);\n"
0127:                        + "                return false;\n"
0128:                        + "        }\n"
0129:                        + "\n"
0130:                        + "        if(!_isInteger(sport)) {\n"
0131:                        + "                alert(errorMessages['invalidclientport']);\n"
0132:                        + "                return false;\n"
0133:                        + "        }\n"
0134:                        + "\n"
0135:                        + "        if(!_isLetter(thost.charAt(0))) {\n"
0136:                        + "                alert(errorMessages['invalidtargethost']);\n"
0137:                        + "                return false;\n"
0138:                        + "        }\n"
0139:                        + "\n"
0140:                        + "        if(document.forms[formName].elements[targethost].value == \"TARGET\") {\n"
0141:                        + "                if(tport.indexOf(\"-\") >= 0) {\n"
0142:                        + "                        alert(errorMessages['dynamictargetport']);\n"
0143:                        + "                        return false;\n"
0144:                        + "                }\n"
0145:                        + "\n"
0146:                        + "                var tports = tport.split(\"+\");\n"
0147:                        + "\n"
0148:                        + "                for(var i = 0; i < tports.length; i++) {\n"
0149:                        + "                        if(tports[i] == \"\" || !_isInteger(tports[i])) {\n"
0150:                        + "                                alert(errorMessages['invalidtargetport']);\n"
0151:                        + "                                return false;\n"
0152:                        + "                        }\n"
0153:                        + "                }\n"
0154:                        + "        } else{\n"
0155:                        + "                var thosts = thost.split(\"+\");\n"
0156:                        + "                numofthosts = thosts.length;\n"
0157:                        + "\n"
0158:                        + "                for(var i = 0; i < thosts.length; i++) {\n"
0159:                        + "                        if(thosts[i] == \"\" || !_isLetter(thosts[i].charAt(0))) {\n"
0160:                        + "                                alert(errorMessages['invalidtargethost']);\n"
0161:                        + "                                return false;\n"
0162:                        + "                        }\n"
0163:                        + "                }\n"
0164:                        + "\n"
0165:                        + "                var tportlist = tport.split(\"-\");\n"
0166:                        + "\n"
0167:                        + "                if( (tportlist.length != 1) && (tportlist.length != numofthosts) ) {\n"
0168:                        + "                        alert(errorMessages['targetportlist']);\n"
0169:                        + "                        return false;\n"
0170:                        + "                }\n"
0171:                        + "\n"
0172:                        + "                for(var i = 0; i < tportlist.length; i++) {\n"
0173:                        + "                        var tports = tportlist[i].split(\"+\");\n"
0174:                        + "                        for(var j = 0; j < tports.length; j++) {\n"
0175:                        + "                                if(tports[j] == \"\" || !_isInteger(tports[j])) {\n"
0176:                        + "                                        alert(errorMessages['invalidtargetport']);\n"
0177:                        + "                                        return false;\n"
0178:                        + "                                }\n"
0179:                        + "                        }\n"
0180:                        + "                }\n"
0181:                        + "        }\n"
0182:                        + "\n"
0183:                        + "        return true;\n"
0184:                        + "}\n"
0185:                        + "\n"
0186:                        + "function addToPhplist() {\n"
0187:                        + "                var entry = document.forms[formName].elements[sourceport].value + \" \" +\n"
0188:                        + "                                        document.forms[formName].elements[targethost].value + \" \" +\n"
0189:                        + "                                        document.forms[formName].elements[targetport].value;\n"
0190:                        + "\n"
0191:                        + "                /*\n"
0192:                        + "                 * Check for duplicates before invoking _validatePhpvalues()\n"
0193:                        + "                 * as _validatePhpvalues() is heavy weight\n"
0194:                        + "                 */\n"
0195:                        + "\n"
0196:                        + "                for(var i = 0; i < document.forms[formName].elements[phplist].options.length; i++) {\n"
0197:                        + "                        var cur = document.forms[formName].elements[phplist].options[i];\n"
0198:                        + "\n"
0199:                        + "                        if(cur.value == entry) {\n"
0200:                        + "                                alert(errorMessages['duplicatetargets']);\n"
0201:                        + "                                return;\n"
0202:                        + "                        }\n"
0203:                        + "                }\n"
0204:                        + "\n"
0205:                        + "                if(validatePhpvalues()) {\n"
0206:                        + "                                var phplistlength = document.forms[formName].elements[phplist].length;\n"
0207:                        + "                                var opt = new Option(entry,entry);\n"
0208:                        + "                                document.forms[formName].elements[phplist].options[phplistlength] = opt;\n"
0209:                        + "                                document.forms[formName].elements[sourceport].value = \"\";\n"
0210:                        + "                                document.forms[formName].elements[targethost].value = \"\";\n"
0211:                        + "                                document.forms[formName].elements[targetport].value= \"\";\n"
0212:                        + "                }\n"
0213:                        + "}\n"
0214:                        + "\n"
0215:                        + "/*\n"
0216:                        + " * Deletes the selected entries from the Source port, Target host &\n"
0217:                        + " * Target port list\n"
0218:                        + " */\n"
0219:                        + "\n"
0220:                        + "function deleteFromPhplist() {\n"
0221:                        + "        for(var i = 0; i < document.forms[formName].elements[phplist].length; i++) {\n"
0222:                        + "                var opt = document.forms[formName].elements[phplist].options[i];\n"
0223:                        + "\n"
0224:                        + "                if( (opt.selected) && (opt.value != \"\") ) {\n"
0225:                        + "                        document.forms[formName].elements[phplist].options[i] = null;\n"
0226:                        + "                        if (document.forms[formName].elements[phplist].length > 0) {\n"
0227:                        + "                                i--;\n"
0228:                        + "                        }\n"
0229:                        + "                }\n"
0230:                        + "        }\n"
0231:                        + "}\n"
0232:                        + "\n"
0233:                        + "/*\n"
0234:                        + " * Put the selected Source port, Target host, and Target port\n"
0235:                        + " * into the appropriate input widgets\n"
0236:                        + " */\n"
0237:                        + "\n"
0238:                        + "function editPhpselected() {\n"
0239:                        + "        var selectedphp = \"\";\n"
0240:                        + "\n"
0241:                        + "        for(var i = 0; i < document.forms[formName].elements[phplist].options.length; i++) {\n"
0242:                        + "                var opt = document.forms[formName].elements[phplist].options[i];\n"
0243:                        + "                if(opt.selected) {\n"
0244:                        + "                        selectedphp = opt.value;\n"
0245:                        + "                }\n"
0246:                        + "        }\n"
0247:                        + "	if( (selectedphp == null) || (selectedphp == \"\") ) {\n"
0248:                        + "        	document.forms[formName].elements[sourceport].value = \"\";\n"
0249:                        + "        	document.forms[formName].elements[targethost].value = \"\";\n"
0250:                        + "        	document.forms[formName].elements[targetport].value = \"\";\n"
0251:                        + "		return;\n"
0252:                        + "	}\n"
0253:                        + "        var selectedphps = selectedphp.split(\" \");\n"
0254:                        + "\n"
0255:                        + "        document.forms[formName].elements[sourceport].value = selectedphps[0];\n"
0256:                        + "        document.forms[formName].elements[targethost].value = selectedphps[1];\n"
0257:                        + "        document.forms[formName].elements[targetport].value = selectedphps[2];\n"
0258:                        + "}\n"
0259:                        + "\n"
0260:                        + "function initPhplist() {\n"
0261:                        + "	for(var i=0; i < document.forms[formName].elements[phplist].options.length; i++) {\n"
0262:                        + "		document.forms[formName].elements[phplist].options[i].selected = false;\n"
0263:                        + "	}\n"
0264:                        + "	if(document.forms[formName].elements[phplist].options[0] != null &&\n"
0265:                        + "	   document.forms[formName].elements[phplist].options[0].value != \"\" ) {\n"
0266:                        + "		document.forms[formName].elements[phplist].options[0].selected = true;\n"
0267:                        + "		editPhpselected();\n" + "	}\n" + "}\n";
0268:
0269:                String lExpectation = lInput;
0270:
0271:                String lJSVarRules = "<Variable name=\"myimgsrc\" type=\"EXPRESSION\"/>\t"
0272:                        + "<Variable name=\"mySwf2\" type=\"URL\"/>";
0273:
0274:                RuleSet lRuleSet = CreateRuleSet.withHTMLAttJSVarJSFunRules("",
0275:                        lJSVarRules, "");
0276:                Rewriter lRewriter = RewriterPool.create(lRuleSet,
0277:                        LanguageConstants.JS_MIME);
0278:                String lResult = lRewriter.rewrite(lInput,
0279:                        getDefaultJSTranslator());
0280:                assertEquals(lExpectation, lResult);
0281:            }//testBug4730531NetletScript()
0282:
0283:            public void testBhavani() throws Exception {
0284:                String lInput = "<html>\n"
0285:                        + "<body onload=window.location.replace(\"http://raja.com:30000\")>\n"
0286:                        + "<body onload=window.location.replace(\"telnet://localhost:30000\")>\n"
0287:                        + "<body onload=window.location.replace(\"/index.html\")>\n"
0288:                        + "</body></html>\n";
0289:
0290:                String lExpectation = "<html>\n"
0291:                        + "<body onload=window.location.replace(\"http://raja.com:30000\")>\n"
0292:                        + "<body onload=window.location.replace(\"telnet://localhost:30000\")>\n"
0293:                        + "<body onload=window.location.replace(\"http://rajanagendra.sun.com/index.html\")>\n"
0294:                        + "</body></html>\n";
0295:
0296:                String lJSTokenRules = "<Attribute name=\"onload\" type=\"DJS\"/>";
0297:                String lJSFuncRules = "<Function type=\"EXPRESSION\" name=\"*location.replace\" paramPatterns=\"y\"/>";
0298:                RuleSet lRuleSet = CreateRuleSet
0299:                        .withHTMLJSTokenJSVarJSFunRules(lJSTokenRules, "",
0300:                                lJSFuncRules);
0301:                Rewriter lRewriter = RewriterPool.create(lRuleSet,
0302:                        LanguageConstants.HTML_MIME);
0303:                String lResult = lRewriter.rewrite(lInput,
0304:                        getDefaultTranslator());
0305:                assertEquals(lExpectation, lResult);
0306:            }//testBhavani()
0307:
0308:            public void testOutllokExchangeCalendarHTC() throws Exception {
0309:                String lInput = "<!--Copyright (c) 2000 Microsoft Corporation.  All rights reserved.-->\n"
0310:                        + "<HTML>\n"
0311:                        + "<property	name=\"updateCalText\"	put=\"put_caltext\"		get=\"get_caltext\" />\n"
0312:                        + "<property	name=\"updateViewText\"	put=\"put_viewtext\"		get=\"get_viewtext\" />\n"
0313:                        + "<property	name=\"statusElement\"	put=\"put_statusEl\"		get=\"get_statusEl\" />\n"
0314:                        + "<property	name=\"nextMonthImage\" />\n"
0315:                        + "<property	name=\"prevMonthImage\" />\n"
0316:                        + "<property	name=\"readOnly\"			put=\"put_readOnly\"		get=\"get_readOnly\" />\n"
0317:                        + "<property	name=\"day\"				put=\"put_Day\"			get=\"get_Day\" />\n"
0318:                        + "<property	name=\"month\"			put=\"put_Month\"			get=\"get_Month\" />\n"
0319:                        + "<property	name=\"year\"				put=\"put_Year\"			get=\"get_Year\" />\n"
0320:                        + "<property	name=\"fullyear\"			put=\"put_FullYear\"		get=\"get_FullYear\" />\n"
0321:                        + "<property	name=\"pollInterval\"		put=\"put_PollInterval\"	get=\"get_PollInterval\" />\n"
0322:                        + "<property	name=\"folderURL\" />\n"
0323:                        + "<property	name=\"monthNamesShort\" />\n"
0324:                        + "<property	name=\"monthNamesLong\" />\n"
0325:                        + "<property	name=\"weekdayLetters\" />\n"
0326:                        + "<property	name=\"dateFormat\" />\n"
0327:                        + "\n"
0328:                        + "<method		name=\"setView\"			internalName=\"f_setView\" />\n"
0329:                        + "<method		name=\"refresh\"			internalName=\"f_refresh\" />\n"
0330:                        + "<attach		event=\"ondocumentready\"	handler=\"onDocumentReady\" />\n"
0331:                        + "<attach		event=\"onstop\"			handler=\"onStop\" for=\"document\" />\n"
0332:                        + "<attach		event=\"onclick\"			handler=\"onClick\" />\n"
0333:                        + "\n"
0334:                        + "<event id=\"id_OnDateChange\" name=\"OnDateChange\" />\n"
0335:                        + "<DIV id=__idExchMasterCalendarRowNode>\n"
0336:                        + "<TABLE class='calctrlTable' cellpadding='2'>\n"
0337:                        + "<TR class='calctrlRow'>\n"
0338:                        + "<TD offCell=1 weekselect=1 class='calctrlWeeklyCell'>&nbsp;&nbsp;&nbsp;</TD>\n"
0339:                        + "<TD offCell=1 class='calctrlDateCell' id=\"numbercell\"></TD>\n"
0340:                        + "<TD offCell=1 class='calctrlDateCell' id=\"numbercell\"></TD>\n"
0341:                        + "<TD offCell=1 class='calctrlDateCell' id=\"numbercell\"></TD>\n"
0342:                        + "<TD offCell=1 class='calctrlDateCell' id=\"numbercell\"></TD>\n"
0343:                        + "<TD offCell=1 class='calctrlDateCell' id=\"numbercell\"></TD>\n"
0344:                        + "<TD offCell=1 class='calctrlDateCell' id=\"numbercell\"></TD>\n"
0345:                        + "<TD offCell=1 class='calctrlDateCell' id=\"numbercell\"></TD>\n"
0346:                        + "</TR>\n"
0347:                        + "</TABLE>\n"
0348:                        + "</div>\n"
0349:                        + "<div id=__idExchMasterCalendarTableNode>\n"
0350:                        + "<TABLE border=0	cellpadding=0 cellspacing=0 class=\"calctrlTitle\">\n"
0351:                        + "<TR  >\n"
0352:                        + "<TD leftNavButton=1><img src=\"\" leftNavButton=1 border=0 height=\"10\"></TD>\n"
0353:                        + "<TD monthDisplayName=1 colspan=6 class='calctrlMonthDisplayName'></TD>\n"
0354:                        + "<TD rightNavButton=1 class='calctrlRightNavButton'><img src=\"\" rightNavButton=1 border=0 height=\"10\"></TD>\n"
0355:                        + "</TR>\n"
0356:                        + "</TABLE>\n"
0357:                        + "</DIV>\n"
0358:                        + "<SCRIPT	LANGUAGE=\"JavaScript\">\n"
0359:                        + "\n"
0360:                        + "var	m_objXSL			=	new	ActiveXObject(\"Microsoft.XMLDOM\");\n"
0361:                        + "var	m_objOutPutXML		=	new	ActiveXObject(\"Microsoft.XMLDOM\");\n"
0362:                        + "var	m_objOutPutXMLBold  =	new	ActiveXObject(\"Microsoft.XMLDOM\");\n"
0363:                        + "var	m_iIntervalID		=	null;\n"
0364:                        + "var	m_iPollInterval		=	10;\n"
0365:                        + "var	m_objXMLhttp		=	null;\n"
0366:                        + "var	m_objXMLhttpBold	=	null;\n"
0367:                        + "var	m_objXMLhttp_polling=	new	ActiveXObject(\"Microsoft.XMLhttp\");\n"
0368:                        + "var	m_iSubscriptionID	=	null;\n"
0369:                        + "var	m_fReadOnly			=	false;\n"
0370:                        + "\n"
0371:                        + "var	m_objMainDate;\n"
0372:                        + "var m_objTodaysDate	= new Date();\n"
0373:                        + "	m_objTodaysDate.setHours(0,0,0,0);\n"
0374:                        + "\n"
0375:                        + "\n"
0376:                        + "var	m_objSelectedStart;\n"
0377:                        + "var	m_objSelectedEnd;\n"
0378:                        + "\n"
0379:                        + "var	m_objMainTable		=	null;\n"
0380:                        + "var	m_objSelectedDay	=	new	Array();\n"
0381:                        + "var	m_fHasLoaded		=	false;\n"
0382:                        + "var	m_iFirstDayOfMonth	=	0;\n"
0383:                        + "var	m_iDaysInMonth		=	0;\n"
0384:                        + "var	m_iView				=	0;\n"
0385:                        + "var	m_szHighlightBG		=	\"highlight\";\n"
0386:                        + "var	m_szHighlightText	=	\"highlighttext\";\n"
0387:                        + "var	m_szNormalDateBG	=	\"window\";\n"
0388:                        + "var	m_szNormalBG		=	\"window\";\n"
0389:                        + "var	m_szNormalText		=	\"windowtext\";\n"
0390:                        + "var	m_szInactiveBG		=	\"appworkspace\";\n"
0391:                        + "var m_objStatus;\n"
0392:                        + "var m_rgCalCells;\n"
0393:                        + "var m_rgMonthNamesShort;\n"
0394:                        + "var m_rgMonthNamesLong;\n"
0395:                        + "var m_szDateFormat;\n"
0396:                        + "var m_rgWeekdayLetters;\n"
0397:                        + "var	m_fHaveData	= false;\n"
0398:                        + "var m_iStartDay;\n"
0399:                        + "var	m_oCalStartDate	= new Date();\n"
0400:                        + "var	m_oCalEndDate =	new Date();\n"
0401:                        + "var L_szUpdating;\n"
0402:                        + "var L_szUpdatingBold;\n"
0403:                        + "\n"
0404:                        + "void function onDocumentReady()\n"
0405:                        + "{\n"
0406:                        + "	var	szXSLString =\n"
0407:                        + "	'<xsl:template xmlns:xsl=\"uri:xsl\" xmlns:a=\"DAV:\"><root>' +\n"
0408:                        + "	'<xsl:for-each select=\"a:multistatus/a:response\">' +\n"
0409:                        + "	'<appointment><url><xsl:value-of select=\"a:href\" /></url>' +\n"
0410:                        + "	'<xsl:for-each select=\"a:propstat[a:status != \\'HTTP/1.1 404 Resource Not Found\\']/a:prop\">' +\n"
0411:                        + "		'<subject><xsl:value-of	select=\"subject\" /></subject>' +\n"
0412:                        + "		'<instancetype><xsl:value-of select=\"instancetype\" /></instancetype>' +\n"
0413:                        + "		'<location><xsl:value-of select=\"location\" /></location>' +\n"
0414:                        + "		'<dtstart><xsl:value-of	select=\"dtstart\" /></dtstart>' +\n"
0415:                        + "		'<dtend><xsl:value-of select=\"dtend\" /></dtend>' +\n"
0416:                        + "		'<busystatus><xsl:value-of select=\"busystatus\" /></busystatus>'	+ \n"
0417:                        + "		'<alldayevent><xsl:value-of	select=\"alldayevent\" /></alldayevent>' +\n"
0418:                        + "		'<pr_cdormid><xsl:value-of	select=\"pr_cdormid\" /></pr_cdormid>' +\n"
0419:                        + "		'<sensitivity><xsl:value-of	select=\"sensitivity\" /></sensitivity>' +\n"
0420:                        + "		'<apptstateflags><xsl:value-of	select=\"apptstateflags\" /></apptstateflags>' +\n"
0421:                        + "		'<uid><xsl:value-of	select=\"uid\" /></uid>' +\n"
0422:                        + "	'</xsl:for-each></appointment></xsl:for-each></root></xsl:template>';\n"
0423:                        + "\n"
0424:                        + "	m_objXSL.loadXML(szXSLString);\n"
0425:                        + "\n"
0426:                        + "	/**************Do initial calendar rendering******************/\n"
0427:                        + "	m_iStartDay =	(this.startDay == null)?0:Number(this.startDay);\n"
0428:                        + "	with (this.__idExchMasterCalendarTableNode.children[0])\n"
0429:                        + "	{\n"
0430:                        + "		cells[0].children[0].src =	this.prevMonthImage;\n"
0431:                        + "		cells[2].children[0].src =	this.nextMonthImage;\n"
0432:                        + "	}\n"
0433:                        + "	mfRenderCalendar();\n"
0434:                        + "\n"
0435:                        + "	m_rgMonthNamesShort = (null == this.monthnamesShort || \"\" == this.monthnamesShort)?\n"
0436:                        + "						   \"Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec\".split(\";\"):\n"
0437:                        + "						   this.monthnamesShort.split(\";\");\n"
0438:                        + "	m_rgMonthNamesLong  = (null == this.monthnamesLong || \"\" == this.monthnamesLong)?\n"
0439:                        + "						   \"January;February;March;April;May;June;July;August;September;October;November;December\".split(\";\"):\n"
0440:                        + "						   this.monthnamesLong.split(\";\");\n"
0441:                        + "	m_rgWeekdayLetters = (this.weekdayLetters)?this.weekdayLetters.split(\";\"):\"M;T;W;T;F;S;S\".split(\";\");\n"
0442:                        + "	m_szDateFormat = (this.dateFormat)?this.dateFormat:\"[MMMM] [yyyy]\";\n"
0443:                        + "	var	iM=-1,iD=-1,iY=-1,szX;\n"
0444:                        + "	m_objMainTable = this.children[0];\n"
0445:                        + "	m_rgCalCells = m_objMainTable.cells[\"numbercell\"];\n"
0446:                        + "	for(var i =	0; i < 7; i++) //day letters\n"
0447:                        + "	{\n"
0448:                        + "		with(m_rgCalCells[i])\n"
0449:                        + "		{\n"
0450:                        + "			innerText = m_rgWeekdayLetters[( (m_iStartDay+i)%m_rgWeekdayLetters.length )];\n"
0451:                        + "			dayNameCell = \"1\";\n"
0452:                        + "			style.backgroundColor = m_szNormalBG;\n"
0453:                        + "			style.color	 = m_szNormalText;\n"
0454:                        + "			style.borderBottom = \"solid 1px black\";\n"
0455:                        + "		}\n"
0456:                        + "	}\n"
0457:                        + "	//parseInt treats leading '0' as octal numbers\n"
0458:                        + "	//need to disect the whole number and use Number()\n"
0459:                        + "	iM = parseURLfor(\"m\");\n"
0460:                        + "	iM = (null==iM || \"\"==iM)?-1:Number(iM);\n"
0461:                        + "	iD = parseURLfor(\"d\");\n"
0462:                        + "	iD = (null==iD || \"\"==iD)?-1:Number(iD);\n"
0463:                        + "	iY = parseURLfor(\"y\");\n"
0464:                        + "	iY = (null==iY || \"\"==iY)?-1:Number(iY);\n"
0465:                        + "\n"
0466:                        + "	if(-3 == iM+iY+iD)//no date info on the url\n"
0467:                        + "	{\n"
0468:                        + "		m_objMainDate =	new	Date();	 //use todays date\n"
0469:                        + "	}\n"
0470:                        + "	else\n"
0471:                        + "	{\n"
0472:                        + "		//missing defaults to current month/year and 1st day of	month\n"
0473:                        + "		iM = (isNaN(iM)	|| iM == -1)?m_objTodaysDate.getMonth():iM-1;\n"
0474:                        + "		iY = (isNaN(iY)	|| iY == -1)?m_objTodaysDate.getFullYear():iY;\n"
0475:                        + "		iD = (isNaN(iD)	|| iD == -1)?1:iD;\n"
0476:                        + "			\n"
0477:                        + "		try\n"
0478:                        + "		{\n"
0479:                        + "			m_objMainDate =	new Date(iY,iM,iD);	 \n"
0480:                        + "		}\n"
0481:                        + "		catch(e)\n"
0482:                        + "		{\n"
0483:                        + "			m_objMainDate =	new Date();	 \n"
0484:                        + "		}\n"
0485:                        + "	}\n"
0486:                        + "	m_objSelectedStart	=	new	Date(m_objMainDate);\n"
0487:                        + "	m_objSelectedEnd	=	new	Date(m_objMainDate);\n"
0488:                        + "	//search url for view\n"
0489:                        + "	var szView = parseURLfor(\"view\");\n"
0490:                        + "	szView = (null == szView)?\"daily\":szView.toLowerCase();\n"
0491:                        + "	m_iView=(szView==\"weekly\")?1:( (szView==\"monthly\")?2:0 );\n"
0492:                        + "	if (1 == m_iView) //adjust selects weekly\n"
0493:                        + "	{//need to find start of this week\n"
0494:                        + "		i = m_objSelectedStart.getDay()-m_iStartDay;\n"
0495:                        + "		i+=(0>=i)?7:0;\n"
0496:                        + "		m_objSelectedStart.setDate(m_objSelectedStart.getDate()-i);\n"
0497:                        + "		m_objSelectedEnd.setDate(m_objSelectedStart.getDate()+6);\n"
0498:                        + "	}\n"
0499:                        + "	else if (2==m_iView) //monthly\n"
0500:                        + "	{\n"
0501:                        + "		m_objSelectedStart.setDate(1);\n"
0502:                        + "		i = m_objSelectedStart.getDay()-m_iStartDay;\n"
0503:                        + "		i+=(0>=i)?7:0;\n"
0504:                        + "		m_objSelectedStart.setDate(m_objSelectedStart.getDate()-i);\n"
0505:                        + "		\n"
0506:                        + "		m_objSelectedEnd.setTime( m_objSelectedStart.getTime()+(41*86400000) );\n"
0507:                        + "	}\n"
0508:                        + "	m_objSelectedStart.setHours(0,0,0,0);\n"
0509:                        + "	m_objSelectedEnd.setHours(24,0,0,0);\n"
0510:                        + "\n"
0511:                        + "	mfUpdateCalendar(true,true);\n"
0512:                        + "}\n"
0513:                        + "void function fire_OnDateChange(objXML)\n"
0514:                        + "{\n"
0515:                        + "	if(m_fHaveData)\n"
0516:                        + "	{\n"
0517:                        + "		var objEvent = createEventObject();\n"
0518:                        + "		objEvent.xml = objXML;\n"
0519:                        + "		objEvent.view = m_iView;\n"
0520:                        + "		objEvent.date = (2==m_iView)?m_objMainDate:m_objSelectedStart;\n"
0521:                        + "		id_OnDateChange.fire(objEvent);\n"
0522:                        + "	}\n"
0523:                        + "}\n"
0524:                        + "\n"
0525:                        + "void function onStop() \n"
0526:                        + "{\n"
0527:                        + "	if(m_iIntervalID)\n"
0528:                        + "	{\n"
0529:                        + "		window.clearInterval(m_iIntervalID);\n"
0530:                        + "	}\n"
0531:                        + "}\n"
0532:                        + "void function onClick()\n"
0533:                        + "{\n"
0534:                        + "	event.cancelBubble=true;\n"
0535:                        + "	if(!m_fReadOnly)\n"
0536:                        + "	{\n"
0537:                        + "		if(null != event.srcElement.dayCell)\n"
0538:                        + "		{ \n"
0539:                        + "			mfSetDailyView(event.srcElement);\n"
0540:                        + "			return;\n"
0541:                        + "		}\n"
0542:                        + "		else if(null != event.srcElement.leftNavButton)\n"
0543:                        + "		{\n"
0544:                        + "			m_objMainDate.setMonth(m_objMainDate.getMonth()-1);\n"
0545:                        + "			mfUpdateCalendar(false,true);\n"
0546:                        + "			return;\n"
0547:                        + "		}\n"
0548:                        + "		else if(null != event.srcElement.rightNavButton)\n"
0549:                        + "		{\n"
0550:                        + "			m_objMainDate.setMonth(m_objMainDate.getMonth()+1);\n"
0551:                        + "			mfUpdateCalendar(false,true);\n"
0552:                        + "			return;\n"
0553:                        + "		}\n"
0554:                        + "		else if(null != event.srcElement.monthDisplayName)\n"
0555:                        + "		{\n"
0556:                        + "			mfSetMonthlyView();\n"
0557:                        + "		}\n"
0558:                        + "		else if(null != event.srcElement.weekselect)\n"
0559:                        + "		{\n"
0560:                        + "			mfSetWeeklyView(m_objMainTable.rows[event.srcElement.parentElement.rowIndex].cells[1]);\n"
0561:                        + "		}\n"
0562:                        + "	}\n"
0563:                        + "}\n"
0564:                        + "\n"
0565:                        + "void function mfSetDailyView(eCell)\n"
0566:                        + "{\n"
0567:                        + "	m_iView=0;\n"
0568:                        + "	m_objSelectedStart.setFullYear(eCell.year,eCell.month,parseInt(eCell.innerText));\n"
0569:                        + "	m_objSelectedEnd.setTime(m_objSelectedStart);\n"
0570:                        + "	mfFindAndSelectDate();\n"
0571:                        + "	mfGetAppointments(true,false,true);\n"
0572:                        + "}\n"
0573:                        + "void function mfSetWeeklyView(eCell)\n"
0574:                        + "{\n"
0575:                        + "	m_iView=1;\n"
0576:                        + "	m_objSelectedStart.setFullYear(eCell.year,eCell.month,eCell.innerText);\n"
0577:                        + "	m_objSelectedEnd.setFullYear(eCell.year,eCell.month,Number(eCell.innerText)+6);\n"
0578:                        + "	mfFindAndSelectDate();\n"
0579:                        + "	mfGetAppointments(true,false,true);\n"
0580:                        + "}\n"
0581:                        + "void function mfSetMonthlyView()\n"
0582:                        + "{\n"
0583:                        + "	m_iView=2;\n"
0584:                        + "	m_objSelectedStart.setTime(m_oCalStartDate);\n"
0585:                        + "	m_objSelectedEnd.setTime(m_oCalEndDate);\n"
0586:                        + "	mfFindAndSelectDate();\n"
0587:                        + "	mfGetAppointments(true,false,true);\n"
0588:                        + "}\n"
0589:                        + "void function f_setView(iView)\n"
0590:                        + "{\n"
0591:                        + "	//use the currently selected cell to determine view\n"
0592:                        + "	if(m_iView == iView)\n"
0593:                        + "	{\n"
0594:                        + "		return;\n"
0595:                        + "	}\n"
0596:                        + "	m_iView	= iView;\n"
0597:                        + "	switch(iView)\n"
0598:                        + "	{\n"
0599:                        + "	case 1:\n"
0600:                        + "		//use the last selected day or today\n"
0601:                        + "		var x=(-1<mfFindAndSelectDate.iHoldLastDaily)?mfFindAndSelectDate.iHoldLastDaily:mfFindAndSelectDate.iStartIdx;\n"
0602:                        + "		mfSetWeeklyView(m_objMainTable.rows[m_rgCalCells[x].parentElement.rowIndex].cells[1]);\n"
0603:                        + "		break;\n"
0604:                        + "	case 2:\n"
0605:                        + "		mfSetMonthlyView();\n"
0606:                        + "		break;\n"
0607:                        + "	case 0:\n"
0608:                        + "	default:\n"
0609:                        + "		var x=(-1<mfFindAndSelectDate.iHoldLastDaily)?mfFindAndSelectDate.iHoldLastDaily:mfFindAndSelectDate.iStartIdx;\n"
0610:                        + "		mfSetDailyView(m_rgCalCells[x]);\n"
0611:                        + "	}\n"
0612:                        + "}\n"
0613:                        + "//unselects	current	selection\n"
0614:                        + "//searches calendar	for	matching date cell given in	m_objSelectedStart\n"
0615:                        + "mfFindAndSelectDate.iStartIdx=-1;\n"
0616:                        + "mfFindAndSelectDate.iEndIdx=-1;\n"
0617:                        + "mfFindAndSelectDate.iHoldLastDaily=-1;\n"
0618:                        + "void function mfFindAndSelectDate()\n"
0619:                        + "{\n"
0620:                        + "	var x,y;\n"
0621:                        + "	\n"
0622:                        + "	if (mfFindAndSelectDate.iStartIdx>-1)\n"
0623:                        + "	{ //remove any prev selection\n"
0624:                        + "		for(x=mfFindAndSelectDate.iStartIdx;x<=mfFindAndSelectDate.iEndIdx;x++)\n"
0625:                        + "		{\n"
0626:                        + "			m_rgCalCells[x].style.backgroundColor=m_rgCalCells[x].dayCell;\n"
0627:                        + "			m_rgCalCells[x].style.color=m_szNormalText;\n"
0628:                        + "		}\n"
0629:                        + "		mfFindAndSelectDate.iStartIdx=-1;\n"
0630:                        + "	}\n"
0631:                        + "	if (m_objSelectedStart>m_oCalEndDate || m_objSelectedEnd<m_oCalStartDate)\n"
0632:                        + "	{\n"
0633:                        + "		return;\n"
0634:                        + "	}\n"
0635:                        + "	x=7;\n"
0636:                        + "	if(2==m_iView) //monthly\n"
0637:                        + "	{\n"
0638:                        + "		if(m_objSelectedStart.getTime() == m_oCalStartDate.getTime()) //whole month showing\n"
0639:                        + "		{\n"
0640:                        + "			y=m_rgCalCells.length-1;\n"
0641:                        + "		}\n"
0642:                        + "		else if(m_objSelectedStart<m_oCalStartDate&&m_objSelectedEnd>m_oCalStartDate) //do 1st grey area\n"
0643:                        + "		{\n"
0644:                        + "			mfFindAndSelectDate.iStartIdx=7;\n"
0645:                        + "			for(x=7;\"1\"!=m_rgCalCells[x].innerText;x++)\n"
0646:                        + "			{\n"
0647:                        + "				m_rgCalCells[x].style.backgroundColor = m_szHighlightBG;\n"
0648:                        + "				m_rgCalCells[x].style.color = m_szHighlightText;\n"
0649:                        + "			}\n"
0650:                        + "			mfFindAndSelectDate.iEndIdx=x;\n"
0651:                        + "			return;\n"
0652:                        + "		}\n"
0653:                        + "		else if(m_objSelectedStart<m_oCalEndDate&&m_objSelectedEnd>m_oCalEndDate)//last gray area\n"
0654:                        + "		{\n"
0655:                        + "			x=m_rgCalCells.length-1;\n"
0656:                        + "			mfFindAndSelectDate.iEndIdx=x;\n"
0657:                        + "			for(;\"1\"!=m_rgCalCells[x].innerText;x--)\n"
0658:                        + "			{\n"
0659:                        + "				m_rgCalCells[x].style.backgroundColor = m_szHighlightBG;\n"
0660:                        + "				m_rgCalCells[x].style.color = m_szHighlightText;\n"
0661:                        + "			}\n"
0662:                        + "			m_rgCalCells[x].style.backgroundColor = m_szHighlightBG;\n"
0663:                        + "			m_rgCalCells[x].style.color = m_szHighlightText;\n"
0664:                        + "			mfFindAndSelectDate.iStartIdx=x-1;\n"
0665:                        + "			return;\n"
0666:                        + "		}\n"
0667:                        + "		else\n"
0668:                        + "		{\n"
0669:                        + "			return;\n"
0670:                        + "		}\n"
0671:                        + "	}\n"
0672:                        + "	else if (m_objSelectedStart>=m_oCalStartDate && m_objSelectedStart<=m_oCalEndDate)\n"
0673:                        + "	{\n"
0674:                        + "		x=Math.round((m_objSelectedStart-m_oCalStartDate)/86400000)+7;\n"
0675:                        + "	}\n"
0676:                        + "	y=x;\n"
0677:                        + "	if (0 != m_iView)\n"
0678:                        + "	{\n"
0679:                        + "		y=(2==m_iView)?m_rgCalCells.length-1:x+6;\n"
0680:                        + "		if (2==m_iView && m_objSelectedEnd<m_oCalEndDate)\n"
0681:                        + "		{\n"
0682:                        + "			y=Math.round((m_objSelectedEnd-m_oCalStartDate)/86400000)+7;\n"
0683:                        + "		}\n"
0684:                        + "	}\n"
0685:                        + "	mfFindAndSelectDate.iStartIdx=(x<49)?x:-1;\n"
0686:                        + "	mfFindAndSelectDate.iEndIdx=(y<49)?y:-1;;\n"
0687:                        + "	for (;(x<=y && x<49);x++)\n"
0688:                        + "	{\n"
0689:                        + "		m_rgCalCells[x].style.backgroundColor = m_szHighlightBG;\n"
0690:                        + "		m_rgCalCells[x].style.color = m_szHighlightText;\n"
0691:                        + "	}\n"
0692:                        + "	if (m_iView==0)\n"
0693:                        + "	{\n"
0694:                        + "		mfFindAndSelectDate.iHoldLastDaily=mfFindAndSelectDate.iStartIdx;\n"
0695:                        + "	}\n"
0696:                        + "}\n"
0697:                        + "\n"
0698:                        + "//PARAM: iMonth - jan=0\n"
0699:                        + "function mfGetDaysInMonth(iMonth, iYear)\n"
0700:                        + "{\n"
0701:                        + "	iMonth+=(iMonth==-1)?13:1; //remove 0 offset (1=jan)\n"
0702:                        + "	return( (2 == iMonth) ? (28+mfIsLeapYear(iYear)):(30+((iMonth+(iMonth>7))%2)));\n"
0703:                        + "}\n"
0704:                        + "function mfIsLeapYear(yr)\n"
0705:                        + "{\n"
0706:                        + "	return((yr	% 4	== 0) && (yr % 100 != 0) ||	(yr	% 400 == 0))?1:0;\n"
0707:                        + "}\n"
0708:                        + "\n"
0709:                        + "mfWriteCellNumbers.todayCellIdx=-1;\n"
0710:                        + "void function mfWriteCellNumbers()\n"
0711:                        + "{\n"
0712:                        + "	m_objMainDate.setDate(1);\n"
0713:                        + "\n"
0714:                        + "	var iM = m_objMainDate.getMonth();\n"
0715:                        + "	var iY = m_objMainDate.getFullYear();\n"
0716:                        + "	var iY2 = iY%100;\n"
0717:                        + "\n"
0718:                        + "	var szCaptionText = this.m_szDateFormat.replace(/\\[MMMM\\]/g, m_rgMonthNamesLong[iM]);\n"
0719:                        + "		\n"
0720:                        + "	szCaptionText = szCaptionText.replace(/\\[MMM\\]/g, m_rgMonthNamesShort[iM]);\n"
0721:                        + "	szCaptionText = szCaptionText.replace(/\\[MM\\]/g, ++iM<10 ? \"0\"+iM : iM );\n"
0722:                        + "	szCaptionText = szCaptionText.replace(/\\[M\\]/g, iM);\n"
0723:                        + "	szCaptionText = szCaptionText.replace(/\\[yyy+\\]/g, iY);\n"
0724:                        + "	szCaptionText = szCaptionText.replace(/\\[y+\\]/g, iY2>9?iY2:\"0\"+iY2);\n"
0725:                        + "\n"
0726:                        + "	m_objMainTable.rows[0].cells[1].innerText= szCaptionText;\n"
0727:                        + "\n"
0728:                        + "	m_oCalStartDate.setTime(m_objMainDate);\n"
0729:                        + "	m_oCalEndDate.setTime(m_objMainDate);\n"
0730:                        + "\n"
0731:                        + "	var x=m_objMainDate.getDay()-m_iStartDay;\n"
0732:                        + "	x+=(0>=x)?7:0; //show entire previous week\n"
0733:                        + "	m_oCalStartDate.setDate(1-x); //this is now the first date on the calendar\n"
0734:                        + "	m_oCalStartDate.setHours(0,0,0,0);\n"
0735:                        + "	m_oCalEndDate.setDate((1-x)+41);\n"
0736:                        + "	m_oCalEndDate.setHours(24,0,0,0);\n"
0737:                        + "\n"
0738:                        + "	var iD = m_oCalStartDate.getDate();\n"
0739:                        + "	var iM = m_oCalStartDate.getMonth();\n"
0740:                        + "	var iY = m_oCalStartDate.getFullYear();\n"
0741:                        + "	var iDm = mfGetDaysInMonth(iM,iY);\n"
0742:                        + "	var bg = (x==0)?m_szNormalDateBG:m_szInactiveBG;\n"
0743:                        + "	var y=7+iDm;\n"
0744:                        + "	for(x=7;iD<=iDm;x++)\n"
0745:                        + "	{\n"
0746:                        + "		m_rgCalCells[x].month=iM;\n"
0747:                        + "		m_rgCalCells[x].year =iY;\n"
0748:                        + "		m_rgCalCells[x].dayCell = bg;\n"
0749:                        + "		with(m_rgCalCells[x])\n"
0750:                        + "		{\n"
0751:                        + "			innerText = iD++;\n"
0752:                        + "			style.backgroundColor = bg;\n"
0753:                        + "			style.color = m_szNormalText;\n"
0754:                        + "			style.fontWeight = \"normal\";\n"
0755:                        + "		}\n"
0756:                        + "	}\n"
0757:                        + "	var iLastCell = m_rgCalCells.length;\n"
0758:                        + "	while(x<iLastCell)\n"
0759:                        + "	{\n"
0760:                        + "		iD=1;\n"
0761:                        + "		iM=(11==iM)?0:iM+1;\n"
0762:                        + "		if (0==iM ) iY++;\n"
0763:                        + "		var iDm = mfGetDaysInMonth(iM,iY);\n"
0764:                        + "		bg=(bg==m_szInactiveBG)?m_szNormalDateBG:m_szInactiveBG;\n"
0765:                        + "		if ((iDm+x) > iLastCell) iDm=iLastCell-x; //dont past last cell\n"
0766:                        + "		for(;iD<=iDm;x++)\n"
0767:                        + "		{\n"
0768:                        + "			//if (x>=iLastCell) break;\n"
0769:                        + "			m_rgCalCells[x].month=iM;\n"
0770:                        + "			m_rgCalCells[x].year =iY;\n"
0771:                        + "			m_rgCalCells[x].dayCell = bg;\n"
0772:                        + "			with(m_rgCalCells[x])\n"
0773:                        + "			{\n"
0774:                        + "				innerText = iD++;\n"
0775:                        + "				style.backgroundColor = bg;\n"
0776:                        + "				style.color = m_szNormalText;\n"
0777:                        + "				style.fontWeight = \"normal\";\n"
0778:                        + "			}\n"
0779:                        + "		}\n"
0780:                        + "	}\n"
0781:                        + "	if (-1!=mfWriteCellNumbers.todayCellIdx)\n"
0782:                        + "	{\n"
0783:                        + "		m_rgCalCells[mfWriteCellNumbers.todayCellIdx].style.border = \"none\";\n"
0784:                        + "		mfWriteCellNumbers.todayCellIdx=-1;\n"
0785:                        + "	}\n"
0786:                        + "	//is todays date on this calendar (needs red border)\n"
0787:                        + "	if(m_objTodaysDate > m_oCalStartDate && m_objTodaysDate < m_oCalEndDate)\n"
0788:                        + "	{ \n"
0789:                        + "		//add one hour 3600000 (for daylight spring losing an hour) and floor (DST fall works with floor)\n"
0790:                        + "		x = Math.floor((m_objTodaysDate - m_oCalStartDate + 3600000)/86400000)\n"
0791:                        + "		m_rgCalCells[x+7].style.border = \"solid 1 red\";\n"
0792:                        + "		mfWriteCellNumbers.todayCellIdx=x+7;\n"
0793:                        + "	}\n"
0794:                        + "	//prev selection has been wiped!\n"
0795:                        + "	mfFindAndSelectDate.iStartIdx=-1;\n"
0796:                        + "}\n"
0797:                        + "\n"
0798:                        + "void function mfUpdateCalendar(fRenderView,fUpdateBolding)\n"
0799:                        + "{\n"
0800:                        + "	mfWriteCellNumbers();\n"
0801:                        + "	mfFindAndSelectDate();\n"
0802:                        + "	if (!fUpdateBolding)\n"
0803:                        + "	{\n"
0804:                        + "		mfGetAppointments(fRenderView,false,true);\n"
0805:                        + "	}\n"
0806:                        + "	else\n"
0807:                        + "	{\n"
0808:                        + "		if (fRenderView) //refresh data then bold\n"
0809:                        + "		{\n"
0810:                        + "			mfGetAppointments(fRenderView,true,true);\n"
0811:                        + "		}\n"
0812:                        + "		else\n"
0813:                        + "		{\n"
0814:                        + "			mfGetBoldData(true);\n"
0815:                        + "		}	\n"
0816:                        + "	}		\n"
0817:                        + "}\n"
0818:                        + "\n"
0819:                        + "void function mfRenderCalendar()\n"
0820:                        + "{\n"
0821:                        + "	var	masterTableNode	= this.__idExchMasterCalendarTableNode.children[0];\n"
0822:                        + "	var	masterRowNode	= this.__idExchMasterCalendarRowNode.children[0];\n"
0823:                        + "	var	newNode=null;\n"
0824:                        + "	for(var i=0;i<7;i++)\n"
0825:                        + "	{\n"
0826:                        + "		newNode=masterRowNode.cloneNode(true);\n"
0827:                        + "		if(0==i)\n"
0828:                        + "		{\n"
0829:                        + "			newNode.cells[0].weekselect=null;\n"
0830:                        + "			newNode.cells[0].monthDisplayName=\"1\";\n"
0831:                        + "		}\n"
0832:                        + "		masterTableNode.insertAdjacentElement(\"BeforeEnd\",newNode.children[0]);\n"
0833:                        + "	}\n"
0834:                        + "	this.insertAdjacentElement(\"BeforeEnd\",masterTableNode);\n"
0835:                        + "	m_objMainTable=masterTableNode;\n"
0836:                        + "}\n"
0837:                        + "mfGetBoldData.szQuery=\"\";\n"
0838:                        + "void function mfGetBoldData(fResetQuery)\n"
0839:                        + "{\n"
0840:                        + "	if(null != m_objStatus )\n"
0841:                        + "	{\n"
0842:                        + "		m_objStatus.style.display=\"\";\n"
0843:                        + "		m_objStatus.innerText = L_szUpdatingBold;\n"
0844:                        + "	}\n"
0845:                        + "	m_fHaveData	= true;//allow event firings\n"
0846:                        + "	if (\"\"==mfGetBoldData.szQuery) fResetQuery=true;\n"
0847:                        + "	if (fResetQuery)\n"
0848:                        + "	{\n"
0849:                        + "		var	iX = 7;\n"
0850:                        + "		iX = m_rgCalCells.length - 1;\n"
0851:                        + "		var szDateStart=mfGetSearchDateUTC(m_oCalStartDate);\n"
0852:                        + "		var szDateEnd=mfGetSearchDateUTC(m_oCalEndDate);\n"
0853:                        + "		mfGetBoldData.szQuery ='<a:searchrequest xmlns:a=\"DAV:\" > ' +\n"
0854:                        + "		'<a:sql>Select ' +\n"
0855:                        + "		 '\"urn:schemas:calendar:dtstart\" AS dtstart, ' +\n"
0856:                        + "		 '\"urn:schemas:calendar:dtend\" AS dtend, ' +\n"
0857:                        + "		 '\"urn:schemas:calendar:alldayevent\" AS alldayevent ' +\n"
0858:                        + "		'FROM Scope(\\'SHALLOW TRAVERSAL OF \"\"\\') ' +\n"
0859:                        + "		'WHERE NOT \"urn:schemas:calendar:instancetype\" = 1 ' +\n"
0860:                        + "		'AND NOT \"urn:schemas:calendar:busystatus\" = \\'FREE\\' ' +\n"
0861:                        + "		  'AND \"urn:schemas:calendar:dtend\" &gt; \\''+szDateStart+'\\' ' +\n"
0862:                        + "		  'AND \"urn:schemas:calendar:dtstart\" &lt; \\''+szDateEnd+'\\' ' +\n"
0863:                        + "		'ORDER BY \"urn:schemas:calendar:dtstart\" ASC ' +\n"
0864:                        + "		'</></>';\n"
0865:                        + "\n"
0866:                        + "	}\n"
0867:                        + "	m_objXMLhttpBold = new ActiveXObject(\"Microsoft.XMLhttp\");\n"
0868:                        + "	try\n"
0869:                        + "	{\n"
0870:                        + "		m_objXMLhttpBold.open(\"SEARCH\",	folderURL, true);\n"
0871:                        + "		m_objXMLhttpBold.setRequestHeader(\"Content-Type\", \"text/xml\");\n"
0872:                        + "		m_objXMLhttpBold.onreadystatechange = onRSC_getBoldData;\n"
0873:                        + "		m_objXMLhttpBold.send(mfGetBoldData.szQuery);\n"
0874:                        + "	}\n"
0875:                        + "	catch(e)\n"
0876:                        + "	{\n"
0877:                        + "		alert(\"Error in	ExchangeCalendar.HTC mfGetBoldData() with searchrequest: \"+e.description);\n"
0878:                        + "	}\n"
0879:                        + "}\n"
0880:                        + "\n"
0881:                        + "\n"
0882:                        + "//holds	calendar date range	including greyed next/prev months\n"
0883:                        + "mfGetAppointments.m_dTemp = new Date();\n"
0884:                        + "mfGetAppointments.szQuery=\"\";\n"
0885:                        + "void function mfGetAppointments(fRenderVeiw,fUpdateBolding,fResetQuery)\n"
0886:                        + "{\n"
0887:                        + "	if (true == fUpdateBolding) \n"
0888:                        + "	{\n"
0889:                        + "		onRSC_getAppointments.fUpdateBolding = true; //we will bold after getting the appt data\n"
0890:                        + "	}	\n"
0891:                        + "	if(null != m_objStatus )\n"
0892:                        + "	{\n"
0893:                        + "		m_objStatus.style.display=\"\";\n"
0894:                        + "		m_objStatus.innerText = L_szUpdating;\n"
0895:                        + "	}\n"
0896:                        + "\n"
0897:                        + "	onRSC_getAppointments.fResetQuery=fResetQuery;\n"
0898:                        + "	m_fHaveData	= false; //stop	event firings\n"
0899:                        + "\n"
0900:                        + "	//Use last stored query in case where polling fires but user has calendar in another month than the view\n"
0901:                        + "	//Happens most when going out past the expansion which fires another expansion with triggers polling changes\n"
0902:                        + "	if (\"\"==mfGetAppointments.szQuery) fResetQuery=true;\n"
0903:                        + "	if (fResetQuery)\n"
0904:                        + "	{\n"
0905:                        + "		var iX = 7;\n"
0906:                        + "		iX = m_rgCalCells.length - 1;\n"
0907:                        + "		if (2==m_iView) //monthly gets full 6 weeks\n"
0908:                        + "		{\n"
0909:                        + "			//this shifts an extra day for the montly view calendar in sunday start\n"
0910:                        + "			//while view shows monday start (same problem with weekly view)\n"
0911:                        + "			if (0==m_iStartDay)\n"
0912:                        + "			{\n"
0913:                        + "				m_oCalStartDate.setHours(24,0,0,0);\n"
0914:                        + "				m_oCalEndDate.setHours(24,0,0,0);\n"
0915:                        + "				var szDateStart	= mfGetSearchDateUTC(m_oCalStartDate);\n"
0916:                        + "				var szDateEnd =	mfGetSearchDateUTC(m_oCalEndDate);\n"
0917:                        + "				m_oCalStartDate.setHours(-24,0,0,0);\n"
0918:                        + "				m_oCalEndDate.setHours(-24,0,0,0);\n"
0919:                        + "			}\n"
0920:                        + "			else\n"
0921:                        + "			{\n"
0922:                        + "				var szDateStart	= mfGetSearchDateUTC(m_oCalStartDate);\n"
0923:                        + "				var szDateEnd =	mfGetSearchDateUTC(m_oCalEndDate);\n"
0924:                        + "			}\n"
0925:                        + "		}\n"
0926:                        + "		else if (1==m_iView)//weekly\n"
0927:                        + "		{\n"
0928:                        + "			//this shifts an extra day for the weekly view calendar in sunday start \n"
0929:                        + "			//while view shows monday start (same problem with monthly view)\n"
0930:                        + "			if (0==m_iStartDay)\n"
0931:                        + "			{\n"
0932:                        + "				m_objSelectedStart.setHours(24,0,0,0);\n"
0933:                        + "				var szDateStart	= mfGetSearchDateUTC(m_objSelectedStart);\n"
0934:                        + "				m_objSelectedStart.setHours(168,0,0,0);\n"
0935:                        + "				var szDateEnd =	mfGetSearchDateUTC(m_objSelectedStart);\n"
0936:                        + "				m_objSelectedStart.setHours(-192,0,0,0);\n"
0937:                        + "			}\n"
0938:                        + "			else\n"
0939:                        + "			{\n"
0940:                        + "				var szDateStart	= mfGetSearchDateUTC(m_objSelectedStart);\n"
0941:                        + "				m_objSelectedStart.setHours(168,0,0,0);\n"
0942:                        + "				var szDateEnd =	mfGetSearchDateUTC(m_objSelectedStart);\n"
0943:                        + "				m_objSelectedStart.setHours(-168,0,0,0);\n"
0944:                        + "			}\n"
0945:                        + "		}	\n"
0946:                        + "		else //daily view (default)\n"
0947:                        + "		{\n"
0948:                        + "			var szDateStart	= mfGetSearchDateUTC(m_objSelectedStart);\n"
0949:                        + "			m_objSelectedStart.setHours(24,0,0,0);\n"
0950:                        + "			var szDateEnd =	mfGetSearchDateUTC(m_objSelectedStart);\n"
0951:                        + "			m_objSelectedStart.setHours(-24,0,0,0);\n"
0952:                        + "		}\n"
0953:                        + "\n"
0954:                        + "		mfGetAppointments.szQuery='<a:searchrequest xmlns:a=\"DAV:\" > ' +\n"
0955:                        + "		'<a:sql>Select ' +\n"
0956:                        + "		 '\"urn:schemas:calendar:location\" AS location, ' +\n"
0957:                        + "		 '\"urn:schemas:httpmail:subject\" AS subject, '+\n"
0958:                        + "		 '\"urn:schemas:calendar:dtstart\" AS dtstart, ' +\n"
0959:                        + "		 '\"urn:schemas:calendar:dtend\" AS dtend, ' +\n"
0960:                        + "		 '\"urn:schemas:calendar:busystatus\" AS busystatus, ' +\n"
0961:                        + "		 '\"urn:schemas:calendar:instancetype\" AS instancetype, ' +\n"
0962:                        + "		 '\"urn:schemas:calendar:alldayevent\" AS alldayevent, ' +\n"
0963:                        + "		 '\"http://schemas.microsoft.com/mapi/proptag/x10c70003\" AS pr_cdormid, ' +\n"
0964:                        + "		 '\"http://schemas.microsoft.com/exchange/sensitivity-long\" AS sensitivity, '+\n"
0965:                        + "		 '\"http://schemas.microsoft.com/mapi/apptstateflags\" AS apptstateflags, '+\n"
0966:                        + "		 '\"urn:schemas:calendar:uid\" AS uid ' +\n"
0967:                        + "		'FROM Scope(\\'SHALLOW TRAVERSAL OF \"\"\\') ' +\n"
0968:                        + "		'WHERE NOT \"urn:schemas:calendar:instancetype\" = 1 ' +\n"
0969:                        + "		  'AND \"urn:schemas:calendar:dtend\" &gt; \\''+szDateStart+'\\'  ' +\n"
0970:                        + "		  'AND \"urn:schemas:calendar:dtstart\" &lt; \\''+szDateEnd+'\\' ' +\n"
0971:                        + "		'ORDER BY \"urn:schemas:calendar:dtstart\" ASC ' +\n"
0972:                        + "		'</></>';\n"
0973:                        + "		\n"
0974:                        + "	}\n"
0975:                        + "	\n"
0976:                        + "	m_objXMLhttp = new ActiveXObject(\"Microsoft.XMLhttp\");\n"
0977:                        + "	onRSC_getAppointments.fRenderView=fRenderVeiw;\n"
0978:                        + "	try\n"
0979:                        + "	{\n"
0980:                        + "		m_objXMLhttp.open(\"SEARCH\",folderURL, true);\n"
0981:                        + "		m_objXMLhttp.setRequestHeader(\"Content-Type\",\"text/xml\");\n"
0982:                        + "		m_objXMLhttp.onreadystatechange = onRSC_getAppointments;\n"
0983:                        + "		m_objXMLhttp.send(mfGetAppointments.szQuery);\n"
0984:                        + "	}\n"
0985:                        + "	catch(e)\n"
0986:                        + "	{\n"
0987:                        + "		alert(\"Error in	ExchangeCalendar.HTC mfGetAppointments() with searchrequest: \"+e.description);\n"
0988:                        + "		onRSC_getAppointments.fRenderView = true;\n"
0989:                        + "	}\n"
0990:                        + "}\n"
0991:                        + "\n"
0992:                        + "//returns UTC date in \"yyyy/mm/dd hh:mm:ss\"	format for DAV searchrequests\n"
0993:                        + "void function mfGetSearchDateUTC(objDate)\n"
0994:                        + "{\n"
0995:                        + "	var	szYear		= objDate.getUTCFullYear();\n"
0996:                        + "	var	szMonth		= objDate.getUTCMonth()+1;\n"
0997:                        + "	var	szDate		= objDate.getUTCDate();\n"
0998:                        + "	var	szHrs		= objDate.getUTCHours();\n"
0999:                        + "	var	szMin		= objDate.getUTCMinutes();\n"
1000:                        + "	return (  szYear+\"/\"+\n"
1001:                        + "			((szMonth<10)?(\"0\"+szMonth):szMonth)  +	\"/\"	+\n"
1002:                        + "			((szDate<10) ?(\"0\"+szDate) :szDate)	  +	\" \"	+\n"
1003:                        + "			((szHrs<10)	 ?(\"0\"+szHrs)  :szHrs)	  +	\":\"	+\n"
1004:                        + "			((szMin<10)	 ?(\"0\"+szMin)  :szMin)	  +	\":00\"	);\n"
1005:                        + "}\n"
1006:                        + "\n"
1007:                        + "void function mfBoldDates(rgApptStartTimes,rgApptEndTimes,rgIsAllDayEvent)\n"
1008:                        + "{\n"
1009:                        + "	var x;\n"
1010:                        + "	var rgNodes=null;\n"
1011:                        + "	for(x=7; x < m_rgCalCells.length; x++)\n"
1012:                        + "	{\n"
1013:                        + "		rgNodes=mfGetNodes(m_rgCalCells[x].year,m_rgCalCells[x].month,Number(m_rgCalCells[x].innerText));\n"
1014:                        + "		m_rgCalCells[x].style.fontWeight = rgNodes.length ? \"bold\" : \"normal\";\n"
1015:                        + "	}\n"
1016:                        + "}\n"
1017:                        + "function mfGetNodes(iY,iM,iD)\n"
1018:                        + "{\n"
1019:                        + "	if(null == m_objOutPutXMLBold)\n"
1020:                        + "	{\n"
1021:                        + "		return;\n"
1022:                        + "	}\n"
1023:                        + "	var dtstartUTC		= mfGetUTFIsoDate(iY, iM, iD, 0, 0);\n"
1024:                        + "	var dtendUTC		= mfGetUTFIsoDate(iY, iM, iD+1,0, 0);\n"
1025:                        + "	var szStartTimeQuery=	\"(dtstart$ge$'\" + dtstartUTC	+ \"'&&dtstart$lt$'\"	+ dtendUTC + \"')\";\n"
1026:                        + "	var szEndTimeQuery	=	\"(dtend$gt$'\" + dtstartUTC + \"'&&dtend$le$'\"+ dtendUTC+ \"')\";\n"
1027:                        + "	var szOutSideQuery	=	\"(dtstart$lt$'\" + dtstartUTC	+ \"'&&dtend$gt$'\"+ dtendUTC + \"')\";\n"
1028:                        + "	var szQuery			=	\"root/appointment[\"	+ szStartTimeQuery + \"||\" +	szEndTimeQuery + \"||\" +	szOutSideQuery + \"]\";\n"
1029:                        + "	return(m_objOutPutXMLBold.selectNodes(szQuery));\n"
1030:                        + "}\n"
1031:                        + "\n"
1032:                        + "mfGetUTFIsoDate.objD= new Date();\n"
1033:                        + "function mfGetUTFIsoDate(iYr,iMon,iDate,iHr,iMin)\n"
1034:                        + "{\n"
1035:                        + "	mfGetUTFIsoDate.objD.setFullYear(iYr,iMon,iDate);\n"
1036:                        + "	mfGetUTFIsoDate.objD.setHours(iHr,iMin,0);\n"
1037:                        + "	var iYear		= mfGetUTFIsoDate.objD.getUTCFullYear();\n"
1038:                        + "	var szMonth		= mfGetUTFIsoDate.objD.getUTCMonth()+1;//0 offset adjustment\n"
1039:                        + "	var szDate		= mfGetUTFIsoDate.objD.getUTCDate();\n"
1040:                        + "	var szHours		= mfGetUTFIsoDate.objD.getUTCHours();\n"
1041:                        + "	var szMinutes	= mfGetUTFIsoDate.objD.getUTCMinutes();\n"
1042:                        + "	if (szMonth< 10)\n"
1043:                        + "	{\n"
1044:                        + "		szMonth	=  \"0\"+szMonth;\n"
1045:                        + "	}	\n"
1046:                        + "	if (szDate < 10)\n"
1047:                        + "	{\n"
1048:                        + "		szDate =  \"0\"+szDate;\n"
1049:                        + "	}	\n"
1050:                        + "	if (szHours	< 10)\n"
1051:                        + "	{\n"
1052:                        + "		szHours	=  \"0\"+szHours;\n"
1053:                        + "	}	\n"
1054:                        + "	if (szMinutes <	10)\n"
1055:                        + "	{\n"
1056:                        + "		szMinutes =	 \"0\"+szMinutes;\n"
1057:                        + "	}\n"
1058:                        + "	return(String(iYear+\"-\"+szMonth+\"-\"+szDate+\"T\"+szHours+\":\"+szMinutes+\":00.000Z\"));\n"
1059:                        + "}\n"
1060:                        + "\n"
1061:                        + "//szDtTime = ISO formatted UTC time	string = \"1999-02-18T02:00:00.000Z\"\n"
1062:                        + "//returns =	UTC	time in milliseconds\n"
1063:                        + "function mfGetIsoDateMs(szIsoDate)\n"
1064:                        + "{\n"
1065:                        + "	var re=mfGetRegExpIsoDates();\n"
1066:                        + "	re.lastIndex=0;\n"
1067:                        + "	var arr = re.exec( szIsoDate );\n"
1068:                        + "	return ( (null == arr) ? null : Date.UTC( Number( arr[1]), Number(arr[2])-1, Number(arr[3]), Number(arr[4]), Number(arr[5]), 0, 0 ) );\n"
1069:                        + "}\n"
1070:                        + "\n"
1071:                        + "mfGetRegExpIsoDates.re;\n"
1072:                        + "function mfGetRegExpIsoDates()\n"
1073:                        + "{\n"
1074:                        + "	if (null == mfGetRegExpIsoDates.re)\n"
1075:                        + "	{ \n"
1076:                        + "		mfGetRegExpIsoDates.re = /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):\\d{2}\\.\\d{3}Z?$/;\n"
1077:                        + "	}\n"
1078:                        + "	return(mfGetRegExpIsoDates.re);\n"
1079:                        + "}\n"
1080:                        + "\n"
1081:                        + "void function onAbort()\n"
1082:                        + "{\n"
1083:                        + "	return;\n"
1084:                        + "}\n"
1085:                        + "void function onRSC_getBoldData()\n"
1086:                        + "{\n"
1087:                        + "	if(4 != m_objXMLhttpBold.readyState)\n"
1088:                        + "	{\n"
1089:                        + "		return;\n"
1090:                        + "	}\n"
1091:                        + "	m_objXMLhttpBold.onreadystatechange	= onAbort;\n"
1092:                        + "	var	objXML = m_objXMLhttpBold.responseXML;\n"
1093:                        + "	objXML.transformNodeToObject(m_objXSL.documentElement, m_objOutPutXMLBold);\n"
1094:                        + "	var	objApptNodes	= m_objOutPutXMLBold.selectNodes('root/appointment/dtstart');\n"
1095:                        + "	var	objApptNodes1	= m_objOutPutXMLBold.selectNodes('root/appointment/dtend');\n"
1096:                        + "	var	objApptNodes2	= m_objOutPutXMLBold.selectNodes('root/appointment/alldayevent');\n"
1097:                        + "\n"
1098:                        + "	mfBoldDates(objApptNodes,objApptNodes1,objApptNodes2);\n"
1099:                        + "	if(null != m_objStatus )\n"
1100:                        + "	{\n"
1101:                        + "		m_objStatus.style.display=\"none\";\n"
1102:                        + "		m_objStatus.innerText = \"\";\n"
1103:                        + "	}\n"
1104:                        + "}\n"
1105:                        + "\n"
1106:                        + "onRSC_getAppointments.fRenderView = true;\n"
1107:                        + "onRSC_getAppointments.fUpdateBolding = false;\n"
1108:                        + "onRSC_getAppointments.fResetQuery=true;\n"
1109:                        + "void function onRSC_getAppointments()\n"
1110:                        + "{\n"
1111:                        + "	if(4 != m_objXMLhttp.readyState)\n"
1112:                        + "	{\n"
1113:                        + "		return;\n"
1114:                        + "	}\n"
1115:                        + "	m_objXMLhttp.onreadystatechange	= onAbort;\n"
1116:                        + "	var objXML = m_objXMLhttp.responseXML;\n"
1117:                        + "	objXML.transformNodeToObject(m_objXSL.documentElement, m_objOutPutXML);\n"
1118:                        + "	//only fire	(refresh the veiwer) if	the	calendar is	on that	month\n"
1119:                        + "	m_fHaveData	= true;\n"
1120:                        + "	if(m_objMainDate >= m_oCalStartDate && m_objMainDate <= m_oCalEndDate)\n"
1121:                        + "	{\n"
1122:                        + "		if(true == onRSC_getAppointments.fRenderView)\n"
1123:                        + "		{\n"
1124:                        + "			fire_OnDateChange(m_objOutPutXML);\n"
1125:                        + "		}\n"
1126:                        + "	}\n"
1127:                        + "	onRSC_getAppointments.fRenderView=true;\n"
1128:                        + "	if(null != m_objStatus )\n"
1129:                        + "	{\n"
1130:                        + "		m_objStatus.style.display=\"none\";\n"
1131:                        + "		m_objStatus.innerText = \"\";\n"
1132:                        + "	}\n"
1133:                        + "	if (true == onRSC_getAppointments.fUpdateBolding)\n"
1134:                        + "	{\n"
1135:                        + "		onRSC_getAppointments.fUpdateBolding=false;\n"
1136:                        + "		mfGetBoldData(onRSC_getAppointments.fResetQuery);\n"
1137:                        + "	}\n"
1138:                        + "}\n"
1139:                        + "/************************PROPERTY ACCESS FUNCTIONS***********************/\n"
1140:                        + "function get_statusEl()\n"
1141:                        + "{\n"
1142:                        + "	return(m_objStatus);\n"
1143:                        + "}\n"
1144:                        + "function put_statusEl(newVal)\n"
1145:                        + "{\n"
1146:                        + "	if(typeof(newVal) == 'string')\n"
1147:                        + "	{\n"
1148:                        + "		m_objStatus = window.document.all[newVal];\n"
1149:                        + "		return;\n"
1150:                        + "	}\n"
1151:                        + "	m_objStatus = newVal;\n"
1152:                        + "}\n"
1153:                        + "function put_PollInterval(newVal)\n"
1154:                        + "{\n"
1155:                        + "	m_iPollInterval	= Number(newVal);\n"
1156:                        + "}\n"
1157:                        + "function get_PollInterval()\n"
1158:                        + "{\n"
1159:                        + "	return m_iPollInterval;\n"
1160:                        + "}\n"
1161:                        + "function put_readOnly(newVal)\n"
1162:                        + "{\n"
1163:                        + "	if(\"true\" == String(newVal))\n"
1164:                        + "	{\n"
1165:                        + "		m_fReadOnly	= true;\n"
1166:                        + "	}\n"
1167:                        + "	else\n"
1168:                        + "	{\n"
1169:                        + "		m_fReadOnly	= false;\n"
1170:                        + "	} \n"
1171:                        + "}\n"
1172:                        + "function get_readOnly()\n"
1173:                        + "{\n"
1174:                        + "		return m_fReadOnly;\n"
1175:                        + "}\n"
1176:                        + "function put_Day(newVal)\n"
1177:                        + "{\n"
1178:                        + "	m_objMainDate.setDate(Number(newVal));\n"
1179:                        + "}\n"
1180:                        + "function get_Day()\n"
1181:                        + "{\n"
1182:                        + "	return m_objSelectedStart.getDate();\n"
1183:                        + "}\n"
1184:                        + "function put_Month(newVal)\n"
1185:                        + "{\n"
1186:                        + "	m_objMainDate.setMonth(Number(newVal));\n"
1187:                        + "}\n"
1188:                        + "function get_Month()\n"
1189:                        + "{\n"
1190:                        + "	return m_objSelectedStart.getMonth();\n"
1191:                        + "}\n"
1192:                        + "function put_Year(newVal)\n"
1193:                        + "{\n"
1194:                        + "	m_objMainDate.setYear(Number(newVal));	\n"
1195:                        + "}\n"
1196:                        + "function get_Year()\n"
1197:                        + "{\n"
1198:                        + "	return m_objSelectedStart.getFullYear();\n"
1199:                        + "}\n"
1200:                        + "function get_FullYear()\n"
1201:                        + "{\n"
1202:                        + "	return m_objSelectedStart.getFullYear();\n"
1203:                        + "}\n"
1204:                        + "function put_FullYear(newVal)\n"
1205:                        + "{\n"
1206:                        + "	m_objMainDate.setFullYear(Number(newVal));	\n"
1207:                        + "}\n"
1208:                        + "function put_caltext(newVal)\n"
1209:                        + "{\n"
1210:                        + "L_szUpdatingBold = newVal;\n"
1211:                        + "}\n"
1212:                        + "function get_caltext()\n"
1213:                        + "{\n"
1214:                        + "return(L_szUpdatingBold);\n"
1215:                        + "}\n"
1216:                        + "function put_viewtext(newVal)\n"
1217:                        + "{\n"
1218:                        + "L_szUpdating = newVal;\n"
1219:                        + "}\n"
1220:                        + "function get_viewtext()\n"
1221:                        + "{\n"
1222:                        + "return(L_szUpdating);\n"
1223:                        + "}\n"
1224:                        + "//Causes a refresh of all the data for the current view\n"
1225:                        + "function f_refresh()\n"
1226:                        + "{\n"
1227:                        + "	mfGetAppointments(true,true,false);\n"
1228:                        + "}\n"
1229:                        + "</SCRIPT>\n" + "</HTML>\n";
1230:
1231:                String lExpectation =
1232:
1233:                "<!--Copyright (c) 2000 Microsoft Corporation.  All rights reserved.-->\n"
1234:                        + "<HTML>\n"
1235:                        + "<property	name=\"updateCalText\"	put=\"put_caltext\"		get=\"get_caltext\" />\n"
1236:                        + "<property	name=\"updateViewText\"	put=\"put_viewtext\"		get=\"get_viewtext\" />\n"
1237:                        + "<property	name=\"statusElement\"	put=\"put_statusEl\"		get=\"get_statusEl\" />\n"
1238:                        + "<property	name=\"nextMonthImage\" />\n"
1239:                        + "<property	name=\"prevMonthImage\" />\n"
1240:                        + "<property	name=\"readOnly\"			put=\"put_readOnly\"		get=\"get_readOnly\" />\n"
1241:                        + "<property	name=\"day\"				put=\"put_Day\"			get=\"get_Day\" />\n"
1242:                        + "<property	name=\"month\"			put=\"put_Month\"			get=\"get_Month\" />\n"
1243:                        + "<property	name=\"year\"				put=\"put_Year\"			get=\"get_Year\" />\n"
1244:                        + "<property	name=\"fullyear\"			put=\"put_FullYear\"		get=\"get_FullYear\" />\n"
1245:                        + "<property	name=\"pollInterval\"		put=\"put_PollInterval\"	get=\"get_PollInterval\" />\n"
1246:                        + "<property	name=\"folderURL\" />\n"
1247:                        + "<property	name=\"monthNamesShort\" />\n"
1248:                        + "<property	name=\"monthNamesLong\" />\n"
1249:                        + "<property	name=\"weekdayLetters\" />\n"
1250:                        + "<property	name=\"dateFormat\" />\n"
1251:                        + "\n"
1252:                        + "<method		name=\"setView\"			internalName=\"f_setView\" />\n"
1253:                        + "<method		name=\"refresh\"			internalName=\"f_refresh\" />\n"
1254:                        + "<attach		event=\"ondocumentready\"	handler=\"onDocumentReady\" />\n"
1255:                        + "<attach		event=\"onstop\"			handler=\"onStop\" for=\"document\" />\n"
1256:                        + "<attach		event=\"onclick\"			handler=\"onClick\" />\n"
1257:                        + "\n"
1258:                        + "<event id=\"id_OnDateChange\" name=\"OnDateChange\" />\n"
1259:                        + "<DIV id=__idExchMasterCalendarRowNode>\n"
1260:                        + "<TABLE class='calctrlTable' cellpadding='2'>\n"
1261:                        + "<TR class='calctrlRow'>\n"
1262:                        + "<TD offCell=1 weekselect=1 class='calctrlWeeklyCell'>&nbsp;&nbsp;&nbsp;</TD>\n"
1263:                        + "<TD offCell=1 class='calctrlDateCell' id=\"numbercell\"></TD>\n"
1264:                        + "<TD offCell=1 class='calctrlDateCell' id=\"numbercell\"></TD>\n"
1265:                        + "<TD offCell=1 class='calctrlDateCell' id=\"numbercell\"></TD>\n"
1266:                        + "<TD offCell=1 class='calctrlDateCell' id=\"numbercell\"></TD>\n"
1267:                        + "<TD offCell=1 class='calctrlDateCell' id=\"numbercell\"></TD>\n"
1268:                        + "<TD offCell=1 class='calctrlDateCell' id=\"numbercell\"></TD>\n"
1269:                        + "<TD offCell=1 class='calctrlDateCell' id=\"numbercell\"></TD>\n"
1270:                        + "</TR>\n"
1271:                        + "</TABLE>\n"
1272:                        + "</div>\n"
1273:                        + "<div id=__idExchMasterCalendarTableNode>\n"
1274:                        + "<TABLE border=0	cellpadding=0 cellspacing=0 class=\"calctrlTitle\">\n"
1275:                        + "<TR  >\n"
1276:                        + "<TD leftNavButton=1><img src=\"\" leftNavButton=1 border=0 height=\"10\"></TD>\n"
1277:                        + "<TD monthDisplayName=1 colspan=6 class='calctrlMonthDisplayName'></TD>\n"
1278:                        + "<TD rightNavButton=1 class='calctrlRightNavButton'><img src=\"\" rightNavButton=1 border=0 height=\"10\"></TD>\n"
1279:                        + "</TR>\n" + "</TABLE>\n" + "</DIV>\n"
1280:                        + JSWrapperHelper.CONVERT_EXPRESSION_FUNCTION_HTML
1281:                        + "<SCRIPT	LANGUAGE=\"JavaScript\">\n"
1282:                        + "\n"
1283:                        + "var	m_objXSL			=	new	ActiveXObject(\"Microsoft.XMLDOM\");\n"
1284:                        + "var	m_objOutPutXML		=	new	ActiveXObject(\"Microsoft.XMLDOM\");\n"
1285:                        + "var	m_objOutPutXMLBold  =	new	ActiveXObject(\"Microsoft.XMLDOM\");\n"
1286:                        + "var	m_iIntervalID		=	null;\n"
1287:                        + "var	m_iPollInterval		=	10;\n"
1288:                        + "var	m_objXMLhttp		=	null;\n"
1289:                        + "var	m_objXMLhttpBold	=	null;\n"
1290:                        + "var	m_objXMLhttp_polling=	new	ActiveXObject(\"Microsoft.XMLhttp\");\n"
1291:                        + "var	m_iSubscriptionID	=	null;\n"
1292:                        + "var	m_fReadOnly			=	false;\n"
1293:                        + "\n"
1294:                        + "var	m_objMainDate;\n"
1295:                        + "var m_objTodaysDate	= new Date();\n"
1296:                        + "	m_objTodaysDate.setHours(0,0,0,0);\n"
1297:                        + "\n"
1298:                        + "\n"
1299:                        + "var	m_objSelectedStart;\n"
1300:                        + "var	m_objSelectedEnd;\n"
1301:                        + "\n"
1302:                        + "var	m_objMainTable		=	null;\n"
1303:                        + "var	m_objSelectedDay	=	new	Array();\n"
1304:                        + "var	m_fHasLoaded		=	false;\n"
1305:                        + "var	m_iFirstDayOfMonth	=	0;\n"
1306:                        + "var	m_iDaysInMonth		=	0;\n"
1307:                        + "var	m_iView				=	0;\n"
1308:                        + "var	m_szHighlightBG		=	\"highlight\";\n"
1309:                        + "var	m_szHighlightText	=	\"highlighttext\";\n"
1310:                        + "var	m_szNormalDateBG	=	\"window\";\n"
1311:                        + "var	m_szNormalBG		=	\"window\";\n"
1312:                        + "var	m_szNormalText		=	\"windowtext\";\n"
1313:                        + "var	m_szInactiveBG		=	\"appworkspace\";\n"
1314:                        + "var m_objStatus;\n"
1315:                        + "var m_rgCalCells;\n"
1316:                        + "var m_rgMonthNamesShort;\n"
1317:                        + "var m_rgMonthNamesLong;\n"
1318:                        + "var m_szDateFormat;\n"
1319:                        + "var m_rgWeekdayLetters;\n"
1320:                        + "var	m_fHaveData	= false;\n"
1321:                        + "var m_iStartDay;\n"
1322:                        + "var	m_oCalStartDate	= new Date();\n"
1323:                        + "var	m_oCalEndDate =	new Date();\n"
1324:                        + "var L_szUpdating;\n"
1325:                        + "var L_szUpdatingBold;\n"
1326:                        + "\n"
1327:                        + "void function onDocumentReady()\n"
1328:                        + "{\n"
1329:                        + "	var	szXSLString =\n"
1330:                        + "	'<xsl:template xmlns:xsl=\"uri:xsl\" xmlns:a=\"DAV:\"><root>' +\n"
1331:                        + "	'<xsl:for-each select=\"a:multistatus/a:response\">' +\n"
1332:                        + "	'<appointment><url><xsl:value-of select=\"a:href\" /></url>' +\n"
1333:                        + "	'<xsl:for-each select=\"a:propstat[a:status != \\'HTTP/1.1 404 Resource Not Found\\']/a:prop\">' +\n"
1334:                        + "		'<subject><xsl:value-of	select=\"subject\" /></subject>' +\n"
1335:                        + "		'<instancetype><xsl:value-of select=\"instancetype\" /></instancetype>' +\n"
1336:                        + "		'<location><xsl:value-of select=\"location\" /></location>' +\n"
1337:                        + "		'<dtstart><xsl:value-of	select=\"dtstart\" /></dtstart>' +\n"
1338:                        + "		'<dtend><xsl:value-of select=\"dtend\" /></dtend>' +\n"
1339:                        + "		'<busystatus><xsl:value-of select=\"busystatus\" /></busystatus>'	+ \n"
1340:                        + "		'<alldayevent><xsl:value-of	select=\"alldayevent\" /></alldayevent>' +\n"
1341:                        + "		'<pr_cdormid><xsl:value-of	select=\"pr_cdormid\" /></pr_cdormid>' +\n"
1342:                        + "		'<sensitivity><xsl:value-of	select=\"sensitivity\" /></sensitivity>' +\n"
1343:                        + "		'<apptstateflags><xsl:value-of	select=\"apptstateflags\" /></apptstateflags>' +\n"
1344:                        + "		'<uid><xsl:value-of	select=\"uid\" /></uid>' +\n"
1345:                        + "	'</xsl:for-each></appointment></xsl:for-each></root></xsl:template>';\n"
1346:                        + "\n"
1347:                        + "	m_objXSL.loadXML(szXSLString);\n"
1348:                        + "\n"
1349:                        + "	/**************Do initial calendar rendering******************/\n"
1350:                        + "	m_iStartDay =	(this.startDay == null)?0:Number(this.startDay);\n"
1351:                        + "	with (this.__idExchMasterCalendarTableNode.children[0])\n"
1352:                        + "	{\n"
1353:                        + "		cells[0].children[0].src =	this.prevMonthImage;\n"
1354:                        + "		cells[2].children[0].src =	this.nextMonthImage;\n"
1355:                        + "	}\n"
1356:                        + "	mfRenderCalendar();\n"
1357:                        + "\n"
1358:                        + "	m_rgMonthNamesShort = (null == this.monthnamesShort || \"\" == this.monthnamesShort)?\n"
1359:                        + "						   \"Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec\".split(\";\"):\n"
1360:                        + "						   this.monthnamesShort.split(\";\");\n"
1361:                        + "	m_rgMonthNamesLong  = (null == this.monthnamesLong || \"\" == this.monthnamesLong)?\n"
1362:                        + "						   \"January;February;March;April;May;June;July;August;September;October;November;December\".split(\";\"):\n"
1363:                        + "						   this.monthnamesLong.split(\";\");\n"
1364:                        + "	m_rgWeekdayLetters = (this.weekdayLetters)?this.weekdayLetters.split(\";\"):\"M;T;W;T;F;S;S\".split(\";\");\n"
1365:                        + "	m_szDateFormat = (this.dateFormat)?this.dateFormat:\"[MMMM] [yyyy]\";\n"
1366:                        + "	var	iM=-1,iD=-1,iY=-1,szX;\n"
1367:                        + "	m_objMainTable = this.children[0];\n"
1368:                        + "	m_rgCalCells = m_objMainTable.cells[\"numbercell\"];\n"
1369:                        + "	for(var i =	0; i < 7; i++) //day letters\n"
1370:                        + "	{\n"
1371:                        + "		with(m_rgCalCells[i])\n"
1372:                        + "		{\n"
1373:                        + "			innerText = m_rgWeekdayLetters[( (m_iStartDay+i)%m_rgWeekdayLetters.length )];\n"
1374:                        + "			dayNameCell = \"1\";\n"
1375:                        + "			style.backgroundColor = m_szNormalBG;\n"
1376:                        + "			style.color	 = m_szNormalText;\n"
1377:                        + "			style.borderBottom = \"solid 1px black\";\n"
1378:                        + "		}\n"
1379:                        + "	}\n"
1380:                        + "	//parseInt treats leading '0' as octal numbers\n"
1381:                        + "	//need to disect the whole number and use Number()\n"
1382:                        + "	iM = parseURLfor(\"m\");\n"
1383:                        + "	iM = (null==iM || \"\"==iM)?-1:Number(iM);\n"
1384:                        + "	iD = parseURLfor(\"d\");\n"
1385:                        + "	iD = (null==iD || \"\"==iD)?-1:Number(iD);\n"
1386:                        + "	iY = parseURLfor(\"y\");\n"
1387:                        + "	iY = (null==iY || \"\"==iY)?-1:Number(iY);\n"
1388:                        + "\n"
1389:                        + "	if(-3 == iM+iY+iD)//no date info on the url\n"
1390:                        + "	{\n"
1391:                        + "		m_objMainDate =	new	Date();	 //use todays date\n"
1392:                        + "	}\n"
1393:                        + "	else\n"
1394:                        + "	{\n"
1395:                        + "		//missing defaults to current month/year and 1st day of	month\n"
1396:                        + "		iM = (isNaN(iM)	|| iM == -1)?m_objTodaysDate.getMonth():iM-1;\n"
1397:                        + "		iY = (isNaN(iY)	|| iY == -1)?m_objTodaysDate.getFullYear():iY;\n"
1398:                        + "		iD = (isNaN(iD)	|| iD == -1)?1:iD;\n"
1399:                        + "			\n"
1400:                        + "		try\n"
1401:                        + "		{\n"
1402:                        + "			m_objMainDate =	new Date(iY,iM,iD);	 \n"
1403:                        + "		}\n"
1404:                        + "		catch(e)\n"
1405:                        + "		{\n"
1406:                        + "			m_objMainDate =	new Date();	 \n"
1407:                        + "		}\n"
1408:                        + "	}\n"
1409:                        + "	m_objSelectedStart	=	new	Date(m_objMainDate);\n"
1410:                        + "	m_objSelectedEnd	=	new	Date(m_objMainDate);\n"
1411:                        + "	//search url for view\n"
1412:                        + "	var szView = parseURLfor(\"view\");\n"
1413:                        + "	szView = (null == szView)?\"daily\":szView.toLowerCase();\n"
1414:                        + "	m_iView=(szView==\"weekly\")?1:( (szView==\"monthly\")?2:0 );\n"
1415:                        + "	if (1 == m_iView) //adjust selects weekly\n"
1416:                        + "	{//need to find start of this week\n"
1417:                        + "		i = m_objSelectedStart.getDay()-m_iStartDay;\n"
1418:                        + "		i+=(0>=i)?7:0;\n"
1419:                        + "		m_objSelectedStart.setDate(m_objSelectedStart.getDate()-i);\n"
1420:                        + "		m_objSelectedEnd.setDate(m_objSelectedStart.getDate()+6);\n"
1421:                        + "	}\n"
1422:                        + "	else if (2==m_iView) //monthly\n"
1423:                        + "	{\n"
1424:                        + "		m_objSelectedStart.setDate(1);\n"
1425:                        + "		i = m_objSelectedStart.getDay()-m_iStartDay;\n"
1426:                        + "		i+=(0>=i)?7:0;\n"
1427:                        + "		m_objSelectedStart.setDate(m_objSelectedStart.getDate()-i);\n"
1428:                        + "		\n"
1429:                        + "		m_objSelectedEnd.setTime( m_objSelectedStart.getTime()+(41*86400000) );\n"
1430:                        + "	}\n"
1431:                        + "	m_objSelectedStart.setHours(0,0,0,0);\n"
1432:                        + "	m_objSelectedEnd.setHours(24,0,0,0);\n"
1433:                        + "\n"
1434:                        + "	mfUpdateCalendar(true,true);\n"
1435:                        + "}\n"
1436:                        + "void function fire_OnDateChange(objXML)\n"
1437:                        + "{\n"
1438:                        + "	if(m_fHaveData)\n"
1439:                        + "	{\n"
1440:                        + "		var objEvent = createEventObject();\n"
1441:                        + "		objEvent.xml = objXML;\n"
1442:                        + "		objEvent.view = m_iView;\n"
1443:                        + "		objEvent.date = (2==m_iView)?m_objMainDate:m_objSelectedStart;\n"
1444:                        + "		id_OnDateChange.fire(objEvent);\n"
1445:                        + "	}\n"
1446:                        + "}\n"
1447:                        + "\n"
1448:                        + "void function onStop() \n"
1449:                        + "{\n"
1450:                        + "	if(m_iIntervalID)\n"
1451:                        + "	{\n"
1452:                        + "		window.clearInterval(m_iIntervalID);\n"
1453:                        + "	}\n"
1454:                        + "}\n"
1455:                        + "void function onClick()\n"
1456:                        + "{\n"
1457:                        + "	event.cancelBubble=true;\n"
1458:                        + "	if(!m_fReadOnly)\n"
1459:                        + "	{\n"
1460:                        + "		if(null != event.srcElement.dayCell)\n"
1461:                        + "		{ \n"
1462:                        + "			mfSetDailyView(event.srcElement);\n"
1463:                        + "			return;\n"
1464:                        + "		}\n"
1465:                        + "		else if(null != event.srcElement.leftNavButton)\n"
1466:                        + "		{\n"
1467:                        + "			m_objMainDate.setMonth(m_objMainDate.getMonth()-1);\n"
1468:                        + "			mfUpdateCalendar(false,true);\n"
1469:                        + "			return;\n"
1470:                        + "		}\n"
1471:                        + "		else if(null != event.srcElement.rightNavButton)\n"
1472:                        + "		{\n"
1473:                        + "			m_objMainDate.setMonth(m_objMainDate.getMonth()+1);\n"
1474:                        + "			mfUpdateCalendar(false,true);\n"
1475:                        + "			return;\n"
1476:                        + "		}\n"
1477:                        + "		else if(null != event.srcElement.monthDisplayName)\n"
1478:                        + "		{\n"
1479:                        + "			mfSetMonthlyView();\n"
1480:                        + "		}\n"
1481:                        + "		else if(null != event.srcElement.weekselect)\n"
1482:                        + "		{\n"
1483:                        + "			mfSetWeeklyView(m_objMainTable.rows[event.srcElement.parentElement.rowIndex].cells[1]);\n"
1484:                        + "		}\n"
1485:                        + "	}\n"
1486:                        + "}\n"
1487:                        + "\n"
1488:                        + "void function mfSetDailyView(eCell)\n"
1489:                        + "{\n"
1490:                        + "	m_iView=0;\n"
1491:                        + "	m_objSelectedStart.setFullYear(eCell.year,eCell.month,parseInt(eCell.innerText));\n"
1492:                        + "	m_objSelectedEnd.setTime(m_objSelectedStart);\n"
1493:                        + "	mfFindAndSelectDate();\n"
1494:                        + "	mfGetAppointments(true,false,true);\n"
1495:                        + "}\n"
1496:                        + "void function mfSetWeeklyView(eCell)\n"
1497:                        + "{\n"
1498:                        + "	m_iView=1;\n"
1499:                        + "	m_objSelectedStart.setFullYear(eCell.year,eCell.month,eCell.innerText);\n"
1500:                        + "	m_objSelectedEnd.setFullYear(eCell.year,eCell.month,Number(eCell.innerText)+6);\n"
1501:                        + "	mfFindAndSelectDate();\n"
1502:                        + "	mfGetAppointments(true,false,true);\n"
1503:                        + "}\n"
1504:                        + "void function mfSetMonthlyView()\n"
1505:                        + "{\n"
1506:                        + "	m_iView=2;\n"
1507:                        + "	m_objSelectedStart.setTime(m_oCalStartDate);\n"
1508:                        + "	m_objSelectedEnd.setTime(m_oCalEndDate);\n"
1509:                        + "	mfFindAndSelectDate();\n"
1510:                        + "	mfGetAppointments(true,false,true);\n"
1511:                        + "}\n"
1512:                        + "void function f_setView(iView)\n"
1513:                        + "{\n"
1514:                        + "	//use the currently selected cell to determine view\n"
1515:                        + "	if(m_iView == iView)\n"
1516:                        + "	{\n"
1517:                        + "		return;\n"
1518:                        + "	}\n"
1519:                        + "	m_iView	= iView;\n"
1520:                        + "	switch(iView)\n"
1521:                        + "	{\n"
1522:                        + "	case 1:\n"
1523:                        + "		//use the last selected day or today\n"
1524:                        + "		var x=(-1<mfFindAndSelectDate.iHoldLastDaily)?mfFindAndSelectDate.iHoldLastDaily:mfFindAndSelectDate.iStartIdx;\n"
1525:                        + "		mfSetWeeklyView(m_objMainTable.rows[m_rgCalCells[x].parentElement.rowIndex].cells[1]);\n"
1526:                        + "		break;\n"
1527:                        + "	case 2:\n"
1528:                        + "		mfSetMonthlyView();\n"
1529:                        + "		break;\n"
1530:                        + "	case 0:\n"
1531:                        + "	default:\n"
1532:                        + "		var x=(-1<mfFindAndSelectDate.iHoldLastDaily)?mfFindAndSelectDate.iHoldLastDaily:mfFindAndSelectDate.iStartIdx;\n"
1533:                        + "		mfSetDailyView(m_rgCalCells[x]);\n"
1534:                        + "	}\n"
1535:                        + "}\n"
1536:                        + "//unselects	current	selection\n"
1537:                        + "//searches calendar	for	matching date cell given in	m_objSelectedStart\n"
1538:                        + "mfFindAndSelectDate.iStartIdx=-1;\n"
1539:                        + "mfFindAndSelectDate.iEndIdx=-1;\n"
1540:                        + "mfFindAndSelectDate.iHoldLastDaily=-1;\n"
1541:                        + "void function mfFindAndSelectDate()\n"
1542:                        + "{\n"
1543:                        + "	var x,y;\n"
1544:                        + "	\n"
1545:                        + "	if (mfFindAndSelectDate.iStartIdx>-1)\n"
1546:                        + "	{ //remove any prev selection\n"
1547:                        + "		for(x=mfFindAndSelectDate.iStartIdx;x<=mfFindAndSelectDate.iEndIdx;x++)\n"
1548:                        + "		{\n"
1549:                        + "			m_rgCalCells[x].style.backgroundColor=m_rgCalCells[x].dayCell;\n"
1550:                        + "			m_rgCalCells[x].style.color=m_szNormalText;\n"
1551:                        + "		}\n"
1552:                        + "		mfFindAndSelectDate.iStartIdx=-1;\n"
1553:                        + "	}\n"
1554:                        + "	if (m_objSelectedStart>m_oCalEndDate || m_objSelectedEnd<m_oCalStartDate)\n"
1555:                        + "	{\n"
1556:                        + "		return;\n"
1557:                        + "	}\n"
1558:                        + "	x=7;\n"
1559:                        + "	if(2==m_iView) //monthly\n"
1560:                        + "	{\n"
1561:                        + "		if(m_objSelectedStart.getTime() == m_oCalStartDate.getTime()) //whole month showing\n"
1562:                        + "		{\n"
1563:                        + "			y=m_rgCalCells.length-1;\n"
1564:                        + "		}\n"
1565:                        + "		else if(m_objSelectedStart<m_oCalStartDate&&m_objSelectedEnd>m_oCalStartDate) //do 1st grey area\n"
1566:                        + "		{\n"
1567:                        + "			mfFindAndSelectDate.iStartIdx=7;\n"
1568:                        + "			for(x=7;\"1\"!=m_rgCalCells[x].innerText;x++)\n"
1569:                        + "			{\n"
1570:                        + "				m_rgCalCells[x].style.backgroundColor = m_szHighlightBG;\n"
1571:                        + "				m_rgCalCells[x].style.color = m_szHighlightText;\n"
1572:                        + "			}\n"
1573:                        + "			mfFindAndSelectDate.iEndIdx=x;\n"
1574:                        + "			return;\n"
1575:                        + "		}\n"
1576:                        + "		else if(m_objSelectedStart<m_oCalEndDate&&m_objSelectedEnd>m_oCalEndDate)//last gray area\n"
1577:                        + "		{\n"
1578:                        + "			x=m_rgCalCells.length-1;\n"
1579:                        + "			mfFindAndSelectDate.iEndIdx=x;\n"
1580:                        + "			for(;\"1\"!=m_rgCalCells[x].innerText;x--)\n"
1581:                        + "			{\n"
1582:                        + "				m_rgCalCells[x].style.backgroundColor = m_szHighlightBG;\n"
1583:                        + "				m_rgCalCells[x].style.color = m_szHighlightText;\n"
1584:                        + "			}\n"
1585:                        + "			m_rgCalCells[x].style.backgroundColor = m_szHighlightBG;\n"
1586:                        + "			m_rgCalCells[x].style.color = m_szHighlightText;\n"
1587:                        + "			mfFindAndSelectDate.iStartIdx=x-1;\n"
1588:                        + "			return;\n"
1589:                        + "		}\n"
1590:                        + "		else\n"
1591:                        + "		{\n"
1592:                        + "			return;\n"
1593:                        + "		}\n"
1594:                        + "	}\n"
1595:                        + "	else if (m_objSelectedStart>=m_oCalStartDate && m_objSelectedStart<=m_oCalEndDate)\n"
1596:                        + "	{\n"
1597:                        + "		x=Math.round((m_objSelectedStart-m_oCalStartDate)/86400000)+7;\n"
1598:                        + "	}\n"
1599:                        + "	y=x;\n"
1600:                        + "	if (0 != m_iView)\n"
1601:                        + "	{\n"
1602:                        + "		y=(2==m_iView)?m_rgCalCells.length-1:x+6;\n"
1603:                        + "		if (2==m_iView && m_objSelectedEnd<m_oCalEndDate)\n"
1604:                        + "		{\n"
1605:                        + "			y=Math.round((m_objSelectedEnd-m_oCalStartDate)/86400000)+7;\n"
1606:                        + "		}\n"
1607:                        + "	}\n"
1608:                        + "	mfFindAndSelectDate.iStartIdx=(x<49)?x:-1;\n"
1609:                        + "	mfFindAndSelectDate.iEndIdx=(y<49)?y:-1;;\n"
1610:                        + "	for (;(x<=y && x<49);x++)\n"
1611:                        + "	{\n"
1612:                        + "		m_rgCalCells[x].style.backgroundColor = m_szHighlightBG;\n"
1613:                        + "		m_rgCalCells[x].style.color = m_szHighlightText;\n"
1614:                        + "	}\n"
1615:                        + "	if (m_iView==0)\n"
1616:                        + "	{\n"
1617:                        + "		mfFindAndSelectDate.iHoldLastDaily=mfFindAndSelectDate.iStartIdx;\n"
1618:                        + "	}\n"
1619:                        + "}\n"
1620:                        + "\n"
1621:                        + "//PARAM: iMonth - jan=0\n"
1622:                        + "function mfGetDaysInMonth(iMonth, iYear)\n"
1623:                        + "{\n"
1624:                        + "	iMonth+=(iMonth==-1)?13:1; //remove 0 offset (1=jan)\n"
1625:                        + "	return( (2 == iMonth) ? (28+mfIsLeapYear(iYear)):(30+((iMonth+(iMonth>7))%2)));\n"
1626:                        + "}\n"
1627:                        + "function mfIsLeapYear(yr)\n"
1628:                        + "{\n"
1629:                        + "	return((yr	% 4	== 0) && (yr % 100 != 0) ||	(yr	% 400 == 0))?1:0;\n"
1630:                        + "}\n"
1631:                        + "\n"
1632:                        + "mfWriteCellNumbers.todayCellIdx=-1;\n"
1633:                        + "void function mfWriteCellNumbers()\n"
1634:                        + "{\n"
1635:                        + "	m_objMainDate.setDate(1);\n"
1636:                        + "\n"
1637:                        + "	var iM = m_objMainDate.getMonth();\n"
1638:                        + "	var iY = m_objMainDate.getFullYear();\n"
1639:                        + "	var iY2 = iY%100;\n"
1640:                        + "\n"
1641:                        + "	var szCaptionText = this.m_szDateFormat.replace(/\\[MMMM\\]/g, m_rgMonthNamesLong[iM]);\n"
1642:                        + "		\n"
1643:                        + "	szCaptionText = szCaptionText.replace(/\\[MMM\\]/g, m_rgMonthNamesShort[iM]);\n"
1644:                        + "	szCaptionText = szCaptionText.replace(/\\[MM\\]/g, ++iM<10 ? \"0\"+iM : iM );\n"
1645:                        + "	szCaptionText = szCaptionText.replace(/\\[M\\]/g, iM);\n"
1646:                        + "	szCaptionText = szCaptionText.replace(/\\[yyy+\\]/g, iY);\n"
1647:                        + "	szCaptionText = szCaptionText.replace(/\\[y+\\]/g, iY2>9?iY2:\"0\"+iY2);\n"
1648:                        + "\n"
1649:                        + "	m_objMainTable.rows[0].cells[1].innerText= szCaptionText;\n"
1650:                        + "\n"
1651:                        + "	m_oCalStartDate.setTime(m_objMainDate);\n"
1652:                        + "	m_oCalEndDate.setTime(m_objMainDate);\n"
1653:                        + "\n"
1654:                        + "	var x=m_objMainDate.getDay()-m_iStartDay;\n"
1655:                        + "	x+=(0>=x)?7:0; //show entire previous week\n"
1656:                        + "	m_oCalStartDate.setDate(1-x); //this is now the first date on the calendar\n"
1657:                        + "	m_oCalStartDate.setHours(0,0,0,0);\n"
1658:                        + "	m_oCalEndDate.setDate((1-x)+41);\n"
1659:                        + "	m_oCalEndDate.setHours(24,0,0,0);\n"
1660:                        + "\n"
1661:                        + "	var iD = m_oCalStartDate.getDate();\n"
1662:                        + "	var iM = m_oCalStartDate.getMonth();\n"
1663:                        + "	var iY = m_oCalStartDate.getFullYear();\n"
1664:                        + "	var iDm = mfGetDaysInMonth(iM,iY);\n"
1665:                        + "	var bg = (x==0)?m_szNormalDateBG:m_szInactiveBG;\n"
1666:                        + "	var y=7+iDm;\n"
1667:                        + "	for(x=7;iD<=iDm;x++)\n"
1668:                        + "	{\n"
1669:                        + "		m_rgCalCells[x].month=iM;\n"
1670:                        + "		m_rgCalCells[x].year =iY;\n"
1671:                        + "		m_rgCalCells[x].dayCell = bg;\n"
1672:                        + "		with(m_rgCalCells[x])\n"
1673:                        + "		{\n"
1674:                        + "			innerText = iD++;\n"
1675:                        + "			style.backgroundColor = bg;\n"
1676:                        + "			style.color = m_szNormalText;\n"
1677:                        + "			style.fontWeight = \"normal\";\n"
1678:                        + "		}\n"
1679:                        + "	}\n"
1680:                        + "	var iLastCell = m_rgCalCells.length;\n"
1681:                        + "	while(x<iLastCell)\n"
1682:                        + "	{\n"
1683:                        + "		iD=1;\n"
1684:                        + "		iM=(11==iM)?0:iM+1;\n"
1685:                        + "		if (0==iM ) iY++;\n"
1686:                        + "		var iDm = mfGetDaysInMonth(iM,iY);\n"
1687:                        + "		bg=(bg==m_szInactiveBG)?m_szNormalDateBG:m_szInactiveBG;\n"
1688:                        + "		if ((iDm+x) > iLastCell) iDm=iLastCell-x; //dont past last cell\n"
1689:                        + "		for(;iD<=iDm;x++)\n"
1690:                        + "		{\n"
1691:                        + "			//if (x>=iLastCell) break;\n"
1692:                        + "			m_rgCalCells[x].month=iM;\n"
1693:                        + "			m_rgCalCells[x].year =iY;\n"
1694:                        + "			m_rgCalCells[x].dayCell = bg;\n"
1695:                        + "			with(m_rgCalCells[x])\n"
1696:                        + "			{\n"
1697:                        + "				innerText = iD++;\n"
1698:                        + "				style.backgroundColor = bg;\n"
1699:                        + "				style.color = m_szNormalText;\n"
1700:                        + "				style.fontWeight = \"normal\";\n"
1701:                        + "			}\n"
1702:                        + "		}\n"
1703:                        + "	}\n"
1704:                        + "	if (-1!=mfWriteCellNumbers.todayCellIdx)\n"
1705:                        + "	{\n"
1706:                        + "		m_rgCalCells[mfWriteCellNumbers.todayCellIdx].style.border = \"none\";\n"
1707:                        + "		mfWriteCellNumbers.todayCellIdx=-1;\n"
1708:                        + "	}\n"
1709:                        + "	//is todays date on this calendar (needs red border)\n"
1710:                        + "	if(m_objTodaysDate > m_oCalStartDate && m_objTodaysDate < m_oCalEndDate)\n"
1711:                        + "	{ \n"
1712:                        + "		//add one hour 3600000 (for daylight spring losing an hour) and floor (DST fall works with floor)\n"
1713:                        + "		x = Math.floor((m_objTodaysDate - m_oCalStartDate + 3600000)/86400000)\n"
1714:                        + "		m_rgCalCells[x+7].style.border = \"solid 1 red\";\n"
1715:                        + "		mfWriteCellNumbers.todayCellIdx=x+7;\n"
1716:                        + "	}\n"
1717:                        + "	//prev selection has been wiped!\n"
1718:                        + "	mfFindAndSelectDate.iStartIdx=-1;\n"
1719:                        + "}\n"
1720:                        + "\n"
1721:                        + "void function mfUpdateCalendar(fRenderView,fUpdateBolding)\n"
1722:                        + "{\n"
1723:                        + "	mfWriteCellNumbers();\n"
1724:                        + "	mfFindAndSelectDate();\n"
1725:                        + "	if (!fUpdateBolding)\n"
1726:                        + "	{\n"
1727:                        + "		mfGetAppointments(fRenderView,false,true);\n"
1728:                        + "	}\n"
1729:                        + "	else\n"
1730:                        + "	{\n"
1731:                        + "		if (fRenderView) //refresh data then bold\n"
1732:                        + "		{\n"
1733:                        + "			mfGetAppointments(fRenderView,true,true);\n"
1734:                        + "		}\n"
1735:                        + "		else\n"
1736:                        + "		{\n"
1737:                        + "			mfGetBoldData(true);\n"
1738:                        + "		}	\n"
1739:                        + "	}		\n"
1740:                        + "}\n"
1741:                        + "\n"
1742:                        + "void function mfRenderCalendar()\n"
1743:                        + "{\n"
1744:                        + "	var	masterTableNode	= this.__idExchMasterCalendarTableNode.children[0];\n"
1745:                        + "	var	masterRowNode	= this.__idExchMasterCalendarRowNode.children[0];\n"
1746:                        + "	var	newNode=null;\n"
1747:                        + "	for(var i=0;i<7;i++)\n"
1748:                        + "	{\n"
1749:                        + "		newNode=masterRowNode.cloneNode(true);\n"
1750:                        + "		if(0==i)\n"
1751:                        + "		{\n"
1752:                        + "			newNode.cells[0].weekselect=null;\n"
1753:                        + "			newNode.cells[0].monthDisplayName=\"1\";\n"
1754:                        + "		}\n"
1755:                        + "		masterTableNode.insertAdjacentElement(\"BeforeEnd\",newNode.children[0]);\n"
1756:                        + "	}\n"
1757:                        + "	this.insertAdjacentElement(\"BeforeEnd\",masterTableNode);\n"
1758:                        + "	m_objMainTable=masterTableNode;\n"
1759:                        + "}\n"
1760:                        + "mfGetBoldData.szQuery=\"\";\n"
1761:                        + "void function mfGetBoldData(fResetQuery)\n"
1762:                        + "{\n"
1763:                        + "	if(null != m_objStatus )\n"
1764:                        + "	{\n"
1765:                        + "		m_objStatus.style.display=\"\";\n"
1766:                        + "		m_objStatus.innerText = L_szUpdatingBold;\n"
1767:                        + "	}\n"
1768:                        + "	m_fHaveData	= true;//allow event firings\n"
1769:                        + "	if (\"\"==mfGetBoldData.szQuery) fResetQuery=true;\n"
1770:                        + "	if (fResetQuery)\n"
1771:                        + "	{\n"
1772:                        + "		var	iX = 7;\n"
1773:                        + "		iX = m_rgCalCells.length - 1;\n"
1774:                        + "		var szDateStart=mfGetSearchDateUTC(m_oCalStartDate);\n"
1775:                        + "		var szDateEnd=mfGetSearchDateUTC(m_oCalEndDate);\n"
1776:                        + "		mfGetBoldData.szQuery ='<a:searchrequest xmlns:a=\"DAV:\" > ' +\n"
1777:                        + "		'<a:sql>Select ' +\n"
1778:                        + "		 '\"urn:schemas:calendar:dtstart\" AS dtstart, ' +\n"
1779:                        + "		 '\"urn:schemas:calendar:dtend\" AS dtend, ' +\n"
1780:                        + "		 '\"urn:schemas:calendar:alldayevent\" AS alldayevent ' +\n"
1781:                        + "		'FROM Scope(\\'SHALLOW TRAVERSAL OF \"\"\\') ' +\n"
1782:                        + "		'WHERE NOT \"urn:schemas:calendar:instancetype\" = 1 ' +\n"
1783:                        + "		'AND NOT \"urn:schemas:calendar:busystatus\" = \\'FREE\\' ' +\n"
1784:                        + "		  'AND \"urn:schemas:calendar:dtend\" &gt; \\''+szDateStart+'\\' ' +\n"
1785:                        + "		  'AND \"urn:schemas:calendar:dtstart\" &lt; \\''+szDateEnd+'\\' ' +\n"
1786:                        + "		'ORDER BY \"urn:schemas:calendar:dtstart\" ASC ' +\n"
1787:                        + "		'</></>';\n"
1788:                        + "\n"
1789:                        + "	}\n"
1790:                        + "	m_objXMLhttpBold = new ActiveXObject(\"Microsoft.XMLhttp\");\n"
1791:                        + "	try\n"
1792:                        + "	{\n"
1793:                        + "		m_objXMLhttpBold.open(\"SEARCH\","
1794:                        + JSWrapperHelper.CONVERT_EXPRESSION_FUNCTION_WRAP_START
1795:                        + "	folderURL), true);\n"
1796:                        + "		m_objXMLhttpBold.setRequestHeader(\"Content-Type\", \"text/xml\");\n"
1797:                        + "		m_objXMLhttpBold.onreadystatechange = onRSC_getBoldData;\n"
1798:                        + "		m_objXMLhttpBold.send(mfGetBoldData.szQuery);\n"
1799:                        + "	}\n"
1800:                        + "	catch(e)\n"
1801:                        + "	{\n"
1802:                        + "		alert(\"Error in	ExchangeCalendar.HTC mfGetBoldData() with searchrequest: \"+e.description);\n"
1803:                        + "	}\n"
1804:                        + "}\n"
1805:                        + "\n"
1806:                        + "\n"
1807:                        + "//holds	calendar date range	including greyed next/prev months\n"
1808:                        + "mfGetAppointments.m_dTemp = new Date();\n"
1809:                        + "mfGetAppointments.szQuery=\"\";\n"
1810:                        + "void function mfGetAppointments(fRenderVeiw,fUpdateBolding,fResetQuery)\n"
1811:                        + "{\n"
1812:                        + "	if (true == fUpdateBolding) \n"
1813:                        + "	{\n"
1814:                        + "		onRSC_getAppointments.fUpdateBolding = true; //we will bold after getting the appt data\n"
1815:                        + "	}	\n"
1816:                        + "	if(null != m_objStatus )\n"
1817:                        + "	{\n"
1818:                        + "		m_objStatus.style.display=\"\";\n"
1819:                        + "		m_objStatus.innerText = L_szUpdating;\n"
1820:                        + "	}\n"
1821:                        + "\n"
1822:                        + "	onRSC_getAppointments.fResetQuery=fResetQuery;\n"
1823:                        + "	m_fHaveData	= false; //stop	event firings\n"
1824:                        + "\n"
1825:                        + "	//Use last stored query in case where polling fires but user has calendar in another month than the view\n"
1826:                        + "	//Happens most when going out past the expansion which fires another expansion with triggers polling changes\n"
1827:                        + "	if (\"\"==mfGetAppointments.szQuery) fResetQuery=true;\n"
1828:                        + "	if (fResetQuery)\n"
1829:                        + "	{\n"
1830:                        + "		var iX = 7;\n"
1831:                        + "		iX = m_rgCalCells.length - 1;\n"
1832:                        + "		if (2==m_iView) //monthly gets full 6 weeks\n"
1833:                        + "		{\n"
1834:                        + "			//this shifts an extra day for the montly view calendar in sunday start\n"
1835:                        + "			//while view shows monday start (same problem with weekly view)\n"
1836:                        + "			if (0==m_iStartDay)\n"
1837:                        + "			{\n"
1838:                        + "				m_oCalStartDate.setHours(24,0,0,0);\n"
1839:                        + "				m_oCalEndDate.setHours(24,0,0,0);\n"
1840:                        + "				var szDateStart	= mfGetSearchDateUTC(m_oCalStartDate);\n"
1841:                        + "				var szDateEnd =	mfGetSearchDateUTC(m_oCalEndDate);\n"
1842:                        + "				m_oCalStartDate.setHours(-24,0,0,0);\n"
1843:                        + "				m_oCalEndDate.setHours(-24,0,0,0);\n"
1844:                        + "			}\n"
1845:                        + "			else\n"
1846:                        + "			{\n"
1847:                        + "				var szDateStart	= mfGetSearchDateUTC(m_oCalStartDate);\n"
1848:                        + "				var szDateEnd =	mfGetSearchDateUTC(m_oCalEndDate);\n"
1849:                        + "			}\n"
1850:                        + "		}\n"
1851:                        + "		else if (1==m_iView)//weekly\n"
1852:                        + "		{\n"
1853:                        + "			//this shifts an extra day for the weekly view calendar in sunday start \n"
1854:                        + "			//while view shows monday start (same problem with monthly view)\n"
1855:                        + "			if (0==m_iStartDay)\n"
1856:                        + "			{\n"
1857:                        + "				m_objSelectedStart.setHours(24,0,0,0);\n"
1858:                        + "				var szDateStart	= mfGetSearchDateUTC(m_objSelectedStart);\n"
1859:                        + "				m_objSelectedStart.setHours(168,0,0,0);\n"
1860:                        + "				var szDateEnd =	mfGetSearchDateUTC(m_objSelectedStart);\n"
1861:                        + "				m_objSelectedStart.setHours(-192,0,0,0);\n"
1862:                        + "			}\n"
1863:                        + "			else\n"
1864:                        + "			{\n"
1865:                        + "				var szDateStart	= mfGetSearchDateUTC(m_objSelectedStart);\n"
1866:                        + "				m_objSelectedStart.setHours(168,0,0,0);\n"
1867:                        + "				var szDateEnd =	mfGetSearchDateUTC(m_objSelectedStart);\n"
1868:                        + "				m_objSelectedStart.setHours(-168,0,0,0);\n"
1869:                        + "			}\n"
1870:                        + "		}	\n"
1871:                        + "		else //daily view (default)\n"
1872:                        + "		{\n"
1873:                        + "			var szDateStart	= mfGetSearchDateUTC(m_objSelectedStart);\n"
1874:                        + "			m_objSelectedStart.setHours(24,0,0,0);\n"
1875:                        + "			var szDateEnd =	mfGetSearchDateUTC(m_objSelectedStart);\n"
1876:                        + "			m_objSelectedStart.setHours(-24,0,0,0);\n"
1877:                        + "		}\n"
1878:                        + "\n"
1879:                        + "		mfGetAppointments.szQuery='<a:searchrequest xmlns:a=\"DAV:\" > ' +\n"
1880:                        + "		'<a:sql>Select ' +\n"
1881:                        + "		 '\"urn:schemas:calendar:location\" AS location, ' +\n"
1882:                        + "		 '\"urn:schemas:httpmail:subject\" AS subject, '+\n"
1883:                        + "		 '\"urn:schemas:calendar:dtstart\" AS dtstart, ' +\n"
1884:                        + "		 '\"urn:schemas:calendar:dtend\" AS dtend, ' +\n"
1885:                        + "		 '\"urn:schemas:calendar:busystatus\" AS busystatus, ' +\n"
1886:                        + "		 '\"urn:schemas:calendar:instancetype\" AS instancetype, ' +\n"
1887:                        + "		 '\"urn:schemas:calendar:alldayevent\" AS alldayevent, ' +\n"
1888:                        + "		 '\"http://schemas.microsoft.com/mapi/proptag/x10c70003\" AS pr_cdormid, ' +\n"
1889:                        + "		 '\"http://schemas.microsoft.com/exchange/sensitivity-long\" AS sensitivity, '+\n"
1890:                        + "		 '\"http://schemas.microsoft.com/mapi/apptstateflags\" AS apptstateflags, '+\n"
1891:                        + "		 '\"urn:schemas:calendar:uid\" AS uid ' +\n"
1892:                        + "		'FROM Scope(\\'SHALLOW TRAVERSAL OF \"\"\\') ' +\n"
1893:                        + "		'WHERE NOT \"urn:schemas:calendar:instancetype\" = 1 ' +\n"
1894:                        + "		  'AND \"urn:schemas:calendar:dtend\" &gt; \\''+szDateStart+'\\'  ' +\n"
1895:                        + "		  'AND \"urn:schemas:calendar:dtstart\" &lt; \\''+szDateEnd+'\\' ' +\n"
1896:                        + "		'ORDER BY \"urn:schemas:calendar:dtstart\" ASC ' +\n"
1897:                        + "		'</></>';\n"
1898:                        + "		\n"
1899:                        + "	}\n"
1900:                        + "	\n"
1901:                        + "	m_objXMLhttp = new ActiveXObject(\"Microsoft.XMLhttp\");\n"
1902:                        + "	onRSC_getAppointments.fRenderView=fRenderVeiw;\n"
1903:                        + "	try\n"
1904:                        + "	{\n"
1905:                        + "		m_objXMLhttp.open(\"SEARCH\","
1906:                        + JSWrapperHelper.CONVERT_EXPRESSION_FUNCTION_WRAP_START
1907:                        + "folderURL), true);\n"
1908:                        + "		m_objXMLhttp.setRequestHeader(\"Content-Type\",\"text/xml\");\n"
1909:                        + "		m_objXMLhttp.onreadystatechange = onRSC_getAppointments;\n"
1910:                        + "		m_objXMLhttp.send(mfGetAppointments.szQuery);\n"
1911:                        + "	}\n"
1912:                        + "	catch(e)\n"
1913:                        + "	{\n"
1914:                        + "		alert(\"Error in	ExchangeCalendar.HTC mfGetAppointments() with searchrequest: \"+e.description);\n"
1915:                        + "		onRSC_getAppointments.fRenderView = true;\n"
1916:                        + "	}\n"
1917:                        + "}\n"
1918:                        + "\n"
1919:                        + "//returns UTC date in \"yyyy/mm/dd hh:mm:ss\"	format for DAV searchrequests\n"
1920:                        + "void function mfGetSearchDateUTC(objDate)\n"
1921:                        + "{\n"
1922:                        + "	var	szYear		= objDate.getUTCFullYear();\n"
1923:                        + "	var	szMonth		= objDate.getUTCMonth()+1;\n"
1924:                        + "	var	szDate		= objDate.getUTCDate();\n"
1925:                        + "	var	szHrs		= objDate.getUTCHours();\n"
1926:                        + "	var	szMin		= objDate.getUTCMinutes();\n"
1927:                        + "	return (  szYear+\"/\"+\n"
1928:                        + "			((szMonth<10)?(\"0\"+szMonth):szMonth)  +	\"/\"	+\n"
1929:                        + "			((szDate<10) ?(\"0\"+szDate) :szDate)	  +	\" \"	+\n"
1930:                        + "			((szHrs<10)	 ?(\"0\"+szHrs)  :szHrs)	  +	\":\"	+\n"
1931:                        + "			((szMin<10)	 ?(\"0\"+szMin)  :szMin)	  +	\":00\"	);\n"
1932:                        + "}\n"
1933:                        + "\n"
1934:                        + "void function mfBoldDates(rgApptStartTimes,rgApptEndTimes,rgIsAllDayEvent)\n"
1935:                        + "{\n"
1936:                        + "	var x;\n"
1937:                        + "	var rgNodes=null;\n"
1938:                        + "	for(x=7; x < m_rgCalCells.length; x++)\n"
1939:                        + "	{\n"
1940:                        + "		rgNodes=mfGetNodes(m_rgCalCells[x].year,m_rgCalCells[x].month,Number(m_rgCalCells[x].innerText));\n"
1941:                        + "		m_rgCalCells[x].style.fontWeight = rgNodes.length ? \"bold\" : \"normal\";\n"
1942:                        + "	}\n"
1943:                        + "}\n"
1944:                        + "function mfGetNodes(iY,iM,iD)\n"
1945:                        + "{\n"
1946:                        + "	if(null == m_objOutPutXMLBold)\n"
1947:                        + "	{\n"
1948:                        + "		return;\n"
1949:                        + "	}\n"
1950:                        + "	var dtstartUTC		= mfGetUTFIsoDate(iY, iM, iD, 0, 0);\n"
1951:                        + "	var dtendUTC		= mfGetUTFIsoDate(iY, iM, iD+1,0, 0);\n"
1952:                        + "	var szStartTimeQuery=	\"(dtstart$ge$'\" + dtstartUTC	+ \"'&&dtstart$lt$'\"	+ dtendUTC + \"')\";\n"
1953:                        + "	var szEndTimeQuery	=	\"(dtend$gt$'\" + dtstartUTC + \"'&&dtend$le$'\"+ dtendUTC+ \"')\";\n"
1954:                        + "	var szOutSideQuery	=	\"(dtstart$lt$'\" + dtstartUTC	+ \"'&&dtend$gt$'\"+ dtendUTC + \"')\";\n"
1955:                        + "	var szQuery			=	\"root/appointment[\"	+ szStartTimeQuery + \"||\" +	szEndTimeQuery + \"||\" +	szOutSideQuery + \"]\";\n"
1956:                        + "	return(m_objOutPutXMLBold.selectNodes(szQuery));\n"
1957:                        + "}\n"
1958:                        + "\n"
1959:                        + "mfGetUTFIsoDate.objD= new Date();\n"
1960:                        + "function mfGetUTFIsoDate(iYr,iMon,iDate,iHr,iMin)\n"
1961:                        + "{\n"
1962:                        + "	mfGetUTFIsoDate.objD.setFullYear(iYr,iMon,iDate);\n"
1963:                        + "	mfGetUTFIsoDate.objD.setHours(iHr,iMin,0);\n"
1964:                        + "	var iYear		= mfGetUTFIsoDate.objD.getUTCFullYear();\n"
1965:                        + "	var szMonth		= mfGetUTFIsoDate.objD.getUTCMonth()+1;//0 offset adjustment\n"
1966:                        + "	var szDate		= mfGetUTFIsoDate.objD.getUTCDate();\n"
1967:                        + "	var szHours		= mfGetUTFIsoDate.objD.getUTCHours();\n"
1968:                        + "	var szMinutes	= mfGetUTFIsoDate.objD.getUTCMinutes();\n"
1969:                        + "	if (szMonth< 10)\n"
1970:                        + "	{\n"
1971:                        + "		szMonth	=  \"0\"+szMonth;\n"
1972:                        + "	}	\n"
1973:                        + "	if (szDate < 10)\n"
1974:                        + "	{\n"
1975:                        + "		szDate =  \"0\"+szDate;\n"
1976:                        + "	}	\n"
1977:                        + "	if (szHours	< 10)\n"
1978:                        + "	{\n"
1979:                        + "		szHours	=  \"0\"+szHours;\n"
1980:                        + "	}	\n"
1981:                        + "	if (szMinutes <	10)\n"
1982:                        + "	{\n"
1983:                        + "		szMinutes =	 \"0\"+szMinutes;\n"
1984:                        + "	}\n"
1985:                        + "	return(String(iYear+\"-\"+szMonth+\"-\"+szDate+\"T\"+szHours+\":\"+szMinutes+\":00.000Z\"));\n"
1986:                        + "}\n"
1987:                        + "\n"
1988:                        + "//szDtTime = ISO formatted UTC time	string = \"1999-02-18T02:00:00.000Z\"\n"
1989:                        + "//returns =	UTC	time in milliseconds\n"
1990:                        + "function mfGetIsoDateMs(szIsoDate)\n"
1991:                        + "{\n"
1992:                        + "	var re=mfGetRegExpIsoDates();\n"
1993:                        + "	re.lastIndex=0;\n"
1994:                        + "	var arr = re.exec( szIsoDate );\n"
1995:                        + "	return ( (null == arr) ? null : Date.UTC( Number( arr[1]), Number(arr[2])-1, Number(arr[3]), Number(arr[4]), Number(arr[5]), 0, 0 ) );\n"
1996:                        + "}\n"
1997:                        + "\n"
1998:                        + "mfGetRegExpIsoDates.re;\n"
1999:                        + "function mfGetRegExpIsoDates()\n"
2000:                        + "{\n"
2001:                        + "	if (null == mfGetRegExpIsoDates.re)\n"
2002:                        + "	{ \n"
2003:                        + "		mfGetRegExpIsoDates.re = /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):\\d{2}\\.\\d{3}Z?$/;\n"
2004:                        + "	}\n"
2005:                        + "	return(mfGetRegExpIsoDates.re);\n"
2006:                        + "}\n"
2007:                        + "\n"
2008:                        + "void function onAbort()\n"
2009:                        + "{\n"
2010:                        + "	return;\n"
2011:                        + "}\n"
2012:                        + "void function onRSC_getBoldData()\n"
2013:                        + "{\n"
2014:                        + "	if(4 != m_objXMLhttpBold.readyState)\n"
2015:                        + "	{\n"
2016:                        + "		return;\n"
2017:                        + "	}\n"
2018:                        + "	m_objXMLhttpBold.onreadystatechange	= onAbort;\n"
2019:                        + "	var	objXML = m_objXMLhttpBold.responseXML;\n"
2020:                        + "	objXML.transformNodeToObject(m_objXSL.documentElement, m_objOutPutXMLBold);\n"
2021:                        + "	var	objApptNodes	= m_objOutPutXMLBold.selectNodes('root/appointment/dtstart');\n"
2022:                        + "	var	objApptNodes1	= m_objOutPutXMLBold.selectNodes('root/appointment/dtend');\n"
2023:                        + "	var	objApptNodes2	= m_objOutPutXMLBold.selectNodes('root/appointment/alldayevent');\n"
2024:                        + "\n"
2025:                        + "	mfBoldDates(objApptNodes,objApptNodes1,objApptNodes2);\n"
2026:                        + "	if(null != m_objStatus )\n"
2027:                        + "	{\n"
2028:                        + "		m_objStatus.style.display=\"none\";\n"
2029:                        + "		m_objStatus.innerText = \"\";\n"
2030:                        + "	}\n"
2031:                        + "}\n"
2032:                        + "\n"
2033:                        + "onRSC_getAppointments.fRenderView = true;\n"
2034:                        + "onRSC_getAppointments.fUpdateBolding = false;\n"
2035:                        + "onRSC_getAppointments.fResetQuery=true;\n"
2036:                        + "void function onRSC_getAppointments()\n"
2037:                        + "{\n"
2038:                        + "	if(4 != m_objXMLhttp.readyState)\n"
2039:                        + "	{\n"
2040:                        + "		return;\n"
2041:                        + "	}\n"
2042:                        + "	m_objXMLhttp.onreadystatechange	= onAbort;\n"
2043:                        + "	var objXML = m_objXMLhttp.responseXML;\n"
2044:                        + "	objXML.transformNodeToObject(m_objXSL.documentElement, m_objOutPutXML);\n"
2045:                        + "	//only fire	(refresh the veiwer) if	the	calendar is	on that	month\n"
2046:                        + "	m_fHaveData	= true;\n"
2047:                        + "	if(m_objMainDate >= m_oCalStartDate && m_objMainDate <= m_oCalEndDate)\n"
2048:                        + "	{\n"
2049:                        + "		if(true == onRSC_getAppointments.fRenderView)\n"
2050:                        + "		{\n"
2051:                        + "			fire_OnDateChange(m_objOutPutXML);\n"
2052:                        + "		}\n"
2053:                        + "	}\n"
2054:                        + "	onRSC_getAppointments.fRenderView=true;\n"
2055:                        + "	if(null != m_objStatus )\n"
2056:                        + "	{\n"
2057:                        + "		m_objStatus.style.display=\"none\";\n"
2058:                        + "		m_objStatus.innerText = \"\";\n"
2059:                        + "	}\n"
2060:                        + "	if (true == onRSC_getAppointments.fUpdateBolding)\n"
2061:                        + "	{\n"
2062:                        + "		onRSC_getAppointments.fUpdateBolding=false;\n"
2063:                        + "		mfGetBoldData(onRSC_getAppointments.fResetQuery);\n"
2064:                        + "	}\n"
2065:                        + "}\n"
2066:                        + "/************************PROPERTY ACCESS FUNCTIONS***********************/\n"
2067:                        + "function get_statusEl()\n"
2068:                        + "{\n"
2069:                        + "	return(m_objStatus);\n"
2070:                        + "}\n"
2071:                        + "function put_statusEl(newVal)\n"
2072:                        + "{\n"
2073:                        + "	if(typeof(newVal) == 'string')\n"
2074:                        + "	{\n"
2075:                        + "		m_objStatus = window.document.all[newVal];\n"
2076:                        + "		return;\n"
2077:                        + "	}\n"
2078:                        + "	m_objStatus = newVal;\n"
2079:                        + "}\n"
2080:                        + "function put_PollInterval(newVal)\n"
2081:                        + "{\n"
2082:                        + "	m_iPollInterval	= Number(newVal);\n"
2083:                        + "}\n"
2084:                        + "function get_PollInterval()\n"
2085:                        + "{\n"
2086:                        + "	return m_iPollInterval;\n"
2087:                        + "}\n"
2088:                        + "function put_readOnly(newVal)\n"
2089:                        + "{\n"
2090:                        + "	if(\"true\" == String(newVal))\n"
2091:                        + "	{\n"
2092:                        + "		m_fReadOnly	= true;\n"
2093:                        + "	}\n"
2094:                        + "	else\n"
2095:                        + "	{\n"
2096:                        + "		m_fReadOnly	= false;\n"
2097:                        + "	} \n"
2098:                        + "}\n"
2099:                        + "function get_readOnly()\n"
2100:                        + "{\n"
2101:                        + "		return m_fReadOnly;\n"
2102:                        + "}\n"
2103:                        + "function put_Day(newVal)\n"
2104:                        + "{\n"
2105:                        + "	m_objMainDate.setDate(Number(newVal));\n"
2106:                        + "}\n"
2107:                        + "function get_Day()\n"
2108:                        + "{\n"
2109:                        + "	return m_objSelectedStart.getDate();\n"
2110:                        + "}\n"
2111:                        + "function put_Month(newVal)\n"
2112:                        + "{\n"
2113:                        + "	m_objMainDate.setMonth(Number(newVal));\n"
2114:                        + "}\n"
2115:                        + "function get_Month()\n"
2116:                        + "{\n"
2117:                        + "	return m_objSelectedStart.getMonth();\n"
2118:                        + "}\n"
2119:                        + "function put_Year(newVal)\n"
2120:                        + "{\n"
2121:                        + "	m_objMainDate.setYear(Number(newVal));	\n"
2122:                        + "}\n"
2123:                        + "function get_Year()\n"
2124:                        + "{\n"
2125:                        + "	return m_objSelectedStart.getFullYear();\n"
2126:                        + "}\n"
2127:                        + "function get_FullYear()\n"
2128:                        + "{\n"
2129:                        + "	return m_objSelectedStart.getFullYear();\n"
2130:                        + "}\n"
2131:                        + "function put_FullYear(newVal)\n"
2132:                        + "{\n"
2133:                        + "	m_objMainDate.setFullYear(Number(newVal));	\n"
2134:                        + "}\n"
2135:                        + "function put_caltext(newVal)\n"
2136:                        + "{\n"
2137:                        + "L_szUpdatingBold = newVal;\n"
2138:                        + "}\n"
2139:                        + "function get_caltext()\n"
2140:                        + "{\n"
2141:                        + "return(L_szUpdatingBold);\n"
2142:                        + "}\n"
2143:                        + "function put_viewtext(newVal)\n"
2144:                        + "{\n"
2145:                        + "L_szUpdating = newVal;\n"
2146:                        + "}\n"
2147:                        + "function get_viewtext()\n"
2148:                        + "{\n"
2149:                        + "return(L_szUpdating);\n"
2150:                        + "}\n"
2151:                        + "//Causes a refresh of all the data for the current view\n"
2152:                        + "function f_refresh()\n"
2153:                        + "{\n"
2154:                        + "	mfGetAppointments(true,true,false);\n"
2155:                        + "}\n"
2156:                        + "</SCRIPT>\n" + "</HTML>\n";
2157:
2158:                String lJSFuncRules = "<Function type=\"EXPRESSION\" name=\"*XMLhttp*.open\" paramPatterns=\",y,\"/>"
2159:                        + "<Function type=\"EXPRESSION\" name=\"*XSL.load\" paramPatterns=\"y\"/>";
2160:
2161:                RuleSet lRuleSet = CreateRuleSet
2162:                        .withHTMLJSTokenJSVarJSFunRules("", "", lJSFuncRules);
2163:                Rewriter lRewriter = RewriterPool.create(lRuleSet,
2164:                        LanguageConstants.HTML_MIME);
2165:                String lResult = lRewriter.rewrite(lInput,
2166:                        getDefaultTranslator());
2167:                assertEquals(lExpectation, lResult);
2168:            }//testOutllokExchangeCalendarHTC()
2169:
2170:            public void testOutllokExchangeCalendarHTC1() throws Exception {
2171:                String lInput =
2172:                //"<SCRIPT	LANGUAGE=\"JavaScript\">\n" +
2173:                "\n"
2174:                        + "var	m_objXSL			=	new	ActiveXObject(\"Microsoft.XMLDOM\");\n"
2175:                        + "var	m_objOutPutXML		=	new	ActiveXObject(\"Microsoft.XMLDOM\");\n"
2176:                        + "var	m_objOutPutXMLBold  =	new	ActiveXObject(\"Microsoft.XMLDOM\");\n"
2177:                        + "var	m_iIntervalID		=	null;\n"
2178:                        + "var	m_iPollInterval		=	10;\n"
2179:                        + "var	m_objXMLhttp		=	null;\n"
2180:                        + "var	m_objXMLhttpBold	=	null;\n"
2181:                        + "var	m_objXMLhttp_polling=	new	ActiveXObject(\"Microsoft.XMLhttp\");\n"
2182:                        + "var	m_iSubscriptionID	=	null;\n"
2183:                        + "var	m_fReadOnly			=	false;\n"
2184:                        + "\n"
2185:                        + "var	m_objMainDate;\n"
2186:                        + "var m_objTodaysDate	= new Date();\n"
2187:                        + "	m_objTodaysDate.setHours(0,0,0,0);\n"
2188:                        + "\n"
2189:                        + "\n"
2190:                        + "var	m_objSelectedStart;\n"
2191:                        + "var	m_objSelectedEnd;\n"
2192:                        + "\n"
2193:                        + "var	m_objMainTable		=	null;\n"
2194:                        + "var	m_objSelectedDay	=	new	Array();\n"
2195:                        + "var	m_fHasLoaded		=	false;\n"
2196:                        + "var	m_iFirstDayOfMonth	=	0;\n"
2197:                        + "var	m_iDaysInMonth		=	0;\n"
2198:                        + "var	m_iView				=	0;\n"
2199:                        + "var	m_szHighlightBG		=	\"highlight\";\n"
2200:                        + "var	m_szHighlightText	=	\"highlighttext\";\n"
2201:                        + "var	m_szNormalDateBG	=	\"window\";\n"
2202:                        + "var	m_szNormalBG		=	\"window\";\n"
2203:                        + "var	m_szNormalText		=	\"windowtext\";\n"
2204:                        + "var	m_szInactiveBG		=	\"appworkspace\";\n"
2205:                        + "var m_objStatus;\n"
2206:                        + "var m_rgCalCells;\n"
2207:                        + "var m_rgMonthNamesShort;\n"
2208:                        + "var m_rgMonthNamesLong;\n"
2209:                        + "var m_szDateFormat;\n"
2210:                        + "var m_rgWeekdayLetters;\n"
2211:                        + "var	m_fHaveData	= false;\n"
2212:                        + "var m_iStartDay;\n"
2213:                        + "var	m_oCalStartDate	= new Date();\n"
2214:                        + "var	m_oCalEndDate =	new Date();\n"
2215:                        + "var L_szUpdating;\n"
2216:                        + "var L_szUpdatingBold;\n"
2217:                        + "\n"
2218:                        + "void function onDocumentReady()\n"
2219:                        + "{\n"
2220:                        + "	var	szXSLString =\n"
2221:                        + "	'<xsl:template xmlns:xsl=\"uri:xsl\" xmlns:a=\"DAV:\"><root>' +\n"
2222:                        + "	'<xsl:for-each select=\"a:multistatus/a:response\">' +\n"
2223:                        + "	'<appointment><url><xsl:value-of select=\"a:href\" /></url>' +\n"
2224:                        + "	'<xsl:for-each select=\"a:propstat[a:status != \\'HTTP/1.1 404 Resource Not Found\\']/a:prop\">' +\n"
2225:                        + "		'<subject><xsl:value-of	select=\"subject\" /></subject>' +\n"
2226:                        + "		'<instancetype><xsl:value-of select=\"instancetype\" /></instancetype>' +\n"
2227:                        + "		'<location><xsl:value-of select=\"location\" /></location>' +\n"
2228:                        + "		'<dtstart><xsl:value-of	select=\"dtstart\" /></dtstart>' +\n"
2229:                        + "		'<dtend><xsl:value-of select=\"dtend\" /></dtend>' +\n"
2230:                        + "		'<busystatus><xsl:value-of select=\"busystatus\" /></busystatus>'	+ \n"
2231:                        + "		'<alldayevent><xsl:value-of	select=\"alldayevent\" /></alldayevent>' +\n"
2232:                        + "		'<pr_cdormid><xsl:value-of	select=\"pr_cdormid\" /></pr_cdormid>' +\n"
2233:                        + "		'<sensitivity><xsl:value-of	select=\"sensitivity\" /></sensitivity>' +\n"
2234:                        + "		'<apptstateflags><xsl:value-of	select=\"apptstateflags\" /></apptstateflags>' +\n"
2235:                        + "		'<uid><xsl:value-of	select=\"uid\" /></uid>' +\n"
2236:                        + "	'</xsl:for-each></appointment></xsl:for-each></root></xsl:template>';\n"
2237:                        + "\n"
2238:                        + "	m_objXSL.loadXML(szXSLString);\n"
2239:                        + "\n"
2240:                        + "	/**************Do initial calendar rendering******************/\n"
2241:                        + "	m_iStartDay =	(this.startDay == null)?0:Number(this.startDay);\n"
2242:                        + "	with (this.__idExchMasterCalendarTableNode.children[0])\n"
2243:                        + "	{\n"
2244:                        + "		cells[0].children[0].src =	this.prevMonthImage;\n"
2245:                        + "		cells[2].children[0].src =	this.nextMonthImage;\n"
2246:                        + "	}\n"
2247:                        + "	mfRenderCalendar();\n"
2248:                        + "\n"
2249:                        + "	m_rgMonthNamesShort = (null == this.monthnamesShort || \"\" == this.monthnamesShort)?\n"
2250:                        + "						   \"Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec\".split(\";\"):\n"
2251:                        + "						   this.monthnamesShort.split(\";\");\n"
2252:                        + "	m_rgMonthNamesLong  = (null == this.monthnamesLong || \"\" == this.monthnamesLong)?\n"
2253:                        + "						   \"January;February;March;April;May;June;July;August;September;October;November;December\".split(\";\"):\n"
2254:                        + "						   this.monthnamesLong.split(\";\");\n"
2255:                        + "	m_rgWeekdayLetters = (this.weekdayLetters)?this.weekdayLetters.split(\";\"):\"M;T;W;T;F;S;S\".split(\";\");\n"
2256:                        + "	m_szDateFormat = (this.dateFormat)?this.dateFormat:\"[MMMM] [yyyy]\";\n"
2257:                        + "	var	iM=-1,iD=-1,iY=-1,szX;\n"
2258:                        + "	m_objMainTable = this.children[0];\n"
2259:                        + "	m_rgCalCells = m_objMainTable.cells[\"numbercell\"];\n"
2260:                        + "	for(var i =	0; i < 7; i++) //day letters\n"
2261:                        + "	{\n"
2262:                        + "		with(m_rgCalCells[i])\n"
2263:                        + "		{\n"
2264:                        + "			innerText = m_rgWeekdayLetters[( (m_iStartDay+i)%m_rgWeekdayLetters.length )];\n"
2265:                        + "			dayNameCell = \"1\";\n"
2266:                        + "			style.backgroundColor = m_szNormalBG;\n"
2267:                        + "			style.color	 = m_szNormalText;\n"
2268:                        + "			style.borderBottom = \"solid 1px black\";\n"
2269:                        + "		}\n"
2270:                        + "	}\n"
2271:                        + "	//parseInt treats leading '0' as octal numbers\n"
2272:                        + "	//need to disect the whole number and use Number()\n"
2273:                        + "	iM = parseURLfor(\"m\");\n"
2274:                        + "	iM = (null==iM || \"\"==iM)?-1:Number(iM);\n"
2275:                        + "	iD = parseURLfor(\"d\");\n"
2276:                        + "	iD = (null==iD || \"\"==iD)?-1:Number(iD);\n"
2277:                        + "	iY = parseURLfor(\"y\");\n"
2278:                        + "	iY = (null==iY || \"\"==iY)?-1:Number(iY);\n"
2279:                        + "\n"
2280:                        + "	if(-3 == iM+iY+iD)//no date info on the url\n"
2281:                        + "	{\n"
2282:                        + "		m_objMainDate =	new	Date();	 //use todays date\n"
2283:                        + "	}\n"
2284:                        + "	else\n"
2285:                        + "	{\n"
2286:                        + "		//missing defaults to current month/year and 1st day of	month\n"
2287:                        + "		iM = (isNaN(iM)	|| iM == -1)?m_objTodaysDate.getMonth():iM-1;\n"
2288:                        + "		iY = (isNaN(iY)	|| iY == -1)?m_objTodaysDate.getFullYear():iY;\n"
2289:                        + "		iD = (isNaN(iD)	|| iD == -1)?1:iD;\n"
2290:                        + "			\n"
2291:                        + "		try\n"
2292:                        + "		{\n"
2293:                        + "			m_objMainDate =	new Date(iY,iM,iD);	 \n"
2294:                        + "		}\n"
2295:                        + "		catch(e)\n"
2296:                        + "		{\n"
2297:                        + "			m_objMainDate =	new Date();	 \n"
2298:                        + "		}\n"
2299:                        + "	}\n"
2300:                        + "	m_objSelectedStart	=	new	Date(m_objMainDate);\n"
2301:                        + "	m_objSelectedEnd	=	new	Date(m_objMainDate);\n"
2302:                        + "	//search url for view\n"
2303:                        + "	var szView = parseURLfor(\"view\");\n"
2304:                        + "	szView = (null == szView)?\"daily\":szView.toLowerCase();\n"
2305:                        + "	m_iView=(szView==\"weekly\")?1:( (szView==\"monthly\")?2:0 );\n"
2306:                        + "	if (1 == m_iView) //adjust selects weekly\n"
2307:                        + "	{//need to find start of this week\n"
2308:                        + "		i = m_objSelectedStart.getDay()-m_iStartDay;\n"
2309:                        + "		i+=(0>=i)?7:0;\n"
2310:                        + "		m_objSelectedStart.setDate(m_objSelectedStart.getDate()-i);\n"
2311:                        + "		m_objSelectedEnd.setDate(m_objSelectedStart.getDate()+6);\n"
2312:                        + "	}\n"
2313:                        + "	else if (2==m_iView) //monthly\n"
2314:                        + "	{\n"
2315:                        + "		m_objSelectedStart.setDate(1);\n"
2316:                        + "		i = m_objSelectedStart.getDay()-m_iStartDay;\n"
2317:                        + "		i+=(0>=i)?7:0;\n"
2318:                        + "		m_objSelectedStart.setDate(m_objSelectedStart.getDate()-i);\n"
2319:                        + "		\n"
2320:                        + "		m_objSelectedEnd.setTime( m_objSelectedStart.getTime()+(41*86400000) );\n"
2321:                        + "	}\n"
2322:                        + "	m_objSelectedStart.setHours(0,0,0,0);\n"
2323:                        + "	m_objSelectedEnd.setHours(24,0,0,0);\n"
2324:                        + "\n"
2325:                        + "	mfUpdateCalendar(true,true);\n"
2326:                        + "}\n"
2327:                        + "void function fire_OnDateChange(objXML)\n"
2328:                        + "{\n"
2329:                        + "	if(m_fHaveData)\n"
2330:                        + "	{\n"
2331:                        + "		var objEvent = createEventObject();\n"
2332:                        + "		objEvent.xml = objXML;\n"
2333:                        + "		objEvent.view = m_iView;\n"
2334:                        + "		objEvent.date = (2==m_iView)?m_objMainDate:m_objSelectedStart;\n"
2335:                        + "		id_OnDateChange.fire(objEvent);\n"
2336:                        + "	}\n"
2337:                        + "}\n"
2338:                        + "\n"
2339:                        + "void function onStop() \n"
2340:                        + "{\n"
2341:                        + "	if(m_iIntervalID)\n"
2342:                        + "	{\n"
2343:                        + "		window.clearInterval(m_iIntervalID);\n"
2344:                        + "	}\n"
2345:                        + "}\n"
2346:                        + "void function onClick()\n"
2347:                        + "{\n"
2348:                        + "	event.cancelBubble=true;\n"
2349:                        + "	if(!m_fReadOnly)\n"
2350:                        + "	{\n"
2351:                        + "		if(null != event.srcElement.dayCell)\n"
2352:                        + "		{ \n"
2353:                        + "			mfSetDailyView(event.srcElement);\n"
2354:                        + "			return;\n"
2355:                        + "		}\n"
2356:                        + "		else if(null != event.srcElement.leftNavButton)\n"
2357:                        + "		{\n"
2358:                        + "			m_objMainDate.setMonth(m_objMainDate.getMonth()-1);\n"
2359:                        + "			mfUpdateCalendar(false,true);\n"
2360:                        + "			return;\n"
2361:                        + "		}\n"
2362:                        + "		else if(null != event.srcElement.rightNavButton)\n"
2363:                        + "		{\n"
2364:                        + "			m_objMainDate.setMonth(m_objMainDate.getMonth()+1);\n"
2365:                        + "			mfUpdateCalendar(false,true);\n"
2366:                        + "			return;\n"
2367:                        + "		}\n"
2368:                        + "		else if(null != event.srcElement.monthDisplayName)\n"
2369:                        + "		{\n"
2370:                        + "			mfSetMonthlyView();\n"
2371:                        + "		}\n"
2372:                        + "		else if(null != event.srcElement.weekselect)\n"
2373:                        + "		{\n"
2374:                        + "			mfSetWeeklyView(m_objMainTable.rows[event.srcElement.parentElement.rowIndex].cells[1]);\n"
2375:                        + "		}\n"
2376:                        + "	}\n"
2377:                        + "}\n"
2378:                        + "\n"
2379:                        + "void function mfSetDailyView(eCell)\n"
2380:                        + "{\n"
2381:                        + "	m_iView=0;\n"
2382:                        + "	m_objSelectedStart.setFullYear(eCell.year,eCell.month,parseInt(eCell.innerText));\n"
2383:                        + "	m_objSelectedEnd.setTime(m_objSelectedStart);\n"
2384:                        + "	mfFindAndSelectDate();\n"
2385:                        + "	mfGetAppointments(true,false,true);\n"
2386:                        + "}\n"
2387:                        + "void function mfSetWeeklyView(eCell)\n"
2388:                        + "{\n"
2389:                        + "	m_iView=1;\n"
2390:                        + "	m_objSelectedStart.setFullYear(eCell.year,eCell.month,eCell.innerText);\n"
2391:                        + "	m_objSelectedEnd.setFullYear(eCell.year,eCell.month,Number(eCell.innerText)+6);\n"
2392:                        + "	mfFindAndSelectDate();\n"
2393:                        + "	mfGetAppointments(true,false,true);\n"
2394:                        + "}\n"
2395:                        + "void function mfSetMonthlyView()\n"
2396:                        + "{\n"
2397:                        + "	m_iView=2;\n"
2398:                        + "	m_objSelectedStart.setTime(m_oCalStartDate);\n"
2399:                        + "	m_objSelectedEnd.setTime(m_oCalEndDate);\n"
2400:                        + "	mfFindAndSelectDate();\n"
2401:                        + "	mfGetAppointments(true,false,true);\n"
2402:                        + "}\n"
2403:                        + "void function f_setView(iView)\n"
2404:                        + "{\n"
2405:                        + "	//use the currently selected cell to determine view\n"
2406:                        + "	if(m_iView == iView)\n"
2407:                        + "	{\n"
2408:                        + "		return;\n"
2409:                        + "	}\n"
2410:                        + "	m_iView	= iView;\n"
2411:                        + "	switch(iView)\n"
2412:                        + "	{\n"
2413:                        + "	case 1:\n"
2414:                        + "		//use the last selected day or today\n"
2415:                        + "		var x=(-1<mfFindAndSelectDate.iHoldLastDaily)?mfFindAndSelectDate.iHoldLastDaily:mfFindAndSelectDate.iStartIdx;\n"
2416:                        + "		mfSetWeeklyView(m_objMainTable.rows[m_rgCalCells[x].parentElement.rowIndex].cells[1]);\n"
2417:                        + "		break;\n"
2418:                        + "	case 2:\n"
2419:                        + "		mfSetMonthlyView();\n"
2420:                        + "		break;\n"
2421:                        + "	case 0:\n"
2422:                        + "	default:\n"
2423:                        + "		var x=(-1<mfFindAndSelectDate.iHoldLastDaily)?mfFindAndSelectDate.iHoldLastDaily:mfFindAndSelectDate.iStartIdx;\n"
2424:                        + "		mfSetDailyView(m_rgCalCells[x]);\n"
2425:                        + "	}\n"
2426:                        + "}\n"
2427:                        + "//unselects	current	selection\n"
2428:                        + "//searches calendar	for	matching date cell given in	m_objSelectedStart\n"
2429:                        + "mfFindAndSelectDate.iStartIdx=-1;\n"
2430:                        + "mfFindAndSelectDate.iEndIdx=-1;\n"
2431:                        + "mfFindAndSelectDate.iHoldLastDaily=-1;\n"
2432:                        + "void function mfFindAndSelectDate()\n"
2433:                        + "{\n"
2434:                        + "	var x,y;\n"
2435:                        + "	\n"
2436:                        + "	if (mfFindAndSelectDate.iStartIdx>-1)\n"
2437:                        + "	{ //remove any prev selection\n"
2438:                        + "		for(x=mfFindAndSelectDate.iStartIdx;x<=mfFindAndSelectDate.iEndIdx;x++)\n"
2439:                        + "		{\n"
2440:                        + "			m_rgCalCells[x].style.backgroundColor=m_rgCalCells[x].dayCell;\n"
2441:                        + "			m_rgCalCells[x].style.color=m_szNormalText;\n"
2442:                        + "		}\n"
2443:                        + "		mfFindAndSelectDate.iStartIdx=-1;\n"
2444:                        + "	}\n"
2445:                        + "	if (m_objSelectedStart>m_oCalEndDate || m_objSelectedEnd<m_oCalStartDate)\n"
2446:                        + "	{\n"
2447:                        + "		return;\n"
2448:                        + "	}\n"
2449:                        + "	x=7;\n"
2450:                        + "	if(2==m_iView) //monthly\n"
2451:                        + "	{\n"
2452:                        + "		if(m_objSelectedStart.getTime() == m_oCalStartDate.getTime()) //whole month showing\n"
2453:                        + "		{\n"
2454:                        + "			y=m_rgCalCells.length-1;\n"
2455:                        + "		}\n"
2456:                        + "		else if(m_objSelectedStart<m_oCalStartDate&&m_objSelectedEnd>m_oCalStartDate) //do 1st grey area\n"
2457:                        + "		{\n"
2458:                        + "			mfFindAndSelectDate.iStartIdx=7;\n"
2459:                        + "			for(x=7;\"1\"!=m_rgCalCells[x].innerText;x++)\n"
2460:                        + "			{\n"
2461:                        + "				m_rgCalCells[x].style.backgroundColor = m_szHighlightBG;\n"
2462:                        + "				m_rgCalCells[x].style.color = m_szHighlightText;\n"
2463:                        + "			}\n"
2464:                        + "			mfFindAndSelectDate.iEndIdx=x;\n"
2465:                        + "			return;\n"
2466:                        + "		}\n"
2467:                        + "		else if(m_objSelectedStart<m_oCalEndDate&&m_objSelectedEnd>m_oCalEndDate)//last gray area\n"
2468:                        + "		{\n"
2469:                        + "			x=m_rgCalCells.length-1;\n"
2470:                        + "			mfFindAndSelectDate.iEndIdx=x;\n"
2471:                        + "			for(;\"1\"!=m_rgCalCells[x].innerText;x--)\n"
2472:                        + "			{\n"
2473:                        + "				m_rgCalCells[x].style.backgroundColor = m_szHighlightBG;\n"
2474:                        + "				m_rgCalCells[x].style.color = m_szHighlightText;\n"
2475:                        + "			}\n"
2476:                        + "			m_rgCalCells[x].style.backgroundColor = m_szHighlightBG;\n"
2477:                        + "			m_rgCalCells[x].style.color = m_szHighlightText;\n"
2478:                        + "			mfFindAndSelectDate.iStartIdx=x-1;\n"
2479:                        + "			return;\n"
2480:                        + "		}\n"
2481:                        + "		else\n"
2482:                        + "		{\n"
2483:                        + "			return;\n"
2484:                        + "		}\n"
2485:                        + "	}\n"
2486:                        + "	else if (m_objSelectedStart>=m_oCalStartDate && m_objSelectedStart<=m_oCalEndDate)\n"
2487:                        + "	{\n"
2488:                        + "		x=Math.round((m_objSelectedStart-m_oCalStartDate)/86400000)+7;\n"
2489:                        + "	}\n"
2490:                        + "	y=x;\n"
2491:                        + "	if (0 != m_iView)\n"
2492:                        + "	{\n"
2493:                        + "		y=(2==m_iView)?m_rgCalCells.length-1:x+6;\n"
2494:                        + "		if (2==m_iView && m_objSelectedEnd<m_oCalEndDate)\n"
2495:                        + "		{\n"
2496:                        + "			y=Math.round((m_objSelectedEnd-m_oCalStartDate)/86400000)+7;\n"
2497:                        + "		}\n"
2498:                        + "	}\n"
2499:                        + "	mfFindAndSelectDate.iStartIdx=(x<49)?x:-1;\n"
2500:                        + "	mfFindAndSelectDate.iEndIdx=(y<49)?y:-1;;\n"
2501:                        + "	for (;(x<=y && x<49);x++)\n"
2502:                        + "	{\n"
2503:                        + "		m_rgCalCells[x].style.backgroundColor = m_szHighlightBG;\n"
2504:                        + "		m_rgCalCells[x].style.color = m_szHighlightText;\n"
2505:                        + "	}\n"
2506:                        + "	if (m_iView==0)\n"
2507:                        + "	{\n"
2508:                        + "		mfFindAndSelectDate.iHoldLastDaily=mfFindAndSelectDate.iStartIdx;\n"
2509:                        + "	}\n"
2510:                        + "}\n"
2511:                        + "\n"
2512:                        + "//PARAM: iMonth - jan=0\n"
2513:                        + "function mfGetDaysInMonth(iMonth, iYear)\n"
2514:                        + "{\n"
2515:                        + "	iMonth+=(iMonth==-1)?13:1; //remove 0 offset (1=jan)\n"
2516:                        + "	return( (2 == iMonth) ? (28+mfIsLeapYear(iYear)):(30+((iMonth+(iMonth>7))%2)));\n"
2517:                        + "}\n"
2518:                        + "function mfIsLeapYear(yr)\n"
2519:                        + "{\n"
2520:                        + "	return((yr	% 4	== 0) && (yr % 100 != 0) ||	(yr	% 400 == 0))?1:0;\n"
2521:                        + "}\n"
2522:                        + "\n"
2523:                        + "mfWriteCellNumbers.todayCellIdx=-1;\n"
2524:                        + "void function mfWriteCellNumbers()\n"
2525:                        + "{\n"
2526:                        + "	m_objMainDate.setDate(1);\n"
2527:                        + "\n"
2528:                        + "	var iM = m_objMainDate.getMonth();\n"
2529:                        + "	var iY = m_objMainDate.getFullYear();\n"
2530:                        + "	var iY2 = iY%100;\n"
2531:                        + "\n"
2532:                        + "	var szCaptionText = this.m_szDateFormat.replace(/\\[MMMM\\]/g, m_rgMonthNamesLong[iM]);\n"
2533:                        + "		\n"
2534:                        + "	szCaptionText = szCaptionText.replace(/\\[MMM\\]/g, m_rgMonthNamesShort[iM]);\n"
2535:                        + "	szCaptionText = szCaptionText.replace(/\\[MM\\]/g, ++iM<10 ? \"0\"+iM : iM );\n"
2536:                        + "	szCaptionText = szCaptionText.replace(/\\[M\\]/g, iM);\n"
2537:                        + "	szCaptionText = szCaptionText.replace(/\\[yyy+\\]/g, iY);\n"
2538:                        + "	szCaptionText = szCaptionText.replace(/\\[y+\\]/g, iY2>9?iY2:\"0\"+iY2);\n"
2539:                        + "\n"
2540:                        + "	m_objMainTable.rows[0].cells[1].innerText= szCaptionText;\n"
2541:                        + "\n"
2542:                        + "	m_oCalStartDate.setTime(m_objMainDate);\n"
2543:                        + "	m_oCalEndDate.setTime(m_objMainDate);\n"
2544:                        + "\n"
2545:                        + "	var x=m_objMainDate.getDay()-m_iStartDay;\n"
2546:                        + "	x+=(0>=x)?7:0; //show entire previous week\n"
2547:                        + "	m_oCalStartDate.setDate(1-x); //this is now the first date on the calendar\n"
2548:                        + "	m_oCalStartDate.setHours(0,0,0,0);\n"
2549:                        + "	m_oCalEndDate.setDate((1-x)+41);\n"
2550:                        + "	m_oCalEndDate.setHours(24,0,0,0);\n"
2551:                        + "\n"
2552:                        + "	var iD = m_oCalStartDate.getDate();\n"
2553:                        + "	var iM = m_oCalStartDate.getMonth();\n"
2554:                        + "	var iY = m_oCalStartDate.getFullYear();\n"
2555:                        + "	var iDm = mfGetDaysInMonth(iM,iY);\n"
2556:                        + "	var bg = (x==0)?m_szNormalDateBG:m_szInactiveBG;\n"
2557:                        + "	var y=7+iDm;\n"
2558:                        + "	for(x=7;iD<=iDm;x++)\n"
2559:                        + "	{\n"
2560:                        + "		m_rgCalCells[x].month=iM;\n"
2561:                        + "		m_rgCalCells[x].year =iY;\n"
2562:                        + "		m_rgCalCells[x].dayCell = bg;\n"
2563:                        + "		with(m_rgCalCells[x])\n"
2564:                        + "		{\n"
2565:                        + "			innerText = iD++;\n"
2566:                        + "			style.backgroundColor = bg;\n"
2567:                        + "			style.color = m_szNormalText;\n"
2568:                        + "			style.fontWeight = \"normal\";\n"
2569:                        + "		}\n"
2570:                        + "	}\n"
2571:                        + "	var iLastCell = m_rgCalCells.length;\n"
2572:                        + "	while(x<iLastCell)\n"
2573:                        + "	{\n"
2574:                        + "		iD=1;\n"
2575:                        + "		iM=(11==iM)?0:iM+1;\n"
2576:                        + "		if (0==iM ) iY++;\n"
2577:                        + "		var iDm = mfGetDaysInMonth(iM,iY);\n"
2578:                        + "		bg=(bg==m_szInactiveBG)?m_szNormalDateBG:m_szInactiveBG;\n"
2579:                        + "		if ((iDm+x) > iLastCell) iDm=iLastCell-x; //dont past last cell\n"
2580:                        + "		for(;iD<=iDm;x++)\n"
2581:                        + "		{\n"
2582:                        + "			//if (x>=iLastCell) break;\n"
2583:                        + "			m_rgCalCells[x].month=iM;\n"
2584:                        + "			m_rgCalCells[x].year =iY;\n"
2585:                        + "			m_rgCalCells[x].dayCell = bg;\n"
2586:                        + "			with(m_rgCalCells[x])\n"
2587:                        + "			{\n"
2588:                        + "				innerText = iD++;\n"
2589:                        + "				style.backgroundColor = bg;\n"
2590:                        + "				style.color = m_szNormalText;\n"
2591:                        + "				style.fontWeight = \"normal\";\n"
2592:                        + "			}\n"
2593:                        + "		}\n"
2594:                        + "	}\n"
2595:                        + "	if (-1!=mfWriteCellNumbers.todayCellIdx)\n"
2596:                        + "	{\n"
2597:                        + "		m_rgCalCells[mfWriteCellNumbers.todayCellIdx].style.border = \"none\";\n"
2598:                        + "		mfWriteCellNumbers.todayCellIdx=-1;\n"
2599:                        + "	}\n"
2600:                        + "	//is todays date on this calendar (needs red border)\n"
2601:                        + "	if(m_objTodaysDate > m_oCalStartDate && m_objTodaysDate < m_oCalEndDate)\n"
2602:                        + "	{ \n"
2603:                        + "		//add one hour 3600000 (for daylight spring losing an hour) and floor (DST fall works with floor)\n"
2604:                        + "		x = Math.floor((m_objTodaysDate - m_oCalStartDate + 3600000)/86400000)\n"
2605:                        + "		m_rgCalCells[x+7].style.border = \"solid 1 red\";\n"
2606:                        + "		mfWriteCellNumbers.todayCellIdx=x+7;\n"
2607:                        + "	}\n"
2608:                        + "	//prev selection has been wiped!\n"
2609:                        + "	mfFindAndSelectDate.iStartIdx=-1;\n"
2610:                        + "}\n"
2611:                        + "\n"
2612:                        + "void function mfUpdateCalendar(fRenderView,fUpdateBolding)\n"
2613:                        + "{\n"
2614:                        + "	mfWriteCellNumbers();\n"
2615:                        + "	mfFindAndSelectDate();\n"
2616:                        + "	if (!fUpdateBolding)\n"
2617:                        + "	{\n"
2618:                        + "		mfGetAppointments(fRenderView,false,true);\n"
2619:                        + "	}\n"
2620:                        + "	else\n"
2621:                        + "	{\n"
2622:                        + "		if (fRenderView) //refresh data then bold\n"
2623:                        + "		{\n"
2624:                        + "			mfGetAppointments(fRenderView,true,true);\n"
2625:                        + "		}\n"
2626:                        + "		else\n"
2627:                        + "		{\n"
2628:                        + "			mfGetBoldData(true);\n"
2629:                        + "		}	\n"
2630:                        + "	}		\n"
2631:                        + "}\n"
2632:                        + "\n"
2633:                        + "void function mfRenderCalendar()\n"
2634:                        + "{\n"
2635:                        + "	var	masterTableNode	= this.__idExchMasterCalendarTableNode.children[0];\n"
2636:                        + "	var	masterRowNode	= this.__idExchMasterCalendarRowNode.children[0];\n"
2637:                        + "	var	newNode=null;\n"
2638:                        + "	for(var i=0;i<7;i++)\n"
2639:                        + "	{\n"
2640:                        + "		newNode=masterRowNode.cloneNode(true);\n"
2641:                        + "		if(0==i)\n"
2642:                        + "		{\n"
2643:                        + "			newNode.cells[0].weekselect=null;\n"
2644:                        + "			newNode.cells[0].monthDisplayName=\"1\";\n"
2645:                        + "		}\n"
2646:                        + "		masterTableNode.insertAdjacentElement(\"BeforeEnd\",newNode.children[0]);\n"
2647:                        + "	}\n"
2648:                        + "	this.insertAdjacentElement(\"BeforeEnd\",masterTableNode);\n"
2649:                        + "	m_objMainTable=masterTableNode;\n"
2650:                        + "}\n"
2651:                        + "mfGetBoldData.szQuery=\"\";\n"
2652:                        + "void function mfGetBoldData(fResetQuery)\n"
2653:                        + "{\n"
2654:                        + "	if(null != m_objStatus )\n"
2655:                        + "	{\n"
2656:                        + "		m_objStatus.style.display=\"\";\n"
2657:                        + "		m_objStatus.innerText = L_szUpdatingBold;\n"
2658:                        + "	}\n"
2659:                        + "	m_fHaveData	= true;//allow event firings\n"
2660:                        + "	if (\"\"==mfGetBoldData.szQuery) fResetQuery=true;\n"
2661:                        + "	if (fResetQuery)\n"
2662:                        + "	{\n"
2663:                        + "		var	iX = 7;\n"
2664:                        + "		iX = m_rgCalCells.length - 1;\n"
2665:                        + "		var szDateStart=mfGetSearchDateUTC(m_oCalStartDate);\n"
2666:                        + "		var szDateEnd=mfGetSearchDateUTC(m_oCalEndDate);\n"
2667:                        + "		mfGetBoldData.szQuery ='<a:searchrequest xmlns:a=\"DAV:\" > ' +\n"
2668:                        + "		'<a:sql>Select ' +\n"
2669:                        + "		 '\"urn:schemas:calendar:dtstart\" AS dtstart, ' +\n"
2670:                        + "		 '\"urn:schemas:calendar:dtend\" AS dtend, ' +\n"
2671:                        + "		 '\"urn:schemas:calendar:alldayevent\" AS alldayevent ' +\n"
2672:                        + "		'FROM Scope(\\'SHALLOW TRAVERSAL OF \"\"\\') ' +\n"
2673:                        + "		'WHERE NOT \"urn:schemas:calendar:instancetype\" = 1 ' +\n"
2674:                        + "		'AND NOT \"urn:schemas:calendar:busystatus\" = \\'FREE\\' ' +\n"
2675:                        + "		  'AND \"urn:schemas:calendar:dtend\" &gt; \\''+szDateStart+'\\' ' +\n"
2676:                        + "		  'AND \"urn:schemas:calendar:dtstart\" &lt; \\''+szDateEnd+'\\' ' +\n"
2677:                        + "		'ORDER BY \"urn:schemas:calendar:dtstart\" ASC ' +\n"
2678:                        + "		'</></>';\n"
2679:                        + "\n"
2680:                        + "	}\n"
2681:                        + "	m_objXMLhttpBold = new ActiveXObject(\"Microsoft.XMLhttp\");\n"
2682:                        + "	try\n"
2683:                        + "	{\n"
2684:                        + "		m_objXMLhttpBold.open(\"SEARCH\",	folderURL, true);\n"
2685:                        + "		m_objXMLhttpBold.setRequestHeader(\"Content-Type\", \"text/xml\");\n"
2686:                        + "		m_objXMLhttpBold.onreadystatechange = onRSC_getBoldData;\n"
2687:                        + "		m_objXMLhttpBold.send(mfGetBoldData.szQuery);\n"
2688:                        + "	}\n"
2689:                        + "	catch(e)\n"
2690:                        + "	{\n"
2691:                        + "		alert(\"Error in	ExchangeCalendar.HTC mfGetBoldData() with searchrequest: \"+e.description);\n"
2692:                        + "	}\n"
2693:                        + "}\n"
2694:                        + "\n"
2695:                        + "\n"
2696:                        + "//holds	calendar date range	including greyed next/prev months\n"
2697:                        + "mfGetAppointments.m_dTemp = new Date();\n"
2698:                        + "mfGetAppointments.szQuery=\"\";\n"
2699:                        + "void function mfGetAppointments(fRenderVeiw,fUpdateBolding,fResetQuery)\n"
2700:                        + "{\n"
2701:                        + "	if (true == fUpdateBolding) \n"
2702:                        + "	{\n"
2703:                        + "		onRSC_getAppointments.fUpdateBolding = true; //we will bold after getting the appt data\n"
2704:                        + "	}	\n"
2705:                        + "	if(null != m_objStatus )\n"
2706:                        + "	{\n"
2707:                        + "		m_objStatus.style.display=\"\";\n"
2708:                        + "		m_objStatus.innerText = L_szUpdating;\n"
2709:                        + "	}\n"
2710:                        + "\n"
2711:                        + "	onRSC_getAppointments.fResetQuery=fResetQuery;\n"
2712:                        + "	m_fHaveData	= false; //stop	event firings\n"
2713:                        + "\n"
2714:                        + "	//Use last stored query in case where polling fires but user has calendar in another month than the view\n"
2715:                        + "	//Happens most when going out past the expansion which fires another expansion with triggers polling changes\n"
2716:                        + "	if (\"\"==mfGetAppointments.szQuery) fResetQuery=true;\n"
2717:                        + "	if (fResetQuery)\n"
2718:                        + "	{\n"
2719:                        + "		var iX = 7;\n"
2720:                        + "		iX = m_rgCalCells.length - 1;\n"
2721:                        + "		if (2==m_iView) //monthly gets full 6 weeks\n"
2722:                        + "		{\n"
2723:                        + "			//this shifts an extra day for the montly view calendar in sunday start\n"
2724:                        + "			//while view shows monday start (same problem with weekly view)\n"
2725:                        + "			if (0==m_iStartDay)\n"
2726:                        + "			{\n"
2727:                        + "				m_oCalStartDate.setHours(24,0,0,0);\n"
2728:                        + "				m_oCalEndDate.setHours(24,0,0,0);\n"
2729:                        + "				var szDateStart	= mfGetSearchDateUTC(m_oCalStartDate);\n"
2730:                        + "				var szDateEnd =	mfGetSearchDateUTC(m_oCalEndDate);\n"
2731:                        + "				m_oCalStartDate.setHours(-24,0,0,0);\n"
2732:                        + "				m_oCalEndDate.setHours(-24,0,0,0);\n"
2733:                        + "			}\n"
2734:                        + "			else\n"
2735:                        + "			{\n"
2736:                        + "				var szDateStart	= mfGetSearchDateUTC(m_oCalStartDate);\n"
2737:                        + "				var szDateEnd =	mfGetSearchDateUTC(m_oCalEndDate);\n"
2738:                        + "			}\n"
2739:                        + "		}\n"
2740:                        + "		else if (1==m_iView)//weekly\n"
2741:                        + "		{\n"
2742:                        + "			//this shifts an extra day for the weekly view calendar in sunday start \n"
2743:                        + "			//while view shows monday start (same problem with monthly view)\n"
2744:                        + "			if (0==m_iStartDay)\n"
2745:                        + "			{\n"
2746:                        + "				m_objSelectedStart.setHours(24,0,0,0);\n"
2747:                        + "				var szDateStart	= mfGetSearchDateUTC(m_objSelectedStart);\n"
2748:                        + "				m_objSelectedStart.setHours(168,0,0,0);\n"
2749:                        + "				var szDateEnd =	mfGetSearchDateUTC(m_objSelectedStart);\n"
2750:                        + "				m_objSelectedStart.setHours(-192,0,0,0);\n"
2751:                        + "			}\n"
2752:                        + "			else\n"
2753:                        + "			{\n"
2754:                        + "				var szDateStart	= mfGetSearchDateUTC(m_objSelectedStart);\n"
2755:                        + "				m_objSelectedStart.setHours(168,0,0,0);\n"
2756:                        + "				var szDateEnd =	mfGetSearchDateUTC(m_objSelectedStart);\n"
2757:                        + "				m_objSelectedStart.setHours(-168,0,0,0);\n"
2758:                        + "			}\n"
2759:                        + "		}	\n"
2760:                        + "		else //daily view (default)\n"
2761:                        + "		{\n"
2762:                        + "			var szDateStart	= mfGetSearchDateUTC(m_objSelectedStart);\n"
2763:                        + "			m_objSelectedStart.setHours(24,0,0,0);\n"
2764:                        + "			var szDateEnd =	mfGetSearchDateUTC(m_objSelectedStart);\n"
2765:                        + "			m_objSelectedStart.setHours(-24,0,0,0);\n"
2766:                        + "		}\n"
2767:                        + "\n"
2768:                        + "		mfGetAppointments.szQuery='<a:searchrequest xmlns:a=\"DAV:\" > ' +\n"
2769:                        + "		'<a:sql>Select ' +\n"
2770:                        + "		 '\"urn:schemas:calendar:location\" AS location, ' +\n"
2771:                        + "		 '\"urn:schemas:httpmail:subject\" AS subject, '+\n"
2772:                        + "		 '\"urn:schemas:calendar:dtstart\" AS dtstart, ' +\n"
2773:                        + "		 '\"urn:schemas:calendar:dtend\" AS dtend, ' +\n"
2774:                        + "		 '\"urn:schemas:calendar:busystatus\" AS busystatus, ' +\n"
2775:                        + "		 '\"urn:schemas:calendar:instancetype\" AS instancetype, ' +\n"
2776:                        + "		 '\"urn:schemas:calendar:alldayevent\" AS alldayevent, ' +\n"
2777:                        + "		 '\"http://schemas.microsoft.com/mapi/proptag/x10c70003\" AS pr_cdormid, ' +\n"
2778:                        + "		 '\"http://schemas.microsoft.com/exchange/sensitivity-long\" AS sensitivity, '+\n"
2779:                        + "		 '\"http://schemas.microsoft.com/mapi/apptstateflags\" AS apptstateflags, '+\n"
2780:                        + "		 '\"urn:schemas:calendar:uid\" AS uid ' +\n"
2781:                        + "		'FROM Scope(\\'SHALLOW TRAVERSAL OF \"\"\\') ' +\n"
2782:                        + "		'WHERE NOT \"urn:schemas:calendar:instancetype\" = 1 ' +\n"
2783:                        + "		  'AND \"urn:schemas:calendar:dtend\" &gt; \\''+szDateStart+'\\'  ' +\n"
2784:                        + "		  'AND \"urn:schemas:calendar:dtstart\" &lt; \\''+szDateEnd+'\\' ' +\n"
2785:                        + "		'ORDER BY \"urn:schemas:calendar:dtstart\" ASC ' +\n"
2786:                        + "		'</></>';\n"
2787:                        + "		\n"
2788:                        + "	}\n"
2789:                        + "	\n"
2790:                        + "	m_objXMLhttp = new ActiveXObject(\"Microsoft.XMLhttp\");\n"
2791:                        + "	onRSC_getAppointments.fRenderView=fRenderVeiw;\n"
2792:                        + "	try\n"
2793:                        + "	{\n"
2794:                        + "		m_objXMLhttp.open(\"SEARCH\",folderURL, true);\n"
2795:                        + "		m_objXMLhttp.setRequestHeader(\"Content-Type\",\"text/xml\");\n"
2796:                        + "		m_objXMLhttp.onreadystatechange = onRSC_getAppointments;\n"
2797:                        + "		m_objXMLhttp.send(mfGetAppointments.szQuery);\n"
2798:                        + "	}\n"
2799:                        + "	catch(e)\n"
2800:                        + "	{\n"
2801:                        + "		alert(\"Error in	ExchangeCalendar.HTC mfGetAppointments() with searchrequest: \"+e.description);\n"
2802:                        + "		onRSC_getAppointments.fRenderView = true;\n"
2803:                        + "	}\n"
2804:                        + "}\n"
2805:                        + "\n"
2806:                        + "//returns UTC date in \"yyyy/mm/dd hh:mm:ss\"	format for DAV searchrequests\n"
2807:                        + "void function mfGetSearchDateUTC(objDate)\n"
2808:                        + "{\n"
2809:                        + "	var	szYear		= objDate.getUTCFullYear();\n"
2810:                        + "	var	szMonth		= objDate.getUTCMonth()+1;\n"
2811:                        + "	var	szDate		= objDate.getUTCDate();\n"
2812:                        + "	var	szHrs		= objDate.getUTCHours();\n"
2813:                        + "	var	szMin		= objDate.getUTCMinutes();\n"
2814:                        + "	return (  szYear+\"/\"+\n"
2815:                        + "			((szMonth<10)?(\"0\"+szMonth):szMonth)  +	\"/\"	+\n"
2816:                        + "			((szDate<10) ?(\"0\"+szDate) :szDate)	  +	\" \"	+\n"
2817:                        + "			((szHrs<10)	 ?(\"0\"+szHrs)  :szHrs)	  +	\":\"	+\n"
2818:                        + "			((szMin<10)	 ?(\"0\"+szMin)  :szMin)	  +	\":00\"	);\n"
2819:                        + "}\n"
2820:                        + "\n"
2821:                        + "void function mfBoldDates(rgApptStartTimes,rgApptEndTimes,rgIsAllDayEvent)\n"
2822:                        + "{\n"
2823:                        + "	var x;\n"
2824:                        + "	var rgNodes=null;\n"
2825:                        + "	for(x=7; x < m_rgCalCells.length; x++)\n"
2826:                        + "	{\n"
2827:                        + "		rgNodes=mfGetNodes(m_rgCalCells[x].year,m_rgCalCells[x].month,Number(m_rgCalCells[x].innerText));\n"
2828:                        + "		m_rgCalCells[x].style.fontWeight = rgNodes.length ? \"bold\" : \"normal\";\n"
2829:                        + "	}\n"
2830:                        + "}\n"
2831:                        + "function mfGetNodes(iY,iM,iD)\n"
2832:                        + "{\n"
2833:                        + "	if(null == m_objOutPutXMLBold)\n"
2834:                        + "	{\n"
2835:                        + "		return;\n"
2836:                        + "	}\n"
2837:                        + "	var dtstartUTC		= mfGetUTFIsoDate(iY, iM, iD, 0, 0);\n"
2838:                        + "	var dtendUTC		= mfGetUTFIsoDate(iY, iM, iD+1,0, 0);\n"
2839:                        + "	var szStartTimeQuery=	\"(dtstart$ge$'\" + dtstartUTC	+ \"'&&dtstart$lt$'\"	+ dtendUTC + \"')\";\n"
2840:                        + "	var szEndTimeQuery	=	\"(dtend$gt$'\" + dtstartUTC + \"'&&dtend$le$'\"+ dtendUTC+ \"')\";\n"
2841:                        + "	var szOutSideQuery	=	\"(dtstart$lt$'\" + dtstartUTC	+ \"'&&dtend$gt$'\"+ dtendUTC + \"')\";\n"
2842:                        + "	var szQuery			=	\"root/appointment[\"	+ szStartTimeQuery + \"||\" +	szEndTimeQuery + \"||\" +	szOutSideQuery + \"]\";\n"
2843:                        + "	return(m_objOutPutXMLBold.selectNodes(szQuery));\n"
2844:                        + "}\n"
2845:                        + "\n"
2846:                        + "mfGetUTFIsoDate.objD= new Date();\n"
2847:                        + "function mfGetUTFIsoDate(iYr,iMon,iDate,iHr,iMin)\n"
2848:                        + "{\n"
2849:                        + "	mfGetUTFIsoDate.objD.setFullYear(iYr,iMon,iDate);\n"
2850:                        + "	mfGetUTFIsoDate.objD.setHours(iHr,iMin,0);\n"
2851:                        + "	var iYear		= mfGetUTFIsoDate.objD.getUTCFullYear();\n"
2852:                        + "	var szMonth		= mfGetUTFIsoDate.objD.getUTCMonth()+1;//0 offset adjustment\n"
2853:                        + "	var szDate		= mfGetUTFIsoDate.objD.getUTCDate();\n"
2854:                        + "	var szHours		= mfGetUTFIsoDate.objD.getUTCHours();\n"
2855:                        + "	var szMinutes	= mfGetUTFIsoDate.objD.getUTCMinutes();\n"
2856:                        + "	if (szMonth< 10)\n"
2857:                        + "	{\n"
2858:                        + "		szMonth	=  \"0\"+szMonth;\n"
2859:                        + "	}	\n"
2860:                        + "	if (szDate < 10)\n"
2861:                        + "	{\n"
2862:                        + "		szDate =  \"0\"+szDate;\n"
2863:                        + "	}	\n"
2864:                        + "	if (szHours	< 10)\n"
2865:                        + "	{\n"
2866:                        + "		szHours	=  \"0\"+szHours;\n"
2867:                        + "	}	\n"
2868:                        + "	if (szMinutes <	10)\n"
2869:                        + "	{\n"
2870:                        + "		szMinutes =	 \"0\"+szMinutes;\n"
2871:                        + "	}\n"
2872:                        + "	return(String(iYear+\"-\"+szMonth+\"-\"+szDate+\"T\"+szHours+\":\"+szMinutes+\":00.000Z\"));\n"
2873:                        + "}\n"
2874:                        + "\n"
2875:                        + "//szDtTime = ISO formatted UTC time	string = \"1999-02-18T02:00:00.000Z\"\n"
2876:                        + "//returns =	UTC	time in milliseconds\n"
2877:                        + "function mfGetIsoDateMs(szIsoDate)\n"
2878:                        + "{\n"
2879:                        + "	var re=mfGetRegExpIsoDates();\n"
2880:                        + "	re.lastIndex=0;\n"
2881:                        + "	var arr = re.exec( szIsoDate );\n"
2882:                        + "	return ( (null == arr) ? null : Date.UTC( Number( arr[1]), Number(arr[2])-1, Number(arr[3]), Number(arr[4]), Number(arr[5]), 0, 0 ) );\n"
2883:                        + "}\n"
2884:                        + "\n"
2885:                        + "mfGetRegExpIsoDates.re;\n"
2886:                        + "function mfGetRegExpIsoDates()\n"
2887:                        + "{\n"
2888:                        + "	if (null == mfGetRegExpIsoDates.re)\n"
2889:                        + "	{ \n"
2890:                        + "		mfGetRegExpIsoDates.re = /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):\\d{2}\\.\\d{3}Z?$/;\n"
2891:                        + "	}\n"
2892:                        + "	return(mfGetRegExpIsoDates.re);\n"
2893:                        + "}\n"
2894:                        + "\n"
2895:                        + "void function onAbort()\n"
2896:                        + "{\n"
2897:                        + "	return;\n"
2898:                        + "}\n"
2899:                        + "void function onRSC_getBoldData()\n"
2900:                        + "{\n"
2901:                        + "	if(4 != m_objXMLhttpBold.readyState)\n"
2902:                        + "	{\n"
2903:                        + "		return;\n"
2904:                        + "	}\n"
2905:                        + "	m_objXMLhttpBold.onreadystatechange	= onAbort;\n"
2906:                        + "	var	objXML = m_objXMLhttpBold.responseXML;\n"
2907:                        + "	objXML.transformNodeToObject(m_objXSL.documentElement, m_objOutPutXMLBold);\n"
2908:                        + "	var	objApptNodes	= m_objOutPutXMLBold.selectNodes('root/appointment/dtstart');\n"
2909:                        + "	var	objApptNodes1	= m_objOutPutXMLBold.selectNodes('root/appointment/dtend');\n"
2910:                        + "	var	objApptNodes2	= m_objOutPutXMLBold.selectNodes('root/appointment/alldayevent');\n"
2911:                        + "\n"
2912:                        + "	mfBoldDates(objApptNodes,objApptNodes1,objApptNodes2);\n"
2913:                        + "	if(null != m_objStatus )\n"
2914:                        + "	{\n"
2915:                        + "		m_objStatus.style.display=\"none\";\n"
2916:                        + "		m_objStatus.innerText = \"\";\n"
2917:                        + "	}\n"
2918:                        + "}\n"
2919:                        + "\n"
2920:                        + "onRSC_getAppointments.fRenderView = true;\n"
2921:                        + "onRSC_getAppointments.fUpdateBolding = false;\n"
2922:                        + "onRSC_getAppointments.fResetQuery=true;\n"
2923:                        + "void function onRSC_getAppointments()\n"
2924:                        + "{\n"
2925:                        + "	if(4 != m_objXMLhttp.readyState)\n"
2926:                        + "	{\n"
2927:                        + "		return;\n"
2928:                        + "	}\n"
2929:                        + "	m_objXMLhttp.onreadystatechange	= onAbort;\n"
2930:                        + "	var objXML = m_objXMLhttp.responseXML;\n"
2931:                        + "	objXML.transformNodeToObject(m_objXSL.documentElement, m_objOutPutXML);\n"
2932:                        + "	//only fire	(refresh the veiwer) if	the	calendar is	on that	month\n"
2933:                        + "	m_fHaveData	= true;\n"
2934:                        + "	if(m_objMainDate >= m_oCalStartDate && m_objMainDate <= m_oCalEndDate)\n"
2935:                        + "	{\n"
2936:                        + "		if(true == onRSC_getAppointments.fRenderView)\n"
2937:                        + "		{\n"
2938:                        + "			fire_OnDateChange(m_objOutPutXML);\n"
2939:                        + "		}\n"
2940:                        + "	}\n"
2941:                        + "	onRSC_getAppointments.fRenderView=true;\n"
2942:                        + "	if(null != m_objStatus )\n"
2943:                        + "	{\n"
2944:                        + "		m_objStatus.style.display=\"none\";\n"
2945:                        + "		m_objStatus.innerText = \"\";\n"
2946:                        + "	}\n"
2947:                        + "	if (true == onRSC_getAppointments.fUpdateBolding)\n"
2948:                        + "	{\n"
2949:                        + "		onRSC_getAppointments.fUpdateBolding=false;\n"
2950:                        + "		mfGetBoldData(onRSC_getAppointments.fResetQuery);\n"
2951:                        + "	}\n"
2952:                        + "}\n"
2953:                        + "/************************PROPERTY ACCESS FUNCTIONS***********************/\n"
2954:                        + "function get_statusEl()\n"
2955:                        + "{\n"
2956:                        + "	return(m_objStatus);\n"
2957:                        + "}\n"
2958:                        + "function put_statusEl(newVal)\n"
2959:                        + "{\n"
2960:                        + "	if(typeof(newVal) == 'string')\n"
2961:                        + "	{\n"
2962:                        + "		m_objStatus = window.document.all[newVal];\n"
2963:                        + "		return;\n"
2964:                        + "	}\n"
2965:                        + "	m_objStatus = newVal;\n"
2966:                        + "}\n"
2967:                        + "function put_PollInterval(newVal)\n"
2968:                        + "{\n"
2969:                        + "	m_iPollInterval	= Number(newVal);\n"
2970:                        + "}\n"
2971:                        + "function get_PollInterval()\n"
2972:                        + "{\n"
2973:                        + "	return m_iPollInterval;\n"
2974:                        + "}\n"
2975:                        + "function put_readOnly(newVal)\n"
2976:                        + "{\n"
2977:                        + "	if(\"true\" == String(newVal))\n"
2978:                        + "	{\n"
2979:                        + "		m_fReadOnly	= true;\n"
2980:                        + "	}\n"
2981:                        + "	else\n"
2982:                        + "	{\n"
2983:                        + "		m_fReadOnly	= false;\n"
2984:                        + "	} \n"
2985:                        + "}\n"
2986:                        + "function get_readOnly()\n"
2987:                        + "{\n"
2988:                        + "		return m_fReadOnly;\n"
2989:                        + "}\n"
2990:                        + "function put_Day(newVal)\n"
2991:                        + "{\n"
2992:                        + "	m_objMainDate.setDate(Number(newVal));\n"
2993:                        + "}\n"
2994:                        + "function get_Day()\n"
2995:                        + "{\n"
2996:                        + "	return m_objSelectedStart.getDate();\n"
2997:                        + "}\n"
2998:                        + "function put_Month(newVal)\n"
2999:                        + "{\n"
3000:                        + "	m_objMainDate.setMonth(Number(newVal));\n"
3001:                        + "}\n"
3002:                        + "function get_Month()\n"
3003:                        + "{\n"
3004:                        + "	return m_objSelectedStart.getMonth();\n"
3005:                        + "}\n"
3006:                        + "function put_Year(newVal)\n"
3007:                        + "{\n"
3008:                        + "	m_objMainDate.setYear(Number(newVal));	\n"
3009:                        + "}\n"
3010:                        + "function get_Year()\n"
3011:                        + "{\n"
3012:                        + "	return m_objSelectedStart.getFullYear();\n"
3013:                        + "}\n"
3014:                        + "function get_FullYear()\n"
3015:                        + "{\n"
3016:                        + "	return m_objSelectedStart.getFullYear();\n"
3017:                        + "}\n"
3018:                        + "function put_FullYear(newVal)\n"
3019:                        + "{\n"
3020:                        + "	m_objMainDate.setFullYear(Number(newVal));	\n"
3021:                        + "}\n"
3022:                        + "function put_caltext(newVal)\n"
3023:                        + "{\n"
3024:                        + "L_szUpdatingBold = newVal;\n"
3025:                        + "}\n"
3026:                        + "function get_caltext()\n"
3027:                        + "{\n"
3028:                        + "return(L_szUpdatingBold);\n"
3029:                        + "}\n"
3030:                        + "function put_viewtext(newVal)\n"
3031:                        + "{\n"
3032:                        + "L_szUpdating = newVal;\n"
3033:                        + "}\n"
3034:                        + "function get_viewtext()\n"
3035:                        + "{\n"
3036:                        + "return(L_szUpdating);\n"
3037:                        + "}\n"
3038:                        + "//Causes a refresh of all the data for the current view\n"
3039:                        + "function f_refresh()\n" + "{\n"
3040:                        + "	mfGetAppointments(true,true,false);\n" + "}\n";
3041:
3042:                String lExpectation = "\n"
3043:                        + "var	m_objXSL			=	new	ActiveXObject(\"Microsoft.XMLDOM\");\n"
3044:                        + "var	m_objOutPutXML		=	new	ActiveXObject(\"Microsoft.XMLDOM\");\n"
3045:                        + "var	m_objOutPutXMLBold  =	new	ActiveXObject(\"Microsoft.XMLDOM\");\n"
3046:                        + "var	m_iIntervalID		=	null;\n"
3047:                        + "var	m_iPollInterval		=	10;\n"
3048:                        + "var	m_objXMLhttp		=	null;\n"
3049:                        + "var	m_objXMLhttpBold	=	null;\n"
3050:                        + "var	m_objXMLhttp_polling=	new	ActiveXObject(\"Microsoft.XMLhttp\");\n"
3051:                        + "var	m_iSubscriptionID	=	null;\n"
3052:                        + "var	m_fReadOnly			=	false;\n"
3053:                        + "\n"
3054:                        + "var	m_objMainDate;\n"
3055:                        + "var m_objTodaysDate	= new Date();\n"
3056:                        + "	m_objTodaysDate.setHours(0,0,0,0);\n"
3057:                        + "\n"
3058:                        + "\n"
3059:                        + "var	m_objSelectedStart;\n"
3060:                        + "var	m_objSelectedEnd;\n"
3061:                        + "\n"
3062:                        + "var	m_objMainTable		=	null;\n"
3063:                        + "var	m_objSelectedDay	=	new	Array();\n"
3064:                        + "var	m_fHasLoaded		=	false;\n"
3065:                        + "var	m_iFirstDayOfMonth	=	0;\n"
3066:                        + "var	m_iDaysInMonth		=	0;\n"
3067:                        + "var	m_iView				=	0;\n"
3068:                        + "var	m_szHighlightBG		=	\"highlight\";\n"
3069:                        + "var	m_szHighlightText	=	\"highlighttext\";\n"
3070:                        + "var	m_szNormalDateBG	=	\"window\";\n"
3071:                        + "var	m_szNormalBG		=	\"window\";\n"
3072:                        + "var	m_szNormalText		=	\"windowtext\";\n"
3073:                        + "var	m_szInactiveBG		=	\"appworkspace\";\n"
3074:                        + "var m_objStatus;\n"
3075:                        + "var m_rgCalCells;\n"
3076:                        + "var m_rgMonthNamesShort;\n"
3077:                        + "var m_rgMonthNamesLong;\n"
3078:                        + "var m_szDateFormat;\n"
3079:                        + "var m_rgWeekdayLetters;\n"
3080:                        + "var	m_fHaveData	= false;\n"
3081:                        + "var m_iStartDay;\n"
3082:                        + "var	m_oCalStartDate	= new Date();\n"
3083:                        + "var	m_oCalEndDate =	new Date();\n"
3084:                        + "var L_szUpdating;\n"
3085:                        + "var L_szUpdatingBold;\n"
3086:                        + "\n"
3087:                        + "void function onDocumentReady()\n"
3088:                        + "{\n"
3089:                        + "	var	szXSLString =\n"
3090:                        + "	'<xsl:template xmlns:xsl=\"uri:xsl\" xmlns:a=\"DAV:\"><root>' +\n"
3091:                        + "	'<xsl:for-each select=\"a:multistatus/a:response\">' +\n"
3092:                        + "	'<appointment><url><xsl:value-of select=\"a:href\" /></url>' +\n"
3093:                        + "	'<xsl:for-each select=\"a:propstat[a:status != \\'HTTP/1.1 404 Resource Not Found\\']/a:prop\">' +\n"
3094:                        + "		'<subject><xsl:value-of	select=\"subject\" /></subject>' +\n"
3095:                        + "		'<instancetype><xsl:value-of select=\"instancetype\" /></instancetype>' +\n"
3096:                        + "		'<location><xsl:value-of select=\"location\" /></location>' +\n"
3097:                        + "		'<dtstart><xsl:value-of	select=\"dtstart\" /></dtstart>' +\n"
3098:                        + "		'<dtend><xsl:value-of select=\"dtend\" /></dtend>' +\n"
3099:                        + "		'<busystatus><xsl:value-of select=\"busystatus\" /></busystatus>'	+ \n"
3100:                        + "		'<alldayevent><xsl:value-of	select=\"alldayevent\" /></alldayevent>' +\n"
3101:                        + "		'<pr_cdormid><xsl:value-of	select=\"pr_cdormid\" /></pr_cdormid>' +\n"
3102:                        + "		'<sensitivity><xsl:value-of	select=\"sensitivity\" /></sensitivity>' +\n"
3103:                        + "		'<apptstateflags><xsl:value-of	select=\"apptstateflags\" /></apptstateflags>' +\n"
3104:                        + "		'<uid><xsl:value-of	select=\"uid\" /></uid>' +\n"
3105:                        + "	'</xsl:for-each></appointment></xsl:for-each></root></xsl:template>';\n"
3106:                        + "\n"
3107:                        + "	m_objXSL.loadXML(szXSLString);\n"
3108:                        + "\n"
3109:                        + "	/**************Do initial calendar rendering******************/\n"
3110:                        + "	m_iStartDay =	(this.startDay == null)?0:Number(this.startDay);\n"
3111:                        + "	with (this.__idExchMasterCalendarTableNode.children[0])\n"
3112:                        + "	{\n"
3113:                        + "		cells[0].children[0].src =	this.prevMonthImage;\n"
3114:                        + "		cells[2].children[0].src =	this.nextMonthImage;\n"
3115:                        + "	}\n"
3116:                        + "	mfRenderCalendar();\n"
3117:                        + "\n"
3118:                        + "	m_rgMonthNamesShort = (null == this.monthnamesShort || \"\" == this.monthnamesShort)?\n"
3119:                        + "						   \"Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec\".split(\";\"):\n"
3120:                        + "						   this.monthnamesShort.split(\";\");\n"
3121:                        + "	m_rgMonthNamesLong  = (null == this.monthnamesLong || \"\" == this.monthnamesLong)?\n"
3122:                        + "						   \"January;February;March;April;May;June;July;August;September;October;November;December\".split(\";\"):\n"
3123:                        + "						   this.monthnamesLong.split(\";\");\n"
3124:                        + "	m_rgWeekdayLetters = (this.weekdayLetters)?this.weekdayLetters.split(\";\"):\"M;T;W;T;F;S;S\".split(\";\");\n"
3125:                        + "	m_szDateFormat = (this.dateFormat)?this.dateFormat:\"[MMMM] [yyyy]\";\n"
3126:                        + "	var	iM=-1,iD=-1,iY=-1,szX;\n"
3127:                        + "	m_objMainTable = this.children[0];\n"
3128:                        + "	m_rgCalCells = m_objMainTable.cells[\"numbercell\"];\n"
3129:                        + "	for(var i =	0; i < 7; i++) //day letters\n"
3130:                        + "	{\n"
3131:                        + "		with(m_rgCalCells[i])\n"
3132:                        + "		{\n"
3133:                        + "			innerText = m_rgWeekdayLetters[( (m_iStartDay+i)%m_rgWeekdayLetters.length )];\n"
3134:                        + "			dayNameCell = \"1\";\n"
3135:                        + "			style.backgroundColor = m_szNormalBG;\n"
3136:                        + "			style.color	 = m_szNormalText;\n"
3137:                        + "			style.borderBottom = \"solid 1px black\";\n"
3138:                        + "		}\n"
3139:                        + "	}\n"
3140:                        + "	//parseInt treats leading '0' as octal numbers\n"
3141:                        + "	//need to disect the whole number and use Number()\n"
3142:                        + "	iM = parseURLfor(\"m\");\n"
3143:                        + "	iM = (null==iM || \"\"==iM)?-1:Number(iM);\n"
3144:                        + "	iD = parseURLfor(\"d\");\n"
3145:                        + "	iD = (null==iD || \"\"==iD)?-1:Number(iD);\n"
3146:                        + "	iY = parseURLfor(\"y\");\n"
3147:                        + "	iY = (null==iY || \"\"==iY)?-1:Number(iY);\n"
3148:                        + "\n"
3149:                        + "	if(-3 == iM+iY+iD)//no date info on the url\n"
3150:                        + "	{\n"
3151:                        + "		m_objMainDate =	new	Date();	 //use todays date\n"
3152:                        + "	}\n"
3153:                        + "	else\n"
3154:                        + "	{\n"
3155:                        + "		//missing defaults to current month/year and 1st day of	month\n"
3156:                        + "		iM = (isNaN(iM)	|| iM == -1)?m_objTodaysDate.getMonth():iM-1;\n"
3157:                        + "		iY = (isNaN(iY)	|| iY == -1)?m_objTodaysDate.getFullYear():iY;\n"
3158:                        + "		iD = (isNaN(iD)	|| iD == -1)?1:iD;\n"
3159:                        + "			\n"
3160:                        + "		try\n"
3161:                        + "		{\n"
3162:                        + "			m_objMainDate =	new Date(iY,iM,iD);	 \n"
3163:                        + "		}\n"
3164:                        + "		catch(e)\n"
3165:                        + "		{\n"
3166:                        + "			m_objMainDate =	new Date();	 \n"
3167:                        + "		}\n"
3168:                        + "	}\n"
3169:                        + "	m_objSelectedStart	=	new	Date(m_objMainDate);\n"
3170:                        + "	m_objSelectedEnd	=	new	Date(m_objMainDate);\n"
3171:                        + "	//search url for view\n"
3172:                        + "	var szView = parseURLfor(\"view\");\n"
3173:                        + "	szView = (null == szView)?\"daily\":szView.toLowerCase();\n"
3174:                        + "	m_iView=(szView==\"weekly\")?1:( (szView==\"monthly\")?2:0 );\n"
3175:                        + "	if (1 == m_iView) //adjust selects weekly\n"
3176:                        + "	{//need to find start of this week\n"
3177:                        + "		i = m_objSelectedStart.getDay()-m_iStartDay;\n"
3178:                        + "		i+=(0>=i)?7:0;\n"
3179:                        + "		m_objSelectedStart.setDate(m_objSelectedStart.getDate()-i);\n"
3180:                        + "		m_objSelectedEnd.setDate(m_objSelectedStart.getDate()+6);\n"
3181:                        + "	}\n"
3182:                        + "	else if (2==m_iView) //monthly\n"
3183:                        + "	{\n"
3184:                        + "		m_objSelectedStart.setDate(1);\n"
3185:                        + "		i = m_objSelectedStart.getDay()-m_iStartDay;\n"
3186:                        + "		i+=(0>=i)?7:0;\n"
3187:                        + "		m_objSelectedStart.setDate(m_objSelectedStart.getDate()-i);\n"
3188:                        + "		\n"
3189:                        + "		m_objSelectedEnd.setTime( m_objSelectedStart.getTime()+(41*86400000) );\n"
3190:                        + "	}\n"
3191:                        + "	m_objSelectedStart.setHours(0,0,0,0);\n"
3192:                        + "	m_objSelectedEnd.setHours(24,0,0,0);\n"
3193:                        + "\n"
3194:                        + "	mfUpdateCalendar(true,true);\n"
3195:                        + "}\n"
3196:                        + "void function fire_OnDateChange(objXML)\n"
3197:                        + "{\n"
3198:                        + "	if(m_fHaveData)\n"
3199:                        + "	{\n"
3200:                        + "		var objEvent = createEventObject();\n"
3201:                        + "		objEvent.xml = objXML;\n"
3202:                        + "		objEvent.view = m_iView;\n"
3203:                        + "		objEvent.date = (2==m_iView)?m_objMainDate:m_objSelectedStart;\n"
3204:                        + "		id_OnDateChange.fire(objEvent);\n"
3205:                        + "	}\n"
3206:                        + "}\n"
3207:                        + "\n"
3208:                        + "void function onStop() \n"
3209:                        + "{\n"
3210:                        + "	if(m_iIntervalID)\n"
3211:                        + "	{\n"
3212:                        + "		window.clearInterval(m_iIntervalID);\n"
3213:                        + "	}\n"
3214:                        + "}\n"
3215:                        + "void function onClick()\n"
3216:                        + "{\n"
3217:                        + "	event.cancelBubble=true;\n"
3218:                        + "	if(!m_fReadOnly)\n"
3219:                        + "	{\n"
3220:                        + "		if(null != event.srcElement.dayCell)\n"
3221:                        + "		{ \n"
3222:                        + "			mfSetDailyView(event.srcElement);\n"
3223:                        + "			return;\n"
3224:                        + "		}\n"
3225:                        + "		else if(null != event.srcElement.leftNavButton)\n"
3226:                        + "		{\n"
3227:                        + "			m_objMainDate.setMonth(m_objMainDate.getMonth()-1);\n"
3228:                        + "			mfUpdateCalendar(false,true);\n"
3229:                        + "			return;\n"
3230:                        + "		}\n"
3231:                        + "		else if(null != event.srcElement.rightNavButton)\n"
3232:                        + "		{\n"
3233:                        + "			m_objMainDate.setMonth(m_objMainDate.getMonth()+1);\n"
3234:                        + "			mfUpdateCalendar(false,true);\n"
3235:                        + "			return;\n"
3236:                        + "		}\n"
3237:                        + "		else if(null != event.srcElement.monthDisplayName)\n"
3238:                        + "		{\n"
3239:                        + "			mfSetMonthlyView();\n"
3240:                        + "		}\n"
3241:                        + "		else if(null != event.srcElement.weekselect)\n"
3242:                        + "		{\n"
3243:                        + "			mfSetWeeklyView(m_objMainTable.rows[event.srcElement.parentElement.rowIndex].cells[1]);\n"
3244:                        + "		}\n"
3245:                        + "	}\n"
3246:                        + "}\n"
3247:                        + "\n"
3248:                        + "void function mfSetDailyView(eCell)\n"
3249:                        + "{\n"
3250:                        + "	m_iView=0;\n"
3251:                        + "	m_objSelectedStart.setFullYear(eCell.year,eCell.month,parseInt(eCell.innerText));\n"
3252:                        + "	m_objSelectedEnd.setTime(m_objSelectedStart);\n"
3253:                        + "	mfFindAndSelectDate();\n"
3254:                        + "	mfGetAppointments(true,false,true);\n"
3255:                        + "}\n"
3256:                        + "void function mfSetWeeklyView(eCell)\n"
3257:                        + "{\n"
3258:                        + "	m_iView=1;\n"
3259:                        + "	m_objSelectedStart.setFullYear(eCell.year,eCell.month,eCell.innerText);\n"
3260:                        + "	m_objSelectedEnd.setFullYear(eCell.year,eCell.month,Number(eCell.innerText)+6);\n"
3261:                        + "	mfFindAndSelectDate();\n"
3262:                        + "	mfGetAppointments(true,false,true);\n"
3263:                        + "}\n"
3264:                        + "void function mfSetMonthlyView()\n"
3265:                        + "{\n"
3266:                        + "	m_iView=2;\n"
3267:                        + "	m_objSelectedStart.setTime(m_oCalStartDate);\n"
3268:                        + "	m_objSelectedEnd.setTime(m_oCalEndDate);\n"
3269:                        + "	mfFindAndSelectDate();\n"
3270:                        + "	mfGetAppointments(true,false,true);\n"
3271:                        + "}\n"
3272:                        + "void function f_setView(iView)\n"
3273:                        + "{\n"
3274:                        + "	//use the currently selected cell to determine view\n"
3275:                        + "	if(m_iView == iView)\n"
3276:                        + "	{\n"
3277:                        + "		return;\n"
3278:                        + "	}\n"
3279:                        + "	m_iView	= iView;\n"
3280:                        + "	switch(iView)\n"
3281:                        + "	{\n"
3282:                        + "	case 1:\n"
3283:                        + "		//use the last selected day or today\n"
3284:                        + "		var x=(-1<mfFindAndSelectDate.iHoldLastDaily)?mfFindAndSelectDate.iHoldLastDaily:mfFindAndSelectDate.iStartIdx;\n"
3285:                        + "		mfSetWeeklyView(m_objMainTable.rows[m_rgCalCells[x].parentElement.rowIndex].cells[1]);\n"
3286:                        + "		break;\n"
3287:                        + "	case 2:\n"
3288:                        + "		mfSetMonthlyView();\n"
3289:                        + "		break;\n"
3290:                        + "	case 0:\n"
3291:                        + "	default:\n"
3292:                        + "		var x=(-1<mfFindAndSelectDate.iHoldLastDaily)?mfFindAndSelectDate.iHoldLastDaily:mfFindAndSelectDate.iStartIdx;\n"
3293:                        + "		mfSetDailyView(m_rgCalCells[x]);\n"
3294:                        + "	}\n"
3295:                        + "}\n"
3296:                        + "//unselects	current	selection\n"
3297:                        + "//searches calendar	for	matching date cell given in	m_objSelectedStart\n"
3298:                        + "mfFindAndSelectDate.iStartIdx=-1;\n"
3299:                        + "mfFindAndSelectDate.iEndIdx=-1;\n"
3300:                        + "mfFindAndSelectDate.iHoldLastDaily=-1;\n"
3301:                        + "void function mfFindAndSelectDate()\n"
3302:                        + "{\n"
3303:                        + "	var x,y;\n"
3304:                        + "	\n"
3305:                        + "	if (mfFindAndSelectDate.iStartIdx>-1)\n"
3306:                        + "	{ //remove any prev selection\n"
3307:                        + "		for(x=mfFindAndSelectDate.iStartIdx;x<=mfFindAndSelectDate.iEndIdx;x++)\n"
3308:                        + "		{\n"
3309:                        + "			m_rgCalCells[x].style.backgroundColor=m_rgCalCells[x].dayCell;\n"
3310:                        + "			m_rgCalCells[x].style.color=m_szNormalText;\n"
3311:                        + "		}\n"
3312:                        + "		mfFindAndSelectDate.iStartIdx=-1;\n"
3313:                        + "	}\n"
3314:                        + "	if (m_objSelectedStart>m_oCalEndDate || m_objSelectedEnd<m_oCalStartDate)\n"
3315:                        + "	{\n"
3316:                        + "		return;\n"
3317:                        + "	}\n"
3318:                        + "	x=7;\n"
3319:                        + "	if(2==m_iView) //monthly\n"
3320:                        + "	{\n"
3321:                        + "		if(m_objSelectedStart.getTime() == m_oCalStartDate.getTime()) //whole month showing\n"
3322:                        + "		{\n"
3323:                        + "			y=m_rgCalCells.length-1;\n"
3324:                        + "		}\n"
3325:                        + "		else if(m_objSelectedStart<m_oCalStartDate&&m_objSelectedEnd>m_oCalStartDate) //do 1st grey area\n"
3326:                        + "		{\n"
3327:                        + "			mfFindAndSelectDate.iStartIdx=7;\n"
3328:                        + "			for(x=7;\"1\"!=m_rgCalCells[x].innerText;x++)\n"
3329:                        + "			{\n"
3330:                        + "				m_rgCalCells[x].style.backgroundColor = m_szHighlightBG;\n"
3331:                        + "				m_rgCalCells[x].style.color = m_szHighlightText;\n"
3332:                        + "			}\n"
3333:                        + "			mfFindAndSelectDate.iEndIdx=x;\n"
3334:                        + "			return;\n"
3335:                        + "		}\n"
3336:                        + "		else if(m_objSelectedStart<m_oCalEndDate&&m_objSelectedEnd>m_oCalEndDate)//last gray area\n"
3337:                        + "		{\n"
3338:                        + "			x=m_rgCalCells.length-1;\n"
3339:                        + "			mfFindAndSelectDate.iEndIdx=x;\n"
3340:                        + "			for(;\"1\"!=m_rgCalCells[x].innerText;x--)\n"
3341:                        + "			{\n"
3342:                        + "				m_rgCalCells[x].style.backgroundColor = m_szHighlightBG;\n"
3343:                        + "				m_rgCalCells[x].style.color = m_szHighlightText;\n"
3344:                        + "			}\n"
3345:                        + "			m_rgCalCells[x].style.backgroundColor = m_szHighlightBG;\n"
3346:                        + "			m_rgCalCells[x].style.color = m_szHighlightText;\n"
3347:                        + "			mfFindAndSelectDate.iStartIdx=x-1;\n"
3348:                        + "			return;\n"
3349:                        + "		}\n"
3350:                        + "		else\n"
3351:                        + "		{\n"
3352:                        + "			return;\n"
3353:                        + "		}\n"
3354:                        + "	}\n"
3355:                        + "	else if (m_objSelectedStart>=m_oCalStartDate && m_objSelectedStart<=m_oCalEndDate)\n"
3356:                        + "	{\n"
3357:                        + "		x=Math.round((m_objSelectedStart-m_oCalStartDate)/86400000)+7;\n"
3358:                        + "	}\n"
3359:                        + "	y=x;\n"
3360:                        + "	if (0 != m_iView)\n"
3361:                        + "	{\n"
3362:                        + "		y=(2==m_iView)?m_rgCalCells.length-1:x+6;\n"
3363:                        + "		if (2==m_iView && m_objSelectedEnd<m_oCalEndDate)\n"
3364:                        + "		{\n"
3365:                        + "			y=Math.round((m_objSelectedEnd-m_oCalStartDate)/86400000)+7;\n"
3366:                        + "		}\n"
3367:                        + "	}\n"
3368:                        + "	mfFindAndSelectDate.iStartIdx=(x<49)?x:-1;\n"
3369:                        + "	mfFindAndSelectDate.iEndIdx=(y<49)?y:-1;;\n"
3370:                        + "	for (;(x<=y && x<49);x++)\n"
3371:                        + "	{\n"
3372:                        + "		m_rgCalCells[x].style.backgroundColor = m_szHighlightBG;\n"
3373:                        + "		m_rgCalCells[x].style.color = m_szHighlightText;\n"
3374:                        + "	}\n"
3375:                        + "	if (m_iView==0)\n"
3376:                        + "	{\n"
3377:                        + "		mfFindAndSelectDate.iHoldLastDaily=mfFindAndSelectDate.iStartIdx;\n"
3378:                        + "	}\n"
3379:                        + "}\n"
3380:                        + "\n"
3381:                        + "//PARAM: iMonth - jan=0\n"
3382:                        + "function mfGetDaysInMonth(iMonth, iYear)\n"
3383:                        + "{\n"
3384:                        + "	iMonth+=(iMonth==-1)?13:1; //remove 0 offset (1=jan)\n"
3385:                        + "	return( (2 == iMonth) ? (28+mfIsLeapYear(iYear)):(30+((iMonth+(iMonth>7))%2)));\n"
3386:                        + "}\n"
3387:                        + "function mfIsLeapYear(yr)\n"
3388:                        + "{\n"
3389:                        + "	return((yr	% 4	== 0) && (yr % 100 != 0) ||	(yr	% 400 == 0))?1:0;\n"
3390:                        + "}\n"
3391:                        + "\n"
3392:                        + "mfWriteCellNumbers.todayCellIdx=-1;\n"
3393:                        + "void function mfWriteCellNumbers()\n"
3394:                        + "{\n"
3395:                        + "	m_objMainDate.setDate(1);\n"
3396:                        + "\n"
3397:                        + "	var iM = m_objMainDate.getMonth();\n"
3398:                        + "	var iY = m_objMainDate.getFullYear();\n"
3399:                        + "	var iY2 = iY%100;\n"
3400:                        + "\n"
3401:                        + "	var szCaptionText = this.m_szDateFormat.replace(/\\[MMMM\\]/g, m_rgMonthNamesLong[iM]);\n"
3402:                        + "		\n"
3403:                        + "	szCaptionText = szCaptionText.replace(/\\[MMM\\]/g, m_rgMonthNamesShort[iM]);\n"
3404:                        + "	szCaptionText = szCaptionText.replace(/\\[MM\\]/g, ++iM<10 ? \"0\"+iM : iM );\n"
3405:                        + "	szCaptionText = szCaptionText.replace(/\\[M\\]/g, iM);\n"
3406:                        + "	szCaptionText = szCaptionText.replace(/\\[yyy+\\]/g, iY);\n"
3407:                        + "	szCaptionText = szCaptionText.replace(/\\[y+\\]/g, iY2>9?iY2:\"0\"+iY2);\n"
3408:                        + "\n"
3409:                        + "	m_objMainTable.rows[0].cells[1].innerText= szCaptionText;\n"
3410:                        + "\n"
3411:                        + "	m_oCalStartDate.setTime(m_objMainDate);\n"
3412:                        + "	m_oCalEndDate.setTime(m_objMainDate);\n"
3413:                        + "\n"
3414:                        + "	var x=m_objMainDate.getDay()-m_iStartDay;\n"
3415:                        + "	x+=(0>=x)?7:0; //show entire previous week\n"
3416:                        + "	m_oCalStartDate.setDate(1-x); //this is now the first date on the calendar\n"
3417:                        + "	m_oCalStartDate.setHours(0,0,0,0);\n"
3418:                        + "	m_oCalEndDate.setDate((1-x)+41);\n"
3419:                        + "	m_oCalEndDate.setHours(24,0,0,0);\n"
3420:                        + "\n"
3421:                        + "	var iD = m_oCalStartDate.getDate();\n"
3422:                        + "	var iM = m_oCalStartDate.getMonth();\n"
3423:                        + "	var iY = m_oCalStartDate.getFullYear();\n"
3424:                        + "	var iDm = mfGetDaysInMonth(iM,iY);\n"
3425:                        + "	var bg = (x==0)?m_szNormalDateBG:m_szInactiveBG;\n"
3426:                        + "	var y=7+iDm;\n"
3427:                        + "	for(x=7;iD<=iDm;x++)\n"
3428:                        + "	{\n"
3429:                        + "		m_rgCalCells[x].month=iM;\n"
3430:                        + "		m_rgCalCells[x].year =iY;\n"
3431:                        + "		m_rgCalCells[x].dayCell = bg;\n"
3432:                        + "		with(m_rgCalCells[x])\n"
3433:                        + "		{\n"
3434:                        + "			innerText = iD++;\n"
3435:                        + "			style.backgroundColor = bg;\n"
3436:                        + "			style.color = m_szNormalText;\n"
3437:                        + "			style.fontWeight = \"normal\";\n"
3438:                        + "		}\n"
3439:                        + "	}\n"
3440:                        + "	var iLastCell = m_rgCalCells.length;\n"
3441:                        + "	while(x<iLastCell)\n"
3442:                        + "	{\n"
3443:                        + "		iD=1;\n"
3444:                        + "		iM=(11==iM)?0:iM+1;\n"
3445:                        + "		if (0==iM ) iY++;\n"
3446:                        + "		var iDm = mfGetDaysInMonth(iM,iY);\n"
3447:                        + "		bg=(bg==m_szInactiveBG)?m_szNormalDateBG:m_szInactiveBG;\n"
3448:                        + "		if ((iDm+x) > iLastCell) iDm=iLastCell-x; //dont past last cell\n"
3449:                        + "		for(;iD<=iDm;x++)\n"
3450:                        + "		{\n"
3451:                        + "			//if (x>=iLastCell) break;\n"
3452:                        + "			m_rgCalCells[x].month=iM;\n"
3453:                        + "			m_rgCalCells[x].year =iY;\n"
3454:                        + "			m_rgCalCells[x].dayCell = bg;\n"
3455:                        + "			with(m_rgCalCells[x])\n"
3456:                        + "			{\n"
3457:                        + "				innerText = iD++;\n"
3458:                        + "				style.backgroundColor = bg;\n"
3459:                        + "				style.color = m_szNormalText;\n"
3460:                        + "				style.fontWeight = \"normal\";\n"
3461:                        + "			}\n"
3462:                        + "		}\n"
3463:                        + "	}\n"
3464:                        + "	if (-1!=mfWriteCellNumbers.todayCellIdx)\n"
3465:                        + "	{\n"
3466:                        + "		m_rgCalCells[mfWriteCellNumbers.todayCellIdx].style.border = \"none\";\n"
3467:                        + "		mfWriteCellNumbers.todayCellIdx=-1;\n"
3468:                        + "	}\n"
3469:                        + "	//is todays date on this calendar (needs red border)\n"
3470:                        + "	if(m_objTodaysDate > m_oCalStartDate && m_objTodaysDate < m_oCalEndDate)\n"
3471:                        + "	{ \n"
3472:                        + "		//add one hour 3600000 (for daylight spring losing an hour) and floor (DST fall works with floor)\n"
3473:                        + "		x = Math.floor((m_objTodaysDate - m_oCalStartDate + 3600000)/86400000)\n"
3474:                        + "		m_rgCalCells[x+7].style.border = \"solid 1 red\";\n"
3475:                        + "		mfWriteCellNumbers.todayCellIdx=x+7;\n"
3476:                        + "	}\n"
3477:                        + "	//prev selection has been wiped!\n"
3478:                        + "	mfFindAndSelectDate.iStartIdx=-1;\n"
3479:                        + "}\n"
3480:                        + "\n"
3481:                        + "void function mfUpdateCalendar(fRenderView,fUpdateBolding)\n"
3482:                        + "{\n"
3483:                        + "	mfWriteCellNumbers();\n"
3484:                        + "	mfFindAndSelectDate();\n"
3485:                        + "	if (!fUpdateBolding)\n"
3486:                        + "	{\n"
3487:                        + "		mfGetAppointments(fRenderView,false,true);\n"
3488:                        + "	}\n"
3489:                        + "	else\n"
3490:                        + "	{\n"
3491:                        + "		if (fRenderView) //refresh data then bold\n"
3492:                        + "		{\n"
3493:                        + "			mfGetAppointments(fRenderView,true,true);\n"
3494:                        + "		}\n"
3495:                        + "		else\n"
3496:                        + "		{\n"
3497:                        + "			mfGetBoldData(true);\n"
3498:                        + "		}	\n"
3499:                        + "	}		\n"
3500:                        + "}\n"
3501:                        + "\n"
3502:                        + "void function mfRenderCalendar()\n"
3503:                        + "{\n"
3504:                        + "	var	masterTableNode	= this.__idExchMasterCalendarTableNode.children[0];\n"
3505:                        + "	var	masterRowNode	= this.__idExchMasterCalendarRowNode.children[0];\n"
3506:                        + "	var	newNode=null;\n"
3507:                        + "	for(var i=0;i<7;i++)\n"
3508:                        + "	{\n"
3509:                        + "		newNode=masterRowNode.cloneNode(true);\n"
3510:                        + "		if(0==i)\n"
3511:                        + "		{\n"
3512:                        + "			newNode.cells[0].weekselect=null;\n"
3513:                        + "			newNode.cells[0].monthDisplayName=\"1\";\n"
3514:                        + "		}\n"
3515:                        + "		masterTableNode.insertAdjacentElement(\"BeforeEnd\",newNode.children[0]);\n"
3516:                        + "	}\n"
3517:                        + "	this.insertAdjacentElement(\"BeforeEnd\",masterTableNode);\n"
3518:                        + "	m_objMainTable=masterTableNode;\n"
3519:                        + "}\n"
3520:                        + "mfGetBoldData.szQuery=\"\";\n"
3521:                        + "void function mfGetBoldData(fResetQuery)\n"
3522:                        + "{\n"
3523:                        + "	if(null != m_objStatus )\n"
3524:                        + "	{\n"
3525:                        + "		m_objStatus.style.display=\"\";\n"
3526:                        + "		m_objStatus.innerText = L_szUpdatingBold;\n"
3527:                        + "	}\n"
3528:                        + "	m_fHaveData	= true;//allow event firings\n"
3529:                        + "	if (\"\"==mfGetBoldData.szQuery) fResetQuery=true;\n"
3530:                        + "	if (fResetQuery)\n"
3531:                        + "	{\n"
3532:                        + "		var	iX = 7;\n"
3533:                        + "		iX = m_rgCalCells.length - 1;\n"
3534:                        + "		var szDateStart=mfGetSearchDateUTC(m_oCalStartDate);\n"
3535:                        + "		var szDateEnd=mfGetSearchDateUTC(m_oCalEndDate);\n"
3536:                        + "		mfGetBoldData.szQuery ='<a:searchrequest xmlns:a=\"DAV:\" > ' +\n"
3537:                        + "		'<a:sql>Select ' +\n"
3538:                        + "		 '\"urn:schemas:calendar:dtstart\" AS dtstart, ' +\n"
3539:                        + "		 '\"urn:schemas:calendar:dtend\" AS dtend, ' +\n"
3540:                        + "		 '\"urn:schemas:calendar:alldayevent\" AS alldayevent ' +\n"
3541:                        + "		'FROM Scope(\\'SHALLOW TRAVERSAL OF \"\"\\') ' +\n"
3542:                        + "		'WHERE NOT \"urn:schemas:calendar:instancetype\" = 1 ' +\n"
3543:                        + "		'AND NOT \"urn:schemas:calendar:busystatus\" = \\'FREE\\' ' +\n"
3544:                        + "		  'AND \"urn:schemas:calendar:dtend\" &gt; \\''+szDateStart+'\\' ' +\n"
3545:                        + "		  'AND \"urn:schemas:calendar:dtstart\" &lt; \\''+szDateEnd+'\\' ' +\n"
3546:                        + "		'ORDER BY \"urn:schemas:calendar:dtstart\" ASC ' +\n"
3547:                        + "		'</></>';\n"
3548:                        + "\n"
3549:                        + "	}\n"
3550:                        + "	m_objXMLhttpBold = new ActiveXObject(\"Microsoft.XMLhttp\");\n"
3551:                        + "	try\n" + "	{\n"
3552:                        + "		m_objXMLhttpBold.open(\"SEARCH\","
3553:                        + JSWrapperHelper.CONVERT_EXPRESSION_FUNCTION_WRAP_START
3554:                        + "\tfolderURL), true);\n"
3555:                        + "		m_objXMLhttpBold.setRequestHeader(\"Content-Type\", \"text/xml\");\n"
3556:                        + "		m_objXMLhttpBold.onreadystatechange = onRSC_getBoldData;\n"
3557:                        + "		m_objXMLhttpBold.send(mfGetBoldData.szQuery);\n"
3558:                        + "	}\n"
3559:                        + "	catch(e)\n"
3560:                        + "	{\n"
3561:                        + "		alert(\"Error in	ExchangeCalendar.HTC mfGetBoldData() with searchrequest: \"+e.description);\n"
3562:                        + "	}\n"
3563:                        + "}\n"
3564:                        + "\n"
3565:                        + "\n"
3566:                        + "//holds	calendar date range	including greyed next/prev months\n"
3567:                        + "mfGetAppointments.m_dTemp = new Date();\n"
3568:                        + "mfGetAppointments.szQuery=\"\";\n"
3569:                        + "void function mfGetAppointments(fRenderVeiw,fUpdateBolding,fResetQuery)\n"
3570:                        + "{\n"
3571:                        + "	if (true == fUpdateBolding) \n"
3572:                        + "	{\n"
3573:                        + "		onRSC_getAppointments.fUpdateBolding = true; //we will bold after getting the appt data\n"
3574:                        + "	}	\n"
3575:                        + "	if(null != m_objStatus )\n"
3576:                        + "	{\n"
3577:                        + "		m_objStatus.style.display=\"\";\n"
3578:                        + "		m_objStatus.innerText = L_szUpdating;\n"
3579:                        + "	}\n"
3580:                        + "\n"
3581:                        + "	onRSC_getAppointments.fResetQuery=fResetQuery;\n"
3582:                        + "	m_fHaveData	= false; //stop	event firings\n"
3583:                        + "\n"
3584:                        + "	//Use last stored query in case where polling fires but user has calendar in another month than the view\n"
3585:                        + "	//Happens most when going out past the expansion which fires another expansion with triggers polling changes\n"
3586:                        + "	if (\"\"==mfGetAppointments.szQuery) fResetQuery=true;\n"
3587:                        + "	if (fResetQuery)\n"
3588:                        + "	{\n"
3589:                        + "		var iX = 7;\n"
3590:                        + "		iX = m_rgCalCells.length - 1;\n"
3591:                        + "		if (2==m_iView) //monthly gets full 6 weeks\n"
3592:                        + "		{\n"
3593:                        + "			//this shifts an extra day for the montly view calendar in sunday start\n"
3594:                        + "			//while view shows monday start (same problem with weekly view)\n"
3595:                        + "			if (0==m_iStartDay)\n"
3596:                        + "			{\n"
3597:                        + "				m_oCalStartDate.setHours(24,0,0,0);\n"
3598:                        + "				m_oCalEndDate.setHours(24,0,0,0);\n"
3599:                        + "				var szDateStart	= mfGetSearchDateUTC(m_oCalStartDate);\n"
3600:                        + "				var szDateEnd =	mfGetSearchDateUTC(m_oCalEndDate);\n"
3601:                        + "				m_oCalStartDate.setHours(-24,0,0,0);\n"
3602:                        + "				m_oCalEndDate.setHours(-24,0,0,0);\n"
3603:                        + "			}\n"
3604:                        + "			else\n"
3605:                        + "			{\n"
3606:                        + "				var szDateStart	= mfGetSearchDateUTC(m_oCalStartDate);\n"
3607:                        + "				var szDateEnd =	mfGetSearchDateUTC(m_oCalEndDate);\n"
3608:                        + "			}\n"
3609:                        + "		}\n"
3610:                        + "		else if (1==m_iView)//weekly\n"
3611:                        + "		{\n"
3612:                        + "			//this shifts an extra day for the weekly view calendar in sunday start \n"
3613:                        + "			//while view shows monday start (same problem with monthly view)\n"
3614:                        + "			if (0==m_iStartDay)\n"
3615:                        + "			{\n"
3616:                        + "				m_objSelectedStart.setHours(24,0,0,0);\n"
3617:                        + "				var szDateStart	= mfGetSearchDateUTC(m_objSelectedStart);\n"
3618:                        + "				m_objSelectedStart.setHours(168,0,0,0);\n"
3619:                        + "				var szDateEnd =	mfGetSearchDateUTC(m_objSelectedStart);\n"
3620:                        + "				m_objSelectedStart.setHours(-192,0,0,0);\n"
3621:                        + "			}\n"
3622:                        + "			else\n"
3623:                        + "			{\n"
3624:                        + "				var szDateStart	= mfGetSearchDateUTC(m_objSelectedStart);\n"
3625:                        + "				m_objSelectedStart.setHours(168,0,0,0);\n"
3626:                        + "				var szDateEnd =	mfGetSearchDateUTC(m_objSelectedStart);\n"
3627:                        + "				m_objSelectedStart.setHours(-168,0,0,0);\n"
3628:                        + "			}\n"
3629:                        + "		}	\n"
3630:                        + "		else //daily view (default)\n"
3631:                        + "		{\n"
3632:                        + "			var szDateStart	= mfGetSearchDateUTC(m_objSelectedStart);\n"
3633:                        + "			m_objSelectedStart.setHours(24,0,0,0);\n"
3634:                        + "			var szDateEnd =	mfGetSearchDateUTC(m_objSelectedStart);\n"
3635:                        + "			m_objSelectedStart.setHours(-24,0,0,0);\n"
3636:                        + "		}\n"
3637:                        + "\n"
3638:                        + "		mfGetAppointments.szQuery='<a:searchrequest xmlns:a=\"DAV:\" > ' +\n"
3639:                        + "		'<a:sql>Select ' +\n"
3640:                        + "		 '\"urn:schemas:calendar:location\" AS location, ' +\n"
3641:                        + "		 '\"urn:schemas:httpmail:subject\" AS subject, '+\n"
3642:                        + "		 '\"urn:schemas:calendar:dtstart\" AS dtstart, ' +\n"
3643:                        + "		 '\"urn:schemas:calendar:dtend\" AS dtend, ' +\n"
3644:                        + "		 '\"urn:schemas:calendar:busystatus\" AS busystatus, ' +\n"
3645:                        + "		 '\"urn:schemas:calendar:instancetype\" AS instancetype, ' +\n"
3646:                        + "		 '\"urn:schemas:calendar:alldayevent\" AS alldayevent, ' +\n"
3647:                        + "		 '\"http://schemas.microsoft.com/mapi/proptag/x10c70003\" AS pr_cdormid, ' +\n"
3648:                        + "		 '\"http://schemas.microsoft.com/exchange/sensitivity-long\" AS sensitivity, '+\n"
3649:                        + "		 '\"http://schemas.microsoft.com/mapi/apptstateflags\" AS apptstateflags, '+\n"
3650:                        + "		 '\"urn:schemas:calendar:uid\" AS uid ' +\n"
3651:                        + "		'FROM Scope(\\'SHALLOW TRAVERSAL OF \"\"\\') ' +\n"
3652:                        + "		'WHERE NOT \"urn:schemas:calendar:instancetype\" = 1 ' +\n"
3653:                        + "		  'AND \"urn:schemas:calendar:dtend\" &gt; \\''+szDateStart+'\\'  ' +\n"
3654:                        + "		  'AND \"urn:schemas:calendar:dtstart\" &lt; \\''+szDateEnd+'\\' ' +\n"
3655:                        + "		'ORDER BY \"urn:schemas:calendar:dtstart\" ASC ' +\n"
3656:                        + "		'</></>';\n"
3657:                        + "		\n"
3658:                        + "	}\n"
3659:                        + "	\n"
3660:                        + "	m_objXMLhttp = new ActiveXObject(\"Microsoft.XMLhttp\");\n"
3661:                        + "	onRSC_getAppointments.fRenderView=fRenderVeiw;\n"
3662:                        + "	try\n"
3663:                        + "	{\n"
3664:                        + "		m_objXMLhttp.open(\"SEARCH\","
3665:                        + JSWrapperHelper.CONVERT_EXPRESSION_FUNCTION_WRAP_START
3666:                        + "folderURL), true);\n"
3667:                        + "		m_objXMLhttp.setRequestHeader(\"Content-Type\",\"text/xml\");\n"
3668:                        + "		m_objXMLhttp.onreadystatechange = onRSC_getAppointments;\n"
3669:                        + "		m_objXMLhttp.send(mfGetAppointments.szQuery);\n"
3670:                        + "	}\n"
3671:                        + "	catch(e)\n"
3672:                        + "	{\n"
3673:                        + "		alert(\"Error in	ExchangeCalendar.HTC mfGetAppointments() with searchrequest: \"+e.description);\n"
3674:                        + "		onRSC_getAppointments.fRenderView = true;\n"
3675:                        + "	}\n"
3676:                        + "}\n"
3677:                        + "\n"
3678:                        + "//returns UTC date in \"yyyy/mm/dd hh:mm:ss\"	format for DAV searchrequests\n"
3679:                        + "void function mfGetSearchDateUTC(objDate)\n"
3680:                        + "{\n"
3681:                        + "	var	szYear		= objDate.getUTCFullYear();\n"
3682:                        + "	var	szMonth		= objDate.getUTCMonth()+1;\n"
3683:                        + "	var	szDate		= objDate.getUTCDate();\n"
3684:                        + "	var	szHrs		= objDate.getUTCHours();\n"
3685:                        + "	var	szMin		= objDate.getUTCMinutes();\n"
3686:                        + "	return (  szYear+\"/\"+\n"
3687:                        + "			((szMonth<10)?(\"0\"+szMonth):szMonth)  +	\"/\"	+\n"
3688:                        + "			((szDate<10) ?(\"0\"+szDate) :szDate)	  +	\" \"	+\n"
3689:                        + "			((szHrs<10)	 ?(\"0\"+szHrs)  :szHrs)	  +	\":\"	+\n"
3690:                        + "			((szMin<10)	 ?(\"0\"+szMin)  :szMin)	  +	\":00\"	);\n"
3691:                        + "}\n"
3692:                        + "\n"
3693:                        + "void function mfBoldDates(rgApptStartTimes,rgApptEndTimes,rgIsAllDayEvent)\n"
3694:                        + "{\n"
3695:                        + "	var x;\n"
3696:                        + "	var rgNodes=null;\n"
3697:                        + "	for(x=7; x < m_rgCalCells.length; x++)\n"
3698:                        + "	{\n"
3699:                        + "		rgNodes=mfGetNodes(m_rgCalCells[x].year,m_rgCalCells[x].month,Number(m_rgCalCells[x].innerText));\n"
3700:                        + "		m_rgCalCells[x].style.fontWeight = rgNodes.length ? \"bold\" : \"normal\";\n"
3701:                        + "	}\n"
3702:                        + "}\n"
3703:                        + "function mfGetNodes(iY,iM,iD)\n"
3704:                        + "{\n"
3705:                        + "	if(null == m_objOutPutXMLBold)\n"
3706:                        + "	{\n"
3707:                        + "		return;\n"
3708:                        + "	}\n"
3709:                        + "	var dtstartUTC		= mfGetUTFIsoDate(iY, iM, iD, 0, 0);\n"
3710:                        + "	var dtendUTC		= mfGetUTFIsoDate(iY, iM, iD+1,0, 0);\n"
3711:                        + "	var szStartTimeQuery=	\"(dtstart$ge$'\" + dtstartUTC	+ \"'&&dtstart$lt$'\"	+ dtendUTC + \"')\";\n"
3712:                        + "	var szEndTimeQuery	=	\"(dtend$gt$'\" + dtstartUTC + \"'&&dtend$le$'\"+ dtendUTC+ \"')\";\n"
3713:                        + "	var szOutSideQuery	=	\"(dtstart$lt$'\" + dtstartUTC	+ \"'&&dtend$gt$'\"+ dtendUTC + \"')\";\n"
3714:                        + "	var szQuery			=	\"root/appointment[\"	+ szStartTimeQuery + \"||\" +	szEndTimeQuery + \"||\" +	szOutSideQuery + \"]\";\n"
3715:                        + "	return(m_objOutPutXMLBold.selectNodes(szQuery));\n"
3716:                        + "}\n"
3717:                        + "\n"
3718:                        + "mfGetUTFIsoDate.objD= new Date();\n"
3719:                        + "function mfGetUTFIsoDate(iYr,iMon,iDate,iHr,iMin)\n"
3720:                        + "{\n"
3721:                        + "	mfGetUTFIsoDate.objD.setFullYear(iYr,iMon,iDate);\n"
3722:                        + "	mfGetUTFIsoDate.objD.setHours(iHr,iMin,0);\n"
3723:                        + "	var iYear		= mfGetUTFIsoDate.objD.getUTCFullYear();\n"
3724:                        + "	var szMonth		= mfGetUTFIsoDate.objD.getUTCMonth()+1;//0 offset adjustment\n"
3725:                        + "	var szDate		= mfGetUTFIsoDate.objD.getUTCDate();\n"
3726:                        + "	var szHours		= mfGetUTFIsoDate.objD.getUTCHours();\n"
3727:                        + "	var szMinutes	= mfGetUTFIsoDate.objD.getUTCMinutes();\n"
3728:                        + "	if (szMonth< 10)\n"
3729:                        + "	{\n"
3730:                        + "		szMonth	=  \"0\"+szMonth;\n"
3731:                        + "	}	\n"
3732:                        + "	if (szDate < 10)\n"
3733:                        + "	{\n"
3734:                        + "		szDate =  \"0\"+szDate;\n"
3735:                        + "	}	\n"
3736:                        + "	if (szHours	< 10)\n"
3737:                        + "	{\n"
3738:                        + "		szHours	=  \"0\"+szHours;\n"
3739:                        + "	}	\n"
3740:                        + "	if (szMinutes <	10)\n"
3741:                        + "	{\n"
3742:                        + "		szMinutes =	 \"0\"+szMinutes;\n"
3743:                        + "	}\n"
3744:                        + "	return(String(iYear+\"-\"+szMonth+\"-\"+szDate+\"T\"+szHours+\":\"+szMinutes+\":00.000Z\"));\n"
3745:                        + "}\n"
3746:                        + "\n"
3747:                        + "//szDtTime = ISO formatted UTC time	string = \"1999-02-18T02:00:00.000Z\"\n"
3748:                        + "//returns =	UTC	time in milliseconds\n"
3749:                        + "function mfGetIsoDateMs(szIsoDate)\n"
3750:                        + "{\n"
3751:                        + "	var re=mfGetRegExpIsoDates();\n"
3752:                        + "	re.lastIndex=0;\n"
3753:                        + "	var arr = re.exec( szIsoDate );\n"
3754:                        + "	return ( (null == arr) ? null : Date.UTC( Number( arr[1]), Number(arr[2])-1, Number(arr[3]), Number(arr[4]), Number(arr[5]), 0, 0 ) );\n"
3755:                        + "}\n"
3756:                        + "\n"
3757:                        + "mfGetRegExpIsoDates.re;\n"
3758:                        + "function mfGetRegExpIsoDates()\n"
3759:                        + "{\n"
3760:                        + "	if (null == mfGetRegExpIsoDates.re)\n"
3761:                        + "	{ \n"
3762:                        + "		mfGetRegExpIsoDates.re = /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):\\d{2}\\.\\d{3}Z?$/;\n"
3763:                        + "	}\n"
3764:                        + "	return(mfGetRegExpIsoDates.re);\n"
3765:                        + "}\n"
3766:                        + "\n"
3767:                        + "void function onAbort()\n"
3768:                        + "{\n"
3769:                        + "	return;\n"
3770:                        + "}\n"
3771:                        + "void function onRSC_getBoldData()\n"
3772:                        + "{\n"
3773:                        + "	if(4 != m_objXMLhttpBold.readyState)\n"
3774:                        + "	{\n"
3775:                        + "		return;\n"
3776:                        + "	}\n"
3777:                        + "	m_objXMLhttpBold.onreadystatechange	= onAbort;\n"
3778:                        + "	var	objXML = m_objXMLhttpBold.responseXML;\n"
3779:                        + "	objXML.transformNodeToObject(m_objXSL.documentElement, m_objOutPutXMLBold);\n"
3780:                        + "	var	objApptNodes	= m_objOutPutXMLBold.selectNodes('root/appointment/dtstart');\n"
3781:                        + "	var	objApptNodes1	= m_objOutPutXMLBold.selectNodes('root/appointment/dtend');\n"
3782:                        + "	var	objApptNodes2	= m_objOutPutXMLBold.selectNodes('root/appointment/alldayevent');\n"
3783:                        + "\n"
3784:                        + "	mfBoldDates(objApptNodes,objApptNodes1,objApptNodes2);\n"
3785:                        + "	if(null != m_objStatus )\n"
3786:                        + "	{\n"
3787:                        + "		m_objStatus.style.display=\"none\";\n"
3788:                        + "		m_objStatus.innerText = \"\";\n"
3789:                        + "	}\n"
3790:                        + "}\n"
3791:                        + "\n"
3792:                        + "onRSC_getAppointments.fRenderView = true;\n"
3793:                        + "onRSC_getAppointments.fUpdateBolding = false;\n"
3794:                        + "onRSC_getAppointments.fResetQuery=true;\n"
3795:                        + "void function onRSC_getAppointments()\n"
3796:                        + "{\n"
3797:                        + "	if(4 != m_objXMLhttp.readyState)\n"
3798:                        + "	{\n"
3799:                        + "		return;\n"
3800:                        + "	}\n"
3801:                        + "	m_objXMLhttp.onreadystatechange	= onAbort;\n"
3802:                        + "	var objXML = m_objXMLhttp.responseXML;\n"
3803:                        + "	objXML.transformNodeToObject(m_objXSL.documentElement, m_objOutPutXML);\n"
3804:                        + "	//only fire	(refresh the veiwer) if	the	calendar is	on that	month\n"
3805:                        + "	m_fHaveData	= true;\n"
3806:                        + "	if(m_objMainDate >= m_oCalStartDate && m_objMainDate <= m_oCalEndDate)\n"
3807:                        + "	{\n"
3808:                        + "		if(true == onRSC_getAppointments.fRenderView)\n"
3809:                        + "		{\n"
3810:                        + "			fire_OnDateChange(m_objOutPutXML);\n"
3811:                        + "		}\n"
3812:                        + "	}\n"
3813:                        + "	onRSC_getAppointments.fRenderView=true;\n"
3814:                        + "	if(null != m_objStatus )\n"
3815:                        + "	{\n"
3816:                        + "		m_objStatus.style.display=\"none\";\n"
3817:                        + "		m_objStatus.innerText = \"\";\n"
3818:                        + "	}\n"
3819:                        + "	if (true == onRSC_getAppointments.fUpdateBolding)\n"
3820:                        + "	{\n"
3821:                        + "		onRSC_getAppointments.fUpdateBolding=false;\n"
3822:                        + "		mfGetBoldData(onRSC_getAppointments.fResetQuery);\n"
3823:                        + "	}\n"
3824:                        + "}\n"
3825:                        + "/************************PROPERTY ACCESS FUNCTIONS***********************/\n"
3826:                        + "function get_statusEl()\n"
3827:                        + "{\n"
3828:                        + "	return(m_objStatus);\n"
3829:                        + "}\n"
3830:                        + "function put_statusEl(newVal)\n"
3831:                        + "{\n"
3832:                        + "	if(typeof(newVal) == 'string')\n"
3833:                        + "	{\n"
3834:                        + "		m_objStatus = window.document.all[newVal];\n"
3835:                        + "		return;\n"
3836:                        + "	}\n"
3837:                        + "	m_objStatus = newVal;\n"
3838:                        + "}\n"
3839:                        + "function put_PollInterval(newVal)\n"
3840:                        + "{\n"
3841:                        + "	m_iPollInterval	= Number(newVal);\n"
3842:                        + "}\n"
3843:                        + "function get_PollInterval()\n"
3844:                        + "{\n"
3845:                        + "	return m_iPollInterval;\n"
3846:                        + "}\n"
3847:                        + "function put_readOnly(newVal)\n"
3848:                        + "{\n"
3849:                        + "	if(\"true\" == String(newVal))\n"
3850:                        + "	{\n"
3851:                        + "		m_fReadOnly	= true;\n"
3852:                        + "	}\n"
3853:                        + "	else\n"
3854:                        + "	{\n"
3855:                        + "		m_fReadOnly	= false;\n"
3856:                        + "	} \n"
3857:                        + "}\n"
3858:                        + "function get_readOnly()\n"
3859:                        + "{\n"
3860:                        + "		return m_fReadOnly;\n"
3861:                        + "}\n"
3862:                        + "function put_Day(newVal)\n"
3863:                        + "{\n"
3864:                        + "	m_objMainDate.setDate(Number(newVal));\n"
3865:                        + "}\n"
3866:                        + "function get_Day()\n"
3867:                        + "{\n"
3868:                        + "	return m_objSelectedStart.getDate();\n"
3869:                        + "}\n"
3870:                        + "function put_Month(newVal)\n"
3871:                        + "{\n"
3872:                        + "	m_objMainDate.setMonth(Number(newVal));\n"
3873:                        + "}\n"
3874:                        + "function get_Month()\n"
3875:                        + "{\n"
3876:                        + "	return m_objSelectedStart.getMonth();\n"
3877:                        + "}\n"
3878:                        + "function put_Year(newVal)\n"
3879:                        + "{\n"
3880:                        + "	m_objMainDate.setYear(Number(newVal));	\n"
3881:                        + "}\n"
3882:                        + "function get_Year()\n"
3883:                        + "{\n"
3884:                        + "	return m_objSelectedStart.getFullYear();\n"
3885:                        + "}\n"
3886:                        + "function get_FullYear()\n"
3887:                        + "{\n"
3888:                        + "	return m_objSelectedStart.getFullYear();\n"
3889:                        + "}\n"
3890:                        + "function put_FullYear(newVal)\n"
3891:                        + "{\n"
3892:                        + "	m_objMainDate.setFullYear(Number(newVal));	\n"
3893:                        + "}\n"
3894:                        + "function put_caltext(newVal)\n"
3895:                        + "{\n"
3896:                        + "L_szUpdatingBold = newVal;\n"
3897:                        + "}\n"
3898:                        + "function get_caltext()\n"
3899:                        + "{\n"
3900:                        + "return(L_szUpdatingBold);\n"
3901:                        + "}\n"
3902:                        + "function put_viewtext(newVal)\n"
3903:                        + "{\n"
3904:                        + "L_szUpdating = newVal;\n"
3905:                        + "}\n"
3906:                        + "function get_viewtext()\n"
3907:                        + "{\n"
3908:                        + "return(L_szUpdating);\n"
3909:                        + "}\n"
3910:                        + "//Causes a refresh of all the data for the current view\n"
3911:                        + "function f_refresh()\n"
3912:                        + "{\n"
3913:                        + "	mfGetAppointments(true,true,false);\n"
3914:                        + "}\n"
3915:                        + JSWrapperHelper.CONVERT_EXPRESSION_FUNCTION_JS;
3916:
3917:                String lJSFuncRules = "<Function type=\"EXPRESSION\" name=\"*XMLhttp*.open\" paramPatterns=\",y,\"/><Function type=\"EXPRESSION\" name=\"*XSL.load\" paramPatterns=\"y\"/>";
3918:                RuleSet lRuleSet = CreateRuleSet
3919:                        .withHTMLJSTokenJSVarJSFunRules("", "", lJSFuncRules);
3920:                Rewriter lRewriter = RewriterPool.create(lRuleSet,
3921:                        LanguageConstants.JS_MIME);
3922:                String lResult = lRewriter.rewrite(lInput,
3923:                        getDefaultJSTranslator());
3924:                assertEquals(lExpectation, lResult);
3925:            }//testOutllokExchangeCalendarHTC1()
3926:
3927:            public void testEntityBugRelated() throws Exception {
3928:                String lInput = "		m_objXMLhttpBold.open(\"SEARCH\",	folderURL, true);\n";
3929:
3930:                String lExpectation = "		m_objXMLhttpBold.open(\"SEARCH\","
3931:                        + JSWrapperHelper.CONVERT_EXPRESSION_FUNCTION_WRAP_START
3932:                        + "	folderURL), true);\n"
3933:                        + JSWrapperHelper.CONVERT_EXPRESSION_FUNCTION_JS;
3934:
3935:                String lJSFuncRules = "<Function type=\"EXPRESSION\" name=\"*XMLhttp*.open\" paramPatterns=\",y,\"/><Function type=\"EXPRESSION\" name=\"*XSL.load\" paramPatterns=\"y\"/>";
3936:                RuleSet lRuleSet = CreateRuleSet
3937:                        .withHTMLJSTokenJSVarJSFunRules("", "", lJSFuncRules);
3938:                Rewriter lRewriter = RewriterPool.create(lRuleSet,
3939:                        LanguageConstants.JS_MIME);
3940:                String lResult = lRewriter.rewrite(lInput,
3941:                        getDefaultJSTranslator());
3942:                assertEquals(lExpectation, lResult);
3943:            }//testEntityBugRelated()
3944:
3945:            public static void main(String[] args) {
3946:                BasicTestCase.run(TestJSGeneral.class);
3947:                TestSuite testSuite = new TestSuite();
3948:                testSuite.addTest(new TestJSGeneral(
3949:                        "testOutllokExchangeCalendarHTC"));
3950:                //BasicTestCase.run( testSuite );
3951:            }//main()
3952:        }//class TestJSGeneral
w_w___w_.__ja___v__a2_s___._c_om___ | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.