File indexing completed on 2024-05-12 05:50:04

0001 /*
0002 Additional Javascript for ubiquity-slideshow, global to all variations.
0003 */
0004 
0005 /* FIXME: Replace this with a proper querystring deparam function (and update Ubiquity for new format) */
0006 var INSTANCE_OPTIONS = {
0007         'locale' : 'en'
0008 };
0009 (function() {
0010         var hash = window.location.hash.split('#')[1] || '';
0011         var parameters = hash.split(/\?|&/);
0012         $.each(parameters, function(i, parameter) {
0013                 var hash = parameter.split('=');
0014                 var key = hash[0];
0015                 if (hash[1] !== undefined) {
0016                         var value = decodeURIComponent(
0017                                 hash[1].replace(/\+/g, '%20')
0018                         );
0019                 } else {
0020                         var value = undefined;
0021                 }
0022                 
0023                 INSTANCE_OPTIONS[key] = value;
0024         });
0025 })();
0026 
0027 var Signals = new function() {
0028         var handlers = {};
0029         
0030         var register = function(signalName) {
0031                 if (! handlers[signalName]) {
0032                         handlers[signalName] = [];
0033                 }
0034         }
0035         
0036         this.fire = function(signalName, data) {
0037                 if (! handlers[signalName]) register(signalName);
0038                 
0039                 $.each(handlers[signalName], function(index, callback) {
0040                         callback(data);
0041                 });
0042         }
0043         
0044         this.watch = function(signalName, handler) {
0045                 if (! handlers[signalName]) register(signalName);
0046                 
0047                 var signalId = 0;
0048                 signalId = handlers[signalName].push(handler);
0049                 
0050                 return signalId;
0051         }
0052         
0053         this.unwatch = function(signalName, handlerID) {
0054                 if (! handlers[signalName]) register(signalName);
0055                 
0056                 handlers[signalName].splice(handlerID - 1, 1);
0057         }
0058 }
0059 
0060 var parse_locale_code = function(locale) {
0061         var data = {};
0062         
0063         var modifier = locale.split('@', 1);
0064         data['modifier'] = modifier[1];
0065         
0066         var codeset = modifier[0].split('.', 1);
0067         data['codeset'] = codeset[1];
0068         
0069         var territory = codeset[0].split('_', 1);
0070         data['territory'] = territory[1];
0071         
0072         data['language'] = territory[0];
0073         
0074         return data;
0075 }
0076