ambari-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From oleew...@apache.org
Subject [09/88] [abbrv] [partial] ambari git commit: AMBARI-20499. Move Log Search web content to a new module (ambari-logsearch-web) (oleewere)
Date Thu, 23 Mar 2017 12:43:22 GMT
http://git-wip-us.apache.org/repos/asf/ambari/blob/49f341b7/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/globalize/lib/globalize.js
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/globalize/lib/globalize.js b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/globalize/lib/globalize.js
deleted file mode 100644
index 59ff2b8..0000000
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/globalize/lib/globalize.js
+++ /dev/null
@@ -1,1586 +0,0 @@
-/*!
- * Globalize
- *
- * http://github.com/jquery/globalize
- *
- * Copyright Software Freedom Conservancy, Inc.
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- */
-
-(function( window, undefined ) {
-
-var Globalize,
-	// private variables
-	regexHex,
-	regexInfinity,
-	regexParseFloat,
-	regexTrim,
-	// private JavaScript utility functions
-	arrayIndexOf,
-	endsWith,
-	extend,
-	isArray,
-	isFunction,
-	isObject,
-	startsWith,
-	trim,
-	truncate,
-	zeroPad,
-	// private Globalization utility functions
-	appendPreOrPostMatch,
-	expandFormat,
-	formatDate,
-	formatNumber,
-	getTokenRegExp,
-	getEra,
-	getEraYear,
-	parseExact,
-	parseNegativePattern;
-
-// Global variable (Globalize) or CommonJS module (globalize)
-Globalize = function( cultureSelector ) {
-	return new Globalize.prototype.init( cultureSelector );
-};
-
-if ( typeof require !== "undefined" &&
-	typeof exports !== "undefined" &&
-	typeof module !== "undefined" ) {
-	// Assume CommonJS
-	module.exports = Globalize;
-} else {
-	// Export as global variable
-	window.Globalize = Globalize;
-}
-
-Globalize.cultures = {};
-
-Globalize.prototype = {
-	constructor: Globalize,
-	init: function( cultureSelector ) {
-		this.cultures = Globalize.cultures;
-		this.cultureSelector = cultureSelector;
-
-		return this;
-	}
-};
-Globalize.prototype.init.prototype = Globalize.prototype;
-
-// 1. When defining a culture, all fields are required except the ones stated as optional.
-// 2. Each culture should have a ".calendars" object with at least one calendar named "standard"
-//    which serves as the default calendar in use by that culture.
-// 3. Each culture should have a ".calendar" object which is the current calendar being used,
-//    it may be dynamically changed at any time to one of the calendars in ".calendars".
-Globalize.cultures[ "default" ] = {
-	// A unique name for the culture in the form <language code>-<country/region code>
-	name: "en",
-	// the name of the culture in the english language
-	englishName: "English",
-	// the name of the culture in its own language
-	nativeName: "English",
-	// whether the culture uses right-to-left text
-	isRTL: false,
-	// "language" is used for so-called "specific" cultures.
-	// For example, the culture "es-CL" means "Spanish, in Chili".
-	// It represents the Spanish-speaking culture as it is in Chili,
-	// which might have different formatting rules or even translations
-	// than Spanish in Spain. A "neutral" culture is one that is not
-	// specific to a region. For example, the culture "es" is the generic
-	// Spanish culture, which may be a more generalized version of the language
-	// that may or may not be what a specific culture expects.
-	// For a specific culture like "es-CL", the "language" field refers to the
-	// neutral, generic culture information for the language it is using.
-	// This is not always a simple matter of the string before the dash.
-	// For example, the "zh-Hans" culture is netural (Simplified Chinese).
-	// And the "zh-SG" culture is Simplified Chinese in Singapore, whose lanugage
-	// field is "zh-CHS", not "zh".
-	// This field should be used to navigate from a specific culture to it's
-	// more general, neutral culture. If a culture is already as general as it
-	// can get, the language may refer to itself.
-	language: "en",
-	// numberFormat defines general number formatting rules, like the digits in
-	// each grouping, the group separator, and how negative numbers are displayed.
-	numberFormat: {
-		// [negativePattern]
-		// Note, numberFormat.pattern has no "positivePattern" unlike percent and currency,
-		// but is still defined as an array for consistency with them.
-		//   negativePattern: one of "(n)|-n|- n|n-|n -"
-		pattern: [ "-n" ],
-		// number of decimal places normally shown
-		decimals: 2,
-		// string that separates number groups, as in 1,000,000
-		",": ",",
-		// string that separates a number from the fractional portion, as in 1.99
-		".": ".",
-		// array of numbers indicating the size of each number group.
-		// TODO: more detailed description and example
-		groupSizes: [ 3 ],
-		// symbol used for positive numbers
-		"+": "+",
-		// symbol used for negative numbers
-		"-": "-",
-		// symbol used for NaN (Not-A-Number)
-		"NaN": "NaN",
-		// symbol used for Negative Infinity
-		negativeInfinity: "-Infinity",
-		// symbol used for Positive Infinity
-		positiveInfinity: "Infinity",
-		percent: {
-			// [negativePattern, positivePattern]
-			//   negativePattern: one of "-n %|-n%|-%n|%-n|%n-|n-%|n%-|-% n|n %-|% n-|% -n|n- %"
-			//   positivePattern: one of "n %|n%|%n|% n"
-			pattern: [ "-n %", "n %" ],
-			// number of decimal places normally shown
-			decimals: 2,
-			// array of numbers indicating the size of each number group.
-			// TODO: more detailed description and example
-			groupSizes: [ 3 ],
-			// string that separates number groups, as in 1,000,000
-			",": ",",
-			// string that separates a number from the fractional portion, as in 1.99
-			".": ".",
-			// symbol used to represent a percentage
-			symbol: "%"
-		},
-		currency: {
-			// [negativePattern, positivePattern]
-			//   negativePattern: one of "($n)|-$n|$-n|$n-|(n$)|-n$|n-$|n$-|-n $|-$ n|n $-|$ n-|$ -n|n- $|($ n)|(n $)"
-			//   positivePattern: one of "$n|n$|$ n|n $"
-			pattern: [ "($n)", "$n" ],
-			// number of decimal places normally shown
-			decimals: 2,
-			// array of numbers indicating the size of each number group.
-			// TODO: more detailed description and example
-			groupSizes: [ 3 ],
-			// string that separates number groups, as in 1,000,000
-			",": ",",
-			// string that separates a number from the fractional portion, as in 1.99
-			".": ".",
-			// symbol used to represent currency
-			symbol: "$"
-		}
-	},
-	// calendars defines all the possible calendars used by this culture.
-	// There should be at least one defined with name "standard", and is the default
-	// calendar used by the culture.
-	// A calendar contains information about how dates are formatted, information about
-	// the calendar's eras, a standard set of the date formats,
-	// translations for day and month names, and if the calendar is not based on the Gregorian
-	// calendar, conversion functions to and from the Gregorian calendar.
-	calendars: {
-		standard: {
-			// name that identifies the type of calendar this is
-			name: "Gregorian_USEnglish",
-			// separator of parts of a date (e.g. "/" in 11/05/1955)
-			"/": "/",
-			// separator of parts of a time (e.g. ":" in 05:44 PM)
-			":": ":",
-			// the first day of the week (0 = Sunday, 1 = Monday, etc)
-			firstDay: 0,
-			days: {
-				// full day names
-				names: [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ],
-				// abbreviated day names
-				namesAbbr: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ],
-				// shortest day names
-				namesShort: [ "Su", "Mo", "Tu", "We", "Th", "Fr", "Sa" ]
-			},
-			months: {
-				// full month names (13 months for lunar calendards -- 13th month should be "" if not lunar)
-				names: [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December", "" ],
-				// abbreviated month names
-				namesAbbr: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" ]
-			},
-			// AM and PM designators in one of these forms:
-			// The usual view, and the upper and lower case versions
-			//   [ standard, lowercase, uppercase ]
-			// The culture does not use AM or PM (likely all standard date formats use 24 hour time)
-			//   null
-			AM: [ "AM", "am", "AM" ],
-			PM: [ "PM", "pm", "PM" ],
-			eras: [
-				// eras in reverse chronological order.
-				// name: the name of the era in this culture (e.g. A.D., C.E.)
-				// start: when the era starts in ticks (gregorian, gmt), null if it is the earliest supported era.
-				// offset: offset in years from gregorian calendar
-				{
-					"name": "A.D.",
-					"start": null,
-					"offset": 0
-				}
-			],
-			// when a two digit year is given, it will never be parsed as a four digit
-			// year greater than this year (in the appropriate era for the culture)
-			// Set it as a full year (e.g. 2029) or use an offset format starting from
-			// the current year: "+19" would correspond to 2029 if the current year 2010.
-			twoDigitYearMax: 2029,
-			// set of predefined date and time patterns used by the culture
-			// these represent the format someone in this culture would expect
-			// to see given the portions of the date that are shown.
-			patterns: {
-				// short date pattern
-				d: "M/d/yyyy",
-				// long date pattern
-				D: "dddd, MMMM dd, yyyy",
-				// short time pattern
-				t: "h:mm tt",
-				// long time pattern
-				T: "h:mm:ss tt",
-				// long date, short time pattern
-				f: "dddd, MMMM dd, yyyy h:mm tt",
-				// long date, long time pattern
-				F: "dddd, MMMM dd, yyyy h:mm:ss tt",
-				// month/day pattern
-				M: "MMMM dd",
-				// month/year pattern
-				Y: "yyyy MMMM",
-				// S is a sortable format that does not vary by culture
-				S: "yyyy\u0027-\u0027MM\u0027-\u0027dd\u0027T\u0027HH\u0027:\u0027mm\u0027:\u0027ss"
-			}
-			// optional fields for each calendar:
-			/*
-			monthsGenitive:
-				Same as months but used when the day preceeds the month.
-				Omit if the culture has no genitive distinction in month names.
-				For an explaination of genitive months, see http://blogs.msdn.com/michkap/archive/2004/12/25/332259.aspx
-			convert:
-				Allows for the support of non-gregorian based calendars. This convert object is used to
-				to convert a date to and from a gregorian calendar date to handle parsing and formatting.
-				The two functions:
-					fromGregorian( date )
-						Given the date as a parameter, return an array with parts [ year, month, day ]
-						corresponding to the non-gregorian based year, month, and day for the calendar.
-					toGregorian( year, month, day )
-						Given the non-gregorian year, month, and day, return a new Date() object
-						set to the corresponding date in the gregorian calendar.
-			*/
-		}
-	},
-	// For localized strings
-	messages: {}
-};
-
-Globalize.cultures[ "default" ].calendar = Globalize.cultures[ "default" ].calendars.standard;
-
-Globalize.cultures.en = Globalize.cultures[ "default" ];
-
-Globalize.cultureSelector = "en";
-
-//
-// private variables
-//
-
-regexHex = /^0x[a-f0-9]+$/i;
-regexInfinity = /^[+\-]?infinity$/i;
-regexParseFloat = /^[+\-]?\d*\.?\d*(e[+\-]?\d+)?$/;
-regexTrim = /^\s+|\s+$/g;
-
-//
-// private JavaScript utility functions
-//
-
-arrayIndexOf = function( array, item ) {
-	if ( array.indexOf ) {
-		return array.indexOf( item );
-	}
-	for ( var i = 0, length = array.length; i < length; i++ ) {
-		if ( array[i] === item ) {
-			return i;
-		}
-	}
-	return -1;
-};
-
-endsWith = function( value, pattern ) {
-	return value.substr( value.length - pattern.length ) === pattern;
-};
-
-extend = function() {
-	var options, name, src, copy, copyIsArray, clone,
-		target = arguments[0] || {},
-		i = 1,
-		length = arguments.length,
-		deep = false;
-
-	// Handle a deep copy situation
-	if ( typeof target === "boolean" ) {
-		deep = target;
-		target = arguments[1] || {};
-		// skip the boolean and the target
-		i = 2;
-	}
-
-	// Handle case when target is a string or something (possible in deep copy)
-	if ( typeof target !== "object" && !isFunction(target) ) {
-		target = {};
-	}
-
-	for ( ; i < length; i++ ) {
-		// Only deal with non-null/undefined values
-		if ( (options = arguments[ i ]) != null ) {
-			// Extend the base object
-			for ( name in options ) {
-				src = target[ name ];
-				copy = options[ name ];
-
-				// Prevent never-ending loop
-				if ( target === copy ) {
-					continue;
-				}
-
-				// Recurse if we're merging plain objects or arrays
-				if ( deep && copy && ( isObject(copy) || (copyIsArray = isArray(copy)) ) ) {
-					if ( copyIsArray ) {
-						copyIsArray = false;
-						clone = src && isArray(src) ? src : [];
-
-					} else {
-						clone = src && isObject(src) ? src : {};
-					}
-
-					// Never move original objects, clone them
-					target[ name ] = extend( deep, clone, copy );
-
-				// Don't bring in undefined values
-				} else if ( copy !== undefined ) {
-					target[ name ] = copy;
-				}
-			}
-		}
-	}
-
-	// Return the modified object
-	return target;
-};
-
-isArray = Array.isArray || function( obj ) {
-	return Object.prototype.toString.call( obj ) === "[object Array]";
-};
-
-isFunction = function( obj ) {
-	return Object.prototype.toString.call( obj ) === "[object Function]";
-};
-
-isObject = function( obj ) {
-	return Object.prototype.toString.call( obj ) === "[object Object]";
-};
-
-startsWith = function( value, pattern ) {
-	return value.indexOf( pattern ) === 0;
-};
-
-trim = function( value ) {
-	return ( value + "" ).replace( regexTrim, "" );
-};
-
-truncate = function( value ) {
-	if ( isNaN( value ) ) {
-		return NaN;
-	}
-	return Math[ value < 0 ? "ceil" : "floor" ]( value );
-};
-
-zeroPad = function( str, count, left ) {
-	var l;
-	for ( l = str.length; l < count; l += 1 ) {
-		str = ( left ? ("0" + str) : (str + "0") );
-	}
-	return str;
-};
-
-//
-// private Globalization utility functions
-//
-
-appendPreOrPostMatch = function( preMatch, strings ) {
-	// appends pre- and post- token match strings while removing escaped characters.
-	// Returns a single quote count which is used to determine if the token occurs
-	// in a string literal.
-	var quoteCount = 0,
-		escaped = false;
-	for ( var i = 0, il = preMatch.length; i < il; i++ ) {
-		var c = preMatch.charAt( i );
-		switch ( c ) {
-			case "\'":
-				if ( escaped ) {
-					strings.push( "\'" );
-				}
-				else {
-					quoteCount++;
-				}
-				escaped = false;
-				break;
-			case "\\":
-				if ( escaped ) {
-					strings.push( "\\" );
-				}
-				escaped = !escaped;
-				break;
-			default:
-				strings.push( c );
-				escaped = false;
-				break;
-		}
-	}
-	return quoteCount;
-};
-
-expandFormat = function( cal, format ) {
-	// expands unspecified or single character date formats into the full pattern.
-	format = format || "F";
-	var pattern,
-		patterns = cal.patterns,
-		len = format.length;
-	if ( len === 1 ) {
-		pattern = patterns[ format ];
-		if ( !pattern ) {
-			throw "Invalid date format string \'" + format + "\'.";
-		}
-		format = pattern;
-	}
-	else if ( len === 2 && format.charAt(0) === "%" ) {
-		// %X escape format -- intended as a custom format string that is only one character, not a built-in format.
-		format = format.charAt( 1 );
-	}
-	return format;
-};
-
-formatDate = function( value, format, culture ) {
-	var cal = culture.calendar,
-		convert = cal.convert,
-		ret;
-
-	if ( !format || !format.length || format === "i" ) {
-		if ( culture && culture.name.length ) {
-			if ( convert ) {
-				// non-gregorian calendar, so we cannot use built-in toLocaleString()
-				ret = formatDate( value, cal.patterns.F, culture );
-			}
-			else {
-				var eraDate = new Date( value.getTime() ),
-					era = getEra( value, cal.eras );
-				eraDate.setFullYear( getEraYear(value, cal, era) );
-				ret = eraDate.toLocaleString();
-			}
-		}
-		else {
-			ret = value.toString();
-		}
-		return ret;
-	}
-
-	var eras = cal.eras,
-		sortable = format === "s";
-	format = expandFormat( cal, format );
-
-	// Start with an empty string
-	ret = [];
-	var hour,
-		zeros = [ "0", "00", "000" ],
-		foundDay,
-		checkedDay,
-		dayPartRegExp = /([^d]|^)(d|dd)([^d]|$)/g,
-		quoteCount = 0,
-		tokenRegExp = getTokenRegExp(),
-		converted;
-
-	function padZeros( num, c ) {
-		var r, s = num + "";
-		if ( c > 1 && s.length < c ) {
-			r = ( zeros[c - 2] + s);
-			return r.substr( r.length - c, c );
-		}
-		else {
-			r = s;
-		}
-		return r;
-	}
-
-	function hasDay() {
-		if ( foundDay || checkedDay ) {
-			return foundDay;
-		}
-		foundDay = dayPartRegExp.test( format );
-		checkedDay = true;
-		return foundDay;
-	}
-
-	function getPart( date, part ) {
-		if ( converted ) {
-			return converted[ part ];
-		}
-		switch ( part ) {
-			case 0:
-				return date.getFullYear();
-			case 1:
-				return date.getMonth();
-			case 2:
-				return date.getDate();
-			default:
-				throw "Invalid part value " + part;
-		}
-	}
-
-	if ( !sortable && convert ) {
-		converted = convert.fromGregorian( value );
-	}
-
-	for ( ; ; ) {
-		// Save the current index
-		var index = tokenRegExp.lastIndex,
-			// Look for the next pattern
-			ar = tokenRegExp.exec( format );
-
-		// Append the text before the pattern (or the end of the string if not found)
-		var preMatch = format.slice( index, ar ? ar.index : format.length );
-		quoteCount += appendPreOrPostMatch( preMatch, ret );
-
-		if ( !ar ) {
-			break;
-		}
-
-		// do not replace any matches that occur inside a string literal.
-		if ( quoteCount % 2 ) {
-			ret.push( ar[0] );
-			continue;
-		}
-
-		var current = ar[ 0 ],
-			clength = current.length;
-
-		switch ( current ) {
-			case "ddd":
-				//Day of the week, as a three-letter abbreviation
-			case "dddd":
-				// Day of the week, using the full name
-				var names = ( clength === 3 ) ? cal.days.namesAbbr : cal.days.names;
-				ret.push( names[value.getDay()] );
-				break;
-			case "d":
-				// Day of month, without leading zero for single-digit days
-			case "dd":
-				// Day of month, with leading zero for single-digit days
-				foundDay = true;
-				ret.push(
-					padZeros( getPart(value, 2), clength )
-				);
-				break;
-			case "MMM":
-				// Month, as a three-letter abbreviation
-			case "MMMM":
-				// Month, using the full name
-				var part = getPart( value, 1 );
-				ret.push(
-					( cal.monthsGenitive && hasDay() ) ?
-					( cal.monthsGenitive[ clength === 3 ? "namesAbbr" : "names" ][ part ] ) :
-					( cal.months[ clength === 3 ? "namesAbbr" : "names" ][ part ] )
-				);
-				break;
-			case "M":
-				// Month, as digits, with no leading zero for single-digit months
-			case "MM":
-				// Month, as digits, with leading zero for single-digit months
-				ret.push(
-					padZeros( getPart(value, 1) + 1, clength )
-				);
-				break;
-			case "y":
-				// Year, as two digits, but with no leading zero for years less than 10
-			case "yy":
-				// Year, as two digits, with leading zero for years less than 10
-			case "yyyy":
-				// Year represented by four full digits
-				part = converted ? converted[ 0 ] : getEraYear( value, cal, getEra(value, eras), sortable );
-				if ( clength < 4 ) {
-					part = part % 100;
-				}
-				ret.push(
-					padZeros( part, clength )
-				);
-				break;
-			case "h":
-				// Hours with no leading zero for single-digit hours, using 12-hour clock
-			case "hh":
-				// Hours with leading zero for single-digit hours, using 12-hour clock
-				hour = value.getHours() % 12;
-				if ( hour === 0 ) hour = 12;
-				ret.push(
-					padZeros( hour, clength )
-				);
-				break;
-			case "H":
-				// Hours with no leading zero for single-digit hours, using 24-hour clock
-			case "HH":
-				// Hours with leading zero for single-digit hours, using 24-hour clock
-				ret.push(
-					padZeros( value.getHours(), clength )
-				);
-				break;
-			case "m":
-				// Minutes with no leading zero for single-digit minutes
-			case "mm":
-				// Minutes with leading zero for single-digit minutes
-				ret.push(
-					padZeros( value.getMinutes(), clength )
-				);
-				break;
-			case "s":
-				// Seconds with no leading zero for single-digit seconds
-			case "ss":
-				// Seconds with leading zero for single-digit seconds
-				ret.push(
-					padZeros( value.getSeconds(), clength )
-				);
-				break;
-			case "t":
-				// One character am/pm indicator ("a" or "p")
-			case "tt":
-				// Multicharacter am/pm indicator
-				part = value.getHours() < 12 ? ( cal.AM ? cal.AM[0] : " " ) : ( cal.PM ? cal.PM[0] : " " );
-				ret.push( clength === 1 ? part.charAt(0) : part );
-				break;
-			case "f":
-				// Deciseconds
-			case "ff":
-				// Centiseconds
-			case "fff":
-				// Milliseconds
-				ret.push(
-					padZeros( value.getMilliseconds(), 3 ).substr( 0, clength )
-				);
-				break;
-			case "z":
-				// Time zone offset, no leading zero
-			case "zz":
-				// Time zone offset with leading zero
-				hour = value.getTimezoneOffset() / 60;
-				ret.push(
-					( hour <= 0 ? "+" : "-" ) + padZeros( Math.floor(Math.abs(hour)), clength )
-				);
-				break;
-			case "zzz":
-				// Time zone offset with leading zero
-				hour = value.getTimezoneOffset() / 60;
-				ret.push(
-					( hour <= 0 ? "+" : "-" ) + padZeros( Math.floor(Math.abs(hour)), 2 ) +
-					// Hard coded ":" separator, rather than using cal.TimeSeparator
-					// Repeated here for consistency, plus ":" was already assumed in date parsing.
-					":" + padZeros( Math.abs(value.getTimezoneOffset() % 60), 2 )
-				);
-				break;
-			case "g":
-			case "gg":
-				if ( cal.eras ) {
-					ret.push(
-						cal.eras[ getEra(value, eras) ].name
-					);
-				}
-				break;
-		case "/":
-			ret.push( cal["/"] );
-			break;
-		default:
-			throw "Invalid date format pattern \'" + current + "\'.";
-		}
-	}
-	return ret.join( "" );
-};
-
-// formatNumber
-(function() {
-	var expandNumber;
-
-	expandNumber = function( number, precision, formatInfo ) {
-		var groupSizes = formatInfo.groupSizes,
-			curSize = groupSizes[ 0 ],
-			curGroupIndex = 1,
-			factor = Math.pow( 10, precision ),
-			rounded = Math.round( number * factor ) / factor;
-
-		if ( !isFinite(rounded) ) {
-			rounded = number;
-		}
-		number = rounded;
-
-		var numberString = number+"",
-			right = "",
-			split = numberString.split( /e/i ),
-			exponent = split.length > 1 ? parseInt( split[1], 10 ) : 0;
-		numberString = split[ 0 ];
-		split = numberString.split( "." );
-		numberString = split[ 0 ];
-		right = split.length > 1 ? split[ 1 ] : "";
-
-		var l;
-		if ( exponent > 0 ) {
-			right = zeroPad( right, exponent, false );
-			numberString += right.slice( 0, exponent );
-			right = right.substr( exponent );
-		}
-		else if ( exponent < 0 ) {
-			exponent = -exponent;
-			numberString = zeroPad( numberString, exponent + 1, true );
-			right = numberString.slice( -exponent, numberString.length ) + right;
-			numberString = numberString.slice( 0, -exponent );
-		}
-
-		if ( precision > 0 ) {
-			right = formatInfo[ "." ] +
-				( (right.length > precision) ? right.slice(0, precision) : zeroPad(right, precision) );
-		}
-		else {
-			right = "";
-		}
-
-		var stringIndex = numberString.length - 1,
-			sep = formatInfo[ "," ],
-			ret = "";
-
-		while ( stringIndex >= 0 ) {
-			if ( curSize === 0 || curSize > stringIndex ) {
-				return numberString.slice( 0, stringIndex + 1 ) + ( ret.length ? (sep + ret + right) : right );
-			}
-			ret = numberString.slice( stringIndex - curSize + 1, stringIndex + 1 ) + ( ret.length ? (sep + ret) : "" );
-
-			stringIndex -= curSize;
-
-			if ( curGroupIndex < groupSizes.length ) {
-				curSize = groupSizes[ curGroupIndex ];
-				curGroupIndex++;
-			}
-		}
-
-		return numberString.slice( 0, stringIndex + 1 ) + sep + ret + right;
-	};
-
-	formatNumber = function( value, format, culture ) {
-		if ( !isFinite(value) ) {
-			if ( value === Infinity ) {
-				return culture.numberFormat.positiveInfinity;
-			}
-			if ( value === -Infinity ) {
-				return culture.numberFormat.negativeInfinity;
-			}
-			return culture.numberFormat[ "NaN" ];
-		}
-		if ( !format || format === "i" ) {
-			return culture.name.length ? value.toLocaleString() : value.toString();
-		}
-		format = format || "D";
-
-		var nf = culture.numberFormat,
-			number = Math.abs( value ),
-			precision = -1,
-			pattern;
-		if ( format.length > 1 ) precision = parseInt( format.slice(1), 10 );
-
-		var current = format.charAt( 0 ).toUpperCase(),
-			formatInfo;
-
-		switch ( current ) {
-			case "D":
-				pattern = "n";
-				number = truncate( number );
-				if ( precision !== -1 ) {
-					number = zeroPad( "" + number, precision, true );
-				}
-				if ( value < 0 ) number = "-" + number;
-				break;
-			case "N":
-				formatInfo = nf;
-				/* falls through */
-			case "C":
-				formatInfo = formatInfo || nf.currency;
-				/* falls through */
-			case "P":
-				formatInfo = formatInfo || nf.percent;
-				pattern = value < 0 ? formatInfo.pattern[ 0 ] : ( formatInfo.pattern[1] || "n" );
-				if ( precision === -1 ) precision = formatInfo.decimals;
-				number = expandNumber( number * (current === "P" ? 100 : 1), precision, formatInfo );
-				break;
-			default:
-				throw "Bad number format specifier: " + current;
-		}
-
-		var patternParts = /n|\$|-|%/g,
-			ret = "";
-		for ( ; ; ) {
-			var index = patternParts.lastIndex,
-				ar = patternParts.exec( pattern );
-
-			ret += pattern.slice( index, ar ? ar.index : pattern.length );
-
-			if ( !ar ) {
-				break;
-			}
-
-			switch ( ar[0] ) {
-				case "n":
-					ret += number;
-					break;
-				case "$":
-					ret += nf.currency.symbol;
-					break;
-				case "-":
-					// don't make 0 negative
-					if ( /[1-9]/.test(number) ) {
-						ret += nf[ "-" ];
-					}
-					break;
-				case "%":
-					ret += nf.percent.symbol;
-					break;
-			}
-		}
-
-		return ret;
-	};
-
-}());
-
-getTokenRegExp = function() {
-	// regular expression for matching date and time tokens in format strings.
-	return (/\/|dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|fff|ff|f|zzz|zz|z|gg|g/g);
-};
-
-getEra = function( date, eras ) {
-	if ( !eras ) return 0;
-	var start, ticks = date.getTime();
-	for ( var i = 0, l = eras.length; i < l; i++ ) {
-		start = eras[ i ].start;
-		if ( start === null || ticks >= start ) {
-			return i;
-		}
-	}
-	return 0;
-};
-
-getEraYear = function( date, cal, era, sortable ) {
-	var year = date.getFullYear();
-	if ( !sortable && cal.eras ) {
-		// convert normal gregorian year to era-shifted gregorian
-		// year by subtracting the era offset
-		year -= cal.eras[ era ].offset;
-	}
-	return year;
-};
-
-// parseExact
-(function() {
-	var expandYear,
-		getDayIndex,
-		getMonthIndex,
-		getParseRegExp,
-		outOfRange,
-		toUpper,
-		toUpperArray;
-
-	expandYear = function( cal, year ) {
-		// expands 2-digit year into 4 digits.
-		if ( year < 100 ) {
-			var now = new Date(),
-				era = getEra( now ),
-				curr = getEraYear( now, cal, era ),
-				twoDigitYearMax = cal.twoDigitYearMax;
-			twoDigitYearMax = typeof twoDigitYearMax === "string" ? new Date().getFullYear() % 100 + parseInt( twoDigitYearMax, 10 ) : twoDigitYearMax;
-			year += curr - ( curr % 100 );
-			if ( year > twoDigitYearMax ) {
-				year -= 100;
-			}
-		}
-		return year;
-	};
-
-	getDayIndex = function	( cal, value, abbr ) {
-		var ret,
-			days = cal.days,
-			upperDays = cal._upperDays;
-		if ( !upperDays ) {
-			cal._upperDays = upperDays = [
-				toUpperArray( days.names ),
-				toUpperArray( days.namesAbbr ),
-				toUpperArray( days.namesShort )
-			];
-		}
-		value = toUpper( value );
-		if ( abbr ) {
-			ret = arrayIndexOf( upperDays[1], value );
-			if ( ret === -1 ) {
-				ret = arrayIndexOf( upperDays[2], value );
-			}
-		}
-		else {
-			ret = arrayIndexOf( upperDays[0], value );
-		}
-		return ret;
-	};
-
-	getMonthIndex = function( cal, value, abbr ) {
-		var months = cal.months,
-			monthsGen = cal.monthsGenitive || cal.months,
-			upperMonths = cal._upperMonths,
-			upperMonthsGen = cal._upperMonthsGen;
-		if ( !upperMonths ) {
-			cal._upperMonths = upperMonths = [
-				toUpperArray( months.names ),
-				toUpperArray( months.namesAbbr )
-			];
-			cal._upperMonthsGen = upperMonthsGen = [
-				toUpperArray( monthsGen.names ),
-				toUpperArray( monthsGen.namesAbbr )
-			];
-		}
-		value = toUpper( value );
-		var i = arrayIndexOf( abbr ? upperMonths[1] : upperMonths[0], value );
-		if ( i < 0 ) {
-			i = arrayIndexOf( abbr ? upperMonthsGen[1] : upperMonthsGen[0], value );
-		}
-		return i;
-	};
-
-	getParseRegExp = function( cal, format ) {
-		// converts a format string into a regular expression with groups that
-		// can be used to extract date fields from a date string.
-		// check for a cached parse regex.
-		var re = cal._parseRegExp;
-		if ( !re ) {
-			cal._parseRegExp = re = {};
-		}
-		else {
-			var reFormat = re[ format ];
-			if ( reFormat ) {
-				return reFormat;
-			}
-		}
-
-		// expand single digit formats, then escape regular expression characters.
-		var expFormat = expandFormat( cal, format ).replace( /([\^\$\.\*\+\?\|\[\]\(\)\{\}])/g, "\\\\$1" ),
-			regexp = [ "^" ],
-			groups = [],
-			index = 0,
-			quoteCount = 0,
-			tokenRegExp = getTokenRegExp(),
-			match;
-
-		// iterate through each date token found.
-		while ( (match = tokenRegExp.exec(expFormat)) !== null ) {
-			var preMatch = expFormat.slice( index, match.index );
-			index = tokenRegExp.lastIndex;
-
-			// don't replace any matches that occur inside a string literal.
-			quoteCount += appendPreOrPostMatch( preMatch, regexp );
-			if ( quoteCount % 2 ) {
-				regexp.push( match[0] );
-				continue;
-			}
-
-			// add a regex group for the token.
-			var m = match[ 0 ],
-				len = m.length,
-				add;
-			switch ( m ) {
-				case "dddd": case "ddd":
-				case "MMMM": case "MMM":
-				case "gg": case "g":
-					add = "(\\D+)";
-					break;
-				case "tt": case "t":
-					add = "(\\D*)";
-					break;
-				case "yyyy":
-				case "fff":
-				case "ff":
-				case "f":
-					add = "(\\d{" + len + "})";
-					break;
-				case "dd": case "d":
-				case "MM": case "M":
-				case "yy": case "y":
-				case "HH": case "H":
-				case "hh": case "h":
-				case "mm": case "m":
-				case "ss": case "s":
-					add = "(\\d\\d?)";
-					break;
-				case "zzz":
-					add = "([+-]?\\d\\d?:\\d{2})";
-					break;
-				case "zz": case "z":
-					add = "([+-]?\\d\\d?)";
-					break;
-				case "/":
-					add = "(\\/)";
-					break;
-				default:
-					throw "Invalid date format pattern \'" + m + "\'.";
-			}
-			if ( add ) {
-				regexp.push( add );
-			}
-			groups.push( match[0] );
-		}
-		appendPreOrPostMatch( expFormat.slice(index), regexp );
-		regexp.push( "$" );
-
-		// allow whitespace to differ when matching formats.
-		var regexpStr = regexp.join( "" ).replace( /\s+/g, "\\s+" ),
-			parseRegExp = { "regExp": regexpStr, "groups": groups };
-
-		// cache the regex for this format.
-		return re[ format ] = parseRegExp;
-	};
-
-	outOfRange = function( value, low, high ) {
-		return value < low || value > high;
-	};
-
-	toUpper = function( value ) {
-		// "he-IL" has non-breaking space in weekday names.
-		return value.split( "\u00A0" ).join( " " ).toUpperCase();
-	};
-
-	toUpperArray = function( arr ) {
-		var results = [];
-		for ( var i = 0, l = arr.length; i < l; i++ ) {
-			results[ i ] = toUpper( arr[i] );
-		}
-		return results;
-	};
-
-	parseExact = function( value, format, culture ) {
-		// try to parse the date string by matching against the format string
-		// while using the specified culture for date field names.
-		value = trim( value );
-		var cal = culture.calendar,
-			// convert date formats into regular expressions with groupings.
-			// use the regexp to determine the input format and extract the date fields.
-			parseInfo = getParseRegExp( cal, format ),
-			match = new RegExp( parseInfo.regExp ).exec( value );
-		if ( match === null ) {
-			return null;
-		}
-		// found a date format that matches the input.
-		var groups = parseInfo.groups,
-			era = null, year = null, month = null, date = null, weekDay = null,
-			hour = 0, hourOffset, min = 0, sec = 0, msec = 0, tzMinOffset = null,
-			pmHour = false;
-		// iterate the format groups to extract and set the date fields.
-		for ( var j = 0, jl = groups.length; j < jl; j++ ) {
-			var matchGroup = match[ j + 1 ];
-			if ( matchGroup ) {
-				var current = groups[ j ],
-					clength = current.length,
-					matchInt = parseInt( matchGroup, 10 );
-				switch ( current ) {
-					case "dd": case "d":
-						// Day of month.
-						date = matchInt;
-						// check that date is generally in valid range, also checking overflow below.
-						if ( outOfRange(date, 1, 31) ) return null;
-						break;
-					case "MMM": case "MMMM":
-						month = getMonthIndex( cal, matchGroup, clength === 3 );
-						if ( outOfRange(month, 0, 11) ) return null;
-						break;
-					case "M": case "MM":
-						// Month.
-						month = matchInt - 1;
-						if ( outOfRange(month, 0, 11) ) return null;
-						break;
-					case "y": case "yy":
-					case "yyyy":
-						year = clength < 4 ? expandYear( cal, matchInt ) : matchInt;
-						if ( outOfRange(year, 0, 9999) ) return null;
-						break;
-					case "h": case "hh":
-						// Hours (12-hour clock).
-						hour = matchInt;
-						if ( hour === 12 ) hour = 0;
-						if ( outOfRange(hour, 0, 11) ) return null;
-						break;
-					case "H": case "HH":
-						// Hours (24-hour clock).
-						hour = matchInt;
-						if ( outOfRange(hour, 0, 23) ) return null;
-						break;
-					case "m": case "mm":
-						// Minutes.
-						min = matchInt;
-						if ( outOfRange(min, 0, 59) ) return null;
-						break;
-					case "s": case "ss":
-						// Seconds.
-						sec = matchInt;
-						if ( outOfRange(sec, 0, 59) ) return null;
-						break;
-					case "tt": case "t":
-						// AM/PM designator.
-						// see if it is standard, upper, or lower case PM. If not, ensure it is at least one of
-						// the AM tokens. If not, fail the parse for this format.
-						pmHour = cal.PM && ( matchGroup === cal.PM[0] || matchGroup === cal.PM[1] || matchGroup === cal.PM[2] );
-						if (
-							!pmHour && (
-								!cal.AM || ( matchGroup !== cal.AM[0] && matchGroup !== cal.AM[1] && matchGroup !== cal.AM[2] )
-							)
-						) return null;
-						break;
-					case "f":
-						// Deciseconds.
-					case "ff":
-						// Centiseconds.
-					case "fff":
-						// Milliseconds.
-						msec = matchInt * Math.pow( 10, 3 - clength );
-						if ( outOfRange(msec, 0, 999) ) return null;
-						break;
-					case "ddd":
-						// Day of week.
-					case "dddd":
-						// Day of week.
-						weekDay = getDayIndex( cal, matchGroup, clength === 3 );
-						if ( outOfRange(weekDay, 0, 6) ) return null;
-						break;
-					case "zzz":
-						// Time zone offset in +/- hours:min.
-						var offsets = matchGroup.split( /:/ );
-						if ( offsets.length !== 2 ) return null;
-						hourOffset = parseInt( offsets[0], 10 );
-						if ( outOfRange(hourOffset, -12, 13) ) return null;
-						var minOffset = parseInt( offsets[1], 10 );
-						if ( outOfRange(minOffset, 0, 59) ) return null;
-						tzMinOffset = ( hourOffset * 60 ) + ( startsWith(matchGroup, "-") ? -minOffset : minOffset );
-						break;
-					case "z": case "zz":
-						// Time zone offset in +/- hours.
-						hourOffset = matchInt;
-						if ( outOfRange(hourOffset, -12, 13) ) return null;
-						tzMinOffset = hourOffset * 60;
-						break;
-					case "g": case "gg":
-						var eraName = matchGroup;
-						if ( !eraName || !cal.eras ) return null;
-						eraName = trim( eraName.toLowerCase() );
-						for ( var i = 0, l = cal.eras.length; i < l; i++ ) {
-							if ( eraName === cal.eras[i].name.toLowerCase() ) {
-								era = i;
-								break;
-							}
-						}
-						// could not find an era with that name
-						if ( era === null ) return null;
-						break;
-				}
-			}
-		}
-		var result = new Date(), defaultYear, convert = cal.convert;
-		defaultYear = convert ? convert.fromGregorian( result )[ 0 ] : result.getFullYear();
-		if ( year === null ) {
-			year = defaultYear;
-		}
-		else if ( cal.eras ) {
-			// year must be shifted to normal gregorian year
-			// but not if year was not specified, its already normal gregorian
-			// per the main if clause above.
-			year += cal.eras[( era || 0 )].offset;
-		}
-		// set default day and month to 1 and January, so if unspecified, these are the defaults
-		// instead of the current day/month.
-		if ( month === null ) {
-			month = 0;
-		}
-		if ( date === null ) {
-			date = 1;
-		}
-		// now have year, month, and date, but in the culture's calendar.
-		// convert to gregorian if necessary
-		if ( convert ) {
-			result = convert.toGregorian( year, month, date );
-			// conversion failed, must be an invalid match
-			if ( result === null ) return null;
-		}
-		else {
-			// have to set year, month and date together to avoid overflow based on current date.
-			result.setFullYear( year, month, date );
-			// check to see if date overflowed for specified month (only checked 1-31 above).
-			if ( result.getDate() !== date ) return null;
-			// invalid day of week.
-			if ( weekDay !== null && result.getDay() !== weekDay ) {
-				return null;
-			}
-		}
-		// if pm designator token was found make sure the hours fit the 24-hour clock.
-		if ( pmHour && hour < 12 ) {
-			hour += 12;
-		}
-		result.setHours( hour, min, sec, msec );
-		if ( tzMinOffset !== null ) {
-			// adjust timezone to utc before applying local offset.
-			var adjustedMin = result.getMinutes() - ( tzMinOffset + result.getTimezoneOffset() );
-			// Safari limits hours and minutes to the range of -127 to 127.  We need to use setHours
-			// to ensure both these fields will not exceed this range.	adjustedMin will range
-			// somewhere between -1440 and 1500, so we only need to split this into hours.
-			result.setHours( result.getHours() + parseInt(adjustedMin / 60, 10), adjustedMin % 60 );
-		}
-		return result;
-	};
-}());
-
-parseNegativePattern = function( value, nf, negativePattern ) {
-	var neg = nf[ "-" ],
-		pos = nf[ "+" ],
-		ret;
-	switch ( negativePattern ) {
-		case "n -":
-			neg = " " + neg;
-			pos = " " + pos;
-			/* falls through */
-		case "n-":
-			if ( endsWith(value, neg) ) {
-				ret = [ "-", value.substr(0, value.length - neg.length) ];
-			}
-			else if ( endsWith(value, pos) ) {
-				ret = [ "+", value.substr(0, value.length - pos.length) ];
-			}
-			break;
-		case "- n":
-			neg += " ";
-			pos += " ";
-			/* falls through */
-		case "-n":
-			if ( startsWith(value, neg) ) {
-				ret = [ "-", value.substr(neg.length) ];
-			}
-			else if ( startsWith(value, pos) ) {
-				ret = [ "+", value.substr(pos.length) ];
-			}
-			break;
-		case "(n)":
-			if ( startsWith(value, "(") && endsWith(value, ")") ) {
-				ret = [ "-", value.substr(1, value.length - 2) ];
-			}
-			break;
-	}
-	return ret || [ "", value ];
-};
-
-//
-// public instance functions
-//
-
-Globalize.prototype.findClosestCulture = function( cultureSelector ) {
-	return Globalize.findClosestCulture.call( this, cultureSelector );
-};
-
-Globalize.prototype.format = function( value, format, cultureSelector ) {
-	return Globalize.format.call( this, value, format, cultureSelector );
-};
-
-Globalize.prototype.localize = function( key, cultureSelector ) {
-	return Globalize.localize.call( this, key, cultureSelector );
-};
-
-Globalize.prototype.parseInt = function( value, radix, cultureSelector ) {
-	return Globalize.parseInt.call( this, value, radix, cultureSelector );
-};
-
-Globalize.prototype.parseFloat = function( value, radix, cultureSelector ) {
-	return Globalize.parseFloat.call( this, value, radix, cultureSelector );
-};
-
-Globalize.prototype.culture = function( cultureSelector ) {
-	return Globalize.culture.call( this, cultureSelector );
-};
-
-//
-// public singleton functions
-//
-
-Globalize.addCultureInfo = function( cultureName, baseCultureName, info ) {
-
-	var base = {},
-		isNew = false;
-
-	if ( typeof cultureName !== "string" ) {
-		// cultureName argument is optional string. If not specified, assume info is first
-		// and only argument. Specified info deep-extends current culture.
-		info = cultureName;
-		cultureName = this.culture().name;
-		base = this.cultures[ cultureName ];
-	} else if ( typeof baseCultureName !== "string" ) {
-		// baseCultureName argument is optional string. If not specified, assume info is second
-		// argument. Specified info deep-extends specified culture.
-		// If specified culture does not exist, create by deep-extending default
-		info = baseCultureName;
-		isNew = ( this.cultures[ cultureName ] == null );
-		base = this.cultures[ cultureName ] || this.cultures[ "default" ];
-	} else {
-		// cultureName and baseCultureName specified. Assume a new culture is being created
-		// by deep-extending an specified base culture
-		isNew = true;
-		base = this.cultures[ baseCultureName ];
-	}
-
-	this.cultures[ cultureName ] = extend(true, {},
-		base,
-		info
-	);
-	// Make the standard calendar the current culture if it's a new culture
-	if ( isNew ) {
-		this.cultures[ cultureName ].calendar = this.cultures[ cultureName ].calendars.standard;
-	}
-};
-
-Globalize.findClosestCulture = function( name ) {
-	var match;
-	if ( !name ) {
-		return this.findClosestCulture( this.cultureSelector ) || this.cultures[ "default" ];
-	}
-	if ( typeof name === "string" ) {
-		name = name.split( "," );
-	}
-	if ( isArray(name) ) {
-		var lang,
-			cultures = this.cultures,
-			list = name,
-			i, l = list.length,
-			prioritized = [];
-		for ( i = 0; i < l; i++ ) {
-			name = trim( list[i] );
-			var pri, parts = name.split( ";" );
-			lang = trim( parts[0] );
-			if ( parts.length === 1 ) {
-				pri = 1;
-			}
-			else {
-				name = trim( parts[1] );
-				if ( name.indexOf("q=") === 0 ) {
-					name = name.substr( 2 );
-					pri = parseFloat( name );
-					pri = isNaN( pri ) ? 0 : pri;
-				}
-				else {
-					pri = 1;
-				}
-			}
-			prioritized.push({ lang: lang, pri: pri });
-		}
-		prioritized.sort(function( a, b ) {
-			if ( a.pri < b.pri ) {
-				return 1;
-			} else if ( a.pri > b.pri ) {
-				return -1;
-			}
-			return 0;
-		});
-		// exact match
-		for ( i = 0; i < l; i++ ) {
-			lang = prioritized[ i ].lang;
-			match = cultures[ lang ];
-			if ( match ) {
-				return match;
-			}
-		}
-
-		// neutral language match
-		for ( i = 0; i < l; i++ ) {
-			lang = prioritized[ i ].lang;
-			do {
-				var index = lang.lastIndexOf( "-" );
-				if ( index === -1 ) {
-					break;
-				}
-				// strip off the last part. e.g. en-US => en
-				lang = lang.substr( 0, index );
-				match = cultures[ lang ];
-				if ( match ) {
-					return match;
-				}
-			}
-			while ( 1 );
-		}
-
-		// last resort: match first culture using that language
-		for ( i = 0; i < l; i++ ) {
-			lang = prioritized[ i ].lang;
-			for ( var cultureKey in cultures ) {
-				var culture = cultures[ cultureKey ];
-				if ( culture.language == lang ) {
-					return culture;
-				}
-			}
-		}
-	}
-	else if ( typeof name === "object" ) {
-		return name;
-	}
-	return match || null;
-};
-
-Globalize.format = function( value, format, cultureSelector ) {
-	var culture = this.findClosestCulture( cultureSelector );
-	if ( value instanceof Date ) {
-		value = formatDate( value, format, culture );
-	}
-	else if ( typeof value === "number" ) {
-		value = formatNumber( value, format, culture );
-	}
-	return value;
-};
-
-Globalize.localize = function( key, cultureSelector ) {
-	return this.findClosestCulture( cultureSelector ).messages[ key ] ||
-		this.cultures[ "default" ].messages[ key ];
-};
-
-Globalize.parseDate = function( value, formats, culture ) {
-	culture = this.findClosestCulture( culture );
-
-	var date, prop, patterns;
-	if ( formats ) {
-		if ( typeof formats === "string" ) {
-			formats = [ formats ];
-		}
-		if ( formats.length ) {
-			for ( var i = 0, l = formats.length; i < l; i++ ) {
-				var format = formats[ i ];
-				if ( format ) {
-					date = parseExact( value, format, culture );
-					if ( date ) {
-						break;
-					}
-				}
-			}
-		}
-	} else {
-		patterns = culture.calendar.patterns;
-		for ( prop in patterns ) {
-			date = parseExact( value, patterns[prop], culture );
-			if ( date ) {
-				break;
-			}
-		}
-	}
-
-	return date || null;
-};
-
-Globalize.parseInt = function( value, radix, cultureSelector ) {
-	return truncate( Globalize.parseFloat(value, radix, cultureSelector) );
-};
-
-Globalize.parseFloat = function( value, radix, cultureSelector ) {
-	// radix argument is optional
-	if ( typeof radix !== "number" ) {
-		cultureSelector = radix;
-		radix = 10;
-	}
-
-	var culture = this.findClosestCulture( cultureSelector );
-	var ret = NaN,
-		nf = culture.numberFormat;
-
-	if ( value.indexOf(culture.numberFormat.currency.symbol) > -1 ) {
-		// remove currency symbol
-		value = value.replace( culture.numberFormat.currency.symbol, "" );
-		// replace decimal seperator
-		value = value.replace( culture.numberFormat.currency["."], culture.numberFormat["."] );
-	}
-
-	//Remove percentage character from number string before parsing
-	if ( value.indexOf(culture.numberFormat.percent.symbol) > -1){
-		value = value.replace( culture.numberFormat.percent.symbol, "" );
-	}
-
-	// remove spaces: leading, trailing and between - and number. Used for negative currency pt-BR
-	value = value.replace( / /g, "" );
-
-	// allow infinity or hexidecimal
-	if ( regexInfinity.test(value) ) {
-		ret = parseFloat( value );
-	}
-	else if ( !radix && regexHex.test(value) ) {
-		ret = parseInt( value, 16 );
-	}
-	else {
-
-		// determine sign and number
-		var signInfo = parseNegativePattern( value, nf, nf.pattern[0] ),
-			sign = signInfo[ 0 ],
-			num = signInfo[ 1 ];
-
-		// #44 - try parsing as "(n)"
-		if ( sign === "" && nf.pattern[0] !== "(n)" ) {
-			signInfo = parseNegativePattern( value, nf, "(n)" );
-			sign = signInfo[ 0 ];
-			num = signInfo[ 1 ];
-		}
-
-		// try parsing as "-n"
-		if ( sign === "" && nf.pattern[0] !== "-n" ) {
-			signInfo = parseNegativePattern( value, nf, "-n" );
-			sign = signInfo[ 0 ];
-			num = signInfo[ 1 ];
-		}
-
-		sign = sign || "+";
-
-		// determine exponent and number
-		var exponent,
-			intAndFraction,
-			exponentPos = num.indexOf( "e" );
-		if ( exponentPos < 0 ) exponentPos = num.indexOf( "E" );
-		if ( exponentPos < 0 ) {
-			intAndFraction = num;
-			exponent = null;
-		}
-		else {
-			intAndFraction = num.substr( 0, exponentPos );
-			exponent = num.substr( exponentPos + 1 );
-		}
-		// determine decimal position
-		var integer,
-			fraction,
-			decSep = nf[ "." ],
-			decimalPos = intAndFraction.indexOf( decSep );
-		if ( decimalPos < 0 ) {
-			integer = intAndFraction;
-			fraction = null;
-		}
-		else {
-			integer = intAndFraction.substr( 0, decimalPos );
-			fraction = intAndFraction.substr( decimalPos + decSep.length );
-		}
-		// handle groups (e.g. 1,000,000)
-		var groupSep = nf[ "," ];
-		integer = integer.split( groupSep ).join( "" );
-		var altGroupSep = groupSep.replace( /\u00A0/g, " " );
-		if ( groupSep !== altGroupSep ) {
-			integer = integer.split( altGroupSep ).join( "" );
-		}
-		// build a natively parsable number string
-		var p = sign + integer;
-		if ( fraction !== null ) {
-			p += "." + fraction;
-		}
-		if ( exponent !== null ) {
-			// exponent itself may have a number patternd
-			var expSignInfo = parseNegativePattern( exponent, nf, "-n" );
-			p += "e" + ( expSignInfo[0] || "+" ) + expSignInfo[ 1 ];
-		}
-		if ( regexParseFloat.test(p) ) {
-			ret = parseFloat( p );
-		}
-	}
-	return ret;
-};
-
-Globalize.culture = function( cultureSelector ) {
-	// setter
-	if ( typeof cultureSelector !== "undefined" ) {
-		this.cultureSelector = cultureSelector;
-	}
-	// getter
-	return this.findClosestCulture( cultureSelector ) || this.cultures[ "default" ];
-};
-
-}( this ));

