//JavaScript Document
//Copyright Kerberos Internet Services, CC; All rights reserved.
//info@kerberosb2b.com
//helpdesk@kerberosb2b.com
//http://www.kerberosb2b.com; http://www.kerberosdev.net

isIE4 = document.all ? true : false;
isIE6 = document.getElementById && document.all ? true : false;
isNS4 = document.layers ? true : false;
isNS6 = document.getElementById && !document.all ? true : false;

//Object & container prefixes
var DATE_CONTAINER_PREFIX = "DATE_CONTAINER";
var DATE_DISPLAY_PREFIX = "DATE_DISPLAY";
var DATE_BUTTON_PREFIX = "DATE_BUTTON";
var DATE_DROPDOWN_PREFIX = "DATE_DROPDOWN";
var DATE_MONTHYEARDISPLAY_PREFIX = "DATE_MONTHYEARDISPLAY";
var DATE_HEADERTD_PREFIX = "DATE_HEADERTD";
var DATE_HEADERTR_PREFIX = "DATE_HEADERTR";
var DATE_WEEKTD_PREFIX = "DATE_WEEKTD";
var DATE_WEEKTR_PREFIX = "DATE_WEEKTR";
var DATE_DAY_PREFIX = "DATE_DAY";
var DATE_LINK_DAY_PREFIX = "DATE_LINK_DAY";
var DATE_LINK_MONTH_PREFIX = "DATE_LINK_MONTH";
var DATE_LINK_YEAR_PREFIX = "DATE_LINK_YEAR";
var DATE_SIMPLEEVENT_PREFIX = "DATE_SIMPLEEVENT";
//Reference Objects
var DatePicker_idGenerator = new IDGenerator(0);
var datePickerMap = new Object();
var datePickerIDGenerator = null;
//Date Picker Constants
var CSS_TITLE = "TITLE";
var CSS_NAV_YEAR = "NAV_YEAR";
var CSS_NAV_MONTH = "NAV_MONTH";
var CSS_DATE_TEXT = "DATE_TEXT";
var CSS_CALENDAR = "CALENDAR_BACKGROUND";
var CSS_DISPLAY_AREA = "DISPLAY_AREA";
var CSS_BUTTON = "BUTTON";
var CSS_BUTTON_TEXT = "BUTTON_TEXT";
var CSS_MOUSEOVER = "MOUSEOVER";
var CSS_MOUSESELECT = "MOUSESELECT";
var CSS_DATEHEADER_ROW = "DATEHEADERROW";
var CSS_DATEHEADER_CELL = "DATEHEADERCELL";
var CSS_DATEWEEK_ROW = "DATEWEEK_ROW";
var CSS_DATEWEEK_CELL = "DATEWEEK_CELL";
var CSS_DATEDAY = "DATEDAY";
var CSS_EVENT = "EVENT";

//Language Constants
if (!LinguaFranca){
	var LinguaFranca = new Object();
	LinguaFranca["EN"] = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October","November", "December","None","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];
}

