
var msf={};(function(){function numberPair(n){return(n<10?"0":"")+n;}
function getCulture(lcid){lcid=lcid.toLowerCase();var t={name:"en-GB",d:"dd/MM/yyyy",D:"dd MMMM yyyy",t:"HH:mm",T:"HH:mm:ss",M:"d MMMM",Y:"MMMM yyyy",s:"yyyy-MM-ddTHH:mm:ss",_m:["January","February","March","April","May","June","July","August","September","October","November","December"],_d:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],_r:".",_t:",",_c:"£#,0.00",_ct:",",_cr:"."};if(lcid.substr(0,2)=="sv"){t.name="sv-SE";t.d="yyyy-MM-dd";t.D="den dd MMMM yyyy";t._m=["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"];t._d=["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"];t._r=",";t._t=" ";t._ct=".";t._cr=",";t._c="#,0.00 kr";}else if(lcid!="en-gb"){t.name="en-US";t.t="hh:mm tt";t.T="hh:mm:ss tt";t.d="MM/dd/yyyy";t.D="MMMM dd, yyyy";t.Y="MMMM, yyyy";t._c="$#,0.00";}
t.f=t.D+" "+t.t;t.F=t.D+" "+t.T;t.g=t.d+" "+t.t;t.G=t.d+" "+t.T;return t;}
function processNumber(input,format){var digits=0,forcedDigits=-1,integralDigits=-1,groupCounter=0,decimals=0,forcedDecimals=-1,atDecimals=false,unused=true,out=[],c,i;function append(value){for(var i=0;i<value.length;i++){out.push(value.charAt(i));if(groupCounter>1&&groupCounter--%3==1){out.push(format.t);}}}
for(i=0;i<format.f.length;i++){c=format.f.charAt(i);decimals+=atDecimals;if(c=="0"){if(atDecimals){forcedDecimals=decimals;}else if(forcedDigits<0){forcedDigits=digits;}}
digits+=!atDecimals&&(c=="0"||c=="#");atDecimals=atDecimals||c==".";}
forcedDigits=forcedDigits<0?1:digits-forcedDigits;if(input<0){out.push("-");}
input=(Math.round(Math.abs(input)*Math.pow(10,decimals))/Math.pow(10,decimals)).toString();integralDigits=input.indexOf(".");integralDigits=integralDigits<0?input.length:integralDigits;i=integralDigits-digits;if(format.f.match(/^[^\.]*[0#],[0#]/)){groupCounter=Math.max(integralDigits,forcedDigits);}
for(var f=0;f<format.f.length;f++){c=format.f.charAt(f);if(c=="#"||c=="0"){if(i<integralDigits){if(i>=0){if(unused){append(input.substr(0,i));}
append(input.charAt(i));}else if(i>=integralDigits-forcedDigits){append("0");}
unused=false;}else if(forcedDecimals-->0||i<input.length){append(i>=input.length?"0":input.charAt(i));}
i++;}else if(c=="."){if(input.length>++i||forcedDecimals>0){out.push(format.r);}}else if(c!==","){out.push(c);}}
return out.join("");}
Number.prototype.__Format=function(format){var number=Number(this);if(format=="X"){return Math.round(number).toString(16).toUpperCase();}else if(format=="x"){return Math.round(number).toString(16);}else{var formatting={t:msf.LC._t,r:msf.LC._r};var g="0.################",lowerFormat=format?format.toLowerCase():null;if(lowerFormat===null||lowerFormat=="g"){format=g;}else if(lowerFormat=="n"){format="#,"+g;}else if(lowerFormat=="c"){format=msf.LC._c;formatting.r=msf.LC._cr;formatting.t=msf.LC._ct;}else if(lowerFormat=="f"){format="0.00";}
if(format.indexOf(",.")!==-1){number/=1000;}
if(format.indexOf("%")!==-1){number*=100;}
var groups=format.split(";");if(number<0&&groups.length>1){number*=-1;formatting.f=groups[1];}else{formatting.f=groups[!number&&groups.length>2?2:0];}
return processNumber(number,formatting);}};Date.prototype.__Format=function(format){var date=this;var output="";var i;if(format.length==1){format=msf.LC[format];}
return format.replace(/(d{1,4}|M{1,4}|yyyy|yy|HH|H|hh|h|mm|m|ss|s|tt)/g,function(){switch(arguments[0]){case"dddd":return msf.LC._d[date.getDay()];case"ddd":return msf.LC._d[date.getDay()].substr(0,3);case"dd":return numberPair(date.getDate());case"d":return date.getDate();case"MMMM":return msf.LC._m[date.getMonth()];case"MMM":return msf.LC._m[date.getMonth()].substr(0,3);case"MM":return numberPair(date.getMonth()+1);case"M":return date.getMonth()+1;case"yyyy":return date.getFullYear();case"yy":return date.getFullYear().toString().substr(2);case"HH":return numberPair(date.getHours());case"hh":return numberPair((date.getHours()-1)%12+1);case"H":return date.getHours();case"h":return(date.getHours()-1)%12+1;case"mm":return numberPair(date.getMinutes());case"m":return date.getMinutes();case"ss":return numberPair(date.getSeconds());case"s":return date.getSeconds();case"tt":return date.getHours()<12?"AM":"PM";default:return"";}});};String.__Format=function(str,obj0,obj1,obj2){var outerArgs=arguments,arg;return str.replace(/(\{*)\{((\d+)(\,(-?\d*))?(\:([^\}]*))?)\}/g,function(){var innerArgs=arguments;if(innerArgs[1]&&innerArgs[1].length%2==1){return innerArgs[0];}
if((arg=outerArgs[parseInt(innerArgs[3],10)+1])===undefined){throw"Missing argument";}
var formatted=arg.__Format?arg.__Format(innerArgs[7]):arg.toString();var align=parseInt(innerArgs[5],10)||0;var paddingLength=Math.abs(align)-formatted.length;if(paddingLength>0){var padding=" ";while(padding.length<paddingLength){padding+=" ";}
formatted=align>0?formatted+padding:padding+formatted;}
return innerArgs[1]+formatted;}).replace(/\{\{/g,"{");};msf.LC=null;msf.setCulture=function(languageCode){msf.LC=getCulture(languageCode)||getCulture(languageCode.substr(0,2))||getCulture();};msf.setCulture(navigator.systemLanguage||navigator.language||"en-US");var pr=Date.prototype;pr.format=pr.format||pr.__Format;pr=Number.prototype;pr.format=pr.format||pr.__Format;String.format=String.format||String.__Format;msf.doBenchmark=function(format,arg){var num=5000;var longformat="";for(var i=0;i<num;i++){longformat+=format;}
var start,end;start=new Date().valueOf();String.__Format(longformat,arg);end=new Date().valueOf();return(end-start)/num;};})();
