

function init(day,month,year, areaID, inputFieldID , path, dayNames, monthNames,dateFormat) {

	var myDatePicker = new Bs_DatePicker();
	myDatePicker.monthLongEn=monthNames;
	myDatePicker.daysEn=dayNames;
	myDatePicker.jsBaseDir = '';
	myDatePicker.toggleButton.imgPath = path;
    myDatePicker.fieldName                  = inputFieldID;
	myDatePicker.openByInit                 = false;
	myDatePicker.dateFormat                 = dateFormat;
	myDatePicker.useSpinEditForYear         = false;
	
	myDatePicker.dateInputClassName         = 'datePickerDate';
	myDatePicker.monthSelectClassName       = 'datePickerMonth';
	myDatePicker.yearInputClassName         = 'datePickerYear';
	myDatePicker.dayTableClassName          = 'datePickerTable';
	myDatePicker.dayHeaderClassName         = 'datePickerDayHeader';
	myDatePicker.dayClassName               = 'datePickerDay';
	myDatePicker.dayClassNameByWeekday['7'] = 'datePickerDaySunday';
	myDatePicker.dayTableAttributeString    = 'width="100%" border="0" cellspacing="0" cellpadding="0" bordercolor="white"';
	
	myDatePicker.dayHeaderFontColor         = '000000';
	myDatePicker.dayHeaderBgColor           = 'D4D0C8';

	myDatePicker.dayFontColor               = '000000';
	myDatePicker.dayBgColor                 = 'f6f6f6';
	myDatePicker.dayFontColorActive         = 'black';
	myDatePicker.dayBgColorActive           = 'eeeeee';
	myDatePicker.dayTableBgColor            = 'D4D0C8';
	myDatePicker.dayBgColorOver             = '#D4D5D8';
	
	myDatePicker.width                      = 115;
	myDatePicker.daysNumChars               = 1;
	
	if(day!="" && month!="" && year!="")
	{
		myDatePicker._currentDate="la";
		myDatePicker._currentDay=myDatePicker._realDay=day;
		myDatePicker._currentMonth=myDatePicker._realMonth=month;
		myDatePicker._currentYear=myDatePicker._realYear=year;
	}
	
	

 	myDatePicker.drawInto(areaID); 
  
}



/********************************************************************************************
*******************************************************************************************
*******************************************************************************************
*******************************************************************************************
*/