http://git-wip-us.apache.org/repos/asf/ambari/blob/49f341b7/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/globalize/package.json
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/globalize/package.json b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/globalize/package.json
deleted file mode 100644
index 8e42087..0000000
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/globalize/package.json
+++ /dev/null
@@ -1,56 +0,0 @@
-{
-  "name": "globalize",
-  "version": "0.1.1",
-  "description": "New age globalization and localization. Formats and parses strings, dates and numbers in over 350 cultures.",
-  "keywords": [
-    "utility",
-    "globalization",
-    "internationalization",
-    "multilingualization",
-    "localization",
-    "g11n",
-    "i18n",
-    "m17n",
-    "L10n",
-    "localize",
-    "format",
-    "parse",
-    "translate",
-    "strings",
-    "numbers",
-    "dates",
-    "times",
-    "calendars",
-    "cultures",
-    "languages",
-    "locales"
-  ],
-  "homepage": "https://github.com/jquery/globalize",
-  "author": "The jQuery Project",
-  "contributors": [
-    "Dave Reed <dareed@microsoft.com> (http://weblogs.asp.net/infinitiesloop)",
-    "Richard D. Worth <rdworth@gmail.com> (http://rdworth.org)",
-    "Jörn Zaefferer <joern.zaefferer@gmail.com> (http://bassistance.de)",
-    "Legal-Box <legalbox@eric.brechemier.name> (http://www.legal-box.com)",
-    "Nikolaus Graf (http://www.nikgraf.com)",
-    "Tobie Langel <tobie.langel@gmail.com> (http://tobielangel.com)",
-    "Boris Moore <borismoore@gmail.com> (http://www.borismoore.com)"
-  ],
-  "main": "./lib/globalize.js",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/jquery/globalize.git"
-  },
-  "bugs": {
-    "web": "http://github.com/jquery/globalize/issues"
-  },
-  "devDependencies": {
-    "grunt": "0.3.17"
-  },
-  "licenses": [
-    {
-      "type": "MIT",
-      "url": "http://jquery.org/license"
-    }
-  ]
-}

