// JavaScript Document
//Copyright Kerberos Internet Services, CC; All rights reserved.
//info@kerberosb2b.com
//helpdesk@kerberosb2b.com
//http://www.kerberosb2b.com
isIE4 = document.all ? true : false;
isIE6 = document.getElementById && document.all ? true : false;
isNS4 = document.layers ? true : false;
isNS6 = document.getElementById && !document.all ? true : false;

var FLATDATE_CONTAINER_PREFIX = "FLATDATE_CONTAINER";
var FLATDATE_DISPLAY_PREFIX = "FLATDATE_DISPLAY";
var FLATDATE_BUTTON_PREFIX = "FLATDATE_BUTTON";
var FLATDATE_DROPDOWN_PREFIX = "FLATDATE_DROPDOWN";
var FLATDATE_MONTHYEARDISPLAY_PREFIX = "FLATDATE_MONTHYEARDISPLAY";
var FLATDATE_CELL_PREFIX = "FLATDATE_CELL";
var FlatDatePicker_idGenerator = new IDGenerator(0);
var FlatDatePickerMap = new Object();
var FlatDatePickerIDGenerator = 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_CAL_BACKGROUND = "CALENDAR_BACKGROUND";
var CSS_CAL_IMAGE = "CALENDAR_IMAGE";
var CSS_MOUSEOVER = "MOUSEOVER";
var CSS_MOUSESELECT = "MOUSESELECT";

//Language Constants
var LinguaFranca = new Object();
LinguaFranca['EN'] = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October','November', 'December','No Date Selected','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 FlatDatePicker_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 FlatDatePicker_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 FlatDatePicker (boundControl, returnFormat, returnNullDates, showWeekDays, ISOLanguageCode, scriptAction){
	this.idGenerator = FlatDatePicker_idGenerator;
	this.scriptAction = scriptAction;
	this.returnFormat = String(returnFormat).toLowerCase();
	this.boundControl = boundControl;
	this.instantiated = 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;
	this.CSS_Title = "font: normal normal normal 12px normal verdana; text-decoration:none; color: #666666";
	this.CSS_NavYear = "font: normal normal bolder 18px bold verdana; text-decoration:none; color: #FF0000";
	this.CSS_NavMonth = "font: normal normal bolder 18px bold verdana; text-decoration:none; color: #0066CC";
	this.CSS_DateText = "font: normal normal normal 11px normal arial; text-decoration:none; color: #666666";
	this.CSS_Cal_Background = "#FFFFEE";
	this.CSS_Cal_Image = "";
	this.CSS_Mouseover_Color = "#0000FF";
	this.CSS_Mouseselect_Color = "#FF0000";
	this.NavYearPrevious = "&lt;";
	this.NavYearNext = "&gt;";
	this.NavMonthPrevious = "&lt;";
	this.NavMonthNext = "&gt;";
	this.currentDate = new Date();
	this.isNullDate = false;
	this.Instantiate = FlatDatePicker_Instantiate;
	this.parseDateString = FlatDatePicker_parseInitialDateString;
	this.displayDate = FlatDatePicker_DisplayDate;
	this.getMonthName = FlatDatePicker_GetMonthName;
	this.getDayLimit = FlatDatePicker_GetDayLimit;
	this.setCSSAttribute = FlatDatePicker_SetCSSAttribute;
	this.isSimpleEvent = FlatDatePicker_IsSimpleEvent;
	this.setSimpleEvents = FlatDatePicker_SetSimpleEvents;
}
function FlatDatePicker_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 FlatDatePicker_SetSimpleEvents(eventArray){
	this.simpleEvents = new Array();
	var rowArray = eventArray.split("||");
	for (i = 0; i < rowArray.length; i++){
		this.simpleEvents.push (rowArray[i].split("|"));
	}
}
function FlatDatePicker_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_CAL_BACKGROUND:
			this.CSS_Cal_Background = cssValue;
			break;
		case CSS_CAL_IMAGE:
			this.CSS_Cal_Image = cssValue;
			break;
		case CSS_MOUSEOVER:
			this.CSS_Mouseover_Color = cssValue;
			break;
		case CSS_MOUSESELECT:
			this.CSS_Mouseselect_Color = cssValue;
			break;
	}
}
function  FlatDatePicker_Instantiate(){
	if (this.instantiated) {
		return;
	}
	this.id = this.idGenerator.GenerateID();
	FlatDatePickerMap[this.id] = this;
	FlatDatePickerIDGenerator = this.idGenerator;

	var html = "";
	html += "<STYLE>";
	html += "#" + FLATDATE_CELL_PREFIX + this.id + ":hover {background-color: " + this.CSS_Mouseover_Color + "}";
	html += "#" + FLATDATE_CELL_PREFIX + this.id + " {display:block; width:100%; height:100%;" + this.CSS_DateText + ";}";
	html += "</STYLE>";
	html += "<DIV id='"+FLATDATE_DROPDOWN_PREFIX+this.id+"' name='"+FLATDATE_DROPDOWN_PREFIX+this.id+"' style='position:static; overflow:visible; display:block; height: 164px; width:164px; border: 1px solid #CCCCCC; background-color: " + this.CSS_Cal_Background + "; " + this.CSS_Cal_Image + "'></DIV>";
	document.write (html);
	this.parseDateString();
	this.displayDate();
	this.instantiated = true;
}
function FlatDatePicker_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"){
		//Handle the odd return formats first
		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
			//Replace delimiters with valid characters
			initialDateString = initialDateString.replace(/[\-\@]/gi,"/");
			this.currentDate = new Date(initialDateString);
		}
		if (isNaN(this.currentDate.getDate()))this.currentDate = new Date();
		return;
	}else{
		return;	
	}	
}

