// 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 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_CELL_PREFIX = "DATE_CELL";
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_CAL_BACKGROUND = "CALENDAR_BACKGROUND";
var CSS_CAL_IMAGE = "CALENDAR_IMAGE";
var CSS_DISPLAY_AREA = "DISPLAY_AREA";
var CSS_BUTTON = "BUTTON";
var CSS_BUTTON_TEXT = "BUTTON_TEXT";
var CSS_MOUSEOVER = "MOUSEOVER";
var CSS_MOUSESELECT = "MOUSESELECT";

//Language Constants
var LinguaFranca = new Object();
LinguaFranca['AF'] = ['Januarie', 'Februarie', 'Maart', 'April', 'Mei', 'Junie', 'Julie', 'Augustus', 'September', 'Oktober', 'November', 'Desember','Geen Datum Geselekteer','Sondag','Maandag','Dinsdag','Woensdag','Donderdag','Vrydag','Saturdag'];
LinguaFranca['CZ'] = ['Leden', 'Únor', 'Pochodovat', 'Duben', 'Moci', 'Cerven', 'Cervenec', 'Dustojný', 'Zárí', 'Ríjen', 'Listopady', 'Drosinec','Bez udání doby Vybraný', 'Nedele', 'Pondelí', 'Úterý', 'Streda', 'Ctvrtek', 'Pátek', 'Sobota'];
LinguaFranca['CY'] = ['Ionawr', ' Chwefrol', ' Mawrth', ' Ebrill', ' Mai', ' Mehefin', ' Gorffennaf', ' Awst', ' Medi', ' Hydref', ' Tachwedd', ' Rhagfyr','Na Amsera Ddetholedig', 'Sul', 'Llun', 'Mawrth', 'Mercher', 'Difiau', 'Gwener', 'Sadwrn'];
LinguaFranca['DA'] = ['Januar', ' Februar', ' Marts', ' April', ' Mĺ', ' Juni', ' Juli', ' August', ' September', ' Oktober', ' November', ' December','Ikke Aldersbestemme Udsřgt', 'Sřndag', 'Mandag', 'Tirsdag', 'Onsdag', 'Torsdag', 'Fredag', 'Lřrdag'];
LinguaFranca['DE'] = ['Januar', ' Februar ', ' März ', ' April ', 'Mai', ' Juni ', ' Juli ', ' August ', ' September ', ' Oktober ',' November ', ' Dezember ','Null Ausgehen Ausgewählt','Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag' ];
LinguaFranca['EN'] = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October','November', 'December','No Date Selected','Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];
LinguaFranca['ES'] = ['Enero', ' Febrero', ' Marcha', ' Abril', ' Mayo', ' Junio', ' Julio', ' Agosto', ' Septiemre', ' Octubre', ' Noviemb', ' Diciembre','No Cita Seleccionar',"Domingo", 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'];
LinguaFranca['FI'] = ['Tammikuu', ' Helmikuu', ' Marssia', ' Huhtikuu', ' Toukokuu', ' Kesäkuu', ' Heinäkuu', ' Korkea', ' Syyskuu', ' Lokakuu', ' Marraskuu', ' Joulukuu','Ei Ajoittaa Ensiluokkainen', 'Pyhä', 'Maanantai', 'Tiistai', 'Keskiviikko', 'Torstai', 'Perjantai', 'Lauantai'];
LinguaFranca['FR'] = ['Janvier ', 'Février ', 'Mars ', 'Avril ', 'Pouvez ', 'Juin ', 'Juillet ', 'Aoűt ', 'Septembre ', 'Octobre ','Novembre ', 'Décembre ','Pas de La date Sélectionnée', 'Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi'];
LinguaFranca['IS'] = ['Janúar', 'Febrúar', 'Herganga', 'Apríl', 'Mega', 'Júní', 'Júlí', 'Tignarlegur', 'September', 'Október', 'Nóvember', 'Desember','Neitun Dagsetning Herkvaddur mađur', 'Sunnudagur', 'Mánudagur', 'Ţriđjudagur', 'Miđvikudagur', 'Fimmtudagur', 'Föstudagur', 'laugardagur'];
LinguaFranca['IT'] = ['Gennaio ', 'Febbraio ', 'Marzo ', 'Aprile ', 'Possa ', 'Giugno ', 'Luglio ', 'Agosto ', 'Settembre ', 'Ottobre ','Novembre ', 'Dicembre ','Nessuno Data Selezionato',"Domenica", "Lunedě", "Martedě", "Mercoledě", "Giovedě", "Venerdě", 'Sabato'];
LinguaFranca['LA'] = ['January', ' February', ' Proficiscor', ' April', ' May', ' June', ' July', ' Ales', ' September', ' October', ' November', 'December','Haud Balanus Lego','S','M','T','W','T','F','S'];
LinguaFranca['NL'] = ['Januari', 'Februari', 'Maart', 'April', 'Mei', 'Juni', 'Juli', 'Augustus', 'September', 'Oktober','November', 'December','Niet Jaartal Uitgezocht', 'Zondag', 'Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrijdag', 'Zaterdag'];
LinguaFranca['NO'] = ['Januar', 'Februar', 'Mars', 'April', 'Kanskje', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Desember','Nei Dato Valgt','Sřndag', 'Mandag', 'Tirsdag', 'Onsdag', 'Torsdag', 'Fredag', 'Lřrdag'];
LinguaFranca['PL'] = ['Styczen', 'Luty', 'Marzec', 'Kwiecien', 'Maj', 'Czerwiec', 'Lipiec', 'Sierpien', 'Wrzesien', 'Pazdziernik', 'Listopad', 'Grudzien','Nie Datowac Wybrany', 'Niedziela', 'Poniedzialek', 'Wtorek', 'Sroda', 'Czwartek', 'Piatek', 'Sobota'];
LinguaFranca['PT'] = ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro','Năo Data Selecionado', "Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", 'Sábado'];
LinguaFranca['RO'] = ['Ianuarie', 'Februarie', 'Martie', 'Aprilie', 'Mai', 'Iunie', 'Iulie', 'August', 'Septembrie', 'Octombrie', 'Noiembrie', 'Decembrie','Nu Data Selectat', 'Duminica', 'Luni', 'Marti', 'Miercuri', 'Joi', 'Vineri', 'Sîmbata'];
LinguaFranca['SL'] = ['Januar', 'Februar', 'Marec', 'April', 'Maj', 'Junij', 'Julij', 'Avgust', 'September', 'Oktober', 'November', 'December','ne rok vpoklicanec', 'Nedelja', 'Ponedeljek', 'Torek', 'Sreda', 'Cetertek', 'Petek', 'Sobota'];
LinguaFranca['SR'] = ['Januar', 'Februar', 'Mart', 'April', 'Smjeti', 'Juni', 'Juli', 'Avgust', 'Septembar', 'Oktobra', 'Novembar', 'Decembar','Nijedan Datum Izabran', 'Nedelja', 'Ponedeljak', 'Utorak', 'Sreda', 'Cetvrtak', 'Petak', 'Subota'];
LinguaFranca['SV'] = ['Januari', 'Februari', 'Marschen', 'April', 'Maj', 'Juni', 'Juli', 'Augusti', 'September', 'Oktober', 'November', 'December','Nej Datum Valde','Söndag', 'Mĺndag', 'Tisdag', 'Onsdag', 'Torsdag', 'Fredag', 'Lördag'];

//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.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: #FF0000";
	this.CSS_NavMonth = "font: bold 18px verdana; text-decoration:none; color: #0066CC";
	this.CSS_DateText = "font: 11px verdana; text-decoration:none; color: #666666";
	this.CSS_Cal_Background = "#FFFFEE";
	this.CSS_Cal_Image = "";
	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_Color = "#0000FF";
	this.CSS_Mouseselect_Color = "#FF0000";
	this.NavYearPrevious = "&lt;";
	this.NavYearNext = "&gt;";
	this.NavMonthPrevious = "&lt;";
	this.NavMonthNext = "&gt;";
	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)
	{	
		if(getDOMObject(this.zOrderProblemElements[zO]).type == "hidden")
			continue;
		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_CAL_BACKGROUND:
			this.CSS_Cal_Background = cssValue;
			break;
		case CSS_CAL_IMAGE:
			this.CSS_Cal_Image = 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_Color = cssValue;
			break;
		case CSS_MOUSESELECT:
			this.CSS_Mouseselect_Color = 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_CELL_PREFIX + this.id + ":hover {background-color: " + this.CSS_Mouseover_Color + "}";
	html += "#" + DATE_CELL_PREFIX + this.id + " {display:block; width:100%; height:100%;" + this.CSS_DateText + ";}";
	html += "</STYLE>";
	html += "<DIV id='" + DATE_CONTAINER_PREFIX + this.id + "' name='" + DATE_CONTAINER_PREFIX + this.id + "' style='width:" + this.width + "; height:"+this.height+"'>"
	html += "<TABLE cellpadding=0 cellspacing=0 border=0>";	
	html += "<TR><TD id='"+DATE_DISPLAY_PREFIX+this.id+"' name='"+DATE_DISPLAY_PREFIX+this.id+"' align='center' valign='middle' STYLE='height:"+this.height+";width:100%; "+this.CSS_DisplayArea+"' nowrap>";
	html += "</TD><TD width='"+this.height+"'>";
	html += "<INPUT TYPE='button' VALUE='" + this.CSS_ButtonText + "' style='height:"+this.height+"; width:"+this.height+"; " + this.CSS_Button + ";' onClick='DatePicker_TogglePicker(" + this.id + ");' TITLE='Click to Open / Close'>";
	html += "<DIV id='"+DATE_DROPDOWN_PREFIX+this.id+"' name='"+DATE_DROPDOWN_PREFIX+this.id+"' style='position:absolute; display:none; height: 164px; width:164px; border: 1px solid #CCCCCC; background-color: " + this.CSS_Cal_Background + "; " + this.CSS_Cal_Image + "'>";
	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"){
		//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 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%><tr><td width='14%' height='12%'>";
	if (this.showYearNav) html += "<A HREF='javascript:DatePicker_DecrementYear(" + this.id + ")' STYLE='" + this.CSS_NavYear + "'>" + this.NavYearPrevious + "</A>";
	html += "</td><td width='14%' height='12%'>";
	if (this.showMonthNav) html += "<A HREF='javascript:DatePicker_DecrementMonth(" + this.id + ")' STYLE='" + this.CSS_NavMonth + "'>" + this.NavMonthPrevious + "</A>";
	html += "</td><td id='" + DATE_MONTHYEARDISPLAY_PREFIX + this.id + "' name='" + DATE_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:DatePicker_IncrementMonth(" + this.id + ")' STYLE='" + this.CSS_NavMonth + "'>" + this.NavMonthNext + "</A>";
	html += "</td><td width='14%' height='12%'>";
	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 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='" + DATE_CELL_PREFIX + this.id + "' NAME='" + DATE_CELL_PREFIX + this.id + "' HREF='javascript:DatePicker_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='" + DATE_CELL_PREFIX + this.id + "' NAME='" + DATE_CELL_PREFIX + this.id + "' HREF='javascript:DatePicker_SetDay (" + this.id + ", 32);'>X</a></td>";
					}else if (!this.returnNullDate){
						html += "<td></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;
	
//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 DPO.currentDate.getFullYear() + "/" + eval(DPO.currentDate.getMonth()+1) + "/" + DPO.currentDate.getDate();	
		}
	}
}
function DatePicker_GetMonthName(){
	return 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());