http://git-wip-us.apache.org/repos/asf/ambari/blob/49f341b7/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/globalize/test/culture.js
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/globalize/test/culture.js b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/globalize/test/culture.js
deleted file mode 100644
index a135a5a..0000000
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/globalize/test/culture.js
+++ /dev/null
@@ -1,18 +0,0 @@
-module( "culture", lifecycle );
-
-test("culture setter", function() {
-	// Issue #45: Globalize.culture("es-AO") appears to work but does not set culture
-	// For this test to be valid, it must use a selector that is a close
-	// but not exact match, so de-DE does not work as it is an exact match
-	// de-de would work but is only different by case, so we'll use de-FOO
-	var closestReturn, closestSet;
-	
-	// Set current culture using a close (but not exact) culture selector
-	closestReturn = Globalize.culture("de-FOO");
-	
-	// Get current culture testing set by previous call to culture(sel) setter
-	closestSet = Globalize.culture();
-
-	equal( closestReturn.name, "de" );
-	equal( closestSet.name, "de" );
-});

http://git-wip-us.apache.org/repos/asf/ambari/blob/49f341b7/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/globalize/test/cultures.js
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/globalize/test/cultures.js b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/globalize/test/cultures.js
deleted file mode 100644
index 0822a1f..0000000
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/globalize/test/cultures.js
+++ /dev/null
@@ -1,15 +0,0 @@
-module( "cultures", lifecycle );
-
-test("Culture name property and key", function() {
-	var name,
-		culture;
-
-	for ( name in Globalize.cultures ) {
-		// default is an exception since it has the name default
-		// inside cultures but internally its name is 'en' (neutral English)
-		if ( name !== "default" ) {
-			culture = Globalize.cultures[ name ];
-			equal( culture.name, name, "Name property in culture matches name key in cultures" );
-		}
-	}
-});