//Utility Functions
function IDGenerator(nextID){
	this.nextID = nextID;
	this.GenerateID = IDGeneratorGenerateID;
}
function IDGeneratorGenerateID(){
	return this.nextID++;
}
function getDOMObject (documentID){
	if (isIE4)return document.all[documentID];
	else if(isIE6)return document.getElementById(documentID);
	else if (isNS4)return document.layers[documentID];
	else if (isNS6)return document.getElementById(documentID);
}
function DatePicker_Util_getDayLimit(testDate){
	switch(testDate.getMonth()){
		case 0:	return 31;
		case 1:	return (testDate.getFullYear() % 4==0 ? 29:28);
		case 2:	return 31;
		case 3:	return 30;
		case 4:	return 31;
		case 5:	return 30;
		case 6:	return 31;
		case 7:	return 31;
		case 8:	return 30;
		case 9: return 31;
		case 10: return 30;
		case 11: return 31;
	}
}
function DatePicker_Util_getDayLimit_MonthID(testMonth, testYear){
	switch(testMonth){
		case 0:	return 31;
		case 1:	return (testYear % 4==0 ? 29:28);
		case 2:	return 31;
		case 3:	return 30;
		case 4:	return 31;
		case 5:	return 30;
		case 6:	return 31;
		case 7:	return 31;
		case 8:	return 30;
		case 9: return 31;
		case 10: return 30;
		case 11: return 31;
	}
}
function DatePicker (boundControl, returnFormat, displayFormat, scriptAction, width, returnNullDates, showWeekDays, ISOLanguageCode){
	this.idGenerator = DatePicker_idGenerator;
	this.scriptAction = scriptAction;
	this.returnFormat = String(returnFormat).toLowerCase();
	this.displayFormat = String(displayFormat).toLowerCase();
	this.boundControl = boundControl;
	this.instantiated = false;
	this.width = '100%';
	this.height = "16px";
	this.RTL = false;
	this.returnNullDate = false;
	this.showWeekDays = false;
	this.showYearNav = true;
	this.showMonthNav = true;
	this.simpleEvents = null;
	this.ISOLanguageCode = "EN";
	if (ISOLanguageCode) this.ISOLanguageCode = String(ISOLanguageCode).toUpperCase();
	if (showWeekDays == true ) this.showWeekDays = true;
	if (returnNullDates == true) this.returnNullDate = true;
	if (width) this.width = width;
	this.CSS_Title = "font: 12px verdana; text-decoration:none; color: #666666";
	this.CSS_NavYear = "font: bold 18px verdana; text-decoration:none; color: #336699";
	this.CSS_NavMonth = "font: bold 18px verdana; text-decoration:none; color: #666666";
	this.CSS_DateText = "font: 11px verdana; text-decoration:none; color: #666666";
	this.CSS_Calendar = "border: 1px solid #006699; background: #CFECFB;";
	this.CSS_DisplayArea = "border:1px solid #CCCCCC; font: 10px verdana;";
	this.CSS_Button = "border:1px raised #CCCCCC; background-color: #EEEEEE; font: 14px arial";
	this.CSS_ButtonText = String.fromCharCode(9698);
	this.CSS_Mouseover = "background: #ADDDF5";
	this.CSS_Mouseselect = "background: #CFECFB";
	this.CSS_DateHeaderTD = "";
	this.CSS_DateHeaderTR = "";
	this.CSS_DateWeekTD = "font: bold 10px verdana; text-decoration:none; color: #000000";
	this.CSS_DateWeekTR = "";
	this.CSS_DateDay = "";
	this.CSS_SimpleEvent = "font: bold 10px verdana; text-decoration:none; color: #FF0000";
	this.NavYearPrevious = "&lt;&lt;";
	this.NavYearNext = "&gt;&gt;";
	this.NavMonthPrevious = "&lt;";
	this.NavMonthNext = "&gt;";
	this.NavNull = "X";
	this.zOrderProblemElements = new Array();
	this.currentDate = new Date();
	this.isNullDate = false;
	this.isPickerVisible = false;
	this.Instantiate = DatePicker_Instantiate;
	this.parseDateString = DatePicker_parseInitialDateString;
	this.displayDate = DatePicker_DisplayDate;
	this.getMonthName = DatePicker_GetMonthName;
	this.getDayLimit = DatePicker_GetDayLimit;
	this.show = DatePicker_ShowPicker;
	this.hide = DatePicker_HidePicker;
	this.setCSSAttribute = DatePicker_SetCSSAttribute;
	this.isSimpleEvent = DatePicker_IsSimpleEvent;
	this.setSimpleEvents = DatePicker_SetSimpleEvents;
	this.addZOrderElement = DatePicker_addZOrderElement;
	this.toggleZOrderElements = DatePicker_toggleZOrderElements;
}
function DatePicker_addZOrderElement(elementName){
	this.zOrderProblemElements.push(elementName);
}
function DatePicker_toggleZOrderElements(showAction){
	for (zO = 0; zO < this.zOrderProblemElements.length; zO += 1){
		getDOMObject(this.zOrderProblemElements[zO]).style.visibility = showAction == true ? 'visible' : 'hidden';
	}
}
function DatePicker_IsSimpleEvent(checkDate){
	if (this.simpleEvents == null) return "";
	var checkMonth = this.currentDate.getMonth();
	var checkYear = this.currentDate.getFullYear();
	for (xi = 0; xi < this.simpleEvents.length; xi++){
		if (checkDate == new Date(this.simpleEvents[xi][0]).getDate() && checkMonth == new Date(this.simpleEvents[xi][0]).getMonth() && String(this.simpleEvents[xi][2]).toLowerCase()=="true"){
			return this.simpleEvents[xi][1];
		}
		if (checkDate == new Date(this.simpleEvents[xi][0]).getDate() && checkMonth == new Date(this.simpleEvents[xi][0]).getMonth() && checkYear == new Date(this.simpleEvents[xi][0]).getFullYear() && String(this.simpleEvents[xi][2]).toLowerCase()=="false"){
			return this.simpleEvents[xi][1];
		}
	}
	return "";
}
function DatePicker_SetSimpleEvents(eventArray){
	this.simpleEvents = new Array();
	var rowArray = eventArray.split("||");
	for (i = 0; i < rowArray.length; i++){
		this.simpleEvents.push (rowArray[i].split("|"));
	}
}
function DatePicker_SetCSSAttribute(attribute, cssValue){
	switch (attribute){
		case CSS_TITLE:
			this.CSS_Title = cssValue;
			break;
		case CSS_NAV_YEAR:
			this.CSS_NavYear = cssValue;
			break;
		case CSS_NAV_MONTH:
			this.CSS_NavMonth = cssValue;
			break;
		case CSS_DATE_TEXT:
			this.CSS_DateText = cssValue;
			break;
		case CSS_CALENDAR:
			this.CSS_Calendar = cssValue;
			break;
		case CSS_BUTTON_TEXT:
			this.CSS_ButtonText = cssValue;
			break;
		case CSS_BUTTON:
			this.CSS_Button = cssValue;
			break;
		case CSS_DISPLAY_AREA:
			this.CSS_DisplayArea = cssValue;
			break;
		case CSS_MOUSEOVER:
			this.CSS_Mouseover = cssValue;
			break;
		case CSS_MOUSESELECT:
			this.CSS_Mouseselect = cssValue;
			break;
		case CSS_DATEHEADER_ROW:
			this.CSS_DateHeaderTR = cssValue;
			break;
		case CSS_DATEHEADER_CELL:
			this.CSS_DateHeaderTD = cssValue;
			break;
		case CSS_DATEWEEK_ROW:
			this.CSS_DateWeekTR = cssValue;
			break;
		case CSS_DATEWEEK_CELL:
			this.CSS_DateWeekTD = cssValue;
			break;
		case CSS_DATEDAY:
			this.CSS_DateDay = cssValue;
			break;
		case CSS_EVENT:
			this.CSS_SimpleEvent = cssValue;
			break;
	}
}
function  DatePicker_Instantiate(){
	if (this.instantiated) {
		return;
	}
	this.id = this.idGenerator.GenerateID();
	datePickerMap[this.id] = this;
	datePickerIDGenerator = this.idGenerator;
	var html = "";
	html += "<STYLE>";
	html += "#" + DATE_CONTAINER_PREFIX + this.id + "{width:" + this.width + "; height:"+this.height+"}";
	html += "#" + DATE_DISPLAY_PREFIX + this.id + "{height:"+this.height+";width:100%; "+this.CSS_DisplayArea+"}";
	html += "#" + DATE_DROPDOWN_PREFIX + this.id + "{position:absolute; display:none; height: 164px; width:164px; " + this.CSS_Calendar + ";}";
	html += "#" + DATE_BUTTON_PREFIX + this.id + "{height:" + this.height+"; width:"+this.height+"; " + this.CSS_Button + ";}";
	html += "#" + DATE_HEADERTR_PREFIX + this.id + "{" + this.CSS_DateHeaderTR + "}";
	html += "#" + DATE_HEADERTD_PREFIX + this.id + "{width:14%; height:12%; text-align: center; vertical-align: middle;" + this.CSS_DateHeaderTD + "}";
	html += "#" + DATE_WEEKTR_PREFIX + this.id + "{" + this.CSS_DateWeekTR + "}";
	html += "#" + DATE_WEEKTD_PREFIX + this.id + "{width:14%; height:12%; text-align: center; vertical-align: middle;" + this.CSS_DateWeekTD + "}";
	html += "#" + DATE_DAY_PREFIX + this.id + "{width:14%; height:12%; text-align: center; vertical-align: middle;" + this.CSS_DateDay + "}";
	html += "#" + DATE_MONTHYEARDISPLAY_PREFIX + this.id + "{" + this.CSS_Title + "}";
	html += "#" + DATE_SIMPLEEVENT_PREFIX + this.id + "{display: block; width:100%; height:100%; " + this.CSS_SimpleEvent + "}";
	html += "#" + DATE_LINK_DAY_PREFIX + this.id + " {display:block; text-align: center; vertical-align: middle; width:20px; height:20px; " + this.CSS_DateText + ";}";
	html += "#" + DATE_LINK_DAY_PREFIX + this.id + ":hover {" + this.CSS_Mouseover + "}";
	html += "</STYLE>";
	html += "<DIV id='" + DATE_CONTAINER_PREFIX + this.id + "' name='" + DATE_CONTAINER_PREFIX + this.id + "'>";
	html += "<TABLE cellpadding=0 cellspacing=0 border=0 " + (this.RTL ? "dir='RTL'" : "") + ">";	
	html += "<TR><TD width='"+this.height+"'>";
	html += "<INPUT id='" + DATE_BUTTON_PREFIX + this.id + "' name='" + DATE_BUTTON_PREFIX + this.id + "' TYPE='button' VALUE='" + this.CSS_ButtonText + "' onClick='DatePicker_TogglePicker(" + this.id + ");' TITLE='Click to Open / Close'>";
	html += "<DIV id='" + DATE_DROPDOWN_PREFIX + this.id + "' name='" + DATE_DROPDOWN_PREFIX + this.id + "'></TD>";
	html += "<TD id='" + DATE_DISPLAY_PREFIX + this.id + "' name='" + DATE_DISPLAY_PREFIX + this.id + "' align='center' valign='middle' nowrap>";
	html += "</DIV></TD></TR></TABLE></DIV>";
	document.write (html);
	this.parseDateString();
	this.displayDate();
	this.instantiated = true;
}
function DatePicker_parseInitialDateString(){
	var initialDateString = getDOMObject(this.boundControl).value;
	if (initialDateString == "" || initialDateString == "undefined")return;
	if (String(initialDateString).toLowerCase() == "null" && this.returnNullDate){
		this.isNullDate = true;
		return;		
	}else if (String(initialDateString).toLowerCase() != "null"){
		if (String(this.returnFormat).toLowerCase() == "unix"){
			if (isNaN(initialDateString))return;
			this.currentDate.setTime(parseInt(initialDateString) * 1000);
		}else if (String(this.returnFormat).toLowerCase() == "mysql3"){
			if (isNaN(initialDateString))return;
			initialDateString = initialDateString.slice(0,4) + "/" + initialDateString.slice(4,6) + "/" + initialDateString.slice(6);
			this.currentDate = new Date(initialDateString);
		}else{//Standardized return formats; JavaScript can only accept / as a delimeter
			initialDateString = initialDateString.replace(/[\-\@]/gi,"/");
			this.currentDate = new Date(initialDateString);
		}
		if (isNaN(this.currentDate.getDate()))this.currentDate = new Date();
		return;
	}else{
		return;	
	}	
}

