dojo.provide("dojo.cldr.supplemental"); dojo.require("dojo.i18n"); dojo.cldr.supplemental.getFirstDayOfWeek = function(/*String?*/locale){ // summary: Returns a zero-based index for first day of the week // description: // Returns a zero-based index for first day of the week, as used by the local (Gregorian) calendar. // e.g. Sunday (returns 0), or Monday (returns 1) // from http://www.unicode.org/cldr/data/common/supplemental/supplementalData.xml:supplementalData/weekData/firstDay var firstDay = {/*default is 1=Monday*/ mv:5, af:6,bh:6,dj:6,dz:6,eg:6,er:6,et:6,iq:6,ir:6,jo:6,ke:6,kw:6, ly:6,ma:6,om:6,qa:6,sa:6,sd:6,so:6,tn:6,ye:6, ar:0,as:0,az:0,bw:0,ca:0,cn:0,fo:0,ge:0,gl:0,gu:0,hk:0,ie:0, il:0,'in':0,is:0,jm:0,jp:0,kg:0,kr:0,la:0,mh:0,mn:0,mo:0,mp:0, mt:0,nz:0,ph:0,pk:0,sg:0,sy:0,th:0,tt:0,tw:0,um:0,us:0,uz:0, vi:0,zw:0 // variant. do not use? gb:0, }; var country = dojo.cldr.supplemental._region(locale); var dow = firstDay[country]; return (dow === undefined) ? 1 : dow; /*Number*/ }; dojo.cldr.supplemental._region = function(/*String?*/locale){ locale = dojo.i18n.normalizeLocale(locale); var tags = locale.split('-'); var region = tags[1]; if(!region){ // IE often gives language only (#2269) // Arbitrary mappings of language-only locales to a country: region = {de:"de", en:"us", es:"es", fi:"fi", fr:"fr", he:"il", hu:"hu", it:"it", ja:"jp", ko:"kr", nl:"nl", pt:"br", sv:"se", zh:"cn"}[tags[0]]; }else if(region.length == 4){ // The ISO 3166 country code is usually in the second position, unless a // 4-letter script is given. See http://www.ietf.org/rfc/rfc4646.txt region = tags[2]; } return region; } dojo.cldr.supplemental.getWeekend = function(/*String?*/locale){ // summary: Returns a hash containing the start and end days of the weekend // description: // Returns a hash containing the start and end days of the weekend according to local custom using locale, // or by default in the user's locale. // e.g. {start:6, end:0} // from http://www.unicode.org/cldr/data/common/supplemental/supplementalData.xml:supplementalData/weekData/weekend{Start,End} var weekendStart = {/*default is 6=Saturday*/ 'in':0, af:4,dz:4,ir:4,om:4,sa:4,ye:4, ae:5,bh:5,eg:5,il:5,iq:5,jo:5,kw:5,ly:5,ma:5,qa:5,sd:5,sy:5,tn:5 }; var weekendEnd = {/*default is 0=Sunday*/ af:5,dz:5,ir:5,om:5,sa:5,ye:5, ae:6,bh:5,eg:6,il:6,iq:6,jo:6,kw:6,ly:6,ma:6,qa:6,sd:6,sy:6,tn:6 }; var country = dojo.cldr.supplemental._region(locale); var start = weekendStart[country]; var end = weekendEnd[country]; if(start === undefined){start=6;} if(end === undefined){end=0;} return {start:start, end:end}; /*Object {start,end}*/ };