http://git-wip-us.apache.org/repos/asf/ambari/blob/49f341b7/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/globalize/test/findClosestCulture.js
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/globalize/test/findClosestCulture.js b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/globalize/test/findClosestCulture.js
deleted file mode 100644
index 2f7768a..0000000
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/globalize/test/findClosestCulture.js
+++ /dev/null
@@ -1,62 +0,0 @@
-(function() {
-
-module("findClosestCulture", lifecycle );
-
-var en = originalCultures( "en" ),
-	de = originalCultures( "de" ),
-	deDE = originalCultures( "de-DE" );
-
-test("default should be en", function() {
-	// use QUnit.equiv to avoid page-long printing
-	ok( QUnit.equiv(Globalize.findClosestCulture(), en) );
-});
-
-test("match xx for xx request", function() {
-	ok( QUnit.equiv(Globalize.findClosestCulture("de"), de) );
-	ok( QUnit.equiv(Globalize.findClosestCulture(["de"]), de) );
-	ok( QUnit.equiv(Globalize.findClosestCulture("de;q=0.4"), de) );
-});
-
-test("match xx-XX for xx-XX request", function() {
-	ok( QUnit.equiv(Globalize.findClosestCulture("de-DE"), deDE) );
-	ok( QUnit.equiv(Globalize.findClosestCulture(["de-DE"]), deDE) );
-	ok( QUnit.equiv(Globalize.findClosestCulture("de-DE;q=0.4"), deDE) );
-});
-
-test("match xx for xx-XX request", function() {
-	ok( QUnit.equiv(Globalize.findClosestCulture("de-XX"), de) );
-	ok( QUnit.equiv(Globalize.findClosestCulture(["de-XX"]), de) );
-	ok( QUnit.equiv(Globalize.findClosestCulture("de-XX;q=0.4"), de) );
-});
-
-test("match null for unknown language", function() {
-	ok( QUnit.equiv(Globalize.findClosestCulture("xx-XX"), null) );
-	ok( QUnit.equiv(Globalize.findClosestCulture(["xx-XX"]), null) );
-	ok( QUnit.equiv(Globalize.findClosestCulture("xx-XX;q=0.4"), null) );
-});
-
-test("match xx-XX for xx request", function() {
-	Globalize.cultures = {
-		"de-DE": deDE
-	};
-
-	ok( QUnit.equiv(Globalize.findClosestCulture("de"), deDE) );
-	ok( QUnit.equiv(Globalize.findClosestCulture(["de"]), deDE) );
-	ok( QUnit.equiv(Globalize.findClosestCulture("de;q=0.4"), deDE) );
-});
-
-test("match xx if multiple are provided is provided", function() {
-	ok( QUnit.equiv(Globalize.findClosestCulture(["en", "de-DE"]), en) );
-	ok( QUnit.equiv(Globalize.findClosestCulture(["de-DE", "es-MX"]), deDE) );
-	ok( QUnit.equiv(Globalize.findClosestCulture("de-DE, ha"), deDE) );
-});
-
-test("if q is not defined it should be 1", function() {
-	ok( QUnit.equiv(Globalize.findClosestCulture("fr;q=0.4, es;q=0.5, de-DE"), deDE) );
-});
-
-test("match language defined by q", function() {
-	ok( QUnit.equiv(Globalize.findClosestCulture("fr;q=0.4, de-DE;q=0.5"), deDE) );
-});
-
-})();

