| @@ 8209-8894 (lines=686) @@ | ||
| 8206 | * |
|
| 8207 | */ |
|
| 8208 | ||
| 8209 | ;(function ($, window, document, undefined) { |
|
| 8210 | ||
| 8211 | "use strict"; |
|
| 8212 | ||
| 8213 | window = (typeof window != 'undefined' && window.Math == Math) |
|
| 8214 | ? window |
|
| 8215 | : (typeof self != 'undefined' && self.Math == Math) |
|
| 8216 | ? self |
|
| 8217 | : Function('return this')() |
|
| 8218 | ; |
|
| 8219 | ||
| 8220 | $.fn.embed = function(parameters) { |
|
| 8221 | ||
| 8222 | var |
|
| 8223 | $allModules = $(this), |
|
| 8224 | ||
| 8225 | moduleSelector = $allModules.selector || '', |
|
| 8226 | ||
| 8227 | time = new Date().getTime(), |
|
| 8228 | performance = [], |
|
| 8229 | ||
| 8230 | query = arguments[0], |
|
| 8231 | methodInvoked = (typeof query == 'string'), |
|
| 8232 | queryArguments = [].slice.call(arguments, 1), |
|
| 8233 | ||
| 8234 | returnedValue |
|
| 8235 | ; |
|
| 8236 | ||
| 8237 | $allModules |
|
| 8238 | .each(function() { |
|
| 8239 | var |
|
| 8240 | settings = ( $.isPlainObject(parameters) ) |
|
| 8241 | ? $.extend(true, {}, $.fn.embed.settings, parameters) |
|
| 8242 | : $.extend({}, $.fn.embed.settings), |
|
| 8243 | ||
| 8244 | selector = settings.selector, |
|
| 8245 | className = settings.className, |
|
| 8246 | sources = settings.sources, |
|
| 8247 | error = settings.error, |
|
| 8248 | metadata = settings.metadata, |
|
| 8249 | namespace = settings.namespace, |
|
| 8250 | templates = settings.templates, |
|
| 8251 | ||
| 8252 | eventNamespace = '.' + namespace, |
|
| 8253 | moduleNamespace = 'module-' + namespace, |
|
| 8254 | ||
| 8255 | $window = $(window), |
|
| 8256 | $module = $(this), |
|
| 8257 | $placeholder = $module.find(selector.placeholder), |
|
| 8258 | $icon = $module.find(selector.icon), |
|
| 8259 | $embed = $module.find(selector.embed), |
|
| 8260 | ||
| 8261 | element = this, |
|
| 8262 | instance = $module.data(moduleNamespace), |
|
| 8263 | module |
|
| 8264 | ; |
|
| 8265 | ||
| 8266 | module = { |
|
| 8267 | ||
| 8268 | initialize: function() { |
|
| 8269 | module.debug('Initializing embed'); |
|
| 8270 | module.determine.autoplay(); |
|
| 8271 | module.create(); |
|
| 8272 | module.bind.events(); |
|
| 8273 | module.instantiate(); |
|
| 8274 | }, |
|
| 8275 | ||
| 8276 | instantiate: function() { |
|
| 8277 | module.verbose('Storing instance of module', module); |
|
| 8278 | instance = module; |
|
| 8279 | $module |
|
| 8280 | .data(moduleNamespace, module) |
|
| 8281 | ; |
|
| 8282 | }, |
|
| 8283 | ||
| 8284 | destroy: function() { |
|
| 8285 | module.verbose('Destroying previous instance of embed'); |
|
| 8286 | module.reset(); |
|
| 8287 | $module |
|
| 8288 | .removeData(moduleNamespace) |
|
| 8289 | .off(eventNamespace) |
|
| 8290 | ; |
|
| 8291 | }, |
|
| 8292 | ||
| 8293 | refresh: function() { |
|
| 8294 | module.verbose('Refreshing selector cache'); |
|
| 8295 | $placeholder = $module.find(selector.placeholder); |
|
| 8296 | $icon = $module.find(selector.icon); |
|
| 8297 | $embed = $module.find(selector.embed); |
|
| 8298 | }, |
|
| 8299 | ||
| 8300 | bind: { |
|
| 8301 | events: function() { |
|
| 8302 | if( module.has.placeholder() ) { |
|
| 8303 | module.debug('Adding placeholder events'); |
|
| 8304 | $module |
|
| 8305 | .on('click' + eventNamespace, selector.placeholder, module.createAndShow) |
|
| 8306 | .on('click' + eventNamespace, selector.icon, module.createAndShow) |
|
| 8307 | ; |
|
| 8308 | } |
|
| 8309 | } |
|
| 8310 | }, |
|
| 8311 | ||
| 8312 | create: function() { |
|
| 8313 | var |
|
| 8314 | placeholder = module.get.placeholder() |
|
| 8315 | ; |
|
| 8316 | if(placeholder) { |
|
| 8317 | module.createPlaceholder(); |
|
| 8318 | } |
|
| 8319 | else { |
|
| 8320 | module.createAndShow(); |
|
| 8321 | } |
|
| 8322 | }, |
|
| 8323 | ||
| 8324 | createPlaceholder: function(placeholder) { |
|
| 8325 | var |
|
| 8326 | icon = module.get.icon(), |
|
| 8327 | url = module.get.url(), |
|
| 8328 | embed = module.generate.embed(url) |
|
| 8329 | ; |
|
| 8330 | placeholder = placeholder || module.get.placeholder(); |
|
| 8331 | $module.html( templates.placeholder(placeholder, icon) ); |
|
| 8332 | module.debug('Creating placeholder for embed', placeholder, icon); |
|
| 8333 | }, |
|
| 8334 | ||
| 8335 | createEmbed: function(url) { |
|
| 8336 | module.refresh(); |
|
| 8337 | url = url || module.get.url(); |
|
| 8338 | $embed = $('<div/>') |
|
| 8339 | .addClass(className.embed) |
|
| 8340 | .html( module.generate.embed(url) ) |
|
| 8341 | .appendTo($module) |
|
| 8342 | ; |
|
| 8343 | settings.onCreate.call(element, url); |
|
| 8344 | module.debug('Creating embed object', $embed); |
|
| 8345 | }, |
|
| 8346 | ||
| 8347 | changeEmbed: function(url) { |
|
| 8348 | $embed |
|
| 8349 | .html( module.generate.embed(url) ) |
|
| 8350 | ; |
|
| 8351 | }, |
|
| 8352 | ||
| 8353 | createAndShow: function() { |
|
| 8354 | module.createEmbed(); |
|
| 8355 | module.show(); |
|
| 8356 | }, |
|
| 8357 | ||
| 8358 | // sets new embed |
|
| 8359 | change: function(source, id, url) { |
|
| 8360 | module.debug('Changing video to ', source, id, url); |
|
| 8361 | $module |
|
| 8362 | .data(metadata.source, source) |
|
| 8363 | .data(metadata.id, id) |
|
| 8364 | ; |
|
| 8365 | if(url) { |
|
| 8366 | $module.data(metadata.url, url); |
|
| 8367 | } |
|
| 8368 | else { |
|
| 8369 | $module.removeData(metadata.url); |
|
| 8370 | } |
|
| 8371 | if(module.has.embed()) { |
|
| 8372 | module.changeEmbed(); |
|
| 8373 | } |
|
| 8374 | else { |
|
| 8375 | module.create(); |
|
| 8376 | } |
|
| 8377 | }, |
|
| 8378 | ||
| 8379 | // clears embed |
|
| 8380 | reset: function() { |
|
| 8381 | module.debug('Clearing embed and showing placeholder'); |
|
| 8382 | module.remove.active(); |
|
| 8383 | module.remove.embed(); |
|
| 8384 | module.showPlaceholder(); |
|
| 8385 | settings.onReset.call(element); |
|
| 8386 | }, |
|
| 8387 | ||
| 8388 | // shows current embed |
|
| 8389 | show: function() { |
|
| 8390 | module.debug('Showing embed'); |
|
| 8391 | module.set.active(); |
|
| 8392 | settings.onDisplay.call(element); |
|
| 8393 | }, |
|
| 8394 | ||
| 8395 | hide: function() { |
|
| 8396 | module.debug('Hiding embed'); |
|
| 8397 | module.showPlaceholder(); |
|
| 8398 | }, |
|
| 8399 | ||
| 8400 | showPlaceholder: function() { |
|
| 8401 | module.debug('Showing placeholder image'); |
|
| 8402 | module.remove.active(); |
|
| 8403 | settings.onPlaceholderDisplay.call(element); |
|
| 8404 | }, |
|
| 8405 | ||
| 8406 | get: { |
|
| 8407 | id: function() { |
|
| 8408 | return settings.id || $module.data(metadata.id); |
|
| 8409 | }, |
|
| 8410 | placeholder: function() { |
|
| 8411 | return settings.placeholder || $module.data(metadata.placeholder); |
|
| 8412 | }, |
|
| 8413 | icon: function() { |
|
| 8414 | return (settings.icon) |
|
| 8415 | ? settings.icon |
|
| 8416 | : ($module.data(metadata.icon) !== undefined) |
|
| 8417 | ? $module.data(metadata.icon) |
|
| 8418 | : module.determine.icon() |
|
| 8419 | ; |
|
| 8420 | }, |
|
| 8421 | source: function(url) { |
|
| 8422 | return (settings.source) |
|
| 8423 | ? settings.source |
|
| 8424 | : ($module.data(metadata.source) !== undefined) |
|
| 8425 | ? $module.data(metadata.source) |
|
| 8426 | : module.determine.source() |
|
| 8427 | ; |
|
| 8428 | }, |
|
| 8429 | type: function() { |
|
| 8430 | var source = module.get.source(); |
|
| 8431 | return (sources[source] !== undefined) |
|
| 8432 | ? sources[source].type |
|
| 8433 | : false |
|
| 8434 | ; |
|
| 8435 | }, |
|
| 8436 | url: function() { |
|
| 8437 | return (settings.url) |
|
| 8438 | ? settings.url |
|
| 8439 | : ($module.data(metadata.url) !== undefined) |
|
| 8440 | ? $module.data(metadata.url) |
|
| 8441 | : module.determine.url() |
|
| 8442 | ; |
|
| 8443 | } |
|
| 8444 | }, |
|
| 8445 | ||
| 8446 | determine: { |
|
| 8447 | autoplay: function() { |
|
| 8448 | if(module.should.autoplay()) { |
|
| 8449 | settings.autoplay = true; |
|
| 8450 | } |
|
| 8451 | }, |
|
| 8452 | source: function(url) { |
|
| 8453 | var |
|
| 8454 | matchedSource = false |
|
| 8455 | ; |
|
| 8456 | url = url || module.get.url(); |
|
| 8457 | if(url) { |
|
| 8458 | $.each(sources, function(name, source) { |
|
| 8459 | if(url.search(source.domain) !== -1) { |
|
| 8460 | matchedSource = name; |
|
| 8461 | return false; |
|
| 8462 | } |
|
| 8463 | }); |
|
| 8464 | } |
|
| 8465 | return matchedSource; |
|
| 8466 | }, |
|
| 8467 | icon: function() { |
|
| 8468 | var |
|
| 8469 | source = module.get.source() |
|
| 8470 | ; |
|
| 8471 | return (sources[source] !== undefined) |
|
| 8472 | ? sources[source].icon |
|
| 8473 | : false |
|
| 8474 | ; |
|
| 8475 | }, |
|
| 8476 | url: function() { |
|
| 8477 | var |
|
| 8478 | id = settings.id || $module.data(metadata.id), |
|
| 8479 | source = settings.source || $module.data(metadata.source), |
|
| 8480 | url |
|
| 8481 | ; |
|
| 8482 | url = (sources[source] !== undefined) |
|
| 8483 | ? sources[source].url.replace('{id}', id) |
|
| 8484 | : false |
|
| 8485 | ; |
|
| 8486 | if(url) { |
|
| 8487 | $module.data(metadata.url, url); |
|
| 8488 | } |
|
| 8489 | return url; |
|
| 8490 | } |
|
| 8491 | }, |
|
| 8492 | ||
| 8493 | ||
| 8494 | set: { |
|
| 8495 | active: function() { |
|
| 8496 | $module.addClass(className.active); |
|
| 8497 | } |
|
| 8498 | }, |
|
| 8499 | ||
| 8500 | remove: { |
|
| 8501 | active: function() { |
|
| 8502 | $module.removeClass(className.active); |
|
| 8503 | }, |
|
| 8504 | embed: function() { |
|
| 8505 | $embed.empty(); |
|
| 8506 | } |
|
| 8507 | }, |
|
| 8508 | ||
| 8509 | encode: { |
|
| 8510 | parameters: function(parameters) { |
|
| 8511 | var |
|
| 8512 | urlString = [], |
|
| 8513 | index |
|
| 8514 | ; |
|
| 8515 | for (index in parameters) { |
|
| 8516 | urlString.push( encodeURIComponent(index) + '=' + encodeURIComponent( parameters[index] ) ); |
|
| 8517 | } |
|
| 8518 | return urlString.join('&'); |
|
| 8519 | } |
|
| 8520 | }, |
|
| 8521 | ||
| 8522 | generate: { |
|
| 8523 | embed: function(url) { |
|
| 8524 | module.debug('Generating embed html'); |
|
| 8525 | var |
|
| 8526 | source = module.get.source(), |
|
| 8527 | html, |
|
| 8528 | parameters |
|
| 8529 | ; |
|
| 8530 | url = module.get.url(url); |
|
| 8531 | if(url) { |
|
| 8532 | parameters = module.generate.parameters(source); |
|
| 8533 | html = templates.iframe(url, parameters); |
|
| 8534 | } |
|
| 8535 | else { |
|
| 8536 | module.error(error.noURL, $module); |
|
| 8537 | } |
|
| 8538 | return html; |
|
| 8539 | }, |
|
| 8540 | parameters: function(source, extraParameters) { |
|
| 8541 | var |
|
| 8542 | parameters = (sources[source] && sources[source].parameters !== undefined) |
|
| 8543 | ? sources[source].parameters(settings) |
|
| 8544 | : {} |
|
| 8545 | ; |
|
| 8546 | extraParameters = extraParameters || settings.parameters; |
|
| 8547 | if(extraParameters) { |
|
| 8548 | parameters = $.extend({}, parameters, extraParameters); |
|
| 8549 | } |
|
| 8550 | parameters = settings.onEmbed(parameters); |
|
| 8551 | return module.encode.parameters(parameters); |
|
| 8552 | } |
|
| 8553 | }, |
|
| 8554 | ||
| 8555 | has: { |
|
| 8556 | embed: function() { |
|
| 8557 | return ($embed.length > 0); |
|
| 8558 | }, |
|
| 8559 | placeholder: function() { |
|
| 8560 | return settings.placeholder || $module.data(metadata.placeholder); |
|
| 8561 | } |
|
| 8562 | }, |
|
| 8563 | ||
| 8564 | should: { |
|
| 8565 | autoplay: function() { |
|
| 8566 | return (settings.autoplay === 'auto') |
|
| 8567 | ? (settings.placeholder || $module.data(metadata.placeholder) !== undefined) |
|
| 8568 | : settings.autoplay |
|
| 8569 | ; |
|
| 8570 | } |
|
| 8571 | }, |
|
| 8572 | ||
| 8573 | is: { |
|
| 8574 | video: function() { |
|
| 8575 | return module.get.type() == 'video'; |
|
| 8576 | } |
|
| 8577 | }, |
|
| 8578 | ||
| 8579 | setting: function(name, value) { |
|
| 8580 | module.debug('Changing setting', name, value); |
|
| 8581 | if( $.isPlainObject(name) ) { |
|
| 8582 | $.extend(true, settings, name); |
|
| 8583 | } |
|
| 8584 | else if(value !== undefined) { |
|
| 8585 | if($.isPlainObject(settings[name])) { |
|
| 8586 | $.extend(true, settings[name], value); |
|
| 8587 | } |
|
| 8588 | else { |
|
| 8589 | settings[name] = value; |
|
| 8590 | } |
|
| 8591 | } |
|
| 8592 | else { |
|
| 8593 | return settings[name]; |
|
| 8594 | } |
|
| 8595 | }, |
|
| 8596 | internal: function(name, value) { |
|
| 8597 | if( $.isPlainObject(name) ) { |
|
| 8598 | $.extend(true, module, name); |
|
| 8599 | } |
|
| 8600 | else if(value !== undefined) { |
|
| 8601 | module[name] = value; |
|
| 8602 | } |
|
| 8603 | else { |
|
| 8604 | return module[name]; |
|
| 8605 | } |
|
| 8606 | }, |
|
| 8607 | debug: function() { |
|
| 8608 | if(!settings.silent && settings.debug) { |
|
| 8609 | if(settings.performance) { |
|
| 8610 | module.performance.log(arguments); |
|
| 8611 | } |
|
| 8612 | else { |
|
| 8613 | module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); |
|
| 8614 | module.debug.apply(console, arguments); |
|
| 8615 | } |
|
| 8616 | } |
|
| 8617 | }, |
|
| 8618 | verbose: function() { |
|
| 8619 | if(!settings.silent && settings.verbose && settings.debug) { |
|
| 8620 | if(settings.performance) { |
|
| 8621 | module.performance.log(arguments); |
|
| 8622 | } |
|
| 8623 | else { |
|
| 8624 | module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); |
|
| 8625 | module.verbose.apply(console, arguments); |
|
| 8626 | } |
|
| 8627 | } |
|
| 8628 | }, |
|
| 8629 | error: function() { |
|
| 8630 | if(!settings.silent) { |
|
| 8631 | module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); |
|
| 8632 | module.error.apply(console, arguments); |
|
| 8633 | } |
|
| 8634 | }, |
|
| 8635 | performance: { |
|
| 8636 | log: function(message) { |
|
| 8637 | var |
|
| 8638 | currentTime, |
|
| 8639 | executionTime, |
|
| 8640 | previousTime |
|
| 8641 | ; |
|
| 8642 | if(settings.performance) { |
|
| 8643 | currentTime = new Date().getTime(); |
|
| 8644 | previousTime = time || currentTime; |
|
| 8645 | executionTime = currentTime - previousTime; |
|
| 8646 | time = currentTime; |
|
| 8647 | performance.push({ |
|
| 8648 | 'Name' : message[0], |
|
| 8649 | 'Arguments' : [].slice.call(message, 1) || '', |
|
| 8650 | 'Element' : element, |
|
| 8651 | 'Execution Time' : executionTime |
|
| 8652 | }); |
|
| 8653 | } |
|
| 8654 | clearTimeout(module.performance.timer); |
|
| 8655 | module.performance.timer = setTimeout(module.performance.display, 500); |
|
| 8656 | }, |
|
| 8657 | display: function() { |
|
| 8658 | var |
|
| 8659 | title = settings.name + ':', |
|
| 8660 | totalTime = 0 |
|
| 8661 | ; |
|
| 8662 | time = false; |
|
| 8663 | clearTimeout(module.performance.timer); |
|
| 8664 | $.each(performance, function(index, data) { |
|
| 8665 | totalTime += data['Execution Time']; |
|
| 8666 | }); |
|
| 8667 | title += ' ' + totalTime + 'ms'; |
|
| 8668 | if(moduleSelector) { |
|
| 8669 | title += ' \'' + moduleSelector + '\''; |
|
| 8670 | } |
|
| 8671 | if($allModules.length > 1) { |
|
| 8672 | title += ' ' + '(' + $allModules.length + ')'; |
|
| 8673 | } |
|
| 8674 | if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { |
|
| 8675 | console.groupCollapsed(title); |
|
| 8676 | if(console.table) { |
|
| 8677 | console.table(performance); |
|
| 8678 | } |
|
| 8679 | else { |
|
| 8680 | $.each(performance, function(index, data) { |
|
| 8681 | console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); |
|
| 8682 | }); |
|
| 8683 | } |
|
| 8684 | console.groupEnd(); |
|
| 8685 | } |
|
| 8686 | performance = []; |
|
| 8687 | } |
|
| 8688 | }, |
|
| 8689 | invoke: function(query, passedArguments, context) { |
|
| 8690 | var |
|
| 8691 | object = instance, |
|
| 8692 | maxDepth, |
|
| 8693 | found, |
|
| 8694 | response |
|
| 8695 | ; |
|
| 8696 | passedArguments = passedArguments || queryArguments; |
|
| 8697 | context = element || context; |
|
| 8698 | if(typeof query == 'string' && object !== undefined) { |
|
| 8699 | query = query.split(/[\. ]/); |
|
| 8700 | maxDepth = query.length - 1; |
|
| 8701 | $.each(query, function(depth, value) { |
|
| 8702 | var camelCaseValue = (depth != maxDepth) |
|
| 8703 | ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) |
|
| 8704 | : query |
|
| 8705 | ; |
|
| 8706 | if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) { |
|
| 8707 | object = object[camelCaseValue]; |
|
| 8708 | } |
|
| 8709 | else if( object[camelCaseValue] !== undefined ) { |
|
| 8710 | found = object[camelCaseValue]; |
|
| 8711 | return false; |
|
| 8712 | } |
|
| 8713 | else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) { |
|
| 8714 | object = object[value]; |
|
| 8715 | } |
|
| 8716 | else if( object[value] !== undefined ) { |
|
| 8717 | found = object[value]; |
|
| 8718 | return false; |
|
| 8719 | } |
|
| 8720 | else { |
|
| 8721 | module.error(error.method, query); |
|
| 8722 | return false; |
|
| 8723 | } |
|
| 8724 | }); |
|
| 8725 | } |
|
| 8726 | if ( $.isFunction( found ) ) { |
|
| 8727 | response = found.apply(context, passedArguments); |
|
| 8728 | } |
|
| 8729 | else if(found !== undefined) { |
|
| 8730 | response = found; |
|
| 8731 | } |
|
| 8732 | if($.isArray(returnedValue)) { |
|
| 8733 | returnedValue.push(response); |
|
| 8734 | } |
|
| 8735 | else if(returnedValue !== undefined) { |
|
| 8736 | returnedValue = [returnedValue, response]; |
|
| 8737 | } |
|
| 8738 | else if(response !== undefined) { |
|
| 8739 | returnedValue = response; |
|
| 8740 | } |
|
| 8741 | return found; |
|
| 8742 | } |
|
| 8743 | }; |
|
| 8744 | ||
| 8745 | if(methodInvoked) { |
|
| 8746 | if(instance === undefined) { |
|
| 8747 | module.initialize(); |
|
| 8748 | } |
|
| 8749 | module.invoke(query); |
|
| 8750 | } |
|
| 8751 | else { |
|
| 8752 | if(instance !== undefined) { |
|
| 8753 | instance.invoke('destroy'); |
|
| 8754 | } |
|
| 8755 | module.initialize(); |
|
| 8756 | } |
|
| 8757 | }) |
|
| 8758 | ; |
|
| 8759 | return (returnedValue !== undefined) |
|
| 8760 | ? returnedValue |
|
| 8761 | : this |
|
| 8762 | ; |
|
| 8763 | }; |
|
| 8764 | ||
| 8765 | $.fn.embed.settings = { |
|
| 8766 | ||
| 8767 | name : 'Embed', |
|
| 8768 | namespace : 'embed', |
|
| 8769 | ||
| 8770 | silent : false, |
|
| 8771 | debug : false, |
|
| 8772 | verbose : false, |
|
| 8773 | performance : true, |
|
| 8774 | ||
| 8775 | icon : false, |
|
| 8776 | source : false, |
|
| 8777 | url : false, |
|
| 8778 | id : false, |
|
| 8779 | ||
| 8780 | // standard video settings |
|
| 8781 | autoplay : 'auto', |
|
| 8782 | color : '#444444', |
|
| 8783 | hd : true, |
|
| 8784 | brandedUI : false, |
|
| 8785 | ||
| 8786 | // additional parameters to include with the embed |
|
| 8787 | parameters: false, |
|
| 8788 | ||
| 8789 | onDisplay : function() {}, |
|
| 8790 | onPlaceholderDisplay : function() {}, |
|
| 8791 | onReset : function() {}, |
|
| 8792 | onCreate : function(url) {}, |
|
| 8793 | onEmbed : function(parameters) { |
|
| 8794 | return parameters; |
|
| 8795 | }, |
|
| 8796 | ||
| 8797 | metadata : { |
|
| 8798 | id : 'id', |
|
| 8799 | icon : 'icon', |
|
| 8800 | placeholder : 'placeholder', |
|
| 8801 | source : 'source', |
|
| 8802 | url : 'url' |
|
| 8803 | }, |
|
| 8804 | ||
| 8805 | error : { |
|
| 8806 | noURL : 'No URL specified', |
|
| 8807 | method : 'The method you called is not defined' |
|
| 8808 | }, |
|
| 8809 | ||
| 8810 | className : { |
|
| 8811 | active : 'active', |
|
| 8812 | embed : 'embed' |
|
| 8813 | }, |
|
| 8814 | ||
| 8815 | selector : { |
|
| 8816 | embed : '.embed', |
|
| 8817 | placeholder : '.placeholder', |
|
| 8818 | icon : '.icon' |
|
| 8819 | }, |
|
| 8820 | ||
| 8821 | sources: { |
|
| 8822 | youtube: { |
|
| 8823 | name : 'youtube', |
|
| 8824 | type : 'video', |
|
| 8825 | icon : 'video play', |
|
| 8826 | domain : 'youtube.com', |
|
| 8827 | url : '//www.youtube.com/embed/{id}', |
|
| 8828 | parameters: function(settings) { |
|
| 8829 | return { |
|
| 8830 | autohide : !settings.brandedUI, |
|
| 8831 | autoplay : settings.autoplay, |
|
| 8832 | color : settings.color || undefined, |
|
| 8833 | hq : settings.hd, |
|
| 8834 | jsapi : settings.api, |
|
| 8835 | modestbranding : !settings.brandedUI |
|
| 8836 | }; |
|
| 8837 | } |
|
| 8838 | }, |
|
| 8839 | vimeo: { |
|
| 8840 | name : 'vimeo', |
|
| 8841 | type : 'video', |
|
| 8842 | icon : 'video play', |
|
| 8843 | domain : 'vimeo.com', |
|
| 8844 | url : '//player.vimeo.com/video/{id}', |
|
| 8845 | parameters: function(settings) { |
|
| 8846 | return { |
|
| 8847 | api : settings.api, |
|
| 8848 | autoplay : settings.autoplay, |
|
| 8849 | byline : settings.brandedUI, |
|
| 8850 | color : settings.color || undefined, |
|
| 8851 | portrait : settings.brandedUI, |
|
| 8852 | title : settings.brandedUI |
|
| 8853 | }; |
|
| 8854 | } |
|
| 8855 | } |
|
| 8856 | }, |
|
| 8857 | ||
| 8858 | templates: { |
|
| 8859 | iframe : function(url, parameters) { |
|
| 8860 | var src = url; |
|
| 8861 | if (parameters) { |
|
| 8862 | src += '?' + parameters; |
|
| 8863 | } |
|
| 8864 | return '' |
|
| 8865 | + '<iframe src="' + src + '"' |
|
| 8866 | + ' width="100%" height="100%"' |
|
| 8867 | + ' frameborder="0" scrolling="no" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>' |
|
| 8868 | ; |
|
| 8869 | }, |
|
| 8870 | placeholder : function(image, icon) { |
|
| 8871 | var |
|
| 8872 | html = '' |
|
| 8873 | ; |
|
| 8874 | if(icon) { |
|
| 8875 | html += '<i class="' + icon + ' icon"></i>'; |
|
| 8876 | } |
|
| 8877 | if(image) { |
|
| 8878 | html += '<img class="placeholder" src="' + image + '">'; |
|
| 8879 | } |
|
| 8880 | return html; |
|
| 8881 | } |
|
| 8882 | }, |
|
| 8883 | ||
| 8884 | // NOT YET IMPLEMENTED |
|
| 8885 | api : false, |
|
| 8886 | onPause : function() {}, |
|
| 8887 | onPlay : function() {}, |
|
| 8888 | onStop : function() {} |
|
| 8889 | ||
| 8890 | }; |
|
| 8891 | ||
| 8892 | ||
| 8893 | ||
| 8894 | })( jQuery, window, document ); |
|
| 8895 | ||
| 8896 | /*! |
|
| 8897 | * # Semantic UI 2.2.11 - Modal |
|
| @@ 11-696 (lines=686) @@ | ||
| 8 | * |
|
| 9 | */ |
|
| 10 | ||
| 11 | ;(function ($, window, document, undefined) { |
|
| 12 | ||
| 13 | "use strict"; |
|
| 14 | ||
| 15 | window = (typeof window != 'undefined' && window.Math == Math) |
|
| 16 | ? window |
|
| 17 | : (typeof self != 'undefined' && self.Math == Math) |
|
| 18 | ? self |
|
| 19 | : Function('return this')() |
|
| 20 | ; |
|
| 21 | ||
| 22 | $.fn.embed = function(parameters) { |
|
| 23 | ||
| 24 | var |
|
| 25 | $allModules = $(this), |
|
| 26 | ||
| 27 | moduleSelector = $allModules.selector || '', |
|
| 28 | ||
| 29 | time = new Date().getTime(), |
|
| 30 | performance = [], |
|
| 31 | ||
| 32 | query = arguments[0], |
|
| 33 | methodInvoked = (typeof query == 'string'), |
|
| 34 | queryArguments = [].slice.call(arguments, 1), |
|
| 35 | ||
| 36 | returnedValue |
|
| 37 | ; |
|
| 38 | ||
| 39 | $allModules |
|
| 40 | .each(function() { |
|
| 41 | var |
|
| 42 | settings = ( $.isPlainObject(parameters) ) |
|
| 43 | ? $.extend(true, {}, $.fn.embed.settings, parameters) |
|
| 44 | : $.extend({}, $.fn.embed.settings), |
|
| 45 | ||
| 46 | selector = settings.selector, |
|
| 47 | className = settings.className, |
|
| 48 | sources = settings.sources, |
|
| 49 | error = settings.error, |
|
| 50 | metadata = settings.metadata, |
|
| 51 | namespace = settings.namespace, |
|
| 52 | templates = settings.templates, |
|
| 53 | ||
| 54 | eventNamespace = '.' + namespace, |
|
| 55 | moduleNamespace = 'module-' + namespace, |
|
| 56 | ||
| 57 | $window = $(window), |
|
| 58 | $module = $(this), |
|
| 59 | $placeholder = $module.find(selector.placeholder), |
|
| 60 | $icon = $module.find(selector.icon), |
|
| 61 | $embed = $module.find(selector.embed), |
|
| 62 | ||
| 63 | element = this, |
|
| 64 | instance = $module.data(moduleNamespace), |
|
| 65 | module |
|
| 66 | ; |
|
| 67 | ||
| 68 | module = { |
|
| 69 | ||
| 70 | initialize: function() { |
|
| 71 | module.debug('Initializing embed'); |
|
| 72 | module.determine.autoplay(); |
|
| 73 | module.create(); |
|
| 74 | module.bind.events(); |
|
| 75 | module.instantiate(); |
|
| 76 | }, |
|
| 77 | ||
| 78 | instantiate: function() { |
|
| 79 | module.verbose('Storing instance of module', module); |
|
| 80 | instance = module; |
|
| 81 | $module |
|
| 82 | .data(moduleNamespace, module) |
|
| 83 | ; |
|
| 84 | }, |
|
| 85 | ||
| 86 | destroy: function() { |
|
| 87 | module.verbose('Destroying previous instance of embed'); |
|
| 88 | module.reset(); |
|
| 89 | $module |
|
| 90 | .removeData(moduleNamespace) |
|
| 91 | .off(eventNamespace) |
|
| 92 | ; |
|
| 93 | }, |
|
| 94 | ||
| 95 | refresh: function() { |
|
| 96 | module.verbose('Refreshing selector cache'); |
|
| 97 | $placeholder = $module.find(selector.placeholder); |
|
| 98 | $icon = $module.find(selector.icon); |
|
| 99 | $embed = $module.find(selector.embed); |
|
| 100 | }, |
|
| 101 | ||
| 102 | bind: { |
|
| 103 | events: function() { |
|
| 104 | if( module.has.placeholder() ) { |
|
| 105 | module.debug('Adding placeholder events'); |
|
| 106 | $module |
|
| 107 | .on('click' + eventNamespace, selector.placeholder, module.createAndShow) |
|
| 108 | .on('click' + eventNamespace, selector.icon, module.createAndShow) |
|
| 109 | ; |
|
| 110 | } |
|
| 111 | } |
|
| 112 | }, |
|
| 113 | ||
| 114 | create: function() { |
|
| 115 | var |
|
| 116 | placeholder = module.get.placeholder() |
|
| 117 | ; |
|
| 118 | if(placeholder) { |
|
| 119 | module.createPlaceholder(); |
|
| 120 | } |
|
| 121 | else { |
|
| 122 | module.createAndShow(); |
|
| 123 | } |
|
| 124 | }, |
|
| 125 | ||
| 126 | createPlaceholder: function(placeholder) { |
|
| 127 | var |
|
| 128 | icon = module.get.icon(), |
|
| 129 | url = module.get.url(), |
|
| 130 | embed = module.generate.embed(url) |
|
| 131 | ; |
|
| 132 | placeholder = placeholder || module.get.placeholder(); |
|
| 133 | $module.html( templates.placeholder(placeholder, icon) ); |
|
| 134 | module.debug('Creating placeholder for embed', placeholder, icon); |
|
| 135 | }, |
|
| 136 | ||
| 137 | createEmbed: function(url) { |
|
| 138 | module.refresh(); |
|
| 139 | url = url || module.get.url(); |
|
| 140 | $embed = $('<div/>') |
|
| 141 | .addClass(className.embed) |
|
| 142 | .html( module.generate.embed(url) ) |
|
| 143 | .appendTo($module) |
|
| 144 | ; |
|
| 145 | settings.onCreate.call(element, url); |
|
| 146 | module.debug('Creating embed object', $embed); |
|
| 147 | }, |
|
| 148 | ||
| 149 | changeEmbed: function(url) { |
|
| 150 | $embed |
|
| 151 | .html( module.generate.embed(url) ) |
|
| 152 | ; |
|
| 153 | }, |
|
| 154 | ||
| 155 | createAndShow: function() { |
|
| 156 | module.createEmbed(); |
|
| 157 | module.show(); |
|
| 158 | }, |
|
| 159 | ||
| 160 | // sets new embed |
|
| 161 | change: function(source, id, url) { |
|
| 162 | module.debug('Changing video to ', source, id, url); |
|
| 163 | $module |
|
| 164 | .data(metadata.source, source) |
|
| 165 | .data(metadata.id, id) |
|
| 166 | ; |
|
| 167 | if(url) { |
|
| 168 | $module.data(metadata.url, url); |
|
| 169 | } |
|
| 170 | else { |
|
| 171 | $module.removeData(metadata.url); |
|
| 172 | } |
|
| 173 | if(module.has.embed()) { |
|
| 174 | module.changeEmbed(); |
|
| 175 | } |
|
| 176 | else { |
|
| 177 | module.create(); |
|
| 178 | } |
|
| 179 | }, |
|
| 180 | ||
| 181 | // clears embed |
|
| 182 | reset: function() { |
|
| 183 | module.debug('Clearing embed and showing placeholder'); |
|
| 184 | module.remove.active(); |
|
| 185 | module.remove.embed(); |
|
| 186 | module.showPlaceholder(); |
|
| 187 | settings.onReset.call(element); |
|
| 188 | }, |
|
| 189 | ||
| 190 | // shows current embed |
|
| 191 | show: function() { |
|
| 192 | module.debug('Showing embed'); |
|
| 193 | module.set.active(); |
|
| 194 | settings.onDisplay.call(element); |
|
| 195 | }, |
|
| 196 | ||
| 197 | hide: function() { |
|
| 198 | module.debug('Hiding embed'); |
|
| 199 | module.showPlaceholder(); |
|
| 200 | }, |
|
| 201 | ||
| 202 | showPlaceholder: function() { |
|
| 203 | module.debug('Showing placeholder image'); |
|
| 204 | module.remove.active(); |
|
| 205 | settings.onPlaceholderDisplay.call(element); |
|
| 206 | }, |
|
| 207 | ||
| 208 | get: { |
|
| 209 | id: function() { |
|
| 210 | return settings.id || $module.data(metadata.id); |
|
| 211 | }, |
|
| 212 | placeholder: function() { |
|
| 213 | return settings.placeholder || $module.data(metadata.placeholder); |
|
| 214 | }, |
|
| 215 | icon: function() { |
|
| 216 | return (settings.icon) |
|
| 217 | ? settings.icon |
|
| 218 | : ($module.data(metadata.icon) !== undefined) |
|
| 219 | ? $module.data(metadata.icon) |
|
| 220 | : module.determine.icon() |
|
| 221 | ; |
|
| 222 | }, |
|
| 223 | source: function(url) { |
|
| 224 | return (settings.source) |
|
| 225 | ? settings.source |
|
| 226 | : ($module.data(metadata.source) !== undefined) |
|
| 227 | ? $module.data(metadata.source) |
|
| 228 | : module.determine.source() |
|
| 229 | ; |
|
| 230 | }, |
|
| 231 | type: function() { |
|
| 232 | var source = module.get.source(); |
|
| 233 | return (sources[source] !== undefined) |
|
| 234 | ? sources[source].type |
|
| 235 | : false |
|
| 236 | ; |
|
| 237 | }, |
|
| 238 | url: function() { |
|
| 239 | return (settings.url) |
|
| 240 | ? settings.url |
|
| 241 | : ($module.data(metadata.url) !== undefined) |
|
| 242 | ? $module.data(metadata.url) |
|
| 243 | : module.determine.url() |
|
| 244 | ; |
|
| 245 | } |
|
| 246 | }, |
|
| 247 | ||
| 248 | determine: { |
|
| 249 | autoplay: function() { |
|
| 250 | if(module.should.autoplay()) { |
|
| 251 | settings.autoplay = true; |
|
| 252 | } |
|
| 253 | }, |
|
| 254 | source: function(url) { |
|
| 255 | var |
|
| 256 | matchedSource = false |
|
| 257 | ; |
|
| 258 | url = url || module.get.url(); |
|
| 259 | if(url) { |
|
| 260 | $.each(sources, function(name, source) { |
|
| 261 | if(url.search(source.domain) !== -1) { |
|
| 262 | matchedSource = name; |
|
| 263 | return false; |
|
| 264 | } |
|
| 265 | }); |
|
| 266 | } |
|
| 267 | return matchedSource; |
|
| 268 | }, |
|
| 269 | icon: function() { |
|
| 270 | var |
|
| 271 | source = module.get.source() |
|
| 272 | ; |
|
| 273 | return (sources[source] !== undefined) |
|
| 274 | ? sources[source].icon |
|
| 275 | : false |
|
| 276 | ; |
|
| 277 | }, |
|
| 278 | url: function() { |
|
| 279 | var |
|
| 280 | id = settings.id || $module.data(metadata.id), |
|
| 281 | source = settings.source || $module.data(metadata.source), |
|
| 282 | url |
|
| 283 | ; |
|
| 284 | url = (sources[source] !== undefined) |
|
| 285 | ? sources[source].url.replace('{id}', id) |
|
| 286 | : false |
|
| 287 | ; |
|
| 288 | if(url) { |
|
| 289 | $module.data(metadata.url, url); |
|
| 290 | } |
|
| 291 | return url; |
|
| 292 | } |
|
| 293 | }, |
|
| 294 | ||
| 295 | ||
| 296 | set: { |
|
| 297 | active: function() { |
|
| 298 | $module.addClass(className.active); |
|
| 299 | } |
|
| 300 | }, |
|
| 301 | ||
| 302 | remove: { |
|
| 303 | active: function() { |
|
| 304 | $module.removeClass(className.active); |
|
| 305 | }, |
|
| 306 | embed: function() { |
|
| 307 | $embed.empty(); |
|
| 308 | } |
|
| 309 | }, |
|
| 310 | ||
| 311 | encode: { |
|
| 312 | parameters: function(parameters) { |
|
| 313 | var |
|
| 314 | urlString = [], |
|
| 315 | index |
|
| 316 | ; |
|
| 317 | for (index in parameters) { |
|
| 318 | urlString.push( encodeURIComponent(index) + '=' + encodeURIComponent( parameters[index] ) ); |
|
| 319 | } |
|
| 320 | return urlString.join('&'); |
|
| 321 | } |
|
| 322 | }, |
|
| 323 | ||
| 324 | generate: { |
|
| 325 | embed: function(url) { |
|
| 326 | module.debug('Generating embed html'); |
|
| 327 | var |
|
| 328 | source = module.get.source(), |
|
| 329 | html, |
|
| 330 | parameters |
|
| 331 | ; |
|
| 332 | url = module.get.url(url); |
|
| 333 | if(url) { |
|
| 334 | parameters = module.generate.parameters(source); |
|
| 335 | html = templates.iframe(url, parameters); |
|
| 336 | } |
|
| 337 | else { |
|
| 338 | module.error(error.noURL, $module); |
|
| 339 | } |
|
| 340 | return html; |
|
| 341 | }, |
|
| 342 | parameters: function(source, extraParameters) { |
|
| 343 | var |
|
| 344 | parameters = (sources[source] && sources[source].parameters !== undefined) |
|
| 345 | ? sources[source].parameters(settings) |
|
| 346 | : {} |
|
| 347 | ; |
|
| 348 | extraParameters = extraParameters || settings.parameters; |
|
| 349 | if(extraParameters) { |
|
| 350 | parameters = $.extend({}, parameters, extraParameters); |
|
| 351 | } |
|
| 352 | parameters = settings.onEmbed(parameters); |
|
| 353 | return module.encode.parameters(parameters); |
|
| 354 | } |
|
| 355 | }, |
|
| 356 | ||
| 357 | has: { |
|
| 358 | embed: function() { |
|
| 359 | return ($embed.length > 0); |
|
| 360 | }, |
|
| 361 | placeholder: function() { |
|
| 362 | return settings.placeholder || $module.data(metadata.placeholder); |
|
| 363 | } |
|
| 364 | }, |
|
| 365 | ||
| 366 | should: { |
|
| 367 | autoplay: function() { |
|
| 368 | return (settings.autoplay === 'auto') |
|
| 369 | ? (settings.placeholder || $module.data(metadata.placeholder) !== undefined) |
|
| 370 | : settings.autoplay |
|
| 371 | ; |
|
| 372 | } |
|
| 373 | }, |
|
| 374 | ||
| 375 | is: { |
|
| 376 | video: function() { |
|
| 377 | return module.get.type() == 'video'; |
|
| 378 | } |
|
| 379 | }, |
|
| 380 | ||
| 381 | setting: function(name, value) { |
|
| 382 | module.debug('Changing setting', name, value); |
|
| 383 | if( $.isPlainObject(name) ) { |
|
| 384 | $.extend(true, settings, name); |
|
| 385 | } |
|
| 386 | else if(value !== undefined) { |
|
| 387 | if($.isPlainObject(settings[name])) { |
|
| 388 | $.extend(true, settings[name], value); |
|
| 389 | } |
|
| 390 | else { |
|
| 391 | settings[name] = value; |
|
| 392 | } |
|
| 393 | } |
|
| 394 | else { |
|
| 395 | return settings[name]; |
|
| 396 | } |
|
| 397 | }, |
|
| 398 | internal: function(name, value) { |
|
| 399 | if( $.isPlainObject(name) ) { |
|
| 400 | $.extend(true, module, name); |
|
| 401 | } |
|
| 402 | else if(value !== undefined) { |
|
| 403 | module[name] = value; |
|
| 404 | } |
|
| 405 | else { |
|
| 406 | return module[name]; |
|
| 407 | } |
|
| 408 | }, |
|
| 409 | debug: function() { |
|
| 410 | if(!settings.silent && settings.debug) { |
|
| 411 | if(settings.performance) { |
|
| 412 | module.performance.log(arguments); |
|
| 413 | } |
|
| 414 | else { |
|
| 415 | module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); |
|
| 416 | module.debug.apply(console, arguments); |
|
| 417 | } |
|
| 418 | } |
|
| 419 | }, |
|
| 420 | verbose: function() { |
|
| 421 | if(!settings.silent && settings.verbose && settings.debug) { |
|
| 422 | if(settings.performance) { |
|
| 423 | module.performance.log(arguments); |
|
| 424 | } |
|
| 425 | else { |
|
| 426 | module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); |
|
| 427 | module.verbose.apply(console, arguments); |
|
| 428 | } |
|
| 429 | } |
|
| 430 | }, |
|
| 431 | error: function() { |
|
| 432 | if(!settings.silent) { |
|
| 433 | module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); |
|
| 434 | module.error.apply(console, arguments); |
|
| 435 | } |
|
| 436 | }, |
|
| 437 | performance: { |
|
| 438 | log: function(message) { |
|
| 439 | var |
|
| 440 | currentTime, |
|
| 441 | executionTime, |
|
| 442 | previousTime |
|
| 443 | ; |
|
| 444 | if(settings.performance) { |
|
| 445 | currentTime = new Date().getTime(); |
|
| 446 | previousTime = time || currentTime; |
|
| 447 | executionTime = currentTime - previousTime; |
|
| 448 | time = currentTime; |
|
| 449 | performance.push({ |
|
| 450 | 'Name' : message[0], |
|
| 451 | 'Arguments' : [].slice.call(message, 1) || '', |
|
| 452 | 'Element' : element, |
|
| 453 | 'Execution Time' : executionTime |
|
| 454 | }); |
|
| 455 | } |
|
| 456 | clearTimeout(module.performance.timer); |
|
| 457 | module.performance.timer = setTimeout(module.performance.display, 500); |
|
| 458 | }, |
|
| 459 | display: function() { |
|
| 460 | var |
|
| 461 | title = settings.name + ':', |
|
| 462 | totalTime = 0 |
|
| 463 | ; |
|
| 464 | time = false; |
|
| 465 | clearTimeout(module.performance.timer); |
|
| 466 | $.each(performance, function(index, data) { |
|
| 467 | totalTime += data['Execution Time']; |
|
| 468 | }); |
|
| 469 | title += ' ' + totalTime + 'ms'; |
|
| 470 | if(moduleSelector) { |
|
| 471 | title += ' \'' + moduleSelector + '\''; |
|
| 472 | } |
|
| 473 | if($allModules.length > 1) { |
|
| 474 | title += ' ' + '(' + $allModules.length + ')'; |
|
| 475 | } |
|
| 476 | if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { |
|
| 477 | console.groupCollapsed(title); |
|
| 478 | if(console.table) { |
|
| 479 | console.table(performance); |
|
| 480 | } |
|
| 481 | else { |
|
| 482 | $.each(performance, function(index, data) { |
|
| 483 | console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); |
|
| 484 | }); |
|
| 485 | } |
|
| 486 | console.groupEnd(); |
|
| 487 | } |
|
| 488 | performance = []; |
|
| 489 | } |
|
| 490 | }, |
|
| 491 | invoke: function(query, passedArguments, context) { |
|
| 492 | var |
|
| 493 | object = instance, |
|
| 494 | maxDepth, |
|
| 495 | found, |
|
| 496 | response |
|
| 497 | ; |
|
| 498 | passedArguments = passedArguments || queryArguments; |
|
| 499 | context = element || context; |
|
| 500 | if(typeof query == 'string' && object !== undefined) { |
|
| 501 | query = query.split(/[\. ]/); |
|
| 502 | maxDepth = query.length - 1; |
|
| 503 | $.each(query, function(depth, value) { |
|
| 504 | var camelCaseValue = (depth != maxDepth) |
|
| 505 | ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) |
|
| 506 | : query |
|
| 507 | ; |
|
| 508 | if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) { |
|
| 509 | object = object[camelCaseValue]; |
|
| 510 | } |
|
| 511 | else if( object[camelCaseValue] !== undefined ) { |
|
| 512 | found = object[camelCaseValue]; |
|
| 513 | return false; |
|
| 514 | } |
|
| 515 | else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) { |
|
| 516 | object = object[value]; |
|
| 517 | } |
|
| 518 | else if( object[value] !== undefined ) { |
|
| 519 | found = object[value]; |
|
| 520 | return false; |
|
| 521 | } |
|
| 522 | else { |
|
| 523 | module.error(error.method, query); |
|
| 524 | return false; |
|
| 525 | } |
|
| 526 | }); |
|
| 527 | } |
|
| 528 | if ( $.isFunction( found ) ) { |
|
| 529 | response = found.apply(context, passedArguments); |
|
| 530 | } |
|
| 531 | else if(found !== undefined) { |
|
| 532 | response = found; |
|
| 533 | } |
|
| 534 | if($.isArray(returnedValue)) { |
|
| 535 | returnedValue.push(response); |
|
| 536 | } |
|
| 537 | else if(returnedValue !== undefined) { |
|
| 538 | returnedValue = [returnedValue, response]; |
|
| 539 | } |
|
| 540 | else if(response !== undefined) { |
|
| 541 | returnedValue = response; |
|
| 542 | } |
|
| 543 | return found; |
|
| 544 | } |
|
| 545 | }; |
|
| 546 | ||
| 547 | if(methodInvoked) { |
|
| 548 | if(instance === undefined) { |
|
| 549 | module.initialize(); |
|
| 550 | } |
|
| 551 | module.invoke(query); |
|
| 552 | } |
|
| 553 | else { |
|
| 554 | if(instance !== undefined) { |
|
| 555 | instance.invoke('destroy'); |
|
| 556 | } |
|
| 557 | module.initialize(); |
|
| 558 | } |
|
| 559 | }) |
|
| 560 | ; |
|
| 561 | return (returnedValue !== undefined) |
|
| 562 | ? returnedValue |
|
| 563 | : this |
|
| 564 | ; |
|
| 565 | }; |
|
| 566 | ||
| 567 | $.fn.embed.settings = { |
|
| 568 | ||
| 569 | name : 'Embed', |
|
| 570 | namespace : 'embed', |
|
| 571 | ||
| 572 | silent : false, |
|
| 573 | debug : false, |
|
| 574 | verbose : false, |
|
| 575 | performance : true, |
|
| 576 | ||
| 577 | icon : false, |
|
| 578 | source : false, |
|
| 579 | url : false, |
|
| 580 | id : false, |
|
| 581 | ||
| 582 | // standard video settings |
|
| 583 | autoplay : 'auto', |
|
| 584 | color : '#444444', |
|
| 585 | hd : true, |
|
| 586 | brandedUI : false, |
|
| 587 | ||
| 588 | // additional parameters to include with the embed |
|
| 589 | parameters: false, |
|
| 590 | ||
| 591 | onDisplay : function() {}, |
|
| 592 | onPlaceholderDisplay : function() {}, |
|
| 593 | onReset : function() {}, |
|
| 594 | onCreate : function(url) {}, |
|
| 595 | onEmbed : function(parameters) { |
|
| 596 | return parameters; |
|
| 597 | }, |
|
| 598 | ||
| 599 | metadata : { |
|
| 600 | id : 'id', |
|
| 601 | icon : 'icon', |
|
| 602 | placeholder : 'placeholder', |
|
| 603 | source : 'source', |
|
| 604 | url : 'url' |
|
| 605 | }, |
|
| 606 | ||
| 607 | error : { |
|
| 608 | noURL : 'No URL specified', |
|
| 609 | method : 'The method you called is not defined' |
|
| 610 | }, |
|
| 611 | ||
| 612 | className : { |
|
| 613 | active : 'active', |
|
| 614 | embed : 'embed' |
|
| 615 | }, |
|
| 616 | ||
| 617 | selector : { |
|
| 618 | embed : '.embed', |
|
| 619 | placeholder : '.placeholder', |
|
| 620 | icon : '.icon' |
|
| 621 | }, |
|
| 622 | ||
| 623 | sources: { |
|
| 624 | youtube: { |
|
| 625 | name : 'youtube', |
|
| 626 | type : 'video', |
|
| 627 | icon : 'video play', |
|
| 628 | domain : 'youtube.com', |
|
| 629 | url : '//www.youtube.com/embed/{id}', |
|
| 630 | parameters: function(settings) { |
|
| 631 | return { |
|
| 632 | autohide : !settings.brandedUI, |
|
| 633 | autoplay : settings.autoplay, |
|
| 634 | color : settings.color || undefined, |
|
| 635 | hq : settings.hd, |
|
| 636 | jsapi : settings.api, |
|
| 637 | modestbranding : !settings.brandedUI |
|
| 638 | }; |
|
| 639 | } |
|
| 640 | }, |
|
| 641 | vimeo: { |
|
| 642 | name : 'vimeo', |
|
| 643 | type : 'video', |
|
| 644 | icon : 'video play', |
|
| 645 | domain : 'vimeo.com', |
|
| 646 | url : '//player.vimeo.com/video/{id}', |
|
| 647 | parameters: function(settings) { |
|
| 648 | return { |
|
| 649 | api : settings.api, |
|
| 650 | autoplay : settings.autoplay, |
|
| 651 | byline : settings.brandedUI, |
|
| 652 | color : settings.color || undefined, |
|
| 653 | portrait : settings.brandedUI, |
|
| 654 | title : settings.brandedUI |
|
| 655 | }; |
|
| 656 | } |
|
| 657 | } |
|
| 658 | }, |
|
| 659 | ||
| 660 | templates: { |
|
| 661 | iframe : function(url, parameters) { |
|
| 662 | var src = url; |
|
| 663 | if (parameters) { |
|
| 664 | src += '?' + parameters; |
|
| 665 | } |
|
| 666 | return '' |
|
| 667 | + '<iframe src="' + src + '"' |
|
| 668 | + ' width="100%" height="100%"' |
|
| 669 | + ' frameborder="0" scrolling="no" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>' |
|
| 670 | ; |
|
| 671 | }, |
|
| 672 | placeholder : function(image, icon) { |
|
| 673 | var |
|
| 674 | html = '' |
|
| 675 | ; |
|
| 676 | if(icon) { |
|
| 677 | html += '<i class="' + icon + ' icon"></i>'; |
|
| 678 | } |
|
| 679 | if(image) { |
|
| 680 | html += '<img class="placeholder" src="' + image + '">'; |
|
| 681 | } |
|
| 682 | return html; |
|
| 683 | } |
|
| 684 | }, |
|
| 685 | ||
| 686 | // NOT YET IMPLEMENTED |
|
| 687 | api : false, |
|
| 688 | onPause : function() {}, |
|
| 689 | onPlay : function() {}, |
|
| 690 | onStop : function() {} |
|
| 691 | ||
| 692 | }; |
|
| 693 | ||
| 694 | ||
| 695 | ||
| 696 | })( jQuery, window, document ); |
|
| 697 | ||