function DatePicker_DisplayDate(){
	var displayString = "";
	var returnString = "";
	var simpleEventString = "";
	if (this.isNullDate && this.returnNullDate){
		displayString = LinguaFranca[this.ISOLanguageCode][12] + "...";
		returnString = "null";
	}else{
		displayString = getThisDateString(this.displayFormat, this);
		returnString = getThisDateString(this.returnFormat, this);
	}
	
	var html = "";
	html += "<table width='100%' height='100%' cellspacing='0' cellpadding='0' border='0'  " + (this.RTL ? "dir='RTL'" : "") + "><tr ID='" + DATE_HEADERTR_PREFIX + this.id + "'><td ID='" + DATE_HEADERTD_PREFIX + this.id + "' >";
	if (this.showYearNav) html += "<A HREF='javascript:DatePicker_DecrementYear(" + this.id + ")' STYLE='" + this.CSS_NavYear + "'>" + this.NavYearPrevious + "</A>";
	html += "</td><td ID='" + DATE_HEADERTD_PREFIX + this.id + "' >";
	if (this.showMonthNav) html += "<A HREF='javascript:DatePicker_DecrementMonth(" + this.id + ")' STYLE='" + this.CSS_NavMonth + "'>" + this.NavMonthPrevious + "</A>";
	html += "</td>";
	html += "<td ID='" + DATE_HEADERTD_PREFIX + this.id + "'  colspan='3'><SPAN id='" + DATE_MONTHYEARDISPLAY_PREFIX + this.id + "' name='" + DATE_MONTHYEARDISPLAY_PREFIX + this.id + "'>" + this.getMonthName() + " " + this.currentDate.getFullYear() + "</SPAN></td>";
	html += "<td ID='" + DATE_HEADERTD_PREFIX + this.id + "' >";
	if (this.showMonthNav) html += "<A HREF='javascript:DatePicker_IncrementMonth(" + this.id + ")' STYLE='" + this.CSS_NavMonth + "'>" + this.NavMonthNext + "</A>";
	html += "</td><td ID='" + DATE_HEADERTD_PREFIX + this.id + "' >";
	if (this.showYearNav) html += "<A HREF='javascript:DatePicker_IncrementYear(" + this.id + ")' STYLE='" + this.CSS_NavYear + "'>" + this.NavYearNext + "</A>";
	html += "</td></tr>";
	var dayOffset = 0;
	if (this.showWeekDays){
		html += "<tr ID='" + DATE_WEEKTR_PREFIX + this.id + "'>";
		for (iDay = 13; iDay <= 19; iDay += 1)html += "<td ID='" + DATE_WEEKTD_PREFIX + this.id + "'>" + LinguaFranca[this.ISOLanguageCode][iDay].slice(0,1) + "</td>";
		html += "</tr>";
		var testDate = new Date();
		testDate.setDate(1);
		testDate.setMonth(parseInt(this.currentDate.getMonth()));
		testDate.setFullYear(parseInt(this.currentDate.getFullYear()));
		dayOffset = testDate.getDay();
	}
	for (i = 0; i < ((this.getDayLimit() + dayOffset) < 35 ? 5 : 6); i++){
		html += "<tr>";
		for (ii = 1; ii <= 7; ii++){
			if (ii-1 < dayOffset && i == 0){
				html += "<td ID='" + DATE_DAY_PREFIX + this.id + "'>&nbsp;</td>";
			}else{
				if ((i * 7 + ii - dayOffset) <= this.getDayLimit()){
					simpleEventString = this.isSimpleEvent (i*7+ii - dayOffset);
					html += "<td ID='" + DATE_DAY_PREFIX + this.id + "' >";
					html += "<A id='" + DATE_LINK_DAY_PREFIX + this.id + "' HREF='javascript:DatePicker_SetDay (" + this.id + "," + eval(i*7+ii - dayOffset) + ");' title=\"" + simpleEventString + "\" " + (!this.isNullDate && (i*7+ii - dayOffset) == this.currentDate.getDate() ? " STYLE='" + this.CSS_Mouseselect + "'" : "") + ">"+ (simpleEventString != "" ? "<DIV ID='" + DATE_SIMPLEEVENT_PREFIX + this.id + "'>"+eval(i*7+ii - dayOffset)+"</DIV>" : eval(i*7+ii - dayOffset) ) +"</a></td>";
				}else{
					if (this.returnNullDate && (i*7+ii - dayOffset) == this.getDayLimit()+1){
						html += "<td ID='" + DATE_DAY_PREFIX + this.id + "' COLSPAN='" + eval(7 - ii + 1 + 6 - dayOffset) + "' STYLE='text-align:right;'><A ID='" + DATE_LINK_DAY_PREFIX + this.id + "' HREF='javascript:DatePicker_SetDay (" + this.id + ", 32);' " + (this.isNullDate ? " STYLE='" + this.CSS_Mouseselect + "'" : "") + "> " + this.NavNull + "</a></td>";
					}else if (!this.returnNullDate){
						html += "<td ID='" + DATE_DAY_PREFIX + this.id + "'>&nbsp;</td>";
					}			
				}
			}
		}
		html += "</tr>";
	}
	html += "</table>";
	
	getDOMObject(this.boundControl).value = returnString;
	getDOMObject(DATE_DISPLAY_PREFIX+this.id).innerHTML = displayString;
	getDOMObject(DATE_DROPDOWN_PREFIX+this.id).innerHTML = html;
	function getThisDateString(thisFormat, DPO){
		switch (String(thisFormat)){
			case "1":return eval(DPO.currentDate.getMonth()+1) + "/" + DPO.currentDate.getDate() + "/" + DPO.currentDate.getFullYear();
			case "2":return DPO.currentDate.getFullYear() + "." + eval(DPO.currentDate.getMonth()+1) + "." + DPO.currentDate.getDate();
			case "3":return DPO.currentDate.getDate() + "/" + eval(DPO.currentDate.getMonth()+1) + "/" + DPO.currentDate.getFullYear();
			case "4":return DPO.currentDate.getDate() + "-" + eval(DPO.currentDate.getMonth()+1) + "-" + DPO.currentDate.getFullYear();
			case "5":return DPO.currentDate.getDate() + "/" + eval(DPO.currentDate.getMonth()+1) + "/" + DPO.currentDate.getFullYear();
			case "6":return DPO.currentDate.getDate() + "." + eval(DPO.currentDate.getMonth()+1) + "." + DPO.currentDate.getFullYear();
			case "7":return DPO.currentDate.getFullYear() + "/" + eval(DPO.currentDate.getMonth()+1) + "/" + DPO.currentDate.getDate();
			case "8":return DPO.currentDate.getFullYear() + "/" + eval(DPO.currentDate.getMonth()+1) + "/" + DPO.currentDate.getDate();
			case "9":return eval(DPO.currentDate.getMonth()+1) + "-" + DPO.currentDate.getDate() + "-" + DPO.currentDate.getFullYear();
			case "10":return eval(DPO.currentDate.getMonth()+1) + "/" + DPO.currentDate.getDate() + "/" + DPO.currentDate.getFullYear();
			case "11":return DPO.currentDate.getDate() + "/" + eval(DPO.currentDate.getMonth()+1) + "/" + DPO.currentDate.getFullYear();
			case "12":return DPO.currentDate.getFullYear() + "/" + eval(DPO.currentDate.getMonth()+1) + "/" + DPO.currentDate.getDate();
			case "short":return eval(DPO.currentDate.getMonth()+1) + " / " + DPO.currentDate.getDate() + " / " + DPO.currentDate.getFullYear();
			case "long":return DPO.getMonthName() + " " + DPO.currentDate.getDate() + " " + DPO.currentDate.getFullYear();
			case "long2":return DPO.currentDate.getDate() + " " + DPO.getMonthName() + " " + DPO.currentDate.getFullYear();
			case "long3":return LinguaFranca[DPO.ISOLanguageCode][13 + DPO.currentDate.getDay()].slice(0,3) + ", " + DPO.currentDate.getDate() + " " + DPO.getMonthName() + " " + DPO.currentDate.getFullYear();
			case "long4":return LinguaFranca[DPO.ISOLanguageCode][13 + DPO.currentDate.getDay()].slice(0,3) + ", " + DPO.getMonthName() + " " + DPO.currentDate.getDate() + " " + DPO.currentDate.getFullYear();
			case "long5":return LinguaFranca[DPO.ISOLanguageCode][13 + DPO.currentDate.getDay()] + ", " + DPO.currentDate.getDate() + " " + DPO.getMonthName() + " " + DPO.currentDate.getFullYear();
			case "long6":return LinguaFranca[DPO.ISOLanguageCode][13 + DPO.currentDate.getDay()] + ", " + DPO.getMonthName() + " " + DPO.currentDate.getDate() + " " + DPO.currentDate.getFullYear();
			case "abbr1":return DPO.currentDate.getDate() + " " + DPO.getMonthName().slice(0,3) + ", " + DPO.currentDate.getFullYear();
			case "abbr2":return DPO.getMonthName().slice(0,3) + " " + DPO.currentDate.getDate() + ", " + DPO.currentDate.getFullYear();
			case "abbr3":return LinguaFranca[DPO.ISOLanguageCode][13 + DPO.currentDate.getDay()].slice(0,3) + ", " + DPO.currentDate.getDate() + " " + DPO.getMonthName().slice(0,3) + " " + DPO.currentDate.getFullYear();
			case "abbr4":return LinguaFranca[DPO.ISOLanguageCode][13 + DPO.currentDate.getDay()].slice(0,3) + ", " + DPO.getMonthName().slice(0,3) + " " + DPO.currentDate.getDate() + " " + DPO.currentDate.getFullYear();
			case "abbr5":return LinguaFranca[DPO.ISOLanguageCode][13 + DPO.currentDate.getDay()] + ", " + DPO.currentDate.getDate() + " " + DPO.getMonthName().slice(0,3) + " " + DPO.currentDate.getFullYear();
			case "abbr6":return LinguaFranca[DPO.ISOLanguageCode][13 + DPO.currentDate.getDay()] + ", " + DPO.getMonthName().slice(0,3) + " " + DPO.currentDate.getDate() + " " + DPO.currentDate.getFullYear();
			case "utc":return DPO.currentDate.toUTCString();
			case "gmt":return DPO.currentDate.toGMTString();
			case "unix":return String(parseInt(DPO.currentDate.getTime() / 1000));
			case "mysql1":return DPO.currentDate.getFullYear() + "-" + eval(DPO.currentDate.getMonth()+1) + "-" + DPO.currentDate.getDate();
			case "mysql2":return DPO.currentDate.getFullYear() + "@" + eval(DPO.currentDate.getMonth()+1) + "@" + DPO.currentDate.getDate();
			case "mysql3":return DPO.currentDate.getFullYear() + (String(eval(DPO.currentDate.getMonth()+1)).length==1?"0" + String(eval(DPO.currentDate.getMonth()+1)) : String(eval(DPO.currentDate.getMonth()+1))) + (String(eval(DPO.currentDate.getDate())).length == 1? "0" + String(eval(DPO.currentDate.getDate())):String(eval(DPO.currentDate.getDate())));
			case "mysql4":return DPO.currentDate.getFullYear() + "@" + (String(eval(DPO.currentDate.getMonth()+1)).length==1?"0" + String(eval(DPO.currentDate.getMonth()+1)) : String(eval(DPO.currentDate.getMonth()+1))) + "@" + (String(eval(DPO.currentDate.getDate())).length == 1? "0" + String(eval(DPO.currentDate.getDate())):String(eval(DPO.currentDate.getDate())));
			case "mysql5":return DPO.currentDate.getFullYear() + "-" + (String(eval(DPO.currentDate.getMonth()+1)).length==1?"0" + String(eval(DPO.currentDate.getMonth()+1)) : String(eval(DPO.currentDate.getMonth()+1))) + "-" + (String(eval(DPO.currentDate.getDate())).length == 1? "0" + String(eval(DPO.currentDate.getDate())):String(eval(DPO.currentDate.getDate())));
			case "abbr7":return DPO.getMonthName().slice(0,3) + " " + DPO.currentDate.getDate();
			case "vt_date":
				var dtString = "";
				try {
					dtString = DPO.currentDate.getVarDate();
				}catch (e){
					dtString = DPO.currentDate.toUTCString();
				} 
				return dtString;
			default:
				alert ('Format Case Failure. Defaulting...');
				return eval(DPO.currentDate.getMonth()+1) + "/" + DPO.currentDate.getDate() + "/" + DPO.currentDate.getFullYear();
		}
	}
}
function DatePicker_GetMonthName(){
	return String(LinguaFranca[this.ISOLanguageCode][this.currentDate.getMonth()]);
}
function DatePicker_SetDay (id, tdID){
	if (tdID != 32) {
		datePickerMap[id].isNullDate = false;
		datePickerMap[id].currentDate.setDate(tdID);
	}else{
		datePickerMap[id].isNullDate = true;
	}
	datePickerMap[id].displayDate();
	datePickerMap[id].hide();
	if (datePickerMap[id].instantiated) eval(datePickerMap[id].scriptAction);
}
function DatePicker_IncrementMonth(id){
	var currentMonth = parseInt(datePickerMap[id].currentDate.getMonth());
	var currentYear = parseInt(datePickerMap[id].currentDate.getFullYear());
	var currentDate = parseInt (datePickerMap[id].currentDate.getDate());
	if (currentMonth == 11){
		currentMonth = 0;
		currentYear += 1;
	}else{
		currentMonth += 1;
	}
	var incDayLimit = DatePicker_Util_getDayLimit_MonthID(currentMonth, currentYear);
	if (currentDate > incDayLimit)currentDate=incDayLimit;
	datePickerMap[id].currentDate.setDate(currentDate);
	datePickerMap[id].currentDate.setMonth(currentMonth);
	datePickerMap[id].currentDate.setFullYear(currentYear);
	datePickerMap[id].displayDate();
	if (datePickerMap[id].instantiated) eval(datePickerMap[id].scriptAction);
}
function DatePicker_DecrementMonth(id){
	var currentMonth = parseInt(datePickerMap[id].currentDate.getMonth());
	var currentYear = parseInt(datePickerMap[id].currentDate.getFullYear());
	var currentDate = parseInt (datePickerMap[id].currentDate.getDate());
	if (currentMonth == 0){
		currentMonth = 11;
		currentYear -= 1;
	}else{
		currentMonth -= 1;
	}
	var decDayLimit = DatePicker_Util_getDayLimit_MonthID(currentMonth, currentYear);
	if (currentDate > decDayLimit)currentDate=decDayLimit;
	datePickerMap[id].currentDate.setDate(currentDate);
	datePickerMap[id].currentDate.setMonth(currentMonth);
	datePickerMap[id].currentDate.setFullYear(currentYear);
	datePickerMap[id].displayDate();
	if (datePickerMap[id].instantiated) eval(datePickerMap[id].scriptAction);
}
function DatePicker_IncrementYear(id){
	var currentMonth = parseInt(datePickerMap[id].currentDate.getMonth());
	var currentYear = parseInt(datePickerMap[id].currentDate.getFullYear());
	var currentDate = parseInt (datePickerMap[id].currentDate.getDate());
	currentYear += 1;
	var incDayLimit = DatePicker_Util_getDayLimit_MonthID(currentMonth, currentYear);
	if (currentDate > incDayLimit)currentDate=incDayLimit;
	datePickerMap[id].currentDate.setDate(currentDate);
	datePickerMap[id].currentDate.setMonth(currentMonth);
	datePickerMap[id].currentDate.setFullYear(currentYear);
	datePickerMap[id].displayDate();
	if (datePickerMap[id].instantiated) eval(datePickerMap[id].scriptAction);
}
function DatePicker_DecrementYear(id){
	var currentMonth = parseInt(datePickerMap[id].currentDate.getMonth());
	var currentYear = parseInt(datePickerMap[id].currentDate.getFullYear());
	var currentDate = parseInt (datePickerMap[id].currentDate.getDate());
	currentYear -= 1;
	var decDayLimit = DatePicker_Util_getDayLimit_MonthID(currentMonth, currentYear);
	if (currentDate > decDayLimit)currentDate=decDayLimit;
	datePickerMap[id].currentDate.setDate(currentDate);
	datePickerMap[id].currentDate.setMonth(currentMonth);
	datePickerMap[id].currentDate.setFullYear(currentYear);
	datePickerMap[id].displayDate();
	if (datePickerMap[id].instantiated) eval(datePickerMap[id].scriptAction);
}
function DatePicker_GetDayLimit(){
	return DatePicker_Util_getDayLimit (this.currentDate);
}
function DatePicker_TogglePicker(id){
	for (picker in datePickerMap)if (id != picker)datePickerMap[picker].hide();
	if (datePickerMap[id].isPickerVisible){datePickerMap[id].hide();}else{datePickerMap[id].show();}
}
function DatePicker_HidePicker(){
	getDOMObject(DATE_DROPDOWN_PREFIX+this.id).style.display='none';
	this.isPickerVisible = false;
	this.toggleZOrderElements(!this.isPickerVisible);
}
function DatePicker_ShowPicker(){
	getDOMObject(DATE_DROPDOWN_PREFIX+this.id).style.display='block';
	this.isPickerVisible = true;
	this.toggleZOrderElements(!this.isPickerVisible);
}