http://git-wip-us.apache.org/repos/asf/ambari/blob/49f341b7/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/globalize/test/format.js
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/globalize/test/format.js b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/globalize/test/format.js
deleted file mode 100644
index 3e29991..0000000
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/globalize/test/format.js
+++ /dev/null
@@ -1,74 +0,0 @@
-module( "format", lifecycle );
-
-test("Number Formatting - n for number", function() {
-	equal( Globalize.format(123.45, "n"), "123.45" );
-	equal( Globalize.format(123.45, "n0"), "123" );
-	equal( Globalize.format(123.45, "n1"), "123.5" );
-});
-
-test("Number Formatting - d for decimal", function() {
-	equal( Globalize.format(123.45, "d"), "123" );
-	equal( Globalize.format(-123.9, "d"), "-123" );
-	equal( Globalize.format(12, "d3"), "012" );
-	equal( Globalize.format(-12, "d"), "-12" );
-	equal( Globalize.format(-12, "d4"), "-0012" );
-});
-
-test("Number Formatting - c for currency", function() {
-	equal( Globalize.format(123.45, "c"), "$123.45" );
-	equal( Globalize.format(123.45, "c0"), "$123" );
-	equal( Globalize.format(123.45, "c1"), "$123.5" );
-	equal( Globalize.format(-123.45, "c"), "($123.45)" );
-});
-
-test("Number Formatting - p for percentage", function() {
-	equal( Globalize.format(0.12345, "p"), "12.35 %" );
-	equal( Globalize.format(0.12345, "p0"), "12 %" );
-	equal( Globalize.format(0.12345, "p4"), "12.3450 %" );
-});
-
-test("NaN", function() {
-	equal( Globalize.format(NaN, "n"), "NaN" );
-	equal( Globalize.format(NaN, "n1"), "NaN" );
-	equal( Globalize.format(NaN, "d"), "NaN" );
-	equal( Globalize.format(NaN, "d1"), "NaN" );
-	equal( Globalize.format(NaN, "c"), "NaN" );
-	equal( Globalize.format(NaN, "c1"), "NaN" );
-	equal( Globalize.format(NaN, "p"), "NaN" );
-	equal( Globalize.format(NaN, "p1"), "NaN" );
-});
-
-test("expontential notation", function() {
-	equal( Globalize.format( 1e-0, "n9" ), "1.000000000" );
-	equal( Globalize.format( 1e-1, "n9" ), "0.100000000" );
-	equal( Globalize.format( 1e-2, "n9" ), "0.010000000" );
-	equal( Globalize.format( 1e-3, "n9" ), "0.001000000" );
-	equal( Globalize.format( 1e-4, "n9" ), "0.000100000" );
-	equal( Globalize.format( 1e-5, "n9" ), "0.000010000" );
-	equal( Globalize.format( 1e-6, "n9" ), "0.000001000" );
-	equal( Globalize.format( 1e-7, "n9" ), "0.000000100" );
-	equal( Globalize.format( 1e-8, "n9" ), "0.000000010" );
-	equal( Globalize.format( 1e-9, "n9" ), "0.000000001" );
-});
-
-test("Negative Infinity", function() {
-	equal( Globalize.format(-Infinity, "n"), "-Infinity" );
-	equal( Globalize.format(-Infinity, "n1"), "-Infinity" );
-	equal( Globalize.format(-Infinity, "d"), "-Infinity" );
-	equal( Globalize.format(-Infinity, "d1"), "-Infinity" );
-	equal( Globalize.format(-Infinity, "c"), "-Infinity" );
-	equal( Globalize.format(-Infinity, "c1"), "-Infinity" );
-	equal( Globalize.format(-Infinity, "p"), "-Infinity" );
-	equal( Globalize.format(-Infinity, "p1"), "-Infinity" );
-});
-
-test("Positive Infinity", function() {
-	equal( Globalize.format(Infinity, "n"), "Infinity" );
-	equal( Globalize.format(Infinity, "n1"), "Infinity" );
-	equal( Globalize.format(Infinity, "d"), "Infinity" );
-	equal( Globalize.format(Infinity, "d1"), "Infinity" );
-	equal( Globalize.format(Infinity, "c"), "Infinity" );
-	equal( Globalize.format(Infinity, "c1"), "Infinity" );
-	equal( Globalize.format(Infinity, "p"), "Infinity" );
-	equal( Globalize.format(Infinity, "p1"), "Infinity" );
-});

