/* * guimap.utility.js * General Javascript utilities */ /* jslint */ /* global $, guimap */ guimap.util= ( function () { // ---------- MODULE SCOPE VARIABLES ---------- var makeError, setConfigMap, getVarType, number_format, googleMaps2JTS; // ---------- UTILITY METHODS ---------- // ---------- DOM METHODS ---------- // ---------- EVENT HANDLERS ---------- // ---------- PUBLIC METHODS ---------- makeError = function ( name_text, msg_text, data ) { var error = new Error(); error.name = name_text; error.message = msg_text; if (data) { error.data = data; } return error; } setConfigMap = function( arg_map ) { var input_map = arg_map.input_map, settable_map = arg_map.settable_map, config_map = arg_map.config_map, key_name, error; for (key_name in input_map) { if (input_map.hasOwnProperty(key_name)) { if (settable_map.hasOwnProperty(key_name)) { config_map[key_name] = input_map[key_name]; } else { error = makeError('Bad Input', 'Setting config key [' + key_name + '] is not supported' ); throw error; } } } } // Begin method /getVarType/ // Returns 'Object', 'Array', 'String', 'Number', 'Boolean', 'Undefined' getVarType = function ( data ) { if ( data === undefined ) { return 'Undefined'; } if ( data === null ) { return 'Null'; } return {}.toString.call( data ).slice( 8, -1 ); }; number_format = function (number, decimals, dec_point, thousands_sep) { var n = !isFinite(+number) ? 0 : +number, prec = !isFinite(+decimals) ? 0 : Math.abs(decimals), sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep, dec = (typeof dec_point === 'undefined') ? '.' : dec_point, s = '', toFixedFix = function (n, prec) { return n.toFixed(prec); }; //toFixedFix = function (n, prec) { // var k = Math.pow(10, prec); // return '' + Math.round(n * k) / k; //}; // Fix for IE parseFloat(0.55).toFixed(0) = 0; s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.'); if (s[0].length > 3) { s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep); } if ((s[1] || '').length < prec) { s[1] = s[1] || ''; s[1] += new Array(prec - s[1].length + 1).join('0'); } return s.join(dec); }; googleMaps2JTS = function (boundaries) { var coordinates = []; for (var i = 0; i < boundaries.getLength(); i++) { coordinates.push(new jsts.geom.Coordinate( boundaries.getAt(i).lat(), boundaries.getAt(i).lng())); } return coordinates; }; return { makeError: makeError, setConfigMap: setConfigMap, getVarType: getVarType, number_format: number_format, googleMaps2JTS: googleMaps2JTS }; } ());