
Panagora.applyConstants=function applyConstants(message,constantStore){var constants=message.match(/\@\{[a-z_]+\}/gi);constantStore=constantStore||Panagora.localizationData.strings||{};if(constants!==null){var cl=constants.length;while(cl-->0){var constant=constants[cl].replace(/@\{(.+)\}/g,'$1');var str=constantStore[constant.toUpperCase()]||constant;message=message.replace(new RegExp('\\@\\{'+constant+'\\}','gi'),str);}}
return message;};Panagora.getConstant=function getConstant(constantKey,fallbackString){if(Panagora.localizationData.strings[constantKey]){return Panagora.localizationData.strings[constantKey];}else if(fallbackString){return fallbackString;}else{return constantKey;}};Panagora.dateFormat=function dateFormat(){var token=/d{1,4}|M{1,4}|yy(?:yy)?|([HhmsTt])\1?|[LloZ]|"[^"]*"|'[^']*'/g,timezone=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,timezoneClip=/[^-+\dA-Z]/g,pad=function(value,length){value=String(value);length=parseInt(length)||2;while(value.length<length)
value="0"+value;return value;};return function(date,mask){if(arguments.length==1&&(typeof date=="string"||date instanceof String)&&!/\d/.test(date)){mask=date;date=undefined;}
date=date?new Date(date):new Date();if(isNaN(date))
throw"invalid date";var dF=Panagora.dateFormat;mask=String(dF.masks[mask]||mask||dF.masks["default"]);var d=date.getDate(),D=date.getDay(),M=date.getMonth(),y=date.getFullYear(),H=date.getHours(),m=date.getMinutes(),s=date.getSeconds(),L=date.getMilliseconds(),o=date.getTimezoneOffset(),flags={d:d,dd:pad(d),ddd:dF.i18n.dayNames[D],dddd:dF.i18n.dayNames[D+7],M:M+1,MM:pad(M+1),MMM:dF.i18n.monthNames[M],MMMM:dF.i18n.monthNames[M+12],yy:String(y).slice(2),yyyy:y,h:H%12||12,hh:pad(H%12||12),H:H,HH:pad(H),m:m,mm:pad(m),s:s,ss:pad(s),l:pad(L,3),L:pad(L>99?Math.round(L/10):L),t:H<12?"a":"p",tt:H<12?"am":"pm",T:H<12?"A":"P",TT:H<12?"AM":"PM",Z:(String(date).match(timezone)||[""]).pop().replace(timezoneClip,""),o:(o>0?"-":"+")+pad(Math.floor(Math.abs(o)/60)*100+Math.abs(o)%60,4)};return mask.replace(token,function($0){return($0 in flags)?flags[$0]:$0.slice(1,$0.length-1);});};}();Panagora.dateFormat.masks={"default":"yyyy-MM-dd HH:mm:ss",shortDate:"m/d/yy",mediumDate:"MMM d, yyyy",longDate:"MMMM d, yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",isoDate:"yyyy-MM-dd",isoTime:"HH:mm:ss",isoDateTime:"yyyy-MM-dd'T'HH:mm:ss",isoFullDateTime:"yyyy-MM-dd'T'HH:mm:ss.lo"};if(Panagora.localizationData){var formats=Panagora.localizationData.culture.dateTimeFormat;Panagora.dateFormat.masks["default"]=formats.shortDatePattern+" "+formats.longTimePattern;Panagora.dateFormat.masks.shortDate=formats.shortDatePattern;Panagora.dateFormat.masks.mediumDate=formats.monthDayPattern;Panagora.dateFormat.masks.longDate=formats.longDatePattern;Panagora.dateFormat.masks.longTime=formats.longTimePattern;Panagora.dateFormat.i18n={dayNames:formats.abbreviatedDayNames.concat(formats.dayNames),monthNames:formats.abbreviatedMonthNames.concat(formats.monthNames)};}else{Panagora.dateFormat.i18n={dayNames:["Sun","Mon","Tue","Wed","Thr","Fri","Sat","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","January","February","March","April","May","June","July","August","September","October","November","December"]};}
Date.prototype.format=function format(mask){return Panagora.dateFormat(this,mask);};