//Do the increment
	if (currentMonth == 11){
		currentMonth = 0;
		currentYear += 1;
	}else{
		currentMonth += 1;
	}
//Test the daylimit
	var incDayLimit = DatePicker_Util_getDayLimit_MonthID(currentMonth, currentYear);
	if (currentDate > incDayLimit)currentDate=incDayLimit;
//Assign the new values
	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());
//Do the decrement
	if (currentMonth == 0){
		currentMonth = 11;
		currentYear -= 1;
	}else{
		currentMonth -= 1;
	}
//Test the daylimit
	var decDayLimit = DatePicker_Util_getDayLimit_MonthID(currentMonth, currentYear);
	if (currentDate > decDayLimit)currentDate=decDayLimit;
//Assign the new values
	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());
//Do the increment
	currentYear += 1;
//Test the daylimit
	var incDayLimit = DatePicker_Util_getDayLimit_MonthID(currentMonth, currentYear);
	if (currentDate > incDayLimit)currentDate=incDayLimit;
//Assign the new values
	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());
//Do the decrement
	currentYear -= 1;
//Test the daylimit
	var decDayLimit = DatePicker_Util_getDayLimit_MonthID(currentMonth, currentYear);
	if (currentDate > decDayLimit)currentDate=decDayLimit;
//Assign the new values
	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='inline';
	this.isPickerVisible = true;
	this.toggleZOrderElements(!this.isPickerVisible);
}