Date.monthNames()

Compute the array of month name

by polinux

HTML

<div id="month-names"></div>
<div id="month-names-bg"></div>

JavaScript

Date.toLocaleDateStringSupportsLocales = function () {
    try {
        new Date().toLocaleDateString("i");
    } catch (e) {
        return e.name === "RangeError";
    }
    return false;
}

Date.monthNames = function( locales, optMonth ) {
//       ---------------
	var arrMonth = [],
		lang = Date.toLocaleDateStringSupportsLocales()  ? (locales || window.navigator.language) : window.navigator.language,
		indexMonth = 2; // Month position in the String returned to toLocaleString 
	switch( (lang.split('-'))[0] ) {
		case 'bg' : ;
		case 'en' : ;
		case 'ko' : indexMonth = 1;
			break ;
		case 'es' : ;
		case 'pt' : ;
		case 'sv' : indexMonth = 3;
			break ;
		default : ;
	}

    for( var dateRef = new Date(2001, 0, 10), m = 0, arr = [] ; m < 12 ; m++ ) {
	
		dateRef.setMonth(m);
		arr = dateRef.toLocaleDateString( lang, { month: optMonth || "long" } ).split(' ');
		arrMonth.push( arr[ arr.length > 1 ? indexMonth : 0 ].replace(/,$/g, "") );
	}
	
	return arrMonth;
}

document.getElementById('month-names').textContent = Date.monthNames( ).toString();
document.getElementById('month-names-bg').textContent = Date.monthNames('bg', 'short' ).toString();