http://git-wip-us.apache.org/repos/asf/ambari/blob/49f341b7/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/globalize/test/index.html
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/globalize/test/index.html b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/globalize/test/index.html
deleted file mode 100644
index 9b7c79a..0000000
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/globalize/test/index.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
-		<meta charset="UTF-8" />
-		<title>Globalize Testsuite</title>
-		<link rel="stylesheet" href="qunit/qunit.css"/>
-		<script src="../lib/globalize.js"></script>
-		<script src="../lib/cultures/globalize.cultures.js"></script>
-		<script src="qunit/qunit.js"></script>
-		<script src="testsuite.js"></script>
-		<script src="culture.js"></script>
-		<script src="cultures.js"></script>
-		<script src="instance.js"></script>
-		<script src="findClosestCulture.js"></script>
-		<script src="format.js"></script>
-		<script src="localize.js"></script>
-		<script src="parse.js"></script>
-	</head>
-	<body>
-		<h1 id="qunit-header">Globalize Testsuite</h1>
-		<h2 id="qunit-banner"></h2>
-		<div id="qunit-testrunner-toolbar"></div>
-		<h2 id="qunit-userAgent"></h2>
-		<ol id="qunit-tests"></ol>
-	</body>
-</html>

http://git-wip-us.apache.org/repos/asf/ambari/blob/49f341b7/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/globalize/test/instance.js
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/globalize/test/instance.js b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/globalize/test/instance.js
deleted file mode 100644
index 0e91c80..0000000
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/globalize/test/instance.js
+++ /dev/null
@@ -1,13 +0,0 @@
-module("instance", lifecycle );
-
-test("constructor sets culture", function() {
-	var globalizeDe = Globalize("de");
-	equal( Globalize.parseFloat("5.3"), 5.3 );
-	equal( Globalize.parseFloat("5,3"), 53 );
-	equal( Globalize.parseFloat("5.3", "de"), 53 );
-	equal( Globalize.parseFloat("5,3", "de"), 5.3 );
-	equal( globalizeDe.parseFloat("5.3"), 53 );
-	equal( globalizeDe.parseFloat("5,3"), 5.3 );
-	equal( globalizeDe.parseFloat("5.3", "en"), 5.3 );
-	equal( globalizeDe.parseFloat("5,3", "en"), 53 );
-});