if (!Bs_Objects)
 {var Bs_Objects = [];
};

 
function Bs_Button(nam) {
	this._id;
	this._objectId;
	this.id;
	this.group;
	this._status = 1;
	this.inactiveStyle = 3;
	this._imgPathDefault = 'script/';
	this.imgPath;
	this.imgName;
	this.height;
	this.width;
	this.backgroundColor;
	this.title;
	this.caption;
	this.action;
	this.cssClassDefault   = 'bsBtnDefault';
	this.cssClassMouseOver = 'bsBtnMouseOver';
	this.cssClassMouseDown = 'bsBtnMouseDown';
	this._buttonBar;
	this.actualizeFromChildren = 0;
	this._childrenButtonBar;
	this._isDragAction;
	this._attachedEvents = new Array;
	this._constructor = function() {
  		this._id = Bs_Objects.length;
		Bs_Objects[this._id] = this;
		this._objectId = "Bs_Button_"+nam;
	}
  
  	this.attachEvent = function(fire, e) {
		if (typeof(e) == 'undefined') e = 'on';
		if (typeof(this._attachedEvents[e]) == 'undefined') this._attachedEvents[e] = new Array;
		this._attachedEvents[e][this._attachedEvents[e].length] = fire;
	}
	this.attachFireOff = function(param) {
	}
	this.render = function() {
		var isGecko        = this._isGecko();
		var out            = new Array;
		var containerStyle = new Array;
		out[out.length] = '<div style="display:inline;white-space:nowrap;">';
		var tagType = 'div';
		out[out.length] = '<' + tagType;
		out[out.length] = ' id="' + this._getId() + '"';
		if (typeof(this.title) != 'undefined') {
			out[out.length] = ' title="' + this.title + '"';
		}
		out[out.length] = 'unselectable="on"';
		captionType = typeof(this.caption);
		if (captionType != 'undefined') {
			containerStyle[containerStyle.length] = 'width:auto';
		} else {
			if (typeof(this.width)  != 'undefined') containerStyle[containerStyle.length] = 'width:'  + this.width  + 'px';
			if (typeof(this.height) != 'undefined') containerStyle[containerStyle.length] = 'height:' + this.height + 'px';
		}
		if (typeof(this.backgroundColor) != 'undefined') containerStyle[containerStyle.length] = 'background-color:' + this.backgroundColor;
		switch (this._status) {
			case 0:
				var filter = this._getInactiveStyleFilter();
				if (typeof(filter) == 'string') {
					containerStyle[containerStyle.length] = 'filter:' + filter;
				}
			case 1:
				out[out.length] = ' class="' + this.cssClassDefault + '"';
				break;
			case 2:
				out[out.length] = ' class="' + this.cssClassMouseDown + '"';
				break;
		}
		out[out.length] = ' style="' + containerStyle.join(';') + '"';
		out[out.length] = ' onMouseOver="Bs_Objects['+this._id+'].mouseOver(this);"';
		out[out.length] = ' onMouseOut="Bs_Objects['+this._id+'].mouseOut(this);"';
		out[out.length] = ' onMouseDown="Bs_Objects['+this._id+'].mouseDown(this);"';
		out[out.length] = ' onMouseUp="Bs_Objects['+this._id+'].mouseUp(this);"';
		out[out.length] = '>';
		if (typeof(this.imgName) != 'undefined') {
			var imgFullPath = '';
			imgFullPath += this._getImgPath();
			imgFullPath += this.imgName;
			if (this.imgName.substr(this.imgName.length -4) != '.gif') imgFullPath += '.gif';
			out[out.length] = '<img id="' + this._getId() + '_icon" src="' + imgFullPath + '"';
			if ((typeof(this.height) == 'undefined') || (this.height > 18)) out[out.length] = ' style="vertical-align:top;"';
			out[out.length] = '>';
		}
		captionType = typeof(this.caption);
		if (captionType != 'undefined') {
			if (captionType == 'string') {
				out[out.length] = this.caption;
			} else {
				out[out.length] = this.title;
			}
			if (!isGecko) out[out.length] = '&nbsp;';
		}
		if ((typeof(this._childrenButtonBar) != 'undefined') && (this.numberOfAttachedEvents('on') == 0)) {
			this.group =  this._objectId + '_pseudoGroup';
			var imgFullPath = '';
			if (this.imgPath) imgFullPath += this._getImgPath();
			imgFullPath += 'small_black_arrow_down.gif';
			out[out.length] = '&nbsp;<img src="' + imgFullPath + '" style="vertical-align:middle;">&nbsp;';
			var subBarString = this._childrenButtonBar.render();
			subBarString = '<div id="' + this._objectId + '_childBar" class="bsBtnMouseOver" style="width:auto;height:auto;display:none;position:absolute;left:50px;top:50px;">' + subBarString + '</div>';
			out[out.length] = subBarString;
		}
		out[out.length] = '</' + tagType + '>';
		out[out.length] = '</div>';
		return out.join('');
	}
	this.drawOut = function() {
		document.writeln(this.render());
	}
	this.drawInto = function(elm) {
		if (typeof(elm) == 'string') {
			elm = document.getElementById(elm);
		}
		if (elm != null) {
			var x = this.render();
			//x = x.replace(/<nobr>/, '');

			//x = x.replace(/<\/nobr>/, '');

			x = x.replace(/<nobr>/, '<span style="white-space: nowrap">');

			x = x.replace(/<\/nobr>/, '<\/span>');

			elm.innerHTML = x;
		}
	}
	this.mouseOver = function(div) {
		if (this._status == 2) return;
		if (this._status == 0) return;
		if (!this._isGecko()) {
			div.className = this.cssClassMouseOver;
		}
		this._fireEvent('over');
	}
	this.mouseOut = function(div) {
		if (this._status == 2) return;
		if (this._status == 0) return;
		if (!this._isGecko()) {
			div.className = this.cssClassDefault;
		}
		this._fireEvent('out');
	}
	
	this.mouseDown = function(div) {
	if (this._status == 0) return;
		this._isDragAction = false;
		div.className = this.cssClassMouseDown;
	}
	this.mouseUp = function(div) {
		if (this._status == 0) return;
		var doFireOn  = true;
		var doFireOff = false;
		if (this._isGecko()) {
			div.className = this.cssClassDefault;
		} else {
			div.className = this.cssClassMouseOver;
		}
		if (typeof(this.group) != 'undefined') {
			if (this._status == 2) {
				this._status = 1;
				doFireOn  = false;
				doFireOff = true;
			} else {
				div.className = this.cssClassMouseDown;
				this._status = 2;
				this._deactivateOtherGroupButtons();
			}
		}
		if (this._isDragAction) doFireOn = false;
		if (doFireOn) {
			this._fireEvent('on');
		} else if (doFireOff) {
			this._fireEvent('off');
		}
	}
	this.dragStart = function(div) {
		if (this._status == 0) return false;
		this._isDragAction = true;
		div.className = this.cssClassMouseOver;
		return false;
	}
	this._deactivateOtherGroupButtons = function() {
		if (typeof(this._buttonBar) == 'undefined') return;
		for (var i=0;i<this._buttonBar._buttons.length;i++) {
			var btnObj = this._buttonBar._buttons[i][0];
			if (typeof(btnObj) != 'object') continue;
			if ((btnObj.group == this.group)) {
				if (btnObj._objectId == this._objectId) continue;
				btnObj._status = 1;
				btnDiv = document.getElementById(btnObj._getId());
				btnDiv.className = btnObj.cssClassDefault;
			}
		}
	}
	this.setStatus = function(status) {
		if (this._status == status) return;
		var oldStatus = this._status;
		this._status = status;
		var btnDiv = document.getElementById(this._getId());
		if (btnDiv != null) {
			switch (status) {
				case 0:
					var filter = this._getInactiveStyleFilter();
					if (typeof(filter) == 'string') {
						btnDiv.style.filter = filter;
					}
					break;
				case 1:
					btnDiv.className = this.cssClassDefault;
					break;
				case 2:
					if (this._isGecko()) {
						btnDiv.className = this.cssClassDefault;
					} else {
						btnDiv.className = this.cssClassMouseDown;
					}
					if (typeof(this.group) != 'undefined') {
						this._deactivateOtherGroupButtons();
					}
					break;
			}
		}
		if ((oldStatus == 0) && (this.inactiveStyle != 0)) {
			btnDiv.style.filter = "";
		}
	}
	this.getStatus = function() {
		return this._status;
	}
	this.setTitle = function(title) {
		var elm = document.getElementById(this._getId());
		if (elm != null) elm.title = title;
		this.title = title;
	}
	this.setChildrenButtonBar = function(bar) {
		bar._parentButton = this;
		this._childrenButtonBar = bar;
	}
	this._isGecko = function() {
		if (navigator.appName == "Microsoft Internet Explorer") return false;
    		var x = navigator.userAgent.match(/gecko/i);

		return (x);
		return false;
	}
	this._fireEvent = function(e) {
		if ((e == 'on') && (typeof(this._buttonBar) != 'undefined') && (typeof(this._buttonBar._parentButton) != 'undefined')) {
			this._buttonBar._parentButton._fireEvent('off');
			if ((this._buttonBar._parentButton.actualizeFromChildren == 1) || (this._buttonBar._parentButton.actualizeFromChildren == 3)) {
				var elm = document.getElementById(this._buttonBar._parentButton._getId() + '_icon');
				var imgFullPath = '';
				if (this.imgPath) imgFullPath += this.imgPath;
				imgFullPath += this.imgName;
				if (this.imgName.substr(this.imgName.length -4) != '.gif') imgFullPath += '.gif';
				elm.src = imgFullPath;
			}
		}
		if (((e == 'on') || (e == 'off')) && (typeof(this._childrenButtonBar) != 'undefined') && (this.numberOfAttachedEvents('on') == 0)) {
			var elm = document.getElementById(this._objectId + '_childBar');
			if (elm != null) {
				if (e == 'on') {
					this._buttonBar.ignoreEvents = true;
					var pos = getAbsolutePos(document.getElementById(this._getId()));
					var plusPixel = (typeof(this.height)  != 'undefined') ? parseInt(this.height) : 22;
					elm.style.top     = (pos.y + plusPixel) + 'px';
					elm.style.left    = pos.x + 'px';
					elm.style.display = 'block';
				} else {
					this._buttonBar.ignoreEvents = false;
					elm.style.display = 'none';
				}
			}
		} else {
			if (!this._attachedEvents[e]) return;
			for (var i=0;i<this._attachedEvents[e].length;i++) {
				switch (typeof(this._attachedEvents[e][i])) {
					case 'function':
						this._attachedEvents[e][i](this);
						break;
					case 'string':
						//var ev = this._attachedEvents[e][i].replace(/__THIS__/, this);

						eval(this._attachedEvents[e][i]);
						break;
					default:
				}
			}
		}
	}
	this.numberOfAttachedEvents = function(e) {
		try {
			return this._attachedEvents[e].length;
		} catch (ex) {
			return 0;
		}
	}
	this._getId = function() {
		if (typeof(this.id) != 'undefined') return this.id;
		return this._objectId + "_container";
	}
	this._getInactiveStyleFilter = function() {
		switch (this.inactiveStyle) {
			case 0:
				return false;
				break;
			case 1:
				return 'progid:DXImageTransform.Microsoft.BasicImage(grayScale=1)';
				break;
			case 2:
				return 'progid:DXImageTransform.Microsoft.BasicImage(opacity=.3)';
				break;
			default:
				return 'progid:DXImageTransform.Microsoft.BasicImage(grayScale=1) progid:DXImageTransform.Microsoft.BasicImage(opacity=.3)';
		}
	}
	this._getImgPath = function() {
		if (typeof(this.imgPath) != 'undefined') {
			return this.imgPath;
		} else if (typeof(this._buttonBar) != 'undefined') {
			return this._buttonBar.imgPath;
		} else {
			return this._imgPathDefault;
		}
	}
	this._constructor();
}



