//---------------------------------------------------------------------------
//
//  scrptcal.js 
//  a component of ScriptCalendar 
//  (c)2000 Dan Shipe 
//  www.scriptcalendar.com
//  salesadmin@scriptcalendar.com
//
//    Date     By   Ver   Description
// ----------  ---  ----  ---------------------------------------------------
// 02-23-2005  DS   6.00  Initial creation
// 03-08-2005  DS   6.01  Fixed bug in to allow events on 8th and 9th to display
// 03-24-2005  DS   6.02  Implement key in IFrame tag
// 04-10-2005  DS   6.03  Added "small" theme
// 04-15-2005  DS   6.04  Added support for a printable css
// 05-31-2005  DS   6.05  Remove current date from prev month
// 06-15-2005  DS   6.06  Correct bug in PopupAddParam
// 08-04-2005  DS   6.07  Modifications to code
// 08-08-2005  DS   6.08  Add OverrideSpecialEvents & event filter
// 11-03-2005  DS   6.09  Fixed bug in Dead cell display
// 03-01-2006  DS   6.10  Fixed bug in OverrideSpecialEvent display
// 06-01-2006  DS   6.11  Fixed bug in XML octal conversion
// 09-01-2006  DS   6.12  Added classes for the moth and year dropdown
// 09-05-2006  DS   6.13  Revise licensing
// 09-10-2006  DS   6.14  fixed rounding bug in WeekOfMonth
// 03-01-2007  DS   6.15  add additional handlers to the scHandlr.js
// 03-15-2007  DS   6.16  fixed bug when running from localhost
// 03-18-2007  DS   6.17  improve xml loading for firefox 2 
// 04-03-2007  DS   6.18  fixed xml filter bug
// 04-10-2007  DS   7.00  enhancements
// 09-24-2007  DS   7.01  allow for relatively positioned calendar
// 09-25-2007  DS   7.02  fix handling of anchor tag when re-posting
// 10-12-2007  DS   7.03  changes for outlook theme
// 10-16-2007  DS   7.04  cleanup for outlook theme
// 10-23-2007  DS   7.05  fix bug in the initialDate property
// 02-12-2008  DS   7.06  added specialEventsFirst flag
// 12-20-2008  DS   7.07  fix bug in cellHeight
// 03-07-2009  DS   7.08  support XML events in Google Chrome Browser
// 06-15-2009  DS   7.09  fix bug in xml
// 10-06-2009  DS   7.10  remove onclick from filter container div
// 11-18-2009  DS   7.11  allow multiple tootips
// 01-02-2010  DS   7/12  performance enhancments


