//---------------------------------------------------------------------------
//
//  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
//---------------------------------------------------------------------------


var O0O0;var mfntImport;var OO00OO;var O00O = new Array();var O000;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 O00OO = new Date();this.license = new Array();this.xmlFile = false;this.xslFile = false;this.initialDate = O00OO;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.addOverLib= false;this.overLibConfig= "CSSCLASS, BGCLASS, 'OLBackground', FGCLASS, 'OLForeground', TEXTFONTCLASS, 'OLFont'";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" );O0O0 = this;};scriptcalendar.prototype.initialize = function() {var O0OOOO;var d;var objIFrame = parent.document.getElementById("scIFrame");if (objIFrame) {if (objIFrame.name.length != 0) {this.license = objIFrame.name.split(",");};};var O0OOOO = fscRequestQueryString("scLicense");if (O0OOOO.length != 0) {this.license = O0OOOO.split(",");};OO00OO = false;d = O00();for (var i=0;i<this.license.length;i++) {O0OOOO = O0O(this.license[i]);if (O0OOOO.length > d.length) {O0OOOO = O0OOOO.substring(O0OOOO.length-d.length);};if (O0OOOO==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, "O0O0.main");};};scriptcalendar.prototype.main = function(objEvtXml) {var O0000;var objXml;var O0O00 = this.initialDate;strDate = fscRequestQueryString(mstrQueryStrParam);if (strDate.length != 0) O0O00 = new Date(strDate);if (objEvtXml) this.xmlToArray(objEvtXml);if (!(this.xslFile)) {O0000 = this.getCalendarHtmlString(O0O00);} else {objXml = this.getCalendarXml(O0O00);O0000 = O0OOO0O(objXml, this.xslFile);O0000 = O0000.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 = O0000;if (this.popupType==2) {this.createPopup();};};scriptcalendar.prototype.getCalendarXml = function(dteDisplay) {var O0O0O;var O0OO0;var O0O00;var O00OO;var dteFirstDay;var O000O;var lngCol;var O0O00O;var blnHasRegularEvent;var O0OOO0;var O0OO0O;var strDate;var O0OOOO;var strFirstCls;var O0OO00;var blnDead;var i;var j;var m;var y;var objCalXml;var O0O000;var O00OOO;var objNodeSelectors;var O00OO0;var O00O00;var O000OO;var O00O0O;var O000OOday;var objNodeNumber;var O000O0;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());O0O00 = new Date(y, m, 1);dteFirstDay = new Date(y, m, 1);O00OO = new Date();O00OO = new Date( O00OO.getFullYear(), O00OO.getMonth(), O00OO.getDate());O0O00.setDate(O0O00.getDate() + this.monthStartDate[m] -1);O0O00.setDate( O0O00.getDate() - this.getWeekday(O0O00) );if ( O0O00.getDate() == 2 ) O0O00.setDate( O0O00.getDate() - 7 );O0O00O = 1 - this.getWeekday(O0O00);strDisplayYM = dteDisplay.format("yymm", false);strCalYM = O0O00.format("yymm", false);O0O0O = this.getPartialEventArray(dteDisplay);objCalXml = O0OOOO0();O000O0 = O0OOOOO(objCalXml, "calendar", "");fscAppendAttribute(O000O0, "border", "0");fscAppendAttribute(O000O0, "cellpadding", this.padding);fscAppendAttribute(O000O0, "cellspacing", this.spacing);fscAppendAttribute(O000O0, "columns", "7");O0O000 = O0OOOOO(objCalXml.documentElement, "properties", "");for (var prop in this) {fscAppendAttribute(O0O000, prop, this[prop]);};O000O0 = O0OOOOO(objCalXml.documentElement, "calendardate", dteFirstDay.toString() );fscAppendAttribute(O000O0, "year", dteFirstDay.getFullYear().toString().pad(4));fscAppendAttribute(O000O0, "month", dteFirstDay.getMonth().toString().pad(2));fscAppendAttribute(O000O0, "day", dteFirstDay.getDate().toString().pad(2));O000O0 = O0OOOOO(objCalXml.documentElement, "currentdate", O00OO.toString() );fscAppendAttribute(O000O0, "year", O00OO.getFullYear().toString().pad(4));fscAppendAttribute(O000O0, "month", O00OO.getMonth().toString().pad(2));fscAppendAttribute(O000O0, "day", O00OO.getDate().toString().pad(2));objNodeSelectors = O0OOOOO(objCalXml.documentElement, "selectors", "");O0OOOO="";if (this.dateSelector&4) O0OOOO=this.prevHtml;O000O0 = O0OOOOO(objNodeSelectors, "selector", O0OOOO);fscAppendAttribute(O000O0, "uniqueid", "prev");fscAppendAttribute(O000O0, "onclick", "fscChangeDate(new Date(" + dteFirstDay.add("m", -2).format("yy, mm, dd", false) + "));" );fscAppendAttribute(O000O0, "onmouseover", "this.style.cursor='hand';" );i=1;if (this.displayWeekNumber) i=2;fscAppendAttribute(O000O0, "colspan", i);O0OOOO="&#160;";if (this.dateSelector&1) O0OOOO = "<select id=\"cboMonth\" name=\"cboMonth\" onChange=\"fscChangeDate(new Date(" + y + ", this.value, 1));\" class=\"scMonthDropdown\">" + this.monthOptions(m) + "</select>" + O0OOOO;if (this.dateSelector&16) O0OOOO += this.longMonths[m] + " ";if (this.dateSelector&2) O0OOOO += "<select id=\"cboYear\" name=\"cboYear\" onChange=\"fscChangeDate(new Date(this.value, " + m + ", 1));\" class=\"scYearDropdown\">" + this.yearOptions(y) + "</select>";if (this.dateSelector&32) O0OOOO += y;O000O0 = O0OOOOO(objNodeSelectors, "selector", O0OOOO );fscAppendAttribute(O000O0, "uniqueid", "date");fscAppendAttribute(O000O0, "colspan", "5");O0OOOO="";if (this.dateSelector&8) O0OOOO=this.nextHtml;O000O0 = O0OOOOO(objNodeSelectors, "selector", O0OOOO);fscAppendAttribute(O000O0, "uniqueid", "next");fscAppendAttribute(O000O0, "onclick", "fscChangeDate(new Date(" + dteFirstDay.format("yy, mm, dd", false) + "));" );fscAppendAttribute(O000O0, "onmouseover", "this.style.cursor='hand';" );fscAppendAttribute(O000O0, "colspan", "1");O00OO0 = O0OOOOO(objCalXml.documentElement, "weekdayheaders", "");if (this.displayWeekNumber) {O000O0 = O0OOOOO(O00OO0, "weekdayheader", "");};for (i=0;i<7;i++) {O000O0 = O0OOOOO(O00OO0, "weekdayheader", this.longDays[i] );};O00O00 = O0OOOOO(objCalXml.documentElement, "weeks", "");for (O000O=0;O000O<6 && O0O00.format("yymm", false)==dteDisplay.format("yymm", false);O000O++) {O000OO = O0OOOOO(O00O00, "week", "");fscAppendAttribute(O000OO, "index", O000O+1);fscAppendAttribute(O000OO, "fulldate", O0O00);fscAppendAttribute(O000OO, "year", O0O00.getFullYear() );fscAppendAttribute(O000OO, "month", O0O00.getMonth() );fscAppendAttribute(O000OO, "date", O0O00.getDate() );fscAppendAttribute(O000OO, "adjusteddate", O0O00O );fscAppendAttribute(O000OO, "weekofmonth", O0O00.weekOfMonth() );fscAppendAttribute(O000OO, "weekofyear", O0O00.weekOfYear() );O00O0O = O0OOOOO(O000OO, "weekdays", "");for (lngCol=0;lngCol<7;lngCol++) {blnDead = true;if ( O0O00.format("yymm", false)==dteDisplay.format("yymm", false) ) blnDead=false;strDate = O0O00.getFullYear() + ", " + O0O00.getMonth() + ", " + O0O00.getDate();O000OOday = O0OOOOO(O00O0O, "weekday", "");fscAppendAttribute(O000OOday, "index", (O000O*7)+(lngCol+1));fscAppendAttribute(O000OOday, "fulldate", O0O00);fscAppendAttribute(O000OOday, "year", O0O00.getFullYear() );fscAppendAttribute(O000OOday, "month", O0O00.getMonth() );fscAppendAttribute(O000OOday, "date", O0O00.getDate() );fscAppendAttribute(O000OOday, "adjusteddate", O0O00O );fscAppendAttribute(O000OOday, "dayofyear", O0O00.dayOfYear() );fscAppendAttribute(O000OOday, "weekofyear", O0O00.weekOfYear() );fscAppendAttribute(O000OOday, "weekofmonth", O0O00.weekOfMonth() );fscAppendAttribute(O000OOday, "padding", this.padding );fscAppendAttribute(O000OOday, "width", this.cellWidth );fscAppendAttribute(O000OOday, "height", this.cellHeight );fscAppendAttribute(O000OOday, "dead", blnDead );if (this.enableHandlers) {fscAppendAttribute(O000OOday, "onmousedown", "fscCellOnMouseDown(event, this," + strDate + ")" );fscAppendAttribute(O000OOday, "onmouseover", "fscCellOnMouseOver(event, this," + strDate + ")" );fscAppendAttribute(O000OOday, "onmouseout", "fscCellOnMouseOut(event, this," + strDate + ")" );fscAppendAttribute(O000OOday, "onmouseup", "fscCellOnMouseUp(event, this," + strDate + ")" );};O0OOO0 = "scDatePast";if ( O0O00 > O00OO ) O0OOO0 = "scDateFuture";if ( O0O00.getMonth() != dteFirstDay.getMonth() || O0O00.getFullYear() != dteFirstDay.getFullYear() ) O0OOO0 = "scDateDead";if ( O0O00.equalsTo(O00OO) && ( O0O00.getMonth() == dteFirstDay.getMonth() && O0O00.getFullYear() == dteFirstDay.getFullYear() )) O0OOO0 = "scDateCurrent";if (blnDead && !(this.deadCellType&1)) {objNodeNumber = false;} else {objNodeNumber = O0OOOOO(O000OOday, "number", O0O00.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 + ")" ); };};O0O0O = this.addSpecialEvents(O0O00, O0O0O);blnHasRegularEvent = false;strFirstCls = "";O0OO00 = "";for (i=0;i<O0O0O.length;i++) {O0OO0 = O0O0O[i];O0OO0O = this.showEvent(O0O00, dteDisplay, O00OO, O0OO0, blnHasRegularEvent);if (O0OO0O) {if (O0OO0.isRegular) blnHasRegularEvent = true;if (strFirstCls=="") {strFirstCls=" ";if (O0OO0.style) strFirstCls = O0OO0.style;};if (O0OO0.style) O0OO00 = O0OO0.style;};if (O0OO0O) this.addEventXml(O0OO0, O000OOday);};if (this.expandEventStyle) {if (objNodeNumber) fscAppendAttribute(objNodeNumber, "class", "scNumber " + strFirstCls);fscAppendAttribute(O000OOday, "class", "scWeekday " + O0OOO0 + " " + O0OO00);} else {if (objNodeNumber) fscAppendAttribute(objNodeNumber, "class", "scNumber");fscAppendAttribute(O000OOday, "class", "scWeekday " + O0OOO0);};O0O00.setDate( O0O00.getDate() + 1 );O0O00O++;};};return objCalXml;};scriptcalendar.prototype.getCalendarHtmlString = function(dteDisplay) {var O0O0O;var O0OO0;var O0O00;var O00OO;var dteFirstDay;var blnHasRegularEvent;var O000O;var lngCol;var O0O00O;var blnDead;var blnHasNumber;var O0000;var O0OO0O;var strDate;var O0OOOO;var strFirstCls;var O0OO00;var strDateCls;var strRow;var strCell;var strStyle;var intDow;var i;var j;var m;var y;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());O0O00 = new Date(y, m, 1);dteFirstDay = new Date(y, m, 1);O00OO = new Date();O00OO = new Date( O00OO.getFullYear(), O00OO.getMonth(), O00OO.getDate());O0O00.setDate(O0O00.getDate() + this.monthStartDate[m] -1);O0O00.setDate( O0O00.getDate() - this.getWeekday(O0O00) );if ( O0O00.getDate() == 2 ) O0O00.setDate( O0O00.getDate() - 7 );O0O00O = 1 - this.getWeekday(O0O00);O0O0O = this.getPartialEventArray(dteDisplay);O0000 = "";O0000 += "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">";O0000 += "<tr><td>";O0000 += "<div id=\"divScriptcalendarContainer\" class=\"scCalendar\">";O0000 += "<table border=\"0\"";O0000 += " cellpadding=\"" + this.padding + "\"";O0000 += " cellspacing=\"" +this.spacing + "\"";O0000 += " width=\"" + ( parseInt(this.cellWidth) + parseInt(this.spacing)) * 7 + "\"";O0000 += " >";O0000 += "<tr>";if (this.displayWeekNumber) {O0000 += "<th>";O0000 += "<div class=\"scHeader\" >";O0000 += "<span class=\"scSelector\">&nbsp;</span>";O0000 += "</div>";O0000 += "</th>";};O0000 += "<th align=\"center\" valign=\"middle\">";O0000 += "<div class=\"scHeader\"";O0OOOO = dteFirstDay.add("m", -2).format("yy, mm, dd", false);O0000 += " onclick=\" fscChangeDate(new Date(" + O0OOOO + "));\" ";O0000 += " onmouseover=\"this.style.cursor='hand';\" ";O0000 += " >";O0OOOO="";if (this.dateSelector&4) O0OOOO = this.prevHtml;O0000 += "<span class=\"scSelector\">" + O0OOOO + "</span>";O0000 += "</div></th>";O0OOOO = "";if (this.dateSelector&1) O0OOOO+="<select id=\"cboMonth\" name=\"cboMonth\" onChange=\"fscChangeDate(new Date(" + y + ", this.value, 1));\" class=\"scMonthDropdown\">" + this.monthOptions(m) + "</select>";if (this.dateSelector&16) O0OOOO += this.longMonths[m] + " ";if (this.dateSelector&2) O0OOOO+="<select id=\"cboYear\" name=\"cboYear\" onChange=\"fscChangeDate(new Date(this.value, " + m + ", 1));\" class=\"scYearDropdown\">" + this.yearOptions(y) + "</select>";if (this.dateSelector&32) O0OOOO += y;O0000 += "<th colspan=\"5\" align=\"center\" valign=\"bottom\" >";O0000 += "<div class=\"scHeader\">" + O0OOOO + "</div></th>";O0000 += "<th align=\"center\" valign=\"middle\" >";O0000 += "<div class=\"scHeader\"";O0OOOO = dteFirstDay.format("yy, mm, dd", false);O0000 += " onclick=\"fscChangeDate(new Date(" + O0OOOO + "));\" ";O0000 += " onmouseover=\"this.style.cursor='hand';\" ";O0000 += " >";O0OOOO="";if (this.dateSelector&8) O0OOOO = this.nextHtml;O0000 += "<span class=\"scSelector\">" + O0OOOO + "</span>";O0000 += "</div></th>";O0000 += "</tr>";O0000 += "<tr>";if (this.displayWeekNumber) {O0000 += "<th align=\"center\" valign=\"middle\" >";O0000 += "<div class=\"scHeader\">";O0000 += "&nbsp;";O0000 += "</div>";O0000 += "</th>";};for (j=0;j<this.longDays.length;j++) {O0000 += "<th align=\"center\" valign=\"middle\" >";O0000 += "<div class=\"scHeader\">";O0000 += this.longDays[j];O0000 += "</div>";O0000 += "</th>";};O0000 += "</tr>";for (O000O=0;O000O<6 && O0O00.format("yymm", false) <= dteDisplay.format("yymm", false);O000O++) {strRow = "<tr>";if (this.displayWeekNumber) {strStyle = "";strRow += "<td align=\"center\" valign=\"middle\">";strRow += "<div class=\"scHeader scWeekNumber\" style=\"" + strStyle + "\">";strRow += O0O00.weekOfYear();strRow += "</div></td>";};for (lngCol=0;lngCol<7;lngCol++) {blnDead = true;if ( O0O00.format("yymm", false)==dteDisplay.format("yymm", false) ) blnDead=false;strDate = O0O00.getFullYear() + ", " + O0O00.getMonth() + ", " + O0O00.getDate();strDateCls = "scDatePast";if ( O0O00 > O00OO ) strDateCls = "scDateFuture";if ( O0O00.getMonth() != dteFirstDay.getMonth() || O0O00.getFullYear() != dteFirstDay.getFullYear() ) strDateCls = "scDateDead";if ( O0O00.equalsTo(O00OO) && ( O0O00.getMonth() == dteFirstDay.getMonth() && O0O00.getFullYear() == dteFirstDay.getFullYear() )) strDateCls = "scDateCurrent";strNumberCls = "scNumberPast";if ( O0O00 > O00OO ) strNumberCls = "scNumberFuture";if ( O0O00.getMonth() != dteFirstDay.getMonth() || O0O00.getFullYear() != dteFirstDay.getFullYear() ) strNumberCls = "scNumberDead";if ( O0O00.equalsTo(O00OO) && ( O0O00.getMonth() == dteFirstDay.getMonth() && O0O00.getFullYear() == dteFirstDay.getFullYear() )) strNumberCls = "scNumberCurrent";strStyle = " width: " + this.cellWidth + "px;";if (this.expandCellHeight) {if (IE) {strStyle += " height: " + this.cellHeight + "px;overflow: visible;";} else {strStyle += " min-height: " + this.cellHeight + "px;overflow: visible;";};} else {strStyle += " height: " + this.cellHeight + "px;overflow: hidden;";};strCell = "<td valign=\"top\"";strCell += " class=\"" + strDateCls + "\"";strCell += " style=\"" + strStyle + "\"";strCell += " >";if (this.expandCellHeight) {if (IE) {strStyle = "height: 100%;";};};O0OOOO = "";O0OOOO += "<div class=\"*weekdaycls*\" style=\"" + strStyle + "\"";if (this.enableHandlers) {O0OOOO += " onmousedown=\"fscCellOnMouseDown(event, this," + strDate + ")\" ";O0OOOO += " onmouseover=\"fscCellOnMouseOver(event, this," + strDate + ")\" ";O0OOOO += " onmouseout=\"fscCellOnMouseOut(event, this," + strDate + ")\" ";O0OOOO += " onmouseup=\"fscCellOnMouseUp(event, this," + strDate + ")\" ";};O0OOOO += " >";strCell += O0OOOO;if (blnDead && !(this.deadCellType&1)) {blnHasNumber = false;} else {blnHasNumber = true;strCell += "<div class=\"*numbercls*\"";if (this.enableHandlers) { strCell += " onmousedown=\"fscNumberOnMouseDown(event, this," + strDate + ")\" "; strCell += " onmouseover=\"fscNumberOnMouseOver(event, this," + strDate + ")\" "; strCell += " onmouseout=\"fscNumberOnMouseOut(event, this," + strDate + ")\" "; strCell += " onmouseup=\"fscNumberOnMouseUp(event, this," + strDate + ")\" ";};strCell += " >";strCell += O0O00.getDate();strCell += "</div>";};O0O0O = this.addSpecialEvents(O0O00, O0O0O);blnHasRegularEvent = false;strFirstCls = "";O0OO00 = "";for (i=0;i<O0O0O.length;i++) {O0OO0 = O0O0O[i];O0OO0O = this.showEvent(O0O00, dteDisplay, O00OO, O0OO0, blnHasRegularEvent);if (O0OO0O) {if (O0OO0.isRegular) blnHasRegularEvent = true;if (O0OO0.style && strFirstCls.length==0) strFirstCls = O0OO0.style;if (O0OO0.style) O0OO00 = O0OO0.style;};if (O0OO0O) strCell += this.addEventHtmlString(O0OO0);};intDow = this.getWeekday(O0O00);strDateCls += " scWeekday" + intDow;strNumberCls += " scNumber" + intDow;if (this.expandEventStyle) {if (blnHasNumber) strCell = strCell.replace("*numbercls*", "scNumber " + strNumberCls + " " + strFirstCls);strCell = strCell.replace("*weekdaycls*", "scWeekday " + strDateCls + " " + O0OO00);} else {if (blnHasNumber) strCell = strCell.replace("*numbercls*", "scNumber " + strNumberCls);strCell = strCell.replace("*weekdaycls*", "scWeekday " + strDateCls);};strCell += "</div></td>";O0O00 = O0O00.add("d", 1);O0O00O++;strRow += strCell;};strRow += "</tr>";O0000 += strRow;};O0000 += "</table>";O0000 += "</div>";O0000 += "</td></tr></table>";return O0000;};scriptcalendar.prototype.showEvent = function(O0O00, dteDisplay, O00OO, O0OO0, blnHasRegularEvent) {var O0OO0O = false;var OO00OOb = 4;var OO00OOc = 3;var OO00OOd = 2;if ( O0O00.equalsTo(O0OO0.date) && O0O00.format("yymm", false)==dteDisplay.format("yymm", false) ) O0OO0O = true;if ( O0O00.equalsTo(O0OO0.date) && O0OO0.day!=O0O00.getDate() ) O0OO0O = true;if ( O0O00.equalsTo(O0OO0.date) && this.deadCellType&4 ) O0OO0O = true;if (!(this.showPastEvents) && O0O00 < O00OO ) O0OO0O=false;if (!(this.showFutureEvents) && O0O00 > O00OO ) O0OO0O=false;if (this.overrideSpecialEvent && blnHasRegularEvent && O0OO0.isRegular==false) O0OO0O=false;if (this.filterNames.length > 0 && O0OO0.filter) {if (this.filter.indexOf(O0OO0.filter)==-1) {O0OO0O=false;};};if (!(OO00OO) && O0O00.getDate() > (OO00OOc * OO00OOd + OO00OOb) ) O0OO0O=false;return O0OO0O;};scriptcalendar.prototype.addEventXml = function(O0OO0, objParent, strLastClass) {var objNode;objNode = O0OOOOO(objParent, "event");O0OOOOO(objNode, "month", O0OO0.month);O0OOOOO(objNode, "day", O0OO0.day);O0OOOOO(objNode, "year", O0OO0.year);O0OOOOO(objNode, "text", O0OO0.text);if (O0OO0.popuplink) O0OOOOO(objNode, "popuplink", O0OO0.popuplink);if (O0OO0.tooltip) O0OOOOO(objNode, "tooltip", O0OO0.tooltip);if (O0OO0.script) O0OOOOO(objNode, "script", O0OO0.script);var strEventClass = "scevent";if (O0OO0.style) strEventClass += " " + O0OO0.style;fscAppendAttribute(objNode, "class", strEventClass);if (this.enableHandlers) {strDate = O0OO0.year + ", " + O0OO0.month + ", " + O0OO0.day;fscAppendAttribute(objNode, "onmousedown", "fscEventMouseDown(event, this," + strDate + ")" );fscAppendAttribute(objNode, "onmouseover", "fscEventMouseOver(event, this," + strDate + ")" );fscAppendAttribute(objNode, "onmouseout", "fscEventMouseOut(event, this," + strDate + ")" );fscAppendAttribute(objNode, "onmouseup", "fscEventMouseUp(event, this," + strDate + ")" );}; return objNode;};scriptcalendar.prototype.addEventHtmlString = function(O0OO0) {var O0000 = O0OO0.text;if (O0OO0.popuplink) O0000 = "<a href=\"javascript:fscPopup('" + O0OO0.popuplink + "', '" + O0OO0.date.format("yy, mm, dd", false) + "');\">" + O0000 + "</a>";var strResult = "<div";if (O0OO0.script) {strResult += " onclick=\"" + O0OO0.script + "\"";};if (O0OO0.tooltip) {strResult += " title=\"" + O0OO0.tooltip + "\"";};var strEventClass = "scevent";if (O0OO0.style) strEventClass += " " + O0OO0.style;strResult += " class=\"" + strEventClass + "\"";if (this.enableHandlers) {strDate = O0OO0.year + ", " + O0OO0.month + ", " + O0OO0.day;strResult += " onmousedown=\"fscEventOnMouseDown(event, this," + strDate + ")\" ";strResult += " onmouseover=\"fscEventOnMouseOver(event, this," + strDate + ")\" ";strResult += " onmouseout=\"fscEventOnMouseOut(event, this," + strDate + ")\" ";strResult += " onmouseup=\"fscEventOnMouseUp(event, this," + strDate + ")\" ";};strResult += " >" + O0000 + "</div>";return strResult;};scriptcalendar.prototype.monthOptions = function(intMonth) {var strSelected;var O0000 = "";for ( var i=0;i<=11;i++ ) {strSelected = "";if ( i==intMonth ) strSelected = "selected=\"true\"";O0000 += "<option value=\"" + (i) + "\" " + strSelected + " >" + this.longMonths[i] + "</option>";};return O0000;};scriptcalendar.prototype.yearOptions = function(intYear) {var strSelected;var O0000 = "";for ( var i=this.dateRangeStart;i<=this.dateRangeEnd;i++ ) {strSelected = "";if ( i==intYear ) strSelected = "selected=\"true\"";O0000 += "<option value=\"" + i + "\" " + strSelected + " >" + i + "</option>";};return O0000;};scriptcalendar.prototype.addSpecialEvents = function(O0O00, O0O0O) {arrSpecial = scSpecialEvent(O0O00);if (arrSpecial) {if (this.specialEventsFirst) {return arrSpecial.concat(O0O0O);} else {return O0O0O.concat(arrSpecial);};};return O0O0O;};scriptcalendar.prototype.getPartialEventArray = function(dteParam) {var arrTemp = new Array();var O0OO0;var O0OO0O;var i;var year;var month;var O00O0;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 (O00O) {for (i=0;i<O00O.length;i++) {O0OO0 = O00O[i];year = y;if (O0OO0.year) year = O0OO0.year;month = m;if (O0OO0.month) month = O0OO0.month-1;strEventDate = fscDateString(year, month+1, O0OO0.day, false);blnIsDate = strEventDate.isDate();O00O0 = new Date( year, month, 1);O00O0 = O00O0.add( "d", O0OO0.day-1 );strEventYM = O00O0.format("yymm", false);O0OO0O = false;if ( blnIsDate && strFirstYM == strEventYM ) O0OO0O=true;if ( !blnIsDate && this.deadCellType&2 ) {if ( strEventYM == strPrevYM && O00O0.getDate()>=22 ) O0OO0O=true;if ( strEventYM == strNextYM && O00O0.getDate()<=6 ) O0OO0O=true;};if ( blnIsDate && this.deadCellType&4 ) {if ( strEventYM == strPrevYM && O00O0.getDate()>=22 ) O0OO0O=true;if ( strEventYM == strNextYM && O00O0.getDate()<=6 ) O0OO0O=true;};if (O0OO0O) {O0OO0.year = O00O0.getFullYear();O0OO0.month = O00O0.getMonth();O0OO0.date = O00O0;arrTemp[arrTemp.length] = O0OO0;};};return arrTemp;};return false;};scriptcalendar.prototype.xmlToArray = function(objEvtDoc) {var i, j;var objNode;var objNodeChild;var O0OO0;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);};O0OO0 = new EventObj(parseInt(strMonth), parseInt(strDay), parseInt(strYear), strText, strPopupLink, strStyle, strTooltip, strScript, strFilter);O00O[O00O.length] = O0OO0;};};};scriptcalendar.prototype.getWeekday = function(dteParam) {var d = dteParam.getDay();if (this.beginMonday) d--;if (d==-1) d=6;return d;};function fscChangeDate(O0O00) {var O0O0OO = window.location.toString();var strDate = (O0O00.getMonth()+1).toString() + "/1/" + O0O00.getFullYear().toString();O0O0OO = fscRemoveQueryStrParam(O0O0OO, mstrQueryStrParam);O0O0OO = fscAddQueryStrParam(O0O0OO, mstrQueryStrParam, strDate);window.location = O0O0OO;};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(O0O0OO, strDate) {if (mblnPopupAddParam) O0O0OO = fscAddQueryStrParam(O0O0OO, mstrQueryStrParam, strDate);if (mlngPopupType==2) {var objPopup = O0OO000("scIfmPopup");objPopup.src = O0O0OO;objPopup = O0OO000("scDivPopup");objPopup.style.display="block";} else if (mlngPopupType==3) {window.top.location = O0O0OO;} else {var objWindow = window.open(O0O0OO, "_blank", mstrPopupProp);};};scriptcalendar.prototype.createFilter = function() {var objElmContainer;var objElmSpan;var objElmCheckbox;var arrNames = this.filterNames.split(",");var O0000;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="";O0000 = "<input type=\"checkbox\" name=\"chkScFilter\" id=\"chkScFilter" + (i+1) +"\" onClick=\"chkScFilter_onClick(this);\" value=\"" + arrNames[i] + "\" " + strChecked + ">";O0000 += arrNames[i];objElmSpan.innerHTML = O0000;};};function chkScFilter_onClick(chk) {var arrNames = O0O0.filterNames.split(",");var O0O0OO = 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);O0O0OO = fscRemoveQueryStrParam(O0O0OO, "scFilter");O0O0OO = fscAddQueryStrParam(O0O0OO, "scFilter", strValue);window.location = O0O0OO;};function EventObj(m, d, y, strText, strPopuplink, strStyle, strTooltip, strScript, strFilter) {var O00O0;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) {O00O0 = new Date( y, m-1, 1);O00O0 = O00O0.add("d", d-1);this.date = O00O0;};};function fscEvent(m, d, y, strText, strPopuplink, strStyle, strTooltip, strScript, strFilter) {var O0OO0 = new EventObj(m, d, y, strText, strPopuplink, strStyle, strTooltip, strScript, strFilter);O0OO0.isRegular = true;O00O[O00O.length] = O0OO0;};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 hours = this.getHours();if (hours>12 && useMilitary==false)hours = hours-12;var yy = this.getFullYear().toString();var mm = "00" + (this.getMonth() + 1).toString();var dd = "00" + this.getDate().toString();var hh = "00" + hours.toString().toString();var nn = "00" + this.getMinutes().toString();var ss = "00" + this.getSeconds().toString();mm = mm.substr(mm.length-2,2);dd = dd.substr(dd.length-2,2);hh = hh.substr(hh.length-2,2);nn = nn.substr(nn.length-2,2);ss = ss.substr(ss.length-2,2);symbols = symbols.replace("yy", yy);symbols = symbols.replace("mm", mm);symbols = symbols.replace("dd", dd);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(O000)) {if (O000.getFullYear==Y) {return O000;};};var O00OO = new Date(Y, 1, 1);O000 = O00OO.getEaster();return O000;};function fscDateString(y, m, d, blnYMD) {var O0OOOO = "";var strYear = y.toString();strYear = strYear.pad(4);var strMonth = m.toString();strMonth = strMonth.pad(2);var strDay = d.toString();strDay = strDay.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 O0OOOO = this;O0OOOO = O0OOOO.replace("&lt;", "<");O0OOOO = O0OOOO.replace("&gt;", ">");O0OOOO = O0OOOO.replace("&amp;", "&");return O0OOOO;};String.prototype.pad = function(num) {var strResult = "00000000000000000000" + this;var lngValue = strResult.length - num;strResult = strResult.substring(lngValue);return strResult;};String.prototype.globalReplace = function(fromString, toString) { var inputString = this;  var temp = inputString; if (fromString == "") return inputString; if (toString.indexOf(fromString) == -1) { while (temp.indexOf(fromString) != -1) { var toTheLeft = temp.substring(0, temp.indexOf(fromString)); var toTheRight = temp.substring(temp.indexOf(fromString)+fromString.length, temp.length); temp = toTheLeft + toString + toTheRight; }; } else { var midStrings = new Array("~", "`", "_", "^", "#"); var midStringLen = 1; var midString = "";   while (midString == "") { for (var i=0;i < midStrings.length;i++) { var tempMidString = ""; for (var j=0;j < midStringLen;j++) {tempMidString += midStrings[i];}; if (fromString.indexOf(tempMidString) == -1) { midString = tempMidString; i = midStrings.length + 1; }; }; };  while (temp.indexOf(fromString) != -1) { var toTheLeft = temp.substring(0, temp.indexOf(fromString)); var toTheRight = temp.substring(temp.indexOf(fromString)+fromString.length, temp.length); temp = toTheLeft + midString + toTheRight; };  while (temp.indexOf(midString) != -1) { var toTheLeft = temp.substring(0, temp.indexOf(midString)); var toTheRight = temp.substring(temp.indexOf(midString)+midString.length, temp.length); temp = toTheLeft + toString + toTheRight; }; }; return temp;};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, "");};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(O0O0OO) {if (window.ActiveXObject) {var objDoc = O0OOOO0();objDoc.async = false;objDoc.load(O0O0OO);return objDoc;};if (document.implementation && document.implementation.createDocument) {var xmlhttp = new window.XMLHttpRequest();xmlhttp.open("GET", O0O0OO, false);xmlhttp.send(null);return xmlhttp.responseXML;};if (document.implementation) {var pipe = new XMLHttpRequest();pipe.open("GET", O0O0OO, 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 O0O0OO = window.location.toString();var intPosition = O0O0OO.indexOf("?");if (intPosition == -1) return "";var strQueryStr = O0O0OO.substr(intPosition+1, O0O0OO.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(O0O0OO, strKey, strValue) {var strAnchor = "";var c = "?";var i;i = O0O0OO.indexOf("#");if (i != -1) {strAnchor = O0O0OO.substr(i, O0O0OO.length - i);O0O0OO = O0O0OO.substr(0,i);};i = O0O0OO.indexOf("?");if (i != -1) c="&";O0O0OO += c + strKey + "=" + strValue.urlEncode() + strAnchor;return O0O0OO;};function fscRemoveQueryStrParam(O0O0OO, strKey) {var strResult;var intStart;var intEnd;var strAnchor = "";intStart = O0O0OO.indexOf("#");if (intStart != -1){strAnchor = O0O0OO.substr(intStart, O0O0OO.length - intStart);O0O0OO = O0O0OO.substring(0, intStart);};intStart = O0O0OO.indexOf(strKey);if (intStart == -1) {strResult = O0O0OO;} else {intEnd = O0O0OO.indexOf("&", intStart);if (intEnd != -1) {strResult = O0O0OO.substring(0, intStart) + O0O0OO.substring(intEnd+1);} else {strResult = O0O0OO.substring(0, intStart-1);};};strResult += strAnchor;return strResult;};function O00() {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 O0O(strCode) {var a = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmonpqrstuvwxyz1234567890";var k = "dateStylePast";var i;var j;var c;var O0OO;var nKey;var r="";j = 0;for ( i=0;i<strCode.length;i++ ) {c = strCode.charAt(i);O0OO = a.indexOf(c);c = k.charAt(j);nKey = a.indexOf(c);O0OO = O0OO - nKey;if ( O0OO < 0 ) O0OO = O0OO + a.length;r = r + a.charAt(O0OO);j++;if ( j >= k.length ) j=0;};return r;};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;};