function FlatDatePicker_DisplayDate(){
	var returnString = "";
	var simpleEventString = "";
	if (this.isNullDate && this.returnNullDate){
		returnString = "null";
	}else{
		returnString = getThisDateString(this.returnFormat, this);
	}
	var html = "";
	html += "<TABLE width=100% height=100%><tr><td width='14%' height='12%'>";
	if (this.showYearNav) html += "<A HREF='javascript:FlatDatePicker_DecrementYear(" + this.id + ")' STYLE='" + this.CSS_NavYear + "'>" + this.NavYearPrevious + "</A>";
	html += "</td><td width='14%' height='12%'>";
	if (this.showMonthNav) html += "<A HREF='javascript:FlatDatePicker_DecrementMonth(" + this.id + ")' STYLE='" + this.CSS_NavMonth + "'>" + this.NavMonthPrevious + "</A>";
	html += "</td><td id='" + FLATDATE_MONTHYEARDISPLAY_PREFIX + this.id + "' name='" + FLATDATE_MONTHYEARDISPLAY_PREFIX + this.id + "'  colspan='3' align='center' STYLE='" + this.CSS_Title + "'>" + this.getMonthName() + " " + this.currentDate.getFullYear() + "</td>";
	html += "<td width='14%' height='12%'>";
	if (this.showMonthNav) html += "<A HREF='javascript:FlatDatePicker_IncrementMonth(" + this.id + ")' STYLE='" + this.CSS_NavMonth + "'>" + this.NavMonthNext + "</A>";
	html += "</td><td width='14%' height='12%'>";
	if (this.showYearNav) html += "<A HREF='javascript:FlatDatePicker_IncrementYear(" + this.id + ")' STYLE='" + this.CSS_NavYear + "'>" + this.NavYearNext + "</A>";
	html += "</td></tr>";
	var dayOffset = 0;
	if (this.showWeekDays){
		html += "<tr STYLE='" + this.CSS_DateText + "'><td  align=center valign=middle ><b>" + LinguaFranca[this.ISOLanguageCode][13].slice(0,1) + "</b></td><td align=center valign=middle ><b>" + LinguaFranca[this.ISOLanguageCode][14].slice(0,1) + "</b></td><td align=center valign=middle ><b>" + LinguaFranca[this.ISOLanguageCode][15].slice(0,1) + "</b></td><td align=center valign=middle ><b>" + LinguaFranca[this.ISOLanguageCode][16].slice(0,1) + "</b></td><td align=center valign=middle ><b>" + LinguaFranca[this.ISOLanguageCode][17].slice(0,1) + "</b></td><td align=center valign=middle ><b>" + LinguaFranca[this.ISOLanguageCode][18].slice(0,1) + "</b></td><td align=center valign=middle ><b>" + LinguaFranca[this.ISOLanguageCode][19].slice(0,1) + "</b></td></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></td>";
			}else{
				if ((i * 7 + ii - dayOffset) <= this.getDayLimit()){
					simpleEventString = this.isSimpleEvent (i*7+ii - dayOffset);
					html += "<td WIDTH='14%' HEIGHT='12%' ALIGN='center' VALIGN='middle'" + (!this.isNullDate && (i*7+ii - dayOffset) == this.currentDate.getDate() ? " STYLE='background-color:" + this.CSS_Mouseselect_Color + "'" : "") + "><A id='" + FLATDATE_CELL_PREFIX + this.id + "' NAME='" + FLATDATE_CELL_PREFIX + this.id + "' HREF='javascript:FlatDatePicker_SetDay (" + this.id + "," + eval(i*7+ii - dayOffset) + ");' title=\"" + simpleEventString + "\">"+ (simpleEventString != "" ? "<b>"+eval(i*7+ii - dayOffset)+"</b>" : eval(i*7+ii - dayOffset) ) +"</a></td>";
				}else{
					if (this.returnNullDate && (i*7+ii - dayOffset) == this.getDayLimit()+1){
						html += "<td ALIGN='right' VALIGN='middle' HEIGHT='12%' COLSPAN='"+eval(7 - ii + 1 + 6 - dayOffset)+"' " + (this.isNullDate ? " STYLE='background-color:" + this.CSS_Mouseselect_Color + "'" : "") + "><A ID='" + FLATDATE_CELL_PREFIX + this.id + "' NAME='" + FLATDATE_CELL_PREFIX + this.id + "' HREF='javascript:FlatDatePicker_SetDay (" + this.id + ", 32);'>X</a></td>";
					}else if (!this.returnNullDate){
						html += "<td></td>"
					}			
				}
			}
		}
		html += "</tr>";
	}
	html += "</TABLE>";
	getDOMObject(this.boundControl).value = returnString;
	getDOMObject(FLATDATE_DROPDOWN_PREFIX+this.id).innerHTML = html;
