var _us_date_format=true;
var _err_class="error";
var _date_format=_us_date_format?"(mm/dd/yyyy)":"(dd/mm/yyyy)";
var _msg_suffix="Msg";
var _calendar_format="%m/%d/%Y";
var _init_magicDate=function(){
};
if(document.getElementsByTagName){
_init_magicDate=function(){
is=document.getElementsByTagName("input");
for(n=0;n<is.length;n++){
var i=is[n];
if(hasClass(i,"magicdate")&&(i.id)&&(!i.readOnly)){
_makeDateMagic(i);
_makeCalendarPopup(i);
}
}
};
}
function _makeDateMagic(_2){
addEvent(_2,"blur",_validateDate);
addEvent(_2,"focus",_selectEntered);
if(_2.value&&_2.value.length>0){
magicDate(_2);
}
}
function _makeCalendarPopup(o){
var _4=o.id;
var _5=o.parentNode;
if(_5&&_5.tagName=="SPAN"){
var _6=document.createElement("input");
_6.type="button";
_6.className="calbtn";
_6.title="Pick a date";
_6.targetId=_4;
var _7=document.getElementById(_4+"_button");
if(_7){
_7.parentNode.replaceChild(_6,_7);
}else{
var _8=_5.firstChild;
while(_8&&(_8.tagName!="INPUT")){
_8=_8.nextSibling;
}
var _9=_8;
while(_9&&_9.tagName){
_9=_9.nextSibling;
}
if(_8&&_9){
_5.insertBefore(_6,_9);
}else{
_5.appendChild(_6);
}
}
addEvent(_6,"click",_popupCalendar);
}
}
function _popup_selected(_a,_b){
var dt=new Date(_b);
_a.sel.value=_b;
if(dt!=_b){
_a.callCloseHandler();
magicDate(_a.sel);
}
}
function closeHandler(_d){
_d.hide();
calendar=null;
}
function _selectEntered(_e){
var _f=getEventSource(_e);
if(_f.className.indexOf("error")==-1){
_f.select();
}
}
function _validateDate(elm){
var _11=getEventSource(elm);
magicDate(_11);
}
function _popupCalendar(elm){
var el=getEventSource(elm);
var inp=document.getElementById(el.targetId);
if(calendar!=null){
calendar.hide();
}else{
var cal=new Calendar(true,null,_popup_selected,closeHandler);
cal.showsOtherMonths=true;
calendar=cal;
cal.setRange(1900,2070);
cal.create();
}
calendar.setDateFormat(_calendar_format);
calendar.parseDate(inp.value);
calendar.sel=inp;
calendar.showAtElement(el,"Br");
return false;
}
Array.prototype.indexOf=function(_16){
for(var i=0;i<this.length;i++){
if(this[i]==_16){
return i;
}
}
return -1;
};
Array.prototype.filter=function(_18){
var _19=[];
for(var i=0;i<this.length;i++){
if(_18(this[i])){
_19[_19.length]=this[i];
}
}
return _19;
};
var monthNames="January February March April May June July August September October November December".split(" ");
var weekdayNames="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" ");
function parseMonth(_1b){
var _1c=monthNames.filter(function(_1d){
return new RegExp("^"+_1b,"i").test(_1d);
});
if(_1c.length==0){
throw new Error("Invalid month string");
}
if(_1c.length>1){
throw new Error("Ambiguous month");
}
return monthNames.indexOf(_1c[0]);
}
function parseWeekday(_1e){
var _1f=weekdayNames.filter(function(_20){
return new RegExp("^"+_1e,"i").test(_20);
});
if(_1f.length==0){
throw new Error("Invalid day string");
}
if(_1f.length>1){
throw new Error("Ambiguous weekday");
}
return weekdayNames.indexOf(_1f[0]);
}
var dateParsePatterns=[{re:/^tod/i,handler:function(){
return new Date();
}},{re:/^tom/i,handler:function(){
var d=new Date();
d.setDate(d.getDate()+1);
return d;
}},{re:/^yes/i,handler:function(){
var d=new Date();
d.setDate(d.getDate()-1);
return d;
}},{re:/^(\d{1,2})(st|nd|rd|th)?$/i,handler:function(_23){
var d=new Date();
d.setDate(parseInt(_23[1],10));
return d;
}},{re:/^(\d{1,2})(?:st|nd|rd|th)? (\w+)$/i,handler:function(_25){
var d=new Date();
d.setDate(parseInt(_25[1],10));
d.setMonth(parseMonth(_25[2]));
return d;
}},{re:/^(\d{1,2})(?:st|nd|rd|th)? (\w+),? (\d{4})$/i,handler:function(_27){
var d=new Date();
d.setDate(parseInt(_27[1],10));
d.setMonth(parseMonth(_27[2]));
d.setYear(_27[3]);
return d;
}},{re:/^(\w+) (\d{1,2})(?:st|nd|rd|th)?$/i,handler:function(_29){
var d=new Date();
d.setDate(parseInt(_29[2],10));
d.setMonth(parseMonth(_29[1]));
return d;
}},{re:/^(\w+) (\d{1,2})(?:st|nd|rd|th)?,? (\d{4})$/i,handler:function(_2b){
var d=new Date();
d.setDate(parseInt(_2b[2],10));
d.setMonth(parseMonth(_2b[1]));
d.setYear(_2b[3]);
return d;
}},{re:/^next (\w+)$/i,handler:function(_2d){
var d=new Date();
var day=d.getDay();
var _30=parseWeekday(_2d[1]);
var _31=_30-day;
if(_30<=day){
_31+=7;
}
d.setDate(d.getDate()+_31);
return d;
}},{re:/^last (\w+)$/i,handler:function(_32){
var d=new Date();
var day=d.getDay();
var _35=parseWeekday(_32[1]);
var _36=day-_35;
if(_35>=day){
_36+=7;
}
d.setDate(d.getDate()-_36);
return d;
}},{re:/^prev (\w+)$/i,handler:function(_37){
var d=new Date();
var day=d.getDay();
var _3a=parseWeekday(_37[1]);
var _3b=day-_3a;
_3b+=7;
d.setDate(d.getDate()-_3b);
return d;
}},{re:/^this (\w+)$/i,handler:function(_3c){
var d=new Date();
var day=d.getDay();
var _3f=parseWeekday(_3c[1]);
var _40=day-_3f;
d.setDate(d.getDate()-_40);
return d;
}},{re:/^(\w+)$/i,handler:function(_41){
var d=new Date();
var day=d.getDay();
var _44=parseWeekday(_41[1]);
var _45=day-_44;
d.setDate(d.getDate()-_45);
return d;
}},{re:/(\d{1,2})\/(\d{1,2})\/(\d{2,4})/,handler:function(_46){
var d=new Date();
var yr=parseInt(_46[3],10);
yr=(yr<100?(2000+yr):yr);
if(_us_date_format){
d.setFullYear(yr,parseInt(_46[1],10)-1,parseInt(_46[2],10));
}else{
d.setFullYear(yr,parseInt(_46[2],10)-1,parseInt(_46[1],10));
}
return d;
}},{re:/(\d{4})-(\d{1,2})-(\d{1,2})/,handler:function(_49){
var d=new Date();
d.setFullYear(parseInt(_49[1],10),parseInt(_49[2],10)-1,parseInt(_49[3],10));
return d;
}},];
function parseDateString(s){
for(var i=0;i<dateParsePatterns.length;i++){
var re=dateParsePatterns[i].re;
var _4e=dateParsePatterns[i].handler;
var _4f=re.exec(s);
if(_4f){
return _4e(_4f);
}
}
throw new Error("Invalid date string");
}
function magicDate(_50){
var o=null;
if(_50==null){
return;
}
try{
var txt=_50.value;
var msg=_date_format;
_50.valid=null;
if(txt&&txt.length>0){
var d=parseDateString(_50.value);
if(_us_date_format){
_50.value=(d.getMonth()+1)+"/"+d.getDate()+"/"+d.getFullYear();
}else{
_50.value=d.getDate()+"/"+(d.getMonth()+1)+"/"+d.getFullYear();
}
if(_50.onchange){
_50.onchange();
}
msg=d.toDateString();
_50.valid=true;
}
_50.className=_elide(_50.className,_err_class);
if(o!=null){
o.firstChild.nodeValue=msg;
o.className=_elide(o.className,_err_class);
}
}
catch(e){
var s=_50.className;
if(s.indexOf(_err_class)==-1){
_50.className+=" error";
}
_50.valid=false;
var _56=e.message;
if(_56.indexOf("is null or not an object")>-1){
_56="Invalid date string";
}
if(o!=null){
o.firstChild.nodeValue=_56;
if(o.className.indexOf(_err_class)==-1){
o.className+=" error";
}
}
}
}
addEvent(window,"load",_init_magicDate);