http://git-wip-us.apache.org/repos/asf/ambari/blob/49f341b7/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/globalize/test/parse.js
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/globalize/test/parse.js b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/globalize/test/parse.js
deleted file mode 100644
index ac25114..0000000
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/globalize/test/parse.js
+++ /dev/null
@@ -1,57 +0,0 @@
-module("parseFloat", lifecycle );
-
-test("basics, float", function() {
-	equal( Globalize.parseFloat("5.51"), 5.51 );
-	equal( Globalize.parseFloat("-5.51"), -5.51 );
-	equal( Globalize.parseFloat("5,51", 10, "de-DE"), 5.51 );
-});
-
-test("basics, int", function() {
-	equal( Globalize.parseInt("5.51"), 5 );
-	equal( Globalize.parseInt("-5.51"), -5 );
-	equal( Globalize.parseInt("5,51", 10, "de-DE"), 5 );
-	equal( Globalize.parseInt("5000000000"), 5000000000 );
-	equal( Globalize.parseInt("-5000000000"), -5000000000 );
-});
-
-test( "basic, percentage", function() {
-	equal( Globalize.parseInt( "12%" ), "12" );
-	equal( Globalize.parseInt( "12.34%" ), "12" );
-	equal( Globalize.parseInt( "-12.34%" ), "-12" );
-	equal( Globalize.parseFloat( "12%" ), "12" );
-	equal( Globalize.parseFloat( "12.34%" ), "12.34" );
-	equal( Globalize.parseFloat( "-12.34%" ), "-12.34" );
-});
-
-test("basics, currency", function() {
-	equal( Globalize.parseInt("$5.51"), 5 );
-	equal( Globalize.parseFloat("$5.51"), 5.51 );
-	equal( Globalize.parseInt("($5.51)"), -5 );
-	equal( Globalize.parseFloat("($5.51)"), -5.51 );
-
-	// #44 - The cultures "lo" and "lo-LA" are unique in that they
-	// use the format "(n)" in both currency and number formatting
-	equal( Globalize.parseInt("(5.51₭)", "lo"), -5 );
-	equal( Globalize.parseFloat("(5.51₭)", "lo"), -5.51 );
-	equal( Globalize.parseInt("5,51 €", 10, "de-DE"), 5 );
-	equal( Globalize.parseFloat("5,51 €", 10, "de-DE"), 5.51 );
-	equal( Globalize.parseFloat("5,51 €", "de-DE"), 5.51, "optional radix" );
-
-	// #44 - Test Currencies with a space between negative and number
-	equal( Globalize.parseInt("-R$ 5,51", "pt-BR"), -5 );
-	equal( Globalize.parseFloat("-R$ 5,51", "pt-BR"), -5.51 );
-
-});
-
-test("basics, date", function() {
-	equal( Globalize.parseDate('2011/17/11 13:23:12','yyyy/dd/MM HH:mm:ss','fr').valueOf(), (new Date(2011, 10, 17, 13, 23, 12)).valueOf() );
-	equal( Globalize.parseDate('2011-17-11 13:23:12','yyyy-dd-MM HH:mm:ss','fr').valueOf(), (new Date(2011, 10, 17, 13, 23, 12)).valueOf() );
-	equal( Globalize.parseDate('2011/17/11 13:23:12','yyyy/dd/MM HH:mm:ss','fr-CA').valueOf(), (new Date(2011, 10, 17, 13, 23, 12)).valueOf() );
-	equal( Globalize.parseDate('2011-17-11 13:23:12','yyyy-dd-MM HH:mm:ss','fr-CA').valueOf(), (new Date(2011, 10, 17, 13, 23, 12)).valueOf() );
-});
-
-test("invalid input", function() {
-	// #47 - Return NaN instead of 0 for invalid values
-	ok( isNaN(Globalize.parseInt("foo")) );
-	ok( isNaN(Globalize.parseFloat("foo")) );
-});

