// Gaia Ajax Widgets Copyright (C) 2007 - 2008 Gaiaware AS. details at http://ajaxwidgets.com/
Gaia.DateTimePicker=Class.create();Object.extend(Gaia.DateTimePicker.prototype,Gaia.TextBox.prototype);Object.extend(Gaia.DateTimePicker.prototype,Gaia.Skinnable.prototype);Object.extend(Gaia.DateTimePicker.prototype,{initialize:function(element,options){this.initializeDateTimePicker(element,options);},initializeDateTimePicker:function(element,options){this.initializeTextBox(element,options);this.options=Object.extend({startsWith:'Monday'},this.options||{});if(!this.options.onSelectionChanged)
this.options.onSelectionChanged=Prototype.emptyFunction;this.picker=null;this.value=this._string2Date($F(this.element));this._onDropClicked=this._dropClicked.bindAsEventListener(this);if(this.options.hasButton){Element.observe($(this.options.hasButton),'click',this._onDropClicked);}else{Element.observe(this.element,'click',this._onDropClicked);}},setLocalizeFunction:function(value){this.options.localize=Eval(value);return this;},setStartsWith:function(value){this.options.startsWith=value;return this;},destroy:function(){if(this.options.hasButton){Element.stopObserving($(this.options.hasButton),'click',this._onDropClicked);}else{Element.stopObserving(this.element,'click',this._onDropClicked);}
this._destroyImpl();},observe:function(evtName){this._observeImpl(evtName);if(evtName=='change'){this.options.onSelectionChanged=function(This){This._onEvent(evtName);}}
return this;},_containsDOM:function(container,containee){var isParent=false;do{if((isParent=container==containee))
break;containee=containee.parentNode;}while(containee!=null);return isParent;},_checkMouseLeave:function(el,evt){if(el.contains&&evt.toElement){return!el.contains(evt.toElement);}
else if(evt.relatedTarget){return!this._containsDOM(el,evt.relatedTarget);}},_dropClicked:function(evt){if(this.picker)
return;if(this.element.disabled==true)
return;this._popUp();},showDropper:function(){this._popUp();return this;},setHasTimePart:function(value){this.options.hasTimePart=value;return this;},_popUp:function(){this.picker=document.createElement('div');var hasClassName=this.options.className!=null&&this.options.className!='';if(hasClassName){Element.addClassName(this.picker,'date_'+this.options.className);}else{this.picker.style.width='210px';this.picker.style.fontSize='12px';}
var tblSkin=this.createSkinTable();this.picker.appendChild(tblSkin.topTbl);this.picker.appendChild(tblSkin.midTbl);this.picker.appendChild(tblSkin.bottomTbl);this.element.parentNode.appendChild(this.picker);Position.absolutize(this.picker);this.draggable=new Draggable(this.picker,{handle:tblSkin.topTbl,starteffect:Prototype.emptyFunction,endeffect:function(){this._justCaptured=true;}.bind(this)});this._onClickBodyOrWhatever=this._clickBodyOrWhatever.bind(this);setTimeout(function(){Element.observe(document,'click',this._onClickBodyOrWhatever);}.bind(this),500);this._onPickerClicked=this._pickerClicked.bindAsEventListener(this);Element.observe(this.picker,'click',this._onPickerClicked);this._renderDate(this._string2Date($F(this.element)));Element.setOpacity(this.actualContentTable,0);Position.clone(this.element,this.picker,{setWidth:false,setHeight:false,offsetTop:Element.getHeight(this.element)});new Effect.Appear(this.actualContentTable,{duration:0.2});},_clickBodyOrWhatever:function(){if(this._justCaptured){delete this._justCaptured;}else{if(this.options.hasTimePart)
var date=new Date(this.value.getFullYear(),this.value.getMonth(),this.value.getDate(),parseInt($F(this.hoursEl),10),parseInt($F(this.minutesEl),10));else
var date=new Date(this.value.getFullYear(),this.value.getMonth(),this.value.getDate(),0,0);this._closePopUp(function(){this.options.onSelectionChanged(this);}.bind(this),date);}},_pickerClicked:function(evt){Event.stop(evt);if(this._justCaptured)
delete this._justCaptured;},getCalendarMonthName:function(monthNo){if(this.options.localize){var val=this.options.localize('nameOfMonth',monthNo);if(val)
return val;}
switch(monthNo){case 1:return'January';case 2:return'February';case 3:return'March';case 4:return'April';case 5:return'May';case 6:return'June';case 7:return'July';case 8:return'August';case 9:return'September';case 10:return'October';case 11:return'November';case 12:return'December';}
throw"Undefined month!";},_renderHeader:function(){var hRow=document.createElement('tr');var hCell=document.createElement('td');hCell.colSpan=8;hCell.innerHTML=this.getCalendarMonthName(this.currentMonth.getMonth()+1);Element.addClassName(hCell,'monthYear');hCell.innerHTML+=' - '+this.currentMonth.getFullYear();hRow.appendChild(hCell);return hRow;},_leftYearClicked:function(evt){this.currentMonth=new Date(this.currentMonth.getFullYear()-1,this.currentMonth.getMonth(),this.currentMonth.getDate(),(this.options.hasTimePart?parseInt($F(this.hoursEl),10):this.currentMonth.getHours()),(this.options.hasTimePart?parseInt($F(this.minutesEl),10):this.currentMonth.getMinutes()));this._renderDate(this.currentMonth);Event.stop(evt);},_leftMonthClicked:function(evt){this.currentMonth=this.currentMonth.getMonth()==0?new Date(this.currentMonth.getFullYear()-1,11,this.currentMonth.getDate(),(this.options.hasTimePart?parseInt($F(this.hoursEl),10):this.currentMonth.getHours()),(this.options.hasTimePart?parseInt($F(this.minutesEl),10):this.currentMonth.getMinutes())):new Date(this.currentMonth.getFullYear(),this.currentMonth.getMonth()-1,this.currentMonth.getDate(),(this.options.hasTimePart?parseInt($F(this.hoursEl),10):this.currentMonth.getHours()),(this.options.hasTimePart?parseInt($F(this.minutesEl),10):this.currentMonth.getMinutes()));this._renderDate(this.currentMonth);Event.stop(evt);},_rightMonthClicked:function(evt){this.currentMonth=this.currentMonth.getMonth()==11?new Date(this.currentMonth.getFullYear()+1,0,this.currentMonth.getDate(),(this.options.hasTimePart?parseInt($F(this.hoursEl),10):this.currentMonth.getHours()),(this.options.hasTimePart?parseInt($F(this.minutesEl),10):this.currentMonth.getMinutes())):new Date(this.currentMonth.getFullYear(),this.currentMonth.getMonth()+1,this.currentMonth.getDate(),(this.options.hasTimePart?parseInt($F(this.hoursEl),10):this.currentMonth.getHours()),(this.options.hasTimePart?parseInt($F(this.minutesEl),10):this.currentMonth.getMinutes()));this._renderDate(this.currentMonth);Event.stop(evt);},_rightYearClicked:function(evt){this.currentMonth=new Date(this.currentMonth.getFullYear()+1,this.currentMonth.getMonth(),this.currentMonth.getDate(),(this.options.hasTimePart?parseInt($F(this.hoursEl),10):this.currentMonth.getHours()),(this.options.hasTimePart?parseInt($F(this.minutesEl),10):this.currentMonth.getMinutes()));this._renderDate(this.currentMonth);Event.stop(evt);},todayClicked:function(){this._clicked(new Date());},_renderNavigator:function(){var nRow=document.createElement('tr');Element.addClassName(nRow,'navigate');var hLeftYear=document.createElement('td');this.hLeftYear=hLeftYear;hLeftYear.innerHTML='&lt;&lt;';this._onLeftYearClicked=this._leftYearClicked.bindAsEventListener(this);Element.observe(hLeftYear,'click',this._onLeftYearClicked);nRow.appendChild(hLeftYear);var hLeftMonth=document.createElement('td');this.hLeftMonth=hLeftMonth;hLeftMonth.innerHTML='&lt;';this._onLeftMonthClicked=this._leftMonthClicked.bindAsEventListener(this);Element.observe(hLeftMonth,'click',this._onLeftMonthClicked);nRow.appendChild(hLeftMonth);var hToday=document.createElement('td');this.hToday=hToday;hToday.colSpan=4;var todayString='Today';if(this.options.localize){var val=this.options.localize('todayName',null);if(val)
todayString=val;}
hToday.innerHTML=todayString;this._onTodayClicked=this.todayClicked.bind(this);Element.observe(hToday,'click',this._onTodayClicked);nRow.appendChild(hToday);var hRightMonth=document.createElement('td');this.hRightMonth=hRightMonth;hRightMonth.innerHTML='&gt;';this._onRightMonthClicked=this._rightMonthClicked.bindAsEventListener(this);Element.observe(hRightMonth,'click',this._onRightMonthClicked);nRow.appendChild(hRightMonth);var hRightYear=document.createElement('td');this.hRightYear=hRightYear;hRightYear.innerHTML='&gt;&gt;';this._onRightYearClicked=this._rightYearClicked.bindAsEventListener(this);Element.observe(hRightYear,'click',this._onRightYearClicked);nRow.appendChild(hRightYear);this._onHoverOverButtonArray=new Array();[hLeftMonth,hLeftYear,hRightMonth,hRightYear,hToday].each(function(el){var obj=new Object();obj.el=el;obj._evtOn=this._hoverOverButton.bind(this,el);obj._evtOff=this._hoverOffButton.bind(this,el);this._onHoverOverButtonArray.push(obj);Element.observe(el,'mouseover',obj._evtOn);Element.observe(el,'mouseout',obj._evtOff);}.bind(this));return nRow;},_hoverOverButton:function(el){Element.addClassName(el,'mouseOverBtn');},_hoverOffButton:function(el){Element.removeClassName(el,'mouseOverBtn');},getDayName:function(noDay){if(this.options.localize){var val=this.options.localize('nameOfDay',noDay);if(val)
return val;}
switch(noDay){case 0:return'&nbsp;';case 1:return'Mon';case 2:return'Tue';case 3:return'Wed';case 4:return'Thu';case 5:return'Fri';case 6:return'Sat';case 7:return'Sun';}
throw"Out of bounds in getDayName";},isHoliday:function(date){if(this.options.localize){var val=this.options.localize('isHoliday',date);if(val!=null)
return val;}
if(date.getDay()==6||date.getDay()==0)
return true;if(date.getMonth()==4&&date.getDate()==1)
return true;if(date.getMonth()==0&&date.getDate()==1)
return true;if(date.getMonth()==11){if(date.getDate()==25||date.getDate()==26)
return true;}
return false;},_renderDate:function(curDate){this._removeEventHandlers();this.value=new Date(curDate.valueOf());this.currentMonth=curDate;var x,y;if(this.picker.childNodes.length>0){x=this.picker.childNodes[0].style.left;y=this.picker.childNodes[0].style.top;}
var table=document.createElement('table');var tbody=document.createElement('tbody');if(x&&y){table.style.left=x;table.style.top=y;}
this._allCellEventsArray=new Array();var idxDate=curDate;idxDate.setDate(1);var day;switch(this.options.startsWith){case'Sunday':day=0;break;case'Monday':day=1;break;case'Tuesday':day=2;break;case'Wednesday':day=3;break;case'Thursday':day=4;break;case'Friday':day=5;break;case'Saturday':day=6;break;}
while(idxDate.getDay()!=day){idxDate=new Date(idxDate.valueOf()-(1000*3600*24));}
var hRow=this._renderHeader();tbody.appendChild(hRow);var nRow=this._renderNavigator();tbody.appendChild(nRow);var weekNoCacheCell=null;var weekDayCacheCell=new Array();for(var rowNo=0;rowNo<7;rowNo++){var row=document.createElement('tr');var tmpDay=day-1;if(tmpDay==-1)
tmpDay=6;for(var colNo=0;colNo<8;colNo++){var cell=document.createElement('td');if(rowNo==0){if(colNo!=0)
weekDayCacheCell.push(cell);var dayToFetch=(colNo+tmpDay)%8;if(colNo==0)
dayToFetch=0;else if(tmpDay!=0&&colNo>(7-tmpDay))
dayToFetch=(dayToFetch+1)%8;cell.innerHTML=this.getDayName(dayToFetch);if(colNo==0)
Element.addClassName(cell,'weekHeader')
else
Element.addClassName(cell,'weekDayHeader')}else{if(this.isHoliday(idxDate))
Element.addClassName(cell,'holliday');if(colNo==0){cell.innerHTML=this._getWeekNr(idxDate);Element.addClassName(cell,'weekNo');weekNoCacheCell=cell;}else{cell.innerHTML=idxDate.getDate();var evtForCell=new Object();evtForCell.el=cell;evtForCell.evtName='mouseover';evtForCell.binded=this._mouseOver.bind(this,cell,weekNoCacheCell,weekDayCacheCell[colNo-1]);this._allCellEventsArray.push(evtForCell);Element.observe(evtForCell.el,evtForCell.evtName,evtForCell.binded);evtForCell=new Object();evtForCell.el=cell;evtForCell.evtName='click';evtForCell.binded=this._clicked.bind(this,idxDate);this._allCellEventsArray.push(evtForCell);Element.observe(evtForCell.el,evtForCell.evtName,evtForCell.binded);evtForCell=new Object();evtForCell.el=cell;evtForCell.evtName='mouseout';evtForCell.binded=this._mouseOut.bind(this,cell,weekNoCacheCell,weekDayCacheCell[colNo-1]);this._allCellEventsArray.push(evtForCell);Element.observe(evtForCell.el,evtForCell.evtName,evtForCell.binded);if(idxDate.getMonth()!=curDate.getMonth())
Element.addClassName(cell,'offMonth');if(this.value.getFullYear()==idxDate.getFullYear()&&this.value.getDate()==idxDate.getDate()&&this.value.getMonth()==idxDate.getMonth()){Element.addClassName(cell,'selectedDate');}
var hoursToAdd=24;if(idxDate.getMonth()==9){if(idxDate.getDay()==0&&idxDate.getDate()>=25)
hoursToAdd=25;}
idxDate=new Date(idxDate.valueOf()+(1000*3600*hoursToAdd));}}
row.appendChild(cell);}
tbody.appendChild(row);if((idxDate.getMonth()>curDate.getMonth()&&idxDate.getFullYear()==curDate.getFullYear())||(idxDate.getMonth()<curDate.getMonth()&&idxDate.getFullYear()>curDate.getFullYear()))
break;}
if(this.options.hasTimePart==true){var sub=this._createSub();tbody.appendChild(sub);}
table.appendChild(tbody);if(this.actualContentTable)
this.actualContentTable.parentNode.removeChild(this.actualContentTable);this.actualContentTable=table;this.actualContentCell.appendChild(table);},_hourPlusMouseDown:function(evt){delete this.hasMoved;Element.addClassName(this.hoursEl,'selected');this.hoursCapture=Event.pointerX(evt);Event.stop(evt);},_minutePlusMouseDown:function(evt){delete this.hasMoved;Element.addClassName(this.minutesEl,'selected');this.minutesCapture=Event.pointerX(evt);Event.stop(evt);},_hoursInputKeyDown:function(){this.hasChanges=true;},_minutesInputKeyDown:function(){this.hasChanges=true;},_createSub:function(){var sub=document.createElement('tr');Element.addClassName(sub,'timePartRow');var left=document.createElement('td');left.colSpan=2;sub.appendChild(left);var hPP=document.createElement('td');hPP.className='date_'+this.options.className+'_navigator';hPP.innerHTML='+';sub.appendChild(hPP);this._hourPlus=hPP;this._onHourPlusMouseDown=this._hourPlusMouseDown.bindAsEventListener(this);Element.observe(this._hourPlus,'mousedown',this._onHourPlusMouseDown);var timePart=document.createElement('td');timePart.colSpan=2;var hours=document.createElement('input');this._hoursInput=hours;this._onHoursInputKeyDown=this._hoursInputKeyDown.bind(this);Element.observe(this._hoursInput,'keydown',this._onHoursInputKeyDown);hours.type='text';var hourValue=this.value.getHours();if(hourValue<10)
hourValue='0'+hourValue;hours.value=hourValue;timePart.appendChild(hours);this.hoursEl=hours;var colon=document.createElement('b');colon.innerHTML=':';timePart.appendChild(colon);var minutes=document.createElement('input');this._minutesInput=minutes;this._onMinutesInputKeyDown=this._minutesInputKeyDown.bind(this);Element.observe(this._minutesInput,'keydown',this._onMinutesInputKeyDown);minutes.type='text';var minuteValue=this.value.getMinutes();if(minuteValue<10)
minuteValue='0'+minuteValue;minutes.value=minuteValue;timePart.appendChild(minutes);this.minutesEl=minutes;sub.appendChild(timePart);var mPP=document.createElement('td');mPP.className='date_'+this.options.className+'_navigator';mPP.innerHTML='+';this._minutePlus=mPP;this._onMinutePlusMouseDown=this._minutePlusMouseDown.bindAsEventListener(this);Element.observe(this._minutePlus,'mousedown',this._onMinutePlusMouseDown);sub.appendChild(mPP);Element.observe(document.getElementsByTagName('body')[0],'mouseup',function(evt){if(this.hoursCapture){this._justCaptured=true;Element.removeClassName(this.hoursEl,'selected');delete this.hoursCapture;if(!this.hasMoved){this.hasChanges=true;var value=parseInt($F(this.hoursEl),10);if(evt.shiftKey){if(value==0)value=23;else value-=1;}else{if(value==23)value=0;else value+=1;}
if(value<10)this.hoursEl.value='0'+value;else this.hoursEl.value=value;}}else if(this.minutesCapture){this._justCaptured=true;Element.removeClassName(this.minutesEl,'selected');delete this.minutesCapture;if(!this.hasMoved){this.hasChanges=true;var value=parseInt($F(this.minutesEl),10);if(evt.shiftKey){if(value==0)value=59;else value-=1;}else{if(value==59)value=0;else value+=1;}
if(value<10)this.minutesEl.value='0'+value;else this.minutesEl.value=value;}}}.bindAsEventListener(this));Element.observe(document.getElementsByTagName('body')[0],'mousemove',function(evt){if(this.hoursCapture){var startX=this.hoursCapture;var newX=Event.pointerX(evt)
var delta=newX-startX;if(Math.abs(delta)>4){this.hasChanges=true;this.hasMoved=true;var value=parseInt($F(this.hoursEl),10);value+=delta>0?1:-1;if(value<0)value=23;if(value>23)value=0;if(value<10)this.hoursEl.value='0'+value;else this.hoursEl.value=value;this.hoursCapture=newX;}
Event.stop(evt);}else if(this.minutesCapture){var startX=this.minutesCapture;var newX=Event.pointerX(evt)
var delta=newX-startX;if(Math.abs(delta)>4){this.hasChanges=true;this.hasMoved=true;var value=parseInt($F(this.minutesEl),10);value+=delta>0?1:-1;if(value<0)value=59;if(value>59)value=0;if(value<10)this.minutesEl.value='0'+value;else this.minutesEl.value=value;this.minutesCapture=newX;}
Event.stop(evt);}}.bindAsEventListener(this));var right=document.createElement('td');right.colSpan=2;sub.appendChild(right);return sub;},_mouseOver:function(cellElement,weekNoCacheCell,weekDayCell){Element.addClassName(cellElement,'hoover')
Element.removeClassName(weekNoCacheCell,'weekNo')
Element.addClassName(weekNoCacheCell,'hooverWeekNo')
Element.removeClassName(weekDayCell,'weekDayHeader')
Element.addClassName(weekDayCell,'hooverWeekDayHeader')},_mouseOut:function(cellElement,weekNoCacheCell,weekDayCell){Element.removeClassName(cellElement,'hoover')
Element.removeClassName(weekNoCacheCell,'hooverWeekNo')
Element.addClassName(weekNoCacheCell,'weekNo')
Element.addClassName(weekDayCell,'weekDayHeader')
Element.removeClassName(weekDayCell,'hooverWeekDayHeader')},_clicked:function(date){this.hasChanges=true;this._closePopUp(function(){this.options.onSelectionChanged(this);}.bind(this),date);},getValueAsString:function(){return this._date2String(this.value);},_removeEventHandlers:function(){var idx=0;if(this.hLeftMonth){[this.hLeftMonth,this.hLeftYear,this.hRightMonth,this.hRightYear,this.hToday].each(function(el){Element.stopObserving(el,'mouseover',this._onHoverOverButtonArray[idx]._evtOn);Element.stopObserving(el,'mouseout',this._onHoverOverButtonArray[idx]._evtOff);idx+=1;}.bind(this));}
if(this._onHourPlusMouseDown){Element.stopObserving(this._hourPlus,'mousedown',this._onHourPlusMouseDown);Element.stopObserving(this._hoursInput,'keydown',this._onHoursInputKeyDown);Element.stopObserving(this._minutesInput,'keydown',this._onMinutesInputKeyDown);Element.stopObserving(this._minutePlus,'mousedown',this._onMinutePlusMouseDown);}
if(this._allCellEventsArray){this._allCellEventsArray.each(function(idxEvt){Element.stopObserving(idxEvt.el,idxEvt.evtName,idxEvt.binded);});}
if(this.hLeftYear){Element.stopObserving(this.picker,'click',this._onPickerClicked);Element.stopObserving(this.hLeftYear,'click',this._onLeftYearClicked);Element.stopObserving(this.hLeftMonth,'click',this._onLeftMonthClicked);Element.stopObserving(this.hRightMonth,'click',this._onRightMonthClicked);Element.stopObserving(this.hRightYear,'click',this._onRightYearClicked);Element.stopObserving(this.hToday,'click',this._onTodayClicked);}},_closePopUp:function(afterFinished,date){if(this.hoursCapture||this.minutesCapture)
return;this._removeEventHandlers();delete this.hLeftYear;delete this.hLeftMonth;this.draggable.destroy();Element.stopObserving(document,'click',this._onClickBodyOrWhatever);var changes=this.hasChanges;if(this.hasChanges&&date){if(this.options.hasTimePart)
this.value=new Date(date.getFullYear(),date.getMonth(),date.getDate(),parseInt($F(this.hoursEl),10),parseInt($F(this.minutesEl),10));else
this.value=new Date(date.getFullYear(),date.getMonth(),date.getDate(),0,0);this.element.value=this._date2String(this.value);}
new Effect.Fade(this.actualContentTable,{duration:0.2,afterFinish:function(){if(this.picker&&this.picker.parentNode){Element.hide(this.picker);setTimeout(function(){this.picker.parentNode.removeChild(this.picker);this.picker=null;}.bind(this),50);}
if(changes&&afterFinished){afterFinished();}}.bind(this)});if(this.hasChanges&&date){new Effect.Highlight(this.element,{duration:0.4});}
delete this.hasChanges;delete this.hasMoved;delete this.hoursCapture;delete this.minutesCapture;},_getWeekNr:function(dateIn){var dy=dateIn.getDate();var mo=dateIn.getMonth();var yr=dateIn.getFullYear();var P3D=259200000;var P7D=604800000;var s=Math.floor((Date.UTC(yr,mo,dy)+P3D)/P7D)
var tmp=new Date(s*P7D)
var j=tmp.getFullYear();var q=1+s-Math.floor((Date.UTC(j,0,4)+P3D)/P7D)
return q},_date2String:function(date){var year=''+date.getFullYear();var month=''+(date.getMonth()<9?'0'+(date.getMonth()+1):(date.getMonth()+1));var day=''+(date.getDate()<10?'0'+date.getDate():date.getDate());var hours=''+(date.getHours()<10?'0'+date.getHours():date.getHours());var minutes=''+(date.getMinutes()<10?'0'+date.getMinutes():date.getMinutes());var retVal=this.options.format;retVal=retVal.replace('yyyy',year);retVal=retVal.replace('MM',month);retVal=retVal.replace('dd',day);retVal=retVal.replace('HH',hours);retVal=retVal.replace('mm',minutes);return retVal;},setFormat:function(value){this.options.format=value;return this;},_string2Date:function(dateStr){if(dateStr.length==0)
return new Date();try{var startOfFullYear=this.options.format.indexOf('yyyy');var startOfMonth=this.options.format.indexOf('MM');var startOfDay=this.options.format.indexOf('dd');var startOfHours=this.options.format.indexOf('HH');var startOfMinutes=this.options.format.indexOf('mm');if(startOfFullYear==-1||startOfMonth==-1||startOfDay==-1||startOfHours==-1||startOfMinutes==-1)
return new Date();var mustBeMinimum=Math.max(startOfFullYear+4,Math.max(startOfMonth+2,Math.max(startOfDay+2,Math.max(startOfHours,Math.max(startOfMinutes,0)))));if(dateStr.length<mustBeMinimum)
return new Date();var regEx=new RegExp(this._getDateTimeRegEx());if(!regEx.test(dateStr))
return new Date();var year=dateStr.substr(startOfFullYear,4);var month=dateStr.substr(startOfMonth,2);var day=dateStr.substr(startOfDay,2);var hours=dateStr.substr(startOfHours,2);var minutes=dateStr.substr(startOfMinutes,2);year=parseInt(year,10);month=parseInt(month,10)-1;day=parseInt(day,10);hours=parseInt(hours,10);minutes=parseInt(minutes,10);return new Date(year,month,day,hours,minutes);}catch(e){return new Date();}},_getDateTimeRegEx:function(){var regExString=this.options.format;regExString=regExString.replace(/\\/g,'\\\\');regExString=regExString.replace(/\[/g,'\\[');regExString=regExString.replace(/\$/g,'\\$');regExString=regExString.replace(/\^/g,'\\^');regExString=regExString.replace(/\./g,'\\.');regExString=regExString.replace(/\|/g,'\\|');regExString=regExString.replace(/\+/g,'\\+');regExString=regExString.replace(/\*/g,'\\*');regExString=regExString.replace(/\?/g,'\\?');regExString=regExString.replace(/\(/g,'\\(');regExString=regExString.replace(/\)/g,'\\)');regExString=regExString.replace(/yyyy/g,'\\d\\d\\d\\d');regExString=regExString.replace(/MM/g,'(0[1-9]|1[012])');regExString=regExString.replace(/dd/g,'(0[1-9]|[12][0-9]|3[01])');regExString=regExString.replace(/HH/g,'([01][0-9]|2[0-3])');regExString=regExString.replace(/mm/g,'[0-5][0-9]');regExString=regExString.replace(/ /g,'\\s');return'^'+regExString+'$';}});Gaia.DateTimePicker.browserFinishedLoading=true;