function LZ(x){return(x<0||x>9?"":"0")+x}function isDate(val,format){var date=getDateFromFormat(val,format);return date==0?!1:!0}function compareDates(date1,dateformat1,date2,dateformat2){var d1=getDateFromFormat(date1,dateformat1),d2=getDateFromFormat(date2,dateformat2);return d1==0||d2==0?-1:d1>d2?1:0}function formatDate(date,format){format=format+"";var result="",i_format=0,c="",token="",y=date.getYear()+"",M=date.getMonth()+1,d=date.getDate(),E=date.getDay(),H=date.getHours(),m=date.getMinutes(),s=date.getSeconds(),yyyy,yy,MMM,MM,dd,hh,h,mm,ss,ampm,HH,KK,K,kk,k,value={};y.length<4&&(y=""+(+y+1900)),value.y=""+y,value.yyyy=y,value.yy=y.substring(2,4),value.M=M,value.MM=LZ(M),value.MMM=MONTH_NAMES[M-1],value.NNN=MONTH_NAMES[M+11],value.d=d,value.dd=LZ(d),value.E=DAY_NAMES[E+7],value.EE=DAY_NAMES[E],value.H=H,value.HH=LZ(H),value.h=H==0?12:H>12?H-12:H,value.hh=LZ(value.h),value.K=H>11?H-12:H,value.k=H+1,value.KK=LZ(value.K),value.kk=LZ(value.k),value.a=H>11?"PM":"AM",value.m=m,value.mm=LZ(m),value.s=s,value.ss=LZ(s);while(i_format<format.length){c=format.charAt(i_format),token="";while(format.charAt(i_format)==c&&i_format<format.length)token+=format.charAt(i_format++);result=value[token]!=null?result+value[token]:result+token}return result}function _isInteger(val){for(var digits="1234567890",i=0;i<val.length;i++)if(digits.indexOf(val.charAt(i))==-1)return!1;return!0}function _getInt(str,i,minlength,maxlength){for(var token,x=maxlength;x>=minlength;x--){token=str.substring(i,i+x);if(token.length<minlength)return null;if(_isInteger(token))return token}return null}function getDateFromFormat(val,format){var month_name,i,day_name,newdate;val=val+"",format=format+"";var i_val=0,i_format=0,c="",token="",token2="",x,y,now=new Date,year=now.getYear(),month=now.getMonth()+1,date=1,hh=now.getHours(),mm=now.getMinutes(),ss=now.getSeconds(),ampm="";while(i_format<format.length){c=format.charAt(i_format),token="";while(format.charAt(i_format)==c&&i_format<format.length)token+=format.charAt(i_format++);if(token=="yyyy"||token=="yy"||token=="y"){token=="yyyy"&&(x=4,y=4),token=="yy"&&(x=2,y=2),token=="y"&&(x=2,y=4),year=_getInt(val,i_val,x,y);if(year==null)return 0;i_val+=year.length,year.length==2&&(year=year>70?1900+ +year:2e3+ +year)}else if(token=="MMM"||token=="NNN"){for(month=0,i=0;i<MONTH_NAMES.length;i++){month_name=MONTH_NAMES[i];if(val.substring(i_val,i_val+month_name.length).toLowerCase()==month_name.toLowerCase())if(token=="MMM"||token=="NNN"&&i>11){month=i+1,month>12&&(month-=12),i_val+=month_name.length;break}}if(month<1||month>12)return 0}else if(token=="EE"||token=="E")for(i=0;i<DAY_NAMES.length;i++){day_name=DAY_NAMES[i];if(val.substring(i_val,i_val+day_name.length).toLowerCase()==day_name.toLowerCase()){i_val+=day_name.length;break}}else if(token=="MM"||token=="M"){month=_getInt(val,i_val,token.length,2);if(month==null||month<1||month>12)return 0;i_val+=month.length}else if(token=="dd"||token=="d"){date=_getInt(val,i_val,token.length,2);if(date==null||date<1||date>31)return 0;i_val+=date.length}else if(token=="hh"||token=="h"){hh=_getInt(val,i_val,token.length,2);if(hh==null||hh<1||hh>12)return 0;i_val+=hh.length}else if(token=="HH"||token=="H"){hh=_getInt(val,i_val,token.length,2);if(hh==null||hh<0||hh>23)return 0;i_val+=hh.length}else if(token=="KK"||token=="K"){hh=_getInt(val,i_val,token.length,2);if(hh==null||hh<0||hh>11)return 0;i_val+=hh.length}else if(token=="kk"||token=="k"){hh=_getInt(val,i_val,token.length,2);if(hh==null||hh<1||hh>24)return 0;i_val+=hh.length,hh--}else if(token=="mm"||token=="m"){mm=_getInt(val,i_val,token.length,2);if(mm==null||mm<0||mm>59)return 0;i_val+=mm.length}else if(token=="ss"||token=="s"){ss=_getInt(val,i_val,token.length,2);if(ss==null||ss<0||ss>59)return 0;i_val+=ss.length}else if(token=="a"){if(val.substring(i_val,i_val+2).toLowerCase()=="am")ampm="AM";else if(val.substring(i_val,i_val+2).toLowerCase()=="pm")ampm="PM";else return 0;i_val+=2}else{if(val.substring(i_val,i_val+token.length)!=token)return 0;i_val+=token.length}}if(i_val!=val.length)return 0;if(month==2)if(year%4==0&&year%100!=0||year%400==0){if(date>29)return 0}else if(date>28)return 0;if(month==4||month==6||month==9||month==11)if(date>30)return 0;return hh<12&&ampm=="PM"?hh=+hh+12:hh>11&&ampm=="AM"&&(hh-=12),newdate=new Date(year,month-1,date,hh,mm,ss),newdate.getTime()}function parseDate(val){var preferEuro=arguments.length==2?arguments[1]:!1,checkList,d,i,l,j;for(generalFormats=["y-M-d","MMM d, y","MMM d,y","y-MMM-d","d-MMM-y","MMM d"],monthFirst=["M/d/y","M-d-y","M.d.y","MMM-d","M/d","M-d"],dateFirst=["d/M/y","d-M-y","d.M.y","d-MMM","d/M","d-M"],checkList=["generalFormats",preferEuro?"dateFirst":"monthFirst",preferEuro?"monthFirst":"dateFirst"],d=null,i=0;i<checkList.length;i++)for(l=window[checkList[i]],j=0;j<l.length;j++){d=getDateFromFormat(val,l[j]);if(d!=0)return new Date(d)}return null}var MONTH_NAMES=["January","February","March","April","May","June","July","August","September","October","November","December","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],DAY_NAMES=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sun","Mon","Tue","Wed","Thu","Fri","Sat"]