http://git-wip-us.apache.org/repos/asf/ambari/blob/49f341b7/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/globalize/test/qunit/qunit.css
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/globalize/test/qunit/qunit.css b/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/globalize/test/qunit/qunit.css
deleted file mode 100644
index c85f36a..0000000
--- a/ambari-logsearch/ambari-logsearch-portal/src/main/webapp/libs/bower/globalize/test/qunit/qunit.css
+++ /dev/null
@@ -1,226 +0,0 @@
-/**
- * QUnit - A JavaScript Unit Testing Framework
- *
- * http://docs.jquery.com/QUnit
- *
- * Copyright (c) 2011 John Resig, Jörn Zaefferer
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * or GPL (GPL-LICENSE.txt) licenses.
- */
-
-/** Font Family and Sizes */
-
-#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult {
-	font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif;
-}
-
-#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }
-#qunit-tests { font-size: smaller; }
-
-
-/** Resets */
-
-#qunit-tests, #qunit-tests ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult {
-	margin: 0;
-	padding: 0;
-}
-
-
-/** Header */
-
-#qunit-header {
-	padding: 0.5em 0 0.5em 1em;
-
-	color: #8699a4;
-	background-color: #0d3349;
-
-	font-size: 1.5em;
-	line-height: 1em;
-	font-weight: normal;
-
-	border-radius: 15px 15px 0 0;
-	-moz-border-radius: 15px 15px 0 0;
-	-webkit-border-top-right-radius: 15px;
-	-webkit-border-top-left-radius: 15px;
-}
-
-#qunit-header a {
-	text-decoration: none;
-	color: #c2ccd1;
-}
-
-#qunit-header a:hover,
-#qunit-header a:focus {
-	color: #fff;
-}
-
-#qunit-banner {
-	height: 5px;
-}
-
-#qunit-testrunner-toolbar {
-	padding: 0.5em 0 0.5em 2em;
-	color: #5E740B;
-	background-color: #eee;
-}
-
-#qunit-userAgent {
-	padding: 0.5em 0 0.5em 2.5em;
-	background-color: #2b81af;
-	color: #fff;
-	text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
-}
-
-
-/** Tests: Pass/Fail */
-
-#qunit-tests {
-	list-style-position: inside;
-}
-
-#qunit-tests li {
-	padding: 0.4em 0.5em 0.4em 2.5em;
-	border-bottom: 1px solid #fff;
-	list-style-position: inside;
-}
-
-#qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running  {
-	display: none;
-}
-
-#qunit-tests li strong {
-	cursor: pointer;
-}
-
-#qunit-tests li a {
-	padding: 0.5em;
-	color: #c2ccd1;
-	text-decoration: none;
-}
-#qunit-tests li a:hover,
-#qunit-tests li a:focus {
-	color: #000;
-}
-
-#qunit-tests ol {
-	margin-top: 0.5em;
-	padding: 0.5em;
-
-	background-color: #fff;
-
-	border-radius: 15px;
-	-moz-border-radius: 15px;
-	-webkit-border-radius: 15px;
-
-	box-shadow: inset 0px 2px 13px #999;
-	-moz-box-shadow: inset 0px 2px 13px #999;
-	-webkit-box-shadow: inset 0px 2px 13px #999;
-}
-
-#qunit-tests table {
-	border-collapse: collapse;
-	margin-top: .2em;
-}
-
-#qunit-tests th {
-	text-align: right;
-	vertical-align: top;
-	padding: 0 .5em 0 0;
-}
-
-#qunit-tests td {
-	vertical-align: top;
-}
-
-#qunit-tests pre {
-	margin: 0;
-	white-space: pre-wrap;
-	word-wrap: break-word;
-}
-
-#qunit-tests del {
-	background-color: #e0f2be;
-	color: #374e0c;
-	text-decoration: none;
-}
-
-#qunit-tests ins {
-	background-color: #ffcaca;
-	color: #500;
-	text-decoration: none;
-}
-
-/*** Test Counts */
-
-#qunit-tests b.counts                       { color: black; }
-#qunit-tests b.passed                       { color: #5E740B; }
-#qunit-tests b.failed                       { color: #710909; }
-
-#qunit-tests li li {
-	margin: 0.5em;
-	padding: 0.4em 0.5em 0.4em 0.5em;
-	background-color: #fff;
-	border-bottom: none;
-	list-style-position: inside;
-}
-
-/*** Passing Styles */
-
-#qunit-tests li li.pass {
-	color: #5E740B;
-	background-color: #fff;
-	border-left: 26px solid #C6E746;
-}
-
-#qunit-tests .pass                          { color: #528CE0; background-color: #D2E0E6; }
-#qunit-tests .pass .test-name               { color: #366097; }
-
-#qunit-tests .pass .test-actual,
-#qunit-tests .pass .test-expected           { color: #999999; }
-
-#qunit-banner.qunit-pass                    { background-color: #C6E746; }
-
-/*** Failing Styles */
-
-#qunit-tests li li.fail {
-	color: #710909;
-	background-color: #fff;
-	border-left: 26px solid #EE5757;
-	white-space: pre;
-}
-
-#qunit-tests > li:last-child {
-	border-radius: 0 0 15px 15px;
-	-moz-border-radius: 0 0 15px 15px;
-	-webkit-border-bottom-right-radius: 15px;
-	-webkit-border-bottom-left-radius: 15px;
-}
-
-#qunit-tests .fail                          { color: #000000; background-color: #EE5757; }
-#qunit-tests .fail .test-name,
-#qunit-tests .fail .module-name             { color: #000000; }
-
-#qunit-tests .fail .test-actual             { color: #EE5757; }
-#qunit-tests .fail .test-expected           { color: green;   }
-
-#qunit-banner.qunit-fail                    { background-color: #EE5757; }
-
-
-/** Result */
-
-#qunit-testresult {
-	padding: 0.5em 0.5em 0.5em 2.5em;
-
-	color: #2b81af;
-	background-color: #D2E0E6;
-
-	border-bottom: 1px solid white;
-}
-
-/** Fixture */
-
-#qunit-fixture {
-	position: absolute;
-	top: -10000px;
-	left: -10000px;
-}


Mime
View raw message