/*
	Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved.
	Available via Academic Free License >= 2.1 OR the modified BSD license.
	see: http://dojotoolkit.org/license for details
*/

//>>built
define("dojo/date/locale",["../_base/lang","../_base/array","../date","../cldr/supplemental","../i18n","../regexp","../string","../i18n!../cldr/nls/gregorian","module"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9){var _a={};_1.setObject(_9.id.replace(/\//g,"."),_a);function _b(_c,_d,_e,_f){return _f.replace(/([a-z])\1*/ig,function(_10){var s,pad,c=_10.charAt(0),l=_10.length,_11=["abbr","wide","narrow"];switch(c){case "G":s=_d[(l<4)?"eraAbbr":"eraNames"][_c.getFullYear()<0?0:1];break;case "y":s=_c.getFullYear();switch(l){case 1:break;case 2:if(!_e.fullYear){s=String(s);s=s.substr(s.length-2);break;}default:pad=true;}break;case "Q":case "q":s=Math.ceil((_c.getMonth()+1)/3);pad=true;break;case "M":case "L":var m=_c.getMonth();if(l<3){s=m+1;pad=true;}else{var _12=["months",c=="L"?"standAlone":"format",_11[l-3]].join("-");s=_d[_12][m];}break;case "w":var _13=0;s=_a._getWeekOfYear(_c,_13);pad=true;break;case "d":s=_c.getDate();pad=true;break;case "D":s=_a._getDayOfYear(_c);pad=true;break;case "e":case "c":var d=_c.getDay();if(l<2){s=(d-_4.getFirstDayOfWeek(_e.locale)+8)%7;break;}case "E":d=_c.getDay();if(l<3){s=d+1;pad=true;}else{var _14=["days",c=="c"?"standAlone":"format",_11[l-3]].join("-");s=_d[_14][d];}break;case "a":var _15=_c.getHours()<12?"am":"pm";s=_e[_15]||_d["dayPeriods-format-wide-"+_15];break;case "h":case "H":case "K":case "k":var h=_c.getHours();switch(c){case "h":s=(h%12)||12;break;case "H":s=h;break;case "K":s=(h%12);break;case "k":s=h||24;break;}pad=true;break;case "m":s=_c.getMinutes();pad=true;break;case "s":s=_c.getSeconds();pad=true;break;case "S":s=Math.round(_c.getMilliseconds()*Math.pow(10,l-3));pad=true;break;case "v":case "z":s=_a._getZone(_c,true,_e);if(s){break;}l=4;case "Z":var _16=_a._getZone(_c,false,_e);var tz=[(_16<=0?"+":"-"),_7.pad(Math.floor(Math.abs(_16)/60),2),_7.pad(Math.abs(_16)%60,2)];if(l==4){tz.splice(0,0,"GMT");tz.splice(3,0,":");}s=tz.join("");break;default:throw new Error("dojo.date.locale.format: invalid pattern char: "+_f);}if(pad){s=_7.pad(s,l);}return s;});};_a._getZone=function(_17,_18,_19){if(_18){return _3.getTimezoneName(_17);}else{return _17.getTimezoneOffset();}};_a.format=function(_1a,_1b){_1b=_1b||{};var _1c=_5.normalizeLocale(_1b.locale),_1d=_1b.formatLength||"short",_1e=_a._getGregorianBundle(_1c),str=[],_1f=_1.hitch(this,_b,_1a,_1e,_1b);if(_1b.selector=="year"){return _20(_1e["dateFormatItem-yyyy"]||"yyyy",_1f);}var _21;if(_1b.selector!="date"){_21=_1b.timePattern||_1e["timeFormat-"+_1d];if(_21){str.push(_20(_21,_1f));}}if(_1b.selector!="time"){_21=_1b.datePattern||_1e["dateFormat-"+_1d];if(_21){str.push(_20(_21,_1f));}}return str.length==1?str[0]:_1e["dateTimeFormat-"+_1d].replace(/\'/g,"").replace(/\{(\d+)\}/g,function(_22,key){return str[key];});};_a.regexp=function(_23){return _a._parseInfo(_23).regexp;};_a._parseInfo=function(_24){_24=_24||{};var _25=_5.normalizeLocale(_24.locale),_26=_a._getGregorianBundle(_25),_27=_24.formatLength||"short",_28=_24.datePattern||_26["dateFormat-"+_27],_29=_24.timePattern||_26["timeFormat-"+_27],_2a;if(_24.selector=="date"){_2a=_28;}else{if(_24.selector=="time"){_2a=_29;}else{_2a=_26["dateTimeFormat-"+_27].replace(/\{(\d+)\}/g,function(_2b,key){return [_29,_28][key];});}}var _2c=[],re=_20(_2a,_1.hitch(this,_2d,_2c,_26,_24));return {regexp:re,tokens:_2c,bundle:_26};};_a.parse=function(_2e,_2f){var _30=/[\u200E\u200F\u202A\u202E]/g,_31=_a._parseInfo(_2f),_32=_31.tokens,_33=_31.bundle,re=new RegExp("^"+_31.regexp.replace(_30,"")+"$",_31.strict?"":"i"),_34=re.exec(_2e&&_2e.replace(_30,""));if(!_34){return null;}var _35=["abbr","wide","narrow"],_36=[1970,0,1,0,0,0,0],_37="",_38=_2.every(_34,function(v,i){if(!i){return true;}var _39=_32[i-1],l=_39.length,c=_39.charAt(0);switch(c){case "y":if(l!=2&&_2f.strict){_36[0]=v;}else{if(v<100){v=Number(v);var _3a=""+new Date().getFullYear(),_3b=_3a.substring(0,2)*100,_3c=Math.min(Number(_3a.substring(2,4))+20,99);_36[0]=(v<_3c)?_3b+v:_3b-100+v;}else{if(_2f.strict){return false;}_36[0]=v;}}break;case "M":case "L":if(l>2){var _3d=_33["months-"+(c=="L"?"standAlone":"format")+"-"+_35[l-3]].concat();if(!_2f.strict){v=v.replace(".","").toLowerCase();_3d=_2.map(_3d,function(s){return s.replace(".","").toLowerCase();});}v=_2.indexOf(_3d,v);if(v==-1){return false;}}else{v--;}_36[1]=v;break;case "E":case "e":case "c":var _3e=_33["days-"+(c=="c"?"standAlone":"format")+"-"+_35[l-3]].concat();if(!_2f.strict){v=v.toLowerCase();_3e=_2.map(_3e,function(d){return d.toLowerCase();});}v=_2.indexOf(_3e,v);if(v==-1){return false;}break;case "D":_36[1]=0;case "d":_36[2]=v;break;case "a":var am=_2f.am||_33["dayPeriods-format-wide-am"],pm=_2f.pm||_33["dayPeriods-format-wide-pm"];if(!_2f.strict){var _3f=/\./g;v=v.replace(_3f,"").toLowerCase();am=am.replace(_3f,"").toLowerCase();pm=pm.replace(_3f,"").toLowerCase();}if(_2f.strict&&v!=am&&v!=pm){return false;}_37=(v==pm)?"p":(v==am)?"a":"";break;case "K":if(v==24){v=0;}case "h":case "H":case "k":if(v>23){return false;}_36[3]=v;break;case "m":_36[4]=v;break;case "s":_36[5]=v;break;case "S":_36[6]=v;}return true;});var _40=+_36[3];if(_37==="p"&&_40<12){_36[3]=_40+12;}else{if(_37==="a"&&_40==12){_36[3]=0;}}var _41=new Date(_36[0],_36[1],_36[2],_36[3],_36[4],_36[5],_36[6]);if(_2f.strict){_41.setFullYear(_36[0]);}var _42=_32.join(""),_43=_42.indexOf("d")!=-1,_44=_42.indexOf("M")!=-1;if(!_38||(_44&&_41.getMonth()>_36[1])||(_43&&_41.getDate()>_36[2])){return null;}if((_44&&_41.getMonth()<_36[1])||(_43&&_41.getDate()<_36[2])){_41=_3.add(_41,"hour",1);}return _41;};function _20(_45,_46,_47,_48){var _49=function(x){return x;};_46=_46||_49;_47=_47||_49;_48=_48||_49;var _4a=_45.match(/(''|[^'])+/g),_4b=_45.charAt(0)=="'";_2.forEach(_4a,function(_4c,i){if(!_4c){_4a[i]="";}else{_4a[i]=(_4b?_47:_46)(_4c.replace(/''/g,"'"));_4b=!_4b;}});return _48(_4a.join(""));};function _2d(_4d,_4e,_4f,_50){_50=_6.escapeString(_50);if(!_4f.strict){_50=_50.replace(" a"," ?a");}return _50.replace(/([a-z])\1*/ig,function(_51){var s,c=_51.charAt(0),l=_51.length,p2="",p3="";if(_4f.strict){if(l>1){p2="0"+"{"+(l-1)+"}";}if(l>2){p3="0"+"{"+(l-2)+"}";}}else{p2="0?";p3="0{0,2}";}switch(c){case "y":s="\\d{2,4}";break;case "M":case "L":s=(l>2)?"\\S+?":"1[0-2]|"+p2+"[1-9]";break;case "D":s="[12][0-9][0-9]|3[0-5][0-9]|36[0-6]|"+p2+"[1-9][0-9]|"+p3+"[1-9]";break;case "d":s="3[01]|[12]\\d|"+p2+"[1-9]";break;case "w":s="[1-4][0-9]|5[0-3]|"+p2+"[1-9]";break;case "E":case "e":case "c":s="\\S+";break;case "h":s="1[0-2]|"+p2+"[1-9]";break;case "k":s="1[01]|"+p2+"\\d";break;case "H":s="1\\d|2[0-3]|"+p2+"\\d";break;case "K":s="1\\d|2[0-4]|"+p2+"[1-9]";break;case "m":case "s":s="[0-5]\\d";break;case "S":s="\\d{"+l+"}";break;case "a":var am=_4f.am||_4e["dayPeriods-format-wide-am"],pm=_4f.pm||_4e["dayPeriods-format-wide-pm"];s=am+"|"+pm;if(!_4f.strict){if(am!=am.toLowerCase()){s+="|"+am.toLowerCase();}if(pm!=pm.toLowerCase()){s+="|"+pm.toLowerCase();}if(s.indexOf(".")!=-1){s+="|"+s.replace(/\./g,"");}}s=s.replace(/\./g,"\\.");break;default:s=".*";}if(_4d){_4d.push(_51);}return "("+s+")";}).replace(/[\xa0 ]/g,"[\\s\\xa0]");};var _52=[];_a.addCustomFormats=function(_53,_54){_52.push({pkg:_53,name:_54});};_a._getGregorianBundle=function(_55){var _56={};_2.forEach(_52,function(_57){var _58=_5.getLocalization(_57.pkg,_57.name,_55);_56=_1.mixin(_56,_58);},this);return _56;};_a.addCustomFormats(_9.id.replace(/\/date\/locale$/,".cldr"),"gregorian");_a.getNames=function(_59,_5a,_5b,_5c){var _5d,_5e=_a._getGregorianBundle(_5c),_5f=[_59,_5b,_5a];if(_5b=="standAlone"){var key=_5f.join("-");_5d=_5e[key];if(_5d[0]==1){_5d=undefined;}}_5f[1]="format";return (_5d||_5e[_5f.join("-")]).concat();};_a.isWeekend=function(_60,_61){var _62=_4.getWeekend(_61),day=(_60||new Date()).getDay();if(_62.end<_62.start){_62.end+=7;if(day<_62.start){day+=7;}}return day>=_62.start&&day<=_62.end;};_a._getDayOfYear=function(_63){return _3.difference(new Date(_63.getFullYear(),0,1,_63.getHours()),_63)+1;};_a._getWeekOfYear=function(_64,_65){if(arguments.length==1){_65=0;}var _66=new Date(_64.getFullYear(),0,1).getDay(),adj=(_66-_65+7)%7,_67=Math.floor((_a._getDayOfYear(_64)+adj-1)/7);if(_66==_65){_67++;}return _67;};return _a;});