/*
*******************************************************************************************
*******************************************************************************************
*******************************************************************************************
*/
if (!Bs_Objects) {var Bs_Objects = [];};
function bs_dp_inputFieldBlur() {
	event.srcElement.bsObj.updateByInputFieldBlur();
}
function bs_dp_inputFieldChange() {
	event.srcElement.bsObj.updateByInputFieldChange();
}
function Bs_DatePicker(fieldName) {
	this._objectId;
	this.fieldName = fieldName;
	this.jsBaseDir = '/';
	this.openByInit = false;
	this.monthLongEn = new Array('Januar', 'Februar', 'Marec', 'April', 'Maj', 'Junij', 'Julij', 'Avgust', 'September', 'Oktober', 'November', 'December');
	this.monthNumChars = 0;
	this.daysEn  = new Array('Ponedeljek', 'Torek', 'Sreda', 'Èetrtek', 'Petek', 'Sobota', 'Nedelja');
	this.daysNumChars = 2;
	this.useSpinEditForYear	= (typeof(Bs_NumberField) != 'undefined');
	this.dayHeaderFontColor = '#D4D0C8';
	this.dayHeaderBgColor   = '#808080';
	this.dayFontColor       = 'black';
	this.dayBgColor         = 'white';
	this.dayFontColorActive = 'black';
	this.dayBgColorActive   = '#0A246A';
	this.dayTableBgColor    = 'white';
	this.dayBgColorOver     = '#FFFFE1';
	this.dayTableClassName;
	this.dateInputClassName;
	this.monthSelectClassName;
	this.yearInputClassName;
	this.dayHeaderClassName;
	this.dayClassName;
	this.dayTableAttributeString = 'width="100%" border="0" cellspacing="0" cellpadding="3"';
	this.width = 150;
	this.validateErrorMsgEn = "Not a valid date: '__VALUE__'. Try again or use the date picker. Valid formats are:\nAmerican mm/dd/yyyy (eg 12/31/2003)\nEuropean dd.mm.yyyy (eg 31.12.2003)\nISO yyyy-mm-dd (eg 2003-12-31)";
	this.validateErrorMsgDe = "Kein gültiges Datum: '__VALUE__'. Versuchen Sie es erneut oder benutzen Sie den DatePicker. Gültige Formate sind:\nAmerikanisch mm/dd/yyyy (Beispiel 12/31/2003)\nEuropäisch dd.mm.yyyy (Beispiel 31.12.2003)\nISO yyyy-mm-dd (Beispiel 2003-12-31)";
	this.internalDateFormat = 'iso';
	this.displayDateFormat = 'iso';
	this.dateFormat = 'iso';
	this.dayClassNameByWeekday = new Array();
	this.dayClassNameByDay = new Array();
	this.dateRangeLower = '1800-01-01';
	this.dateRangeUpper = '2100-12-31';
	this._currentDate  = '';
	this._currentYear  = 0;
	this._currentMonth = 0;
	this._currentDay   = 0;
	this.toggleButton;
	this._constructor = function() {
		this._id = Bs_Objects.length;
		Bs_Objects[this._id] = this;
		this._objectId = "Bs_DatePicker_"+this._id;
		var btnName = this._objectId + '_tglBtn';
		this.toggleButton = new Bs_Button(btnName);
		eval(btnName + ' = this.toggleButton;');
		this.toggleButton.group           = 'toggleButton';
		this.toggleButton.imgName         = 'calender';
		this.toggleButton.cssClassDefault = 'bsBtnMouseOver';
		this.toggleButton.attachEvent('Bs_Objects['+this._id+'].toggleSelector();', 'on');
		this.toggleButton.attachEvent('Bs_Objects['+this._id+'].toggleSelector();', 'off');
	}

	this.resetDate = function() {
		this._currentYear  = 0;
		this._currentMonth = 0;
		this._currentDay   = 0;
		this.updateCurrentDate();
	}

	this.setDateByChunks = function(year, month, day) {
		var newDate = this.dateToIsoDate(year + '-' + month + '-' + day);
		if (newDate == false) return false;
		this._currentYear  = year;
		this._currentMonth = month;
		this._currentDay   = day;
		this.updateCurrentDate();
		return true;
	}

	this.setDateByJunks = function(year, month, day) {
		return this.setDateByChunks(year, month, day);
	}
	this.setDateByIso = function(isoDate) {
		if ("" == isoDate) {
			this.resetDate();
		} else {
			var newDate = this.dateToIsoDate(isoDate);
			if (newDate == false) return false;
			this._currentYear  = parseInt(newDate.substr(0, 4), 10);
			this._currentMonth = parseInt(newDate.substr(5, 2), 10);
			this._currentDay   = parseInt(newDate.substr(8, 2), 10);
			this.updateCurrentDate();
		}
		return true;
	}

	this.seedInternalWithCurrentDate = function() {
		var dateNow = new Date();
		this._realYear=this._currentYear  = this.fixYear(dateNow.getFullYear());
		this._realMonth=this._currentMonth = dateNow.getMonth() +1;
		this._realDay=this._currentDay   = dateNow.getDate();
		this.updateCurrentDate();
	}

	this.fixYear = function(year) {
		if (year < 100) {
			year = parseInt('19' + year, 10);
		} else if ((year >= 100) && (year < 110)) {
			year = parseInt(200 + '' + year.toString().substr(2, 1), 10);
		}
		return year;
	}
	this.drawInto = function(tagId) {
		document.getElementById(tagId).innerHTML = this.render(true);
		if (this.useSpinEditForYear) this._convertYearToSpinEdit();
		return true;
	}
	this.convertField = function(fieldId) {
		var origFld = document.getElementById(fieldId);
		if (origFld == null) return false;
		origFld.maxLength = 10;
		if (bs_isEmpty(origFld['name'])) origFld['name'] = fieldId;
		this.fieldName = origFld['name'];
		var htmlCode = this.render(true);
		origFld.insertAdjacentHTML('afterEnd', htmlCode);
		if (this.useSpinEditForYear) this._convertYearToSpinEdit();
		origFld.bsObj = this;
		origFld.attachEvent('onblur',  bs_dp_inputFieldBlur);
		origFld.attachEvent('onkeyup', bs_dp_inputFieldChange);
		return true;
	}
	this.render = function(noInputField) {
		var ret = new Array();
		if (!noInputField) {
			ret[ret.length] = '<table cellspacing=0 cellpadding=0><tr vAlign=center><td><input';
			ret[ret.length] = ' type="text"';
			ret[ret.length] = ' name="'    + this.fieldName + '"';
			ret[ret.length] = ' id="'      + this.fieldName + '"';
			ret[ret.length] = ' onBlur="Bs_Objects['+this._id+'].updateByInputFieldBlur();"';
			ret[ret.length] = ' onKeyUp="Bs_Objects['+this._id+'].updateByInputFieldChange();"';
			ret[ret.length] = ' size="10"';
			ret[ret.length] = ' maxlength="10"';
			ret[ret.length] = ' style="width:' + (this.width -22) + 'px;"';
			if (typeof(this.dateInputClassName) != 'undefined') {
				ret[ret.length] = ' class="' + this.dateInputClassName + '"';
			}
			ret[ret.length] = ' title="' + this.getCurrentDateReadable() + '"';
			ret[ret.length] = ' value="' + this.getCurrentDateFormatted() + '"></td><td>';
		}
 		this.toggleButton.title = (this.openByInit) ? 'Skrij koledar' : 'Prikaži koledar';

		if (this.openByInit) this.toggleButton.setStatus(2);

		var btnHtml = this.toggleButton.render();
		ret[ret.length] = btnHtml;
		ret[ret.length] = '<div  class=abs id="' + this._objectId + '_div" ';
		ret[ret.length] = ' style="margin:-17px 0px 0px 16px;width:134px;border:0px solid black; background-color:#0A246A;';
		if (!this.openByInit) {
			ret[ret.length] = ' display:none;';
		}
		ret[ret.length] = '">';
		ret[ret.length] = this.renderDatePicker();
		ret[ret.length] = '</div></td></tr></table>';
		return ret.join('');
	}

	this.renderDatePicker = function() {
		var ret = new Array();
		if (this._currentDate.length == 0) {
			this.seedInternalWithCurrentDate();
		}
		ret[ret.length] = '<nobr><div class=close><a href="#" onclick="Bs_Objects['+this._id+'].toggleSelector();"></a></div><div class=topdiv>';
		ret[ret.length] = '<select name="' + this.fieldName + '_month" style="height:18px; width:90px; font-size:10px;" ';
		ret[ret.length] = ' id="' + this._objectId + '_month" size="1"';
		ret[ret.length] = ' onChange="Bs_Objects['+this._id+'].updateByMonth();"';
		ret[ret.length] = '>';
		var i = 1;
		for (var m=0;m<this.monthLongEn.length;m++) {
			ret[ret.length] = '<option value="' + i + '"';
			if (this._currentMonth == i) ret[ret.length] = ' selected';
			ret[ret.length] = '>';
			if (this.monthNumChars > 0) {
				ret[ret.length] = this.monthLongEn[m].substr(0, this.monthNumChars);
			} else {
				ret[ret.length] = this.monthLongEn[m];
			}
			ret[ret.length] = '</option>';
			i++;
		}
		ret[ret.length] = '</select>&nbsp;';
		ret[ret.length] = '<input type="text" name="' + this.fieldName + '_year"';
		ret[ret.length] = ' id="' + this._objectId + '_year" value="' + this._currentYear + '"';
		ret[ret.length] = ' size="4" maxlength="4" onKeyUp="Bs_Objects['+this._id+'].updateByYearChange();"';
		ret[ret.length] = ' onBlur="Bs_Objects['+this._id+'].updateByYearBlur();"';
		ret[ret.length] = ' style="width:35px; height:14px;"';
		ret[ret.length] = '>';
		ret[ret.length] = '</div></nobr>';
		ret[ret.length] = '<div id="' + this._objectId + '_dayDiv">';
		ret[ret.length] = this.renderDayTable(this._currentYear, this._currentMonth, this._currentDay);		
		ret[ret.length] = '</div>';
		return ret.join('');
	}
	this.renderDayTable = function(currentYear, currentMonth, currentDay) {
		var day            = 1;
		var lastDayOfMonth = this.getNumberOfDays(currentYear, currentMonth);
		var ret = new Array();
		ret[ret.length] = '<table ' + this.dayTableAttributeString;
		ret[ret.length] = ' bgcolor="' + this.dayTableBgColor + '"';
		if (typeof(this.dayTableClassName) != 'undefined') {
			ret[ret.length] = ' class="' + this.dayTableClassName + '"';
		}
		ret[ret.length] = '>';
		if (currentYear >= 1970) {
			ret[ret.length] = '<tr style="border-bottom:2px solid white;">';
			for (var d=0;d<this.daysEn.length;d++) {
				ret[ret.length] = '<td width="14%" style="background-color:#eeeeee; *border-bottom:2px solid white;" align="center">';
				ret[ret.length] = '<span';
				ret[ret.length] = ' title="' + this.daysEn[d] + '"';
				ret[ret.length] = ' style="color:Black;cursor:default;font-family:tahoma;font-size:10px;text-transform:uppercase;font-weight:bold;"><b>';
				
				if (this.daysNumChars > 0) {
					ret[ret.length] = this.daysEn[d].substr(0, this.daysNumChars);
				} else {
					ret[ret.length] = this.daysEn[d];
				}
				ret[ret.length] = '</b></span>';
				ret[ret.length] = '</td>';
			}
			ret[ret.length] = '</tr>';
			var dateObjFirst = new Date(currentYear, currentMonth-1, 1, 0, 0, 0);
			var weekDayFirst = dateObjFirst.getDay();
			if (weekDayFirst == 0) weekDayFirst = 7;
		} else {
			var weekDayFirst = 1;
		}
		for (var i=0;i<6;i++) {
			ret[ret.length] = '<tr>';
			for (var j=1;j<8;j++) {
				if ((day > lastDayOfMonth) || ((i == 0) && (j < weekDayFirst))) {
					ret[ret.length] = '<td>&nbsp;</td>';
				} else {
					ret[ret.length] = '<td';
					ret[ret.length] = ' id="' + this._objectId + '_td' + day + '"';
					ret[ret.length] = ' align="right"';
					ret[ret.length] = ' onMouseOver="Bs_Objects['+this._id+'].dayMouseOver(' + day + ');"';
					ret[ret.length] = ' onMouseOut="Bs_Objects['+this._id+'].dayMouseOut(' + day + ');"';
					ret[ret.length] = ' onClick="Bs_Objects['+this._id+'].updateByDay(' + day + ');"';
					ret[ret.length] = ' style="cursor:hand;cursor:pointer;font-family:arial;font-size:10px;';
					
					if (day == currentDay && (currentMonth==this._realMonth && currentYear==this._realYear)) {
						ret[ret.length] = ' color:Black;background-color:#eeeeee;';
					} else {
						ret[ret.length] = ' color:Black;background-color:#f6f6f6;';
					}
					ret[ret.length] = '">';
					ret[ret.length] = day;
					ret[ret.length] = '</td>';
					day++;
				}
			}
			ret[ret.length] = '</tr>';
			if (day >= (lastDayOfMonth +1)) break;
		}
		ret[ret.length] = '</table>';
		return ret.join('');
	}
	this.updateDayTable = function() {
		document.getElementById(this._objectId + '_dayDiv').innerHTML = this.renderDayTable(this._currentYear, this._currentMonth, this._currentDay);
	}

	this.getCurrentDateReadable = function() {
		if (this._currentDay   == 0) return '';
		if (this._currentMonth == 0) return '';
		if (this._currentYear  == 0) return '';
		var ret = '';
		var dateObj = new Date(this._currentYear, this._currentMonth -1, this._currentDay);
		var weekDay = dateObj.getDay();
		if (weekDay == 0) weekDay = 7;
		ret += this.daysEn[weekDay -1] + ', '
		ret += this.monthLongEn[this._currentMonth -1] + ' ';
		ret += this._currentDay;

		ret += ', ' + this._currentYear;
		return ret;
	}

	this.getCurrentDateFormatted = function() {
		if (this._currentDay   == 0) return '';
		if (this._currentMonth == 0) return '';
		if (this._currentYear  == 0) return '';

		
		var ret="";
		var i=0;
		
		var prev="";
		while(i++ < this.dateFormat.length)
		{
			var ch=this.dateFormat.substring(i-1,i).toLowerCase();

			if(prev!=ch)
			{
				switch(ch)
				{
					case "d":
						ret+=this._currentDay;
						break;
					case "m":
						ret+=this._currentMonth;
						break;
					case "y":
						ret+=this._currentYear;
						break;
					default:
						ret+=ch;
						
				}
			}
			prev=ch;
		}
		return ret;
	}
	
	this.updateInputField = function() {
		var fld = document.getElementById(this.fieldName);
		if (fld) {
			fld.value = this.getCurrentDateFormatted();
			fld.title = this.getCurrentDateReadable();
			this._realDay=this._currentDay;
			this._realMonth=this._currentMonth;
			this._realYear=this._currentYear;
			if(window.onDateChanged) window.onDateChanged(fld);
		}
	}
	this.updateByInputFieldChange = function() {
		switch (window.event.keyCode) {
			case 16:
			case 35:
			case 36:
			case 37:
			case 38:
			case 39:
			case 40:
				return;
		}
		var userVal = document.getElementById(this.fieldName).value;
		if ((userVal.length == 10) && (this.dateToIsoDate(userVal) != false)) {
			this.updateByInputFieldBlur();
		}
	}
	this.updateByInputFieldBlur = function() {
		var fld = document.getElementById(this.fieldName);
		var userVal = fld.value;
		if (userVal == this._currentDate) return;
		if (userVal.length > 0) {
			newVal = this.dateToIsoDate(userVal);
 			if (newVal == false) {
				fld.value = '';
				alert(this.validateErrorMsgEn.replace(/__VALUE__/, userVal));

				return;
			}

			this._currentDate  = newVal, 10;
			this._currentYear  = parseInt(newVal.substr(0, 4), 10);
			this._currentMonth = parseInt(newVal.substr(5, 2), 10);
			this._currentDay   = parseInt(newVal.substr(8, 2), 10);
			this.updateInputField();
		} else {
			this.seedInternalWithCurrentDate();
		}
		var div = document.getElementById(this._objectId + '_div');
		div.innerHTML = this.renderDatePicker();
		if (this.useSpinEditForYear) this._convertYearToSpinEdit();
	}
	this.dateToIsoDate = function(someDate) {
		if (someDate.length <  6) return false;
		if (someDate.length > 10) return false;
		if (someDate.indexOf('/') >= 0) {
			var chunks = someDate.split('/');
			if (chunks.length != 3) return false;
			var day   = parseInt(chunks[1], 10);
			var month = parseInt(chunks[0], 10);
			var year  = parseInt(chunks[2], 10);
		} else if (someDate.indexOf('-') >= 0) {
			var chunks = someDate.split('-');
			if (chunks.length != 3) return false;
			var day   = parseInt(chunks[2], 10);
			var month = parseInt(chunks[1], 10);
			var year  = parseInt(chunks[0], 10);
		} else if (someDate.indexOf('.') >= 0) {
			var chunks = someDate.split('.');
			if (chunks.length != 3) return false;
			var day   = parseInt(chunks[0], 10);
			var month = parseInt(chunks[1], 10);
			var year  = parseInt(chunks[2], 10);
		} else {
			return false;
		}
		if (year < 100) {
			if (year < 30) {
				year += 2000;
			} else {
				year += 1900;
			}
		}
		if (year >= 1970) {
			var tDate = new Date(year, month -1, day);
			if (day   != tDate.getDate())               return false;
			if (month != (tDate.getMonth() +1))         return false;
			if (year  != this.fixYear(tDate.getYear())) return false;
		} else {
			if ((day   < 1)    || (day   > 31))   return false;
			if ((month < 1)    || (month > 12))   return false;
			if ((year  < 1000) || (year  > 3000)) return false;
		}
		if (day > 28) {
			if (this.getNumberOfDays(year, month) < day) return false;
		}
		var ret = '';
		ret += year + '-';
		if (month < 10) ret += '0';
		ret += month + '-';
		if (day < 10) ret += '0';
		ret += day;
		return ret;
	}
	this.updateByDay = function(day) {
		var oldTd = document.getElementById(this._objectId + '_td' + this._currentDay);

		oldTd.style.backgroundColor = "#f6f6f6";
		oldTd.style.color           = "Black";
		
		var oldTd = document.getElementById(this._objectId + '_td' + day);
		oldTd.style.backgroundColor = "Gray";
		oldTd.style.color           = "Black"
		this._currentDay = parseInt(day, 10);
		this.updateCurrentDate();
		this.updateInputField();
		this.toggleSelector();		
	}
	this.updateByMonth = function() {
		var tmp = new Bs_FormFieldSelect();
		var monthSelect = document.getElementById(this._objectId + '_month');
		tmp.init(monthSelect);
		this._currentMonth = parseInt(monthSelect.getValue(), 10);
		this.updateCurrentDate();
		//this.updateInputField();
		this.updateDayTable();
	}
	this.updateByYearChange = function() {
		var tmpYear = parseInt(document.getElementById(this._objectId + '_year').value, 10);
		if ((tmpYear < 2100) && (tmpYear > 1800)) {
			this.updateByYearBlur();
		}
	}
	this.updateByYearBlur = function() {
		var tmpYear = parseInt(document.getElementById(this._objectId + '_year').value, 10);
		this._currentYear = tmpYear;
		this.updateCurrentDate();
	//	this.updateInputField();
		this.updateDayTable();
	}
	this.updateCurrentDate = function() {
		if ((0 == this._currentYear) && (0 == this._currentMonth) && (0 == this._currentDay) ) {
			this._currentDate = "";
		} else {
			this._currentDate = this._currentYear + '-';
			if (this._currentMonth < 10) this._currentDate += '0';
			this._currentDate += this._currentMonth + '-';
			if (this._currentDay < 10) this._currentDate += '0';
			this._currentDate += this._currentDay;
		}
	}
	this.toggleSelector = function() {
		var div = document.getElementById(this._objectId + '_div');
		var me=this;
		
		//overlay za mimoklik
		var ovrlay=document.getElementsByClassName("overlay");
		var ovrdiv=null;
		if(ovrlay.length>0)
		{
			ovrdiv=ovrlay[0];
			if(!ovrdiv.onclick)
				ovrdiv.onclick=function(){me.toggleSelector()}
		}
		
		if (div.style.display == 'none') {
			div.style.display = 'block';
			var inputField = document.getElementById(this.fieldName);
			if (inputField.offsetLeft > div.offsetLeft) {
				div.style.marginLeft = inputField.offsetLeft + 'px';
			}
			var newChar  = '-';
			if (this.useSpinEditForYear) {
				var objName = this._objectId + '_yObj';
				eval(objName + '.redraw();');
			}
			
			if(ovrdiv)
				ovrdiv.style.display="";
		this.toggleButton.setTitle('Skrij koledar');
		} else {
			div.style.display = 'none';
			var newChar  = '+';
			if(ovrdiv)
				ovrdiv.style.display="none";
			this.toggleButton.setTitle('Prikaži koledar');
		}
	}
	this.dayMouseOver = function(day) {
		var td = document.getElementById(this._objectId + '_td' + day);
		if (!(document.all && td.style.backgroundColor.toUpperCase()=="Gray" || td.style.backgroundColor=="#f6f6f6"))
			td.style.backgroundColor = "#f6f6f6";
		
	}
	this.dayMouseOut = function(day) {
		var td = document.getElementById(this._objectId + '_td' + day);
		if (!(document.all && td.style.backgroundColor.toUpperCase()=="Gray" || td.style.backgroundColor=="#f6f6f6"))
			td.style.backgroundColor = "f6f6f6";
		
	}
	this.isLeapYear = function(year) {
		return (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0));
	}
	this.getNumberOfDays = function(year, month) {
		switch (month) {
			case 2:
				if (this.isLeapYear(year)) return 29;
				return 28;
				break;
			case 1:
			case 3:
			case 5:
			case 7:
			case 8:
			case 10:
			case 12:
				return 31;
				break;
			default:
				return 30;
		}
	}
	this._convertYearToSpinEdit = function() {
		var objName = this._objectId + '_yObj';
		var myNf = new Bs_NumberField(this._objectId + '_year');
		eval(objName + ' = myNf;');
		myNf.buttonUp.imgPath   = this.jsBaseDir + 'components/numberfield/img/';
		myNf.buttonDown.imgPath = this.jsBaseDir + 'components/numberfield/img/';
		myNf.minValue = 1800;
		myNf.maxValue = 2300;
		myNf.attachEvent('onAfterChange', 'Bs_Objects['+this._id+'].updateByYearBlur();');
		myNf.draw();
	}
	this._constructor();
}