//Display Utility Functions
	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 '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 FlatDatePicker_GetMonthName(){
	return LinguaFranca[this.ISOLanguageCode][this.currentDate.getMonth()];
}

function FlatDatePicker_SetDay (id, tdID){
	if (tdID != 32) {
		FlatDatePickerMap[id].isNullDate = false;
		FlatDatePickerMap[id].currentDate.setDate(tdID);
	}else{
		FlatDatePickerMap[id].isNullDate = true;
	}
	FlatDatePickerMap[id].displayDate();
	if (FlatDatePickerMap[id].instantiated) eval(FlatDatePickerMap[id].scriptAction);
}

function FlatDatePicker_IncrementMonth(id){
	var currentMonth = parseInt(FlatDatePickerMap[id].currentDate.getMonth());
	var currentYear = parseInt(FlatDatePickerMap[id].currentDate.getFullYear());
	var currentDate = parseInt (FlatDatePickerMap[id].currentDate.getDate());
//Do the increment
	if (currentMonth == 11){
		currentMonth = 0;
		currentYear += 1;
	}else{
		currentMonth += 1;
	}
//Test the daylimit
	var incDayLimit = FlatDatePicker_Util_getDayLimit_MonthID(currentMonth, currentYear);
	if (currentDate > incDayLimit)currentDate=incDayLimit;
//Assign the new values
	FlatDatePickerMap[id].currentDate.setDate(currentDate);
	FlatDatePickerMap[id].currentDate.setMonth(currentMonth);
	FlatDatePickerMap[id].currentDate.setFullYear(currentYear);
	FlatDatePickerMap[id].displayDate();
	if (FlatDatePickerMap[id].instantiated) eval(FlatDatePickerMap[id].scriptAction);
}
function FlatDatePicker_DecrementMonth(id){
	var currentMonth = parseInt(FlatDatePickerMap[id].currentDate.getMonth());
	var currentYear = parseInt(FlatDatePickerMap[id].currentDate.getFullYear());
	var currentDate = parseInt (FlatDatePickerMap[id].currentDate.getDate());
//Do the decrement
	if (currentMonth == 0){
		currentMonth = 11;
		currentYear -= 1;
	}else{
		currentMonth -= 1;
	}
//Test the daylimit
	var decDayLimit = FlatDatePicker_Util_getDayLimit_MonthID(currentMonth, currentYear);
	if (currentDate > decDayLimit)currentDate=decDayLimit;
//Assign the new values
	FlatDatePickerMap[id].currentDate.setDate(currentDate);
	FlatDatePickerMap[id].currentDate.setMonth(currentMonth);
	FlatDatePickerMap[id].currentDate.setFullYear(currentYear);
	FlatDatePickerMap[id].displayDate();
	if (FlatDatePickerMap[id].instantiated) eval(FlatDatePickerMap[id].scriptAction);
}
function FlatDatePicker_IncrementYear(id){
	var currentMonth = parseInt(FlatDatePickerMap[id].currentDate.getMonth());
	var currentYear = parseInt(FlatDatePickerMap[id].currentDate.getFullYear());
	var currentDate = parseInt (FlatDatePickerMap[id].currentDate.getDate());
//Do the increment
	currentYear += 1;
//Test the daylimit
	var incDayLimit = FlatDatePicker_Util_getDayLimit_MonthID(currentMonth, currentYear);
	if (currentDate > incDayLimit)currentDate=incDayLimit;
//Assign the new values
	FlatDatePickerMap[id].currentDate.setDate(currentDate);
	FlatDatePickerMap[id].currentDate.setMonth(currentMonth);
	FlatDatePickerMap[id].currentDate.setFullYear(currentYear);
	FlatDatePickerMap[id].displayDate();
	if (FlatDatePickerMap[id].instantiated) eval(FlatDatePickerMap[id].scriptAction);
}
function FlatDatePicker_DecrementYear(id){
	var currentMonth = parseInt(FlatDatePickerMap[id].currentDate.getMonth());
	var currentYear = parseInt(FlatDatePickerMap[id].currentDate.getFullYear());
	var currentDate = parseInt (FlatDatePickerMap[id].currentDate.getDate());
//Do the decrement
	currentYear -= 1;
//Test the daylimit
	var decDayLimit = FlatDatePicker_Util_getDayLimit_MonthID(currentMonth, currentYear);
	if (currentDate > decDayLimit)currentDate=decDayLimit;
//Assign the new values
	FlatDatePickerMap[id].currentDate.setDate(currentDate);
	FlatDatePickerMap[id].currentDate.setMonth(currentMonth);
	FlatDatePickerMap[id].currentDate.setFullYear(currentYear);
	FlatDatePickerMap[id].displayDate();
	if (FlatDatePickerMap[id].instantiated) eval(FlatDatePickerMap[id].scriptAction);
}
function FlatDatePicker_GetDayLimit(){
	return FlatDatePicker_Util_getDayLimit (this.currentDate);
}


LinguaFranca['EN'] = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October','November', 'December','No Date Selected','Sun','Mon','Tue','Wed','Thu','Fri','Sat'];
function CardinalConversion(datepickerControl){
	var cardinal = "";
	switch (datepickerControl.currentDate.getDate()){
		case 1: cardinal = "st"; break;
		case 21: cardinal = "st"; break;
		case 31: cardinal = "st"; break;
		case 2: cardinal = "nd"; break;
		case 22 : cardinal = "nd"; break;
		case 3: cardinal = "rd"; break;
		case 23: cardinal = "rd"; break;
		case 33 : cardinal = "rd"; break;
		default: cardinal = "th"; break;
	}
	return LinguaFranca[datepickerControl.ISOLanguageCode][13 + datepickerControl.currentDate.getDay()].slice(0,3) + " " + datepickerControl.currentDate.getDate() + cardinal + " " + 		datepickerControl.getMonthName() + " " + datepickerControl.currentDate.getFullYear();
}