var O00;var mfntImport;var OO00OO;var O0OO = new Array();var O0O0;var mstrQueryStrParam = "scDate";var mlngPopupType;var mblnPopupAddParam;var mstrPopupProp;var ua=navigator.userAgent.toLowerCase();var MAC=ua.indexOf("mac")!=-1;var OP=ua.indexOf("opera")!=-1;var KO=ua.indexOf("konqueror")!=-1;var IE=ua.indexOf("msie")!=-1&&!OP&&ua.indexOf("webtv")==-1;var NN=ua.indexOf("gecko")!=-1;function scriptcalendar() {var O0O0O = new Date();this.license = new Array();this.xmlFile = false;this.xslFile = false;this.initialDate = O0O0O;this.deadCellType = 0;this.dateSelector = 1+2+4+8;this.prevHtml = "&laquo;";this.nextHtml = "&raquo;";this.dateRangeStart = 2006;this.dateRangeEnd = 2012;this.cellWidth = 100;this.cellHeight = 100;this.padding = "0";this.spacing = "2";this.beginMonday = false;this.displayWeekNumber= false;this.showFutureEvents= true;this.showPastEvents= true;this.enableHandlers= true;this.overrideSpecialEvent = false;this.expandCellHeight = false;this.expandEventStyle= 0;this.specialEventsFirst= false;this.tooltipType= 2;this.tooltipUseEventText= true;this.popupType= 1;this.popupAddParam= true;this.popupProperties= "width=600,height=400,scrollbars=yes,resizable=yes,titlebar=yes,toolbar=yes,menubar=yes,location=yes,status=yes";this.filter = fscRequestQueryString("scFilter");this.filterNames= "";this.eventArray = new Array();this.monthStartDate = new Array(1,1,1,1,1,1,1,1,1,1,1,1);this.longDays = new Array( "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" );this.longMonths = new Array( "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" );this.displayTimer = false;this.displayHtml = false;O00 = this;};scriptcalendar.prototype.initialize = function() {var O000O;var d;var objIFrame = parent.document.getElementById("scIFrame");if (objIFrame) {if (objIFrame.name.length != 0) {this.license = objIFrame.name.split(",");};};var O000O = fscRequestQueryString("scLicense");if (O000O.length != 0) {this.license = O000O.split(",");};OO00OO = false;d = O000O0();for (var i=0;i<this.license.length;i++) {O000O = O000OO(this.license[i]);if (O000O.length > d.length) {O000O = O000O.substring(O000O.length-d.length);};if (O000O==d) OO00OO = true;};if (d=="1") OO00OO = true;mlngPopupType = this.popupType;mblnPopupAddParam = this.popupAddParam;mstrPopupProp = this.popupProperties;if (!(this.xmlFile)) {this.main(false);} else {fscImportXml(this.xmlFile, "O00.main");};};scriptcalendar.prototype.main = function(objEvtXml) {var O00O0;var objXml;var O0OO0 = this.initialDate;strDate = fscRequestQueryString(mstrQueryStrParam);if (strDate.length != 0) O0OO0 = new Date(strDate);if (fscRequestQueryString("DisplayTimer")=="1") this.displayTimer = true;if (fscRequestQueryString("DisplayHtml")=="1") this.displayHtml = true;if (objEvtXml) this.xmlToArray(objEvtXml);if (!(this.xslFile)) {O00O0 = this.getCalendarHtmlString(O0OO0);} else {objXml = this.getCalendarXml(O0OO0);O00O0 = O0OOO0O(objXml, this.xslFile);O00O0 = O00O0.htmlEncode();};if (this.filterNames.length != 0) {this.createFilter();};var objElmParent = document.getElementById("scParent");if (objElmParent == null) objElmParent = document.body;var objElmCalendar = O0OOOOO(objElmParent, "div", "");objElmCalendar.innerHTML = O00O0;if (this.popupType==2) {this.createPopup();};};scriptcalendar.prototype.getCalendarXml = function(dteDisplay) {var O0OOO;var O000;var O0OO0;var O0O0O;var dteFirstDay;var O00OO;var lngCol;var O0O0OO;var blnHasRegularEvent;var O0000;var O0OOOO;var strDate;var O000O;var strFirstCls;var O0OOO0;var blnDead;var i;var j;var m;var y;var objCalXml;var O0O0O0;var O0O00O;var objNodeSelectors;var O0O000;var O00OO0;var O00O0O;var O00OOO;var O00O0Oday;var objNodeNumber;var O00O00;m = dteDisplay.getMonth();y = dteDisplay.getFullYear();if (y<this.dateRangeStart) {m=0;y=this.dateRangeStart;};if (y>this.dateRangeEnd) {m=11;y=this.dateRangeEnd;};dteDisplay = new Date(y, m, dteDisplay.getDate());O0OO0 = new Date(y, m, 1);dteFirstDay = new Date(y, m, 1);O0O0O = new Date();O0O0O = new Date( O0O0O.getFullYear(), O0O0O.getMonth(), O0O0O.getDate());O0OO0.setDate(O0OO0.getDate() + this.monthStartDate[m] -1);O0OO0.setDate( O0OO0.getDate() - this.getWeekday(O0OO0) );if ( O0OO0.getDate() == 2 ) O0OO0.setDate( O0OO0.getDate() - 7 );O0O0OO = 1 - this.getWeekday(O0OO0);strDisplayYM = dteDisplay.format("yymm", false);strCalYM = O0OO0.format("yymm", false);O0OOO = this.getPartialEventArray(dteDisplay);objCalXml = O0OOOO0();O00O00 = O0OOOOO(objCalXml, "calendar", "");fscAppendAttribute(O00O00, "border", "0");fscAppendAttribute(O00O00, "cellpadding", this.padding);fscAppendAttribute(O00O00, "cellspacing", this.spacing);fscAppendAttribute(O00O00, "columns", "7");O0O0O0 = O0OOOOO(objCalXml.documentElement, "properties", "");for (var prop in this) {fscAppendAttribute(O0O0O0, prop, this[prop]);};O00O00 = O0OOOOO(objCalXml.documentElement, "calendardate", dteFirstDay.toString() );fscAppendAttribute(O00O00, "year", dteFirstDay.getFullYear().toString().pad(4));fscAppendAttribute(O00O00, "month", dteFirstDay.getMonth().toString().pad(2));fscAppendAttribute(O00O00, "day", dteFirstDay.getDate().toString().pad(2));O00O00 = O0OOOOO(objCalXml.documentElement, "currentdate", O0O0O.toString() );fscAppendAttribute(O00O00, "year", O0O0O.getFullYear().toString().pad(4));fscAppendAttribute(O00O00, "month", O0O0O.getMonth().toString().pad(2));fscAppendAttribute(O00O00, "day", O0O0O.getDate().toString().pad(2));objNodeSelectors = O0OOOOO(objCalXml.documentElement, "selectors", "");O000O="";if (this.dateSelector&4) O000O=this.prevHtml;O00O00 = O0OOOOO(objNodeSelectors, "selector", O000O);fscAppendAttribute(O00O00, "uniqueid", "prev");fscAppendAttribute(O00O00, "onclick", "fscChangeDate(new Date(" + dteFirstDay.add("m", -2).format("yy, mm, dd", false) + "));" );fscAppendAttribute(O00O00, "onmouseover", "this.style.cursor='hand';" );i=1;if (this.displayWeekNumber) i=2;fscAppendAttribute(O00O00, "colspan", i);O000O="&#160;";if (this.dateSelector&1) O000O = "<select id=\"cboMonth\" name=\"cboMonth\" onChange=\"fscChangeDate(new Date(" + y + ", this.value, 1));\" class=\"scMonthDropdown\">" + this.monthOptions(m) + "</select>" + O000O;if (this.dateSelector&16) O000O += this.longMonths[m] + " ";if (this.dateSelector&2) O000O += "<select id=\"cboYear\" name=\"cboYear\" onChange=\"fscChangeDate(new Date(this.value, " + m + ", 1));\" class=\"scYearDropdown\">" + this.yearOptions(y) + "</select>";if (this.dateSelector&32) O000O += y;O00O00 = O0OOOOO(objNodeSelectors, "selector", O000O );fscAppendAttribute(O00O00, "uniqueid", "date");fscAppendAttribute(O00O00, "colspan", "5");O000O="";if (this.dateSelector&8) O000O=this.nextHtml;O00O00 = O0OOOOO(objNodeSelectors, "selector", O000O);fscAppendAttribute(O00O00, "uniqueid", "next");fscAppendAttribute(O00O00, "onclick", "fscChangeDate(new Date(" + dteFirstDay.format("yy, mm, dd", false) + "));" );fscAppendAttribute(O00O00, "onmouseover", "this.style.cursor='hand';" );fscAppendAttribute(O00O00, "colspan", "1");O0O000 = O0OOOOO(objCalXml.documentElement, "weekdayheaders", "");if (this.displayWeekNumber) {O00O00 = O0OOOOO(O0O000, "weekdayheader", "");};for (i=0;i<7;i++) {O00O00 = O0OOOOO(O0O000, "weekdayheader", this.longDays[i] );};O00OO0 = O0OOOOO(objCalXml.documentElement, "weeks", "");for (O00OO=0;O00OO<6 && O0OO0.format("yymm", false)==dteDisplay.format("yymm", false);O00OO++) {O00O0O = O0OOOOO(O00OO0, "week", "");fscAppendAttribute(O00O0O, "index", O00OO+1);fscAppendAttribute(O00O0O, "fulldate", O0OO0);fscAppendAttribute(O00O0O, "year", O0OO0.getFullYear() );fscAppendAttribute(O00O0O, "month", O0OO0.getMonth() );fscAppendAttribute(O00O0O, "date", O0OO0.getDate() );fscAppendAttribute(O00O0O, "adjusteddate", O0O0OO );fscAppendAttribute(O00O0O, "weekofmonth", O0OO0.weekOfMonth() );fscAppendAttribute(O00O0O, "weekofyear", O0OO0.weekOfYear() );O00OOO = O0OOOOO(O00O0O, "weekdays", "");for (lngCol=0;lngCol<7;lngCol++) {blnDead = true;if ( O0OO0.format("yymm", false)==dteDisplay.format("yymm", false) ) blnDead=false;strDate = O0OO0.getFullYear() + ", " + O0OO0.getMonth() + ", " + O0OO0.getDate();O00O0Oday = O0OOOOO(O00OOO, "weekday", "");fscAppendAttribute(O00O0Oday, "index", (O00OO*7)+(lngCol+1));fscAppendAttribute(O00O0Oday, "fulldate", O0OO0);fscAppendAttribute(O00O0Oday, "year", O0OO0.getFullYear() );fscAppendAttribute(O00O0Oday, "month", O0OO0.getMonth() );fscAppendAttribute(O00O0Oday, "date", O0OO0.getDate() );fscAppendAttribute(O00O0Oday, "adjusteddate", O0O0OO );fscAppendAttribute(O00O0Oday, "dayofyear", O0OO0.dayOfYear() );fscAppendAttribute(O00O0Oday, "weekofyear", O0OO0.weekOfYear() );fscAppendAttribute(O00O0Oday, "weekofmonth", O0OO0.weekOfMonth() );fscAppendAttribute(O00O0Oday, "padding", this.padding );fscAppendAttribute(O00O0Oday, "width", this.cellWidth );fscAppendAttribute(O00O0Oday, "height", this.cellHeight );fscAppendAttribute(O00O0Oday, "dead", blnDead );if (this.enableHandlers) {fscAppendAttribute(O00O0Oday, "onmousedown", "fscCellOnMouseDown(event, this," + strDate + ")" );fscAppendAttribute(O00O0Oday, "onmouseover", "fscCellOnMouseOver(event, this," + strDate + ")" );fscAppendAttribute(O00O0Oday, "onmouseout", "fscCellOnMouseOut(event, this," + strDate + ")" );fscAppendAttribute(O00O0Oday, "onmouseup", "fscCellOnMouseUp(event, this," + strDate + ")" );};O0000 = "scDatePast";if ( O0OO0 > O0O0O ) O0000 = "scDateFuture";if ( O0OO0.getMonth() != dteFirstDay.getMonth() || O0OO0.getFullYear() != dteFirstDay.getFullYear() ) O0000 = "scDateDead";if ( O0OO0.equalsTo(O0O0O) && ( O0OO0.getMonth() == dteFirstDay.getMonth() && O0OO0.getFullYear() == dteFirstDay.getFullYear() )) O0000 = "scDateCurrent";if (blnDead && !(this.deadCellType&1)) {objNodeNumber = false;} else {objNodeNumber = O0OOOOO(O00O0Oday, "number", O0OO0.getDate()); if (this.enableHandlers) { fscAppendAttribute(objNodeNumber, "onmousedown", "fscNumberMouseDown(event, this," + strDate + ")" ); fscAppendAttribute(objNodeNumber, "onmouseover", "fscNumberMouseOver(event, this," + strDate + ")" ); fscAppendAttribute(objNodeNumber, "onmouseout", "fscNumberMouseOut(event, this," + strDate + ")" ); fscAppendAttribute(objNodeNumber, "onmouseup", "fscNumberMouseUp(event, this," + strDate + ")" ); };};O0OOO = this.addSpecialEvents(O0OO0, O0OOO);blnHasRegularEvent = false;strFirstCls = "";O0OOO0 = "";for (i=0;i<O0OOO.length;i++) {O000 = O0OOO[i];O0OOOO = this.showEvent(O0OO0, dteDisplay, O0O0O, O000, blnHasRegularEvent);if (O0OOOO) {if (O000.isRegular) blnHasRegularEvent = true;if (strFirstCls=="") {strFirstCls=" ";if (O000.style) strFirstCls = O000.style;};if (O000.style) O0OOO0 = O000.style;};if (O0OOOO) this.addEventXml(O000, O00O0Oday);};if (this.expandEventStyle) {if (objNodeNumber) fscAppendAttribute(objNodeNumber, "class", "scNumber " + strFirstCls);fscAppendAttribute(O00O0Oday, "class", "scWeekday " + O0000 + " " + O0OOO0);} else {if (objNodeNumber) fscAppendAttribute(objNodeNumber, "class", "scNumber");fscAppendAttribute(O00O0Oday, "class", "scWeekday " + O0000);};O0OO0.setDate( O0OO0.getDate() + 1 );O0O0OO++;};};return objCalXml;};scriptcalendar.prototype.getCalendarHtmlString = function(dteDisplay) {var O0OOO;var O000;var O0OO0;var O0O0O;var dteFirstDay;var blnHasRegularEvent;var O00OO;var lngCol;var O0O0OO;var blnDead;var blnHasNumber;var O00O0;var O0OOOO;var strDate;var O000O;var strFirstCls;var O0OOO0;var strDateCls;var strRow;var strCell;var strStyle;var intDow;var i;var j;var m;var y;var startTime = new Date();m = dteDisplay.getMonth();y = dteDisplay.getFullYear();if (y<this.dateRangeStart) {m=0;y=this.dateRangeStart;};if (y>this.dateRangeEnd) {m=11;y=this.dateRangeEnd;};dteDisplay = new Date(y, m, dteDisplay.getDate());O0OO0 = new Date(y, m, 1);dteFirstDay = new Date(y, m, 1);O0O0O = new Date();O0O0O = new Date( O0O0O.getFullYear(), O0O0O.getMonth(), O0O0O.getDate());O0OO0.setDate(O0OO0.getDate() + this.monthStartDate[m] -1);O0OO0.setDate( O0OO0.getDate() - this.getWeekday(O0OO0) );if ( O0OO0.getDate() == 2 ) O0OO0.setDate( O0OO0.getDate() - 7 );O0O0OO = 1 - this.getWeekday(O0OO0);O0OOO = this.getPartialEventArray(dteDisplay);O00O0 = "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td><div id=\"divScriptcalendarContainer\" class=\"scCalendar\">";var temp = (parseInt(this.cellWidth) + parseInt(this.spacing)) * 7;O00O0 += String.format("<table border=\"0\" cellpadding=\"{0}\" cellspacing=\"{1}\" width=\"{2}\">", this.padding, this.spacing, temp);O00O0 += "<tr>";if (this.displayWeekNumber) {O00O0 += "<th><div class=\"scHeader\" ><span class=\"scSelector\">&nbsp;</span></div></th>";};temp = dteFirstDay.add("m", -2).format("yy, mm, dd", false);O00O0 += String.format("<th align=\"center\" valign=\"middle\"><div class=\"scHeader\" onclick=\" fscChangeDate(new Date({0}));\" onmouseover=\"this.style.cursor='hand';\">", temp);temp = "";if (this.dateSelector&4) temp = this.prevHtml;O00O0 += String.format("<span class=\"scSelector\">{0}</span></div></th>", temp);O00O0 += "<th colspan=\"5\" align=\"center\" valign=\"bottom\" ><div class=\"scHeader\">";if (this.dateSelector&1) {O00O0 += String.format("<select id=\"cboMonth\" name=\"cboMonth\" onChange=\"fscChangeDate(new Date({0}, this.value, 1));\" class=\"scMonthDropdown\">{1}</select>", y, this.monthOptions(m));};if (this.dateSelector&16) {O00O0 += this.longMonths[m];O00O0 += " ";};if (this.dateSelector&2) {O00O0 += String.format("<select id=\"cboYear\" name=\"cboYear\" onChange=\"fscChangeDate(new Date(this.value, {0}, 1));\" class=\"scYearDropdown\">{1}</select>", m, this.yearOptions(y));};if (this.dateSelector&32) {O00O0 += y;};O00O0 += "</div></th>";temp = dteFirstDay.format("yy, mm, dd", false);O00O0 += String.format("<th align=\"center\" valign=\"middle\"><div class=\"scHeader\" onclick=\" fscChangeDate(new Date({0}));\" onmouseover=\"this.style.cursor='hand';\">", temp);temp = "";if (this.dateSelector&4) temp = this.nextHtml;O00O0 += String.format("<span class=\"scSelector\">{0}</span></div></th></tr>", temp);O00O0 += "<tr>";if (this.displayWeekNumber) {O00O0 += "<th align=\"center\" valign=\"middle\" ><div class=\"scHeader\">&nbsp;</div></th>";};for (j=0;j<this.longDays.length;j++) {O00O0 += String.format("<th align=\"center\" valign=\"middle\" ><div class=\"scHeader\">{0}</div></th>", this.longDays[j]);};O00O0 += "</tr>";for (O00OO=0;O00OO<6 && O0OO0.format("yymm", false) <= dteDisplay.format("yymm", false);O00OO++) {O00O0 += "<tr>";if (this.displayWeekNumber) {O00O0 += String.format("<td align=\"center\" valign=\"middle\"><div class=\"scHeader scWeekNumber\">{0}</div></td>", O0OO0.weekOfYear());};for (lngCol=0;lngCol<7;lngCol++) {blnDead = true;if ( O0OO0.format("yymm", false)==dteDisplay.format("yymm", false) ) blnDead=false;strDate = O0OO0.getFullYear() + ", " + O0OO0.getMonth() + ", " + O0OO0.getDate();strDateCls = "scDatePast";if ( O0OO0 > O0O0O ) strDateCls = "scDateFuture";if ( O0OO0.getMonth() != dteFirstDay.getMonth() || O0OO0.getFullYear() != dteFirstDay.getFullYear() ) strDateCls = "scDateDead";if ( O0OO0.equalsTo(O0O0O) && ( O0OO0.getMonth() == dteFirstDay.getMonth() && O0OO0.getFullYear() == dteFirstDay.getFullYear() )) strDateCls = "scDateCurrent";strNumberCls = "scNumberPast";if ( O0OO0 > O0O0O ) strNumberCls = "scNumberFuture";if ( O0OO0.getMonth() != dteFirstDay.getMonth() || O0OO0.getFullYear() != dteFirstDay.getFullYear() ) strNumberCls = "scNumberDead";if ( O0OO0.equalsTo(O0O0O) && ( O0OO0.getMonth() == dteFirstDay.getMonth() && O0OO0.getFullYear() == dteFirstDay.getFullYear() )) strNumberCls = "scNumberCurrent";if (this.expandCellHeight) {if (IE) {strStyle = " width:" + this.cellWidth + "px;height:" + this.cellHeight + "px;overflow: visible;";} else {strStyle = " width:" + this.cellWidth + "px;min-height:" + this.cellHeight + "px;overflow: visible;";};} else {strStyle = " width:" + this.cellWidth + "px;height:" + this.cellHeight + "px;overflow: hidden;";};strCell = "<td valign=\"top\" class=\"" + strDateCls + "\" style=\"" + strStyle + "\" >";if (this.expandCellHeight && IE) {strStyle = "height: 100%;";};strCell += "<div class=\"*weekdaycls*\" style=\"" + strStyle + "\"";if (this.enableHandlers) {strCell += String.format(" onmousedown=\"fscCellOnMouseDown(event, this, {0})\" onmouseover=\"fscCellOnMouseOver(event, this, {0})\" onmouseout=\"fscCellOnMouseOut(event, this, {0})\" onmouseup=\"fscCellOnMouseUp(event, this, {0})\" ", strDate, strDate, strDate, strDate);};strCell += " >";if (blnDead && !(this.deadCellType&1)) {blnHasNumber = false;} else {blnHasNumber = true;strCell += "<div class=\"*numbercls*\"";if (this.enableHandlers) {strCell += String.format(" onmousedown=\"fscNumberOnMouseDown(event, this, {0})\" onmouseover=\"fscNumberOnMouseOver(event, this, {0})\" onmouseout=\"fscNumberOnMouseOut(event, this, {0})\" onmouseup=\"fscNumberOnMouseUp(event, this, {0})\" ", strDate, strDate, strDate, strDate);};strCell += " >" + O0OO0.getDate() + "</div>";};O0OOO = this.addSpecialEvents(O0OO0, O0OOO);blnHasRegularEvent = false;strFirstCls = "";O0OOO0 = "";for (i=0;i<O0OOO.length;i++) {O000 = O0OOO[i];O0OOOO = this.showEvent(O0OO0, dteDisplay, O0O0O, O000, blnHasRegularEvent);if (O0OOOO) {if (O000.isRegular) blnHasRegularEvent = true;if (O000.style && strFirstCls.length==0) strFirstCls = O000.style;if (O000.style) O0OOO0 = O000.style;};if (O0OOOO) strCell += this.addEventHtmlString(O000);};intDow = this.getWeekday(O0OO0);strDateCls += " scWeekday" + intDow;strNumberCls += " scNumber" + intDow;if (this.expandEventStyle) {if (blnHasNumber) strCell = strCell.replace("*numbercls*", "scNumber " + strNumberCls + " " + strFirstCls);strCell = strCell.replace("*weekdaycls*", "scWeekday " + strDateCls + " " + O0OOO0);} else {if (blnHasNumber) strCell = strCell.replace("*numbercls*", "scNumber " + strNumberCls);strCell = strCell.replace("*weekdaycls*", "scWeekday " + strDateCls);};strCell += "</div></td>";O0OO0 = O0OO0.add("d", 1);O0O0OO++;O00O0 += strCell;};O00O0 += "</tr>";};O00O0 += "</table></div></td></tr></table>";if (this.displayTimer) {var endTime = new Date();temp = new Date();temp.setTime(Math.abs(endTime.getTime() - startTime.getTime()));temp = temp.getTime();fscOutput("start: " + startTime + "\r\nend: " + endTime + "\r\ndiff: " + temp);};if (this.displayHtml) {fscOutput(O00O0);};return O00O0;};scriptcalendar.prototype.showEvent = function(O0OO0, dteDisplay, O0O0O, O000, blnHasRegularEvent) {var O0OOOO = false;var OO00OOb = 4;var OO00OOc = 3;var OO00OOd = 2;if ( O0OO0.equalsTo(O000.date) && O0OO0.format("yymm", false)==dteDisplay.format("yymm", false) ) O0OOOO = true;if ( O0OO0.equalsTo(O000.date) && O000.day!=O0OO0.getDate() ) O0OOOO = true;if ( O0OO0.equalsTo(O000.date) && this.deadCellType&4 ) O0OOOO = true;if (!(this.showPastEvents) && O0OO0 < O0O0O ) O0OOOO=false;if (!(this.showFutureEvents) && O0OO0 > O0O0O ) O0OOOO=false;if (this.overrideSpecialEvent && blnHasRegularEvent && O000.isRegular==false) O0OOOO=false;if (this.filterNames.length > 0 && O000.filter) {if (this.filter.indexOf(O000.filter)==-1) {O0OOOO=false;};};if (!(OO00OO) && O0OO0.getDate() > (OO00OOc * OO00OOd + OO00OOb) ) O0OOOO=false;return O0OOOO;};scriptcalendar.prototype.addEventXml = function(O000, objParent, strLastClass) {var objNode;objNode = O0OOOOO(objParent, "event");O0OOOOO(objNode, "month", O000.month);O0OOOOO(objNode, "day", O000.day);O0OOOOO(objNode, "year", O000.year);O0OOOOO(objNode, "text", O000.text);if (O000.popuplink) O0OOOOO(objNode, "popuplink", O000.popuplink);if (O000.tooltip && this.tooltipType==1) O0OOOOO(objNode, "tooltip", O000.tooltip);if (O000.script) O0OOOOO(objNode, "script", O000.script);var strEventClass = "scevent";if (O000.style) strEventClass += " " + O000.style;fscAppendAttribute(objNode, "class", strEventClass);if (this.enableHandlers || this.tooltipType==2) {strDate = O000.year + "," + O000.month + "," + O000.day;var strTooltip = "";if (O000.tooltip!=null) strTooltip=O000.tooltip;if (this.tooltipUseEventText && O000.text!=null && strTooltip.length==0) {strTooltip = O000.text;};var strCode = "";if (this.enableHandlers) strCode+="fscEventOnMouseDown(event,this," + strDate + ");";if (strCode.length!=0) fscAppendAttribute(objNode, "onmousedown", strCode);strCode = "";if (this.enableHandlers) strCode+="fscEventOnMouseOver(event,this," + strDate + ");";if (this.tooltipType==2 && strTooltip.length!=0) strCode+="fscTooltipOver(event,this," + strDate + ",&quot;" + strTooltip + "&quot;);";if (strCode.length!=0) fscAppendAttribute(objNode, "onmouseover", strCode);strCode = "";if (this.enableHandlers) strCode+="fscEventOnMouseOut(event, this," + strDate + ");";if (this.tooltipType==2 && strTooltip.length!=0) strCode+="fscTooltipOut(event,this," + strDate + ",&quot;" + strTooltip + "&quot;);";if (strCode.length!=0) fscAppendAttribute(objNode, "onmouseout", strCode);strCode = "";if (this.enableHandlers) strCode+="fscEventOnMouseUp(event, this," + strDate + ");";if (strCode.length!=0) fscAppendAttribute(objNode, "onmouseup", strCode);}; return objNode;};scriptcalendar.prototype.addEventHtmlString = function(O000) {var q = String.fromCharCode(34);var strResult = "<div";if (O000.script) {strResult += " onclick=\"" + O000.script + "\"";};if (O000.tooltip && this.tooltipType==1) {strResult += " title=\"" + O000.tooltip + "\"";};var strEventClass = "scevent";if (O000.style) strEventClass += " " + O000.style;strResult += " class=\"" + strEventClass + "\"";if (this.enableHandlers || this.tooltipType==2) {strDate = O000.year + "," + O000.month + "," + O000.day;var strTooltip = "";if (O000.tooltip!=null) strTooltip=O000.tooltip;if (this.tooltipUseEventText && O000.text!=null && strTooltip.length==0) {strTooltip = O000.text;};if (this.enableHandlers) strResult += " onmousedown=" + q + "fscEventOnMouseDown(event,this," + strDate + ");" + q;var strCode = "";if (this.enableHandlers) strCode = "fscEventOnMouseOver(event,this," + strDate + ");";if (this.tooltipType==2 && strTooltip.length!=0) strCode += "fscTooltipOver(event,this," + strDate + ",&quot;" + strTooltip + "&quot;);";if (strCode.length!=0) strResult += " onmouseover=" + q + "fscEventOnMouseOver(event,this," + strDate + ");" + strCode + q;strCode = "";if (this.enableHandlers) strCode = "fscEventOnMouseOut(event,this," + strDate + ");";if (this.tooltipType==2 && strTooltip.length!=0) strCode += "fscTooltipOut(event,this," + strDate + ",&quot;" + strTooltip + "&quot;);";if (strCode.length!=0) strResult += " onmouseout=" + q + "fscEventOnMouseOut(event,this," + strDate + ");" + strCode + q;if (this.enableHandlers) strResult += " onmouseup=" + q + "fscEventOnMouseDown(event,this," + strDate + ");" + q;}; var O00O0 = O000.text;if (O000.popuplink) O00O0 = "<a href=\"javascript:fscPopup('" + O000.popuplink + "', '" + O000.date.format("yy, mm, dd", false) + "');\">" + O00O0 + "</a>";strResult += " >" + O00O0 + "</div>";return strResult;};scriptcalendar.prototype.monthOptions = function(intMonth) {var strSelected;var O00O0 = "";for ( var i=0;i<=11;i++ ) {strSelected = "";if ( i==intMonth ) strSelected = "selected=\"true\"";O00O0 += "<option value=\"" + (i) + "\" " + strSelected + " >" + this.longMonths[i] + "</option>";};return O00O0;};scriptcalendar.prototype.yearOptions = function(intYear) {var strSelected;var O00O0 = "";for ( var i=this.dateRangeStart;i<=this.dateRangeEnd;i++ ) {strSelected = "";if ( i==intYear ) strSelected = "selected=\"true\"";O00O0 += "<option value=\"" + i + "\" " + strSelected + " >" + i + "</option>";};return O00O0;};scriptcalendar.prototype.addSpecialEvents = function(O0OO0, O0OOO) {arrSpecial = scSpecialEvent(O0OO0);if (arrSpecial) {if (this.specialEventsFirst) {return arrSpecial.concat(O0OOO);} else {return O0OOO.concat(arrSpecial);};};return O0OOO;};scriptcalendar.prototype.getPartialEventArray = function(dteParam) {var arrTemp = new Array();var O000;var O0OOOO;var i;var year;var month;var O0O00;var m = dteParam.getMonth();var y = dteParam.getFullYear();var strEventDate;var blnIsDate;var dteFirst = new Date(y, m, 1);var strFirstYM = dteFirst.format("yymm", false);var strPrevYM = dteFirst.add("m", -1).format("yymm", false);var strNextYM = dteFirst.add("m", 1).format("yymm", false);var strEventYM;if (O0OO) {for (i=0;i<O0OO.length;i++) {O000 = O0OO[i];year = y;if (O000.year) year = O000.year;month = m;if (O000.month) month = O000.month-1;strEventDate = fscDateString(year, month+1, O000.day, false);blnIsDate = strEventDate.isDate();O0O00 = new Date( year, month, 1);O0O00 = O0O00.add( "d", O000.day-1 );strEventYM = O0O00.format("yymm", false);O0OOOO = false;if ( blnIsDate && strFirstYM == strEventYM ) O0OOOO=true;if ( !blnIsDate && this.deadCellType&2 ) {if ( strEventYM == strPrevYM && O0O00.getDate()>=22 ) O0OOOO=true;if ( strEventYM == strNextYM && O0O00.getDate()<=6 ) O0OOOO=true;};if ( blnIsDate && this.deadCellType&4 ) {if ( strEventYM == strPrevYM && O0O00.getDate()>=22 ) O0OOOO=true;if ( strEventYM == strNextYM && O0O00.getDate()<=6 ) O0OOOO=true;};if (O0OOOO) {O000.year = O0O00.getFullYear();O000.month = O0O00.getMonth();O000.date = O0O00;arrTemp[arrTemp.length] = O000;};};return arrTemp;};return false;};scriptcalendar.prototype.xmlToArray = function(objEvtDoc) {var i, j;var objNode;var objNodeChild;var O000;var strMonth, strDay, strYear, strText, strPopupLink, strStyle, strTooltip, strScript, strFilter;for (i=0;i<objEvtDoc.documentElement.childNodes.length;i++) {strMonth = "";strDay = "";strYear = "";strText = "";strPopupLink = "";strStyle = "";strTooltip = "";strFilter = "";objNode = objEvtDoc.documentElement.childNodes[i];if (objNode.nodeName=="event") {for (j=0;j<objNode.childNodes.length;j++) {objNodeChild = objNode.childNodes[j];if (objNodeChild.nodeName=="month") strMonth = parseInt(fscGetNodeText(objNodeChild),10);if (objNodeChild.nodeName=="day") strDay = parseInt(fscGetNodeText(objNodeChild),10);if (objNodeChild.nodeName=="year") strYear = parseInt(fscGetNodeText(objNodeChild),10);if (objNodeChild.nodeName=="text") strText = fscGetNodeText(objNodeChild);if (objNodeChild.nodeName=="popuplink") strPopupLink = fscGetNodeText(objNodeChild);if (objNodeChild.nodeName=="style") strStyle = fscGetNodeText(objNodeChild);if (objNodeChild.nodeName=="tooltip") strTooltip = fscGetNodeText(objNodeChild);if (objNodeChild.nodeName=="script") strScript = fscGetNodeText(objNodeChild);if (objNodeChild.nodeName=="filter") strFilter = fscGetNodeText(objNodeChild);};O000 = new EventObj(parseInt(strMonth), parseInt(strDay), parseInt(strYear), strText, strPopupLink, strStyle, strTooltip, strScript, strFilter);O0OO[O0OO.length] = O000;};};};scriptcalendar.prototype.getWeekday = function(dteParam) {var d = dteParam.getDay();if (this.beginMonday) d--;if (d==-1) d=6;return d;};function fscChangeDate(O0OO0) {var O0OO0O = window.location.toString();var strDate = (O0OO0.getMonth()+1).toString() + "/1/" + O0OO0.getFullYear().toString();O0OO0O = fscRemoveQueryStrParam(O0OO0O, mstrQueryStrParam);O0OO0O = fscAddQueryStrParam(O0OO0O, mstrQueryStrParam, strDate);window.location = O0OO0O;};scriptcalendar.prototype.createPopup = function() {var objElmPopup;var objElmIFrame;objElmPopup = O0OOOOO(document.body, "div", "");fscAppendAttribute(objElmPopup, "id", "scDivPopup");fscAppendAttribute(objElmPopup, "name", "scDivPopup");fscAppendAttribute(objElmPopup, "class", "scPopupContainer");objElmPopup.onclick = fscHidePopup;objElmSpan = O0OOOOO(objElmPopup, "span", "");objElmSpan.innerHTML = "&nbsp;&#x00d7;&nbsp;<br/>";objElmIFrame = O0OOOOO(objElmPopup, "iframe", "");fscAppendAttribute(objElmIFrame, "id", "scIfmPopup");fscAppendAttribute(objElmIFrame, "name", "scIfmPopup");fscAppendAttribute(objElmIFrame, "class", "scPopupIFrame");fscAppendAttribute(objElmIFrame, "border", "0");fscAppendAttribute(objElmIFrame, "scrolling", "yes");fscAppendAttribute(objElmIFrame, "height", "100%");fscAppendAttribute(objElmIFrame, "width", "100%");};function fscHidePopup() {objDiv = document.getElementById("scDivPopup");objDiv.style.display = "none";};function fscPopup(O0OO0O, strDate) {if (mblnPopupAddParam) O0OO0O = fscAddQueryStrParam(O0OO0O, mstrQueryStrParam, strDate);if (mlngPopupType==2) {var objPopup = O0OO000("scIfmPopup");objPopup.src = O0OO0O;objPopup = O0OO000("scDivPopup");objPopup.style.display="block";} else if (mlngPopupType==3) {window.top.location = O0OO0O;} else {var objWindow = window.open(O0OO0O, "_blank", mstrPopupProp);};};scriptcalendar.prototype.createFilter = function() {var objElmContainer;var objElmSpan;var objElmCheckbox;var arrNames = this.filterNames.split(",");var O00O0;var strChecked;objElmContainer = O0OOOOO(document.body, "div", "");fscAppendAttribute(objElmContainer, "class", "scFilterContainer");for (i=0;i<arrNames.length;i++) {objElmSpan = O0OOOOO(objElmContainer, "span", "");fscAppendAttribute(objElmSpan, "class", "scFilterItem");strChecked="checked=\"checked\"";if (this.filter.indexOf(arrNames[i]) == -1) strChecked="";O00O0 = "<input type=\"checkbox\" name=\"chkScFilter\" id=\"chkScFilter" + (i+1) +"\" onClick=\"chkScFilter_onClick(this);\" value=\"" + arrNames[i] + "\" " + strChecked + ">";O00O0 += arrNames[i];objElmSpan.innerHTML = O00O0;};};function chkScFilter_onClick(chk) {var arrNames = O00.filterNames.split(",");var O0OO0O = window.location.toString();var strValue = "";var objCheck;var i;for (i=0;i<arrNames.length;i++) {objCheck = document.getElementById("chkScFilter" + (i+1));if (objCheck) {if (objCheck.checked) strValue += objCheck.value + ",";};};if (strValue.length > 0) strValue = strValue.substring(0, strValue.length-1);O0OO0O = fscRemoveQueryStrParam(O0OO0O, "scFilter");O0OO0O = fscAddQueryStrParam(O0OO0O, "scFilter", strValue);window.location = O0OO0O;};function EventObj(m, d, y, strText, strPopuplink, strStyle, strTooltip, strScript, strFilter) {var O0O00;this.day = 0;if (m) this.month = m;if (d) this.day = d;if (y) this.year = y;if (strText) this.text = strText;if (strPopuplink) this.popuplink = strPopuplink;if (strStyle) this.style = strStyle;if (strTooltip) this.tooltip = strTooltip;if (strScript) this.script = strScript;if (strFilter) this.filter = strFilter;this.isRegular = false;if (m && y) {O0O00 = new Date( y, m-1, 1);O0O00 = O0O00.add("d", d-1);this.date = O0O00;};};function fscEvent(m, d, y, strText, strPopuplink, strStyle, strTooltip, strScript, strFilter) {var O000 = new EventObj(m, d, y, strText, strPopuplink, strStyle, strTooltip, strScript, strFilter);O000.isRegular = true;O0OO[O0OO.length] = O000;};function dcEvent(m, d, y, strText, strPopuplink, strStyle, strTooltip, strScript) {fscEvent(m, d, y, strText, strPopuplink, strStyle, strTooltip, strScript);};Date.SECOND = 1000;Date.MINUTE = 60 * Date.SECOND;Date.HOUR = 60 * Date.MINUTE;Date.DAY = 24 * Date.HOUR;Date.WEEK = 7 * Date.DAY;Date.prototype.getDaysPerMonth = function(month) {var arrDays = new Array(31,28,31,30,31,30,31,31,30,31,30,31);var year = this.getFullYear();if (typeof month == "undefined") month = this.getMonth();if (((0 == (year%4)) && ( (0 != (year%100)) || (0 == (year%400)))) && month == 1) return 29;return arrDays[month];};Date.prototype.weekOfYear = function() {var now = new Date(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0, 0);var then = new Date(this.getFullYear(), 0, 1, 0, 0, 0);var time = now - then;var day = then.getDay();(day > 3) && (day -= 4) || (day += 3);var result = Math.round(((time / Date.DAY) + day) / 7);return result;};Date.prototype.dayOfYear = function() {var now = new Date(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0, 0);var then = new Date(this.getFullYear(), 0, 0, 0, 0, 0);var time = now - then;return Math.floor(time / Date.DAY);};Date.prototype.weekOfMonth = function() {var now = new Date(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0, 0);var then = new Date(this.getFullYear(), this.getMonth(), 1, 0, 0, 0);var time = now - then;var result = (Math.floor(time / Date.WEEK + 0.01)) + 1;return result;};Date.prototype.equalsTo = function(dte) {return ((this.getFullYear() == dte.getFullYear()) && (this.getMonth() == dte.getMonth()) &&(this.getDate() == dte.getDate()));};Date.prototype.add = function(interval, num) {var result = new Date(this.getFullYear(), this.getMonth(), this.getDate());switch(interval.toLowerCase()){case "yyyy": {result.setFullYear(result.getFullYear() + num);break;};case "q": {result.setMonth(result.getMonth() + (num*3));break;};case "m": {result.setMonth(result.getMonth() + num);break;};case "y":case "d":case "w": {result.setDate(result.getDate() + num);break;};case "ww": {result.setDate(result.getDate() + (num*7));break;};case "h": {result.setHours(result.getHours() + num);break;};case "n": {result.setMinutes(result.getMinutes() + num);break;};case "s": {result.setSeconds(result.getSeconds() + num);break;};case "ms": {result.setMilliseconds(result.getMilliseconds() + num);break;};default: {return "invalid interval: '" + interval + "'";};};return result;};Date.prototype.format = function(symbols, useMilitary) {var yy = this.getFullYear().toString();var mm = (this.getMonth() + 1).toString().pad(2);var dd = this.getDate().toString().pad(2);symbols = symbols.replace("yy", yy);symbols = symbols.replace("mm", mm);symbols = symbols.replace("dd", dd);if (symbols.indexOf("hh")!=-1 || symbols.indexOf("nn")!=-1 || symbols.indexOf("ss")!=-1){var hours = this.getHours();if (hours>12 && useMilitary==false)hours = hours-12;var hh = hours.toString().pad(2);var nn = this.getMinutes().toString().pad(2);var ss = this.getSeconds().toString().pad(2);symbols = symbols.replace("hh", hh);symbols = symbols.replace("nn", nn);symbols = symbols.replace("ss", ss);}return symbols;};Date.prototype.getEaster = function() {var Y = this.getFullYear();var C = Math.floor(Y/100);var N = Y - 19*Math.floor(Y/19);var K = Math.floor((C - 17)/25);var I = C - Math.floor(C/4) - Math.floor((C - K)/3) + 19*N + 15;I = I - 30*Math.floor((I/30));I = I - Math.floor(I/28)*(1 - Math.floor(I/28)*Math.floor(29/(I + 1))*Math.floor((21 - N)/11));var J = Y + Math.floor(Y/4) + I + 2 - C + Math.floor(C/4);J = J - 7*Math.floor(J/7);var L = I - J;var M = 3 + Math.floor((L + 40)/44);var D = L + 28 - 31*Math.floor(M/4);return new Date(Y,M-1,D);};function fscEaster(Y) {if (fscIsDate(O0O0)) {if (O0O0.getFullYear==Y) {return O0O0;};};var O0O0O = new Date(Y, 1, 1);O0O0 = O0O0O.getEaster();return O0O0;};function fscDateString(y, m, d, blnYMD) {var strYear = y.toString().pad(4);var strMonth = m.toString().pad(2);var strDay = d.toString().pad(2);if (blnYMD) return strYear + strMonth + strDay;return strMonth + "/" + strDay + "/" + strYear;};function fscIsDate(m,d,y) {var dte = new Date(y,m,d);if ( (dte.getFullYear() == y) && (dte.getMonth() == m) && (dte.getDate() == d) ) return true;return false;};String.prototype.isDate = function() {var datePat = /^(\d{1,2})(\/|)(-?\d{1,2})(\/|)(\d{2,4})$/;var matchArray = this.match(datePat);var strReason = "";if (matchArray == null) strReason = "pattern match failed";var lngMonth = parseInt(matchArray[1], 10); var lngDay = parseInt(matchArray[3], 10);var lngYear = parseInt(matchArray[5], 10);if (strReason.length==0 && (lngMonth < 1 || lngMonth > 12) )strReason="invalid month";if (strReason.length==0 && (lngDay < 1 || lngDay > 31) ) strReason="invalid day";if (strReason.length==0 && ((lngMonth==4 || lngMonth==6 || lngMonth==9 || lngMonth==11) && lngDay==31)) strReason="31 days";if (strReason.length==0) {if (lngMonth == 2) {var isleap = (lngYear % 4 == 0 && (lngYear % 100 != 0 || lngYear % 400 == 0));if (lngDay > 29 || (lngDay==29 && !isleap)) strReason="leap year";};};if (strReason.length==0) return true;return false;};String.prototype.htmlEncode = function() {var O000O = this;O000O = O000O.replace("&lt;", "<");O000O = O000O.replace("&gt;", ">");O000O = O000O.replace("&amp;", "&");return O000O;};String.prototype.pad = function(n) {var strResult = "00000000000000000000" + this;return strResult.substring(strResult.length - n);};String.prototype.urlEncode = function() {var SAFECHARS = "0123456789";SAFECHARS += "ABCDEFGHIJKLMNOPQRSTUVWXYZ";SAFECHARS += "abcdefghijklmnopqrstuvwxyz";SAFECHARS += "-_.!~*'()";var HEX = "0123456789ABCDEF";var plaintext = this;var encoded = "";for (var i = 0;i < plaintext.length;i++ ) {var ch = plaintext.charAt(i); if (ch == " ") { encoded += "+";} else if (SAFECHARS.indexOf(ch) != -1) { encoded += ch;} else { var charCode = ch.charCodeAt(0);if (charCode > 255) { alert( "Unicode Character '" + ch + "' cannot be encoded using standard URL encoding.\n" + "(URL encoding only supports 8-bit characters.)\n" +"A space (+) will be substituted." );encoded += "+";} else {encoded += "%";encoded += HEX.charAt((charCode >> 4) & 0xF);encoded += HEX.charAt(charCode & 0xF);};};};return encoded;};String.prototype.urlDecode = function() {    var HEXCHARS = "0123456789ABCDEFabcdef"; var encoded = this; var plaintext = ""; var i = 0; while (i < encoded.length) { var ch = encoded.charAt(i); if (ch == "+") { plaintext += " "; i++; } else if (ch == "%") {if (i < (encoded.length-2) && HEXCHARS.indexOf(encoded.charAt(i+1)) != -1 && HEXCHARS.indexOf(encoded.charAt(i+2)) != -1 ) {plaintext += unescape( encoded.substr(i,3) );i += 3;} else {alert( 'Bad escape combination near ...' + encoded.substr(i) );plaintext += "%[ERROR]";i++;};} else { plaintext += ch; i++;};}; return plaintext;};String.prototype.stripHtml = function() {var pattern = "<[a-zA-Z\\/][^>]*>";var regex = eval("/(" + pattern + ")/g");return this.replace(regex, "");};String.format = function() {var replacements = arguments; return arguments[0].replace(/\{(\d+)\}/gm, function(string, match) {return replacements[parseInt(match) + 1];});};StringBuilder = function(stringToAdd){ var h = new Array(); if(stringToAdd){h[0] = stringToAdd;} this.append = Append; this.appendLine = AppendLine; this.appendFormat = AppendFormat; this.toString = ToString; this.clear = Clear; this.length = Length; this.replace = Replace; this.remove = Remove; this.insert = Insert; this.getType = GetType;    function Append(stringToAppend) { h[h.length] = stringToAppend; };    function AppendLine(stringToAppend) { h[h.length] = stringToAppend; h[h.length] = "\r\n"; };  function ToString() { if(!h){return "";} if(h.length<2){return (h[0])?h[0]:"";} var a = h.join(''); h = new Array(); h[0] = a; return a; };  function Clear() { h = new Array(); };  function Length() { if(!h){return 0;} if(h.length<2){return (h[0])?h[0].length:0;} var a = h.join(''); h = new Array(); h[0] = a; return a.length; };        function Replace(oldValue, newValue, caseSensitive) { var b = ReplaceThis(h.join(''), oldValue, newValue, caseSensitive); h = new Array(); h[0] = b; return this; };      function Remove(startIndex, length) { var s = h.join(''); h = new Array(); if(startIndex<1){h[0]=s.substring(length, s.length);} if(startIndex>s.length){h[0]=s;} else { h[0]=s.substring(0, startIndex); h[1]=s.substring(startIndex+length, s.length); }; return this; };       function Insert(index, value) { var s = h.join(''); h = new Array(); if(index<1){h[0]=value;h[1]=s;} if(index>=s.length){h[0]=s;h[1]=value;} else { h[0]=s.substring(0, index); h[1]=value; h[2]=s.substring(index, s.length); }; return this; };  function GetType() { return "StringBuilder"; };  function ReplaceThis(_WhatToCheck, _FindThis, _ReplaceWith, _CaseSense) { if(_WhatToCheck==undefined || _WhatToCheck==""){return "";} var r=new RegExp(_FindThis,(_CaseSense==true)?'g':'gi'); return _WhatToCheck.replace(r, _ReplaceWith); };  function AppendFormat(format, arg0) {var a = new Array; for (var i = 1;i < arguments.length;i++) { a = new Array; a.push("\\{"); a.push(i-1); a.push("\\}"); format = ReplaceThis(format, a.join(""), arguments[i], true) }; Append(format); };};function O0OOOOO(objParent, strName, strValue) {var objDoc = objParent.ownerDocument;if (!objDoc) objDoc = objParent;var objNode = objDoc.createElement(strName);if (strValue) {var objNodeText = objDoc.createTextNode(strValue);objNode.appendChild(objNodeText);}; objParent.appendChild(objNode);return objNode;};function fscAppendAttribute(objParent, strName, strValue) {var objDoc = objParent.ownerDocument;if (!objDoc) objDoc = objParent;var objNode = objDoc.createAttribute(strName);if (strValue) objNode.nodeValue = strValue;objParent.attributes.setNamedItem(objNode);};function fscImportXml( strFile, strFunction ) {if (window.ActiveXObject) {var objDoc = fscLoad(strFile);eval( strFunction + '(objDoc);' );return true;};if (document.implementation && document.implementation.createDocument) {var objDoc = fscLoad(strFile);eval( strFunction + '(objDoc);' );return true;};var hdnDiv = document.createElement('DIV');hdnDiv.style.visibility = 'hidden';hdnDiv.style.position = 'absolute';hdnDiv.style.top = '0px';hdnDiv.style.left = '0px';if( !window.fscXmlTimer ) {window.fscXmlTimer = window.setInterval('fscImportXmlCheck();',100);};hdnDiv.innerHTML = '<iframe src="' + strFile + '" name="fscXmlFrame" height="0" width="0"><\/iframe>';mfntImport = strFunction;document.body.appendChild(hdnDiv);return true;};function fscImportXmlCheck() {if( mfntImport && window.frames['fscXmlFrame'] ) {if (window.fscXmlTimer) window.clearInterval( window.fscXmlTimer );eval( mfntImport + '(window.frames.fscXmlFrame.window.document);' );};};function O0OOOO0() {if (window.ActiveXObject) {var objDoc = new ActiveXObject("Microsoft.XMLDOM");return objDoc;};if (document.implementation && document.implementation.createDocument) {var objDoc = document.implementation.createDocument( "", "", null );return objDoc;};alert("ERROR - O0OOOO0" + "\n" + "Browser can't create DOM object.");return false;};function fscLoad(O0OO0O) {if (window.ActiveXObject) {var objDoc = O0OOOO0();objDoc.async = false;objDoc.load(O0OO0O);return objDoc;};if (document.implementation && document.implementation.createDocument) {var xmlhttp = new window.XMLHttpRequest();xmlhttp.open("GET", O0OO0O, false);xmlhttp.send(null);return xmlhttp.responseXML;};if (document.implementation) {var pipe = new XMLHttpRequest();pipe.open("GET", O0OO0O, false);pipe.send(null);return pipe.responseXML;};return false;};function O0OOO0O(objXml, strXsltFile) {if (window.ActiveXObject) {var objXslt = new ActiveXObject("Microsoft.XMLDOM");objXslt.async = false;objXslt.load(strXsltFile);var strHTML = objXml.transformNode(objXslt);return strHTML;};if (document.implementation) {var processor = new XSLTProcessor();var objXslt = fscLoad(strXsltFile, true);processor.importStylesheet(objXslt);var node = processor.transformToDocument(objXml);var strHTML = fscSerializeXml(node);return strHTML;};alert("ERROR - fscGetNodeText");return "";};function fscSerializeXml(objDoc) {if (window.ActiveXObject) {return objDoc.xml;};if (document.implementation && document.implementation.createDocument) {var objSerializer = new XMLSerializer();return objSerializer.serializeToString(objDoc);};alert("ERROR - fscSerializeXml");return "";};function fscGetNodeText(objNode) {var objChild;for (var i=0;i<objNode.childNodes.length;i++) {objChild = objNode.childNodes[i];if (objChild.nodeName=='#text') {if (objChild.nodeValue.length != 0) {return objChild.nodeValue;};};};return null;};function fscRequestQueryString(strKey) {var O0OO0O = window.location.toString();var intPosition = O0OO0O.indexOf("?");if (intPosition == -1) return "";var strQueryStr = O0OO0O.substr(intPosition+1, O0OO0O.length-intPosition);intPosition = strQueryStr.indexOf("#");if (intPosition != -1) strQueryStr = strQueryStr.substr(0, intPosition);var arrKeyValue;var arrQueryStr = strQueryStr.split("&");for (i=0;i<arrQueryStr.length;i++) {arrKeyValue = arrQueryStr[i].split("=");if ( arrKeyValue[0].toLowerCase() == strKey.toLowerCase() ) { return arrKeyValue[1].urlDecode();};};return "";};function fscAddQueryStrParam(O0OO0O, strKey, strValue) {var strAnchor = "";var c = "?";var i;i = O0OO0O.indexOf("#");if (i != -1) {strAnchor = O0OO0O.substr(i, O0OO0O.length - i);O0OO0O = O0OO0O.substr(0,i);};i = O0OO0O.indexOf("?");if (i != -1) c="&";O0OO0O += c + strKey + "=" + strValue.urlEncode() + strAnchor;return O0OO0O;};function fscRemoveQueryStrParam(O0OO0O, strKey) {var strResult;var intStart;var intEnd;var strAnchor = "";intStart = O0OO0O.indexOf("#");if (intStart != -1){strAnchor = O0OO0O.substr(intStart, O0OO0O.length - intStart);O0OO0O = O0OO0O.substring(0, intStart);};intStart = O0OO0O.indexOf(strKey);if (intStart == -1) {strResult = O0OO0O;} else {intEnd = O0OO0O.indexOf("&", intStart);if (intEnd != -1) {strResult = O0OO0O.substring(0, intStart) + O0OO0O.substring(intEnd+1);} else {strResult = O0OO0O.substring(0, intStart-1);};};strResult += strAnchor;return strResult;};function O000O0() {var a = "abcdefghijklmnopqrstuvwxyz";var d;var i;var n;var c;var e;var t;var u = window.location.toString().toLowerCase();for (i=0;i<a.length;i++) {c = a.charAt(i);if (u.indexOf(c + ":")==0) return "1";};if (u.indexOf("localhost")!=-1) return "1";if (u.indexOf("file:/")!=-1) return "1";n = u.length;i = u.indexOf(":/" + "/") + 3;d = u.substring(i, n);i = d.indexOf("/");d = d.substring(0,i);n = d.length;i = d.lastIndexOf(".");e = d.substring(i, n);t = d.substring(0, i);n = t.length;i = t.lastIndexOf(".");d = t.substring(i+1, n);d += e;d = fscFilterDomain(d);return d;};function fscFilterDomain(strData) {var strBad = "!@#$%^&*()-_=+[{]}\|;:',<.>/?" + '"';var strResult = "";var c;for (var i=0;i<strData.length;i++) {c = strData.charAt(i);if (strBad.indexOf(c)==-1) strResult += c;};return strResult;};function O000OO(strCode) {var a = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmonpqrstuvwxyz1234567890";var k = "dateStylePast";var i;var j;var c;var O0O;var nKey;var r="";j = 0;for ( i=0;i<strCode.length;i++ ) {c = strCode.charAt(i);O0O = a.indexOf(c);c = k.charAt(j);nKey = a.indexOf(c);O0O = O0O - nKey;if ( O0O < 0 ) O0O = O0O + a.length;r = r + a.charAt(O0O);j++;if ( j >= k.length ) j=0;};return r;};function fscTooltipOver(e, obj, y, m, d, O00O0) {return overlib(O00O0, CSSCLASS, BGCLASS, 'scDivTooltipBackground', FGCLASS, 'scDivTooltipForeground', TEXTFONTCLASS, 'scDivTooltipFont');};function fscTooltipOut(e, obj, y, m, d) {return nd();};function O0OO000(strID) { if( document.getElementById ) return document.getElementById(strID); if( document.all ) return document.all[strID];if ( document.layers ) return document.layers[strID]; if( document[szID] ) return document[strID]; return false;};function fscOutput(text) {var obj;if (document.createElement && (obj = document.createElement('textarea'))) {fscAppendAttribute(obj, "rows", "5");fscAppendAttribute(obj, "cols", "80");obj.appendChild(document.createTextNode(text));document.body.appendChild(obj);};};function fscShowProperties(obj) {var i;var strOutput;var strTerm;var strData;var strSpace;var lngCols;var lngMaxLen = 100;lngCols=3;if (document.layers) lngCols=3;strSpace = " ";strOutput = obj.name + "\n\n";i=1;for (var prop in obj) {strTerm = "\n";if (i==lngCols) strTerm = "\n";i=i+1;if (i>lngCols) i=1;strData = "." + prop + " = " + obj[prop];if (strData.length<lngMaxLen) strData += strSpace.substring(0, lngMaxLen-strData.length);if (strData.length>lngMaxLen) strData = strData.substring(0, lngMaxLen);strOutput += strData + strTerm;};fscOutput(strOutput);return true;};