/********************************************************************************************
*******************************************************************************************
*******************************************************************************************
*******************************************************************************************
*/
function Bs_FormFieldSelect() {
	this.hasValue = function(val) {
		val = val + '';
		for (var i=0;i<this.length;i++) {
			var t = this.options[i].value + '';
			if (t == val) return true;
		}
		return false;
	}
	this.getValue = function() {
		var selIndex = this.selectedIndex;
		if ((selIndex != 'undefined') && (selIndex > -1)) {
			if (typeof(this.options[selIndex].value) != 'undefined') return this.options[selIndex].value;
			if (typeof(this.options[selIndex].text)  != 'undefined') return this.options[selIndex].text;
		}
		return 'undefined';
	}
	this.getValueOrText = function(selIndex) {
		if (typeof(selIndex) == 'undefined') selIndex = this.selectedIndex;
		if ((selIndex != 'undefined') && (selIndex > -1)) {
			if (typeof(this.options[selIndex].value) != 'undefined') {
				if (typeof(this.options[selIndex].outerHTML) == 'string') {
					if (this.options[selIndex].outerHTML.toLowerCase().indexOf('value=') != -1) {
						return this.options[selIndex].value;
					}
				} else {
					if (this.options[selIndex].value != '') return this.options[selIndex].value;
				}
			}
			if (typeof(this.options[selIndex].text)  != 'undefined') return this.options[selIndex].text;
		}
		return false;
	}
	this.getTextForValue = function(value) {
		for (var i=0;i<this.options.length;i++) {
			if (this.options[i].value == value) {
				return this.options[i].text;
			}
		}
		return false;
	}
	this.setTo = function(compare, type) {
		if (typeof(type) == 'undefined') type = 'text';
		for (var i=0;i<this.length;i++) {
			if (this.options[i][type] == compare) {
				this.selectedIndex = i;
				return true;
			}
		}
		return false;
	}
	this.moveSelectedTo = function(toField, keepSelected) {
		if (typeof(toField) == 'string') toField = document.getElementById(toField);
		if (bs_isNull(toField)) return false;
		var unsetArray = new Array();
		for (var i=0;i<this.length;i++) {
			if (this.options[i].selected) {
				var newOpt = new Option(this.options[i].text, this.options[i].value, false, false);
				toField.options[toField.length] = newOpt;
				unsetArray[unsetArray.length] = i;
			}
		}
		unsetArray.reverse();
		for (var i=0;i<unsetArray.length;i++) {
			this.options[unsetArray[i]] = null;
		}
		return true;
	}
	this.moveAllTo = function(toField) {
		if (typeof(toField) == 'string') toField = document.getElementById(toField);
		if (bs_isNull(toField)) return false;
		var unsetArray = new Array();
		for (var i=0;i<this.length;i++) {
			var newOpt = new Option(this.options[i].text, this.options[i].value, false, false);
			toField.options[toField.length] = newOpt;
			unsetArray[unsetArray.length] = i;
		}
		unsetArray.reverse();
		for (var i=0;i<unsetArray.length;i++) {
			this.options[unsetArray[i]] = null;
		}
		return true;
	}
	this.moveTo = function(toField, optionValue) {
		if (typeof(toField) == 'string') toField = document.getElementById(toField);
		if (bs_isNull(toField)) return false;
		var unsetArray = new Array();
		for (var i=0;i<this.options.length;i++) {
			if (this.options[i].value == optionValue) {
				var newOpt = new Option(this.options[i].text, this.options[i].value, false, false);
				toField.options[toField.length] = newOpt;
				unsetArray[unsetArray.length] = i;
				break;
			}
		}
		unsetArray.reverse();
		for (var i=0;i<unsetArray.length;i++) {
			this.options[unsetArray[i]] = null;
		}
		return true;
	}
	this.moveHashTo = function(toField, hash) {
		if (typeof(toField) == 'string') toField = document.getElementById(toField);
		if (bs_isNull(toField)) return false;
		var unsetArray = new Array();
		for (var i=0;i<this.length;i++) {
			if (typeof(hash[this.options[i].value]) != 'undefined') {
				var newOpt = new Option(this.options[i].text, this.options[i].value, false, false);
				toField.options[toField.length] = newOpt;
				unsetArray[unsetArray.length] = i;
			}
		}
		unsetArray.reverse();
		for (var i=0;i<unsetArray.length;i++) {
			this.options[unsetArray[i]] = null;
		}
		return true;
	}
	this.getAllKeys = function() {
		var ret = new Array();
		for (var i=0;i<this.options.length;i++) {
			ret[i] = this.options[i].value;
		}
		return ret;
	}
	this.getAllOptions = function() {
		var ret = new Array();
		for (var i=0;i<this.options.length;i++) {
			var key = this.getValueOrText(i);
			ret[key] = this.options[i].text;
		}
		return ret;
	}
	this.prune = function() {
		this.options.length = 0;
	}
	this.addElementsByHash = function(dataHash) {
		var i = 0;
		for (var key in dataHash) {
			var newOpt = new Option(dataHash[key], key, false, false);
			this.options[this.options.length] = newOpt;
			i++;
		}
		return i;
	}
	this.sortByText = function(desc, natural) {
		var sortArr = new Array;
		for (var i=0;i<this.length;i++) {
			if (this.options[i].value == 'undefined') this.options[i].value = this.options[i].text;
			sortArr[i] = this.options[i].text + '__BS_SORT__' + this.options[i].value;
		}
		sortArr.sort();
		if (desc) sortArr.reverse();
		this.prune();
		var key = '';
		var txt = '';
		for (var i=0;i<sortArr.length;i++) {
			var pos = sortArr[i].lastIndexOf('__BS_SORT__');
			txt = sortArr[i].substr(0, pos);
			key = sortArr[i].substr(pos + '__BS_SORT__'.length);
			var newOpt = new Option(txt, key, false, false);
			this.options[this.options.length] = newOpt;
		}
	}
	this.sortByKey = function() {
	}
	this.setText = function(value, text) {
		for (var i=0;i<this.length;i++) {
			if (this.options[i].value == value) {
				this.options[i].text = text
				return true;
			}
		}
		return false;
	}
	this.removeElement = function(value) {
		for (var i=0;i<this.length;i++) {
			if (this.options[i].value == value) {
				this.options[i] = null;
				return true;
			}
		}
		return false;
	}
	this.init = function(formField) {
		if (formField == null) return;
		for (var name in this) {
			if (name == 'init') continue;
			formField[name] = this[name];
		}
	}
}
